Make a helpful constant public

This commit is contained in:
Manuel Pégourié-Gonnard 2015-03-31 11:15:48 +02:00
parent b8cfe3f0d9
commit 63e931902b
2 changed files with 21 additions and 21 deletions

View File

@ -30,6 +30,25 @@
#include "md.h" #include "md.h"
#endif #endif
/*
* RFC 4492 page 20:
*
* Ecdsa-Sig-Value ::= SEQUENCE {
* r INTEGER,
* s INTEGER
* }
*
* Size is at most
* 1 (tag) + 1 (len) + 1 (initial 0) + ECP_MAX_BYTES for each of r and s,
* twice that + 1 (tag) + 2 (len) for the sequence
* (assuming ECP_MAX_BYTES is less than 126 for r and s,
* and less than 124 (total len <= 255) for the sequence)
*/
#if POLARSSL_ECP_MAX_BYTES > 124
#error "POLARSSL_ECP_MAX_BYTES bigger than expected, please fix POLARSSL_ECDSA_MAX_LEN"
#endif
#define POLARSSL_ECDSA_MAX_LEN ( 3 + 2 * ( 3 + POLARSSL_ECP_MAX_BYTES ) )
/** /**
* \brief ECDSA context structure * \brief ECDSA context structure
* *
@ -124,7 +143,7 @@ int ecdsa_verify( ecp_group *grp,
* *
* \note The "sig" buffer must be at least as large as twice the * \note The "sig" buffer must be at least as large as twice the
* size of the curve used, plus 7 (eg. 71 bytes if a 256-bit * size of the curve used, plus 7 (eg. 71 bytes if a 256-bit
* curve is used). * curve is used). POLARSSL_ECDSA_MAX_LEN is always safe.
* *
* \return 0 if successful, * \return 0 if successful,
* or a POLARSSL_ERR_ECP, POLARSSL_ERR_MPI or * or a POLARSSL_ERR_ECP, POLARSSL_ERR_MPI or

View File

@ -281,25 +281,6 @@ cleanup:
return( ret ); return( ret );
} }
/*
* RFC 4492 page 20:
*
* Ecdsa-Sig-Value ::= SEQUENCE {
* r INTEGER,
* s INTEGER
* }
*
* Size is at most
* 1 (tag) + 1 (len) + 1 (initial 0) + ECP_MAX_BYTES for each of r and s,
* twice that + 1 (tag) + 2 (len) for the sequence
* (assuming ECP_MAX_BYTES is less than 126 for r and s,
* and less than 124 (total len <= 255) for the sequence)
*/
#if POLARSSL_ECP_MAX_BYTES > 124
#error "POLARSSL_ECP_MAX_BYTES bigger than expected, please fix MAX_SIG_LEN"
#endif
#define MAX_SIG_LEN ( 3 + 2 * ( 3 + POLARSSL_ECP_MAX_BYTES ) )
/* /*
* Convert a signature (given by context) to ASN.1 * Convert a signature (given by context) to ASN.1
*/ */
@ -307,7 +288,7 @@ static int ecdsa_signature_to_asn1( ecdsa_context *ctx,
unsigned char *sig, size_t *slen ) unsigned char *sig, size_t *slen )
{ {
int ret; int ret;
unsigned char buf[MAX_SIG_LEN]; unsigned char buf[POLARSSL_ECDSA_MAX_LEN];
unsigned char *p = buf + sizeof( buf ); unsigned char *p = buf + sizeof( buf );
size_t len = 0; size_t len = 0;