summaryrefslogtreecommitdiff
path: root/src/lib/libcrypto/evp/p5_crpt.c
diff options
context:
space:
mode:
authorjsing <>2014-05-07 17:42:51 +0000
committerjsing <>2014-05-07 17:42:51 +0000
commitdd9b16d5489a1196ae0fcbe4315fe0122b042d7d (patch)
treeb341b2cdc0818410f55d0a4662a40677e4899326 /src/lib/libcrypto/evp/p5_crpt.c
parent1b7393e13080fa69e951cc4f482e3d5d85639c70 (diff)
downloadopenbsd-dd9b16d5489a1196ae0fcbe4315fe0122b042d7d.tar.gz
openbsd-dd9b16d5489a1196ae0fcbe4315fe0122b042d7d.tar.bz2
openbsd-dd9b16d5489a1196ae0fcbe4315fe0122b042d7d.zip
KNF.
Diffstat (limited to 'src/lib/libcrypto/evp/p5_crpt.c')
-rw-r--r--src/lib/libcrypto/evp/p5_crpt.c33
1 files changed, 19 insertions, 14 deletions
diff --git a/src/lib/libcrypto/evp/p5_crpt.c b/src/lib/libcrypto/evp/p5_crpt.c
index 294cc90d87..eff82e8c0b 100644
--- a/src/lib/libcrypto/evp/p5_crpt.c
+++ b/src/lib/libcrypto/evp/p5_crpt.c
@@ -10,7 +10,7 @@
10 * are met: 10 * are met:
11 * 11 *
12 * 1. Redistributions of source code must retain the above copyright 12 * 1. Redistributions of source code must retain the above copyright
13 * notice, this list of conditions and the following disclaimer. 13 * notice, this list of conditions and the following disclaimer.
14 * 14 *
15 * 2. Redistributions in binary form must reproduce the above copyright 15 * 2. Redistributions in binary form must reproduce the above copyright
16 * notice, this list of conditions and the following disclaimer in 16 * notice, this list of conditions and the following disclaimer in
@@ -65,13 +65,14 @@
65/* Doesn't do anything now: Builtin PBE algorithms in static table. 65/* Doesn't do anything now: Builtin PBE algorithms in static table.
66 */ 66 */
67 67
68void PKCS5_PBE_add(void) 68void
69PKCS5_PBE_add(void)
69{ 70{
70} 71}
71 72
72int PKCS5_PBE_keyivgen(EVP_CIPHER_CTX *cctx, const char *pass, int passlen, 73int
73 ASN1_TYPE *param, const EVP_CIPHER *cipher, const EVP_MD *md, 74PKCS5_PBE_keyivgen(EVP_CIPHER_CTX *cctx, const char *pass, int passlen,
74 int en_de) 75 ASN1_TYPE *param, const EVP_CIPHER *cipher, const EVP_MD *md, int en_de)
75{ 76{
76 EVP_MD_CTX ctx; 77 EVP_MD_CTX ctx;
77 unsigned char md_tmp[EVP_MAX_MD_SIZE]; 78 unsigned char md_tmp[EVP_MAX_MD_SIZE];
@@ -88,23 +89,27 @@ int PKCS5_PBE_keyivgen(EVP_CIPHER_CTX *cctx, const char *pass, int passlen,
88 /* Extract useful info from parameter */ 89 /* Extract useful info from parameter */
89 if (param == NULL || param->type != V_ASN1_SEQUENCE || 90 if (param == NULL || param->type != V_ASN1_SEQUENCE ||
90 param->value.sequence == NULL) { 91 param->value.sequence == NULL) {
91 EVPerr(EVP_F_PKCS5_PBE_KEYIVGEN,EVP_R_DECODE_ERROR); 92 EVPerr(EVP_F_PKCS5_PBE_KEYIVGEN, EVP_R_DECODE_ERROR);
92 return 0; 93 return 0;
93 } 94 }
94 95
95 pbuf = param->value.sequence->data; 96 pbuf = param->value.sequence->data;
96 if (!(pbe = d2i_PBEPARAM(NULL, &pbuf, param->value.sequence->length))) { 97 if (!(pbe = d2i_PBEPARAM(NULL, &pbuf, param->value.sequence->length))) {
97 EVPerr(EVP_F_PKCS5_PBE_KEYIVGEN,EVP_R_DECODE_ERROR); 98 EVPerr(EVP_F_PKCS5_PBE_KEYIVGEN, EVP_R_DECODE_ERROR);
98 return 0; 99 return 0;
99 } 100 }
100 101
101 if (!pbe->iter) iter = 1; 102 if (!pbe->iter)
102 else iter = ASN1_INTEGER_get (pbe->iter); 103 iter = 1;
104 else
105 iter = ASN1_INTEGER_get (pbe->iter);
103 salt = pbe->salt->data; 106 salt = pbe->salt->data;
104 saltlen = pbe->salt->length; 107 saltlen = pbe->salt->length;
105 108
106 if(!pass) passlen = 0; 109 if (!pass)
107 else if(passlen == -1) passlen = strlen(pass); 110 passlen = 0;
111 else if (passlen == -1)
112 passlen = strlen(pass);
108 113
109 if (!EVP_DigestInit_ex(&ctx, md, NULL)) 114 if (!EVP_DigestInit_ex(&ctx, md, NULL))
110 goto err; 115 goto err;
@@ -117,7 +122,7 @@ int PKCS5_PBE_keyivgen(EVP_CIPHER_CTX *cctx, const char *pass, int passlen,
117 goto err; 122 goto err;
118 mdsize = EVP_MD_size(md); 123 mdsize = EVP_MD_size(md);
119 if (mdsize < 0) 124 if (mdsize < 0)
120 return 0; 125 return 0;
121 for (i = 1; i < iter; i++) { 126 for (i = 1; i < iter; i++) {
122 if (!EVP_DigestInit_ex(&ctx, md, NULL)) 127 if (!EVP_DigestInit_ex(&ctx, md, NULL))
123 goto err; 128 goto err;
@@ -130,14 +135,14 @@ int PKCS5_PBE_keyivgen(EVP_CIPHER_CTX *cctx, const char *pass, int passlen,
130 memcpy(key, md_tmp, EVP_CIPHER_key_length(cipher)); 135 memcpy(key, md_tmp, EVP_CIPHER_key_length(cipher));
131 OPENSSL_assert(EVP_CIPHER_iv_length(cipher) <= 16); 136 OPENSSL_assert(EVP_CIPHER_iv_length(cipher) <= 16);
132 memcpy(iv, md_tmp + (16 - EVP_CIPHER_iv_length(cipher)), 137 memcpy(iv, md_tmp + (16 - EVP_CIPHER_iv_length(cipher)),
133 EVP_CIPHER_iv_length(cipher)); 138 EVP_CIPHER_iv_length(cipher));
134 if (!EVP_CipherInit_ex(cctx, cipher, NULL, key, iv, en_de)) 139 if (!EVP_CipherInit_ex(cctx, cipher, NULL, key, iv, en_de))
135 goto err; 140 goto err;
136 OPENSSL_cleanse(md_tmp, EVP_MAX_MD_SIZE); 141 OPENSSL_cleanse(md_tmp, EVP_MAX_MD_SIZE);
137 OPENSSL_cleanse(key, EVP_MAX_KEY_LENGTH); 142 OPENSSL_cleanse(key, EVP_MAX_KEY_LENGTH);
138 OPENSSL_cleanse(iv, EVP_MAX_IV_LENGTH); 143 OPENSSL_cleanse(iv, EVP_MAX_IV_LENGTH);
139 rv = 1; 144 rv = 1;
140 err: 145err:
141 EVP_MD_CTX_cleanup(&ctx); 146 EVP_MD_CTX_cleanup(&ctx);
142 return rv; 147 return rv;
143} 148}