diff --git a/tools/cert_create/src/cert.c b/tools/cert_create/src/cert.c index 1b84e36..3f0b4d3 100644 --- a/tools/cert_create/src/cert.c +++ b/tools/cert_create/src/cert.c @@ -90,7 +90,7 @@ X509_NAME *name; ASN1_INTEGER *sno; int i, num, rc = 0; - EVP_MD_CTX mdCtx; + EVP_MD_CTX *mdCtx; EVP_PKEY_CTX *pKeyCtx = NULL; /* Create the certificate structure */ @@ -111,10 +111,14 @@ issuer = x; } - EVP_MD_CTX_init(&mdCtx); + mdCtx = EVP_MD_CTX_create(); + if (mdCtx == NULL) { + ERR_print_errors_fp(stdout); + goto END; + } /* Sign the certificate with the issuer key */ - if (!EVP_DigestSignInit(&mdCtx, &pKeyCtx, EVP_sha256(), NULL, ikey)) { + if (!EVP_DigestSignInit(mdCtx, &pKeyCtx, EVP_sha256(), NULL, ikey)) { ERR_print_errors_fp(stdout); goto END; } @@ -184,7 +188,7 @@ } } - if (!X509_sign_ctx(x, &mdCtx)) { + if (!X509_sign_ctx(x, mdCtx)) { ERR_print_errors_fp(stdout); goto END; } @@ -194,7 +198,7 @@ cert->x = x; END: - EVP_MD_CTX_cleanup(&mdCtx); + EVP_MD_CTX_destroy(mdCtx); return rc; } diff --git a/tools/cert_create/src/ext.c b/tools/cert_create/src/ext.c index 8ae6640..055ddbf 100644 --- a/tools/cert_create/src/ext.c +++ b/tools/cert_create/src/ext.c @@ -166,7 +166,7 @@ int sz; /* OBJECT_IDENTIFIER with hash algorithm */ - algorithm = OBJ_nid2obj(md->type); + algorithm = OBJ_nid2obj(EVP_MD_type(md)); if (algorithm == NULL) { return NULL; } diff --git a/tools/cert_create/src/key.c b/tools/cert_create/src/key.c index c1bde5d..b7f21a2 100644 --- a/tools/cert_create/src/key.c +++ b/tools/cert_create/src/key.c @@ -43,13 +43,31 @@ static int key_create_rsa(key_t *key) { - RSA *rsa; + BIGNUM *e; + RSA *rsa = NULL; - rsa = RSA_generate_key(RSA_KEY_BITS, RSA_F4, NULL, NULL); + e = BN_new(); + if (e == NULL) { + printf("Cannot create RSA exponent\n"); + goto err; + } + + if (!BN_set_word(e, RSA_F4)) { + printf("Cannot assign RSA exponent\n"); + goto err; + } + + rsa = RSA_new(); if (rsa == NULL) { printf("Cannot create RSA key\n"); goto err; } + + if (!RSA_generate_key_ex(rsa, RSA_KEY_BITS, e, NULL)) { + printf("Cannot generate RSA key\n"); + goto err; + } + if (!EVP_PKEY_assign_RSA(key->key, rsa)) { printf("Cannot assign RSA key\n"); goto err; @@ -58,6 +76,7 @@ return 1; err: RSA_free(rsa); + BN_free(e); return 0; } diff --git a/tools/cert_create/src/main.c b/tools/cert_create/src/main.c index df59961..741242f 100644 --- a/tools/cert_create/src/main.c +++ b/tools/cert_create/src/main.c @@ -244,7 +244,7 @@ int main(int argc, char *argv[]) { STACK_OF(X509_EXTENSION) * sk; - X509_EXTENSION *cert_ext; + X509_EXTENSION *cert_ext = NULL; ext_t *ext; key_t *key; cert_t *cert;