psa_crypto.c: use switch instead if-else in psa_aead_check_nonce_length and psa_aead_set_lengths (fixes
@@ -3621,9 +3621,10 @@ static psa_status_t psa_aead_check_nonce_length( psa_algorithm_t alg,
{
psa_algorithm_t base_alg = psa_aead_get_base_algorithm( alg );
-#if defined(PSA_WANT_ALG_GCM)
- if( base_alg == PSA_ALG_GCM )
+ switch(base_alg)
{
+#if defined(PSA_WANT_ALG_GCM)
+ case PSA_ALG_GCM:
/* Not checking max nonce size here as GCM spec allows almost
* arbitrarily large nonces. Please note that we do not generally
* recommend the usage of nonces of greater length than
@@ -3632,23 +3633,23 @@ static psa_status_t psa_aead_check_nonce_length( psa_algorithm_t alg,
* large number of messages.*/
if( nonce_length != 0 )
return( PSA_SUCCESS );
- }
+ break;
#endif /* PSA_WANT_ALG_GCM */
#if defined(PSA_WANT_ALG_CCM)
- if( base_alg == PSA_ALG_CCM )
- {
+ case PSA_ALG_CCM:
if( nonce_length >= 7 && nonce_length <= 13 )
return( PSA_SUCCESS );
- }
- else
+ break;
#endif /* PSA_WANT_ALG_CCM */
#if defined(PSA_WANT_ALG_CHACHA20_POLY1305)
- if( base_alg == PSA_ALG_CHACHA20_POLY1305 )
- {
+ case PSA_ALG_CHACHA20_POLY1305:
if( nonce_length == 12 )
return( PSA_SUCCESS );
- }
+ break;
#endif /* PSA_WANT_ALG_CHACHA20_POLY1305 */
+ default:
+ break;
+ }
return( PSA_ERROR_NOT_SUPPORTED );
}
@@ -3950,9 +3951,10 @@ psa_status_t psa_aead_set_lengths( psa_aead_operation_t *operation,
goto exit;
}
-#if defined(PSA_WANT_ALG_GCM)
- if( operation->alg == PSA_ALG_GCM )
+ switch(operation->alg)
{
+#if defined(PSA_WANT_ALG_GCM)
+ case PSA_ALG_GCM:
/* Lengths can only be too large for GCM if size_t is bigger than 32
* bits. Without the guard this code will generate warnings on 32bit
* builds. */
@@ -3964,26 +3966,25 @@ psa_status_t psa_aead_set_lengths( psa_aead_operation_t *operation,
goto exit;
}
#endif
- }
- else
+ break;
#endif /* PSA_WANT_ALG_GCM */
#if defined(PSA_WANT_ALG_CCM)
- if( operation->alg == PSA_ALG_CCM )
- {
+ case PSA_ALG_CCM:
if( ad_length > 0xFF00 )
{
status = PSA_ERROR_INVALID_ARGUMENT;
goto exit;
}
- }
- else
+ break;
#endif /* PSA_WANT_ALG_CCM */
#if defined(PSA_WANT_ALG_CHACHA20_POLY1305)
- if( operation->alg == PSA_ALG_CHACHA20_POLY1305 )
- {
+ case PSA_ALG_CHACHA20_POLY1305:
/* No length restrictions for ChaChaPoly. */
- }
+ break;
#endif /* PSA_WANT_ALG_CHACHA20_POLY1305 */
+ default:
+ break;
+ }
status = psa_driver_wrapper_aead_set_lengths( operation, ad_length,
plaintext_length );
