From d1aa0d38c5978b551a7769b7cbc549ce76116c1c Mon Sep 17 00:00:00 2001 From: "Dr. Stephen Henson" Date: Fri, 7 Apr 2006 23:11:49 +0000 Subject: [PATCH] If _init function is zero interpret as noop. --- crypto/evp/evp.h | 2 +- crypto/evp/pmeth_fn.c | 20 +++++++++++++++----- 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/crypto/evp/evp.h b/crypto/evp/evp.h index d863c737b5..06535510ca 100644 --- a/crypto/evp/evp.h +++ b/crypto/evp/evp.h @@ -927,7 +927,7 @@ int EVP_PKEY_sign(EVP_PKEY_CTX *ctx, unsigned char *tbs, int tbslen); int EVP_PKEY_verify_init(EVP_PKEY_CTX *ctx); int EVP_PKEY_verify(EVP_PKEY_CTX *ctx, - unsigned char *sig, int *siglen, + unsigned char *sig, int siglen, unsigned char *tbs, int tbslen); int EVP_PKEY_verify_recover_init(EVP_PKEY_CTX *ctx); int EVP_PKEY_verify_recover(EVP_PKEY_CTX *ctx, diff --git a/crypto/evp/pmeth_fn.c b/crypto/evp/pmeth_fn.c index 979588b3a4..2a7e4a73df 100644 --- a/crypto/evp/pmeth_fn.c +++ b/crypto/evp/pmeth_fn.c @@ -66,13 +66,15 @@ int EVP_PKEY_sign_init(EVP_PKEY_CTX *ctx) { int ret; - if (!ctx || !ctx->pmeth || !ctx->pmeth->sign_init) + if (!ctx || !ctx->pmeth || !ctx->pmeth->sign) { EVPerr(EVP_F_EVP_PKEY_SIGN_INIT, EVP_R_OPERATION_NOT_SUPPORTED_FOR_THIS_KEYTYPE); return -2; } ctx->operation = EVP_PKEY_OP_SIGN; + if (!ctx->pmeth->sign_init) + return 1; ret = ctx->pmeth->sign_init(ctx); if (ret <= 0) ctx->operation = EVP_PKEY_OP_UNDEFINED; @@ -100,13 +102,15 @@ int EVP_PKEY_sign(EVP_PKEY_CTX *ctx, int EVP_PKEY_verify_init(EVP_PKEY_CTX *ctx) { int ret; - if (!ctx || !ctx->pmeth || !ctx->pmeth->verify_init) + if (!ctx || !ctx->pmeth || !ctx->pmeth->verify) { EVPerr(EVP_F_EVP_PKEY_VERIFY_INIT, EVP_R_OPERATION_NOT_SUPPORTED_FOR_THIS_KEYTYPE); return -2; } ctx->operation = EVP_PKEY_OP_VERIFY; + if (!ctx->pmeth->verify_init) + return 1; ret = ctx->pmeth->verify_init(ctx); if (ret <= 0) ctx->operation = EVP_PKEY_OP_UNDEFINED; @@ -134,13 +138,15 @@ int EVP_PKEY_verify(EVP_PKEY_CTX *ctx, int EVP_PKEY_verify_recover_init(EVP_PKEY_CTX *ctx) { int ret; - if (!ctx || !ctx->pmeth || !ctx->pmeth->verify_recover_init) + if (!ctx || !ctx->pmeth || !ctx->pmeth->verify_recover) { EVPerr(EVP_F_EVP_PKEY_VERIFY_RECOVER_INIT, EVP_R_OPERATION_NOT_SUPPORTED_FOR_THIS_KEYTYPE); return -2; } ctx->operation = EVP_PKEY_OP_VERIFYRECOVER; + if (!ctx->pmeth->verify_recover_init) + return 1; ret = ctx->pmeth->verify_recover_init(ctx); if (ret <= 0) ctx->operation = EVP_PKEY_OP_UNDEFINED; @@ -168,13 +174,15 @@ int EVP_PKEY_verify_recover(EVP_PKEY_CTX *ctx, int EVP_PKEY_encrypt_init(EVP_PKEY_CTX *ctx) { int ret; - if (!ctx || !ctx->pmeth || !ctx->pmeth->encrypt_init) + if (!ctx || !ctx->pmeth || !ctx->pmeth->encrypt) { EVPerr(EVP_F_EVP_PKEY_ENCRYPT_INIT, EVP_R_OPERATION_NOT_SUPPORTED_FOR_THIS_KEYTYPE); return -2; } ctx->operation = EVP_PKEY_OP_ENCRYPT; + if (!ctx->pmeth->encrypt_init) + return 1; ret = ctx->pmeth->encrypt_init(ctx); if (ret <= 0) ctx->operation = EVP_PKEY_OP_UNDEFINED; @@ -202,13 +210,15 @@ int EVP_PKEY_encrypt(EVP_PKEY_CTX *ctx, int EVP_PKEY_decrypt_init(EVP_PKEY_CTX *ctx) { int ret; - if (!ctx || !ctx->pmeth || !ctx->pmeth->decrypt_init) + if (!ctx || !ctx->pmeth || !ctx->pmeth->decrypt) { EVPerr(EVP_F_EVP_PKEY_DECRYPT_INIT, EVP_R_OPERATION_NOT_SUPPORTED_FOR_THIS_KEYTYPE); return -2; } ctx->operation = EVP_PKEY_OP_DECRYPT; + if (!ctx->pmeth->decrypt_init) + return 1; ret = ctx->pmeth->decrypt_init(ctx); if (ret <= 0) ctx->operation = EVP_PKEY_OP_UNDEFINED; -- 2.34.1