diff options
Diffstat (limited to 'crypto/openssl/providers/implementations/encode_decode')
18 files changed, 1839 insertions, 1478 deletions
diff --git a/crypto/openssl/providers/implementations/encode_decode/decode_der2key.c b/crypto/openssl/providers/implementations/encode_decode/decode_der2key.c index a3f0d0897dae..91313df64c73 100644 --- a/crypto/openssl/providers/implementations/encode_decode/decode_der2key.c +++ b/crypto/openssl/providers/implementations/encode_decode/decode_der2key.c @@ -20,13 +20,13 @@ #include <openssl/crypto.h> #include <openssl/err.h> #include <openssl/params.h> -#include <openssl/pem.h> /* PEM_BUFSIZE and public PEM functions */ +#include <openssl/pem.h> /* PEM_BUFSIZE and public PEM functions */ #include <openssl/pkcs12.h> #include <openssl/provider.h> #include <openssl/x509.h> #include <openssl/proverr.h> #include <openssl/asn1t.h> -#include "internal/cryptlib.h" /* ossl_assert() */ +#include "internal/cryptlib.h" /* ossl_assert() */ #include "crypto/dh.h" #include "crypto/dsa.h" #include "crypto/ec.h" @@ -65,14 +65,14 @@ ASN1_SEQUENCE(BARE_PUBKEY) = { } static_ASN1_SEQUENCE_END(BARE_PUBKEY) #endif /* OPENSSL_NO_SLH_DSA */ -struct der2key_ctx_st; /* Forward declaration */ +struct der2key_ctx_st; /* Forward declaration */ typedef int check_key_fn(void *, struct der2key_ctx_st *ctx); typedef void adjust_key_fn(void *, struct der2key_ctx_st *ctx); typedef void free_key_fn(void *); typedef void *d2i_PKCS8_fn(const unsigned char **, long, - struct der2key_ctx_st *); + struct der2key_ctx_st *); typedef void *d2i_PUBKEY_fn(const unsigned char **, long, - struct der2key_ctx_st *); + struct der2key_ctx_st *); struct keytype_desc_st { const char *keytype_name; const OSSL_DISPATCH *fns; /* Keymgmt (to pilfer functions from) */ @@ -93,10 +93,10 @@ struct keytype_desc_st { /* For type specific decoders, we use the corresponding d2i */ d2i_of_void *d2i_private_key; /* From type-specific DER */ - d2i_of_void *d2i_public_key; /* From type-specific DER */ - d2i_of_void *d2i_key_params; /* From type-specific DER */ - d2i_PKCS8_fn *d2i_PKCS8; /* Wrapped in a PrivateKeyInfo */ - d2i_PUBKEY_fn *d2i_PUBKEY; /* Wrapped in a SubjectPublicKeyInfo */ + d2i_of_void *d2i_public_key; /* From type-specific DER */ + d2i_of_void *d2i_key_params; /* From type-specific DER */ + d2i_PKCS8_fn *d2i_PKCS8; /* Wrapped in a PrivateKeyInfo */ + d2i_PUBKEY_fn *d2i_PUBKEY; /* Wrapped in a SubjectPublicKeyInfo */ /* * For any key, we may need to check that the key meets expectations. @@ -128,10 +128,10 @@ struct der2key_ctx_st { }; typedef void *key_from_pkcs8_t(const PKCS8_PRIV_KEY_INFO *p8inf, - OSSL_LIB_CTX *libctx, const char *propq); + OSSL_LIB_CTX *libctx, const char *propq); static void *der2key_decode_p8(const unsigned char **input_der, - long input_der_len, struct der2key_ctx_st *ctx, - key_from_pkcs8_t *key_from_pkcs8) + long input_der_len, struct der2key_ctx_st *ctx, + key_from_pkcs8_t *key_from_pkcs8) { PKCS8_PRIV_KEY_INFO *p8inf = NULL; const X509_ALGOR *alg = NULL; @@ -199,7 +199,7 @@ static void der2key_freectx(void *vctx) } static int der2key_check_selection(int selection, - const struct keytype_desc_st *desc) + const struct keytype_desc_st *desc) { /* * The selections are kinda sorta "levels", i.e. each selection given @@ -233,8 +233,8 @@ static int der2key_check_selection(int selection, } static int der2key_decode(void *vctx, OSSL_CORE_BIO *cin, int selection, - OSSL_CALLBACK *data_cb, void *data_cbarg, - OSSL_PASSPHRASE_CALLBACK *pw_cb, void *pw_cbarg) + OSSL_CALLBACK *data_cb, void *data_cbarg, + OSSL_PASSPHRASE_CALLBACK *pw_cb, void *pw_cbarg) { struct der2key_ctx_st *ctx = vctx; unsigned char *der = NULL; @@ -324,7 +324,7 @@ static int der2key_decode(void *vctx, OSSL_CORE_BIO *cin, int selection, if (key != NULL && ctx->desc->adjust_key != NULL) ctx->desc->adjust_key(key, ctx); - next: +next: /* * Indicated that we successfully decoded something, or not at all. * Ending up "empty handed" is not an error. @@ -343,31 +343,27 @@ static int der2key_decode(void *vctx, OSSL_CORE_BIO *cin, int selection, OSSL_PARAM params[4]; int object_type = OSSL_OBJECT_PKEY; - params[0] = - OSSL_PARAM_construct_int(OSSL_OBJECT_PARAM_TYPE, &object_type); + params[0] = OSSL_PARAM_construct_int(OSSL_OBJECT_PARAM_TYPE, &object_type); #ifndef OPENSSL_NO_SM2 if (strcmp(ctx->desc->keytype_name, "EC") == 0 && (EC_KEY_get_flags(key) & EC_FLAG_SM2_RANGE) != 0) - params[1] = - OSSL_PARAM_construct_utf8_string(OSSL_OBJECT_PARAM_DATA_TYPE, - "SM2", 0); + params[1] = OSSL_PARAM_construct_utf8_string(OSSL_OBJECT_PARAM_DATA_TYPE, + "SM2", 0); else #endif - params[1] = - OSSL_PARAM_construct_utf8_string(OSSL_OBJECT_PARAM_DATA_TYPE, - (char *)ctx->desc->keytype_name, - 0); + params[1] = OSSL_PARAM_construct_utf8_string(OSSL_OBJECT_PARAM_DATA_TYPE, + (char *)ctx->desc->keytype_name, + 0); /* The address of the key becomes the octet string */ - params[2] = - OSSL_PARAM_construct_octet_string(OSSL_OBJECT_PARAM_REFERENCE, - &key, sizeof(key)); + params[2] = OSSL_PARAM_construct_octet_string(OSSL_OBJECT_PARAM_REFERENCE, + &key, sizeof(key)); params[3] = OSSL_PARAM_construct_end(); ok = data_cb(params, data_cbarg); } - end: +end: ctx->desc->free_key(key); OPENSSL_free(der); @@ -375,12 +371,11 @@ static int der2key_decode(void *vctx, OSSL_CORE_BIO *cin, int selection, } static int der2key_export_object(void *vctx, - const void *reference, size_t reference_sz, - OSSL_CALLBACK *export_cb, void *export_cbarg) + const void *reference, size_t reference_sz, + OSSL_CALLBACK *export_cb, void *export_cbarg) { struct der2key_ctx_st *ctx = vctx; - OSSL_FUNC_keymgmt_export_fn *export = - ossl_prov_get_keymgmt_export(ctx->desc->fns); + OSSL_FUNC_keymgmt_export_fn *export = ossl_prov_get_keymgmt_export(ctx->desc->fns); void *keydata; if (reference_sz == sizeof(keydata) && export != NULL) { @@ -399,7 +394,7 @@ static int der2key_export_object(void *vctx, #define D2I_PUBKEY_NOCTX(n, f) \ static void * \ n##_d2i_PUBKEY(const unsigned char **der, long der_len, \ - ossl_unused struct der2key_ctx_st *ctx) \ + ossl_unused struct der2key_ctx_st *ctx) \ { \ return f(NULL, der, der_len); \ } @@ -407,18 +402,18 @@ static int der2key_export_object(void *vctx, /* ---------------------------------------------------------------------- */ #ifndef OPENSSL_NO_DH -# define dh_evp_type EVP_PKEY_DH -# define dh_d2i_private_key NULL -# define dh_d2i_public_key NULL -# define dh_d2i_key_params (d2i_of_void *)d2i_DHparams -# define dh_free (free_key_fn *)DH_free -# define dh_check NULL +#define dh_evp_type EVP_PKEY_DH +#define dh_d2i_private_key NULL +#define dh_d2i_public_key NULL +#define dh_d2i_key_params (d2i_of_void *)d2i_DHparams +#define dh_free (free_key_fn *)DH_free +#define dh_check NULL static void *dh_d2i_PKCS8(const unsigned char **der, long der_len, - struct der2key_ctx_st *ctx) + struct der2key_ctx_st *ctx) { return der2key_decode_p8(der, der_len, ctx, - (key_from_pkcs8_t *)ossl_dh_key_from_pkcs8); + (key_from_pkcs8_t *)ossl_dh_key_from_pkcs8); } D2I_PUBKEY_NOCTX(dh, ossl_d2i_DH_PUBKEY) @@ -429,31 +424,31 @@ static void dh_adjust(void *key, struct der2key_ctx_st *ctx) ossl_dh_set0_libctx(key, PROV_LIBCTX_OF(ctx->provctx)); } -# define dhx_evp_type EVP_PKEY_DHX -# define dhx_d2i_private_key NULL -# define dhx_d2i_public_key NULL -# define dhx_d2i_key_params (d2i_of_void *)d2i_DHxparams -# define dhx_d2i_PKCS8 dh_d2i_PKCS8 -# define dhx_free (free_key_fn *)DH_free -# define dhx_check NULL -# define dhx_adjust dh_adjust +#define dhx_evp_type EVP_PKEY_DHX +#define dhx_d2i_private_key NULL +#define dhx_d2i_public_key NULL +#define dhx_d2i_key_params (d2i_of_void *)d2i_DHxparams +#define dhx_d2i_PKCS8 dh_d2i_PKCS8 +#define dhx_free (free_key_fn *)DH_free +#define dhx_check NULL +#define dhx_adjust dh_adjust #endif /* ---------------------------------------------------------------------- */ #ifndef OPENSSL_NO_DSA -# define dsa_evp_type EVP_PKEY_DSA -# define dsa_d2i_private_key (d2i_of_void *)d2i_DSAPrivateKey -# define dsa_d2i_public_key (d2i_of_void *)d2i_DSAPublicKey -# define dsa_d2i_key_params (d2i_of_void *)d2i_DSAparams -# define dsa_free (free_key_fn *)DSA_free -# define dsa_check NULL +#define dsa_evp_type EVP_PKEY_DSA +#define dsa_d2i_private_key (d2i_of_void *)d2i_DSAPrivateKey +#define dsa_d2i_public_key (d2i_of_void *)d2i_DSAPublicKey +#define dsa_d2i_key_params (d2i_of_void *)d2i_DSAparams +#define dsa_free (free_key_fn *)DSA_free +#define dsa_check NULL static void *dsa_d2i_PKCS8(const unsigned char **der, long der_len, - struct der2key_ctx_st *ctx) + struct der2key_ctx_st *ctx) { return der2key_decode_p8(der, der_len, ctx, - (key_from_pkcs8_t *)ossl_dsa_key_from_pkcs8); + (key_from_pkcs8_t *)ossl_dsa_key_from_pkcs8); } D2I_PUBKEY_NOCTX(dsa, ossl_d2i_DSA_PUBKEY) @@ -467,17 +462,17 @@ static void dsa_adjust(void *key, struct der2key_ctx_st *ctx) /* ---------------------------------------------------------------------- */ #ifndef OPENSSL_NO_EC -# define ec_evp_type EVP_PKEY_EC -# define ec_d2i_private_key (d2i_of_void *)d2i_ECPrivateKey -# define ec_d2i_public_key NULL -# define ec_d2i_key_params (d2i_of_void *)d2i_ECParameters -# define ec_free (free_key_fn *)EC_KEY_free +#define ec_evp_type EVP_PKEY_EC +#define ec_d2i_private_key (d2i_of_void *)d2i_ECPrivateKey +#define ec_d2i_public_key NULL +#define ec_d2i_key_params (d2i_of_void *)d2i_ECParameters +#define ec_free (free_key_fn *)EC_KEY_free static void *ec_d2i_PKCS8(const unsigned char **der, long der_len, - struct der2key_ctx_st *ctx) + struct der2key_ctx_st *ctx) { return der2key_decode_p8(der, der_len, ctx, - (key_from_pkcs8_t *)ossl_ec_key_from_pkcs8); + (key_from_pkcs8_t *)ossl_ec_key_from_pkcs8); } D2I_PUBKEY_NOCTX(ec, d2i_EC_PUBKEY) @@ -502,17 +497,17 @@ static void ec_adjust(void *key, struct der2key_ctx_st *ctx) ossl_ec_key_set0_libctx(key, PROV_LIBCTX_OF(ctx->provctx)); } -# ifndef OPENSSL_NO_ECX +#ifndef OPENSSL_NO_ECX /* * ED25519, ED448, X25519, X448 only implement PKCS#8 and SubjectPublicKeyInfo, * so no d2i functions to be had. */ static void *ecx_d2i_PKCS8(const unsigned char **der, long der_len, - struct der2key_ctx_st *ctx) + struct der2key_ctx_st *ctx) { return der2key_decode_p8(der, der_len, ctx, - (key_from_pkcs8_t *)ossl_ecx_key_from_pkcs8); + (key_from_pkcs8_t *)ossl_ecx_key_from_pkcs8); } D2I_PUBKEY_NOCTX(ed25519, ossl_d2i_ED25519_PUBKEY) @@ -525,60 +520,60 @@ static void ecx_key_adjust(void *key, struct der2key_ctx_st *ctx) ossl_ecx_key_set0_libctx(key, PROV_LIBCTX_OF(ctx->provctx)); } -# define ed25519_evp_type EVP_PKEY_ED25519 -# define ed25519_d2i_private_key NULL -# define ed25519_d2i_public_key NULL -# define ed25519_d2i_key_params NULL -# define ed25519_d2i_PKCS8 ecx_d2i_PKCS8 -# define ed25519_free (free_key_fn *)ossl_ecx_key_free -# define ed25519_check NULL -# define ed25519_adjust ecx_key_adjust - -# define ed448_evp_type EVP_PKEY_ED448 -# define ed448_d2i_private_key NULL -# define ed448_d2i_public_key NULL -# define ed448_d2i_key_params NULL -# define ed448_d2i_PKCS8 ecx_d2i_PKCS8 -# define ed448_free (free_key_fn *)ossl_ecx_key_free -# define ed448_check NULL -# define ed448_adjust ecx_key_adjust - -# define x25519_evp_type EVP_PKEY_X25519 -# define x25519_d2i_private_key NULL -# define x25519_d2i_public_key NULL -# define x25519_d2i_key_params NULL -# define x25519_d2i_PKCS8 ecx_d2i_PKCS8 -# define x25519_free (free_key_fn *)ossl_ecx_key_free -# define x25519_check NULL -# define x25519_adjust ecx_key_adjust - -# define x448_evp_type EVP_PKEY_X448 -# define x448_d2i_private_key NULL -# define x448_d2i_public_key NULL -# define x448_d2i_key_params NULL -# define x448_d2i_PKCS8 ecx_d2i_PKCS8 -# define x448_free (free_key_fn *)ossl_ecx_key_free -# define x448_check NULL -# define x448_adjust ecx_key_adjust -# endif /* OPENSSL_NO_ECX */ - -# ifndef OPENSSL_NO_SM2 -# define sm2_evp_type EVP_PKEY_SM2 -# define sm2_d2i_private_key (d2i_of_void *)d2i_ECPrivateKey -# define sm2_d2i_public_key NULL -# define sm2_d2i_key_params (d2i_of_void *)d2i_ECParameters -# define sm2_d2i_PUBKEY ec_d2i_PUBKEY -# define sm2_free (free_key_fn *)EC_KEY_free -# define sm2_check ec_check -# define sm2_adjust ec_adjust +#define ed25519_evp_type EVP_PKEY_ED25519 +#define ed25519_d2i_private_key NULL +#define ed25519_d2i_public_key NULL +#define ed25519_d2i_key_params NULL +#define ed25519_d2i_PKCS8 ecx_d2i_PKCS8 +#define ed25519_free (free_key_fn *)ossl_ecx_key_free +#define ed25519_check NULL +#define ed25519_adjust ecx_key_adjust + +#define ed448_evp_type EVP_PKEY_ED448 +#define ed448_d2i_private_key NULL +#define ed448_d2i_public_key NULL +#define ed448_d2i_key_params NULL +#define ed448_d2i_PKCS8 ecx_d2i_PKCS8 +#define ed448_free (free_key_fn *)ossl_ecx_key_free +#define ed448_check NULL +#define ed448_adjust ecx_key_adjust + +#define x25519_evp_type EVP_PKEY_X25519 +#define x25519_d2i_private_key NULL +#define x25519_d2i_public_key NULL +#define x25519_d2i_key_params NULL +#define x25519_d2i_PKCS8 ecx_d2i_PKCS8 +#define x25519_free (free_key_fn *)ossl_ecx_key_free +#define x25519_check NULL +#define x25519_adjust ecx_key_adjust + +#define x448_evp_type EVP_PKEY_X448 +#define x448_d2i_private_key NULL +#define x448_d2i_public_key NULL +#define x448_d2i_key_params NULL +#define x448_d2i_PKCS8 ecx_d2i_PKCS8 +#define x448_free (free_key_fn *)ossl_ecx_key_free +#define x448_check NULL +#define x448_adjust ecx_key_adjust +#endif /* OPENSSL_NO_ECX */ + +#ifndef OPENSSL_NO_SM2 +#define sm2_evp_type EVP_PKEY_SM2 +#define sm2_d2i_private_key (d2i_of_void *)d2i_ECPrivateKey +#define sm2_d2i_public_key NULL +#define sm2_d2i_key_params (d2i_of_void *)d2i_ECParameters +#define sm2_d2i_PUBKEY ec_d2i_PUBKEY +#define sm2_free (free_key_fn *)EC_KEY_free +#define sm2_check ec_check +#define sm2_adjust ec_adjust static void *sm2_d2i_PKCS8(const unsigned char **der, long der_len, - struct der2key_ctx_st *ctx) + struct der2key_ctx_st *ctx) { return der2key_decode_p8(der, der_len, ctx, - (key_from_pkcs8_t *)ossl_ec_key_from_pkcs8); + (key_from_pkcs8_t *)ossl_ec_key_from_pkcs8); } -# endif +#endif #endif @@ -591,7 +586,7 @@ ml_kem_d2i_PKCS8(const uint8_t **der, long der_len, struct der2key_ctx_st *ctx) ML_KEM_KEY *key; key = ossl_ml_kem_d2i_PKCS8(*der, der_len, ctx->desc->evp_type, - ctx->provctx, ctx->propq); + ctx->provctx, ctx->propq); if (key != NULL) *der += der_len; return key; @@ -599,46 +594,46 @@ ml_kem_d2i_PKCS8(const uint8_t **der, long der_len, struct der2key_ctx_st *ctx) static ossl_inline void * ml_kem_d2i_PUBKEY(const uint8_t **der, long der_len, - struct der2key_ctx_st *ctx) + struct der2key_ctx_st *ctx) { ML_KEM_KEY *key; key = ossl_ml_kem_d2i_PUBKEY(*der, der_len, ctx->desc->evp_type, - ctx->provctx, ctx->propq); + ctx->provctx, ctx->propq); if (key != NULL) *der += der_len; return key; } -# define ml_kem_512_evp_type EVP_PKEY_ML_KEM_512 -# define ml_kem_512_d2i_private_key NULL -# define ml_kem_512_d2i_public_key NULL -# define ml_kem_512_d2i_key_params NULL -# define ml_kem_512_d2i_PUBKEY ml_kem_d2i_PUBKEY -# define ml_kem_512_d2i_PKCS8 ml_kem_d2i_PKCS8 -# define ml_kem_512_free (free_key_fn *)ossl_ml_kem_key_free -# define ml_kem_512_check NULL -# define ml_kem_512_adjust NULL - -# define ml_kem_768_evp_type EVP_PKEY_ML_KEM_768 -# define ml_kem_768_d2i_private_key NULL -# define ml_kem_768_d2i_public_key NULL -# define ml_kem_768_d2i_key_params NULL -# define ml_kem_768_d2i_PUBKEY ml_kem_d2i_PUBKEY -# define ml_kem_768_d2i_PKCS8 ml_kem_d2i_PKCS8 -# define ml_kem_768_free (free_key_fn *)ossl_ml_kem_key_free -# define ml_kem_768_check NULL -# define ml_kem_768_adjust NULL - -# define ml_kem_1024_evp_type EVP_PKEY_ML_KEM_1024 -# define ml_kem_1024_d2i_private_key NULL -# define ml_kem_1024_d2i_public_key NULL -# define ml_kem_1024_d2i_PUBKEY ml_kem_d2i_PUBKEY -# define ml_kem_1024_d2i_PKCS8 ml_kem_d2i_PKCS8 -# define ml_kem_1024_d2i_key_params NULL -# define ml_kem_1024_free (free_key_fn *)ossl_ml_kem_key_free -# define ml_kem_1024_check NULL -# define ml_kem_1024_adjust NULL +#define ml_kem_512_evp_type EVP_PKEY_ML_KEM_512 +#define ml_kem_512_d2i_private_key NULL +#define ml_kem_512_d2i_public_key NULL +#define ml_kem_512_d2i_key_params NULL +#define ml_kem_512_d2i_PUBKEY ml_kem_d2i_PUBKEY +#define ml_kem_512_d2i_PKCS8 ml_kem_d2i_PKCS8 +#define ml_kem_512_free (free_key_fn *)ossl_ml_kem_key_free +#define ml_kem_512_check NULL +#define ml_kem_512_adjust NULL + +#define ml_kem_768_evp_type EVP_PKEY_ML_KEM_768 +#define ml_kem_768_d2i_private_key NULL +#define ml_kem_768_d2i_public_key NULL +#define ml_kem_768_d2i_key_params NULL +#define ml_kem_768_d2i_PUBKEY ml_kem_d2i_PUBKEY +#define ml_kem_768_d2i_PKCS8 ml_kem_d2i_PKCS8 +#define ml_kem_768_free (free_key_fn *)ossl_ml_kem_key_free +#define ml_kem_768_check NULL +#define ml_kem_768_adjust NULL + +#define ml_kem_1024_evp_type EVP_PKEY_ML_KEM_1024 +#define ml_kem_1024_d2i_private_key NULL +#define ml_kem_1024_d2i_public_key NULL +#define ml_kem_1024_d2i_PUBKEY ml_kem_d2i_PUBKEY +#define ml_kem_1024_d2i_PKCS8 ml_kem_d2i_PKCS8 +#define ml_kem_1024_d2i_key_params NULL +#define ml_kem_1024_free (free_key_fn *)ossl_ml_kem_key_free +#define ml_kem_1024_check NULL +#define ml_kem_1024_adjust NULL #endif @@ -660,20 +655,21 @@ slh_dsa_d2i_PKCS8(const uint8_t **der, long der_len, struct der2key_ctx_st *ctx) /* Algorithm parameters must be absent. */ if ((X509_ALGOR_get0(NULL, &ptype, NULL, alg), ptype != V_ASN1_UNDEF)) { ERR_raise_data(ERR_LIB_PROV, PROV_R_UNEXPECTED_KEY_PARAMETERS, - "unexpected parameters with a PKCS#8 %s private key", - ctx->desc->keytype_name); + "unexpected parameters with a PKCS#8 %s private key", + ctx->desc->keytype_name); goto end; } if (OBJ_obj2nid(alg->algorithm) != ctx->desc->evp_type) goto end; if ((key = ossl_slh_dsa_key_new(libctx, ctx->propq, - ctx->desc->keytype_name)) == NULL) + ctx->desc->keytype_name)) + == NULL) goto end; if (!ossl_slh_dsa_set_priv(key, p, plen)) goto end; ret = key; - end: +end: PKCS8_PRIV_KEY_INFO_free(p8inf); if (ret == NULL) ossl_slh_dsa_key_free(key); @@ -681,7 +677,7 @@ slh_dsa_d2i_PKCS8(const uint8_t **der, long der_len, struct der2key_ctx_st *ctx) } static ossl_inline void *slh_dsa_d2i_PUBKEY(const uint8_t **der, long der_len, - struct der2key_ctx_st *ctx) + struct der2key_ctx_st *ctx) { int ok = 0; OSSL_LIB_CTX *libctx = PROV_LIBCTX_OF(ctx->provctx); @@ -711,9 +707,9 @@ static ossl_inline void *slh_dsa_d2i_PUBKEY(const uint8_t **der, long der_len, */ if (der_len != 18 + (long)len) { ERR_raise_data(ERR_LIB_PROV, PROV_R_BAD_ENCODING, - "unexpected %s public key length: %ld != %ld", - ctx->desc->keytype_name, der_len, - 18 + (long)len); + "unexpected %s public key length: %ld != %ld", + ctx->desc->keytype_name, der_len, + 18 + (long)len); goto err; } @@ -722,35 +718,36 @@ static ossl_inline void *slh_dsa_d2i_PUBKEY(const uint8_t **der, long der_len, /* The spki storage is freed on error */ if (ASN1_item_d2i_ex((ASN1_VALUE **)&spki, &end, der_len, - ASN1_ITEM_rptr(BARE_PUBKEY), NULL, NULL) == NULL) { + ASN1_ITEM_rptr(BARE_PUBKEY), NULL, NULL) + == NULL) { ERR_raise_data(ERR_LIB_PROV, PROV_R_BAD_ENCODING, - "malformed %s public key ASN.1 encoding", - ossl_slh_dsa_key_get_name(ret)); + "malformed %s public key ASN.1 encoding", + ossl_slh_dsa_key_get_name(ret)); goto err; } /* The spki structure now owns some memory */ if ((spki->pubkey->flags & 0x7) != 0 || end != *der + der_len) { ERR_raise_data(ERR_LIB_PROV, PROV_R_BAD_ENCODING, - "malformed %s public key ASN.1 encoding", - ossl_slh_dsa_key_get_name(ret)); + "malformed %s public key ASN.1 encoding", + ossl_slh_dsa_key_get_name(ret)); goto err; } if (OBJ_cmp(OBJ_nid2obj(ctx->desc->evp_type), spki->algor.oid) != 0) { ERR_raise_data(ERR_LIB_PROV, PROV_R_BAD_ENCODING, - "unexpected algorithm OID for an %s public key", - ossl_slh_dsa_key_get_name(ret)); + "unexpected algorithm OID for an %s public key", + ossl_slh_dsa_key_get_name(ret)); goto err; } if (!ossl_slh_dsa_set_pub(ret, spki->pubkey->data, spki->pubkey->length)) { ERR_raise_data(ERR_LIB_PROV, PROV_R_BAD_ENCODING, - "failed to parse %s public key from the input data", - ossl_slh_dsa_key_get_name(ret)); + "failed to parse %s public key from the input data", + ossl_slh_dsa_key_get_name(ret)); goto err; } ok = 1; - err: +err: if (spki != NULL) { ASN1_OBJECT_free(spki->algor.oid); ASN1_BIT_STRING_free(spki->pubkey); @@ -763,145 +760,145 @@ static ossl_inline void *slh_dsa_d2i_PUBKEY(const uint8_t **der, long der_len, return ret; } -# define slh_dsa_sha2_128s_evp_type EVP_PKEY_SLH_DSA_SHA2_128S -# define slh_dsa_sha2_128s_d2i_private_key NULL -# define slh_dsa_sha2_128s_d2i_public_key NULL -# define slh_dsa_sha2_128s_d2i_key_params NULL -# define slh_dsa_sha2_128s_d2i_PKCS8 slh_dsa_d2i_PKCS8 -# define slh_dsa_sha2_128s_d2i_PUBKEY slh_dsa_d2i_PUBKEY -# define slh_dsa_sha2_128s_free (free_key_fn *)ossl_slh_dsa_key_free -# define slh_dsa_sha2_128s_check NULL -# define slh_dsa_sha2_128s_adjust NULL - -# define slh_dsa_sha2_128f_evp_type EVP_PKEY_SLH_DSA_SHA2_128F -# define slh_dsa_sha2_128f_d2i_private_key NULL -# define slh_dsa_sha2_128f_d2i_public_key NULL -# define slh_dsa_sha2_128f_d2i_key_params NULL -# define slh_dsa_sha2_128f_d2i_PKCS8 slh_dsa_d2i_PKCS8 -# define slh_dsa_sha2_128f_d2i_PUBKEY slh_dsa_d2i_PUBKEY -# define slh_dsa_sha2_128f_free (free_key_fn *)ossl_slh_dsa_key_free -# define slh_dsa_sha2_128f_check NULL -# define slh_dsa_sha2_128f_adjust NULL - -# define slh_dsa_sha2_192s_evp_type EVP_PKEY_SLH_DSA_SHA2_192S -# define slh_dsa_sha2_192s_d2i_private_key NULL -# define slh_dsa_sha2_192s_d2i_public_key NULL -# define slh_dsa_sha2_192s_d2i_key_params NULL -# define slh_dsa_sha2_192s_d2i_PKCS8 slh_dsa_d2i_PKCS8 -# define slh_dsa_sha2_192s_d2i_PUBKEY slh_dsa_d2i_PUBKEY -# define slh_dsa_sha2_192s_free (free_key_fn *)ossl_slh_dsa_key_free -# define slh_dsa_sha2_192s_check NULL -# define slh_dsa_sha2_192s_adjust NULL - -# define slh_dsa_sha2_192f_evp_type EVP_PKEY_SLH_DSA_SHA2_192F -# define slh_dsa_sha2_192f_d2i_private_key NULL -# define slh_dsa_sha2_192f_d2i_public_key NULL -# define slh_dsa_sha2_192f_d2i_key_params NULL -# define slh_dsa_sha2_192f_d2i_PKCS8 slh_dsa_d2i_PKCS8 -# define slh_dsa_sha2_192f_d2i_PUBKEY slh_dsa_d2i_PUBKEY -# define slh_dsa_sha2_192f_free (free_key_fn *)ossl_slh_dsa_key_free -# define slh_dsa_sha2_192f_check NULL -# define slh_dsa_sha2_192f_adjust NULL - -# define slh_dsa_sha2_256s_evp_type EVP_PKEY_SLH_DSA_SHA2_256S -# define slh_dsa_sha2_256s_d2i_private_key NULL -# define slh_dsa_sha2_256s_d2i_public_key NULL -# define slh_dsa_sha2_256s_d2i_key_params NULL -# define slh_dsa_sha2_256s_d2i_PKCS8 slh_dsa_d2i_PKCS8 -# define slh_dsa_sha2_256s_d2i_PUBKEY slh_dsa_d2i_PUBKEY -# define slh_dsa_sha2_256s_free (free_key_fn *)ossl_slh_dsa_key_free -# define slh_dsa_sha2_256s_check NULL -# define slh_dsa_sha2_256s_adjust NULL - -# define slh_dsa_sha2_256f_evp_type EVP_PKEY_SLH_DSA_SHA2_256F -# define slh_dsa_sha2_256f_d2i_private_key NULL -# define slh_dsa_sha2_256f_d2i_public_key NULL -# define slh_dsa_sha2_256f_d2i_key_params NULL -# define slh_dsa_sha2_256f_d2i_PKCS8 slh_dsa_d2i_PKCS8 -# define slh_dsa_sha2_256f_d2i_PUBKEY slh_dsa_d2i_PUBKEY -# define slh_dsa_sha2_256f_free (free_key_fn *)ossl_slh_dsa_key_free -# define slh_dsa_sha2_256f_check NULL -# define slh_dsa_sha2_256f_adjust NULL - -# define slh_dsa_shake_128s_evp_type EVP_PKEY_SLH_DSA_SHAKE_128S -# define slh_dsa_shake_128s_d2i_private_key NULL -# define slh_dsa_shake_128s_d2i_public_key NULL -# define slh_dsa_shake_128s_d2i_key_params NULL -# define slh_dsa_shake_128s_d2i_PKCS8 slh_dsa_d2i_PKCS8 -# define slh_dsa_shake_128s_d2i_PUBKEY slh_dsa_d2i_PUBKEY -# define slh_dsa_shake_128s_free (free_key_fn *)ossl_slh_dsa_key_free -# define slh_dsa_shake_128s_check NULL -# define slh_dsa_shake_128s_adjust NULL - -# define slh_dsa_shake_128f_evp_type EVP_PKEY_SLH_DSA_SHAKE_128F -# define slh_dsa_shake_128f_d2i_private_key NULL -# define slh_dsa_shake_128f_d2i_public_key NULL -# define slh_dsa_shake_128f_d2i_key_params NULL -# define slh_dsa_shake_128f_d2i_PKCS8 slh_dsa_d2i_PKCS8 -# define slh_dsa_shake_128f_d2i_PUBKEY slh_dsa_d2i_PUBKEY -# define slh_dsa_shake_128f_free (free_key_fn *)ossl_slh_dsa_key_free -# define slh_dsa_shake_128f_check NULL -# define slh_dsa_shake_128f_adjust NULL - -# define slh_dsa_shake_192s_evp_type EVP_PKEY_SLH_DSA_SHAKE_192S -# define slh_dsa_shake_192s_d2i_private_key NULL -# define slh_dsa_shake_192s_d2i_public_key NULL -# define slh_dsa_shake_192s_d2i_key_params NULL -# define slh_dsa_shake_192s_d2i_PKCS8 slh_dsa_d2i_PKCS8 -# define slh_dsa_shake_192s_d2i_PUBKEY slh_dsa_d2i_PUBKEY -# define slh_dsa_shake_192s_free (free_key_fn *)ossl_slh_dsa_key_free -# define slh_dsa_shake_192s_check NULL -# define slh_dsa_shake_192s_adjust NULL - -# define slh_dsa_shake_192f_evp_type EVP_PKEY_SLH_DSA_SHAKE_192F -# define slh_dsa_shake_192f_d2i_private_key NULL -# define slh_dsa_shake_192f_d2i_public_key NULL -# define slh_dsa_shake_192f_d2i_key_params NULL -# define slh_dsa_shake_192f_d2i_PKCS8 slh_dsa_d2i_PKCS8 -# define slh_dsa_shake_192f_d2i_PUBKEY slh_dsa_d2i_PUBKEY -# define slh_dsa_shake_192f_free (free_key_fn *)ossl_slh_dsa_key_free -# define slh_dsa_shake_192f_check NULL -# define slh_dsa_shake_192f_adjust NULL - -# define slh_dsa_shake_256s_evp_type EVP_PKEY_SLH_DSA_SHAKE_256S -# define slh_dsa_shake_256s_d2i_private_key NULL -# define slh_dsa_shake_256s_d2i_public_key NULL -# define slh_dsa_shake_256s_d2i_key_params NULL -# define slh_dsa_shake_256s_d2i_PKCS8 slh_dsa_d2i_PKCS8 -# define slh_dsa_shake_256s_d2i_PUBKEY slh_dsa_d2i_PUBKEY -# define slh_dsa_shake_256s_free (free_key_fn *)ossl_slh_dsa_key_free -# define slh_dsa_shake_256s_check NULL -# define slh_dsa_shake_256s_adjust NULL - -# define slh_dsa_shake_256f_evp_type EVP_PKEY_SLH_DSA_SHAKE_256F -# define slh_dsa_shake_256f_d2i_private_key NULL -# define slh_dsa_shake_256f_d2i_public_key NULL -# define slh_dsa_shake_256f_d2i_key_params NULL -# define slh_dsa_shake_256f_d2i_PKCS8 slh_dsa_d2i_PKCS8 -# define slh_dsa_shake_256f_d2i_PUBKEY slh_dsa_d2i_PUBKEY -# define slh_dsa_shake_256f_free (free_key_fn *)ossl_slh_dsa_key_free -# define slh_dsa_shake_256f_check NULL -# define slh_dsa_shake_256f_adjust NULL +#define slh_dsa_sha2_128s_evp_type EVP_PKEY_SLH_DSA_SHA2_128S +#define slh_dsa_sha2_128s_d2i_private_key NULL +#define slh_dsa_sha2_128s_d2i_public_key NULL +#define slh_dsa_sha2_128s_d2i_key_params NULL +#define slh_dsa_sha2_128s_d2i_PKCS8 slh_dsa_d2i_PKCS8 +#define slh_dsa_sha2_128s_d2i_PUBKEY slh_dsa_d2i_PUBKEY +#define slh_dsa_sha2_128s_free (free_key_fn *)ossl_slh_dsa_key_free +#define slh_dsa_sha2_128s_check NULL +#define slh_dsa_sha2_128s_adjust NULL + +#define slh_dsa_sha2_128f_evp_type EVP_PKEY_SLH_DSA_SHA2_128F +#define slh_dsa_sha2_128f_d2i_private_key NULL +#define slh_dsa_sha2_128f_d2i_public_key NULL +#define slh_dsa_sha2_128f_d2i_key_params NULL +#define slh_dsa_sha2_128f_d2i_PKCS8 slh_dsa_d2i_PKCS8 +#define slh_dsa_sha2_128f_d2i_PUBKEY slh_dsa_d2i_PUBKEY +#define slh_dsa_sha2_128f_free (free_key_fn *)ossl_slh_dsa_key_free +#define slh_dsa_sha2_128f_check NULL +#define slh_dsa_sha2_128f_adjust NULL + +#define slh_dsa_sha2_192s_evp_type EVP_PKEY_SLH_DSA_SHA2_192S +#define slh_dsa_sha2_192s_d2i_private_key NULL +#define slh_dsa_sha2_192s_d2i_public_key NULL +#define slh_dsa_sha2_192s_d2i_key_params NULL +#define slh_dsa_sha2_192s_d2i_PKCS8 slh_dsa_d2i_PKCS8 +#define slh_dsa_sha2_192s_d2i_PUBKEY slh_dsa_d2i_PUBKEY +#define slh_dsa_sha2_192s_free (free_key_fn *)ossl_slh_dsa_key_free +#define slh_dsa_sha2_192s_check NULL +#define slh_dsa_sha2_192s_adjust NULL + +#define slh_dsa_sha2_192f_evp_type EVP_PKEY_SLH_DSA_SHA2_192F +#define slh_dsa_sha2_192f_d2i_private_key NULL +#define slh_dsa_sha2_192f_d2i_public_key NULL +#define slh_dsa_sha2_192f_d2i_key_params NULL +#define slh_dsa_sha2_192f_d2i_PKCS8 slh_dsa_d2i_PKCS8 +#define slh_dsa_sha2_192f_d2i_PUBKEY slh_dsa_d2i_PUBKEY +#define slh_dsa_sha2_192f_free (free_key_fn *)ossl_slh_dsa_key_free +#define slh_dsa_sha2_192f_check NULL +#define slh_dsa_sha2_192f_adjust NULL + +#define slh_dsa_sha2_256s_evp_type EVP_PKEY_SLH_DSA_SHA2_256S +#define slh_dsa_sha2_256s_d2i_private_key NULL +#define slh_dsa_sha2_256s_d2i_public_key NULL +#define slh_dsa_sha2_256s_d2i_key_params NULL +#define slh_dsa_sha2_256s_d2i_PKCS8 slh_dsa_d2i_PKCS8 +#define slh_dsa_sha2_256s_d2i_PUBKEY slh_dsa_d2i_PUBKEY +#define slh_dsa_sha2_256s_free (free_key_fn *)ossl_slh_dsa_key_free +#define slh_dsa_sha2_256s_check NULL +#define slh_dsa_sha2_256s_adjust NULL + +#define slh_dsa_sha2_256f_evp_type EVP_PKEY_SLH_DSA_SHA2_256F +#define slh_dsa_sha2_256f_d2i_private_key NULL +#define slh_dsa_sha2_256f_d2i_public_key NULL +#define slh_dsa_sha2_256f_d2i_key_params NULL +#define slh_dsa_sha2_256f_d2i_PKCS8 slh_dsa_d2i_PKCS8 +#define slh_dsa_sha2_256f_d2i_PUBKEY slh_dsa_d2i_PUBKEY +#define slh_dsa_sha2_256f_free (free_key_fn *)ossl_slh_dsa_key_free +#define slh_dsa_sha2_256f_check NULL +#define slh_dsa_sha2_256f_adjust NULL + +#define slh_dsa_shake_128s_evp_type EVP_PKEY_SLH_DSA_SHAKE_128S +#define slh_dsa_shake_128s_d2i_private_key NULL +#define slh_dsa_shake_128s_d2i_public_key NULL +#define slh_dsa_shake_128s_d2i_key_params NULL +#define slh_dsa_shake_128s_d2i_PKCS8 slh_dsa_d2i_PKCS8 +#define slh_dsa_shake_128s_d2i_PUBKEY slh_dsa_d2i_PUBKEY +#define slh_dsa_shake_128s_free (free_key_fn *)ossl_slh_dsa_key_free +#define slh_dsa_shake_128s_check NULL +#define slh_dsa_shake_128s_adjust NULL + +#define slh_dsa_shake_128f_evp_type EVP_PKEY_SLH_DSA_SHAKE_128F +#define slh_dsa_shake_128f_d2i_private_key NULL +#define slh_dsa_shake_128f_d2i_public_key NULL +#define slh_dsa_shake_128f_d2i_key_params NULL +#define slh_dsa_shake_128f_d2i_PKCS8 slh_dsa_d2i_PKCS8 +#define slh_dsa_shake_128f_d2i_PUBKEY slh_dsa_d2i_PUBKEY +#define slh_dsa_shake_128f_free (free_key_fn *)ossl_slh_dsa_key_free +#define slh_dsa_shake_128f_check NULL +#define slh_dsa_shake_128f_adjust NULL + +#define slh_dsa_shake_192s_evp_type EVP_PKEY_SLH_DSA_SHAKE_192S +#define slh_dsa_shake_192s_d2i_private_key NULL +#define slh_dsa_shake_192s_d2i_public_key NULL +#define slh_dsa_shake_192s_d2i_key_params NULL +#define slh_dsa_shake_192s_d2i_PKCS8 slh_dsa_d2i_PKCS8 +#define slh_dsa_shake_192s_d2i_PUBKEY slh_dsa_d2i_PUBKEY +#define slh_dsa_shake_192s_free (free_key_fn *)ossl_slh_dsa_key_free +#define slh_dsa_shake_192s_check NULL +#define slh_dsa_shake_192s_adjust NULL + +#define slh_dsa_shake_192f_evp_type EVP_PKEY_SLH_DSA_SHAKE_192F +#define slh_dsa_shake_192f_d2i_private_key NULL +#define slh_dsa_shake_192f_d2i_public_key NULL +#define slh_dsa_shake_192f_d2i_key_params NULL +#define slh_dsa_shake_192f_d2i_PKCS8 slh_dsa_d2i_PKCS8 +#define slh_dsa_shake_192f_d2i_PUBKEY slh_dsa_d2i_PUBKEY +#define slh_dsa_shake_192f_free (free_key_fn *)ossl_slh_dsa_key_free +#define slh_dsa_shake_192f_check NULL +#define slh_dsa_shake_192f_adjust NULL + +#define slh_dsa_shake_256s_evp_type EVP_PKEY_SLH_DSA_SHAKE_256S +#define slh_dsa_shake_256s_d2i_private_key NULL +#define slh_dsa_shake_256s_d2i_public_key NULL +#define slh_dsa_shake_256s_d2i_key_params NULL +#define slh_dsa_shake_256s_d2i_PKCS8 slh_dsa_d2i_PKCS8 +#define slh_dsa_shake_256s_d2i_PUBKEY slh_dsa_d2i_PUBKEY +#define slh_dsa_shake_256s_free (free_key_fn *)ossl_slh_dsa_key_free +#define slh_dsa_shake_256s_check NULL +#define slh_dsa_shake_256s_adjust NULL + +#define slh_dsa_shake_256f_evp_type EVP_PKEY_SLH_DSA_SHAKE_256F +#define slh_dsa_shake_256f_d2i_private_key NULL +#define slh_dsa_shake_256f_d2i_public_key NULL +#define slh_dsa_shake_256f_d2i_key_params NULL +#define slh_dsa_shake_256f_d2i_PKCS8 slh_dsa_d2i_PKCS8 +#define slh_dsa_shake_256f_d2i_PUBKEY slh_dsa_d2i_PUBKEY +#define slh_dsa_shake_256f_free (free_key_fn *)ossl_slh_dsa_key_free +#define slh_dsa_shake_256f_check NULL +#define slh_dsa_shake_256f_adjust NULL #endif /* OPENSSL_NO_SLH_DSA */ /* ---------------------------------------------------------------------- */ -#define rsa_evp_type EVP_PKEY_RSA -#define rsa_d2i_private_key (d2i_of_void *)d2i_RSAPrivateKey -#define rsa_d2i_public_key (d2i_of_void *)d2i_RSAPublicKey -#define rsa_d2i_key_params NULL -#define rsa_free (free_key_fn *)RSA_free +#define rsa_evp_type EVP_PKEY_RSA +#define rsa_d2i_private_key (d2i_of_void *)d2i_RSAPrivateKey +#define rsa_d2i_public_key (d2i_of_void *)d2i_RSAPublicKey +#define rsa_d2i_key_params NULL +#define rsa_free (free_key_fn *)RSA_free static void *rsa_d2i_PKCS8(const unsigned char **der, long der_len, - struct der2key_ctx_st *ctx) + struct der2key_ctx_st *ctx) { return der2key_decode_p8(der, der_len, ctx, - (key_from_pkcs8_t *)ossl_rsa_key_from_pkcs8); + (key_from_pkcs8_t *)ossl_rsa_key_from_pkcs8); } static void * rsa_d2i_PUBKEY(const unsigned char **der, long der_len, - ossl_unused struct der2key_ctx_st *ctx) + ossl_unused struct der2key_ctx_st *ctx) { return d2i_RSA_PUBKEY(NULL, der, der_len); } @@ -932,15 +929,15 @@ static void rsa_adjust(void *key, struct der2key_ctx_st *ctx) ossl_rsa_set0_libctx(key, PROV_LIBCTX_OF(ctx->provctx)); } -#define rsapss_evp_type EVP_PKEY_RSA_PSS -#define rsapss_d2i_private_key (d2i_of_void *)d2i_RSAPrivateKey -#define rsapss_d2i_public_key (d2i_of_void *)d2i_RSAPublicKey -#define rsapss_d2i_key_params NULL -#define rsapss_d2i_PKCS8 rsa_d2i_PKCS8 -#define rsapss_d2i_PUBKEY rsa_d2i_PUBKEY -#define rsapss_free (free_key_fn *)RSA_free -#define rsapss_check rsa_check -#define rsapss_adjust rsa_adjust +#define rsapss_evp_type EVP_PKEY_RSA_PSS +#define rsapss_d2i_private_key (d2i_of_void *)d2i_RSAPrivateKey +#define rsapss_d2i_public_key (d2i_of_void *)d2i_RSAPublicKey +#define rsapss_d2i_key_params NULL +#define rsapss_d2i_PKCS8 rsa_d2i_PKCS8 +#define rsapss_d2i_PUBKEY rsa_d2i_PUBKEY +#define rsapss_free (free_key_fn *)RSA_free +#define rsapss_check rsa_check +#define rsapss_adjust rsa_adjust /* ---------------------------------------------------------------------- */ @@ -951,53 +948,53 @@ ml_dsa_d2i_PKCS8(const uint8_t **der, long der_len, struct der2key_ctx_st *ctx) ML_DSA_KEY *key; key = ossl_ml_dsa_d2i_PKCS8(*der, der_len, ctx->desc->evp_type, - ctx->provctx, ctx->propq); + ctx->provctx, ctx->propq); if (key != NULL) *der += der_len; return key; } -static ossl_inline void * ml_dsa_d2i_PUBKEY(const uint8_t **der, long der_len, - struct der2key_ctx_st *ctx) +static ossl_inline void *ml_dsa_d2i_PUBKEY(const uint8_t **der, long der_len, + struct der2key_ctx_st *ctx) { ML_DSA_KEY *key; key = ossl_ml_dsa_d2i_PUBKEY(*der, der_len, ctx->desc->evp_type, - ctx->provctx, ctx->propq); + ctx->provctx, ctx->propq); if (key != NULL) *der += der_len; return key; } -# define ml_dsa_44_evp_type EVP_PKEY_ML_DSA_44 -# define ml_dsa_44_d2i_private_key NULL -# define ml_dsa_44_d2i_public_key NULL -# define ml_dsa_44_d2i_key_params NULL -# define ml_dsa_44_d2i_PUBKEY ml_dsa_d2i_PUBKEY -# define ml_dsa_44_d2i_PKCS8 ml_dsa_d2i_PKCS8 -# define ml_dsa_44_free (free_key_fn *)ossl_ml_dsa_key_free -# define ml_dsa_44_check NULL -# define ml_dsa_44_adjust NULL - -# define ml_dsa_65_evp_type EVP_PKEY_ML_DSA_65 -# define ml_dsa_65_d2i_private_key NULL -# define ml_dsa_65_d2i_public_key NULL -# define ml_dsa_65_d2i_key_params NULL -# define ml_dsa_65_d2i_PUBKEY ml_dsa_d2i_PUBKEY -# define ml_dsa_65_d2i_PKCS8 ml_dsa_d2i_PKCS8 -# define ml_dsa_65_free (free_key_fn *)ossl_ml_dsa_key_free -# define ml_dsa_65_check NULL -# define ml_dsa_65_adjust NULL - -# define ml_dsa_87_evp_type EVP_PKEY_ML_DSA_87 -# define ml_dsa_87_d2i_private_key NULL -# define ml_dsa_87_d2i_public_key NULL -# define ml_dsa_87_d2i_PUBKEY ml_dsa_d2i_PUBKEY -# define ml_dsa_87_d2i_PKCS8 ml_dsa_d2i_PKCS8 -# define ml_dsa_87_d2i_key_params NULL -# define ml_dsa_87_free (free_key_fn *)ossl_ml_dsa_key_free -# define ml_dsa_87_check NULL -# define ml_dsa_87_adjust NULL +#define ml_dsa_44_evp_type EVP_PKEY_ML_DSA_44 +#define ml_dsa_44_d2i_private_key NULL +#define ml_dsa_44_d2i_public_key NULL +#define ml_dsa_44_d2i_key_params NULL +#define ml_dsa_44_d2i_PUBKEY ml_dsa_d2i_PUBKEY +#define ml_dsa_44_d2i_PKCS8 ml_dsa_d2i_PKCS8 +#define ml_dsa_44_free (free_key_fn *)ossl_ml_dsa_key_free +#define ml_dsa_44_check NULL +#define ml_dsa_44_adjust NULL + +#define ml_dsa_65_evp_type EVP_PKEY_ML_DSA_65 +#define ml_dsa_65_d2i_private_key NULL +#define ml_dsa_65_d2i_public_key NULL +#define ml_dsa_65_d2i_key_params NULL +#define ml_dsa_65_d2i_PUBKEY ml_dsa_d2i_PUBKEY +#define ml_dsa_65_d2i_PKCS8 ml_dsa_d2i_PKCS8 +#define ml_dsa_65_free (free_key_fn *)ossl_ml_dsa_key_free +#define ml_dsa_65_check NULL +#define ml_dsa_65_adjust NULL + +#define ml_dsa_87_evp_type EVP_PKEY_ML_DSA_87 +#define ml_dsa_87_d2i_private_key NULL +#define ml_dsa_87_d2i_public_key NULL +#define ml_dsa_87_d2i_PUBKEY ml_dsa_d2i_PUBKEY +#define ml_dsa_87_d2i_PKCS8 ml_dsa_d2i_PKCS8 +#define ml_dsa_87_d2i_key_params NULL +#define ml_dsa_87_free (free_key_fn *)ossl_ml_dsa_key_free +#define ml_dsa_87_check NULL +#define ml_dsa_87_adjust NULL #endif @@ -1007,162 +1004,162 @@ static ossl_inline void * ml_dsa_d2i_PUBKEY(const uint8_t **der, long der_len, * The DO_ macros help define the selection mask and the method functions * for each kind of object we want to decode. */ -#define DO_type_specific_keypair(keytype) \ - "type-specific", keytype##_evp_type, \ - ( OSSL_KEYMGMT_SELECT_KEYPAIR ), \ - keytype##_d2i_private_key, \ - keytype##_d2i_public_key, \ - NULL, \ - NULL, \ - NULL, \ - keytype##_check, \ - keytype##_adjust, \ +#define DO_type_specific_keypair(keytype) \ + "type-specific", keytype##_evp_type, \ + (OSSL_KEYMGMT_SELECT_KEYPAIR), \ + keytype##_d2i_private_key, \ + keytype##_d2i_public_key, \ + NULL, \ + NULL, \ + NULL, \ + keytype##_check, \ + keytype##_adjust, \ keytype##_free -#define DO_type_specific_pub(keytype) \ - "type-specific", keytype##_evp_type, \ - ( OSSL_KEYMGMT_SELECT_PUBLIC_KEY ), \ - NULL, \ - keytype##_d2i_public_key, \ - NULL, \ - NULL, \ - NULL, \ - keytype##_check, \ - keytype##_adjust, \ +#define DO_type_specific_pub(keytype) \ + "type-specific", keytype##_evp_type, \ + (OSSL_KEYMGMT_SELECT_PUBLIC_KEY), \ + NULL, \ + keytype##_d2i_public_key, \ + NULL, \ + NULL, \ + NULL, \ + keytype##_check, \ + keytype##_adjust, \ keytype##_free -#define DO_type_specific_priv(keytype) \ - "type-specific", keytype##_evp_type, \ - ( OSSL_KEYMGMT_SELECT_PRIVATE_KEY ), \ - keytype##_d2i_private_key, \ - NULL, \ - NULL, \ - NULL, \ - NULL, \ - keytype##_check, \ - keytype##_adjust, \ +#define DO_type_specific_priv(keytype) \ + "type-specific", keytype##_evp_type, \ + (OSSL_KEYMGMT_SELECT_PRIVATE_KEY), \ + keytype##_d2i_private_key, \ + NULL, \ + NULL, \ + NULL, \ + NULL, \ + keytype##_check, \ + keytype##_adjust, \ keytype##_free -#define DO_type_specific_params(keytype) \ - "type-specific", keytype##_evp_type, \ - ( OSSL_KEYMGMT_SELECT_ALL_PARAMETERS ), \ - NULL, \ - NULL, \ - keytype##_d2i_key_params, \ - NULL, \ - NULL, \ - keytype##_check, \ - keytype##_adjust, \ +#define DO_type_specific_params(keytype) \ + "type-specific", keytype##_evp_type, \ + (OSSL_KEYMGMT_SELECT_ALL_PARAMETERS), \ + NULL, \ + NULL, \ + keytype##_d2i_key_params, \ + NULL, \ + NULL, \ + keytype##_check, \ + keytype##_adjust, \ keytype##_free -#define DO_type_specific(keytype) \ - "type-specific", keytype##_evp_type, \ - ( OSSL_KEYMGMT_SELECT_ALL ), \ - keytype##_d2i_private_key, \ - keytype##_d2i_public_key, \ - keytype##_d2i_key_params, \ - NULL, \ - NULL, \ - keytype##_check, \ - keytype##_adjust, \ +#define DO_type_specific(keytype) \ + "type-specific", keytype##_evp_type, \ + (OSSL_KEYMGMT_SELECT_ALL), \ + keytype##_d2i_private_key, \ + keytype##_d2i_public_key, \ + keytype##_d2i_key_params, \ + NULL, \ + NULL, \ + keytype##_check, \ + keytype##_adjust, \ keytype##_free -#define DO_type_specific_no_pub(keytype) \ - "type-specific", keytype##_evp_type, \ - ( OSSL_KEYMGMT_SELECT_PRIVATE_KEY \ - | OSSL_KEYMGMT_SELECT_ALL_PARAMETERS ), \ - keytype##_d2i_private_key, \ - NULL, \ - keytype##_d2i_key_params, \ - NULL, \ - NULL, \ - keytype##_check, \ - keytype##_adjust, \ +#define DO_type_specific_no_pub(keytype) \ + "type-specific", keytype##_evp_type, \ + (OSSL_KEYMGMT_SELECT_PRIVATE_KEY \ + | OSSL_KEYMGMT_SELECT_ALL_PARAMETERS), \ + keytype##_d2i_private_key, \ + NULL, \ + keytype##_d2i_key_params, \ + NULL, \ + NULL, \ + keytype##_check, \ + keytype##_adjust, \ keytype##_free -#define DO_PrivateKeyInfo(keytype) \ - "PrivateKeyInfo", keytype##_evp_type, \ - ( OSSL_KEYMGMT_SELECT_PRIVATE_KEY ), \ - NULL, \ - NULL, \ - NULL, \ - keytype##_d2i_PKCS8, \ - NULL, \ - keytype##_check, \ - keytype##_adjust, \ +#define DO_PrivateKeyInfo(keytype) \ + "PrivateKeyInfo", keytype##_evp_type, \ + (OSSL_KEYMGMT_SELECT_PRIVATE_KEY), \ + NULL, \ + NULL, \ + NULL, \ + keytype##_d2i_PKCS8, \ + NULL, \ + keytype##_check, \ + keytype##_adjust, \ keytype##_free -#define DO_SubjectPublicKeyInfo(keytype) \ - "SubjectPublicKeyInfo", keytype##_evp_type, \ - ( OSSL_KEYMGMT_SELECT_PUBLIC_KEY ), \ - NULL, \ - NULL, \ - NULL, \ - NULL, \ - keytype##_d2i_PUBKEY, \ - keytype##_check, \ - keytype##_adjust, \ +#define DO_SubjectPublicKeyInfo(keytype) \ + "SubjectPublicKeyInfo", keytype##_evp_type, \ + (OSSL_KEYMGMT_SELECT_PUBLIC_KEY), \ + NULL, \ + NULL, \ + NULL, \ + NULL, \ + keytype##_d2i_PUBKEY, \ + keytype##_check, \ + keytype##_adjust, \ keytype##_free -#define DO_DH(keytype) \ - "DH", keytype##_evp_type, \ - ( OSSL_KEYMGMT_SELECT_ALL_PARAMETERS ), \ - NULL, \ - NULL, \ - keytype##_d2i_key_params, \ - NULL, \ - NULL, \ - keytype##_check, \ - keytype##_adjust, \ +#define DO_DH(keytype) \ + "DH", keytype##_evp_type, \ + (OSSL_KEYMGMT_SELECT_ALL_PARAMETERS), \ + NULL, \ + NULL, \ + keytype##_d2i_key_params, \ + NULL, \ + NULL, \ + keytype##_check, \ + keytype##_adjust, \ keytype##_free -#define DO_DHX(keytype) \ - "DHX", keytype##_evp_type, \ - ( OSSL_KEYMGMT_SELECT_ALL_PARAMETERS ), \ - NULL, \ - NULL, \ - keytype##_d2i_key_params, \ - NULL, \ - NULL, \ - keytype##_check, \ - keytype##_adjust, \ +#define DO_DHX(keytype) \ + "DHX", keytype##_evp_type, \ + (OSSL_KEYMGMT_SELECT_ALL_PARAMETERS), \ + NULL, \ + NULL, \ + keytype##_d2i_key_params, \ + NULL, \ + NULL, \ + keytype##_check, \ + keytype##_adjust, \ keytype##_free -#define DO_DSA(keytype) \ - "DSA", keytype##_evp_type, \ - ( OSSL_KEYMGMT_SELECT_ALL ), \ - keytype##_d2i_private_key, \ - keytype##_d2i_public_key, \ - keytype##_d2i_key_params, \ - NULL, \ - NULL, \ - keytype##_check, \ - keytype##_adjust, \ +#define DO_DSA(keytype) \ + "DSA", keytype##_evp_type, \ + (OSSL_KEYMGMT_SELECT_ALL), \ + keytype##_d2i_private_key, \ + keytype##_d2i_public_key, \ + keytype##_d2i_key_params, \ + NULL, \ + NULL, \ + keytype##_check, \ + keytype##_adjust, \ keytype##_free -#define DO_EC(keytype) \ - "EC", keytype##_evp_type, \ - ( OSSL_KEYMGMT_SELECT_PRIVATE_KEY \ - | OSSL_KEYMGMT_SELECT_ALL_PARAMETERS ), \ - keytype##_d2i_private_key, \ - NULL, \ - keytype##_d2i_key_params, \ - NULL, \ - NULL, \ - keytype##_check, \ - keytype##_adjust, \ +#define DO_EC(keytype) \ + "EC", keytype##_evp_type, \ + (OSSL_KEYMGMT_SELECT_PRIVATE_KEY \ + | OSSL_KEYMGMT_SELECT_ALL_PARAMETERS), \ + keytype##_d2i_private_key, \ + NULL, \ + keytype##_d2i_key_params, \ + NULL, \ + NULL, \ + keytype##_check, \ + keytype##_adjust, \ keytype##_free -#define DO_RSA(keytype) \ - "RSA", keytype##_evp_type, \ - ( OSSL_KEYMGMT_SELECT_KEYPAIR ), \ - keytype##_d2i_private_key, \ - keytype##_d2i_public_key, \ - NULL, \ - NULL, \ - NULL, \ - keytype##_check, \ - keytype##_adjust, \ +#define DO_RSA(keytype) \ + "RSA", keytype##_evp_type, \ + (OSSL_KEYMGMT_SELECT_KEYPAIR), \ + keytype##_d2i_private_key, \ + keytype##_d2i_public_key, \ + NULL, \ + NULL, \ + NULL, \ + keytype##_check, \ + keytype##_adjust, \ keytype##_free /* @@ -1182,41 +1179,41 @@ static ossl_inline void * ml_dsa_d2i_PUBKEY(const uint8_t **der, long der_len, * the DO_##kind macros above, to populate the keytype_desc_st * structure. */ -#define MAKE_DECODER(keytype_name, keytype, type, kind) \ - static const struct keytype_desc_st kind##_##keytype##_desc = \ - { keytype_name, ossl_##keytype##_keymgmt_functions, \ - DO_##kind(keytype) }; \ - \ - static OSSL_FUNC_decoder_newctx_fn kind##_der2##keytype##_newctx; \ - \ - static void *kind##_der2##keytype##_newctx(void *provctx) \ - { \ - return der2key_newctx(provctx, &kind##_##keytype##_desc); \ - } \ - static int kind##_der2##keytype##_does_selection(void *provctx, \ - int selection) \ - { \ - return der2key_check_selection(selection, \ - &kind##_##keytype##_desc); \ - } \ - const OSSL_DISPATCH \ - ossl_##kind##_der_to_##keytype##_decoder_functions[] = { \ - { OSSL_FUNC_DECODER_NEWCTX, \ - (void (*)(void))kind##_der2##keytype##_newctx }, \ - { OSSL_FUNC_DECODER_FREECTX, \ - (void (*)(void))der2key_freectx }, \ - { OSSL_FUNC_DECODER_DOES_SELECTION, \ - (void (*)(void))kind##_der2##keytype##_does_selection }, \ - { OSSL_FUNC_DECODER_DECODE, \ - (void (*)(void))der2key_decode }, \ - { OSSL_FUNC_DECODER_EXPORT_OBJECT, \ - (void (*)(void))der2key_export_object }, \ - { OSSL_FUNC_DECODER_SETTABLE_CTX_PARAMS, \ - (void (*)(void))der2key_settable_ctx_params }, \ - { OSSL_FUNC_DECODER_SET_CTX_PARAMS, \ - (void (*)(void))der2key_set_ctx_params }, \ - OSSL_DISPATCH_END \ - } +#define MAKE_DECODER(keytype_name, keytype, type, kind) \ + static const struct keytype_desc_st kind##_##keytype##_desc = { keytype_name, ossl_##keytype##_keymgmt_functions, \ + DO_##kind(keytype) }; \ + \ + static OSSL_FUNC_decoder_newctx_fn kind##_der2##keytype##_newctx; \ + \ + static void *kind##_der2##keytype##_newctx(void *provctx) \ + { \ + return der2key_newctx(provctx, &kind##_##keytype##_desc); \ + } \ + static int kind##_der2##keytype##_does_selection(void *provctx, \ + int selection) \ + { \ + return der2key_check_selection(selection, \ + &kind##_##keytype##_desc); \ + } \ + const OSSL_DISPATCH \ + ossl_##kind##_der_to_##keytype##_decoder_functions[] \ + = { \ + { OSSL_FUNC_DECODER_NEWCTX, \ + (void (*)(void))kind##_der2##keytype##_newctx }, \ + { OSSL_FUNC_DECODER_FREECTX, \ + (void (*)(void))der2key_freectx }, \ + { OSSL_FUNC_DECODER_DOES_SELECTION, \ + (void (*)(void))kind##_der2##keytype##_does_selection }, \ + { OSSL_FUNC_DECODER_DECODE, \ + (void (*)(void))der2key_decode }, \ + { OSSL_FUNC_DECODER_EXPORT_OBJECT, \ + (void (*)(void))der2key_export_object }, \ + { OSSL_FUNC_DECODER_SETTABLE_CTX_PARAMS, \ + (void (*)(void))der2key_settable_ctx_params }, \ + { OSSL_FUNC_DECODER_SET_CTX_PARAMS, \ + (void (*)(void))der2key_set_ctx_params }, \ + OSSL_DISPATCH_END \ + } #ifndef OPENSSL_NO_DH MAKE_DECODER("DH", dh, dh, PrivateKeyInfo); @@ -1239,7 +1236,7 @@ MAKE_DECODER("EC", ec, ec, PrivateKeyInfo); MAKE_DECODER("EC", ec, ec, SubjectPublicKeyInfo); MAKE_DECODER("EC", ec, ec, type_specific_no_pub); MAKE_DECODER("EC", ec, ec, EC); -# ifndef OPENSSL_NO_ECX +#ifndef OPENSSL_NO_ECX MAKE_DECODER("X25519", x25519, ecx, PrivateKeyInfo); MAKE_DECODER("X25519", x25519, ecx, SubjectPublicKeyInfo); MAKE_DECODER("X448", x448, ecx, PrivateKeyInfo); @@ -1248,12 +1245,12 @@ MAKE_DECODER("ED25519", ed25519, ecx, PrivateKeyInfo); MAKE_DECODER("ED25519", ed25519, ecx, SubjectPublicKeyInfo); MAKE_DECODER("ED448", ed448, ecx, PrivateKeyInfo); MAKE_DECODER("ED448", ed448, ecx, SubjectPublicKeyInfo); -# endif -# ifndef OPENSSL_NO_SM2 +#endif +#ifndef OPENSSL_NO_SM2 MAKE_DECODER("SM2", sm2, ec, PrivateKeyInfo); MAKE_DECODER("SM2", sm2, ec, SubjectPublicKeyInfo); MAKE_DECODER("SM2", sm2, sm2, type_specific_no_pub); -# endif +#endif #endif #ifndef OPENSSL_NO_ML_KEM MAKE_DECODER("ML-KEM-512", ml_kem_512, ml_kem_512, PrivateKeyInfo); diff --git a/crypto/openssl/providers/implementations/encode_decode/decode_epki2pki.c b/crypto/openssl/providers/implementations/encode_decode/decode_epki2pki.c index aecf2eb4f2b4..2f472597978c 100644 --- a/crypto/openssl/providers/implementations/encode_decode/decode_epki2pki.c +++ b/crypto/openssl/providers/implementations/encode_decode/decode_epki2pki.c @@ -82,8 +82,8 @@ static int epki2pki_set_ctx_params(void *vctx, const OSSL_PARAM params[]) * PrivateKeyInfo. */ static int epki2pki_decode(void *vctx, OSSL_CORE_BIO *cin, int selection, - OSSL_CALLBACK *data_cb, void *data_cbarg, - OSSL_PASSPHRASE_CALLBACK *pw_cb, void *pw_cbarg) + OSSL_CALLBACK *data_cb, void *data_cbarg, + OSSL_PASSPHRASE_CALLBACK *pw_cb, void *pw_cbarg) { struct epki2pki_ctx_st *ctx = vctx; BUF_MEM *mem = NULL; @@ -107,23 +107,23 @@ static int epki2pki_decode(void *vctx, OSSL_CORE_BIO *cin, int selection, OPENSSL_free(mem); ok = ossl_epki2pki_der_decode(der, der_len, selection, data_cb, data_cbarg, - pw_cb, pw_cbarg, PROV_LIBCTX_OF(ctx->provctx), - ctx->propq); + pw_cb, pw_cbarg, PROV_LIBCTX_OF(ctx->provctx), + ctx->propq); OPENSSL_free(der); return ok; } int ossl_epki2pki_der_decode(unsigned char *der, long der_len, int selection, - OSSL_CALLBACK *data_cb, void *data_cbarg, - OSSL_PASSPHRASE_CALLBACK *pw_cb, void *pw_cbarg, - OSSL_LIB_CTX *libctx, const char *propq) + OSSL_CALLBACK *data_cb, void *data_cbarg, + OSSL_PASSPHRASE_CALLBACK *pw_cb, void *pw_cbarg, + OSSL_LIB_CTX *libctx, const char *propq) { const unsigned char *pder = der; unsigned char *new_der = NULL; X509_SIG *p8 = NULL; PKCS8_PRIV_KEY_INFO *p8inf = NULL; const X509_ALGOR *alg = NULL; - int ok = 1; /* Assume good */ + int ok = 1; /* Assume good */ ERR_set_mark(); if ((p8 = d2i_X509_SIG(NULL, &pder, der_len)) != NULL) { @@ -141,9 +141,9 @@ int ossl_epki2pki_der_decode(unsigned char *der, long der_len, int selection, X509_SIG_get0(p8, &alg, &oct); if (!PKCS12_pbe_crypt_ex(alg, pbuf, plen, - oct->data, oct->length, - &new_der, &new_der_len, 0, - libctx, propq)) { + oct->data, oct->length, + &new_der, &new_der_len, 0, + libctx, propq)) { ok = 0; } else { der = new_der; @@ -173,13 +173,13 @@ int ossl_epki2pki_der_decode(unsigned char *der, long der_len, int selection, OBJ_obj2txt(keytype, sizeof(keytype), alg->algorithm, 0); *p++ = OSSL_PARAM_construct_utf8_string(OSSL_OBJECT_PARAM_DATA_TYPE, - keytype, 0); + keytype, 0); *p++ = OSSL_PARAM_construct_utf8_string(OSSL_OBJECT_PARAM_INPUT_TYPE, - "DER", 0); + "DER", 0); *p++ = OSSL_PARAM_construct_utf8_string(OSSL_OBJECT_PARAM_DATA_STRUCTURE, - "PrivateKeyInfo", 0); + "PrivateKeyInfo", 0); *p++ = OSSL_PARAM_construct_octet_string(OSSL_OBJECT_PARAM_DATA, - der, der_len); + der, der_len); *p++ = OSSL_PARAM_construct_int(OSSL_OBJECT_PARAM_TYPE, &objtype); *p = OSSL_PARAM_construct_end(); @@ -195,8 +195,8 @@ const OSSL_DISPATCH ossl_EncryptedPrivateKeyInfo_der_to_der_decoder_functions[] { OSSL_FUNC_DECODER_FREECTX, (void (*)(void))epki2pki_freectx }, { OSSL_FUNC_DECODER_DECODE, (void (*)(void))epki2pki_decode }, { OSSL_FUNC_DECODER_SETTABLE_CTX_PARAMS, - (void (*)(void))epki2pki_settable_ctx_params }, + (void (*)(void))epki2pki_settable_ctx_params }, { OSSL_FUNC_DECODER_SET_CTX_PARAMS, - (void (*)(void))epki2pki_set_ctx_params }, + (void (*)(void))epki2pki_set_ctx_params }, OSSL_DISPATCH_END }; diff --git a/crypto/openssl/providers/implementations/encode_decode/decode_msblob2key.c b/crypto/openssl/providers/implementations/encode_decode/decode_msblob2key.c index df327210f114..87e532acc407 100644 --- a/crypto/openssl/providers/implementations/encode_decode/decode_msblob2key.c +++ b/crypto/openssl/providers/implementations/encode_decode/decode_msblob2key.c @@ -20,24 +20,24 @@ #include <openssl/core_object.h> #include <openssl/crypto.h> #include <openssl/params.h> -#include <openssl/pem.h> /* For public PVK functions */ +#include <openssl/pem.h> /* For public PVK functions */ #include <openssl/x509.h> #include <openssl/err.h> #include "internal/passphrase.h" -#include "crypto/pem.h" /* For internal PVK and "blob" headers */ +#include "crypto/pem.h" /* For internal PVK and "blob" headers */ #include "crypto/rsa.h" #include "prov/bio.h" #include "prov/implementations.h" #include "endecoder_local.h" -struct msblob2key_ctx_st; /* Forward declaration */ +struct msblob2key_ctx_st; /* Forward declaration */ typedef void *b2i_of_void_fn(const unsigned char **in, unsigned int bitlen, - int ispub); + int ispub); typedef void adjust_key_fn(void *, struct msblob2key_ctx_st *ctx); typedef void free_key_fn(void *); struct keytype_desc_st { - int type; /* EVP key type */ - const char *name; /* Keytype */ + int type; /* EVP key type */ + const char *name; /* Keytype */ const OSSL_DISPATCH *fns; /* Keymgmt (to pilfer functions from) */ b2i_of_void_fn *read_private_key; @@ -84,16 +84,15 @@ static int msblob2key_does_selection(void *provctx, int selection) if (selection == 0) return 1; - if ((selection & (OSSL_KEYMGMT_SELECT_PRIVATE_KEY - | OSSL_KEYMGMT_SELECT_PUBLIC_KEY)) != 0) + if ((selection & (OSSL_KEYMGMT_SELECT_PRIVATE_KEY | OSSL_KEYMGMT_SELECT_PUBLIC_KEY)) != 0) return 1; return 0; } static int msblob2key_decode(void *vctx, OSSL_CORE_BIO *cin, int selection, - OSSL_CALLBACK *data_cb, void *data_cbarg, - OSSL_PASSPHRASE_CALLBACK *pw_cb, void *pw_cbarg) + OSSL_CALLBACK *data_cb, void *data_cbarg, + OSSL_PASSPHRASE_CALLBACK *pw_cb, void *pw_cbarg) { struct msblob2key_ctx_st *ctx = vctx; BIO *in = ossl_bio_new_from_core_bio(ctx->provctx, cin); @@ -120,7 +119,7 @@ static int msblob2key_decode(void *vctx, OSSL_CORE_BIO *cin, int selection, goto next; ctx->selection = selection; - ok = 0; /* Assume that we fail */ + ok = 0; /* Assume that we fail */ if ((isdss && ctx->desc->type != EVP_PKEY_DSA) || (!isdss && ctx->desc->type != EVP_PKEY_RSA)) @@ -141,7 +140,7 @@ static int msblob2key_decode(void *vctx, OSSL_CORE_BIO *cin, int selection, } if ((selection == 0 - || (selection & OSSL_KEYMGMT_SELECT_PRIVATE_KEY) != 0) + || (selection & OSSL_KEYMGMT_SELECT_PRIVATE_KEY) != 0) && !ispub && ctx->desc->read_private_key != NULL) { struct ossl_passphrase_data_st pwdata; @@ -154,8 +153,7 @@ static int msblob2key_decode(void *vctx, OSSL_CORE_BIO *cin, int selection, if (selection != 0 && key == NULL) goto next; } - if (key == NULL && (selection == 0 - || (selection & OSSL_KEYMGMT_SELECT_PUBLIC_KEY) != 0) + if (key == NULL && (selection == 0 || (selection & OSSL_KEYMGMT_SELECT_PUBLIC_KEY) != 0) && ispub && ctx->desc->read_public_key != NULL) { p = buf; @@ -167,7 +165,7 @@ static int msblob2key_decode(void *vctx, OSSL_CORE_BIO *cin, int selection, if (key != NULL && ctx->desc->adjust_key != NULL) ctx->desc->adjust_key(key, ctx); - next: +next: /* * Indicated that we successfully decoded something, or not at all. * Ending up "empty handed" is not an error. @@ -188,21 +186,18 @@ static int msblob2key_decode(void *vctx, OSSL_CORE_BIO *cin, int selection, OSSL_PARAM params[4]; int object_type = OSSL_OBJECT_PKEY; - params[0] = - OSSL_PARAM_construct_int(OSSL_OBJECT_PARAM_TYPE, &object_type); - params[1] = - OSSL_PARAM_construct_utf8_string(OSSL_OBJECT_PARAM_DATA_TYPE, - (char *)ctx->desc->name, 0); + params[0] = OSSL_PARAM_construct_int(OSSL_OBJECT_PARAM_TYPE, &object_type); + params[1] = OSSL_PARAM_construct_utf8_string(OSSL_OBJECT_PARAM_DATA_TYPE, + (char *)ctx->desc->name, 0); /* The address of the key becomes the octet string */ - params[2] = - OSSL_PARAM_construct_octet_string(OSSL_OBJECT_PARAM_REFERENCE, - &key, sizeof(key)); + params[2] = OSSL_PARAM_construct_octet_string(OSSL_OBJECT_PARAM_REFERENCE, + &key, sizeof(key)); params[3] = OSSL_PARAM_construct_end(); ok = data_cb(params, data_cbarg); } - end: +end: BIO_free(in); OPENSSL_free(buf); ctx->desc->free_key(key); @@ -212,12 +207,11 @@ static int msblob2key_decode(void *vctx, OSSL_CORE_BIO *cin, int selection, static int msblob2key_export_object(void *vctx, - const void *reference, size_t reference_sz, - OSSL_CALLBACK *export_cb, void *export_cbarg) + const void *reference, size_t reference_sz, + OSSL_CALLBACK *export_cb, void *export_cbarg) { struct msblob2key_ctx_st *ctx = vctx; - OSSL_FUNC_keymgmt_export_fn *export = - ossl_prov_get_keymgmt_export(ctx->desc->fns); + OSSL_FUNC_keymgmt_export_fn *export = ossl_prov_get_keymgmt_export(ctx->desc->fns); void *keydata; if (reference_sz == sizeof(keydata) && export != NULL) { @@ -235,53 +229,54 @@ msblob2key_export_object(void *vctx, /* ---------------------------------------------------------------------- */ -#define dsa_decode_private_key (b2i_of_void_fn *)ossl_b2i_DSA_after_header -#define dsa_decode_public_key (b2i_of_void_fn *)ossl_b2i_DSA_after_header -#define dsa_adjust NULL -#define dsa_free (void (*)(void *))DSA_free +#define dsa_decode_private_key (b2i_of_void_fn *)ossl_b2i_DSA_after_header +#define dsa_decode_public_key (b2i_of_void_fn *)ossl_b2i_DSA_after_header +#define dsa_adjust NULL +#define dsa_free (void (*)(void *)) DSA_free /* ---------------------------------------------------------------------- */ -#define rsa_decode_private_key (b2i_of_void_fn *)ossl_b2i_RSA_after_header -#define rsa_decode_public_key (b2i_of_void_fn *)ossl_b2i_RSA_after_header +#define rsa_decode_private_key (b2i_of_void_fn *)ossl_b2i_RSA_after_header +#define rsa_decode_public_key (b2i_of_void_fn *)ossl_b2i_RSA_after_header static void rsa_adjust(void *key, struct msblob2key_ctx_st *ctx) { ossl_rsa_set0_libctx(key, PROV_LIBCTX_OF(ctx->provctx)); } -#define rsa_free (void (*)(void *))RSA_free +#define rsa_free (void (*)(void *)) RSA_free /* ---------------------------------------------------------------------- */ -#define IMPLEMENT_MSBLOB(KEYTYPE, keytype) \ - static const struct keytype_desc_st mstype##2##keytype##_desc = { \ - EVP_PKEY_##KEYTYPE, #KEYTYPE, \ - ossl_##keytype##_keymgmt_functions, \ - keytype##_decode_private_key, \ - keytype##_decode_public_key, \ - keytype##_adjust, \ - keytype##_free \ - }; \ - static OSSL_FUNC_decoder_newctx_fn msblob2##keytype##_newctx; \ - static void *msblob2##keytype##_newctx(void *provctx) \ - { \ - return msblob2key_newctx(provctx, &mstype##2##keytype##_desc); \ - } \ - const OSSL_DISPATCH \ - ossl_msblob_to_##keytype##_decoder_functions[] = { \ - { OSSL_FUNC_DECODER_NEWCTX, \ - (void (*)(void))msblob2##keytype##_newctx }, \ - { OSSL_FUNC_DECODER_FREECTX, \ - (void (*)(void))msblob2key_freectx }, \ - { OSSL_FUNC_DECODER_DOES_SELECTION, \ - (void (*)(void))msblob2key_does_selection }, \ - { OSSL_FUNC_DECODER_DECODE, \ - (void (*)(void))msblob2key_decode }, \ - { OSSL_FUNC_DECODER_EXPORT_OBJECT, \ - (void (*)(void))msblob2key_export_object }, \ - OSSL_DISPATCH_END \ - } +#define IMPLEMENT_MSBLOB(KEYTYPE, keytype) \ + static const struct keytype_desc_st mstype##2##keytype##_desc = { \ + EVP_PKEY_##KEYTYPE, #KEYTYPE, \ + ossl_##keytype##_keymgmt_functions, \ + keytype##_decode_private_key, \ + keytype##_decode_public_key, \ + keytype##_adjust, \ + keytype##_free \ + }; \ + static OSSL_FUNC_decoder_newctx_fn msblob2##keytype##_newctx; \ + static void *msblob2##keytype##_newctx(void *provctx) \ + { \ + return msblob2key_newctx(provctx, &mstype##2##keytype##_desc); \ + } \ + const OSSL_DISPATCH \ + ossl_msblob_to_##keytype##_decoder_functions[] \ + = { \ + { OSSL_FUNC_DECODER_NEWCTX, \ + (void (*)(void))msblob2##keytype##_newctx }, \ + { OSSL_FUNC_DECODER_FREECTX, \ + (void (*)(void))msblob2key_freectx }, \ + { OSSL_FUNC_DECODER_DOES_SELECTION, \ + (void (*)(void))msblob2key_does_selection }, \ + { OSSL_FUNC_DECODER_DECODE, \ + (void (*)(void))msblob2key_decode }, \ + { OSSL_FUNC_DECODER_EXPORT_OBJECT, \ + (void (*)(void))msblob2key_export_object }, \ + OSSL_DISPATCH_END \ + } #ifndef OPENSSL_NO_DSA IMPLEMENT_MSBLOB(DSA, dsa); diff --git a/crypto/openssl/providers/implementations/encode_decode/decode_pem2der.c b/crypto/openssl/providers/implementations/encode_decode/decode_pem2der.c index a38c71883dd1..7a8e35004d46 100644 --- a/crypto/openssl/providers/implementations/encode_decode/decode_pem2der.c +++ b/crypto/openssl/providers/implementations/encode_decode/decode_pem2der.c @@ -31,8 +31,8 @@ #include "endecoder_local.h" static int read_pem(PROV_CTX *provctx, OSSL_CORE_BIO *cin, - char **pem_name, char **pem_header, - unsigned char **data, long *len) + char **pem_name, char **pem_header, + unsigned char **data, long *len) { BIO *in = ossl_bio_new_from_core_bio(provctx, cin); int ok; @@ -124,8 +124,8 @@ static int pem2der_pass_helper(char *buf, int num, int w, void *data) } static int pem2der_decode(void *vctx, OSSL_CORE_BIO *cin, int selection, - OSSL_CALLBACK *data_cb, void *data_cbarg, - OSSL_PASSPHRASE_CALLBACK *pw_cb, void *pw_cbarg) + OSSL_CALLBACK *data_cb, void *data_cbarg, + OSSL_PASSPHRASE_CALLBACK *pw_cb, void *pw_cbarg) { /* * PEM names we recognise. Other PEM names should be recognised by @@ -175,7 +175,8 @@ static int pem2der_decode(void *vctx, OSSL_CORE_BIO *cin, int selection, int objtype = OSSL_OBJECT_UNKNOWN; ok = read_pem(ctx->provctx, cin, &pem_name, &pem_header, - &der, &der_len) > 0; + &der, &der_len) + > 0; /* We return "empty handed". This is not an error. */ if (!ok) return 1; @@ -190,12 +191,12 @@ static int pem2der_decode(void *vctx, OSSL_CORE_BIO *cin, int selection, EVP_CIPHER_INFO cipher; struct pem2der_pass_data_st pass_data; - ok = 0; /* Assume that we fail */ + ok = 0; /* Assume that we fail */ pass_data.cb = pw_cb; pass_data.cbarg = pw_cbarg; if (!PEM_get_EVP_CIPHER_INFO(pem_header, &cipher) || !PEM_do_header(&cipher, der, &der_len, - pem2der_pass_helper, &pass_data)) + pem2der_pass_helper, &pass_data)) goto end; } @@ -225,9 +226,9 @@ static int pem2der_decode(void *vctx, OSSL_CORE_BIO *cin, int selection, || OPENSSL_strcasecmp(ctx->data_structure, "EncryptedPrivateKeyInfo") == 0 || OPENSSL_strcasecmp(ctx->data_structure, "PrivateKeyInfo") == 0)) { ok = ossl_epki2pki_der_decode(der, der_len, selection, data_cb, - data_cbarg, pw_cb, pw_cbarg, - PROV_LIBCTX_OF(ctx->provctx), - ctx->propq); + data_cbarg, pw_cb, pw_cbarg, + PROV_LIBCTX_OF(ctx->provctx), + ctx->propq); goto end; } @@ -235,35 +236,31 @@ static int pem2der_decode(void *vctx, OSSL_CORE_BIO *cin, int selection, && ((selection & OSSL_KEYMGMT_SELECT_PUBLIC_KEY) || OPENSSL_strcasecmp(ctx->data_structure, "SubjectPublicKeyInfo") == 0)) { ok = ossl_spki2typespki_der_decode(der, der_len, selection, data_cb, - data_cbarg, pw_cb, pw_cbarg, - PROV_LIBCTX_OF(ctx->provctx), - ctx->propq); + data_cbarg, pw_cb, pw_cbarg, + PROV_LIBCTX_OF(ctx->provctx), + ctx->propq); goto end; } objtype = pem_name_map[i].object_type; if (data_type != NULL) - *p++ = - OSSL_PARAM_construct_utf8_string(OSSL_OBJECT_PARAM_DATA_TYPE, - data_type, 0); + *p++ = OSSL_PARAM_construct_utf8_string(OSSL_OBJECT_PARAM_DATA_TYPE, + data_type, 0); /* We expect this to be read only so casting away the const is ok */ if (data_structure != NULL) - *p++ = - OSSL_PARAM_construct_utf8_string(OSSL_OBJECT_PARAM_DATA_STRUCTURE, - data_structure, 0); - *p++ = - OSSL_PARAM_construct_octet_string(OSSL_OBJECT_PARAM_DATA, - der, der_len); - *p++ = - OSSL_PARAM_construct_int(OSSL_OBJECT_PARAM_TYPE, &objtype); + *p++ = OSSL_PARAM_construct_utf8_string(OSSL_OBJECT_PARAM_DATA_STRUCTURE, + data_structure, 0); + *p++ = OSSL_PARAM_construct_octet_string(OSSL_OBJECT_PARAM_DATA, + der, der_len); + *p++ = OSSL_PARAM_construct_int(OSSL_OBJECT_PARAM_TYPE, &objtype); *p = OSSL_PARAM_construct_end(); ok = data_cb(params, data_cbarg); } - end: +end: OPENSSL_free(pem_name); OPENSSL_free(pem_header); OPENSSL_free(der); @@ -275,8 +272,8 @@ const OSSL_DISPATCH ossl_pem_to_der_decoder_functions[] = { { OSSL_FUNC_DECODER_FREECTX, (void (*)(void))pem2der_freectx }, { OSSL_FUNC_DECODER_DECODE, (void (*)(void))pem2der_decode }, { OSSL_FUNC_DECODER_SETTABLE_CTX_PARAMS, - (void (*)(void))pem2der_settable_ctx_params }, + (void (*)(void))pem2der_settable_ctx_params }, { OSSL_FUNC_DECODER_SET_CTX_PARAMS, - (void (*)(void))pem2der_set_ctx_params }, + (void (*)(void))pem2der_set_ctx_params }, OSSL_DISPATCH_END }; diff --git a/crypto/openssl/providers/implementations/encode_decode/decode_pvk2key.c b/crypto/openssl/providers/implementations/encode_decode/decode_pvk2key.c index ea4585d93c5c..9e8c4f1f4c9d 100644 --- a/crypto/openssl/providers/implementations/encode_decode/decode_pvk2key.c +++ b/crypto/openssl/providers/implementations/encode_decode/decode_pvk2key.c @@ -21,25 +21,25 @@ #include <openssl/crypto.h> #include <openssl/params.h> #include <openssl/err.h> -#include <openssl/pem.h> /* For public PVK functions */ +#include <openssl/pem.h> /* For public PVK functions */ #include <openssl/x509.h> #include "internal/passphrase.h" #include "internal/sizes.h" -#include "crypto/pem.h" /* For internal PVK and "blob" headers */ +#include "crypto/pem.h" /* For internal PVK and "blob" headers */ #include "crypto/rsa.h" #include "prov/bio.h" #include "prov/implementations.h" #include "endecoder_local.h" -struct pvk2key_ctx_st; /* Forward declaration */ +struct pvk2key_ctx_st; /* Forward declaration */ typedef int check_key_fn(void *, struct pvk2key_ctx_st *ctx); typedef void adjust_key_fn(void *, struct pvk2key_ctx_st *ctx); typedef void *b2i_PVK_of_bio_pw_fn(BIO *in, pem_password_cb *cb, void *u, - OSSL_LIB_CTX *libctx, const char *propq); + OSSL_LIB_CTX *libctx, const char *propq); typedef void free_key_fn(void *); struct keytype_desc_st { - int type; /* EVP key type */ - const char *name; /* Keytype */ + int type; /* EVP key type */ + const char *name; /* Keytype */ const OSSL_DISPATCH *fns; /* Keymgmt (to pilfer functions from) */ b2i_PVK_of_bio_pw_fn *read_private_key; @@ -110,15 +110,15 @@ static int pvk2key_does_selection(void *provctx, int selection) if (selection == 0) return 1; - if ((selection & OSSL_KEYMGMT_SELECT_PRIVATE_KEY) != 0) + if ((selection & OSSL_KEYMGMT_SELECT_PRIVATE_KEY) != 0) return 1; return 0; } static int pvk2key_decode(void *vctx, OSSL_CORE_BIO *cin, int selection, - OSSL_CALLBACK *data_cb, void *data_cbarg, - OSSL_PASSPHRASE_CALLBACK *pw_cb, void *pw_cbarg) + OSSL_CALLBACK *data_cb, void *data_cbarg, + OSSL_PASSPHRASE_CALLBACK *pw_cb, void *pw_cbarg) { struct pvk2key_ctx_st *ctx = vctx; BIO *in = ossl_bio_new_from_core_bio(ctx->provctx, cin); @@ -131,7 +131,7 @@ static int pvk2key_decode(void *vctx, OSSL_CORE_BIO *cin, int selection, ctx->selection = selection; if ((selection == 0 - || (selection & OSSL_KEYMGMT_SELECT_PRIVATE_KEY) != 0) + || (selection & OSSL_KEYMGMT_SELECT_PRIVATE_KEY) != 0) && ctx->desc->read_private_key != NULL) { struct ossl_passphrase_data_st pwdata; int err, lib, reason; @@ -141,8 +141,8 @@ static int pvk2key_decode(void *vctx, OSSL_CORE_BIO *cin, int selection, goto end; key = ctx->desc->read_private_key(in, ossl_pw_pvk_password, &pwdata, - PROV_LIBCTX_OF(ctx->provctx), - ctx->propq); + PROV_LIBCTX_OF(ctx->provctx), + ctx->propq); /* * Because the PVK API doesn't have a separate decrypt call, we need @@ -167,7 +167,7 @@ static int pvk2key_decode(void *vctx, OSSL_CORE_BIO *cin, int selection, if (key != NULL && ctx->desc->adjust_key != NULL) ctx->desc->adjust_key(key, ctx); - next: +next: /* * Indicated that we successfully decoded something, or not at all. * Ending up "empty handed" is not an error. @@ -186,21 +186,18 @@ static int pvk2key_decode(void *vctx, OSSL_CORE_BIO *cin, int selection, OSSL_PARAM params[4]; int object_type = OSSL_OBJECT_PKEY; - params[0] = - OSSL_PARAM_construct_int(OSSL_OBJECT_PARAM_TYPE, &object_type); - params[1] = - OSSL_PARAM_construct_utf8_string(OSSL_OBJECT_PARAM_DATA_TYPE, - (char *)ctx->desc->name, 0); + params[0] = OSSL_PARAM_construct_int(OSSL_OBJECT_PARAM_TYPE, &object_type); + params[1] = OSSL_PARAM_construct_utf8_string(OSSL_OBJECT_PARAM_DATA_TYPE, + (char *)ctx->desc->name, 0); /* The address of the key becomes the octet string */ - params[2] = - OSSL_PARAM_construct_octet_string(OSSL_OBJECT_PARAM_REFERENCE, - &key, sizeof(key)); + params[2] = OSSL_PARAM_construct_octet_string(OSSL_OBJECT_PARAM_REFERENCE, + &key, sizeof(key)); params[3] = OSSL_PARAM_construct_end(); ok = data_cb(params, data_cbarg); } - end: +end: BIO_free(in); ctx->desc->free_key(key); @@ -208,12 +205,11 @@ static int pvk2key_decode(void *vctx, OSSL_CORE_BIO *cin, int selection, } static int pvk2key_export_object(void *vctx, - const void *reference, size_t reference_sz, - OSSL_CALLBACK *export_cb, void *export_cbarg) + const void *reference, size_t reference_sz, + OSSL_CALLBACK *export_cb, void *export_cbarg) { struct pvk2key_ctx_st *ctx = vctx; - OSSL_FUNC_keymgmt_export_fn *export = - ossl_prov_get_keymgmt_export(ctx->desc->fns); + OSSL_FUNC_keymgmt_export_fn *export = ossl_prov_get_keymgmt_export(ctx->desc->fns); void *keydata; if (reference_sz == sizeof(keydata) && export != NULL) { @@ -231,55 +227,57 @@ static int pvk2key_export_object(void *vctx, /* ---------------------------------------------------------------------- */ -#define dsa_private_key_bio (b2i_PVK_of_bio_pw_fn *)b2i_DSA_PVK_bio_ex -#define dsa_adjust NULL -#define dsa_free (void (*)(void *))DSA_free +#define dsa_private_key_bio (b2i_PVK_of_bio_pw_fn *)b2i_DSA_PVK_bio_ex +#define dsa_adjust NULL +#define dsa_free (void (*)(void *)) DSA_free /* ---------------------------------------------------------------------- */ -#define rsa_private_key_bio (b2i_PVK_of_bio_pw_fn *)b2i_RSA_PVK_bio_ex +#define rsa_private_key_bio (b2i_PVK_of_bio_pw_fn *)b2i_RSA_PVK_bio_ex static void rsa_adjust(void *key, struct pvk2key_ctx_st *ctx) { ossl_rsa_set0_libctx(key, PROV_LIBCTX_OF(ctx->provctx)); } -#define rsa_free (void (*)(void *))RSA_free +#define rsa_free (void (*)(void *)) RSA_free /* ---------------------------------------------------------------------- */ -#define IMPLEMENT_MS(KEYTYPE, keytype) \ - static const struct keytype_desc_st \ - pvk2##keytype##_desc = { \ - EVP_PKEY_##KEYTYPE, #KEYTYPE, \ - ossl_##keytype##_keymgmt_functions, \ - keytype##_private_key_bio, \ - keytype##_adjust, \ - keytype##_free \ - }; \ - static OSSL_FUNC_decoder_newctx_fn pvk2##keytype##_newctx; \ - static void *pvk2##keytype##_newctx(void *provctx) \ - { \ - return pvk2key_newctx(provctx, &pvk2##keytype##_desc); \ - } \ - const OSSL_DISPATCH \ - ossl_##pvk_to_##keytype##_decoder_functions[] = { \ - { OSSL_FUNC_DECODER_NEWCTX, \ - (void (*)(void))pvk2##keytype##_newctx }, \ - { OSSL_FUNC_DECODER_FREECTX, \ - (void (*)(void))pvk2key_freectx }, \ - { OSSL_FUNC_DECODER_DOES_SELECTION, \ - (void (*)(void))pvk2key_does_selection }, \ - { OSSL_FUNC_DECODER_DECODE, \ - (void (*)(void))pvk2key_decode }, \ - { OSSL_FUNC_DECODER_EXPORT_OBJECT, \ - (void (*)(void))pvk2key_export_object }, \ - { OSSL_FUNC_DECODER_SETTABLE_CTX_PARAMS, \ - (void (*)(void))pvk2key_settable_ctx_params }, \ - { OSSL_FUNC_DECODER_SET_CTX_PARAMS, \ - (void (*)(void))pvk2key_set_ctx_params }, \ - OSSL_DISPATCH_END \ - } +#define IMPLEMENT_MS(KEYTYPE, keytype) \ + static const struct keytype_desc_st \ + pvk2##keytype##_desc \ + = { \ + EVP_PKEY_##KEYTYPE, #KEYTYPE, \ + ossl_##keytype##_keymgmt_functions, \ + keytype##_private_key_bio, \ + keytype##_adjust, \ + keytype##_free \ + }; \ + static OSSL_FUNC_decoder_newctx_fn pvk2##keytype##_newctx; \ + static void *pvk2##keytype##_newctx(void *provctx) \ + { \ + return pvk2key_newctx(provctx, &pvk2##keytype##_desc); \ + } \ + const OSSL_DISPATCH \ + ossl_##pvk_to_##keytype##_decoder_functions[] \ + = { \ + { OSSL_FUNC_DECODER_NEWCTX, \ + (void (*)(void))pvk2##keytype##_newctx }, \ + { OSSL_FUNC_DECODER_FREECTX, \ + (void (*)(void))pvk2key_freectx }, \ + { OSSL_FUNC_DECODER_DOES_SELECTION, \ + (void (*)(void))pvk2key_does_selection }, \ + { OSSL_FUNC_DECODER_DECODE, \ + (void (*)(void))pvk2key_decode }, \ + { OSSL_FUNC_DECODER_EXPORT_OBJECT, \ + (void (*)(void))pvk2key_export_object }, \ + { OSSL_FUNC_DECODER_SETTABLE_CTX_PARAMS, \ + (void (*)(void))pvk2key_settable_ctx_params }, \ + { OSSL_FUNC_DECODER_SET_CTX_PARAMS, \ + (void (*)(void))pvk2key_set_ctx_params }, \ + OSSL_DISPATCH_END \ + } #ifndef OPENSSL_NO_DSA IMPLEMENT_MS(DSA, dsa); diff --git a/crypto/openssl/providers/implementations/encode_decode/decode_spki2typespki.c b/crypto/openssl/providers/implementations/encode_decode/decode_spki2typespki.c index 8cf6d7d41ce3..5bb39fc2f754 100644 --- a/crypto/openssl/providers/implementations/encode_decode/decode_spki2typespki.c +++ b/crypto/openssl/providers/implementations/encode_decode/decode_spki2typespki.c @@ -75,8 +75,8 @@ static int spki2typespki_set_ctx_params(void *vctx, const OSSL_PARAM params[]) } static int spki2typespki_decode(void *vctx, OSSL_CORE_BIO *cin, int selection, - OSSL_CALLBACK *data_cb, void *data_cbarg, - OSSL_PASSPHRASE_CALLBACK *pw_cb, void *pw_cbarg) + OSSL_CALLBACK *data_cb, void *data_cbarg, + OSSL_PASSPHRASE_CALLBACK *pw_cb, void *pw_cbarg) { struct spki2typespki_ctx_st *ctx = vctx; unsigned char *der; @@ -87,16 +87,16 @@ static int spki2typespki_decode(void *vctx, OSSL_CORE_BIO *cin, int selection, return 1; ok = ossl_spki2typespki_der_decode(der, len, selection, data_cb, data_cbarg, - pw_cb, pw_cbarg, - PROV_LIBCTX_OF(ctx->provctx), ctx->propq); + pw_cb, pw_cbarg, + PROV_LIBCTX_OF(ctx->provctx), ctx->propq); OPENSSL_free(der); return ok; } int ossl_spki2typespki_der_decode(unsigned char *der, long len, int selection, - OSSL_CALLBACK *data_cb, void *data_cbarg, - OSSL_PASSPHRASE_CALLBACK *pw_cb, void *pw_cbarg, - OSSL_LIB_CTX *libctx, const char *propq) + OSSL_CALLBACK *data_cb, void *data_cbarg, + OSSL_PASSPHRASE_CALLBACK *pw_cb, void *pw_cbarg, + OSSL_LIB_CTX *libctx, const char *propq) { const unsigned char *derp = der; X509_PUBKEY *xpub = NULL; @@ -122,37 +122,33 @@ int ossl_spki2typespki_der_decode(unsigned char *der, long len, int selection, #ifndef OPENSSL_NO_EC /* SM2 abuses the EC oid, so this could actually be SM2 */ if (OBJ_obj2nid(oid) == NID_X9_62_id_ecPublicKey - && ossl_x509_algor_is_sm2(algor)) + && ossl_x509_algor_is_sm2(algor)) strcpy(dataname, "SM2"); else #endif - if (OBJ_obj2txt(dataname, sizeof(dataname), oid, 0) <= 0) + if (OBJ_obj2txt(dataname, sizeof(dataname), oid, 0) <= 0) goto end; ossl_X509_PUBKEY_INTERNAL_free(xpub); xpub = NULL; - *p++ = - OSSL_PARAM_construct_utf8_string(OSSL_OBJECT_PARAM_DATA_TYPE, - dataname, 0); + *p++ = OSSL_PARAM_construct_utf8_string(OSSL_OBJECT_PARAM_DATA_TYPE, + dataname, 0); *p++ = OSSL_PARAM_construct_utf8_string(OSSL_OBJECT_PARAM_INPUT_TYPE, - "DER", 0); + "DER", 0); - *p++ = - OSSL_PARAM_construct_utf8_string(OSSL_OBJECT_PARAM_DATA_STRUCTURE, - "SubjectPublicKeyInfo", - 0); - *p++ = - OSSL_PARAM_construct_octet_string(OSSL_OBJECT_PARAM_DATA, der, len); - *p++ = - OSSL_PARAM_construct_int(OSSL_OBJECT_PARAM_TYPE, &objtype); + *p++ = OSSL_PARAM_construct_utf8_string(OSSL_OBJECT_PARAM_DATA_STRUCTURE, + "SubjectPublicKeyInfo", + 0); + *p++ = OSSL_PARAM_construct_octet_string(OSSL_OBJECT_PARAM_DATA, der, len); + *p++ = OSSL_PARAM_construct_int(OSSL_OBJECT_PARAM_TYPE, &objtype); *p = OSSL_PARAM_construct_end(); ok = data_cb(params, data_cbarg); - end: +end: ossl_X509_PUBKEY_INTERNAL_free(xpub); return ok; } @@ -162,8 +158,8 @@ const OSSL_DISPATCH ossl_SubjectPublicKeyInfo_der_to_der_decoder_functions[] = { { OSSL_FUNC_DECODER_FREECTX, (void (*)(void))spki2typespki_freectx }, { OSSL_FUNC_DECODER_DECODE, (void (*)(void))spki2typespki_decode }, { OSSL_FUNC_DECODER_SETTABLE_CTX_PARAMS, - (void (*)(void))spki2typespki_settable_ctx_params }, + (void (*)(void))spki2typespki_settable_ctx_params }, { OSSL_FUNC_DECODER_SET_CTX_PARAMS, - (void (*)(void))spki2typespki_set_ctx_params }, + (void (*)(void))spki2typespki_set_ctx_params }, OSSL_DISPATCH_END }; diff --git a/crypto/openssl/providers/implementations/encode_decode/encode_key2any.c b/crypto/openssl/providers/implementations/encode_decode/encode_key2any.c index 67a11590034a..307b8a967311 100644 --- a/crypto/openssl/providers/implementations/encode_decode/encode_key2any.c +++ b/crypto/openssl/providers/implementations/encode_decode/encode_key2any.c @@ -22,7 +22,7 @@ #include <openssl/err.h> #include <openssl/pem.h> #include <openssl/x509.h> -#include <openssl/pkcs12.h> /* PKCS8_encrypt() */ +#include <openssl/pkcs12.h> /* PKCS8_encrypt() */ #include <openssl/dh.h> #include <openssl/dsa.h> #include <openssl/ec.h> @@ -43,7 +43,7 @@ #include "ml_kem_codecs.h" #if defined(OPENSSL_NO_DH) && defined(OPENSSL_NO_DSA) && defined(OPENSSL_NO_EC) -# define OPENSSL_NO_KEYPARAMS +#define OPENSSL_NO_KEYPARAMS #endif typedef struct key2any_ctx_st { @@ -62,14 +62,13 @@ typedef struct key2any_ctx_st { typedef int check_key_type_fn(const void *key, int nid); typedef int key_to_paramstring_fn(const void *key, int nid, int save, - void **str, int *strtype); + void **str, int *strtype); typedef int key_to_der_fn(BIO *out, const void *key, - int key_nid, const char *pemname, - key_to_paramstring_fn *p2s, - OSSL_i2d_of_void_ctx *k2d, KEY2ANY_CTX *ctx); + int key_nid, const char *pemname, + key_to_paramstring_fn *p2s, + OSSL_i2d_of_void_ctx *k2d, KEY2ANY_CTX *ctx); typedef int write_bio_of_void_fn(BIO *bp, const void *x); - /* Free the blob allocated during key_to_paramstring_fn */ static void free_asn1_data(int type, void *data) { @@ -84,9 +83,9 @@ static void free_asn1_data(int type, void *data) } static PKCS8_PRIV_KEY_INFO *key_to_p8info(const void *key, int key_nid, - void *params, int params_type, - OSSL_i2d_of_void_ctx *k2d, - KEY2ANY_CTX *ctx) + void *params, int params_type, + OSSL_i2d_of_void_ctx *k2d, + KEY2ANY_CTX *ctx) { /* der, derlen store the key DER output and its length */ unsigned char *der = NULL; @@ -97,7 +96,7 @@ static PKCS8_PRIV_KEY_INFO *key_to_p8info(const void *key, int key_nid, if ((p8info = PKCS8_PRIV_KEY_INFO_new()) == NULL || (derlen = k2d(key, &der, (void *)ctx)) <= 0 || !PKCS8_pkey_set0(p8info, OBJ_nid2obj(key_nid), 0, - params_type, params, der, derlen)) { + params_type, params, der, derlen)) { ERR_raise(ERR_LIB_PROV, ERR_R_ASN1_LIB); PKCS8_PRIV_KEY_INFO_free(p8info); OPENSSL_free(der); @@ -108,7 +107,7 @@ static PKCS8_PRIV_KEY_INFO *key_to_p8info(const void *key, int key_nid, } static X509_SIG *p8info_to_encp8(PKCS8_PRIV_KEY_INFO *p8info, - KEY2ANY_CTX *ctx) + KEY2ANY_CTX *ctx) { X509_SIG *p8 = NULL; char kstr[PEM_BUFSIZE]; @@ -119,7 +118,7 @@ static X509_SIG *p8info_to_encp8(PKCS8_PRIV_KEY_INFO *p8info, return NULL; if (!ossl_pw_get_passphrase(kstr, sizeof(kstr), &klen, NULL, 1, - &ctx->pwdata)) { + &ctx->pwdata)) { ERR_raise(ERR_LIB_PROV, PROV_R_UNABLE_TO_GET_PASSPHRASE); return NULL; } @@ -130,12 +129,11 @@ static X509_SIG *p8info_to_encp8(PKCS8_PRIV_KEY_INFO *p8info, } static X509_SIG *key_to_encp8(const void *key, int key_nid, - void *params, int params_type, - OSSL_i2d_of_void_ctx *k2d, - KEY2ANY_CTX *ctx) + void *params, int params_type, + OSSL_i2d_of_void_ctx *k2d, + KEY2ANY_CTX *ctx) { - PKCS8_PRIV_KEY_INFO *p8info = - key_to_p8info(key, key_nid, params, params_type, k2d, ctx); + PKCS8_PRIV_KEY_INFO *p8info = key_to_p8info(key, key_nid, params, params_type, k2d, ctx); X509_SIG *p8 = NULL; if (p8info == NULL) { @@ -148,9 +146,9 @@ static X509_SIG *key_to_encp8(const void *key, int key_nid, } static X509_PUBKEY *key_to_pubkey(const void *key, int key_nid, - void *params, int params_type, - OSSL_i2d_of_void_ctx *k2d, - KEY2ANY_CTX *ctx) + void *params, int params_type, + OSSL_i2d_of_void_ctx *k2d, + KEY2ANY_CTX *ctx) { /* der, derlen store the key DER output and its length */ unsigned char *der = NULL; @@ -158,11 +156,10 @@ static X509_PUBKEY *key_to_pubkey(const void *key, int key_nid, /* The final X509_PUBKEY */ X509_PUBKEY *xpk = NULL; - if ((xpk = X509_PUBKEY_new()) == NULL || (derlen = k2d(key, &der, (void *)ctx)) <= 0 || !X509_PUBKEY_set0_param(xpk, OBJ_nid2obj(key_nid), - params_type, params, der, derlen)) { + params_type, params, der, derlen)) { ERR_raise(ERR_LIB_PROV, ERR_R_X509_LIB); X509_PUBKEY_free(xpk); OPENSSL_free(der); @@ -192,11 +189,11 @@ static X509_PUBKEY *key_to_pubkey(const void *key, int key_nid, */ static int key_to_epki_der_priv_bio(BIO *out, const void *key, - int key_nid, - ossl_unused const char *pemname, - key_to_paramstring_fn *p2s, - OSSL_i2d_of_void_ctx *k2d, - KEY2ANY_CTX *ctx) + int key_nid, + ossl_unused const char *pemname, + key_to_paramstring_fn *p2s, + OSSL_i2d_of_void_ctx *k2d, + KEY2ANY_CTX *ctx) { int ret = 0; void *str = NULL; @@ -206,8 +203,7 @@ static int key_to_epki_der_priv_bio(BIO *out, const void *key, if (!ctx->cipher_intent) return 0; - if (p2s != NULL && !p2s(key, key_nid, ctx->save_parameters, - &str, &strtype)) + if (p2s != NULL && !p2s(key, key_nid, ctx->save_parameters, &str, &strtype)) return 0; p8 = key_to_encp8(key, key_nid, str, strtype, k2d, ctx); @@ -220,11 +216,11 @@ static int key_to_epki_der_priv_bio(BIO *out, const void *key, } static int key_to_epki_pem_priv_bio(BIO *out, const void *key, - int key_nid, - ossl_unused const char *pemname, - key_to_paramstring_fn *p2s, - OSSL_i2d_of_void_ctx *k2d, - KEY2ANY_CTX *ctx) + int key_nid, + ossl_unused const char *pemname, + key_to_paramstring_fn *p2s, + OSSL_i2d_of_void_ctx *k2d, + KEY2ANY_CTX *ctx) { int ret = 0; void *str = NULL; @@ -234,8 +230,7 @@ static int key_to_epki_pem_priv_bio(BIO *out, const void *key, if (!ctx->cipher_intent) return 0; - if (p2s != NULL && !p2s(key, key_nid, ctx->save_parameters, - &str, &strtype)) + if (p2s != NULL && !p2s(key, key_nid, ctx->save_parameters, &str, &strtype)) return 0; p8 = key_to_encp8(key, key_nid, str, strtype, k2d, ctx); @@ -248,11 +243,11 @@ static int key_to_epki_pem_priv_bio(BIO *out, const void *key, } static int key_to_pki_der_priv_bio(BIO *out, const void *key, - int key_nid, - ossl_unused const char *pemname, - key_to_paramstring_fn *p2s, - OSSL_i2d_of_void_ctx *k2d, - KEY2ANY_CTX *ctx) + int key_nid, + ossl_unused const char *pemname, + key_to_paramstring_fn *p2s, + OSSL_i2d_of_void_ctx *k2d, + KEY2ANY_CTX *ctx) { int ret = 0; void *str = NULL; @@ -261,10 +256,9 @@ static int key_to_pki_der_priv_bio(BIO *out, const void *key, if (ctx->cipher_intent) return key_to_epki_der_priv_bio(out, key, key_nid, pemname, - p2s, k2d, ctx); + p2s, k2d, ctx); - if (p2s != NULL && !p2s(key, key_nid, ctx->save_parameters, - &str, &strtype)) + if (p2s != NULL && !p2s(key, key_nid, ctx->save_parameters, &str, &strtype)) return 0; p8info = key_to_p8info(key, key_nid, str, strtype, k2d, ctx); @@ -280,11 +274,11 @@ static int key_to_pki_der_priv_bio(BIO *out, const void *key, } static int key_to_pki_pem_priv_bio(BIO *out, const void *key, - int key_nid, - ossl_unused const char *pemname, - key_to_paramstring_fn *p2s, - OSSL_i2d_of_void_ctx *k2d, - KEY2ANY_CTX *ctx) + int key_nid, + ossl_unused const char *pemname, + key_to_paramstring_fn *p2s, + OSSL_i2d_of_void_ctx *k2d, + KEY2ANY_CTX *ctx) { int ret = 0; void *str = NULL; @@ -293,10 +287,9 @@ static int key_to_pki_pem_priv_bio(BIO *out, const void *key, if (ctx->cipher_intent) return key_to_epki_pem_priv_bio(out, key, key_nid, pemname, - p2s, k2d, ctx); + p2s, k2d, ctx); - if (p2s != NULL && !p2s(key, key_nid, ctx->save_parameters, - &str, &strtype)) + if (p2s != NULL && !p2s(key, key_nid, ctx->save_parameters, &str, &strtype)) return 0; p8info = key_to_p8info(key, key_nid, str, strtype, k2d, ctx); @@ -312,19 +305,18 @@ static int key_to_pki_pem_priv_bio(BIO *out, const void *key, } static int key_to_spki_der_pub_bio(BIO *out, const void *key, - int key_nid, - ossl_unused const char *pemname, - key_to_paramstring_fn *p2s, - OSSL_i2d_of_void_ctx *k2d, - KEY2ANY_CTX *ctx) + int key_nid, + ossl_unused const char *pemname, + key_to_paramstring_fn *p2s, + OSSL_i2d_of_void_ctx *k2d, + KEY2ANY_CTX *ctx) { int ret = 0; void *str = NULL; int strtype = V_ASN1_UNDEF; X509_PUBKEY *xpk = NULL; - if (p2s != NULL && !p2s(key, key_nid, ctx->save_parameters, - &str, &strtype)) + if (p2s != NULL && !p2s(key, key_nid, ctx->save_parameters, &str, &strtype)) return 0; xpk = key_to_pubkey(key, key_nid, str, strtype, k2d, ctx); @@ -338,19 +330,18 @@ static int key_to_spki_der_pub_bio(BIO *out, const void *key, } static int key_to_spki_pem_pub_bio(BIO *out, const void *key, - int key_nid, - ossl_unused const char *pemname, - key_to_paramstring_fn *p2s, - OSSL_i2d_of_void_ctx *k2d, - KEY2ANY_CTX *ctx) + int key_nid, + ossl_unused const char *pemname, + key_to_paramstring_fn *p2s, + OSSL_i2d_of_void_ctx *k2d, + KEY2ANY_CTX *ctx) { int ret = 0; void *str = NULL; int strtype = V_ASN1_UNDEF; X509_PUBKEY *xpk = NULL; - if (p2s != NULL && !p2s(key, key_nid, ctx->save_parameters, - &str, &strtype)) + if (p2s != NULL && !p2s(key, key_nid, ctx->save_parameters, &str, &strtype)) return 0; xpk = key_to_pubkey(key, key_nid, str, strtype, k2d, ctx); @@ -378,11 +369,11 @@ static int key_to_spki_pem_pub_bio(BIO *out, const void *key, * on k2d to do the complete work. */ static int key_to_type_specific_der_bio(BIO *out, const void *key, - int key_nid, - ossl_unused const char *pemname, - key_to_paramstring_fn *p2s, - OSSL_i2d_of_void_ctx *k2d, - KEY2ANY_CTX *ctx) + int key_nid, + ossl_unused const char *pemname, + key_to_paramstring_fn *p2s, + OSSL_i2d_of_void_ctx *k2d, + KEY2ANY_CTX *ctx) { unsigned char *der = NULL; int derlen; @@ -402,64 +393,65 @@ static int key_to_type_specific_der_bio(BIO *out, const void *key, #define key_to_type_specific_der_param_bio key_to_type_specific_der_bio static int key_to_type_specific_pem_bio_cb(BIO *out, const void *key, - int key_nid, const char *pemname, - key_to_paramstring_fn *p2s, - OSSL_i2d_of_void_ctx *k2d, - KEY2ANY_CTX *ctx, - pem_password_cb *cb, void *cbarg) + int key_nid, const char *pemname, + key_to_paramstring_fn *p2s, + OSSL_i2d_of_void_ctx *k2d, + KEY2ANY_CTX *ctx, + pem_password_cb *cb, void *cbarg) { return PEM_ASN1_write_bio_ctx(k2d, (void *)ctx, pemname, out, key, - ctx->cipher, NULL, 0, cb, cbarg) > 0; + ctx->cipher, NULL, 0, cb, cbarg) + > 0; } static int key_to_type_specific_pem_priv_bio(BIO *out, const void *key, - int key_nid, const char *pemname, - key_to_paramstring_fn *p2s, - OSSL_i2d_of_void_ctx *k2d, - KEY2ANY_CTX *ctx) + int key_nid, const char *pemname, + key_to_paramstring_fn *p2s, + OSSL_i2d_of_void_ctx *k2d, + KEY2ANY_CTX *ctx) { return key_to_type_specific_pem_bio_cb(out, key, key_nid, pemname, - p2s, k2d, ctx, - ossl_pw_pem_password, &ctx->pwdata); + p2s, k2d, ctx, + ossl_pw_pem_password, &ctx->pwdata); } static int key_to_type_specific_pem_pub_bio(BIO *out, const void *key, - int key_nid, const char *pemname, - key_to_paramstring_fn *p2s, - OSSL_i2d_of_void_ctx *k2d, - KEY2ANY_CTX *ctx) + int key_nid, const char *pemname, + key_to_paramstring_fn *p2s, + OSSL_i2d_of_void_ctx *k2d, + KEY2ANY_CTX *ctx) { return key_to_type_specific_pem_bio_cb(out, key, key_nid, pemname, - p2s, k2d, ctx, NULL, NULL); + p2s, k2d, ctx, NULL, NULL); } #ifndef OPENSSL_NO_KEYPARAMS static int key_to_type_specific_pem_param_bio(BIO *out, const void *key, - int key_nid, const char *pemname, - key_to_paramstring_fn *p2s, - OSSL_i2d_of_void_ctx *k2d, - KEY2ANY_CTX *ctx) + int key_nid, const char *pemname, + key_to_paramstring_fn *p2s, + OSSL_i2d_of_void_ctx *k2d, + KEY2ANY_CTX *ctx) { return key_to_type_specific_pem_bio_cb(out, key, key_nid, pemname, - p2s, k2d, ctx, NULL, NULL); + p2s, k2d, ctx, NULL, NULL); } #endif /* ---------------------------------------------------------------------- */ -#define k2d_NOCTX(n, f) \ - static int \ - n##_k2d(const void *key, unsigned char **pder, \ - ossl_unused void *ctx) \ - { \ - return f(key, pder); \ +#define k2d_NOCTX(n, f) \ + static int \ + n##_k2d(const void *key, unsigned char **pder, \ + ossl_unused void *ctx) \ + { \ + return f(key, pder); \ } /* ---------------------------------------------------------------------- */ #ifndef OPENSSL_NO_DH static int prepare_dh_params(const void *dh, int nid, int save, - void **pstr, int *pstrtype) + void **pstr, int *pstrtype) { ASN1_STRING *params = ASN1_STRING_new(); @@ -486,7 +478,7 @@ static int prepare_dh_params(const void *dh, int nid, int save, } static int dh_spki_pub_to_der(const void *dh, unsigned char **pder, - ossl_unused void *ctx) + ossl_unused void *ctx) { const BIGNUM *bn = NULL; ASN1_INTEGER *pub_key = NULL; @@ -508,7 +500,7 @@ static int dh_spki_pub_to_der(const void *dh, unsigned char **pder, } static int dh_pki_priv_to_der(const void *dh, unsigned char **pder, - ossl_unused void *ctx) + ossl_unused void *ctx) { const BIGNUM *bn = NULL; ASN1_INTEGER *priv_key = NULL; @@ -529,11 +521,11 @@ static int dh_pki_priv_to_der(const void *dh, unsigned char **pder, return ret; } -# define dh_epki_priv_to_der dh_pki_priv_to_der +#define dh_epki_priv_to_der dh_pki_priv_to_der static int dh_type_specific_params_to_der(const void *dh, unsigned char **pder, - ossl_unused void *ctx) + ossl_unused void *ctx) { if (DH_test_flags(dh, DH_FLAG_TYPE_DHX)) return i2d_DHxparams(dh, pder); @@ -544,28 +536,27 @@ dh_type_specific_params_to_der(const void *dh, unsigned char **pder, * DH doesn't have i2d_DHPrivateKey or i2d_DHPublicKey, so we can't make * corresponding functions here. */ -# define dh_type_specific_priv_to_der NULL -# define dh_type_specific_pub_to_der NULL +#define dh_type_specific_priv_to_der NULL +#define dh_type_specific_pub_to_der NULL static int dh_check_key_type(const void *dh, int expected_type) { - int type = - DH_test_flags(dh, DH_FLAG_TYPE_DHX) ? EVP_PKEY_DHX : EVP_PKEY_DH; + int type = DH_test_flags(dh, DH_FLAG_TYPE_DHX) ? EVP_PKEY_DHX : EVP_PKEY_DH; return type == expected_type; } -# define dh_evp_type EVP_PKEY_DH -# define dhx_evp_type EVP_PKEY_DHX -# define dh_pem_type "DH" -# define dhx_pem_type "X9.42 DH" +#define dh_evp_type EVP_PKEY_DH +#define dhx_evp_type EVP_PKEY_DHX +#define dh_pem_type "DH" +#define dhx_pem_type "X9.42 DH" #endif /* ---------------------------------------------------------------------- */ #ifndef OPENSSL_NO_DSA static int encode_dsa_params(const void *dsa, int nid, - void **pstr, int *pstrtype) + void **pstr, int *pstrtype) { ASN1_STRING *params = ASN1_STRING_new(); @@ -588,7 +579,7 @@ static int encode_dsa_params(const void *dsa, int nid, } static int prepare_dsa_params(const void *dsa, int nid, int save, - void **pstr, int *pstrtype) + void **pstr, int *pstrtype) { const BIGNUM *p = DSA_get0_p(dsa); const BIGNUM *q = DSA_get0_q(dsa); @@ -603,7 +594,7 @@ static int prepare_dsa_params(const void *dsa, int nid, int save, } static int dsa_spki_pub_to_der(const void *dsa, unsigned char **pder, - ossl_unused void *ctx) + ossl_unused void *ctx) { const BIGNUM *bn = NULL; ASN1_INTEGER *pub_key = NULL; @@ -625,7 +616,7 @@ static int dsa_spki_pub_to_der(const void *dsa, unsigned char **pder, } static int dsa_pki_priv_to_der(const void *dsa, unsigned char **pder, - ossl_unused void *ctx) + ossl_unused void *ctx) { const BIGNUM *bn = NULL; ASN1_INTEGER *priv_key = NULL; @@ -647,25 +638,25 @@ static int dsa_pki_priv_to_der(const void *dsa, unsigned char **pder, } k2d_NOCTX(dsa_prv, i2d_DSAPrivateKey) -k2d_NOCTX(dsa_pub, i2d_DSAPublicKey) -k2d_NOCTX(dsa_param, i2d_DSAparams) + k2d_NOCTX(dsa_pub, i2d_DSAPublicKey) + k2d_NOCTX(dsa_param, i2d_DSAparams) -# define dsa_epki_priv_to_der dsa_pki_priv_to_der +#define dsa_epki_priv_to_der dsa_pki_priv_to_der -# define dsa_type_specific_priv_to_der dsa_prv_k2d -# define dsa_type_specific_pub_to_der dsa_pub_k2d -# define dsa_type_specific_params_to_der dsa_param_k2d +#define dsa_type_specific_priv_to_der dsa_prv_k2d +#define dsa_type_specific_pub_to_der dsa_pub_k2d +#define dsa_type_specific_params_to_der dsa_param_k2d -# define dsa_check_key_type NULL -# define dsa_evp_type EVP_PKEY_DSA -# define dsa_pem_type "DSA" +#define dsa_check_key_type NULL +#define dsa_evp_type EVP_PKEY_DSA +#define dsa_pem_type "DSA" #endif /* ---------------------------------------------------------------------- */ #ifndef OPENSSL_NO_EC -static int prepare_ec_explicit_params(const void *eckey, - void **pstr, int *pstrtype) + static int prepare_ec_explicit_params(const void *eckey, + void **pstr, int *pstrtype) { ASN1_STRING *params = ASN1_STRING_new(); @@ -691,7 +682,7 @@ static int prepare_ec_explicit_params(const void *eckey, * is a curve name (curve nid) to be found or not. See RFC 3279 for details. */ static int prepare_ec_params(const void *eckey, int nid, int save, - void **pstr, int *pstrtype) + void **pstr, int *pstrtype) { int curve_nid; const EC_GROUP *group = EC_KEY_get0_group(eckey); @@ -725,7 +716,7 @@ static int prepare_ec_params(const void *eckey, int nid, int save, } static int ec_spki_pub_to_der(const void *eckey, unsigned char **pder, - ossl_unused void *ctx) + ossl_unused void *ctx) { if (EC_KEY_get0_public_key(eckey) == NULL) { ERR_raise(ERR_LIB_PROV, PROV_R_NOT_A_PUBLIC_KEY); @@ -735,7 +726,7 @@ static int ec_spki_pub_to_der(const void *eckey, unsigned char **pder, } static int ec_pki_priv_to_der(const void *veckey, unsigned char **pder, - ossl_unused void *ctx) + ossl_unused void *ctx) { EC_KEY *eckey = (EC_KEY *)veckey; unsigned int old_flags; @@ -756,19 +747,19 @@ static int ec_pki_priv_to_der(const void *veckey, unsigned char **pder, } k2d_NOCTX(ec_param, i2d_ECParameters) -k2d_NOCTX(ec_prv, i2d_ECPrivateKey) + k2d_NOCTX(ec_prv, i2d_ECPrivateKey) -# define ec_epki_priv_to_der ec_pki_priv_to_der +#define ec_epki_priv_to_der ec_pki_priv_to_der -# define ec_type_specific_params_to_der ec_param_k2d +#define ec_type_specific_params_to_der ec_param_k2d /* No ec_type_specific_pub_to_der, there simply is no such thing */ -# define ec_type_specific_priv_to_der ec_prv_k2d +#define ec_type_specific_priv_to_der ec_prv_k2d -# define ec_check_key_type NULL -# define ec_evp_type EVP_PKEY_EC -# define ec_pem_type "EC" +#define ec_check_key_type NULL +#define ec_evp_type EVP_PKEY_EC +#define ec_pem_type "EC" -# ifndef OPENSSL_NO_SM2 +#ifndef OPENSSL_NO_SM2 /* * Albeit SM2 is a slightly different algorithm than ECDSA, the key type * encoding (in all places where an AlgorithmIdentifier is produced, such @@ -777,18 +768,18 @@ k2d_NOCTX(ec_prv, i2d_ECPrivateKey) * This leaves the distinction of SM2 keys to the EC group (which is found * in AlgorithmIdentified.params). */ -# define sm2_evp_type ec_evp_type -# define sm2_pem_type "SM2" -# endif +#define sm2_evp_type ec_evp_type +#define sm2_pem_type "SM2" +#endif #endif /* ---------------------------------------------------------------------- */ #ifndef OPENSSL_NO_ECX -# define prepare_ecx_params NULL +#define prepare_ecx_params NULL -static int ecx_spki_pub_to_der(const void *vecxkey, unsigned char **pder, - ossl_unused void *ctx) + static int ecx_spki_pub_to_der(const void *vecxkey, unsigned char **pder, + ossl_unused void *ctx) { const ECX_KEY *ecxkey = vecxkey; unsigned char *keyblob; @@ -807,7 +798,7 @@ static int ecx_spki_pub_to_der(const void *vecxkey, unsigned char **pder, } static int ecx_pki_priv_to_der(const void *vecxkey, unsigned char **pder, - ossl_unused void *ctx) + ossl_unused void *ctx) { const ECX_KEY *ecxkey = vecxkey; ASN1_OCTET_STRING oct; @@ -831,52 +822,52 @@ static int ecx_pki_priv_to_der(const void *vecxkey, unsigned char **pder, return keybloblen; } -# define ecx_epki_priv_to_der ecx_pki_priv_to_der +#define ecx_epki_priv_to_der ecx_pki_priv_to_der /* * ED25519, ED448, X25519 and X448 only has PKCS#8 / SubjectPublicKeyInfo * representation, so we don't define ecx_type_specific_[priv,pub,params]_to_der. */ -# define ecx_check_key_type NULL +#define ecx_check_key_type NULL -# define ed25519_evp_type EVP_PKEY_ED25519 -# define ed448_evp_type EVP_PKEY_ED448 -# define x25519_evp_type EVP_PKEY_X25519 -# define x448_evp_type EVP_PKEY_X448 -# define ed25519_pem_type "ED25519" -# define ed448_pem_type "ED448" -# define x25519_pem_type "X25519" -# define x448_pem_type "X448" +#define ed25519_evp_type EVP_PKEY_ED25519 +#define ed448_evp_type EVP_PKEY_ED448 +#define x25519_evp_type EVP_PKEY_X25519 +#define x448_evp_type EVP_PKEY_X448 +#define ed25519_pem_type "ED25519" +#define ed448_pem_type "ED448" +#define x25519_pem_type "X25519" +#define x448_pem_type "X448" #endif /* ---------------------------------------------------------------------- */ #ifndef OPENSSL_NO_ML_DSA static int ml_dsa_spki_pub_to_der(const void *vkey, unsigned char **pder, - ossl_unused void *ctx) + ossl_unused void *ctx) { return ossl_ml_dsa_i2d_pubkey(vkey, pder); } static int ml_dsa_pki_priv_to_der(const void *vkey, unsigned char **pder, - void *vctx) + void *vctx) { KEY2ANY_CTX *ctx = vctx; return ossl_ml_dsa_i2d_prvkey(vkey, pder, ctx->provctx); } -# define ml_dsa_epki_priv_to_der ml_dsa_pki_priv_to_der -# define prepare_ml_dsa_params NULL -# define ml_dsa_check_key_type NULL +#define ml_dsa_epki_priv_to_der ml_dsa_pki_priv_to_der +#define prepare_ml_dsa_params NULL +#define ml_dsa_check_key_type NULL -# define ml_dsa_44_evp_type EVP_PKEY_ML_DSA_44 -# define ml_dsa_44_pem_type "ML-DSA-44" -# define ml_dsa_65_evp_type EVP_PKEY_ML_DSA_65 -# define ml_dsa_65_pem_type "ML-DSA-65" -# define ml_dsa_87_evp_type EVP_PKEY_ML_DSA_87 -# define ml_dsa_87_pem_type "ML-DSA-87" +#define ml_dsa_44_evp_type EVP_PKEY_ML_DSA_44 +#define ml_dsa_44_pem_type "ML-DSA-44" +#define ml_dsa_65_evp_type EVP_PKEY_ML_DSA_65 +#define ml_dsa_65_pem_type "ML-DSA-65" +#define ml_dsa_87_evp_type EVP_PKEY_ML_DSA_87 +#define ml_dsa_87_pem_type "ML-DSA-87" #endif /* OPENSSL_NO_ML_DSA */ /* ---------------------------------------------------------------------- */ @@ -884,29 +875,29 @@ static int ml_dsa_pki_priv_to_der(const void *vkey, unsigned char **pder, #ifndef OPENSSL_NO_ML_KEM static int ml_kem_spki_pub_to_der(const void *vkey, unsigned char **pder, - ossl_unused void *ctx) + ossl_unused void *ctx) { return ossl_ml_kem_i2d_pubkey(vkey, pder); } static int ml_kem_pki_priv_to_der(const void *vkey, unsigned char **pder, - void *vctx) + void *vctx) { KEY2ANY_CTX *ctx = vctx; return ossl_ml_kem_i2d_prvkey(vkey, pder, ctx->provctx); } -# define ml_kem_epki_priv_to_der ml_kem_pki_priv_to_der -# define prepare_ml_kem_params NULL -# define ml_kem_check_key_type NULL +#define ml_kem_epki_priv_to_der ml_kem_pki_priv_to_der +#define prepare_ml_kem_params NULL +#define ml_kem_check_key_type NULL -# define ml_kem_512_evp_type EVP_PKEY_ML_KEM_512 -# define ml_kem_512_pem_type "ML-KEM-512" -# define ml_kem_768_evp_type EVP_PKEY_ML_KEM_768 -# define ml_kem_768_pem_type "ML-KEM-768" -# define ml_kem_1024_evp_type EVP_PKEY_ML_KEM_1024 -# define ml_kem_1024_pem_type "ML-KEM-1024" +#define ml_kem_512_evp_type EVP_PKEY_ML_KEM_512 +#define ml_kem_512_pem_type "ML-KEM-512" +#define ml_kem_768_evp_type EVP_PKEY_ML_KEM_768 +#define ml_kem_768_pem_type "ML-KEM-768" +#define ml_kem_1024_evp_type EVP_PKEY_ML_KEM_1024 +#define ml_kem_1024_pem_type "ML-KEM-1024" #endif /* ---------------------------------------------------------------------- */ @@ -918,7 +909,7 @@ static int ml_kem_pki_priv_to_der(const void *vkey, unsigned char **pder, */ static int prepare_rsa_params(const void *rsa, int nid, int save, - void **pstr, int *pstrtype) + void **pstr, int *pstrtype) { const RSA_PSS_PARAMS_30 *pss = ossl_rsa_get0_pss_params_30((RSA *)rsa); @@ -979,7 +970,7 @@ static int prepare_rsa_params(const void *rsa, int nid, int save, *pstr = astr; return 1; - err: + err: OPENSSL_free(str); return 0; } @@ -990,20 +981,20 @@ static int prepare_rsa_params(const void *rsa, int nid, int save, } k2d_NOCTX(rsa_prv, i2d_RSAPrivateKey) -k2d_NOCTX(rsa_pub, i2d_RSAPublicKey) + k2d_NOCTX(rsa_pub, i2d_RSAPublicKey) /* * RSA is extremely simple, as PKCS#1 is used for the PKCS#8 |privateKey| * field as well as the SubjectPublicKeyInfo |subjectPublicKey| field. */ -#define rsa_pki_priv_to_der rsa_type_specific_priv_to_der -#define rsa_epki_priv_to_der rsa_type_specific_priv_to_der -#define rsa_spki_pub_to_der rsa_type_specific_pub_to_der -#define rsa_type_specific_priv_to_der rsa_prv_k2d -#define rsa_type_specific_pub_to_der rsa_pub_k2d +#define rsa_pki_priv_to_der rsa_type_specific_priv_to_der +#define rsa_epki_priv_to_der rsa_type_specific_priv_to_der +#define rsa_spki_pub_to_der rsa_type_specific_pub_to_der +#define rsa_type_specific_priv_to_der rsa_prv_k2d +#define rsa_type_specific_pub_to_der rsa_pub_k2d #define rsa_type_specific_params_to_der NULL -static int rsa_check_key_type(const void *rsa, int expected_type) + static int rsa_check_key_type(const void *rsa, int expected_type) { switch (RSA_test_flags(rsa, RSA_FLAG_TYPE_MASK)) { case RSA_FLAG_TYPE_RSA: @@ -1016,18 +1007,18 @@ static int rsa_check_key_type(const void *rsa, int expected_type) return EVP_PKEY_NONE; } -#define rsa_evp_type EVP_PKEY_RSA -#define rsapss_evp_type EVP_PKEY_RSA_PSS -#define rsa_pem_type "RSA" -#define rsapss_pem_type "RSA-PSS" +#define rsa_evp_type EVP_PKEY_RSA +#define rsapss_evp_type EVP_PKEY_RSA_PSS +#define rsa_pem_type "RSA" +#define rsapss_pem_type "RSA-PSS" /* ---------------------------------------------------------------------- */ #ifndef OPENSSL_NO_SLH_DSA -# define prepare_slh_dsa_params NULL +#define prepare_slh_dsa_params NULL static int slh_dsa_spki_pub_to_der(const void *vkey, unsigned char **pder, - ossl_unused void *ctx) + ossl_unused void *ctx) { const SLH_DSA_KEY *key = vkey; uint8_t *key_blob; @@ -1047,7 +1038,7 @@ static int slh_dsa_spki_pub_to_der(const void *vkey, unsigned char **pder, } static int slh_dsa_pki_priv_to_der(const void *vkey, unsigned char **pder, - ossl_unused void *ctx) + ossl_unused void *ctx) { const SLH_DSA_KEY *key = vkey; size_t len; @@ -1059,52 +1050,52 @@ static int slh_dsa_pki_priv_to_der(const void *vkey, unsigned char **pder, len = ossl_slh_dsa_key_get_priv_len(key); if (pder != NULL - && ((*pder = OPENSSL_memdup(ossl_slh_dsa_key_get_priv(key), len)) == NULL)) + && ((*pder = OPENSSL_memdup(ossl_slh_dsa_key_get_priv(key), len)) == NULL)) return 0; return len; } -# define slh_dsa_epki_priv_to_der slh_dsa_pki_priv_to_der +#define slh_dsa_epki_priv_to_der slh_dsa_pki_priv_to_der /* SLH_DSA only has PKCS#8 / SubjectPublicKeyInfo representations. */ -# define slh_dsa_check_key_type NULL -# define slh_dsa_sha2_128s_evp_type EVP_PKEY_SLH_DSA_SHA2_128S -# define slh_dsa_sha2_128f_evp_type EVP_PKEY_SLH_DSA_SHA2_128F -# define slh_dsa_sha2_192s_evp_type EVP_PKEY_SLH_DSA_SHA2_192S -# define slh_dsa_sha2_192f_evp_type EVP_PKEY_SLH_DSA_SHA2_192F -# define slh_dsa_sha2_256s_evp_type EVP_PKEY_SLH_DSA_SHA2_256S -# define slh_dsa_sha2_256f_evp_type EVP_PKEY_SLH_DSA_SHA2_256F -# define slh_dsa_shake_128s_evp_type EVP_PKEY_SLH_DSA_SHAKE_128S -# define slh_dsa_shake_128f_evp_type EVP_PKEY_SLH_DSA_SHAKE_128F -# define slh_dsa_shake_192s_evp_type EVP_PKEY_SLH_DSA_SHAKE_192S -# define slh_dsa_shake_192f_evp_type EVP_PKEY_SLH_DSA_SHAKE_192F -# define slh_dsa_shake_256s_evp_type EVP_PKEY_SLH_DSA_SHAKE_256S -# define slh_dsa_shake_256f_evp_type EVP_PKEY_SLH_DSA_SHAKE_256F -# define slh_dsa_sha2_128s_input_type "SLH-DSA-SHA2-128s" -# define slh_dsa_sha2_128f_input_type "SLH-DSA-SHA2-128f" -# define slh_dsa_sha2_192s_input_type "SLH-DSA-SHA2-192s" -# define slh_dsa_sha2_192f_input_type "SLH-DSA-SHA2-192f" -# define slh_dsa_sha2_256s_input_type "SLH-DSA-SHA2-256s" -# define slh_dsa_sha2_256f_input_type "SLH-DSA-SHA2-256f" -# define slh_dsa_shake_128s_input_type "SLH-DSA-SHAKE-128s" -# define slh_dsa_shake_128f_input_type "SLH-DSA-SHAKE-128f" -# define slh_dsa_shake_192s_input_type "SLH-DSA-SHAKE-192s" -# define slh_dsa_shake_192f_input_type "SLH-DSA-SHAKE-192f" -# define slh_dsa_shake_256s_input_type "SLH-DSA-SHAKE-256s" -# define slh_dsa_shake_256f_input_type "SLH-DSA-SHAKE-256f" -# define slh_dsa_sha2_128s_pem_type "SLH-DSA-SHA2-128s" -# define slh_dsa_sha2_128f_pem_type "SLH-DSA-SHA2-128f" -# define slh_dsa_sha2_192s_pem_type "SLH-DSA-SHA2-192s" -# define slh_dsa_sha2_192f_pem_type "SLH-DSA-SHA2-192f" -# define slh_dsa_sha2_256s_pem_type "SLH-DSA-SHA2-256s" -# define slh_dsa_sha2_256f_pem_type "SLH-DSA-SHA2-256f" -# define slh_dsa_shake_128s_pem_type "SLH-DSA-SHAKE-128s" -# define slh_dsa_shake_128f_pem_type "SLH-DSA-SHAKE-128f" -# define slh_dsa_shake_192s_pem_type "SLH-DSA-SHAKE-192s" -# define slh_dsa_shake_192f_pem_type "SLH-DSA-SHAKE-192f" -# define slh_dsa_shake_256s_pem_type "SLH-DSA-SHAKE-256s" -# define slh_dsa_shake_256f_pem_type "SLH-DSA-SHAKE-256f" +#define slh_dsa_check_key_type NULL +#define slh_dsa_sha2_128s_evp_type EVP_PKEY_SLH_DSA_SHA2_128S +#define slh_dsa_sha2_128f_evp_type EVP_PKEY_SLH_DSA_SHA2_128F +#define slh_dsa_sha2_192s_evp_type EVP_PKEY_SLH_DSA_SHA2_192S +#define slh_dsa_sha2_192f_evp_type EVP_PKEY_SLH_DSA_SHA2_192F +#define slh_dsa_sha2_256s_evp_type EVP_PKEY_SLH_DSA_SHA2_256S +#define slh_dsa_sha2_256f_evp_type EVP_PKEY_SLH_DSA_SHA2_256F +#define slh_dsa_shake_128s_evp_type EVP_PKEY_SLH_DSA_SHAKE_128S +#define slh_dsa_shake_128f_evp_type EVP_PKEY_SLH_DSA_SHAKE_128F +#define slh_dsa_shake_192s_evp_type EVP_PKEY_SLH_DSA_SHAKE_192S +#define slh_dsa_shake_192f_evp_type EVP_PKEY_SLH_DSA_SHAKE_192F +#define slh_dsa_shake_256s_evp_type EVP_PKEY_SLH_DSA_SHAKE_256S +#define slh_dsa_shake_256f_evp_type EVP_PKEY_SLH_DSA_SHAKE_256F +#define slh_dsa_sha2_128s_input_type "SLH-DSA-SHA2-128s" +#define slh_dsa_sha2_128f_input_type "SLH-DSA-SHA2-128f" +#define slh_dsa_sha2_192s_input_type "SLH-DSA-SHA2-192s" +#define slh_dsa_sha2_192f_input_type "SLH-DSA-SHA2-192f" +#define slh_dsa_sha2_256s_input_type "SLH-DSA-SHA2-256s" +#define slh_dsa_sha2_256f_input_type "SLH-DSA-SHA2-256f" +#define slh_dsa_shake_128s_input_type "SLH-DSA-SHAKE-128s" +#define slh_dsa_shake_128f_input_type "SLH-DSA-SHAKE-128f" +#define slh_dsa_shake_192s_input_type "SLH-DSA-SHAKE-192s" +#define slh_dsa_shake_192f_input_type "SLH-DSA-SHAKE-192f" +#define slh_dsa_shake_256s_input_type "SLH-DSA-SHAKE-256s" +#define slh_dsa_shake_256f_input_type "SLH-DSA-SHAKE-256f" +#define slh_dsa_sha2_128s_pem_type "SLH-DSA-SHA2-128s" +#define slh_dsa_sha2_128f_pem_type "SLH-DSA-SHA2-128f" +#define slh_dsa_sha2_192s_pem_type "SLH-DSA-SHA2-192s" +#define slh_dsa_sha2_192f_pem_type "SLH-DSA-SHA2-192f" +#define slh_dsa_sha2_256s_pem_type "SLH-DSA-SHA2-256s" +#define slh_dsa_sha2_256f_pem_type "SLH-DSA-SHA2-256f" +#define slh_dsa_shake_128s_pem_type "SLH-DSA-SHAKE-128s" +#define slh_dsa_shake_128f_pem_type "SLH-DSA-SHAKE-128f" +#define slh_dsa_shake_192s_pem_type "SLH-DSA-SHAKE-192s" +#define slh_dsa_shake_192f_pem_type "SLH-DSA-SHAKE-192f" +#define slh_dsa_shake_256s_pem_type "SLH-DSA-SHAKE-256s" +#define slh_dsa_shake_256f_pem_type "SLH-DSA-SHAKE-256f" #endif /* OPENSSL_NO_SLH_DSA */ /* ---------------------------------------------------------------------- */ @@ -1148,12 +1139,9 @@ static int key2any_set_ctx_params(void *vctx, const OSSL_PARAM params[]) { KEY2ANY_CTX *ctx = vctx; OSSL_LIB_CTX *libctx = ossl_prov_ctx_get0_libctx(ctx->provctx); - const OSSL_PARAM *cipherp = - OSSL_PARAM_locate_const(params, OSSL_ENCODER_PARAM_CIPHER); - const OSSL_PARAM *propsp = - OSSL_PARAM_locate_const(params, OSSL_ENCODER_PARAM_PROPERTIES); - const OSSL_PARAM *save_paramsp = - OSSL_PARAM_locate_const(params, OSSL_ENCODER_PARAM_SAVE_PARAMETERS); + const OSSL_PARAM *cipherp = OSSL_PARAM_locate_const(params, OSSL_ENCODER_PARAM_CIPHER); + const OSSL_PARAM *propsp = OSSL_PARAM_locate_const(params, OSSL_ENCODER_PARAM_PROPERTIES); + const OSSL_PARAM *save_paramsp = OSSL_PARAM_locate_const(params, OSSL_ENCODER_PARAM_SAVE_PARAMETERS); if (cipherp != NULL) { const char *ciphername = NULL; @@ -1168,8 +1156,7 @@ static int key2any_set_ctx_params(void *vctx, const OSSL_PARAM params[]) ctx->cipher = NULL; ctx->cipher_intent = ciphername != NULL; if (ciphername != NULL - && ((ctx->cipher = - EVP_CIPHER_fetch(libctx, ciphername, props)) == NULL)) + && ((ctx->cipher = EVP_CIPHER_fetch(libctx, ciphername, props)) == NULL)) return 0; } @@ -1214,26 +1201,25 @@ static int key2any_check_selection(int selection, int selection_mask) } static int key2any_encode(KEY2ANY_CTX *ctx, OSSL_CORE_BIO *cout, - const void *key, int type, const char *pemname, - check_key_type_fn *checker, - key_to_der_fn *writer, - OSSL_PASSPHRASE_CALLBACK *pwcb, void *pwcbarg, - key_to_paramstring_fn *key2paramstring, - OSSL_i2d_of_void_ctx *key2der) + const void *key, int type, const char *pemname, + check_key_type_fn *checker, + key_to_der_fn *writer, + OSSL_PASSPHRASE_CALLBACK *pwcb, void *pwcbarg, + key_to_paramstring_fn *key2paramstring, + OSSL_i2d_of_void_ctx *key2der) { int ret = 0; if (key == NULL) { ERR_raise(ERR_LIB_PROV, ERR_R_PASSED_NULL_PARAMETER); } else if (writer != NULL - && (checker == NULL || checker(key, type))) { + && (checker == NULL || checker(key, type))) { BIO *out = ossl_bio_new_from_core_bio(ctx->provctx, cout); if (out != NULL && (pwcb == NULL || ossl_pw_set_ossl_passphrase_cb(&ctx->pwdata, pwcb, pwcbarg))) - ret = - writer(out, key, type, pemname, key2paramstring, key2der, ctx); + ret = writer(out, key, type, pemname, key2paramstring, key2der, ctx); BIO_free(out); } else { @@ -1243,34 +1229,34 @@ static int key2any_encode(KEY2ANY_CTX *ctx, OSSL_CORE_BIO *cout, } #define DO_PRIVATE_KEY_selection_mask OSSL_KEYMGMT_SELECT_PRIVATE_KEY -#define DO_PRIVATE_KEY(impl, type, kind, output) \ - if ((selection & DO_PRIVATE_KEY_selection_mask) != 0) \ - return key2any_encode(ctx, cout, key, impl##_evp_type, \ - impl##_pem_type " PRIVATE KEY", \ - type##_check_key_type, \ - key_to_##kind##_##output##_priv_bio, \ - cb, cbarg, prepare_##type##_params, \ - type##_##kind##_priv_to_der); +#define DO_PRIVATE_KEY(impl, type, kind, output) \ + if ((selection & DO_PRIVATE_KEY_selection_mask) != 0) \ + return key2any_encode(ctx, cout, key, impl##_evp_type, \ + impl##_pem_type " PRIVATE KEY", \ + type##_check_key_type, \ + key_to_##kind##_##output##_priv_bio, \ + cb, cbarg, prepare_##type##_params, \ + type##_##kind##_priv_to_der); #define DO_PUBLIC_KEY_selection_mask OSSL_KEYMGMT_SELECT_PUBLIC_KEY -#define DO_PUBLIC_KEY(impl, type, kind, output) \ - if ((selection & DO_PUBLIC_KEY_selection_mask) != 0) \ - return key2any_encode(ctx, cout, key, impl##_evp_type, \ - impl##_pem_type " PUBLIC KEY", \ - type##_check_key_type, \ - key_to_##kind##_##output##_pub_bio, \ - cb, cbarg, prepare_##type##_params, \ - type##_##kind##_pub_to_der); +#define DO_PUBLIC_KEY(impl, type, kind, output) \ + if ((selection & DO_PUBLIC_KEY_selection_mask) != 0) \ + return key2any_encode(ctx, cout, key, impl##_evp_type, \ + impl##_pem_type " PUBLIC KEY", \ + type##_check_key_type, \ + key_to_##kind##_##output##_pub_bio, \ + cb, cbarg, prepare_##type##_params, \ + type##_##kind##_pub_to_der); #define DO_PARAMETERS_selection_mask OSSL_KEYMGMT_SELECT_ALL_PARAMETERS -#define DO_PARAMETERS(impl, type, kind, output) \ - if ((selection & DO_PARAMETERS_selection_mask) != 0) \ - return key2any_encode(ctx, cout, key, impl##_evp_type, \ - impl##_pem_type " PARAMETERS", \ - type##_check_key_type, \ - key_to_##kind##_##output##_param_bio, \ - NULL, NULL, NULL, \ - type##_##kind##_params_to_der); +#define DO_PARAMETERS(impl, type, kind, output) \ + if ((selection & DO_PARAMETERS_selection_mask) != 0) \ + return key2any_encode(ctx, cout, key, impl##_evp_type, \ + impl##_pem_type " PARAMETERS", \ + type##_check_key_type, \ + key_to_##kind##_##output##_param_bio, \ + NULL, NULL, NULL, \ + type##_##kind##_params_to_der); /*- * Implement the kinds of output structure that can be produced. They are @@ -1306,16 +1292,16 @@ static int key2any_encode(KEY2ANY_CTX *ctx, OSSL_CORE_BIO *cout, * passphrase callback has been passed to them. */ #define DO_PrivateKeyInfo_selection_mask DO_PRIVATE_KEY_selection_mask -#define DO_PrivateKeyInfo(impl, type, output) \ +#define DO_PrivateKeyInfo(impl, type, output) \ DO_PRIVATE_KEY(impl, type, pki, output) #define DO_EncryptedPrivateKeyInfo_selection_mask DO_PRIVATE_KEY_selection_mask -#define DO_EncryptedPrivateKeyInfo(impl, type, output) \ +#define DO_EncryptedPrivateKeyInfo(impl, type, output) \ DO_PRIVATE_KEY(impl, type, epki, output) /* SubjectPublicKeyInfo is a structure for public keys only */ #define DO_SubjectPublicKeyInfo_selection_mask DO_PUBLIC_KEY_selection_mask -#define DO_SubjectPublicKeyInfo(impl, type, output) \ +#define DO_SubjectPublicKeyInfo(impl, type, output) \ DO_PUBLIC_KEY(impl, type, spki, output) /* @@ -1334,23 +1320,23 @@ static int key2any_encode(KEY2ANY_CTX *ctx, OSSL_CORE_BIO *cout, * except public key */ #define DO_type_specific_params_selection_mask DO_PARAMETERS_selection_mask -#define DO_type_specific_params(impl, type, output) \ +#define DO_type_specific_params(impl, type, output) \ DO_PARAMETERS(impl, type, type_specific, output) -#define DO_type_specific_keypair_selection_mask \ - ( DO_PRIVATE_KEY_selection_mask | DO_PUBLIC_KEY_selection_mask ) -#define DO_type_specific_keypair(impl, type, output) \ - DO_PRIVATE_KEY(impl, type, type_specific, output) \ +#define DO_type_specific_keypair_selection_mask \ + (DO_PRIVATE_KEY_selection_mask | DO_PUBLIC_KEY_selection_mask) +#define DO_type_specific_keypair(impl, type, output) \ + DO_PRIVATE_KEY(impl, type, type_specific, output) \ DO_PUBLIC_KEY(impl, type, type_specific, output) -#define DO_type_specific_selection_mask \ - ( DO_type_specific_keypair_selection_mask \ - | DO_type_specific_params_selection_mask ) -#define DO_type_specific(impl, type, output) \ - DO_type_specific_keypair(impl, type, output) \ - DO_type_specific_params(impl, type, output) +#define DO_type_specific_selection_mask \ + (DO_type_specific_keypair_selection_mask \ + | DO_type_specific_params_selection_mask) +#define DO_type_specific(impl, type, output) \ + DO_type_specific_keypair(impl, type, output) \ + DO_type_specific_params(impl, type, output) #define DO_type_specific_no_pub_selection_mask \ - ( DO_PRIVATE_KEY_selection_mask | DO_PARAMETERS_selection_mask) -#define DO_type_specific_no_pub(impl, type, output) \ - DO_PRIVATE_KEY(impl, type, type_specific, output) \ + (DO_PRIVATE_KEY_selection_mask | DO_PARAMETERS_selection_mask) +#define DO_type_specific_no_pub(impl, type, output) \ + DO_PRIVATE_KEY(impl, type, type_specific, output) \ DO_type_specific_params(impl, type, output) /* @@ -1409,71 +1395,72 @@ static int key2any_encode(KEY2ANY_CTX *ctx, OSSL_CORE_BIO *cout, * * ossl_##impl##_to_##kind##_##output##_encoder_functions */ -#define MAKE_ENCODER(impl, type, kind, output) \ - static OSSL_FUNC_encoder_import_object_fn \ - impl##_to_##kind##_##output##_import_object; \ - static OSSL_FUNC_encoder_free_object_fn \ - impl##_to_##kind##_##output##_free_object; \ - static OSSL_FUNC_encoder_encode_fn \ - impl##_to_##kind##_##output##_encode; \ - \ - static void * \ - impl##_to_##kind##_##output##_import_object(void *vctx, int selection, \ - const OSSL_PARAM params[]) \ - { \ - KEY2ANY_CTX *ctx = vctx; \ - \ - return ossl_prov_import_key(ossl_##impl##_keymgmt_functions, \ - ctx->provctx, selection, params); \ - } \ - static void impl##_to_##kind##_##output##_free_object(void *key) \ - { \ - ossl_prov_free_key(ossl_##impl##_keymgmt_functions, key); \ - } \ - static int impl##_to_##kind##_##output##_does_selection(void *ctx, \ - int selection) \ - { \ - return key2any_check_selection(selection, \ - DO_##kind##_selection_mask); \ - } \ - static int \ - impl##_to_##kind##_##output##_encode(void *ctx, OSSL_CORE_BIO *cout, \ - const void *key, \ - const OSSL_PARAM key_abstract[], \ - int selection, \ - OSSL_PASSPHRASE_CALLBACK *cb, \ - void *cbarg) \ - { \ - /* We don't deal with abstract objects */ \ - if (key_abstract != NULL) { \ - ERR_raise(ERR_LIB_PROV, ERR_R_PASSED_INVALID_ARGUMENT); \ - return 0; \ - } \ - DO_##kind(impl, type, output) \ - \ - ERR_raise(ERR_LIB_PROV, ERR_R_PASSED_INVALID_ARGUMENT); \ - return 0; \ - } \ - const OSSL_DISPATCH \ - ossl_##impl##_to_##kind##_##output##_encoder_functions[] = { \ - { OSSL_FUNC_ENCODER_NEWCTX, \ - (void (*)(void))key2any_newctx }, \ - { OSSL_FUNC_ENCODER_FREECTX, \ - (void (*)(void))key2any_freectx }, \ - { OSSL_FUNC_ENCODER_SETTABLE_CTX_PARAMS, \ - (void (*)(void))key2any_settable_ctx_params }, \ - { OSSL_FUNC_ENCODER_SET_CTX_PARAMS, \ - (void (*)(void))key2any_set_ctx_params }, \ - { OSSL_FUNC_ENCODER_DOES_SELECTION, \ - (void (*)(void))impl##_to_##kind##_##output##_does_selection }, \ - { OSSL_FUNC_ENCODER_IMPORT_OBJECT, \ - (void (*)(void))impl##_to_##kind##_##output##_import_object }, \ - { OSSL_FUNC_ENCODER_FREE_OBJECT, \ - (void (*)(void))impl##_to_##kind##_##output##_free_object }, \ - { OSSL_FUNC_ENCODER_ENCODE, \ - (void (*)(void))impl##_to_##kind##_##output##_encode }, \ - OSSL_DISPATCH_END \ - } +#define MAKE_ENCODER(impl, type, kind, output) \ + static OSSL_FUNC_encoder_import_object_fn \ + impl##_to_##kind##_##output##_import_object; \ + static OSSL_FUNC_encoder_free_object_fn \ + impl##_to_##kind##_##output##_free_object; \ + static OSSL_FUNC_encoder_encode_fn \ + impl##_to_##kind##_##output##_encode; \ + \ + static void * \ + impl##_to_##kind##_##output##_import_object(void *vctx, int selection, \ + const OSSL_PARAM params[]) \ + { \ + KEY2ANY_CTX *ctx = vctx; \ + \ + return ossl_prov_import_key(ossl_##impl##_keymgmt_functions, \ + ctx->provctx, selection, params); \ + } \ + static void impl##_to_##kind##_##output##_free_object(void *key) \ + { \ + ossl_prov_free_key(ossl_##impl##_keymgmt_functions, key); \ + } \ + static int impl##_to_##kind##_##output##_does_selection(void *ctx, \ + int selection) \ + { \ + return key2any_check_selection(selection, \ + DO_##kind##_selection_mask); \ + } \ + static int \ + impl##_to_##kind##_##output##_encode(void *ctx, OSSL_CORE_BIO *cout, \ + const void *key, \ + const OSSL_PARAM key_abstract[], \ + int selection, \ + OSSL_PASSPHRASE_CALLBACK *cb, \ + void *cbarg) \ + { \ + /* We don't deal with abstract objects */ \ + if (key_abstract != NULL) { \ + ERR_raise(ERR_LIB_PROV, ERR_R_PASSED_INVALID_ARGUMENT); \ + return 0; \ + } \ + DO_##kind(impl, type, output) \ + \ + ERR_raise(ERR_LIB_PROV, ERR_R_PASSED_INVALID_ARGUMENT); \ + return 0; \ + } \ + const OSSL_DISPATCH \ + ossl_##impl##_to_##kind##_##output##_encoder_functions[] \ + = { \ + { OSSL_FUNC_ENCODER_NEWCTX, \ + (void (*)(void))key2any_newctx }, \ + { OSSL_FUNC_ENCODER_FREECTX, \ + (void (*)(void))key2any_freectx }, \ + { OSSL_FUNC_ENCODER_SETTABLE_CTX_PARAMS, \ + (void (*)(void))key2any_settable_ctx_params }, \ + { OSSL_FUNC_ENCODER_SET_CTX_PARAMS, \ + (void (*)(void))key2any_set_ctx_params }, \ + { OSSL_FUNC_ENCODER_DOES_SELECTION, \ + (void (*)(void))impl##_to_##kind##_##output##_does_selection }, \ + { OSSL_FUNC_ENCODER_IMPORT_OBJECT, \ + (void (*)(void))impl##_to_##kind##_##output##_import_object }, \ + { OSSL_FUNC_ENCODER_FREE_OBJECT, \ + (void (*)(void))impl##_to_##kind##_##output##_free_object }, \ + { OSSL_FUNC_ENCODER_ENCODE, \ + (void (*)(void))impl##_to_##kind##_##output##_encode }, \ + OSSL_DISPATCH_END \ + } /* * Replacements for i2d_{TYPE}PrivateKey, i2d_{TYPE}PublicKey, @@ -1489,9 +1476,9 @@ MAKE_ENCODER(dsa, dsa, type_specific, der); #endif #ifndef OPENSSL_NO_EC MAKE_ENCODER(ec, ec, type_specific_no_pub, der); -# ifndef OPENSSL_NO_SM2 +#ifndef OPENSSL_NO_SM2 MAKE_ENCODER(sm2, ec, type_specific_no_pub, der); -# endif +#endif #endif /* @@ -1508,9 +1495,9 @@ MAKE_ENCODER(dsa, dsa, type_specific, pem); #endif #ifndef OPENSSL_NO_EC MAKE_ENCODER(ec, ec, type_specific_no_pub, pem); -# ifndef OPENSSL_NO_SM2 +#ifndef OPENSSL_NO_SM2 MAKE_ENCODER(sm2, ec, type_specific_no_pub, pem); -# endif +#endif #endif /* @@ -1562,15 +1549,15 @@ MAKE_ENCODER(ec, ec, PrivateKeyInfo, der); MAKE_ENCODER(ec, ec, PrivateKeyInfo, pem); MAKE_ENCODER(ec, ec, SubjectPublicKeyInfo, der); MAKE_ENCODER(ec, ec, SubjectPublicKeyInfo, pem); -# ifndef OPENSSL_NO_SM2 +#ifndef OPENSSL_NO_SM2 MAKE_ENCODER(sm2, ec, EncryptedPrivateKeyInfo, der); MAKE_ENCODER(sm2, ec, EncryptedPrivateKeyInfo, pem); MAKE_ENCODER(sm2, ec, PrivateKeyInfo, der); MAKE_ENCODER(sm2, ec, PrivateKeyInfo, pem); MAKE_ENCODER(sm2, ec, SubjectPublicKeyInfo, der); MAKE_ENCODER(sm2, ec, SubjectPublicKeyInfo, pem); -# endif -# ifndef OPENSSL_NO_ECX +#endif +#ifndef OPENSSL_NO_ECX MAKE_ENCODER(ed25519, ecx, EncryptedPrivateKeyInfo, der); MAKE_ENCODER(ed25519, ecx, EncryptedPrivateKeyInfo, pem); MAKE_ENCODER(ed25519, ecx, PrivateKeyInfo, der); @@ -1595,7 +1582,7 @@ MAKE_ENCODER(x448, ecx, PrivateKeyInfo, der); MAKE_ENCODER(x448, ecx, PrivateKeyInfo, pem); MAKE_ENCODER(x448, ecx, SubjectPublicKeyInfo, der); MAKE_ENCODER(x448, ecx, SubjectPublicKeyInfo, pem); -# endif +#endif #endif #ifndef OPENSSL_NO_SLH_DSA MAKE_ENCODER(slh_dsa_sha2_128s, slh_dsa, EncryptedPrivateKeyInfo, der); @@ -1718,10 +1705,10 @@ MAKE_ENCODER(dsa, dsa, DSA, pem); #ifndef OPENSSL_NO_EC MAKE_ENCODER(ec, ec, EC, der); MAKE_ENCODER(ec, ec, EC, pem); -# ifndef OPENSSL_NO_SM2 +#ifndef OPENSSL_NO_SM2 MAKE_ENCODER(sm2, ec, SM2, der); MAKE_ENCODER(sm2, ec, SM2, pem); -# endif +#endif #endif /* Convenience structure names */ diff --git a/crypto/openssl/providers/implementations/encode_decode/encode_key2blob.c b/crypto/openssl/providers/implementations/encode_decode/encode_key2blob.c index 29e72faa63de..437bf022d62b 100644 --- a/crypto/openssl/providers/implementations/encode_decode/encode_key2blob.c +++ b/crypto/openssl/providers/implementations/encode_decode/encode_key2blob.c @@ -27,7 +27,7 @@ #include "endecoder_local.h" static int write_blob(void *provctx, OSSL_CORE_BIO *cout, - void *data, int len) + void *data, int len) { BIO *out = ossl_bio_new_from_core_bio(provctx, cout); int ret; @@ -86,7 +86,7 @@ static int key2blob_check_selection(int selection, int selection_mask) } static int key2blob_encode(void *vctx, const void *key, int selection, - OSSL_CORE_BIO *cout) + OSSL_CORE_BIO *cout) { int pubkey_len = 0, ok = 0; unsigned char *pubkey = NULL; @@ -118,62 +118,62 @@ static int key2blob_encode(void *vctx, const void *key, int selection, * EVP_PKEY_##selection_name are convenience macros that combine "typical" * OSSL_KEYMGMT_SELECT_ macros for a certain type of EVP_PKEY content. */ -#define MAKE_BLOB_ENCODER(impl, type, selection_name) \ - static OSSL_FUNC_encoder_import_object_fn \ - impl##2blob_import_object; \ - static OSSL_FUNC_encoder_free_object_fn impl##2blob_free_object; \ - static OSSL_FUNC_encoder_does_selection_fn \ - impl##2blob_does_selection; \ - static OSSL_FUNC_encoder_encode_fn impl##2blob_encode; \ - \ - static void *impl##2blob_import_object(void *ctx, int selection, \ - const OSSL_PARAM params[]) \ - { \ - return ossl_prov_import_key(ossl_##impl##_keymgmt_functions, \ - ctx, selection, params); \ - } \ - static void impl##2blob_free_object(void *key) \ - { \ - ossl_prov_free_key(ossl_##impl##_keymgmt_functions, key); \ - } \ - static int impl##2blob_does_selection(void *ctx, int selection) \ - { \ - return key2blob_check_selection(selection, \ - EVP_PKEY_##selection_name); \ - } \ - static int impl##2blob_encode(void *vctx, OSSL_CORE_BIO *cout, \ - const void *key, \ - const OSSL_PARAM key_abstract[], \ - int selection, \ - OSSL_PASSPHRASE_CALLBACK *cb, \ - void *cbarg) \ - { \ - /* We don't deal with abstract objects */ \ - if (key_abstract != NULL) { \ - ERR_raise(ERR_LIB_PROV, ERR_R_PASSED_INVALID_ARGUMENT); \ - return 0; \ - } \ - return key2blob_encode(vctx, key, selection, cout); \ - } \ - const OSSL_DISPATCH ossl_##impl##_to_blob_encoder_functions[] = { \ - { OSSL_FUNC_ENCODER_NEWCTX, \ - (void (*)(void))key2blob_newctx }, \ - { OSSL_FUNC_ENCODER_FREECTX, \ - (void (*)(void))key2blob_freectx }, \ - { OSSL_FUNC_ENCODER_DOES_SELECTION, \ - (void (*)(void))impl##2blob_does_selection }, \ - { OSSL_FUNC_ENCODER_IMPORT_OBJECT, \ - (void (*)(void))impl##2blob_import_object }, \ - { OSSL_FUNC_ENCODER_FREE_OBJECT, \ - (void (*)(void))impl##2blob_free_object }, \ - { OSSL_FUNC_ENCODER_ENCODE, \ - (void (*)(void))impl##2blob_encode }, \ - OSSL_DISPATCH_END \ +#define MAKE_BLOB_ENCODER(impl, type, selection_name) \ + static OSSL_FUNC_encoder_import_object_fn \ + impl##2blob_import_object; \ + static OSSL_FUNC_encoder_free_object_fn impl##2blob_free_object; \ + static OSSL_FUNC_encoder_does_selection_fn \ + impl##2blob_does_selection; \ + static OSSL_FUNC_encoder_encode_fn impl##2blob_encode; \ + \ + static void *impl##2blob_import_object(void *ctx, int selection, \ + const OSSL_PARAM params[]) \ + { \ + return ossl_prov_import_key(ossl_##impl##_keymgmt_functions, \ + ctx, selection, params); \ + } \ + static void impl##2blob_free_object(void *key) \ + { \ + ossl_prov_free_key(ossl_##impl##_keymgmt_functions, key); \ + } \ + static int impl##2blob_does_selection(void *ctx, int selection) \ + { \ + return key2blob_check_selection(selection, \ + EVP_PKEY_##selection_name); \ + } \ + static int impl##2blob_encode(void *vctx, OSSL_CORE_BIO *cout, \ + const void *key, \ + const OSSL_PARAM key_abstract[], \ + int selection, \ + OSSL_PASSPHRASE_CALLBACK *cb, \ + void *cbarg) \ + { \ + /* We don't deal with abstract objects */ \ + if (key_abstract != NULL) { \ + ERR_raise(ERR_LIB_PROV, ERR_R_PASSED_INVALID_ARGUMENT); \ + return 0; \ + } \ + return key2blob_encode(vctx, key, selection, cout); \ + } \ + const OSSL_DISPATCH ossl_##impl##_to_blob_encoder_functions[] = { \ + { OSSL_FUNC_ENCODER_NEWCTX, \ + (void (*)(void))key2blob_newctx }, \ + { OSSL_FUNC_ENCODER_FREECTX, \ + (void (*)(void))key2blob_freectx }, \ + { OSSL_FUNC_ENCODER_DOES_SELECTION, \ + (void (*)(void))impl##2blob_does_selection }, \ + { OSSL_FUNC_ENCODER_IMPORT_OBJECT, \ + (void (*)(void))impl##2blob_import_object }, \ + { OSSL_FUNC_ENCODER_FREE_OBJECT, \ + (void (*)(void))impl##2blob_free_object }, \ + { OSSL_FUNC_ENCODER_ENCODE, \ + (void (*)(void))impl##2blob_encode }, \ + OSSL_DISPATCH_END \ } #ifndef OPENSSL_NO_EC MAKE_BLOB_ENCODER(ec, ec, PUBLIC_KEY); -# ifndef OPENSSL_NO_SM2 +#ifndef OPENSSL_NO_SM2 MAKE_BLOB_ENCODER(sm2, ec, PUBLIC_KEY); -# endif +#endif #endif diff --git a/crypto/openssl/providers/implementations/encode_decode/encode_key2ms.c b/crypto/openssl/providers/implementations/encode_decode/encode_key2ms.c index 1f21a5129615..362a806589e6 100644 --- a/crypto/openssl/providers/implementations/encode_decode/encode_key2ms.c +++ b/crypto/openssl/providers/implementations/encode_decode/encode_key2ms.c @@ -18,7 +18,7 @@ #include <openssl/core_names.h> #include <openssl/params.h> #include <openssl/err.h> -#include <openssl/pem.h> /* Functions for writing MSBLOB and PVK */ +#include <openssl/pem.h> /* Functions for writing MSBLOB and PVK */ #include <openssl/dsa.h> #include "internal/passphrase.h" #include "crypto/rsa.h" @@ -36,7 +36,7 @@ struct key2ms_ctx_st { }; static int write_msblob(struct key2ms_ctx_st *ctx, OSSL_CORE_BIO *cout, - EVP_PKEY *pkey, int ispub) + EVP_PKEY *pkey, int ispub) { BIO *out = ossl_bio_new_from_core_bio(ctx->provctx, cout); int ret; @@ -50,7 +50,7 @@ static int write_msblob(struct key2ms_ctx_st *ctx, OSSL_CORE_BIO *cout, } static int write_pvk(struct key2ms_ctx_st *ctx, OSSL_CORE_BIO *cout, - EVP_PKEY *pkey) + EVP_PKEY *pkey) { BIO *out = NULL; int ret; @@ -60,7 +60,7 @@ static int write_pvk(struct key2ms_ctx_st *ctx, OSSL_CORE_BIO *cout, if (out == NULL) return 0; ret = i2b_PVK_bio_ex(out, pkey, ctx->pvk_encr_level, - ossl_pw_pvk_password, &ctx->pwdata, libctx, NULL); + ossl_pw_pvk_password, &ctx->pwdata, libctx, NULL); BIO_free(out); return ret; } @@ -126,8 +126,8 @@ static int key2ms_does_selection(void *vctx, int selection) typedef int evp_pkey_set1_fn(EVP_PKEY *, const void *key); static int key2msblob_encode(void *vctx, const void *key, int selection, - OSSL_CORE_BIO *cout, evp_pkey_set1_fn *set1_key, - OSSL_PASSPHRASE_CALLBACK *pw_cb, void *pw_cbarg) + OSSL_CORE_BIO *cout, evp_pkey_set1_fn *set1_key, + OSSL_PASSPHRASE_CALLBACK *pw_cb, void *pw_cbarg) { struct key2ms_ctx_st *ctx = vctx; int ispub = -1; @@ -139,7 +139,7 @@ static int key2msblob_encode(void *vctx, const void *key, int selection, else if ((selection & OSSL_KEYMGMT_SELECT_PUBLIC_KEY) != 0) ispub = 1; else - return 0; /* Error */ + return 0; /* Error */ if ((pkey = EVP_PKEY_new()) != NULL && set1_key(pkey, key)) ok = write_msblob(ctx, cout, pkey, ispub); @@ -148,15 +148,15 @@ static int key2msblob_encode(void *vctx, const void *key, int selection, } static int key2pvk_encode(void *vctx, const void *key, int selection, - OSSL_CORE_BIO *cout, evp_pkey_set1_fn *set1_key, - OSSL_PASSPHRASE_CALLBACK *pw_cb, void *pw_cbarg) + OSSL_CORE_BIO *cout, evp_pkey_set1_fn *set1_key, + OSSL_PASSPHRASE_CALLBACK *pw_cb, void *pw_cbarg) { struct key2ms_ctx_st *ctx = vctx; EVP_PKEY *pkey = NULL; int ok = 0; if ((selection & OSSL_KEYMGMT_SELECT_PRIVATE_KEY) == 0) - return 0; /* Error */ + return 0; /* Error */ if ((pkey = EVP_PKEY_new()) != NULL && set1_key(pkey, key) && (pw_cb == NULL @@ -166,39 +166,39 @@ static int key2pvk_encode(void *vctx, const void *key, int selection, return ok; } -#define dsa_set1 (evp_pkey_set1_fn *)EVP_PKEY_set1_DSA -#define rsa_set1 (evp_pkey_set1_fn *)EVP_PKEY_set1_RSA +#define dsa_set1 (evp_pkey_set1_fn *)EVP_PKEY_set1_DSA +#define rsa_set1 (evp_pkey_set1_fn *)EVP_PKEY_set1_RSA #define msblob_set_params -#define pvk_set_params \ - { OSSL_FUNC_ENCODER_SETTABLE_CTX_PARAMS, \ - (void (*)(void))key2pvk_settable_ctx_params }, \ - { OSSL_FUNC_ENCODER_SET_CTX_PARAMS, \ - (void (*)(void))key2pvk_set_ctx_params }, +#define pvk_set_params \ + { OSSL_FUNC_ENCODER_SETTABLE_CTX_PARAMS, \ + (void (*)(void))key2pvk_settable_ctx_params }, \ + { OSSL_FUNC_ENCODER_SET_CTX_PARAMS, \ + (void (*)(void))key2pvk_set_ctx_params }, #define MAKE_MS_ENCODER(impl, output, type) \ static OSSL_FUNC_encoder_import_object_fn \ - impl##2##output##_import_object; \ + impl##2##output##_import_object; \ static OSSL_FUNC_encoder_free_object_fn impl##2##output##_free_object; \ static OSSL_FUNC_encoder_encode_fn impl##2##output##_encode; \ \ static void * \ - impl##2##output##_import_object(void *ctx, int selection, \ - const OSSL_PARAM params[]) \ + impl##2##output##_import_object(void *ctx, int selection, \ + const OSSL_PARAM params[]) \ { \ return ossl_prov_import_key(ossl_##impl##_keymgmt_functions, \ - ctx, selection, params); \ + ctx, selection, params); \ } \ static void impl##2##output##_free_object(void *key) \ { \ ossl_prov_free_key(ossl_##impl##_keymgmt_functions, key); \ } \ static int impl##2##output##_encode(void *vctx, OSSL_CORE_BIO *cout, \ - const void *key, \ - const OSSL_PARAM key_abstract[], \ - int selection, \ - OSSL_PASSPHRASE_CALLBACK *cb, \ - void *cbarg) \ + const void *key, \ + const OSSL_PARAM key_abstract[], \ + int selection, \ + OSSL_PASSPHRASE_CALLBACK *cb, \ + void *cbarg) \ { \ /* We don't deal with abstract objects */ \ if (key_abstract != NULL) { \ @@ -206,22 +206,21 @@ static int key2pvk_encode(void *vctx, const void *key, int selection, return 0; \ } \ return key2##output##_encode(vctx, key, selection, cout, type##_set1, \ - cb, cbarg); \ + cb, cbarg); \ } \ const OSSL_DISPATCH ossl_##impl##_to_##output##_encoder_functions[] = { \ { OSSL_FUNC_ENCODER_NEWCTX, \ - (void (*)(void))key2ms_newctx }, \ + (void (*)(void))key2ms_newctx }, \ { OSSL_FUNC_ENCODER_FREECTX, \ - (void (*)(void))key2ms_freectx }, \ - output##_set_params \ - { OSSL_FUNC_ENCODER_DOES_SELECTION, \ - (void (*)(void))key2ms_does_selection }, \ + (void (*)(void))key2ms_freectx }, \ + output##_set_params { OSSL_FUNC_ENCODER_DOES_SELECTION, \ + (void (*)(void))key2ms_does_selection }, \ { OSSL_FUNC_ENCODER_IMPORT_OBJECT, \ - (void (*)(void))impl##2##output##_import_object }, \ + (void (*)(void))impl##2##output##_import_object }, \ { OSSL_FUNC_ENCODER_FREE_OBJECT, \ - (void (*)(void))impl##2##output##_free_object }, \ + (void (*)(void))impl##2##output##_free_object }, \ { OSSL_FUNC_ENCODER_ENCODE, \ - (void (*)(void))impl##2##output##_encode }, \ + (void (*)(void))impl##2##output##_encode }, \ OSSL_DISPATCH_END \ } diff --git a/crypto/openssl/providers/implementations/encode_decode/encode_key2text.c b/crypto/openssl/providers/implementations/encode_decode/encode_key2text.c index 7a564807326f..5c120d469d22 100644 --- a/crypto/openssl/providers/implementations/encode_decode/encode_key2text.c +++ b/crypto/openssl/providers/implementations/encode_decode/encode_key2text.c @@ -19,12 +19,12 @@ #include <openssl/err.h> #include <openssl/safestack.h> #include <openssl/proverr.h> -#include "crypto/dh.h" /* ossl_dh_get0_params() */ -#include "crypto/dsa.h" /* ossl_dsa_get0_params() */ -#include "crypto/ec.h" /* ossl_ec_key_get_libctx */ -#include "crypto/ecx.h" /* ECX_KEY, etc... */ -#include "crypto/ml_kem.h" /* ML_KEM_KEY, etc... */ -#include "crypto/rsa.h" /* RSA_PSS_PARAMS_30, etc... */ +#include "crypto/dh.h" /* ossl_dh_get0_params() */ +#include "crypto/dsa.h" /* ossl_dsa_get0_params() */ +#include "crypto/ec.h" /* ossl_ec_key_get_libctx */ +#include "crypto/ecx.h" /* ECX_KEY, etc... */ +#include "crypto/ml_kem.h" /* ML_KEM_KEY, etc... */ +#include "crypto/rsa.h" /* RSA_PSS_PARAMS_30, etc... */ #include "crypto/ml_dsa.h" #include "crypto/slh_dsa.h" #include "prov/bio.h" @@ -102,7 +102,8 @@ static int dh_to_text(BIO *out, const void *key, int selection) length = DH_get_length(dh); if (length > 0 && BIO_printf(out, "recommended-private-length: %ld bits\n", - length) <= 0) + length) + <= 0) return 0; return 1; @@ -180,7 +181,7 @@ static int dsa_to_text(BIO *out, const void *key, int selection) #ifndef OPENSSL_NO_EC static int ec_param_explicit_curve_to_text(BIO *out, const EC_GROUP *group, - BN_CTX *ctx) + BN_CTX *ctx) { const char *plabel = "Prime:"; BIGNUM *p = NULL, *a = NULL, *b = NULL; @@ -207,7 +208,7 @@ static int ec_param_explicit_curve_to_text(BIO *out, const EC_GROUP *group, } static int ec_param_explicit_gen_to_text(BIO *out, const EC_GROUP *group, - BN_CTX *ctx) + BN_CTX *ctx) { int ret; size_t buflen; @@ -224,8 +225,8 @@ static int ec_param_explicit_gen_to_text(BIO *out, const EC_GROUP *group, switch (form) { case POINT_CONVERSION_COMPRESSED: - glabel = "Generator (compressed):"; - break; + glabel = "Generator (compressed):"; + break; case POINT_CONVERSION_UNCOMPRESSED: glabel = "Generator (uncompressed):"; break; @@ -247,7 +248,7 @@ static int ec_param_explicit_gen_to_text(BIO *out, const EC_GROUP *group, /* Print explicit parameters */ static int ec_param_explicit_to_text(BIO *out, const EC_GROUP *group, - OSSL_LIB_CTX *libctx) + OSSL_LIB_CTX *libctx) { int ret = 0, tmp_nid; BN_CTX *ctx = NULL; @@ -288,7 +289,7 @@ err: } static int ec_param_to_text(BIO *out, const EC_GROUP *group, - OSSL_LIB_CTX *libctx) + OSSL_LIB_CTX *libctx) { if (EC_GROUP_get_asn1_flag(group) & OPENSSL_EC_NAMED_CURVE) { const char *curve_name; @@ -303,7 +304,7 @@ static int ec_param_to_text(BIO *out, const EC_GROUP *group, curve_name = EC_curve_nid2nist(curve_nid); return (curve_name == NULL - || BIO_printf(out, "%s: %s\n", "NIST CURVE", curve_name) > 0); + || BIO_printf(out, "%s: %s\n", "NIST CURVE", curve_name) > 0); } else { return ec_param_explicit_to_text(out, group, libctx); } @@ -362,7 +363,8 @@ static int ec_to_text(BIO *out, const void *key, int selection) if (type_label != NULL && BIO_printf(out, "%s: (%d bit)\n", type_label, - EC_GROUP_order_bits(group)) <= 0) + EC_GROUP_order_bits(group)) + <= 0) goto err; if (priv != NULL && !ossl_bio_print_labeled_buf(out, "priv:", priv, priv_len)) @@ -497,11 +499,13 @@ static int rsa_to_text(BIO *out, const void *key, int selection) if ((selection & OSSL_KEYMGMT_SELECT_PRIVATE_KEY) != 0) { if (BIO_printf(out, "%s: (%d bit, %d primes)\n", - type_label, BN_num_bits(rsa_n), primes) <= 0) + type_label, BN_num_bits(rsa_n), primes) + <= 0) goto err; } else { if (BIO_printf(out, "%s: (%d bit)\n", - type_label, BN_num_bits(rsa_n)) <= 0) + type_label, BN_num_bits(rsa_n)) + <= 0) goto err; } @@ -515,35 +519,35 @@ static int rsa_to_text(BIO *out, const void *key, int selection) if (!ossl_bio_print_labeled_bignum(out, "privateExponent:", rsa_d)) goto err; if (!ossl_bio_print_labeled_bignum(out, "prime1:", - sk_BIGNUM_const_value(factors, 0))) + sk_BIGNUM_const_value(factors, 0))) goto err; if (!ossl_bio_print_labeled_bignum(out, "prime2:", - sk_BIGNUM_const_value(factors, 1))) + sk_BIGNUM_const_value(factors, 1))) goto err; if (!ossl_bio_print_labeled_bignum(out, "exponent1:", - sk_BIGNUM_const_value(exps, 0))) + sk_BIGNUM_const_value(exps, 0))) goto err; if (!ossl_bio_print_labeled_bignum(out, "exponent2:", - sk_BIGNUM_const_value(exps, 1))) + sk_BIGNUM_const_value(exps, 1))) goto err; if (!ossl_bio_print_labeled_bignum(out, "coefficient:", - sk_BIGNUM_const_value(coeffs, 0))) + sk_BIGNUM_const_value(coeffs, 0))) goto err; for (i = 2; i < sk_BIGNUM_const_num(factors); i++) { if (BIO_printf(out, "prime%d:", i + 1) <= 0) goto err; if (!ossl_bio_print_labeled_bignum(out, NULL, - sk_BIGNUM_const_value(factors, i))) + sk_BIGNUM_const_value(factors, i))) goto err; if (BIO_printf(out, "exponent%d:", i + 1) <= 0) goto err; if (!ossl_bio_print_labeled_bignum(out, NULL, - sk_BIGNUM_const_value(exps, i))) + sk_BIGNUM_const_value(exps, i))) goto err; if (BIO_printf(out, "coefficient%d:", i + 1) <= 0) goto err; if (!ossl_bio_print_labeled_bignum(out, NULL, - sk_BIGNUM_const_value(coeffs, i - 1))) + sk_BIGNUM_const_value(coeffs, i - 1))) goto err; } } @@ -562,35 +566,38 @@ static int rsa_to_text(BIO *out, const void *key, int selection) goto err; } else { int hashalg_nid = ossl_rsa_pss_params_30_hashalg(pss_params); - int maskgenalg_nid = - ossl_rsa_pss_params_30_maskgenalg(pss_params); - int maskgenhashalg_nid = - ossl_rsa_pss_params_30_maskgenhashalg(pss_params); + int maskgenalg_nid = ossl_rsa_pss_params_30_maskgenalg(pss_params); + int maskgenhashalg_nid = ossl_rsa_pss_params_30_maskgenhashalg(pss_params); int saltlen = ossl_rsa_pss_params_30_saltlen(pss_params); - int trailerfield = - ossl_rsa_pss_params_30_trailerfield(pss_params); + int trailerfield = ossl_rsa_pss_params_30_trailerfield(pss_params); if (BIO_printf(out, "PSS parameter restrictions:\n") <= 0) goto err; if (BIO_printf(out, " Hash Algorithm: %s%s\n", - ossl_rsa_oaeppss_nid2name(hashalg_nid), - (hashalg_nid == NID_sha1 - ? " (default)" : "")) <= 0) + ossl_rsa_oaeppss_nid2name(hashalg_nid), + (hashalg_nid == NID_sha1 + ? " (default)" + : "")) + <= 0) goto err; if (BIO_printf(out, " Mask Algorithm: %s with %s%s\n", - ossl_rsa_mgf_nid2name(maskgenalg_nid), - ossl_rsa_oaeppss_nid2name(maskgenhashalg_nid), - (maskgenalg_nid == NID_mgf1 - && maskgenhashalg_nid == NID_sha1 - ? " (default)" : "")) <= 0) + ossl_rsa_mgf_nid2name(maskgenalg_nid), + ossl_rsa_oaeppss_nid2name(maskgenhashalg_nid), + (maskgenalg_nid == NID_mgf1 + && maskgenhashalg_nid == NID_sha1 + ? " (default)" + : "")) + <= 0) goto err; if (BIO_printf(out, " Minimum Salt Length: %d%s\n", - saltlen, - (saltlen == 20 ? " (default)" : "")) <= 0) + saltlen, + (saltlen == 20 ? " (default)" : "")) + <= 0) goto err; if (BIO_printf(out, " Trailer Field: 0x%x%s\n", - trailerfield, - (trailerfield == 1 ? " (default)" : "")) <= 0) + trailerfield, + (trailerfield == 1 ? " (default)" : "")) + <= 0) goto err; } break; @@ -598,7 +605,7 @@ static int rsa_to_text(BIO *out, const void *key, int selection) } ret = 1; - err: +err: sk_BIGNUM_const_free(factors); sk_BIGNUM_const_free(exps); sk_BIGNUM_const_free(coeffs); @@ -625,10 +632,10 @@ static void key2text_freectx(ossl_unused void *vctx) } static int key2text_encode(void *vctx, const void *key, int selection, - OSSL_CORE_BIO *cout, - int (*key2text)(BIO *out, const void *key, - int selection), - OSSL_PASSPHRASE_CALLBACK *cb, void *cbarg) + OSSL_CORE_BIO *cout, + int (*key2text)(BIO *out, const void *key, + int selection), + OSSL_PASSPHRASE_CALLBACK *cb, void *cbarg) { BIO *out = ossl_bio_new_from_core_bio(vctx, cout); int ret; @@ -642,50 +649,50 @@ static int key2text_encode(void *vctx, const void *key, int selection, return ret; } -#define MAKE_TEXT_ENCODER(impl, type) \ - static OSSL_FUNC_encoder_import_object_fn \ - impl##2text_import_object; \ - static OSSL_FUNC_encoder_free_object_fn \ - impl##2text_free_object; \ - static OSSL_FUNC_encoder_encode_fn impl##2text_encode; \ - \ - static void *impl##2text_import_object(void *ctx, int selection, \ - const OSSL_PARAM params[]) \ - { \ - return ossl_prov_import_key(ossl_##impl##_keymgmt_functions, \ - ctx, selection, params); \ - } \ - static void impl##2text_free_object(void *key) \ - { \ - ossl_prov_free_key(ossl_##impl##_keymgmt_functions, key); \ - } \ - static int impl##2text_encode(void *vctx, OSSL_CORE_BIO *cout, \ - const void *key, \ - const OSSL_PARAM key_abstract[], \ - int selection, \ - OSSL_PASSPHRASE_CALLBACK *cb, \ - void *cbarg) \ - { \ - /* We don't deal with abstract objects */ \ - if (key_abstract != NULL) { \ - ERR_raise(ERR_LIB_PROV, ERR_R_PASSED_INVALID_ARGUMENT); \ - return 0; \ - } \ - return key2text_encode(vctx, key, selection, cout, \ - type##_to_text, cb, cbarg); \ - } \ - const OSSL_DISPATCH ossl_##impl##_to_text_encoder_functions[] = { \ - { OSSL_FUNC_ENCODER_NEWCTX, \ - (void (*)(void))key2text_newctx }, \ - { OSSL_FUNC_ENCODER_FREECTX, \ - (void (*)(void))key2text_freectx }, \ - { OSSL_FUNC_ENCODER_IMPORT_OBJECT, \ - (void (*)(void))impl##2text_import_object }, \ - { OSSL_FUNC_ENCODER_FREE_OBJECT, \ - (void (*)(void))impl##2text_free_object }, \ - { OSSL_FUNC_ENCODER_ENCODE, \ - (void (*)(void))impl##2text_encode }, \ - OSSL_DISPATCH_END \ +#define MAKE_TEXT_ENCODER(impl, type) \ + static OSSL_FUNC_encoder_import_object_fn \ + impl##2text_import_object; \ + static OSSL_FUNC_encoder_free_object_fn \ + impl##2text_free_object; \ + static OSSL_FUNC_encoder_encode_fn impl##2text_encode; \ + \ + static void *impl##2text_import_object(void *ctx, int selection, \ + const OSSL_PARAM params[]) \ + { \ + return ossl_prov_import_key(ossl_##impl##_keymgmt_functions, \ + ctx, selection, params); \ + } \ + static void impl##2text_free_object(void *key) \ + { \ + ossl_prov_free_key(ossl_##impl##_keymgmt_functions, key); \ + } \ + static int impl##2text_encode(void *vctx, OSSL_CORE_BIO *cout, \ + const void *key, \ + const OSSL_PARAM key_abstract[], \ + int selection, \ + OSSL_PASSPHRASE_CALLBACK *cb, \ + void *cbarg) \ + { \ + /* We don't deal with abstract objects */ \ + if (key_abstract != NULL) { \ + ERR_raise(ERR_LIB_PROV, ERR_R_PASSED_INVALID_ARGUMENT); \ + return 0; \ + } \ + return key2text_encode(vctx, key, selection, cout, \ + type##_to_text, cb, cbarg); \ + } \ + const OSSL_DISPATCH ossl_##impl##_to_text_encoder_functions[] = { \ + { OSSL_FUNC_ENCODER_NEWCTX, \ + (void (*)(void))key2text_newctx }, \ + { OSSL_FUNC_ENCODER_FREECTX, \ + (void (*)(void))key2text_freectx }, \ + { OSSL_FUNC_ENCODER_IMPORT_OBJECT, \ + (void (*)(void))impl##2text_import_object }, \ + { OSSL_FUNC_ENCODER_FREE_OBJECT, \ + (void (*)(void))impl##2text_free_object }, \ + { OSSL_FUNC_ENCODER_ENCODE, \ + (void (*)(void))impl##2text_encode }, \ + OSSL_DISPATCH_END \ } #ifndef OPENSSL_NO_DH @@ -697,15 +704,15 @@ MAKE_TEXT_ENCODER(dsa, dsa); #endif #ifndef OPENSSL_NO_EC MAKE_TEXT_ENCODER(ec, ec); -# ifndef OPENSSL_NO_SM2 +#ifndef OPENSSL_NO_SM2 MAKE_TEXT_ENCODER(sm2, ec); -# endif -# ifndef OPENSSL_NO_ECX +#endif +#ifndef OPENSSL_NO_ECX MAKE_TEXT_ENCODER(ed25519, ecx); MAKE_TEXT_ENCODER(ed448, ecx); MAKE_TEXT_ENCODER(x25519, ecx); MAKE_TEXT_ENCODER(x448, ecx); -# endif +#endif #endif #ifndef OPENSSL_NO_ML_KEM MAKE_TEXT_ENCODER(ml_kem_512, ml_kem); diff --git a/crypto/openssl/providers/implementations/encode_decode/endecoder_common.c b/crypto/openssl/providers/implementations/encode_decode/endecoder_common.c index c4ea2f853cfc..2e5b39242a71 100644 --- a/crypto/openssl/providers/implementations/encode_decode/endecoder_common.c +++ b/crypto/openssl/providers/implementations/encode_decode/endecoder_common.c @@ -58,12 +58,11 @@ ossl_prov_get_keymgmt_export(const OSSL_DISPATCH *fns) } void *ossl_prov_import_key(const OSSL_DISPATCH *fns, void *provctx, - int selection, const OSSL_PARAM params[]) + int selection, const OSSL_PARAM params[]) { OSSL_FUNC_keymgmt_new_fn *kmgmt_new = ossl_prov_get_keymgmt_new(fns); OSSL_FUNC_keymgmt_free_fn *kmgmt_free = ossl_prov_get_keymgmt_free(fns); - OSSL_FUNC_keymgmt_import_fn *kmgmt_import = - ossl_prov_get_keymgmt_import(fns); + OSSL_FUNC_keymgmt_import_fn *kmgmt_import = ossl_prov_get_keymgmt_import(fns); void *key = NULL; if (kmgmt_new != NULL && kmgmt_import != NULL && kmgmt_free != NULL) { @@ -84,8 +83,8 @@ void ossl_prov_free_key(const OSSL_DISPATCH *fns, void *key) kmgmt_free(key); } -int ossl_read_der(PROV_CTX *provctx, OSSL_CORE_BIO *cin, unsigned char **data, - long *len) +int ossl_read_der(PROV_CTX *provctx, OSSL_CORE_BIO *cin, unsigned char **data, + long *len) { BUF_MEM *mem = NULL; BIO *in = ossl_bio_new_from_core_bio(provctx, cin); diff --git a/crypto/openssl/providers/implementations/encode_decode/endecoder_local.h b/crypto/openssl/providers/implementations/encode_decode/endecoder_local.h index a65d05ffaeac..2576812be2df 100644 --- a/crypto/openssl/providers/implementations/encode_decode/endecoder_local.h +++ b/crypto/openssl/providers/implementations/encode_decode/endecoder_local.h @@ -18,11 +18,11 @@ OSSL_FUNC_keymgmt_import_fn *ossl_prov_get_keymgmt_import(const OSSL_DISPATCH *f OSSL_FUNC_keymgmt_export_fn *ossl_prov_get_keymgmt_export(const OSSL_DISPATCH *fns); int ossl_prov_der_from_p8(unsigned char **new_der, long *new_der_len, - unsigned char *input_der, long input_der_len, - OSSL_PASSPHRASE_CALLBACK *pw_cb, void *pw_cbarg); + unsigned char *input_der, long input_der_len, + OSSL_PASSPHRASE_CALLBACK *pw_cb, void *pw_cbarg); void *ossl_prov_import_key(const OSSL_DISPATCH *fns, void *provctx, - int selection, const OSSL_PARAM params[]); + int selection, const OSSL_PARAM params[]); void ossl_prov_free_key(const OSSL_DISPATCH *fns, void *key); -int ossl_read_der(PROV_CTX *provctx, OSSL_CORE_BIO *cin, unsigned char **data, - long *len); +int ossl_read_der(PROV_CTX *provctx, OSSL_CORE_BIO *cin, unsigned char **data, + long *len); diff --git a/crypto/openssl/providers/implementations/encode_decode/ml_common_codecs.c b/crypto/openssl/providers/implementations/encode_decode/ml_common_codecs.c index 773550c9fb93..0ce80b67ecd9 100644 --- a/crypto/openssl/providers/implementations/encode_decode/ml_common_codecs.c +++ b/crypto/openssl/providers/implementations/encode_decode/ml_common_codecs.c @@ -33,8 +33,8 @@ static int pref_cmp(const void *va, const void *vb) ML_COMMON_PKCS8_FMT_PREF * ossl_ml_common_pkcs8_fmt_order(const char *algorithm_name, - const ML_COMMON_PKCS8_FMT *p8fmt, - const char *direction, const char *formats) + const ML_COMMON_PKCS8_FMT *p8fmt, + const char *direction, const char *formats) { ML_COMMON_PKCS8_FMT_PREF *ret; int i, count = 0; @@ -57,7 +57,7 @@ ossl_ml_common_pkcs8_fmt_order(const char *algorithm_name, /* * Formats are case-insensitive, separated by spaces, tabs or commas. - * Duplicate formats are allowed, the first occurence determines the order. + * Duplicate formats are allowed, the first occurrence determines the order. */ do { if (*(fmt += strspn(fmt, sep)) == '\0') @@ -67,7 +67,8 @@ ossl_ml_common_pkcs8_fmt_order(const char *algorithm_name, /* Skip slots already selected or with a different name. */ if (ret[i].pref > 0 || OPENSSL_strncasecmp(ret[i].fmt->p8_name, - fmt, (end - fmt)) != 0) + fmt, (end - fmt)) + != 0) continue; /* First time match */ ret[i].pref = ++count; @@ -80,8 +81,8 @@ ossl_ml_common_pkcs8_fmt_order(const char *algorithm_name, if (count == 0) { OPENSSL_free(ret); ERR_raise_data(ERR_LIB_PROV, PROV_R_ML_DSA_NO_FORMAT, - "no %s private key %s formats are enabled", - algorithm_name, direction); + "no %s private key %s formats are enabled", + algorithm_name, direction); return NULL; } /* Sort by preference, with 0's last */ diff --git a/crypto/openssl/providers/implementations/encode_decode/ml_common_codecs.h b/crypto/openssl/providers/implementations/encode_decode/ml_common_codecs.h index 4bf618ea0b79..110b9e0a51dd 100644 --- a/crypto/openssl/providers/implementations/encode_decode/ml_common_codecs.h +++ b/crypto/openssl/providers/implementations/encode_decode/ml_common_codecs.h @@ -8,31 +8,31 @@ */ #ifndef PROV_ML_COMMON_CODECS_H -# define PROV_ML_COMMON_CODECS_H -# pragma once +#define PROV_ML_COMMON_CODECS_H +#pragma once -# include <openssl/e_os2.h> -# include "crypto/ml_dsa.h" -# include "prov/provider_ctx.h" +#include <openssl/e_os2.h> +#include "crypto/ml_dsa.h" +#include "prov/provider_ctx.h" - /*- - * The DER ASN.1 encoding of ML-DSA and ML-KEM public keys prepends 22 bytes - * to the encoded public key: - * - * - 4 byte outer sequence tag and length - * - 2 byte algorithm sequence tag and length - * - 2 byte algorithm OID tag and length - * - 9 byte algorithm OID (from NIST CSOR OID arc) - * - 4 byte bit string tag and length - * - 1 bitstring lead byte - */ -# define ML_COMMON_SPKI_OVERHEAD 22 +/*- + * The DER ASN.1 encoding of ML-DSA and ML-KEM public keys prepends 22 bytes + * to the encoded public key: + * + * - 4 byte outer sequence tag and length + * - 2 byte algorithm sequence tag and length + * - 2 byte algorithm OID tag and length + * - 9 byte algorithm OID (from NIST CSOR OID arc) + * - 4 byte bit string tag and length + * - 1 bitstring lead byte + */ +#define ML_COMMON_SPKI_OVERHEAD 22 typedef struct { const uint8_t asn1_prefix[ML_COMMON_SPKI_OVERHEAD]; } ML_COMMON_SPKI_FMT; /*- -* For each parameter set we support a few PKCS#8 input formats, three + * For each parameter set we support a few PKCS#8 input formats, three * corresponding to the "either or both" variants of: * * ML-DSA-PrivateKey ::= CHOICE { @@ -64,21 +64,21 @@ typedef struct { * The p8_shift is 0 when the top-level tag+length occupy four bytes, 2 when * they occupy two by†es, and 4 when no tag is used at all. */ -#define NUM_PKCS8_FORMATS 6 +#define NUM_PKCS8_FORMATS 6 typedef struct { - const char *p8_name; /* Format name */ - size_t p8_bytes; /* Total P8 encoding length */ - int p8_shift; /* 4 - (top-level tag + len) */ - uint32_t p8_magic; /* The tag + len value */ - uint16_t seed_magic; /* Interior tag + len for the seed */ - size_t seed_offset; /* Seed offset from start */ - size_t seed_length; /* Seed bytes */ - uint32_t priv_magic; /* Interior tag + len for the key */ - size_t priv_offset; /* Key offset from start */ - size_t priv_length; /* Key bytes */ - size_t pub_offset; /* Pubkey offset */ - size_t pub_length; /* Pubkey bytes */ + const char *p8_name; /* Format name */ + size_t p8_bytes; /* Total P8 encoding length */ + int p8_shift; /* 4 - (top-level tag + len) */ + uint32_t p8_magic; /* The tag + len value */ + uint16_t seed_magic; /* Interior tag + len for the seed */ + size_t seed_offset; /* Seed offset from start */ + size_t seed_length; /* Seed bytes */ + uint32_t priv_magic; /* Interior tag + len for the key */ + size_t priv_offset; /* Key offset from start */ + size_t priv_length; /* Key bytes */ + size_t pub_offset; /* Pubkey offset */ + size_t pub_length; /* Pubkey bytes */ } ML_COMMON_PKCS8_FMT; typedef struct { @@ -93,6 +93,6 @@ typedef struct { ML_COMMON_PKCS8_FMT_PREF * ossl_ml_common_pkcs8_fmt_order(const char *algorithm_name, - const ML_COMMON_PKCS8_FMT *p8fmt, - const char *direction, const char *formats); + const ML_COMMON_PKCS8_FMT *p8fmt, + const char *direction, const char *formats); #endif diff --git a/crypto/openssl/providers/implementations/encode_decode/ml_dsa_codecs.c b/crypto/openssl/providers/implementations/encode_decode/ml_dsa_codecs.c index dd54137fe500..faf142466686 100644 --- a/crypto/openssl/providers/implementations/encode_decode/ml_dsa_codecs.c +++ b/crypto/openssl/providers/implementations/encode_decode/ml_dsa_codecs.c @@ -27,16 +27,103 @@ * Private key bytes: 2560 (0x0a00) */ static const ML_COMMON_SPKI_FMT ml_dsa_44_spkifmt = { - { 0x30, 0x82, 0x05, 0x32, 0x30, 0x0b, 0x06, 0x09, 0x60, 0x86, 0x48, - 0x01, 0x65, 0x03, 0x04, 0x03, 0x11, 0x03, 0x82, 0x05, 0x21, 0x00, } + { + 0x30, + 0x82, + 0x05, + 0x32, + 0x30, + 0x0b, + 0x06, + 0x09, + 0x60, + 0x86, + 0x48, + 0x01, + 0x65, + 0x03, + 0x04, + 0x03, + 0x11, + 0x03, + 0x82, + 0x05, + 0x21, + 0x00, + } }; static const ML_COMMON_PKCS8_FMT ml_dsa_44_p8fmt[NUM_PKCS8_FORMATS] = { - { "seed-priv", 0x0a2a, 0, 0x30820a26, 0x0420, 6, 0x20, 0x04820a00, 0x2a, 0x0a00, 0, 0, }, - { "priv-only", 0x0a04, 0, 0x04820a00, 0, 0, 0, 0, 0x04, 0x0a00, 0, 0, }, - { "oqskeypair", 0x0f24, 0, 0x04820f20, 0, 0, 0, 0, 0x04, 0x0a00, 0x0a04, 0x0520 }, - { "seed-only", 0x0022, 2, 0x8020, 0, 2, 0x20, 0, 0, 0, 0, 0, }, - { "bare-priv", 0x0a00, 4, 0, 0, 0, 0, 0, 0, 0x0a00, 0, 0, }, - { "bare-seed", 0x0020, 4, 0, 0, 0, 0x20, 0, 0, 0, 0, 0, }, + { + "seed-priv", + 0x0a2a, + 0, + 0x30820a26, + 0x0420, + 6, + 0x20, + 0x04820a00, + 0x2a, + 0x0a00, + 0, + 0, + }, + { + "priv-only", + 0x0a04, + 0, + 0x04820a00, + 0, + 0, + 0, + 0, + 0x04, + 0x0a00, + 0, + 0, + }, + { "oqskeypair", 0x0f24, 0, 0x04820f20, 0, 0, 0, 0, 0x04, 0x0a00, 0x0a04, 0x0520 }, + { + "seed-only", + 0x0022, + 2, + 0x8020, + 0, + 2, + 0x20, + 0, + 0, + 0, + 0, + 0, + }, + { + "bare-priv", + 0x0a00, + 4, + 0, + 0, + 0, + 0, + 0, + 0, + 0x0a00, + 0, + 0, + }, + { + "bare-seed", + 0x0020, + 4, + 0, + 0, + 0, + 0x20, + 0, + 0, + 0, + 0, + 0, + }, }; /* @@ -45,16 +132,103 @@ static const ML_COMMON_PKCS8_FMT ml_dsa_44_p8fmt[NUM_PKCS8_FORMATS] = { * Private key bytes: 4032 (0x0fc0) */ static const ML_COMMON_SPKI_FMT ml_dsa_65_spkifmt = { - { 0x30, 0x82, 0x07, 0xb2, 0x30, 0x0b, 0x06, 0x09, 0x60, 0x86, 0x48, - 0x01, 0x65, 0x03, 0x04, 0x03, 0x12, 0x03, 0x82, 0x07, 0xa1, 0x00, } + { + 0x30, + 0x82, + 0x07, + 0xb2, + 0x30, + 0x0b, + 0x06, + 0x09, + 0x60, + 0x86, + 0x48, + 0x01, + 0x65, + 0x03, + 0x04, + 0x03, + 0x12, + 0x03, + 0x82, + 0x07, + 0xa1, + 0x00, + } }; static const ML_COMMON_PKCS8_FMT ml_dsa_65_p8fmt[NUM_PKCS8_FORMATS] = { - { "seed-priv", 0x0fea, 0, 0x30820fe6, 0x0420, 6, 0x20, 0x04820fc0, 0x2a, 0x0fc0, 0, 0, }, - { "priv-only", 0x0fc4, 0, 0x04820fc0, 0, 0, 0, 0, 0x04, 0x0fc0, 0, 0, }, - { "oqskeypair", 0x1764, 0, 0x04821760, 0, 0, 0, 0, 0x04, 0x0fc0, 0x0fc4, 0x07a0 }, - { "seed-only", 0x0022, 2, 0x8020, 0, 2, 0x20, 0, 0, 0, 0, 0, }, - { "bare-priv", 0x0fc0, 4, 0, 0, 0, 0, 0, 0, 0x0fc0, 0, 0, }, - { "bare-seed", 0x0020, 4, 0, 0, 0, 0x20, 0, 0, 0, 0, 0, }, + { + "seed-priv", + 0x0fea, + 0, + 0x30820fe6, + 0x0420, + 6, + 0x20, + 0x04820fc0, + 0x2a, + 0x0fc0, + 0, + 0, + }, + { + "priv-only", + 0x0fc4, + 0, + 0x04820fc0, + 0, + 0, + 0, + 0, + 0x04, + 0x0fc0, + 0, + 0, + }, + { "oqskeypair", 0x1764, 0, 0x04821760, 0, 0, 0, 0, 0x04, 0x0fc0, 0x0fc4, 0x07a0 }, + { + "seed-only", + 0x0022, + 2, + 0x8020, + 0, + 2, + 0x20, + 0, + 0, + 0, + 0, + 0, + }, + { + "bare-priv", + 0x0fc0, + 4, + 0, + 0, + 0, + 0, + 0, + 0, + 0x0fc0, + 0, + 0, + }, + { + "bare-seed", + 0x0020, + 4, + 0, + 0, + 0, + 0x20, + 0, + 0, + 0, + 0, + 0, + }, }; /*- @@ -63,22 +237,109 @@ static const ML_COMMON_PKCS8_FMT ml_dsa_65_p8fmt[NUM_PKCS8_FORMATS] = { * Private key bytes: 4896 (0x1320) */ static const ML_COMMON_SPKI_FMT ml_dsa_87_spkifmt = { - { 0x30, 0x82, 0x0a, 0x32, 0x30, 0x0b, 0x06, 0x09, 0x60, 0x86, 0x48, - 0x01, 0x65, 0x03, 0x04, 0x03, 0x13, 0x03, 0x82, 0x0a, 0x21, 0x00, } + { + 0x30, + 0x82, + 0x0a, + 0x32, + 0x30, + 0x0b, + 0x06, + 0x09, + 0x60, + 0x86, + 0x48, + 0x01, + 0x65, + 0x03, + 0x04, + 0x03, + 0x13, + 0x03, + 0x82, + 0x0a, + 0x21, + 0x00, + } }; static const ML_COMMON_PKCS8_FMT ml_dsa_87_p8fmt[NUM_PKCS8_FORMATS] = { - { "seed-priv", 0x134a, 0, 0x30821346, 0x0420, 6, 0x20, 0x04821320, 0x2a, 0x1320, 0, 0, }, - { "priv-only", 0x1324, 0, 0x04821320, 0, 0, 0, 0, 0x04, 0x1320, 0, 0, }, - { "oqskeypair", 0x1d44, 0, 0x04821d40, 0, 0, 0, 0, 0x04, 0x1320, 0x1324, 0x0a20 }, - { "seed-only", 0x0022, 2, 0x8020, 0, 2, 0x20, 0, 0, 0, 0, 0, }, - { "bare-priv", 0x1320, 4, 0, 0, 0, 0, 0, 0, 0x1320, 0, 0, }, - { "bare-seed", 0x0020, 4, 0, 0, 0, 0x20, 0, 0, 0, 0, 0, }, + { + "seed-priv", + 0x134a, + 0, + 0x30821346, + 0x0420, + 6, + 0x20, + 0x04821320, + 0x2a, + 0x1320, + 0, + 0, + }, + { + "priv-only", + 0x1324, + 0, + 0x04821320, + 0, + 0, + 0, + 0, + 0x04, + 0x1320, + 0, + 0, + }, + { "oqskeypair", 0x1d44, 0, 0x04821d40, 0, 0, 0, 0, 0x04, 0x1320, 0x1324, 0x0a20 }, + { + "seed-only", + 0x0022, + 2, + 0x8020, + 0, + 2, + 0x20, + 0, + 0, + 0, + 0, + 0, + }, + { + "bare-priv", + 0x1320, + 4, + 0, + 0, + 0, + 0, + 0, + 0, + 0x1320, + 0, + 0, + }, + { + "bare-seed", + 0x0020, + 4, + 0, + 0, + 0, + 0x20, + 0, + 0, + 0, + 0, + 0, + }, }; /* Indices of slots in the codec table below */ -#define ML_DSA_44_CODEC 0 -#define ML_DSA_65_CODEC 1 -#define ML_DSA_87_CODEC 2 +#define ML_DSA_44_CODEC 0 +#define ML_DSA_65_CODEC 1 +#define ML_DSA_87_CODEC 2 /* * Per-variant fixed parameters @@ -105,7 +366,7 @@ static const ML_COMMON_CODEC *ml_dsa_get_codec(int evp_type) ML_DSA_KEY * ossl_ml_dsa_d2i_PUBKEY(const uint8_t *pk, int pk_len, int evp_type, - PROV_CTX *provctx, const char *propq) + PROV_CTX *provctx, const char *propq) { OSSL_LIB_CTX *libctx = PROV_LIBCTX_OF(provctx); const ML_COMMON_CODEC *codec; @@ -115,7 +376,7 @@ ossl_ml_dsa_d2i_PUBKEY(const uint8_t *pk, int pk_len, int evp_type, if ((params = ossl_ml_dsa_params_get(evp_type)) == NULL || (codec = ml_dsa_get_codec(evp_type)) == NULL) return NULL; - if (pk_len != ML_COMMON_SPKI_OVERHEAD + (ossl_ssize_t) params->pk_len + if (pk_len != ML_COMMON_SPKI_OVERHEAD + (ossl_ssize_t)params->pk_len || memcmp(pk, codec->spkifmt->asn1_prefix, ML_COMMON_SPKI_OVERHEAD) != 0) return NULL; pk_len -= ML_COMMON_SPKI_OVERHEAD; @@ -124,10 +385,10 @@ ossl_ml_dsa_d2i_PUBKEY(const uint8_t *pk, int pk_len, int evp_type, if ((ret = ossl_ml_dsa_key_new(libctx, propq, evp_type)) == NULL) return NULL; - if (!ossl_ml_dsa_pk_decode(ret, pk, (size_t) pk_len)) { + if (!ossl_ml_dsa_pk_decode(ret, pk, (size_t)pk_len)) { ERR_raise_data(ERR_LIB_PROV, PROV_R_BAD_ENCODING, - "errror parsing %s public key from input SPKI", - params->alg); + "error parsing %s public key from input SPKI", + params->alg); ossl_ml_dsa_key_free(ret); return NULL; } @@ -137,8 +398,8 @@ ossl_ml_dsa_d2i_PUBKEY(const uint8_t *pk, int pk_len, int evp_type, ML_DSA_KEY * ossl_ml_dsa_d2i_PKCS8(const uint8_t *prvenc, int prvlen, - int evp_type, PROV_CTX *provctx, - const char *propq) + int evp_type, PROV_CTX *provctx, + const char *propq) { const ML_DSA_PARAMS *v; const ML_COMMON_CODEC *codec; @@ -174,7 +435,7 @@ ossl_ml_dsa_d2i_PKCS8(const uint8_t *prvenc, int prvlen, formats = ossl_prov_ctx_get_param( provctx, OSSL_PKEY_PARAM_ML_DSA_INPUT_FORMATS, NULL); fmt_slots = ossl_ml_common_pkcs8_fmt_order(v->alg, codec->p8fmt, - "input", formats); + "input", formats); if (fmt_slots == NULL) goto end; @@ -182,8 +443,8 @@ ossl_ml_dsa_d2i_PKCS8(const uint8_t *prvenc, int prvlen, X509_ALGOR_get0(NULL, &ptype, NULL, alg); if (ptype != V_ASN1_UNDEF) { ERR_raise_data(ERR_LIB_PROV, PROV_R_UNEXPECTED_KEY_PARAMETERS, - "unexpected parameters with a PKCS#8 %s private key", - v->alg); + "unexpected parameters with a PKCS#8 %s private key", + v->alg); goto end; } if ((ossl_ssize_t)len < (ossl_ssize_t)sizeof(magic)) @@ -205,8 +466,8 @@ ossl_ml_dsa_d2i_PKCS8(const uint8_t *prvenc, int prvlen, || (p8fmt->priv_length > 0 && p8fmt->priv_length != v->sk_len) || (p8fmt->pub_length > 0 && p8fmt->pub_length != v->pk_len)) { ERR_raise_data(ERR_LIB_PROV, PROV_R_ML_DSA_NO_FORMAT, - "no matching enabled %s private key input formats", - v->alg); + "no matching enabled %s private key input formats", + v->alg); goto end; } @@ -253,10 +514,10 @@ ossl_ml_dsa_d2i_PKCS8(const uint8_t *prvenc, int prvlen, /* Any OQS public key content is ignored */ if (ossl_ml_dsa_set_prekey(key, 0, 0, - seed, ML_DSA_SEED_BYTES, priv, v->sk_len)) + seed, ML_DSA_SEED_BYTES, priv, v->sk_len)) ret = key; - end: +end: OPENSSL_free(fmt_slots); PKCS8_PRIV_KEY_INFO_free(p8inf); if (ret == NULL) @@ -272,7 +533,7 @@ int ossl_ml_dsa_i2d_pubkey(const ML_DSA_KEY *key, unsigned char **out) if (pk == NULL) { ERR_raise_data(ERR_LIB_PROV, PROV_R_NOT_A_PUBLIC_KEY, - "no %s public key data available", params->alg); + "no %s public key data available", params->alg); return 0; } if (out != NULL @@ -283,7 +544,7 @@ int ossl_ml_dsa_i2d_pubkey(const ML_DSA_KEY *key, unsigned char **out) /* Allocate and encode PKCS#8 private key payload. */ int ossl_ml_dsa_i2d_prvkey(const ML_DSA_KEY *key, uint8_t **out, - PROV_CTX *provctx) + PROV_CTX *provctx) { const ML_DSA_PARAMS *params = ossl_ml_dsa_key_params(key); const ML_COMMON_CODEC *codec; @@ -302,15 +563,15 @@ int ossl_ml_dsa_i2d_prvkey(const ML_DSA_KEY *key, uint8_t **out, if (sk == NULL) { ERR_raise_data(ERR_LIB_PROV, PROV_R_NOT_A_PRIVATE_KEY, - "no %s private key data available", - params->alg); + "no %s private key data available", + params->alg); return 0; } formats = ossl_prov_ctx_get_param( provctx, OSSL_PKEY_PARAM_ML_DSA_OUTPUT_FORMATS, NULL); fmt_slots = ossl_ml_common_pkcs8_fmt_order(params->alg, codec->p8fmt, - "output", formats); + "output", formats); if (fmt_slots == NULL) return 0; @@ -324,8 +585,8 @@ int ossl_ml_dsa_i2d_prvkey(const ML_DSA_KEY *key, uint8_t **out, || (p8fmt->priv_length > 0 && p8fmt->priv_length != params->sk_len) || (p8fmt->pub_length > 0 && p8fmt->pub_length != params->pk_len)) { ERR_raise_data(ERR_LIB_PROV, PROV_R_ML_DSA_NO_FORMAT, - "no matching enabled %s private key output formats", - params->alg); + "no matching enabled %s private key output formats", + params->alg); goto end; } len = p8fmt->p8_bytes; @@ -335,7 +596,7 @@ int ossl_ml_dsa_i2d_prvkey(const ML_DSA_KEY *key, uint8_t **out, goto end; } - if ((pos = buf = OPENSSL_malloc((size_t) len)) == NULL) + if ((pos = buf = OPENSSL_malloc((size_t)len)) == NULL) goto end; switch (p8fmt->p8_shift) { @@ -349,7 +610,7 @@ int ossl_ml_dsa_i2d_prvkey(const ML_DSA_KEY *key, uint8_t **out, break; default: ERR_raise_data(ERR_LIB_PROV, ERR_R_INTERNAL_ERROR, - "error encoding %s private key", params->alg); + "error encoding %s private key", params->alg); goto end; } @@ -362,7 +623,7 @@ int ossl_ml_dsa_i2d_prvkey(const ML_DSA_KEY *key, uint8_t **out, pos = OPENSSL_store_u16_be(pos, p8fmt->seed_magic); if (pos != buf + p8fmt->seed_offset) { ERR_raise_data(ERR_LIB_PROV, ERR_R_INTERNAL_ERROR, - "error encoding %s private key", params->alg); + "error encoding %s private key", params->alg); goto end; } memcpy(pos, seed, ML_DSA_SEED_BYTES); @@ -373,7 +634,7 @@ int ossl_ml_dsa_i2d_prvkey(const ML_DSA_KEY *key, uint8_t **out, pos = OPENSSL_store_u32_be(pos, p8fmt->priv_magic); if (pos != buf + p8fmt->priv_offset) { ERR_raise_data(ERR_LIB_PROV, ERR_R_INTERNAL_ERROR, - "error encoding %s private key", params->alg); + "error encoding %s private key", params->alg); goto end; } memcpy(pos, sk, params->sk_len); @@ -384,7 +645,7 @@ int ossl_ml_dsa_i2d_prvkey(const ML_DSA_KEY *key, uint8_t **out, /* The OQS pubkey is never separately DER-wrapped */ if (pos != buf + p8fmt->pub_offset) { ERR_raise_data(ERR_LIB_PROV, ERR_R_INTERNAL_ERROR, - "error encoding %s private key", params->alg); + "error encoding %s private key", params->alg); goto end; } memcpy(pos, ossl_ml_dsa_key_get_pub(key), params->pk_len); @@ -396,7 +657,7 @@ int ossl_ml_dsa_i2d_prvkey(const ML_DSA_KEY *key, uint8_t **out, ret = len; } - end: +end: OPENSSL_free(fmt_slots); if (ret == 0) OPENSSL_free(buf); @@ -420,20 +681,19 @@ int ossl_ml_dsa_key_to_text(BIO *out, const ML_DSA_KEY *key, int selection) if (pk == NULL) { /* Regardless of the |selection|, there must be a public key */ ERR_raise_data(ERR_LIB_PROV, PROV_R_MISSING_KEY, - "no %s key material available", params->alg); + "no %s key material available", params->alg); return 0; } if ((selection & OSSL_KEYMGMT_SELECT_PRIVATE_KEY) != 0) { if (sk == NULL) { ERR_raise_data(ERR_LIB_PROV, PROV_R_MISSING_KEY, - "no %s key material available", params->alg); + "no %s key material available", params->alg); return 0; } if (BIO_printf(out, "%s Private-Key:\n", params->alg) <= 0) return 0; - if (seed != NULL && !ossl_bio_print_labeled_buf(out, "seed:", seed, - ML_DSA_SEED_BYTES)) + if (seed != NULL && !ossl_bio_print_labeled_buf(out, "seed:", seed, ML_DSA_SEED_BYTES)) return 0; if (!ossl_bio_print_labeled_buf(out, "priv:", sk, params->sk_len)) return 0; diff --git a/crypto/openssl/providers/implementations/encode_decode/ml_dsa_codecs.h b/crypto/openssl/providers/implementations/encode_decode/ml_dsa_codecs.h index c0c2e842a242..e05b54b1d0a3 100644 --- a/crypto/openssl/providers/implementations/encode_decode/ml_dsa_codecs.h +++ b/crypto/openssl/providers/implementations/encode_decode/ml_dsa_codecs.h @@ -8,32 +8,29 @@ */ #ifndef PROV_ML_DSA_CODECS_H -# define PROV_ML_DSA_CODECS_H -# pragma once +#define PROV_ML_DSA_CODECS_H +#pragma once -# ifndef OPENSSL_NO_ML_DSA -# include <openssl/e_os2.h> -# include "crypto/ml_dsa.h" -# include "prov/provider_ctx.h" -# include "ml_common_codecs.h" +#ifndef OPENSSL_NO_ML_DSA +#include <openssl/e_os2.h> +#include "crypto/ml_dsa.h" +#include "prov/provider_ctx.h" +#include "ml_common_codecs.h" +__owur ML_DSA_KEY *ossl_ml_dsa_d2i_PUBKEY(const uint8_t *pubenc, int publen, + int evp_type, PROV_CTX *provctx, + const char *propq); +__owur ML_DSA_KEY *ossl_ml_dsa_d2i_PKCS8(const uint8_t *prvenc, int prvlen, + int evp_type, PROV_CTX *provctx, + const char *propq); +__owur int ossl_ml_dsa_key_to_text(BIO *out, const ML_DSA_KEY *key, int selection); __owur -ML_DSA_KEY *ossl_ml_dsa_d2i_PUBKEY(const uint8_t *pubenc, int publen, - int evp_type, PROV_CTX *provctx, - const char *propq); + __owur int + ossl_ml_dsa_i2d_pubkey(const ML_DSA_KEY *key, unsigned char **out); __owur -ML_DSA_KEY *ossl_ml_dsa_d2i_PKCS8(const uint8_t *prvenc, int prvlen, - int evp_type, PROV_CTX *provctx, - const char *propq); -__owur -int ossl_ml_dsa_key_to_text(BIO *out, const ML_DSA_KEY *key, int selection); -__owur -__owur -int ossl_ml_dsa_i2d_pubkey(const ML_DSA_KEY *key, unsigned char **out); -__owur -__owur -int ossl_ml_dsa_i2d_prvkey(const ML_DSA_KEY *key, unsigned char **out, - PROV_CTX *provctx); + __owur int + ossl_ml_dsa_i2d_prvkey(const ML_DSA_KEY *key, unsigned char **out, + PROV_CTX *provctx); -# endif /* OPENSSL_NO_ML_DSA */ -#endif /* PROV_ML_DSA_CODECS_H */ +#endif /* OPENSSL_NO_ML_DSA */ +#endif /* PROV_ML_DSA_CODECS_H */ diff --git a/crypto/openssl/providers/implementations/encode_decode/ml_kem_codecs.c b/crypto/openssl/providers/implementations/encode_decode/ml_kem_codecs.c index fe0c8acc7e63..482775433b62 100644 --- a/crypto/openssl/providers/implementations/encode_decode/ml_kem_codecs.c +++ b/crypto/openssl/providers/implementations/encode_decode/ml_kem_codecs.c @@ -24,16 +24,38 @@ * Private key bytes: 1632 (0x0660) */ static const ML_COMMON_SPKI_FMT ml_kem_512_spkifmt = { - { 0x30, 0x82, 0x03, 0x32, 0x30, 0x0b, 0x06, 0x09, 0x60, 0x86, 0x48, - 0x01, 0x65, 0x03, 0x04, 0x04, 0x01, 0x03, 0x82, 0x03, 0x21, 0x00, } + { + 0x30, + 0x82, + 0x03, + 0x32, + 0x30, + 0x0b, + 0x06, + 0x09, + 0x60, + 0x86, + 0x48, + 0x01, + 0x65, + 0x03, + 0x04, + 0x04, + 0x01, + 0x03, + 0x82, + 0x03, + 0x21, + 0x00, + } }; static const ML_COMMON_PKCS8_FMT ml_kem_512_p8fmt[NUM_PKCS8_FORMATS] = { - { "seed-priv", 0x06aa, 0, 0x308206a6, 0x0440, 6, 0x40, 0x04820660, 0x4a, 0x0660, 0, 0 }, - { "priv-only", 0x0664, 0, 0x04820660, 0, 0, 0, 0, 0x04, 0x0660, 0, 0 }, - { "oqskeypair", 0x0984, 0, 0x04820980, 0, 0, 0, 0, 0x04, 0x0660, 0x0664, 0x0320 }, - { "seed-only", 0x0042, 2, 0x8040, 0, 2, 0x40, 0, 0, 0, 0, 0 }, - { "bare-priv", 0x0660, 4, 0, 0, 0, 0, 0, 0, 0x0660, 0, 0 }, - { "bare-seed", 0x0040, 4, 0, 0, 0, 0x40, 0, 0, 0, 0, 0 }, + { "seed-priv", 0x06aa, 0, 0x308206a6, 0x0440, 6, 0x40, 0x04820660, 0x4a, 0x0660, 0, 0 }, + { "priv-only", 0x0664, 0, 0x04820660, 0, 0, 0, 0, 0x04, 0x0660, 0, 0 }, + { "oqskeypair", 0x0984, 0, 0x04820980, 0, 0, 0, 0, 0x04, 0x0660, 0x0664, 0x0320 }, + { "seed-only", 0x0042, 2, 0x8040, 0, 2, 0x40, 0, 0, 0, 0, 0 }, + { "bare-priv", 0x0660, 4, 0, 0, 0, 0, 0, 0, 0x0660, 0, 0 }, + { "bare-seed", 0x0040, 4, 0, 0, 0, 0x40, 0, 0, 0, 0, 0 }, }; /*- @@ -42,16 +64,103 @@ static const ML_COMMON_PKCS8_FMT ml_kem_512_p8fmt[NUM_PKCS8_FORMATS] = { * Private key bytes: 2400 (0x0960) */ static const ML_COMMON_SPKI_FMT ml_kem_768_spkifmt = { - { 0x30, 0x82, 0x04, 0xb2, 0x30, 0x0b, 0x06, 0x09, 0x60, 0x86, 0x48, - 0x01, 0x65, 0x03, 0x04, 0x04, 0x02, 0x03, 0x82, 0x04, 0xa1, 0x00, } + { + 0x30, + 0x82, + 0x04, + 0xb2, + 0x30, + 0x0b, + 0x06, + 0x09, + 0x60, + 0x86, + 0x48, + 0x01, + 0x65, + 0x03, + 0x04, + 0x04, + 0x02, + 0x03, + 0x82, + 0x04, + 0xa1, + 0x00, + } }; static const ML_COMMON_PKCS8_FMT ml_kem_768_p8fmt[NUM_PKCS8_FORMATS] = { - { "seed-priv", 0x09aa, 0, 0x308209a6, 0x0440, 6, 0x40, 0x04820960, 0x4a, 0x0960, 0, 0, }, - { "priv-only", 0x0964, 0, 0x04820960, 0, 0, 0, 0, 0x04, 0x0960, 0, 0, }, - { "oqskeypair", 0x0e04, 0, 0x04820e00, 0, 0, 0, 0, 0x04, 0x0960, 0x0964, 0x04a0 }, - { "seed-only", 0x0042, 2, 0x8040, 0, 2, 0x40, 0, 0, 0, 0, 0, }, - { "bare-priv", 0x0960, 4, 0, 0, 0, 0, 0, 0, 0x0960, 0, 0, }, - { "bare-seed", 0x0040, 4, 0, 0, 0, 0x40, 0, 0, 0, 0, 0, }, + { + "seed-priv", + 0x09aa, + 0, + 0x308209a6, + 0x0440, + 6, + 0x40, + 0x04820960, + 0x4a, + 0x0960, + 0, + 0, + }, + { + "priv-only", + 0x0964, + 0, + 0x04820960, + 0, + 0, + 0, + 0, + 0x04, + 0x0960, + 0, + 0, + }, + { "oqskeypair", 0x0e04, 0, 0x04820e00, 0, 0, 0, 0, 0x04, 0x0960, 0x0964, 0x04a0 }, + { + "seed-only", + 0x0042, + 2, + 0x8040, + 0, + 2, + 0x40, + 0, + 0, + 0, + 0, + 0, + }, + { + "bare-priv", + 0x0960, + 4, + 0, + 0, + 0, + 0, + 0, + 0, + 0x0960, + 0, + 0, + }, + { + "bare-seed", + 0x0040, + 4, + 0, + 0, + 0, + 0x40, + 0, + 0, + 0, + 0, + 0, + }, }; /*- @@ -60,29 +169,51 @@ static const ML_COMMON_PKCS8_FMT ml_kem_768_p8fmt[NUM_PKCS8_FORMATS] = { * Public key bytes: 1568 (0x0620) */ static const ML_COMMON_SPKI_FMT ml_kem_1024_spkifmt = { - { 0x30, 0x82, 0x06, 0x32, 0x30, 0x0b, 0x06, 0x09, 0x60, 0x86, 0x48, - 0x01, 0x65, 0x03, 0x04, 0x04, 0x03, 0x03, 0x82, 0x06, 0x21, 0x00, } + { + 0x30, + 0x82, + 0x06, + 0x32, + 0x30, + 0x0b, + 0x06, + 0x09, + 0x60, + 0x86, + 0x48, + 0x01, + 0x65, + 0x03, + 0x04, + 0x04, + 0x03, + 0x03, + 0x82, + 0x06, + 0x21, + 0x00, + } }; static const ML_COMMON_PKCS8_FMT ml_kem_1024_p8fmt[NUM_PKCS8_FORMATS] = { - { "seed-priv", 0x0caa, 0, 0x30820ca6, 0x0440, 6, 0x40, 0x04820c60, 0x4a, 0x0c60, 0, 0 }, - { "priv-only", 0x0c64, 0, 0x04820c60, 0, 0, 0, 0, 0x04, 0x0c60, 0, 0 }, - { "oqskeypair", 0x1284, 0, 0x04821280, 0, 0, 0, 0, 0x04, 0x0c60, 0x0c64, 0x0620 }, - { "seed-only", 0x0042, 2, 0x8040, 0, 2, 0x40, 0, 0, 0, 0, 0 }, - { "bare-priv", 0x0c60, 4, 0, 0, 0, 0, 0, 0, 0x0c60, 0, 0 }, - { "bare-seed", 0x0040, 4, 0, 0, 0, 0x40, 0, 0, 0, 0, 0 }, + { "seed-priv", 0x0caa, 0, 0x30820ca6, 0x0440, 6, 0x40, 0x04820c60, 0x4a, 0x0c60, 0, 0 }, + { "priv-only", 0x0c64, 0, 0x04820c60, 0, 0, 0, 0, 0x04, 0x0c60, 0, 0 }, + { "oqskeypair", 0x1284, 0, 0x04821280, 0, 0, 0, 0, 0x04, 0x0c60, 0x0c64, 0x0620 }, + { "seed-only", 0x0042, 2, 0x8040, 0, 2, 0x40, 0, 0, 0, 0, 0 }, + { "bare-priv", 0x0c60, 4, 0, 0, 0, 0, 0, 0, 0x0c60, 0, 0 }, + { "bare-seed", 0x0040, 4, 0, 0, 0, 0x40, 0, 0, 0, 0, 0 }, }; /* Indices of slots in the `codecs` table below */ -#define ML_KEM_512_CODEC 0 -#define ML_KEM_768_CODEC 1 -#define ML_KEM_1024_CODEC 2 +#define ML_KEM_512_CODEC 0 +#define ML_KEM_768_CODEC 1 +#define ML_KEM_1024_CODEC 2 /* * Per-variant fixed parameters */ static const ML_COMMON_CODEC codecs[3] = { - { &ml_kem_512_spkifmt, ml_kem_512_p8fmt }, - { &ml_kem_768_spkifmt, ml_kem_768_p8fmt }, + { &ml_kem_512_spkifmt, ml_kem_512_p8fmt }, + { &ml_kem_768_spkifmt, ml_kem_768_p8fmt }, { &ml_kem_1024_spkifmt, ml_kem_1024_p8fmt } }; @@ -102,7 +233,7 @@ static const ML_COMMON_CODEC *ml_kem_get_codec(int evp_type) ML_KEM_KEY * ossl_ml_kem_d2i_PUBKEY(const uint8_t *pubenc, int publen, int evp_type, - PROV_CTX *provctx, const char *propq) + PROV_CTX *provctx, const char *propq) { OSSL_LIB_CTX *libctx = PROV_LIBCTX_OF(provctx); const ML_KEM_VINFO *v; @@ -114,7 +245,7 @@ ossl_ml_kem_d2i_PUBKEY(const uint8_t *pubenc, int publen, int evp_type, || (codec = ml_kem_get_codec(evp_type)) == NULL) return NULL; vspki = codec->spkifmt; - if (publen != ML_COMMON_SPKI_OVERHEAD + (ossl_ssize_t) v->pubkey_bytes + if (publen != ML_COMMON_SPKI_OVERHEAD + (ossl_ssize_t)v->pubkey_bytes || memcmp(pubenc, vspki->asn1_prefix, ML_COMMON_SPKI_OVERHEAD) != 0) return NULL; publen -= ML_COMMON_SPKI_OVERHEAD; @@ -123,10 +254,10 @@ ossl_ml_kem_d2i_PUBKEY(const uint8_t *pubenc, int publen, int evp_type, if ((ret = ossl_ml_kem_key_new(libctx, propq, evp_type)) == NULL) return NULL; - if (!ossl_ml_kem_parse_public_key(pubenc, (size_t) publen, ret)) { + if (!ossl_ml_kem_parse_public_key(pubenc, (size_t)publen, ret)) { ERR_raise_data(ERR_LIB_PROV, PROV_R_BAD_ENCODING, - "errror parsing %s public key from input SPKI", - v->algorithm_name); + "error parsing %s public key from input SPKI", + v->algorithm_name); ossl_ml_kem_key_free(ret); return NULL; } @@ -136,8 +267,8 @@ ossl_ml_kem_d2i_PUBKEY(const uint8_t *pubenc, int publen, int evp_type, ML_KEM_KEY * ossl_ml_kem_d2i_PKCS8(const uint8_t *prvenc, int prvlen, - int evp_type, PROV_CTX *provctx, - const char *propq) + int evp_type, PROV_CTX *provctx, + const char *propq) { const ML_KEM_VINFO *v; const ML_COMMON_CODEC *codec; @@ -171,7 +302,7 @@ ossl_ml_kem_d2i_PKCS8(const uint8_t *prvenc, int prvlen, formats = ossl_prov_ctx_get_param( provctx, OSSL_PKEY_PARAM_ML_KEM_INPUT_FORMATS, NULL); fmt_slots = ossl_ml_common_pkcs8_fmt_order(v->algorithm_name, codec->p8fmt, - "input", formats); + "input", formats); if (fmt_slots == NULL) goto end; @@ -179,8 +310,8 @@ ossl_ml_kem_d2i_PKCS8(const uint8_t *prvenc, int prvlen, X509_ALGOR_get0(NULL, &ptype, NULL, alg); if (ptype != V_ASN1_UNDEF) { ERR_raise_data(ERR_LIB_PROV, PROV_R_UNEXPECTED_KEY_PARAMETERS, - "unexpected parameters with a PKCS#8 %s private key", - v->algorithm_name); + "unexpected parameters with a PKCS#8 %s private key", + v->algorithm_name); goto end; } if ((ossl_ssize_t)len < (ossl_ssize_t)sizeof(magic)) @@ -202,8 +333,8 @@ ossl_ml_kem_d2i_PKCS8(const uint8_t *prvenc, int prvlen, || (p8fmt->priv_length > 0 && p8fmt->priv_length != v->prvkey_bytes) || (p8fmt->pub_length > 0 && p8fmt->pub_length != v->pubkey_bytes)) { ERR_raise_data(ERR_LIB_PROV, PROV_R_ML_KEM_NO_FORMAT, - "no matching enabled %s private key input formats", - v->algorithm_name); + "no matching enabled %s private key input formats", + v->algorithm_name); goto end; } @@ -246,18 +377,18 @@ ossl_ml_kem_d2i_PKCS8(const uint8_t *prvenc, int prvlen, if (p8fmt->seed_length > 0) { if (!ossl_ml_kem_set_seed(buf + p8fmt->seed_offset, - ML_KEM_SEED_BYTES, key)) { + ML_KEM_SEED_BYTES, key)) { ERR_raise_data(ERR_LIB_OSSL_DECODER, ERR_R_INTERNAL_ERROR, - "error storing %s private key seed", - v->algorithm_name); + "error storing %s private key seed", + v->algorithm_name); goto end; } } if (p8fmt->priv_length > 0) { if ((key->encoded_dk = OPENSSL_malloc(p8fmt->priv_length)) == NULL) { ERR_raise_data(ERR_LIB_PROV, PROV_R_INVALID_KEY, - "error parsing %s private key", - v->algorithm_name); + "error parsing %s private key", + v->algorithm_name); goto end; } memcpy(key->encoded_dk, buf + p8fmt->priv_offset, p8fmt->priv_length); @@ -265,7 +396,7 @@ ossl_ml_kem_d2i_PKCS8(const uint8_t *prvenc, int prvlen, /* Any OQS public key content is ignored */ ret = key; - end: +end: OPENSSL_free(fmt_slots); PKCS8_PRIV_KEY_INFO_free(p8inf); if (ret == NULL) @@ -280,8 +411,8 @@ int ossl_ml_kem_i2d_pubkey(const ML_KEM_KEY *key, unsigned char **out) if (!ossl_ml_kem_have_pubkey(key)) { ERR_raise_data(ERR_LIB_PROV, PROV_R_NOT_A_PUBLIC_KEY, - "no %s public key data available", - key->vinfo->algorithm_name); + "no %s public key data available", + key->vinfo->algorithm_name); return 0; } publen = key->vinfo->pubkey_bytes; @@ -291,8 +422,8 @@ int ossl_ml_kem_i2d_pubkey(const ML_KEM_KEY *key, unsigned char **out) return 0; if (!ossl_ml_kem_encode_public_key(*out, publen, key)) { ERR_raise_data(ERR_LIB_OSSL_ENCODER, ERR_R_INTERNAL_ERROR, - "error encoding %s public key", - key->vinfo->algorithm_name); + "error encoding %s public key", + key->vinfo->algorithm_name); OPENSSL_free(*out); return 0; } @@ -302,7 +433,7 @@ int ossl_ml_kem_i2d_pubkey(const ML_KEM_KEY *key, unsigned char **out) /* Allocate and encode PKCS#8 private key payload. */ int ossl_ml_kem_i2d_prvkey(const ML_KEM_KEY *key, uint8_t **out, - PROV_CTX *provctx) + PROV_CTX *provctx) { const ML_KEM_VINFO *v = key->vinfo; const ML_COMMON_CODEC *codec; @@ -319,15 +450,15 @@ int ossl_ml_kem_i2d_prvkey(const ML_KEM_KEY *key, uint8_t **out, if (!ossl_ml_kem_have_prvkey(key)) { ERR_raise_data(ERR_LIB_PROV, PROV_R_NOT_A_PRIVATE_KEY, - "no %s private key data available", - key->vinfo->algorithm_name); + "no %s private key data available", + key->vinfo->algorithm_name); return 0; } formats = ossl_prov_ctx_get_param( provctx, OSSL_PKEY_PARAM_ML_KEM_OUTPUT_FORMATS, NULL); fmt_slots = ossl_ml_common_pkcs8_fmt_order(v->algorithm_name, codec->p8fmt, - "output", formats); + "output", formats); if (fmt_slots == NULL) return 0; @@ -341,8 +472,8 @@ int ossl_ml_kem_i2d_prvkey(const ML_KEM_KEY *key, uint8_t **out, || (p8fmt->priv_length > 0 && p8fmt->priv_length != v->prvkey_bytes) || (p8fmt->pub_length > 0 && p8fmt->pub_length != v->pubkey_bytes)) { ERR_raise_data(ERR_LIB_PROV, PROV_R_ML_KEM_NO_FORMAT, - "no matching enabled %s private key output formats", - v->algorithm_name); + "no matching enabled %s private key output formats", + v->algorithm_name); goto end; } len = p8fmt->p8_bytes; @@ -352,7 +483,7 @@ int ossl_ml_kem_i2d_prvkey(const ML_KEM_KEY *key, uint8_t **out, goto end; } - if ((pos = buf = OPENSSL_malloc((size_t) len)) == NULL) + if ((pos = buf = OPENSSL_malloc((size_t)len)) == NULL) goto end; switch (p8fmt->p8_shift) { @@ -366,8 +497,8 @@ int ossl_ml_kem_i2d_prvkey(const ML_KEM_KEY *key, uint8_t **out, break; default: ERR_raise_data(ERR_LIB_PROV, ERR_R_INTERNAL_ERROR, - "error encoding %s private key", - v->algorithm_name); + "error encoding %s private key", + v->algorithm_name); goto end; } @@ -381,8 +512,8 @@ int ossl_ml_kem_i2d_prvkey(const ML_KEM_KEY *key, uint8_t **out, if (pos != buf + p8fmt->seed_offset || !ossl_ml_kem_encode_seed(pos, ML_KEM_SEED_BYTES, key)) { ERR_raise_data(ERR_LIB_PROV, ERR_R_INTERNAL_ERROR, - "error encoding %s private key", - v->algorithm_name); + "error encoding %s private key", + v->algorithm_name); goto end; } pos += ML_KEM_SEED_BYTES; @@ -393,8 +524,8 @@ int ossl_ml_kem_i2d_prvkey(const ML_KEM_KEY *key, uint8_t **out, if (pos != buf + p8fmt->priv_offset || !ossl_ml_kem_encode_private_key(pos, v->prvkey_bytes, key)) { ERR_raise_data(ERR_LIB_PROV, ERR_R_INTERNAL_ERROR, - "error encoding %s private key", - v->algorithm_name); + "error encoding %s private key", + v->algorithm_name); goto end; } pos += v->prvkey_bytes; @@ -405,8 +536,8 @@ int ossl_ml_kem_i2d_prvkey(const ML_KEM_KEY *key, uint8_t **out, if (pos != buf + p8fmt->pub_offset || !ossl_ml_kem_encode_public_key(pos, v->pubkey_bytes, key)) { ERR_raise_data(ERR_LIB_PROV, ERR_R_INTERNAL_ERROR, - "error encoding %s private key", - v->algorithm_name); + "error encoding %s private key", + v->algorithm_name); goto end; } pos += v->pubkey_bytes; @@ -417,7 +548,7 @@ int ossl_ml_kem_i2d_prvkey(const ML_KEM_KEY *key, uint8_t **out, ret = len; } - end: +end: OPENSSL_free(fmt_slots); if (ret == 0) OPENSSL_free(buf); @@ -478,10 +609,10 @@ int ossl_ml_kem_key_to_text(BIO *out, const ML_KEM_KEY *key, int selection) /* If we got here, and ret == 0, there was no key material */ if (ret == 0) ERR_raise_data(ERR_LIB_PROV, PROV_R_MISSING_KEY, - "no %s key material available", - type_label); + "no %s key material available", + type_label); - end: +end: OPENSSL_free(pubenc); OPENSSL_free(prvenc); return ret; diff --git a/crypto/openssl/providers/implementations/encode_decode/ml_kem_codecs.h b/crypto/openssl/providers/implementations/encode_decode/ml_kem_codecs.h index b8a22201ab17..01ef8bbba505 100644 --- a/crypto/openssl/providers/implementations/encode_decode/ml_kem_codecs.h +++ b/crypto/openssl/providers/implementations/encode_decode/ml_kem_codecs.h @@ -8,32 +8,29 @@ */ #ifndef PROV_ML_KEM_CODECS_H -# define PROV_ML_KEM_CODECS_H -# pragma once +#define PROV_ML_KEM_CODECS_H +#pragma once -# ifndef OPENSSL_NO_ML_KEM -# include <openssl/e_os2.h> -# include "crypto/ml_kem.h" -# include "prov/provider_ctx.h" -# include "ml_common_codecs.h" +#ifndef OPENSSL_NO_ML_KEM +#include <openssl/e_os2.h> +#include "crypto/ml_kem.h" +#include "prov/provider_ctx.h" +#include "ml_common_codecs.h" +__owur ML_KEM_KEY *ossl_ml_kem_d2i_PUBKEY(const uint8_t *pubenc, int publen, + int evp_type, PROV_CTX *provctx, + const char *propq); +__owur ML_KEM_KEY *ossl_ml_kem_d2i_PKCS8(const uint8_t *prvenc, int prvlen, + int evp_type, PROV_CTX *provctx, + const char *propq); +__owur int ossl_ml_kem_key_to_text(BIO *out, const ML_KEM_KEY *key, int selection); __owur -ML_KEM_KEY *ossl_ml_kem_d2i_PUBKEY(const uint8_t *pubenc, int publen, - int evp_type, PROV_CTX *provctx, - const char *propq); + __owur int + ossl_ml_kem_i2d_pubkey(const ML_KEM_KEY *key, unsigned char **out); __owur -ML_KEM_KEY *ossl_ml_kem_d2i_PKCS8(const uint8_t *prvenc, int prvlen, - int evp_type, PROV_CTX *provctx, - const char *propq); -__owur -int ossl_ml_kem_key_to_text(BIO *out, const ML_KEM_KEY *key, int selection); -__owur -__owur -int ossl_ml_kem_i2d_pubkey(const ML_KEM_KEY *key, unsigned char **out); -__owur -__owur -int ossl_ml_kem_i2d_prvkey(const ML_KEM_KEY *key, unsigned char **out, - PROV_CTX *provctx); + __owur int + ossl_ml_kem_i2d_prvkey(const ML_KEM_KEY *key, unsigned char **out, + PROV_CTX *provctx); -# endif /* OPENSSL_NO_ML_KEM */ -#endif /* PROV_ML_KEM_CODECS_H */ +#endif /* OPENSSL_NO_ML_KEM */ +#endif /* PROV_ML_KEM_CODECS_H */ |
