mirror of
https://github.com/QuasarApp/openssl.git
synced 2025-05-08 23:49:39 +00:00
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:
parent
adf7e6d1d6
commit
2858156e03
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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);
|
||||||
|
@ -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);
|
||||||
|
@ -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,
|
||||||
|
@ -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);
|
||||||
|
@ -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?) */
|
||||||
|
@ -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;
|
||||||
|
@ -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);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user