Allow digests to supply S/MIME micalg values from a ctrl.
[openssl.git] / crypto / ec / ec_pmeth.c
index 7602008..31d44d9 100644 (file)
@@ -88,6 +88,23 @@ static int pkey_ec_init(EVP_PKEY_CTX *ctx)
        return 1;
        }
 
+static int pkey_ec_copy(EVP_PKEY_CTX *dst, EVP_PKEY_CTX *src)
+       {
+       EC_PKEY_CTX *dctx, *sctx;
+       if (!pkey_ec_init(dst))
+               return 0;
+               sctx = src->data;
+       dctx = dst->data;
+       if (sctx->gen_group)
+               {
+               dctx->gen_group = EC_GROUP_dup(sctx->gen_group);
+               if (!dctx->gen_group)
+                       return 0;
+               }
+       dctx->md = sctx->md;
+       return 1;
+       }
+
 static void pkey_ec_cleanup(EVP_PKEY_CTX *ctx)
        {
        EC_PKEY_CTX *dctx = ctx->data;
@@ -213,6 +230,7 @@ static int pkey_ec_ctrl(EVP_PKEY_CTX *ctx, int type, int p1, void *p2)
 
                case EVP_PKEY_CTRL_PEER_KEY:
                /* Default behaviour is OK */
+               case EVP_PKEY_CTRL_PKCS7_SIGN:
                return 1;
 
                default:
@@ -284,6 +302,7 @@ const EVP_PKEY_METHOD ec_pkey_meth =
        EVP_PKEY_EC,
        0,
        pkey_ec_init,
+       pkey_ec_copy,
        pkey_ec_cleanup,
 
        0,