oid_get_oid_by_*() now give back oid length as well
diff --git a/library/x509write.c b/library/x509write.c
index aed6624..f4f3c4d 100644
--- a/library/x509write.c
+++ b/library/x509write.c
@@ -581,7 +581,8 @@
}
static int x509_write_sig( unsigned char **p, unsigned char *start,
- const char *oid, unsigned char *sig, size_t size )
+ const char *oid, size_t oid_len,
+ unsigned char *sig, size_t size )
{
int ret;
size_t len = 0;
@@ -602,7 +603,7 @@
// Write OID
//
ASN1_CHK_ADD( len, asn1_write_algorithm_identifier( p, start, oid,
- strlen( oid ) ) );
+ oid_len ) );
return( len );
}
@@ -693,6 +694,7 @@
{
int ret;
const char *sig_oid;
+ size_t sig_oid_len = 0;
unsigned char *c, *c2;
unsigned char hash[64];
unsigned char sig[POLARSSL_MPI_MAX_SIZE];
@@ -768,10 +770,12 @@
// Generate correct OID
//
- ret = oid_get_oid_by_sig_alg( POLARSSL_PK_RSA, ctx->md_alg, &sig_oid );
+ ret = oid_get_oid_by_sig_alg( POLARSSL_PK_RSA, ctx->md_alg, &sig_oid,
+ &sig_oid_len );
c2 = buf + size - 1;
- ASN1_CHK_ADD( sig_len, x509_write_sig( &c2, buf, sig_oid, sig, ctx->rsa->len ) );
+ ASN1_CHK_ADD( sig_len, x509_write_sig( &c2, buf, sig_oid, sig_oid_len,
+ sig, ctx->rsa->len ) );
c2 -= len;
memcpy( c2, c, len );
@@ -787,6 +791,7 @@
{
int ret;
const char *sig_oid;
+ size_t sig_oid_len = 0;
unsigned char *c, *c2;
unsigned char hash[64];
unsigned char sig[POLARSSL_MPI_MAX_SIZE];
@@ -798,7 +803,8 @@
// Generate correct OID
//
- ret = oid_get_oid_by_sig_alg( POLARSSL_PK_RSA, ctx->md_alg, &sig_oid );
+ ret = oid_get_oid_by_sig_alg( POLARSSL_PK_RSA, ctx->md_alg, &sig_oid,
+ &sig_oid_len );
if( ret != 0 )
return( ret );
@@ -893,7 +899,8 @@
rsa_pkcs1_sign( ctx->issuer_key, NULL, NULL, RSA_PRIVATE, ctx->md_alg, 0, hash, sig );
c2 = buf + size - 1;
- ASN1_CHK_ADD( sig_len, x509_write_sig( &c2, buf, sig_oid, sig, ctx->issuer_key->len ) );
+ ASN1_CHK_ADD( sig_len, x509_write_sig( &c2, buf, sig_oid, sig_oid_len,
+ sig, ctx->issuer_key->len ) );
c2 -= len;
memcpy( c2, c, len );