mirror of
https://github.com/openssl/openssl.git
synced 2024-11-21 01:15:20 +08:00
add ECDSA_size to ec_asn1.c
Reviewed-by: Richard Levitte <levitte@openssl.org>
This commit is contained in:
parent
c535979126
commit
cf517a6d3d
@ -1319,3 +1319,37 @@ void ECDSA_SIG_get0(BIGNUM **pr, BIGNUM **ps, ECDSA_SIG *sig)
|
|||||||
if (ps)
|
if (ps)
|
||||||
*ps = sig->s;
|
*ps = sig->s;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int ECDSA_size(const EC_KEY *r)
|
||||||
|
{
|
||||||
|
int ret, i;
|
||||||
|
ASN1_INTEGER bs;
|
||||||
|
BIGNUM *order = NULL;
|
||||||
|
unsigned char buf[4];
|
||||||
|
const EC_GROUP *group;
|
||||||
|
|
||||||
|
if (r == NULL)
|
||||||
|
return 0;
|
||||||
|
group = EC_KEY_get0_group(r);
|
||||||
|
if (group == NULL)
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
if ((order = BN_new()) == NULL)
|
||||||
|
return 0;
|
||||||
|
if (!EC_GROUP_get_order(group, order, NULL)) {
|
||||||
|
BN_clear_free(order);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
i = BN_num_bits(order);
|
||||||
|
bs.length = (i + 7) / 8;
|
||||||
|
bs.data = buf;
|
||||||
|
bs.type = V_ASN1_INTEGER;
|
||||||
|
/* If the top bit is set the asn1 encoding is 1 larger. */
|
||||||
|
buf[0] = 0xff;
|
||||||
|
|
||||||
|
i = i2d_ASN1_INTEGER(&bs, NULL);
|
||||||
|
i += i; /* r and s */
|
||||||
|
ret = ASN1_object_size(1, i, V_ASN1_SEQUENCE);
|
||||||
|
BN_clear_free(order);
|
||||||
|
return (ret);
|
||||||
|
}
|
||||||
|
@ -1089,6 +1089,12 @@ int ECDSA_sign_ex(int type, const unsigned char *dgst, int dgstlen,
|
|||||||
int ECDSA_verify(int type, const unsigned char *dgst, int dgstlen,
|
int ECDSA_verify(int type, const unsigned char *dgst, int dgstlen,
|
||||||
const unsigned char *sig, int siglen, EC_KEY *eckey);
|
const unsigned char *sig, int siglen, EC_KEY *eckey);
|
||||||
|
|
||||||
|
/** Returns the maximum length of the DER encoded signature
|
||||||
|
* \param eckey EC_KEY object
|
||||||
|
* \return numbers of bytes required for the DER encoded signature
|
||||||
|
*/
|
||||||
|
int ECDSA_size(const EC_KEY *eckey);
|
||||||
|
|
||||||
# define ECParameters_dup(x) ASN1_dup_of(EC_KEY,i2d_ECParameters,d2i_ECParameters,x)
|
# define ECParameters_dup(x) ASN1_dup_of(EC_KEY,i2d_ECParameters,d2i_ECParameters,x)
|
||||||
|
|
||||||
# ifndef __cplusplus
|
# ifndef __cplusplus
|
||||||
|
Loading…
Reference in New Issue
Block a user