If <operatio>_init function is zero interpret as noop.
authorDr. Stephen Henson <steve@openssl.org>
Fri, 7 Apr 2006 23:11:49 +0000 (23:11 +0000)
committerDr. Stephen Henson <steve@openssl.org>
Fri, 7 Apr 2006 23:11:49 +0000 (23:11 +0000)
crypto/evp/evp.h
crypto/evp/pmeth_fn.c

index d863c737b5bdca89102e8aa16760f1668fe3aaa7..06535510caf701bfa64aedd6f27bb00146bf3c9a 100644 (file)
@@ -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,
index 979588b3a449bdcd5fb740f603cbe00857fa6c81..2a7e4a73df3af0308c6f5f393578ac7a0f23e5ac 100644 (file)
 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;