OpenSSL 1.1.1-pre2
This commit is contained in:
+12
-34
@@ -78,10 +78,9 @@ int PKCS12_key_gen_uni(unsigned char *pass, int passlen, unsigned char *salt,
|
||||
unsigned char *out, const EVP_MD *md_type)
|
||||
{
|
||||
unsigned char *B = NULL, *D = NULL, *I = NULL, *p = NULL, *Ai = NULL;
|
||||
int Slen, Plen, Ilen, Ijlen;
|
||||
int Slen, Plen, Ilen;
|
||||
int i, j, u, v;
|
||||
int ret = 0;
|
||||
BIGNUM *Ij = NULL, *Bpl1 = NULL; /* These hold Ij and B + 1 */
|
||||
EVP_MD_CTX *ctx = NULL;
|
||||
#ifdef OPENSSL_DEBUG_KEYGEN
|
||||
unsigned char *tmpout = out;
|
||||
@@ -114,10 +113,7 @@ int PKCS12_key_gen_uni(unsigned char *pass, int passlen, unsigned char *salt,
|
||||
Plen = 0;
|
||||
Ilen = Slen + Plen;
|
||||
I = OPENSSL_malloc(Ilen);
|
||||
Ij = BN_new();
|
||||
Bpl1 = BN_new();
|
||||
if (D == NULL || Ai == NULL || B == NULL || I == NULL || Ij == NULL
|
||||
|| Bpl1 == NULL)
|
||||
if (D == NULL || Ai == NULL || B == NULL || I == NULL)
|
||||
goto err;
|
||||
for (i = 0; i < v; i++)
|
||||
D[i] = id;
|
||||
@@ -151,33 +147,17 @@ int PKCS12_key_gen_uni(unsigned char *pass, int passlen, unsigned char *salt,
|
||||
out += u;
|
||||
for (j = 0; j < v; j++)
|
||||
B[j] = Ai[j % u];
|
||||
/* Work out B + 1 first then can use B as tmp space */
|
||||
if (!BN_bin2bn(B, v, Bpl1))
|
||||
goto err;
|
||||
if (!BN_add_word(Bpl1, 1))
|
||||
goto err;
|
||||
for (j = 0; j < Ilen; j += v) {
|
||||
if (!BN_bin2bn(I + j, v, Ij))
|
||||
goto err;
|
||||
if (!BN_add(Ij, Ij, Bpl1))
|
||||
goto err;
|
||||
if (!BN_bn2bin(Ij, B))
|
||||
goto err;
|
||||
Ijlen = BN_num_bytes(Ij);
|
||||
/* If more than 2^(v*8) - 1 cut off MSB */
|
||||
if (Ijlen > v) {
|
||||
if (!BN_bn2bin(Ij, B))
|
||||
goto err;
|
||||
memcpy(I + j, B + 1, v);
|
||||
#ifndef PKCS12_BROKEN_KEYGEN
|
||||
/* If less than v bytes pad with zeroes */
|
||||
} else if (Ijlen < v) {
|
||||
memset(I + j, 0, v - Ijlen);
|
||||
if (!BN_bn2bin(Ij, I + j + v - Ijlen))
|
||||
goto err;
|
||||
#endif
|
||||
} else if (!BN_bn2bin(Ij, I + j))
|
||||
goto err;
|
||||
int k;
|
||||
unsigned char *Ij = I + j;
|
||||
uint16_t c = 1;
|
||||
|
||||
/* Work out Ij = Ij + B + 1 */
|
||||
for (k = v - 1; k >= 0; k--) {
|
||||
c += Ij[k] + B[k];
|
||||
Ij[k] = (unsigned char)c;
|
||||
c >>= 8;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -189,8 +169,6 @@ int PKCS12_key_gen_uni(unsigned char *pass, int passlen, unsigned char *salt,
|
||||
OPENSSL_free(B);
|
||||
OPENSSL_free(D);
|
||||
OPENSSL_free(I);
|
||||
BN_free(Ij);
|
||||
BN_free(Bpl1);
|
||||
EVP_MD_CTX_free(ctx);
|
||||
return ret;
|
||||
}
|
||||
|
||||
+79
-63
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* Generated by util/mkerr.pl DO NOT EDIT
|
||||
* Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
|
||||
* Copyright 1995-2017 The OpenSSL Project Authors. All Rights Reserved.
|
||||
*
|
||||
* Licensed under the OpenSSL license (the "License"). You may not use
|
||||
* this file except in compliance with the License. You can obtain a copy
|
||||
@@ -8,75 +8,92 @@
|
||||
* https://www.openssl.org/source/license.html
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include <openssl/err.h>
|
||||
#include <openssl/pkcs12.h>
|
||||
#include <openssl/pkcs12err.h>
|
||||
|
||||
/* BEGIN ERROR CODES */
|
||||
#ifndef OPENSSL_NO_ERR
|
||||
|
||||
# define ERR_FUNC(func) ERR_PACK(ERR_LIB_PKCS12,func,0)
|
||||
# define ERR_REASON(reason) ERR_PACK(ERR_LIB_PKCS12,0,reason)
|
||||
|
||||
static ERR_STRING_DATA PKCS12_str_functs[] = {
|
||||
{ERR_FUNC(PKCS12_F_PKCS12_CREATE), "PKCS12_create"},
|
||||
{ERR_FUNC(PKCS12_F_PKCS12_GEN_MAC), "PKCS12_gen_mac"},
|
||||
{ERR_FUNC(PKCS12_F_PKCS12_INIT), "PKCS12_init"},
|
||||
{ERR_FUNC(PKCS12_F_PKCS12_ITEM_DECRYPT_D2I), "PKCS12_item_decrypt_d2i"},
|
||||
{ERR_FUNC(PKCS12_F_PKCS12_ITEM_I2D_ENCRYPT), "PKCS12_item_i2d_encrypt"},
|
||||
{ERR_FUNC(PKCS12_F_PKCS12_ITEM_PACK_SAFEBAG), "PKCS12_item_pack_safebag"},
|
||||
{ERR_FUNC(PKCS12_F_PKCS12_KEY_GEN_ASC), "PKCS12_key_gen_asc"},
|
||||
{ERR_FUNC(PKCS12_F_PKCS12_KEY_GEN_UNI), "PKCS12_key_gen_uni"},
|
||||
{ERR_FUNC(PKCS12_F_PKCS12_KEY_GEN_UTF8), "PKCS12_key_gen_utf8"},
|
||||
{ERR_FUNC(PKCS12_F_PKCS12_NEWPASS), "PKCS12_newpass"},
|
||||
{ERR_FUNC(PKCS12_F_PKCS12_PACK_P7DATA), "PKCS12_pack_p7data"},
|
||||
{ERR_FUNC(PKCS12_F_PKCS12_PACK_P7ENCDATA), "PKCS12_pack_p7encdata"},
|
||||
{ERR_FUNC(PKCS12_F_PKCS12_PARSE), "PKCS12_parse"},
|
||||
{ERR_FUNC(PKCS12_F_PKCS12_PBE_CRYPT), "PKCS12_pbe_crypt"},
|
||||
{ERR_FUNC(PKCS12_F_PKCS12_PBE_KEYIVGEN), "PKCS12_PBE_keyivgen"},
|
||||
{ERR_FUNC(PKCS12_F_PKCS12_SAFEBAG_CREATE0_P8INF),
|
||||
static const ERR_STRING_DATA PKCS12_str_functs[] = {
|
||||
{ERR_PACK(ERR_LIB_PKCS12, PKCS12_F_PKCS12_CREATE, 0), "PKCS12_create"},
|
||||
{ERR_PACK(ERR_LIB_PKCS12, PKCS12_F_PKCS12_GEN_MAC, 0), "PKCS12_gen_mac"},
|
||||
{ERR_PACK(ERR_LIB_PKCS12, PKCS12_F_PKCS12_INIT, 0), "PKCS12_init"},
|
||||
{ERR_PACK(ERR_LIB_PKCS12, PKCS12_F_PKCS12_ITEM_DECRYPT_D2I, 0),
|
||||
"PKCS12_item_decrypt_d2i"},
|
||||
{ERR_PACK(ERR_LIB_PKCS12, PKCS12_F_PKCS12_ITEM_I2D_ENCRYPT, 0),
|
||||
"PKCS12_item_i2d_encrypt"},
|
||||
{ERR_PACK(ERR_LIB_PKCS12, PKCS12_F_PKCS12_ITEM_PACK_SAFEBAG, 0),
|
||||
"PKCS12_item_pack_safebag"},
|
||||
{ERR_PACK(ERR_LIB_PKCS12, PKCS12_F_PKCS12_KEY_GEN_ASC, 0),
|
||||
"PKCS12_key_gen_asc"},
|
||||
{ERR_PACK(ERR_LIB_PKCS12, PKCS12_F_PKCS12_KEY_GEN_UNI, 0),
|
||||
"PKCS12_key_gen_uni"},
|
||||
{ERR_PACK(ERR_LIB_PKCS12, PKCS12_F_PKCS12_KEY_GEN_UTF8, 0),
|
||||
"PKCS12_key_gen_utf8"},
|
||||
{ERR_PACK(ERR_LIB_PKCS12, PKCS12_F_PKCS12_NEWPASS, 0), "PKCS12_newpass"},
|
||||
{ERR_PACK(ERR_LIB_PKCS12, PKCS12_F_PKCS12_PACK_P7DATA, 0),
|
||||
"PKCS12_pack_p7data"},
|
||||
{ERR_PACK(ERR_LIB_PKCS12, PKCS12_F_PKCS12_PACK_P7ENCDATA, 0),
|
||||
"PKCS12_pack_p7encdata"},
|
||||
{ERR_PACK(ERR_LIB_PKCS12, PKCS12_F_PKCS12_PARSE, 0), "PKCS12_parse"},
|
||||
{ERR_PACK(ERR_LIB_PKCS12, PKCS12_F_PKCS12_PBE_CRYPT, 0),
|
||||
"PKCS12_pbe_crypt"},
|
||||
{ERR_PACK(ERR_LIB_PKCS12, PKCS12_F_PKCS12_PBE_KEYIVGEN, 0),
|
||||
"PKCS12_PBE_keyivgen"},
|
||||
{ERR_PACK(ERR_LIB_PKCS12, PKCS12_F_PKCS12_SAFEBAG_CREATE0_P8INF, 0),
|
||||
"PKCS12_SAFEBAG_create0_p8inf"},
|
||||
{ERR_FUNC(PKCS12_F_PKCS12_SAFEBAG_CREATE0_PKCS8),
|
||||
{ERR_PACK(ERR_LIB_PKCS12, PKCS12_F_PKCS12_SAFEBAG_CREATE0_PKCS8, 0),
|
||||
"PKCS12_SAFEBAG_create0_pkcs8"},
|
||||
{ERR_FUNC(PKCS12_F_PKCS12_SAFEBAG_CREATE_PKCS8_ENCRYPT),
|
||||
{ERR_PACK(ERR_LIB_PKCS12, PKCS12_F_PKCS12_SAFEBAG_CREATE_PKCS8_ENCRYPT, 0),
|
||||
"PKCS12_SAFEBAG_create_pkcs8_encrypt"},
|
||||
{ERR_FUNC(PKCS12_F_PKCS12_SETUP_MAC), "PKCS12_setup_mac"},
|
||||
{ERR_FUNC(PKCS12_F_PKCS12_SET_MAC), "PKCS12_set_mac"},
|
||||
{ERR_FUNC(PKCS12_F_PKCS12_UNPACK_AUTHSAFES), "PKCS12_unpack_authsafes"},
|
||||
{ERR_FUNC(PKCS12_F_PKCS12_UNPACK_P7DATA), "PKCS12_unpack_p7data"},
|
||||
{ERR_FUNC(PKCS12_F_PKCS12_VERIFY_MAC), "PKCS12_verify_mac"},
|
||||
{ERR_FUNC(PKCS12_F_PKCS8_ENCRYPT), "PKCS8_encrypt"},
|
||||
{ERR_FUNC(PKCS12_F_PKCS8_SET0_PBE), "PKCS8_set0_pbe"},
|
||||
{ERR_PACK(ERR_LIB_PKCS12, PKCS12_F_PKCS12_SETUP_MAC, 0),
|
||||
"PKCS12_setup_mac"},
|
||||
{ERR_PACK(ERR_LIB_PKCS12, PKCS12_F_PKCS12_SET_MAC, 0), "PKCS12_set_mac"},
|
||||
{ERR_PACK(ERR_LIB_PKCS12, PKCS12_F_PKCS12_UNPACK_AUTHSAFES, 0),
|
||||
"PKCS12_unpack_authsafes"},
|
||||
{ERR_PACK(ERR_LIB_PKCS12, PKCS12_F_PKCS12_UNPACK_P7DATA, 0),
|
||||
"PKCS12_unpack_p7data"},
|
||||
{ERR_PACK(ERR_LIB_PKCS12, PKCS12_F_PKCS12_VERIFY_MAC, 0),
|
||||
"PKCS12_verify_mac"},
|
||||
{ERR_PACK(ERR_LIB_PKCS12, PKCS12_F_PKCS8_ENCRYPT, 0), "PKCS8_encrypt"},
|
||||
{ERR_PACK(ERR_LIB_PKCS12, PKCS12_F_PKCS8_SET0_PBE, 0), "PKCS8_set0_pbe"},
|
||||
{0, NULL}
|
||||
};
|
||||
|
||||
static ERR_STRING_DATA PKCS12_str_reasons[] = {
|
||||
{ERR_REASON(PKCS12_R_CANT_PACK_STRUCTURE), "cant pack structure"},
|
||||
{ERR_REASON(PKCS12_R_CONTENT_TYPE_NOT_DATA), "content type not data"},
|
||||
{ERR_REASON(PKCS12_R_DECODE_ERROR), "decode error"},
|
||||
{ERR_REASON(PKCS12_R_ENCODE_ERROR), "encode error"},
|
||||
{ERR_REASON(PKCS12_R_ENCRYPT_ERROR), "encrypt error"},
|
||||
{ERR_REASON(PKCS12_R_ERROR_SETTING_ENCRYPTED_DATA_TYPE),
|
||||
"error setting encrypted data type"},
|
||||
{ERR_REASON(PKCS12_R_INVALID_NULL_ARGUMENT), "invalid null argument"},
|
||||
{ERR_REASON(PKCS12_R_INVALID_NULL_PKCS12_POINTER),
|
||||
"invalid null pkcs12 pointer"},
|
||||
{ERR_REASON(PKCS12_R_IV_GEN_ERROR), "iv gen error"},
|
||||
{ERR_REASON(PKCS12_R_KEY_GEN_ERROR), "key gen error"},
|
||||
{ERR_REASON(PKCS12_R_MAC_ABSENT), "mac absent"},
|
||||
{ERR_REASON(PKCS12_R_MAC_GENERATION_ERROR), "mac generation error"},
|
||||
{ERR_REASON(PKCS12_R_MAC_SETUP_ERROR), "mac setup error"},
|
||||
{ERR_REASON(PKCS12_R_MAC_STRING_SET_ERROR), "mac string set error"},
|
||||
{ERR_REASON(PKCS12_R_MAC_VERIFY_FAILURE), "mac verify failure"},
|
||||
{ERR_REASON(PKCS12_R_PARSE_ERROR), "parse error"},
|
||||
{ERR_REASON(PKCS12_R_PKCS12_ALGOR_CIPHERINIT_ERROR),
|
||||
"pkcs12 algor cipherinit error"},
|
||||
{ERR_REASON(PKCS12_R_PKCS12_CIPHERFINAL_ERROR),
|
||||
"pkcs12 cipherfinal error"},
|
||||
{ERR_REASON(PKCS12_R_PKCS12_PBE_CRYPT_ERROR), "pkcs12 pbe crypt error"},
|
||||
{ERR_REASON(PKCS12_R_UNKNOWN_DIGEST_ALGORITHM),
|
||||
"unknown digest algorithm"},
|
||||
{ERR_REASON(PKCS12_R_UNSUPPORTED_PKCS12_MODE), "unsupported pkcs12 mode"},
|
||||
static const ERR_STRING_DATA PKCS12_str_reasons[] = {
|
||||
{ERR_PACK(ERR_LIB_PKCS12, 0, PKCS12_R_CANT_PACK_STRUCTURE),
|
||||
"cant pack structure"},
|
||||
{ERR_PACK(ERR_LIB_PKCS12, 0, PKCS12_R_CONTENT_TYPE_NOT_DATA),
|
||||
"content type not data"},
|
||||
{ERR_PACK(ERR_LIB_PKCS12, 0, PKCS12_R_DECODE_ERROR), "decode error"},
|
||||
{ERR_PACK(ERR_LIB_PKCS12, 0, PKCS12_R_ENCODE_ERROR), "encode error"},
|
||||
{ERR_PACK(ERR_LIB_PKCS12, 0, PKCS12_R_ENCRYPT_ERROR), "encrypt error"},
|
||||
{ERR_PACK(ERR_LIB_PKCS12, 0, PKCS12_R_ERROR_SETTING_ENCRYPTED_DATA_TYPE),
|
||||
"error setting encrypted data type"},
|
||||
{ERR_PACK(ERR_LIB_PKCS12, 0, PKCS12_R_INVALID_NULL_ARGUMENT),
|
||||
"invalid null argument"},
|
||||
{ERR_PACK(ERR_LIB_PKCS12, 0, PKCS12_R_INVALID_NULL_PKCS12_POINTER),
|
||||
"invalid null pkcs12 pointer"},
|
||||
{ERR_PACK(ERR_LIB_PKCS12, 0, PKCS12_R_IV_GEN_ERROR), "iv gen error"},
|
||||
{ERR_PACK(ERR_LIB_PKCS12, 0, PKCS12_R_KEY_GEN_ERROR), "key gen error"},
|
||||
{ERR_PACK(ERR_LIB_PKCS12, 0, PKCS12_R_MAC_ABSENT), "mac absent"},
|
||||
{ERR_PACK(ERR_LIB_PKCS12, 0, PKCS12_R_MAC_GENERATION_ERROR),
|
||||
"mac generation error"},
|
||||
{ERR_PACK(ERR_LIB_PKCS12, 0, PKCS12_R_MAC_SETUP_ERROR), "mac setup error"},
|
||||
{ERR_PACK(ERR_LIB_PKCS12, 0, PKCS12_R_MAC_STRING_SET_ERROR),
|
||||
"mac string set error"},
|
||||
{ERR_PACK(ERR_LIB_PKCS12, 0, PKCS12_R_MAC_VERIFY_FAILURE),
|
||||
"mac verify failure"},
|
||||
{ERR_PACK(ERR_LIB_PKCS12, 0, PKCS12_R_PARSE_ERROR), "parse error"},
|
||||
{ERR_PACK(ERR_LIB_PKCS12, 0, PKCS12_R_PKCS12_ALGOR_CIPHERINIT_ERROR),
|
||||
"pkcs12 algor cipherinit error"},
|
||||
{ERR_PACK(ERR_LIB_PKCS12, 0, PKCS12_R_PKCS12_CIPHERFINAL_ERROR),
|
||||
"pkcs12 cipherfinal error"},
|
||||
{ERR_PACK(ERR_LIB_PKCS12, 0, PKCS12_R_PKCS12_PBE_CRYPT_ERROR),
|
||||
"pkcs12 pbe crypt error"},
|
||||
{ERR_PACK(ERR_LIB_PKCS12, 0, PKCS12_R_UNKNOWN_DIGEST_ALGORITHM),
|
||||
"unknown digest algorithm"},
|
||||
{ERR_PACK(ERR_LIB_PKCS12, 0, PKCS12_R_UNSUPPORTED_PKCS12_MODE),
|
||||
"unsupported pkcs12 mode"},
|
||||
{0, NULL}
|
||||
};
|
||||
|
||||
@@ -85,10 +102,9 @@ static ERR_STRING_DATA PKCS12_str_reasons[] = {
|
||||
int ERR_load_PKCS12_strings(void)
|
||||
{
|
||||
#ifndef OPENSSL_NO_ERR
|
||||
|
||||
if (ERR_func_error_string(PKCS12_str_functs[0].error) == NULL) {
|
||||
ERR_load_strings(0, PKCS12_str_functs);
|
||||
ERR_load_strings(0, PKCS12_str_reasons);
|
||||
ERR_load_strings_const(PKCS12_str_functs);
|
||||
ERR_load_strings_const(PKCS12_str_reasons);
|
||||
}
|
||||
#endif
|
||||
return 1;
|
||||
|
||||
Reference in New Issue
Block a user