Add ossl_encode symbols

Partial fix for #12964

Reviewed-by: Paul Dale <pauli@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/14473)
This commit is contained in:
Shane Lontis 2021-03-09 09:59:13 +10:00
parent adf7e6d1d6
commit 2858156e03
8 changed files with 21 additions and 22 deletions

View File

@ -36,7 +36,7 @@
* *
* Returns 1 on success or 0 on error. * Returns 1 on success or 0 on error.
*/ */
int encode_der_length(WPACKET *pkt, size_t cont_len) int ossl_encode_der_length(WPACKET *pkt, size_t cont_len)
{ {
if (cont_len > 0xffff) if (cont_len > 0xffff)
return 0; /* Too large for supported length encodings */ return 0; /* Too large for supported length encodings */
@ -63,7 +63,7 @@ int encode_der_length(WPACKET *pkt, size_t cont_len)
* *
* Returns 1 on success or 0 on error. * Returns 1 on success or 0 on error.
*/ */
int encode_der_integer(WPACKET *pkt, const BIGNUM *n) int ossl_encode_der_integer(WPACKET *pkt, const BIGNUM *n)
{ {
unsigned char *bnbytes; unsigned char *bnbytes;
size_t cont_len; size_t cont_len;
@ -84,7 +84,7 @@ int encode_der_integer(WPACKET *pkt, const BIGNUM *n)
if (!WPACKET_start_sub_packet(pkt) if (!WPACKET_start_sub_packet(pkt)
|| !WPACKET_put_bytes_u8(pkt, ID_INTEGER) || !WPACKET_put_bytes_u8(pkt, ID_INTEGER)
|| !encode_der_length(pkt, cont_len) || !ossl_encode_der_length(pkt, cont_len)
|| !WPACKET_allocate_bytes(pkt, cont_len, &bnbytes) || !WPACKET_allocate_bytes(pkt, cont_len, &bnbytes)
|| !WPACKET_close(pkt)) || !WPACKET_close(pkt))
return 0; return 0;
@ -103,7 +103,7 @@ int encode_der_integer(WPACKET *pkt, const BIGNUM *n)
* *
* Returns 1 on success or 0 on error. * Returns 1 on success or 0 on error.
*/ */
int encode_der_dsa_sig(WPACKET *pkt, const BIGNUM *r, const BIGNUM *s) int ossl_encode_der_dsa_sig(WPACKET *pkt, const BIGNUM *r, const BIGNUM *s)
{ {
WPACKET tmppkt, *dummypkt; WPACKET tmppkt, *dummypkt;
size_t cont_len; size_t cont_len;
@ -122,8 +122,8 @@ int encode_der_dsa_sig(WPACKET *pkt, const BIGNUM *r, const BIGNUM *s)
} }
/* Calculate the content length */ /* Calculate the content length */
if (!encode_der_integer(dummypkt, r) if (!ossl_encode_der_integer(dummypkt, r)
|| !encode_der_integer(dummypkt, s) || !ossl_encode_der_integer(dummypkt, s)
|| !WPACKET_get_length(dummypkt, &cont_len) || !WPACKET_get_length(dummypkt, &cont_len)
|| (!isnull && !WPACKET_finish(dummypkt))) { || (!isnull && !WPACKET_finish(dummypkt))) {
if (!isnull) if (!isnull)
@ -133,13 +133,13 @@ int encode_der_dsa_sig(WPACKET *pkt, const BIGNUM *r, const BIGNUM *s)
/* Add the tag and length bytes */ /* Add the tag and length bytes */
if (!WPACKET_put_bytes_u8(pkt, ID_SEQUENCE) if (!WPACKET_put_bytes_u8(pkt, ID_SEQUENCE)
|| !encode_der_length(pkt, cont_len) || !ossl_encode_der_length(pkt, cont_len)
/* /*
* Really encode the integers. We already wrote to the main pkt * Really encode the integers. We already wrote to the main pkt
* if it had a NULL buffer, so don't do it again * if it had a NULL buffer, so don't do it again
*/ */
|| (!isnull && !encode_der_integer(pkt, r)) || (!isnull && !ossl_encode_der_integer(pkt, r))
|| (!isnull && !encode_der_integer(pkt, s)) || (!isnull && !ossl_encode_der_integer(pkt, s))
|| !WPACKET_close(pkt)) || !WPACKET_close(pkt))
return 0; return 0;
@ -250,4 +250,3 @@ size_t ossl_decode_der_dsa_sig(BIGNUM *r, BIGNUM *s,
*ppin += consumed; *ppin += consumed;
return consumed; return consumed;
} }

View File

@ -95,7 +95,7 @@ int i2d_DSA_SIG(const DSA_SIG *sig, unsigned char **ppout)
return -1; return -1;
} }
if (!encode_der_dsa_sig(&pkt, sig->r, sig->s) if (!ossl_encode_der_dsa_sig(&pkt, sig->r, sig->s)
|| !WPACKET_get_total_written(&pkt, &encoded_len) || !WPACKET_get_total_written(&pkt, &encoded_len)
|| !WPACKET_finish(&pkt)) { || !WPACKET_finish(&pkt)) {
BUF_MEM_free(buf); BUF_MEM_free(buf);

View File

@ -1245,7 +1245,7 @@ int i2d_ECDSA_SIG(const ECDSA_SIG *sig, unsigned char **ppout)
return -1; return -1;
} }
if (!encode_der_dsa_sig(&pkt, sig->r, sig->s) if (!ossl_encode_der_dsa_sig(&pkt, sig->r, sig->s)
|| !WPACKET_get_total_written(&pkt, &encoded_len) || !WPACKET_get_total_written(&pkt, &encoded_len)
|| !WPACKET_finish(&pkt)) { || !WPACKET_finish(&pkt)) {
BUF_MEM_free(buf); BUF_MEM_free(buf);

View File

@ -13,9 +13,9 @@
#include "internal/packet.h" #include "internal/packet.h"
int encode_der_length(WPACKET *pkt, size_t cont_len); int ossl_encode_der_length(WPACKET *pkt, size_t cont_len);
int encode_der_integer(WPACKET *pkt, const BIGNUM *n); int ossl_encode_der_integer(WPACKET *pkt, const BIGNUM *n);
int encode_der_dsa_sig(WPACKET *pkt, const BIGNUM *r, const BIGNUM *s); int ossl_encode_der_dsa_sig(WPACKET *pkt, const BIGNUM *r, const BIGNUM *s);
int ossl_decode_der_length(PACKET *pkt, PACKET *subpkt); int ossl_decode_der_length(PACKET *pkt, PACKET *subpkt);
int ossl_decode_der_integer(PACKET *pkt, BIGNUM *n); int ossl_decode_der_integer(PACKET *pkt, BIGNUM *n);
size_t ossl_decode_der_dsa_sig(BIGNUM *r, BIGNUM *s, const unsigned char **ppin, size_t ossl_decode_der_dsa_sig(BIGNUM *r, BIGNUM *s, const unsigned char **ppin,

View File

@ -18,7 +18,7 @@
-} -}
/* Subject Public Key Info */ /* Subject Public Key Info */
int DER_w_algorithmIdentifier_SM2(WPACKET *pkt, int cont, EC_KEY *ec); int ossl_DER_w_algorithmIdentifier_SM2(WPACKET *pkt, int cont, EC_KEY *ec);
/* Signature */ /* Signature */
int DER_w_algorithmIdentifier_SM2_with_MD(WPACKET *pkt, int cont, int ossl_DER_w_algorithmIdentifier_SM2_with_MD(WPACKET *pkt, int cont,
EC_KEY *ec, int mdnid); EC_KEY *ec, int mdnid);

View File

@ -12,7 +12,7 @@
#include "prov/der_ec.h" #include "prov/der_ec.h"
#include "prov/der_sm2.h" #include "prov/der_sm2.h"
int DER_w_algorithmIdentifier_SM2(WPACKET *pkt, int cont, EC_KEY *ec) int ossl_DER_w_algorithmIdentifier_SM2(WPACKET *pkt, int cont, EC_KEY *ec)
{ {
return ossl_DER_w_begin_sequence(pkt, cont) return ossl_DER_w_begin_sequence(pkt, cont)
/* No parameters (yet?) */ /* No parameters (yet?) */

View File

@ -20,8 +20,8 @@
precompiled_sz = sizeof(ossl_der_oid_id_sm2_with_##name); \ precompiled_sz = sizeof(ossl_der_oid_id_sm2_with_##name); \
break; break;
int DER_w_algorithmIdentifier_SM2_with_MD(WPACKET *pkt, int cont, int ossl_DER_w_algorithmIdentifier_SM2_with_MD(WPACKET *pkt, int cont,
EC_KEY *ec, int mdnid) EC_KEY *ec, int mdnid)
{ {
const unsigned char *precompiled = NULL; const unsigned char *precompiled = NULL;
size_t precompiled_sz = 0; size_t precompiled_sz = 0;

View File

@ -201,7 +201,7 @@ static int sm2sig_digest_signverify_init(void *vpsm2ctx, const char *mdname,
*/ */
ctx->aid_len = 0; ctx->aid_len = 0;
if (WPACKET_init_der(&pkt, ctx->aid_buf, sizeof(ctx->aid_buf)) if (WPACKET_init_der(&pkt, ctx->aid_buf, sizeof(ctx->aid_buf))
&& DER_w_algorithmIdentifier_SM2_with_MD(&pkt, -1, ctx->ec, md_nid) && ossl_DER_w_algorithmIdentifier_SM2_with_MD(&pkt, -1, ctx->ec, md_nid)
&& WPACKET_finish(&pkt)) { && WPACKET_finish(&pkt)) {
WPACKET_get_total_written(&pkt, &ctx->aid_len); WPACKET_get_total_written(&pkt, &ctx->aid_len);
ctx->aid = WPACKET_get_curr(&pkt); ctx->aid = WPACKET_get_curr(&pkt);