]> git.ipfire.org Git - thirdparty/openssl.git/commitdiff
Allow OSSL_SIGNATURE_PARAM_NONCE_TYPE to be retrieved
authorIngo Franzki <ifranzki@linux.ibm.com>
Wed, 18 Jan 2023 10:24:16 +0000 (11:24 +0100)
committerTomas Mraz <tomas@openssl.org>
Mon, 23 Jan 2023 09:34:36 +0000 (10:34 +0100)
Context parameter OSSL_SIGNATURE_PARAM_NONCE_TYPE can now also be
retrieved for ECDSA and DSA.

Signed-off-by: Ingo Franzki <ifranzki@linux.ibm.com>
Reviewed-by: Paul Dale <pauli@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/20070)

doc/man7/EVP_SIGNATURE-DSA.pod
doc/man7/EVP_SIGNATURE-ECDSA.pod
providers/implementations/signature/dsa_sig.c
providers/implementations/signature/ecdsa_sig.c
test/evp_test.c

index 7eeb234f759b602d6d8669c92d5d232a874e3e21..397fd90019e60fc9efbb597bd6d63696ae4c26a5 100644 (file)
@@ -37,6 +37,8 @@ EVP_PKEY_CTX_get_params().
 
 =item "digest" (B<OSSL_SIGNATURE_PARAM_DIGEST>) <UTF8 string>
 
+=item "nonce-type" (B<OSSL_SIGNATURE_PARAM_NONCE_TYPE>) <unsigned integer>
+
 The gettable parameters are described in L<provider-signature(7)>.
 
 =back
index b1757f2630f7f15e0c0b5e36a9839300d01881c2..ea167f2784ba9e41f225cda2b1d37a612a181486 100644 (file)
@@ -36,6 +36,8 @@ EVP_PKEY_CTX_get_params().
 
 =item "digest" (B<OSSL_SIGNATURE_PARAM_DIGEST>) <UTF8 string>
 
+=item "nonce-type" (B<OSSL_SIGNATURE_PARAM_NONCE_TYPE>) <unsigned integer>
+
 The parameters are described in L<provider-signature(7)>.
 
 =back
index 6393dd4decb410311e6934388998a9519f2676e6..211faa8da998c7350fd2ef4f6a18484e312edc38 100644 (file)
@@ -461,12 +461,17 @@ static int dsa_get_ctx_params(void *vpdsactx, OSSL_PARAM *params)
     if (p != NULL && !OSSL_PARAM_set_utf8_string(p, pdsactx->mdname))
         return 0;
 
+    p = OSSL_PARAM_locate(params, OSSL_SIGNATURE_PARAM_NONCE_TYPE);
+    if (p != NULL && !OSSL_PARAM_set_uint(p, pdsactx->nonce_type))
+        return 0;
+
     return 1;
 }
 
 static const OSSL_PARAM known_gettable_ctx_params[] = {
     OSSL_PARAM_octet_string(OSSL_SIGNATURE_PARAM_ALGORITHM_ID, NULL, 0),
     OSSL_PARAM_utf8_string(OSSL_SIGNATURE_PARAM_DIGEST, NULL, 0),
+    OSSL_PARAM_uint(OSSL_SIGNATURE_PARAM_NONCE_TYPE, NULL),
     OSSL_PARAM_END
 };
 
index 9c4b6d3638e1494e0d4299a71ff50a91226b7bd9..e13be6fdd372d4d2b68f78bf20617ac45b7d2789 100644 (file)
@@ -467,6 +467,10 @@ static int ecdsa_get_ctx_params(void *vctx, OSSL_PARAM *params)
                                                     : EVP_MD_get0_name(ctx->md)))
         return 0;
 
+    p = OSSL_PARAM_locate(params, OSSL_SIGNATURE_PARAM_NONCE_TYPE);
+    if (p != NULL && !OSSL_PARAM_set_uint(p, ctx->nonce_type))
+        return 0;
+
     return 1;
 }
 
@@ -474,6 +478,7 @@ static const OSSL_PARAM known_gettable_ctx_params[] = {
     OSSL_PARAM_octet_string(OSSL_SIGNATURE_PARAM_ALGORITHM_ID, NULL, 0),
     OSSL_PARAM_size_t(OSSL_SIGNATURE_PARAM_DIGEST_SIZE, NULL),
     OSSL_PARAM_utf8_string(OSSL_SIGNATURE_PARAM_DIGEST, NULL, 0),
+    OSSL_PARAM_uint(OSSL_SIGNATURE_PARAM_NONCE_TYPE, NULL),
     OSSL_PARAM_END
 };
 
index 44bba48fd27b2bb0b31f9765326580ef849f3f0f..9ee0434e78ccde98e0ae353386b2b88a03bb813d 100644 (file)
@@ -3341,6 +3341,12 @@ static int digestsigver_test_parse(EVP_TEST *t,
             params[1] = OSSL_PARAM_construct_end();
             if (!EVP_PKEY_CTX_set_params(mdata->pctx, params))
                 t->err = "EVP_PKEY_CTX_set_params_ERROR";
+            else if (!EVP_PKEY_CTX_get_params(mdata->pctx, params))
+                t->err = "EVP_PKEY_CTX_get_params_ERROR";
+            else if (!OSSL_PARAM_modified(&params[0]))
+                t->err = "nonce_type_not_modified_ERROR";
+            else if (nonce_type != 1)
+                t->err = "nonce_type_value_ERROR";
         }
         return 1;
     }