summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorslontis <shane.lontis@oracle.com>2023-03-23 11:07:03 +1000
committerPauli <pauli@openssl.org>2023-04-14 13:11:24 +1000
commit8b7b9aac444625195486efd10273694830c41398 (patch)
tree1b92a8eb655852c28aeb2db41f67c2120539bf00
parentefbff4de3e259cee71a4e1bbd86b30ebd86bbdae (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.c10
-rw-r--r--doc/man3/OSSL_HPKE_CTX_new.pod6
-rw-r--r--include/openssl/hpke.h6
-rw-r--r--test/hpke_test.c58
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;
}