Implement pk_check_pair() for RSA-alt
diff --git a/library/pk.c b/library/pk.c
index 513d8ca..a37f58e 100644
--- a/library/pk.c
+++ b/library/pk.c
@@ -306,18 +306,24 @@
int pk_check_pair( const pk_context *pub, const pk_context *prv )
{
if( pub == NULL || pub->pk_info == NULL ||
- prv == NULL || prv->pk_info == NULL )
+ prv == NULL || prv->pk_info == NULL ||
+ prv->pk_info->check_pair_func == NULL )
{
return( POLARSSL_ERR_PK_BAD_INPUT_DATA );
}
- if( pub->pk_info != prv->pk_info ||
- pub->pk_info->check_pair_func == NULL )
+ if( prv->pk_info->type == POLARSSL_PK_RSA_ALT )
{
- return( POLARSSL_ERR_PK_TYPE_MISMATCH );
+ if( pub->pk_info->type != POLARSSL_PK_RSA )
+ return( POLARSSL_ERR_PK_TYPE_MISMATCH );
+ }
+ else
+ {
+ if( pub->pk_info != prv->pk_info )
+ return( POLARSSL_ERR_PK_TYPE_MISMATCH );
}
- return( pub->pk_info->check_pair_func( pub->pk_ctx, prv->pk_ctx ) );
+ return( prv->pk_info->check_pair_func( pub->pk_ctx, prv->pk_ctx ) );
}
/*