mirror of
				https://github.com/cuberite/polarssl.git
				synced 2025-11-03 20:22:59 -05:00 
			
		
		
		
	Change the driver calling logic for psa_sign/verify_messsage
The changed logic is to try a sign-message driver (opaque or transparent); if there isn't one, fallback to builtin sofware and do the hashing, then try a sign-hash driver. This will enable to the opaque driver to fallback to software. Signed-off-by: gabor-mezei-arm <gabor.mezei@arm.com>
This commit is contained in:
		
							parent
							
								
									6883fd248d
								
							
						
					
					
						commit
						256443e64e
					
				@ -102,22 +102,13 @@ psa_status_t psa_driver_wrapper_sign_message(
 | 
				
			|||||||
                return( status );
 | 
					                return( status );
 | 
				
			||||||
#endif /* PSA_CRYPTO_DRIVER_TEST */
 | 
					#endif /* PSA_CRYPTO_DRIVER_TEST */
 | 
				
			||||||
#endif /* PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT */
 | 
					#endif /* PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT */
 | 
				
			||||||
            /* Fell through, meaning no accelerator supports this operation */
 | 
					            break;
 | 
				
			||||||
            return( psa_sign_message_builtin( attributes,
 | 
					 | 
				
			||||||
                                              key_buffer,
 | 
					 | 
				
			||||||
                                              key_buffer_size,
 | 
					 | 
				
			||||||
                                              alg,
 | 
					 | 
				
			||||||
                                              input,
 | 
					 | 
				
			||||||
                                              input_length,
 | 
					 | 
				
			||||||
                                              signature,
 | 
					 | 
				
			||||||
                                              signature_size,
 | 
					 | 
				
			||||||
                                              signature_length ) );
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
        /* Add cases for opaque driver here */
 | 
					        /* Add cases for opaque driver here */
 | 
				
			||||||
#if defined(PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT)
 | 
					#if defined(PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT)
 | 
				
			||||||
#if defined(PSA_CRYPTO_DRIVER_TEST)
 | 
					#if defined(PSA_CRYPTO_DRIVER_TEST)
 | 
				
			||||||
        case PSA_CRYPTO_TEST_DRIVER_LOCATION:
 | 
					        case PSA_CRYPTO_TEST_DRIVER_LOCATION:
 | 
				
			||||||
            return( mbedtls_test_opaque_signature_sign_message(
 | 
					            status = mbedtls_test_opaque_signature_sign_message(
 | 
				
			||||||
                        attributes,
 | 
					                        attributes,
 | 
				
			||||||
                        key_buffer,
 | 
					                        key_buffer,
 | 
				
			||||||
                        key_buffer_size,
 | 
					                        key_buffer_size,
 | 
				
			||||||
@ -126,7 +117,10 @@ psa_status_t psa_driver_wrapper_sign_message(
 | 
				
			|||||||
                        input_length,
 | 
					                        input_length,
 | 
				
			||||||
                        signature,
 | 
					                        signature,
 | 
				
			||||||
                        signature_size,
 | 
					                        signature_size,
 | 
				
			||||||
                        signature_length ) );
 | 
					                        signature_length );
 | 
				
			||||||
 | 
					            if( status != PSA_ERROR_NOT_SUPPORTED )
 | 
				
			||||||
 | 
					                return( status );
 | 
				
			||||||
 | 
					            break;
 | 
				
			||||||
#endif /* PSA_CRYPTO_DRIVER_TEST */
 | 
					#endif /* PSA_CRYPTO_DRIVER_TEST */
 | 
				
			||||||
#endif /* PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT */
 | 
					#endif /* PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT */
 | 
				
			||||||
        default:
 | 
					        default:
 | 
				
			||||||
@ -134,6 +128,16 @@ psa_status_t psa_driver_wrapper_sign_message(
 | 
				
			|||||||
            (void)status;
 | 
					            (void)status;
 | 
				
			||||||
            return( PSA_ERROR_INVALID_ARGUMENT );
 | 
					            return( PSA_ERROR_INVALID_ARGUMENT );
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    return( psa_sign_message_builtin( attributes,
 | 
				
			||||||
 | 
					                                      key_buffer,
 | 
				
			||||||
 | 
					                                      key_buffer_size,
 | 
				
			||||||
 | 
					                                      alg,
 | 
				
			||||||
 | 
					                                      input,
 | 
				
			||||||
 | 
					                                      input_length,
 | 
				
			||||||
 | 
					                                      signature,
 | 
				
			||||||
 | 
					                                      signature_size,
 | 
				
			||||||
 | 
					                                      signature_length ) );
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
psa_status_t psa_driver_wrapper_verify_message(
 | 
					psa_status_t psa_driver_wrapper_verify_message(
 | 
				
			||||||
@ -171,15 +175,7 @@ psa_status_t psa_driver_wrapper_verify_message(
 | 
				
			|||||||
                return( status );
 | 
					                return( status );
 | 
				
			||||||
#endif /* PSA_CRYPTO_DRIVER_TEST */
 | 
					#endif /* PSA_CRYPTO_DRIVER_TEST */
 | 
				
			||||||
#endif /* PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT */
 | 
					#endif /* PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT */
 | 
				
			||||||
 | 
					            break;
 | 
				
			||||||
            return( psa_verify_message_builtin( attributes,
 | 
					 | 
				
			||||||
                                                key_buffer,
 | 
					 | 
				
			||||||
                                                key_buffer_size,
 | 
					 | 
				
			||||||
                                                alg,
 | 
					 | 
				
			||||||
                                                input,
 | 
					 | 
				
			||||||
                                                input_length,
 | 
					 | 
				
			||||||
                                                signature,
 | 
					 | 
				
			||||||
                                                signature_length ) );
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
        /* Add cases for opaque driver here */
 | 
					        /* Add cases for opaque driver here */
 | 
				
			||||||
#if defined(PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT)
 | 
					#if defined(PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT)
 | 
				
			||||||
@ -194,6 +190,9 @@ psa_status_t psa_driver_wrapper_verify_message(
 | 
				
			|||||||
                        input_length,
 | 
					                        input_length,
 | 
				
			||||||
                        signature,
 | 
					                        signature,
 | 
				
			||||||
                        signature_length ) );
 | 
					                        signature_length ) );
 | 
				
			||||||
 | 
					            if( status != PSA_ERROR_NOT_SUPPORTED )
 | 
				
			||||||
 | 
					                return( status );
 | 
				
			||||||
 | 
					            break;
 | 
				
			||||||
#endif /* PSA_CRYPTO_DRIVER_TEST */
 | 
					#endif /* PSA_CRYPTO_DRIVER_TEST */
 | 
				
			||||||
#endif /* PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT */
 | 
					#endif /* PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT */
 | 
				
			||||||
        default:
 | 
					        default:
 | 
				
			||||||
@ -201,6 +200,15 @@ psa_status_t psa_driver_wrapper_verify_message(
 | 
				
			|||||||
            (void)status;
 | 
					            (void)status;
 | 
				
			||||||
            return( PSA_ERROR_INVALID_ARGUMENT );
 | 
					            return( PSA_ERROR_INVALID_ARGUMENT );
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    return( psa_verify_message_builtin( attributes,
 | 
				
			||||||
 | 
					                                        key_buffer,
 | 
				
			||||||
 | 
					                                        key_buffer_size,
 | 
				
			||||||
 | 
					                                        alg,
 | 
				
			||||||
 | 
					                                        input,
 | 
				
			||||||
 | 
					                                        input_length,
 | 
				
			||||||
 | 
					                                        signature,
 | 
				
			||||||
 | 
					                                        signature_length ) );
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
psa_status_t psa_driver_wrapper_sign_hash(
 | 
					psa_status_t psa_driver_wrapper_sign_hash(
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user