diff options
author | slontis <shane.lontis@oracle.com> | 2023-03-23 11:07:03 +1000 |
---|---|---|
committer | Pauli <pauli@openssl.org> | 2023-04-14 13:11:24 +1000 |
commit | 8b7b9aac444625195486efd10273694830c41398 (patch) | |
tree | 1b92a8eb655852c28aeb2db41f67c2120539bf00 | |
parent | efbff4de3e259cee71a4e1bbd86b30ebd86bbdae (diff) |
Fix a HPKE API to put libctx, propq as last (optional parameters).
This keeps the interface consistent with other HPKE API's.
Reviewed-by: Tomas Mraz <tomas@openssl.org>
Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Paul Dale <pauli@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/20583)
-rw-r--r-- | crypto/hpke/hpke.c | 10 | ||||
-rw-r--r-- | doc/man3/OSSL_HPKE_CTX_new.pod | 6 | ||||
-rw-r--r-- | include/openssl/hpke.h | 6 | ||||
-rw-r--r-- | test/hpke_test.c | 58 |
4 files changed, 44 insertions, 36 deletions
diff --git a/crypto/hpke/hpke.c b/crypto/hpke/hpke.c index 12a12ad8fc..bf94d17ce6 100644 --- a/crypto/hpke/hpke.c +++ b/crypto/hpke/hpke.c @@ -1334,13 +1334,11 @@ int OSSL_HPKE_suite_check(OSSL_HPKE_SUITE suite) return hpke_suite_check(suite, NULL, NULL, NULL); } -int OSSL_HPKE_get_grease_value(OSSL_LIB_CTX *libctx, const char *propq, - const OSSL_HPKE_SUITE *suite_in, +int OSSL_HPKE_get_grease_value(const OSSL_HPKE_SUITE *suite_in, OSSL_HPKE_SUITE *suite, - unsigned char *enc, - size_t *enclen, - unsigned char *ct, - size_t ctlen) + unsigned char *enc, size_t *enclen, + unsigned char *ct, size_t ctlen, + OSSL_LIB_CTX *libctx, const char *propq) { OSSL_HPKE_SUITE chosen; size_t plen = 0; diff --git a/doc/man3/OSSL_HPKE_CTX_new.pod b/doc/man3/OSSL_HPKE_CTX_new.pod index 5a1928e96c..9a7786b5ee 100644 --- a/doc/man3/OSSL_HPKE_CTX_new.pod +++ b/doc/man3/OSSL_HPKE_CTX_new.pod @@ -68,11 +68,11 @@ OSSL_HPKE_CTX_get_seq, OSSL_HPKE_CTX_set_seq const unsigned char *ikme, size_t ikmelen); int OSSL_HPKE_suite_check(OSSL_HPKE_SUITE suite); - int OSSL_HPKE_get_grease_value(OSSL_LIB_CTX *libctx, const char *propq, - const OSSL_HPKE_SUITE *suite_in, + int OSSL_HPKE_get_grease_value(const OSSL_HPKE_SUITE *suite_in, OSSL_HPKE_SUITE *suite, unsigned char *enc, size_t *enclen, - unsigned char *ct, size_t ctlen); + unsigned char *ct, size_t ctlen, + OSSL_LIB_CTX *libctx, const char *propq); int OSSL_HPKE_str2suite(const char *str, OSSL_HPKE_SUITE *suite); size_t OSSL_HPKE_get_ciphertext_size(OSSL_HPKE_SUITE suite, size_t clearlen); diff --git a/include/openssl/hpke.h b/include/openssl/hpke.h index 7b1419e66c..26149b0ac1 100644 --- a/include/openssl/hpke.h +++ b/include/openssl/hpke.h @@ -138,11 +138,11 @@ int OSSL_HPKE_CTX_set_seq(OSSL_HPKE_CTX *ctx, uint64_t seq); int OSSL_HPKE_CTX_get_seq(OSSL_HPKE_CTX *ctx, uint64_t *seq); int OSSL_HPKE_suite_check(OSSL_HPKE_SUITE suite); -int OSSL_HPKE_get_grease_value(OSSL_LIB_CTX *libctx, const char *propq, - const OSSL_HPKE_SUITE *suite_in, +int OSSL_HPKE_get_grease_value(const OSSL_HPKE_SUITE *suite_in, OSSL_HPKE_SUITE *suite, unsigned char *enc, size_t *enclen, - unsigned char *ct, size_t ctlen); + unsigned char *ct, size_t ctlen, + OSSL_LIB_CTX *libctx, const char *propq); int OSSL_HPKE_str2suite(const char *str, OSSL_HPKE_SUITE *suite); size_t OSSL_HPKE_get_ciphertext_size(OSSL_HPKE_SUITE suite, size_t clearlen); size_t OSSL_HPKE_get_public_encap_size(OSSL_HPKE_SUITE suite); diff --git a/test/hpke_test.c b/test/hpke_test.c index b2d2e51dc4..1b0bc23082 100644 --- a/test/hpke_test.c +++ b/test/hpke_test.c @@ -1260,16 +1260,18 @@ static int test_hpke_grease(void) /* GREASEing */ /* check too short for public value */ g_pub_len = 10; - if (TEST_false(OSSL_HPKE_get_grease_value(testctx, NULL, NULL, &g_suite, + if (TEST_false(OSSL_HPKE_get_grease_value(NULL, &g_suite, g_pub, &g_pub_len, - g_cipher, g_cipher_len)) != 1) { + g_cipher, g_cipher_len, + testctx, NULL)) != 1) { overallresult = 0; } /* reset to work */ g_pub_len = OSSL_HPKE_TSTSIZE; - if (TEST_true(OSSL_HPKE_get_grease_value(testctx, NULL, NULL, &g_suite, + if (TEST_true(OSSL_HPKE_get_grease_value(NULL, &g_suite, g_pub, &g_pub_len, - g_cipher, g_cipher_len)) != 1) { + g_cipher, g_cipher_len, + testctx, NULL)) != 1) { overallresult = 0; } /* expansion */ @@ -1630,36 +1632,41 @@ static int test_hpke_random_suites(void) size_t ctlen = sizeof(ct); /* test with NULL/0 inputs */ - if (!TEST_false(OSSL_HPKE_get_grease_value(testctx, NULL, NULL, NULL, - NULL, NULL, NULL, 0))) + if (!TEST_false(OSSL_HPKE_get_grease_value(NULL, NULL, + NULL, NULL, NULL, 0, + testctx, NULL))) return 0; enclen = 10; - if (!TEST_false(OSSL_HPKE_get_grease_value(testctx, NULL, &def_suite, - &suite2, enc, &enclen, - ct, ctlen))) + if (!TEST_false(OSSL_HPKE_get_grease_value(&def_suite, &suite2, + enc, &enclen, ct, ctlen, + testctx, NULL))) return 0; enclen = sizeof(enc); /* reset, 'cause get_grease() will have set */ /* test with a should-be-good suite */ - if (!TEST_true(OSSL_HPKE_get_grease_value(testctx, NULL, &def_suite, - &suite2, enc, &enclen, - ct, ctlen))) + if (!TEST_true(OSSL_HPKE_get_grease_value(&def_suite, &suite2, + enc, &enclen, ct, ctlen, + testctx, NULL))) return 0; /* no suggested suite */ enclen = sizeof(enc); /* reset, 'cause get_grease() will have set */ - if (!TEST_true(OSSL_HPKE_get_grease_value(testctx, NULL, NULL, &suite2, - enc, &enclen, ct, ctlen))) + if (!TEST_true(OSSL_HPKE_get_grease_value(NULL, &suite2, + enc, &enclen, + ct, ctlen, + testctx, NULL))) return 0; /* suggested suite with P-521, just to be sure we hit long values */ enclen = sizeof(enc); /* reset, 'cause get_grease() will have set */ suite.kem_id = OSSL_HPKE_KEM_ID_P521; - if (!TEST_true(OSSL_HPKE_get_grease_value(testctx, NULL, &suite, &suite2, - enc, &enclen, ct, ctlen))) + if (!TEST_true(OSSL_HPKE_get_grease_value(&suite, &suite2, + enc, &enclen, ct, ctlen, + testctx, NULL))) return 0; enclen = sizeof(enc); ctlen = 2; /* too-short cttext (can't fit an aead tag) */ - if (!TEST_false(OSSL_HPKE_get_grease_value(testctx, NULL, NULL, &suite2, - enc, &enclen, ct, ctlen))) + if (!TEST_false(OSSL_HPKE_get_grease_value(NULL, &suite2, + enc, &enclen, ct, ctlen, + testctx, NULL))) return 0; ctlen = sizeof(ct); @@ -1667,20 +1674,23 @@ static int test_hpke_random_suites(void) suite.kem_id = OSSL_HPKE_KEM_ID_X25519; /* back to default */ suite.aead_id = 0x1234; /* bad aead */ - if (!TEST_false(OSSL_HPKE_get_grease_value(testctx, NULL, &suite, &suite2, - enc, &enclen, ct, ctlen))) + if (!TEST_false(OSSL_HPKE_get_grease_value(&suite, &suite2, + enc, &enclen, ct, ctlen, + testctx, NULL))) return 0; enclen = sizeof(enc); suite.aead_id = def_suite.aead_id; /* good aead */ suite.kdf_id = 0x3451; /* bad kdf */ - if (!TEST_false(OSSL_HPKE_get_grease_value(testctx, NULL, &suite, &suite2, - enc, &enclen, ct, ctlen))) + if (!TEST_false(OSSL_HPKE_get_grease_value(&suite, &suite2, + enc, &enclen, ct, ctlen, + testctx, NULL))) return 0; enclen = sizeof(enc); suite.kdf_id = def_suite.kdf_id; /* good kdf */ suite.kem_id = 0x4517; /* bad kem */ - if (!TEST_false(OSSL_HPKE_get_grease_value(testctx, NULL, &suite, &suite2, - enc, &enclen, ct, ctlen))) + if (!TEST_false(OSSL_HPKE_get_grease_value(&suite, &suite2, + enc, &enclen, ct, ctlen, + testctx, NULL))) return 0; return 1; } |