Rename x509_get_pubkey to _rsa and split it up
diff --git a/library/x509parse.c b/library/x509parse.c
index 72cdf8d..e3c363a 100644
--- a/library/x509parse.c
+++ b/library/x509parse.c
@@ -539,13 +539,46 @@
}
/*
+ * RSAPublicKey ::= SEQUENCE {
+ * modulus INTEGER, -- n
+ * publicExponent INTEGER -- e
+ * }
+ */
+static int x509_get_rsapubkey( unsigned char **p,
+ const unsigned char *end,
+ rsa_context *rsa )
+{
+ int ret;
+ size_t len;
+
+ if( ( ret = asn1_get_tag( p, end, &len,
+ ASN1_CONSTRUCTED | ASN1_SEQUENCE ) ) != 0 )
+ return( POLARSSL_ERR_X509_CERT_INVALID_PUBKEY + ret );
+
+ if( *p + len != end )
+ return( POLARSSL_ERR_X509_CERT_INVALID_PUBKEY +
+ POLARSSL_ERR_ASN1_LENGTH_MISMATCH );
+
+ if( ( ret = asn1_get_mpi( p, end, &rsa->N ) ) != 0 ||
+ ( ret = asn1_get_mpi( p, end, &rsa->E ) ) != 0 )
+ return( POLARSSL_ERR_X509_CERT_INVALID_PUBKEY + ret );
+
+ if( ( ret = rsa_check_pubkey( rsa ) ) != 0 )
+ return( ret );
+
+ rsa->len = mpi_size( &rsa->N );
+
+ return( 0 );
+}
+
+/*
* SubjectPublicKeyInfo ::= SEQUENCE {
* algorithm AlgorithmIdentifier,
* subjectPublicKey BIT STRING }
*/
-static int x509_get_pubkey( unsigned char **p,
- const unsigned char *end,
- rsa_context *rsa )
+static int x509_get_pubkey_rsa( unsigned char **p,
+ const unsigned char *end,
+ rsa_context *rsa )
{
int ret;
size_t len;
@@ -588,30 +621,7 @@
if( *(*p)++ != 0 )
return( POLARSSL_ERR_X509_CERT_INVALID_PUBKEY );
- /*
- * RSAPublicKey ::= SEQUENCE {
- * modulus INTEGER, -- n
- * publicExponent INTEGER -- e
- * }
- */
- if( ( ret = asn1_get_tag( p, end, &len,
- ASN1_CONSTRUCTED | ASN1_SEQUENCE ) ) != 0 )
- return( POLARSSL_ERR_X509_CERT_INVALID_PUBKEY + ret );
-
- if( *p + len != end )
- return( POLARSSL_ERR_X509_CERT_INVALID_PUBKEY +
- POLARSSL_ERR_ASN1_LENGTH_MISMATCH );
-
- if( ( ret = asn1_get_mpi( p, end, &rsa->N ) ) != 0 ||
- ( ret = asn1_get_mpi( p, end, &rsa->E ) ) != 0 )
- return( POLARSSL_ERR_X509_CERT_INVALID_PUBKEY + ret );
-
- if( ( ret = rsa_check_pubkey( rsa ) ) != 0 )
- return( ret );
-
- rsa->len = mpi_size( &rsa->N );
-
- return( 0 );
+ return( x509_get_rsapubkey( p, end, rsa ) );
}
static int x509_get_sig( unsigned char **p,
@@ -1378,8 +1388,7 @@
/*
* SubjectPublicKeyInfo
*/
- if( ( ret = x509_get_pubkey( &p, end,
- &crt->rsa ) ) != 0 )
+ if( ( ret = x509_get_pubkey_rsa( &p, end, &crt->rsa ) ) != 0 )
{
x509_free( crt );
return( ret );
@@ -2609,7 +2618,7 @@
#endif
end = p + keylen;
- if( ( ret = x509_get_pubkey( &p, end, rsa ) ) != 0 )
+ if( ( ret = x509_get_pubkey_rsa( &p, end, rsa ) ) != 0 )
{
#if defined(POLARSSL_PEM_C)
pem_free( &pem );