diff options
author | Richard Levitte <levitte@openssl.org> | 2021-03-15 15:05:59 +0100 |
---|---|---|
committer | Richard Levitte <levitte@openssl.org> | 2021-03-19 16:46:39 +0100 |
commit | f4e46b817d587c300faa04fd061ddcdea3dd64c9 (patch) | |
tree | c2d2457e408ba946dd24f21f4825905f2f6a1041 /include | |
parent | cf333799979755dd46193b49c15db0afd262c6a0 (diff) |
PROV: Add type specific MSBLOB and PVK decoding for the MS->key decoders
To make this cleaner, decoder_ms2key.c is split into decoder_msblob2key.c
and decoder_pvk2key.c.
This required a great deal of refactoring of crypto/pem/pvkfmt.c, to
make cleaner internal functions that our decoder implementations can
use.
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/14314)
Diffstat (limited to 'include')
-rw-r--r-- | include/crypto/pem.h | 21 | ||||
-rw-r--r-- | include/crypto/pemerr.h | 2 | ||||
-rw-r--r-- | include/openssl/pemerr.h | 2 |
3 files changed, 24 insertions, 1 deletions
diff --git a/include/crypto/pem.h b/include/crypto/pem.h index 4b02a00a85..2a0e6424a5 100644 --- a/include/crypto/pem.h +++ b/include/crypto/pem.h @@ -12,15 +12,36 @@ # pragma once # include <openssl/pem.h> +# include "crypto/types.h" /* Found in crypto/pem/pvkfmt.c */ + +/* Maximum length of a blob after header */ +# define BLOB_MAX_LENGTH 102400 + int ossl_do_blob_header(const unsigned char **in, unsigned int length, unsigned int *pmagic, unsigned int *pbitlen, int *pisdss, int *pispub); +unsigned int ossl_blob_length(unsigned bitlen, int isdss, int ispub); int ossl_do_PVK_header(const unsigned char **in, unsigned int length, int skip_magic, unsigned int *psaltlen, unsigned int *pkeylen); +# ifndef OPENSSL_NO_DEPRECATED_3_0 +# ifndef OPENSSL_NO_DSA +DSA *ossl_b2i_DSA_after_header(const unsigned char **in, unsigned int bitlen, + int ispub); +# endif +RSA *ossl_b2i_RSA_after_header(const unsigned char **in, unsigned int bitlen, + int ispub); +# endif EVP_PKEY *ossl_b2i(const unsigned char **in, unsigned int length, int *ispub); EVP_PKEY *ossl_b2i_bio(BIO *in, int *ispub); +# ifndef OPENSSL_NO_DEPRECATED_3_0 +# ifndef OPENSSL_NO_DSA +DSA *b2i_DSA_PVK_bio(BIO *in, pem_password_cb *cb, void *u); +# endif +RSA *b2i_RSA_PVK_bio(BIO *in, pem_password_cb *cb, void *u); +# endif + #endif diff --git a/include/crypto/pemerr.h b/include/crypto/pemerr.h index 08a56f1425..24c4d0c585 100644 --- a/include/crypto/pemerr.h +++ b/include/crypto/pemerr.h @@ -1,6 +1,6 @@ /* * Generated by util/mkerr.pl DO NOT EDIT - * Copyright 2020 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2020-2021 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy diff --git a/include/openssl/pemerr.h b/include/openssl/pemerr.h index 16ca273a98..18f6d9ef4c 100644 --- a/include/openssl/pemerr.h +++ b/include/openssl/pemerr.h @@ -31,8 +31,10 @@ # define PEM_R_BIO_WRITE_FAILURE 118 # define PEM_R_CIPHER_IS_NULL 127 # define PEM_R_ERROR_CONVERTING_PRIVATE_KEY 115 +# define PEM_R_EXPECTING_DSS_KEY_BLOB 131 # define PEM_R_EXPECTING_PRIVATE_KEY_BLOB 119 # define PEM_R_EXPECTING_PUBLIC_KEY_BLOB 120 +# define PEM_R_EXPECTING_RSA_KEY_BLOB 132 # define PEM_R_HEADER_TOO_LONG 128 # define PEM_R_INCONSISTENT_HEADER 121 # define PEM_R_KEYBLOB_HEADER_PARSE_ERROR 122 |