mirror of
https://github.com/openssl/openssl.git
synced 2025-01-18 13:44:20 +08:00
SERIALIZER: add hooks in EVP_PKEY_print_ routines
Reviewed-by: Matt Caswell <matt@openssl.org> (Merged from https://github.com/openssl/openssl/pull/10394)
This commit is contained in:
parent
f864a9396a
commit
54c1711f87
@ -21,6 +21,7 @@
|
||||
#include <openssl/cmac.h>
|
||||
#include <openssl/engine.h>
|
||||
#include <openssl/params.h>
|
||||
#include <openssl/serializer.h>
|
||||
#include <openssl/core_names.h>
|
||||
|
||||
#include "crypto/asn1.h"
|
||||
@ -666,6 +667,18 @@ static int unsup_alg(BIO *out, const EVP_PKEY *pkey, int indent,
|
||||
int EVP_PKEY_print_public(BIO *out, const EVP_PKEY *pkey,
|
||||
int indent, ASN1_PCTX *pctx)
|
||||
{
|
||||
const char *pq = OSSL_SERIALIZER_PUBKEY_TO_TEXT_PQ;
|
||||
OSSL_SERIALIZER_CTX *ctx = OSSL_SERIALIZER_CTX_new_by_EVP_PKEY(pkey, pq);
|
||||
int ret = -2; /* mark as unsupported */
|
||||
|
||||
if (OSSL_SERIALIZER_CTX_get_serializer(ctx) != NULL)
|
||||
ret = OSSL_SERIALIZER_to_bio(ctx, out);
|
||||
OSSL_SERIALIZER_CTX_free(ctx);
|
||||
|
||||
if (ret != -2)
|
||||
return ret;
|
||||
|
||||
/* legacy fallback */
|
||||
if (pkey->ameth && pkey->ameth->pub_print)
|
||||
return pkey->ameth->pub_print(out, pkey, indent, pctx);
|
||||
|
||||
@ -675,6 +688,18 @@ int EVP_PKEY_print_public(BIO *out, const EVP_PKEY *pkey,
|
||||
int EVP_PKEY_print_private(BIO *out, const EVP_PKEY *pkey,
|
||||
int indent, ASN1_PCTX *pctx)
|
||||
{
|
||||
const char *pq = OSSL_SERIALIZER_PrivateKey_TO_TEXT_PQ;
|
||||
OSSL_SERIALIZER_CTX *ctx = OSSL_SERIALIZER_CTX_new_by_EVP_PKEY(pkey, pq);
|
||||
int ret = -2; /* mark as unsupported */
|
||||
|
||||
if (OSSL_SERIALIZER_CTX_get_serializer(ctx) != NULL)
|
||||
ret = OSSL_SERIALIZER_to_bio(ctx, out);
|
||||
OSSL_SERIALIZER_CTX_free(ctx);
|
||||
|
||||
if (ret != -2)
|
||||
return ret;
|
||||
|
||||
/* legacy fallback */
|
||||
if (pkey->ameth && pkey->ameth->priv_print)
|
||||
return pkey->ameth->priv_print(out, pkey, indent, pctx);
|
||||
|
||||
@ -684,8 +709,21 @@ int EVP_PKEY_print_private(BIO *out, const EVP_PKEY *pkey,
|
||||
int EVP_PKEY_print_params(BIO *out, const EVP_PKEY *pkey,
|
||||
int indent, ASN1_PCTX *pctx)
|
||||
{
|
||||
const char *pq = OSSL_SERIALIZER_Parameters_TO_TEXT_PQ;
|
||||
OSSL_SERIALIZER_CTX *ctx = OSSL_SERIALIZER_CTX_new_by_EVP_PKEY(pkey, pq);
|
||||
int ret = -2; /* mark as unsupported */
|
||||
|
||||
if (OSSL_SERIALIZER_CTX_get_serializer(ctx) != NULL)
|
||||
ret = OSSL_SERIALIZER_to_bio(ctx, out);
|
||||
OSSL_SERIALIZER_CTX_free(ctx);
|
||||
|
||||
if (ret != -2)
|
||||
return ret;
|
||||
|
||||
/* legacy fallback */
|
||||
if (pkey->ameth && pkey->ameth->param_print)
|
||||
return pkey->ameth->param_print(out, pkey, indent, pctx);
|
||||
|
||||
return unsup_alg(out, pkey, indent, "Parameters");
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user