diff options
Diffstat (limited to 'crypto/openssl/providers/implementations/encode_decode/encode_key2any.c')
| -rw-r--r-- | crypto/openssl/providers/implementations/encode_decode/encode_key2any.c | 719 |
1 files changed, 353 insertions, 366 deletions
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 */ |
