@ -300,7 +300,7 @@ int RSA_public_encrypt(size_t flen, const uint8_t *from, uint8_t *to, RSA *rsa,
OPENSSL_PUT_ERROR ( RSA , ERR_R_OVERFLOW ) ;
OPENSSL_PUT_ERROR ( RSA , ERR_R_OVERFLOW ) ;
return - 1 ;
return - 1 ;
}
}
return out_len ;
return ( int ) out_len ;
}
}
static int rsa_sign_raw_no_self_test ( RSA * rsa , size_t * out_len , uint8_t * out ,
static int rsa_sign_raw_no_self_test ( RSA * rsa , size_t * out_len , uint8_t * out ,
@ -332,7 +332,7 @@ int RSA_private_encrypt(size_t flen, const uint8_t *from, uint8_t *to, RSA *rsa,
OPENSSL_PUT_ERROR ( RSA , ERR_R_OVERFLOW ) ;
OPENSSL_PUT_ERROR ( RSA , ERR_R_OVERFLOW ) ;
return - 1 ;
return - 1 ;
}
}
return out_len ;
return ( int ) out_len ;
}
}
int RSA_decrypt ( RSA * rsa , size_t * out_len , uint8_t * out , size_t max_out ,
int RSA_decrypt ( RSA * rsa , size_t * out_len , uint8_t * out , size_t max_out ,
@ -347,7 +347,6 @@ int RSA_decrypt(RSA *rsa, size_t *out_len, uint8_t *out, size_t max_out,
int RSA_private_decrypt ( size_t flen , const uint8_t * from , uint8_t * to , RSA * rsa ,
int RSA_private_decrypt ( size_t flen , const uint8_t * from , uint8_t * to , RSA * rsa ,
int padding ) {
int padding ) {
size_t out_len ;
size_t out_len ;
if ( ! RSA_decrypt ( rsa , & out_len , to , RSA_size ( rsa ) , from , flen , padding ) ) {
if ( ! RSA_decrypt ( rsa , & out_len , to , RSA_size ( rsa ) , from , flen , padding ) ) {
return - 1 ;
return - 1 ;
}
}
@ -356,13 +355,12 @@ int RSA_private_decrypt(size_t flen, const uint8_t *from, uint8_t *to, RSA *rsa,
OPENSSL_PUT_ERROR ( RSA , ERR_R_OVERFLOW ) ;
OPENSSL_PUT_ERROR ( RSA , ERR_R_OVERFLOW ) ;
return - 1 ;
return - 1 ;
}
}
return out_len ;
return ( int ) out_len ;
}
}
int RSA_public_decrypt ( size_t flen , const uint8_t * from , uint8_t * to , RSA * rsa ,
int RSA_public_decrypt ( size_t flen , const uint8_t * from , uint8_t * to , RSA * rsa ,
int padding ) {
int padding ) {
size_t out_len ;
size_t out_len ;
if ( ! RSA_verify_raw ( rsa , & out_len , to , RSA_size ( rsa ) , from , flen , padding ) ) {
if ( ! RSA_verify_raw ( rsa , & out_len , to , RSA_size ( rsa ) , from , flen , padding ) ) {
return - 1 ;
return - 1 ;
}
}
@ -371,15 +369,16 @@ int RSA_public_decrypt(size_t flen, const uint8_t *from, uint8_t *to, RSA *rsa,
OPENSSL_PUT_ERROR ( RSA , ERR_R_OVERFLOW ) ;
OPENSSL_PUT_ERROR ( RSA , ERR_R_OVERFLOW ) ;
return - 1 ;
return - 1 ;
}
}
return out_len ;
return ( int ) out_len ;
}
}
unsigned RSA_size ( const RSA * rsa ) {
unsigned RSA_size ( const RSA * rsa ) {
if ( rsa - > meth - > size ) {
size_t ret = rsa - > meth - > size ? rsa - > meth - > size ( rsa ) : rsa_default_size ( rsa ) ;
return rsa - > meth - > size ( rsa ) ;
// RSA modulus sizes are bounded by |BIGNUM|, which must fit in |unsigned|.
}
//
// TODO(https://crbug.com/boringssl/516): Should we make this return |size_t|?
return rsa_default_size ( rsa ) ;
assert ( ret < UINT_MAX ) ;
return ( unsigned ) ret ;
}
}
int RSA_is_opaque ( const RSA * rsa ) {
int RSA_is_opaque ( const RSA * rsa ) {
@ -474,8 +473,6 @@ static const struct pkcs1_sig_prefix kPKCS1SigPrefixes[] = {
int RSA_add_pkcs1_prefix ( uint8_t * * out_msg , size_t * out_msg_len ,
int RSA_add_pkcs1_prefix ( uint8_t * * out_msg , size_t * out_msg_len ,
int * is_alloced , int hash_nid , const uint8_t * digest ,
int * is_alloced , int hash_nid , const uint8_t * digest ,
size_t digest_len ) {
size_t digest_len ) {
unsigned i ;
if ( hash_nid = = NID_md5_sha1 ) {
if ( hash_nid = = NID_md5_sha1 ) {
// Special case: SSL signature, just check the length.
// Special case: SSL signature, just check the length.
if ( digest_len ! = SSL_SIG_LENGTH ) {
if ( digest_len ! = SSL_SIG_LENGTH ) {
@ -489,7 +486,7 @@ int RSA_add_pkcs1_prefix(uint8_t **out_msg, size_t *out_msg_len,
return 1 ;
return 1 ;
}
}
for ( i = 0 ; kPKCS1SigPrefixes [ i ] . nid ! = NID_undef ; i + + ) {
for ( size_t i = 0 ; kPKCS1SigPrefixes [ i ] . nid ! = NID_undef ; i + + ) {
const struct pkcs1_sig_prefix * sig_prefix = & kPKCS1SigPrefixes [ i ] ;
const struct pkcs1_sig_prefix * sig_prefix = & kPKCS1SigPrefixes [ i ] ;
if ( sig_prefix - > nid ! = hash_nid ) {
if ( sig_prefix - > nid ! = hash_nid ) {
continue ;
continue ;
@ -501,17 +498,14 @@ int RSA_add_pkcs1_prefix(uint8_t **out_msg, size_t *out_msg_len,
}
}
const uint8_t * prefix = sig_prefix - > bytes ;
const uint8_t * prefix = sig_prefix - > bytes ;
unsigned prefix_len = sig_prefix - > len ;
size_t prefix_len = sig_prefix - > len ;
unsigned signed_msg_len ;
size_t signed_msg_len = prefix_len + digest_len ;
uint8_t * signed_msg ;
signed_msg_len = prefix_len + digest_len ;
if ( signed_msg_len < prefix_len ) {
if ( signed_msg_len < prefix_len ) {
OPENSSL_PUT_ERROR ( RSA , RSA_R_TOO_LONG ) ;
OPENSSL_PUT_ERROR ( RSA , RSA_R_TOO_LONG ) ;
return 0 ;
return 0 ;
}
}
signed_msg = OPENSSL_malloc ( signed_msg_len ) ;
uint8_t * signed_msg = OPENSSL_malloc ( signed_msg_len ) ;
if ( ! signed_msg ) {
if ( ! signed_msg ) {
OPENSSL_PUT_ERROR ( RSA , ERR_R_MALLOC_FAILURE ) ;
OPENSSL_PUT_ERROR ( RSA , ERR_R_MALLOC_FAILURE ) ;
return 0 ;
return 0 ;
@ -554,7 +548,12 @@ int rsa_sign_no_self_test(int hash_nid, const uint8_t *digest,
goto err ;
goto err ;
}
}
* out_len = size_t_out_len ;
if ( size_t_out_len > UINT_MAX ) {
OPENSSL_PUT_ERROR ( RSA , ERR_R_OVERFLOW ) ;
goto err ;
}
* out_len = ( unsigned ) size_t_out_len ;
ret = 1 ;
ret = 1 ;
err :
err :