mirror of
				https://github.com/cuberite/polarssl.git
				synced 2025-11-03 20:22:59 -05:00 
			
		
		
		
	Merge pull request #4576 from gilles-peskine-arm/psa_key_derivation-bad_workflow-20210527
PSA key derivation bad-workflow tests
This commit is contained in:
		
						commit
						532327b429
					
				
							
								
								
									
										3
									
								
								ChangeLog.d/psa_key_derivation-bad_workflow.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								ChangeLog.d/psa_key_derivation-bad_workflow.txt
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,3 @@
 | 
				
			|||||||
 | 
					Bugfix
 | 
				
			||||||
 | 
					   * Fix PSA_ALG_TLS12_PRF and PSA_ALG_TLS12_PSK_TO_MS being too permissive
 | 
				
			||||||
 | 
					     about missing inputs.
 | 
				
			||||||
@ -3730,6 +3730,17 @@ static psa_status_t psa_key_derivation_tls12_prf_read(
 | 
				
			|||||||
    psa_status_t status;
 | 
					    psa_status_t status;
 | 
				
			||||||
    uint8_t offset, length;
 | 
					    uint8_t offset, length;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    switch( tls12_prf->state )
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        case PSA_TLS12_PRF_STATE_LABEL_SET:
 | 
				
			||||||
 | 
					            tls12_prf->state = PSA_TLS12_PRF_STATE_OUTPUT;
 | 
				
			||||||
 | 
					            break;
 | 
				
			||||||
 | 
					        case PSA_TLS12_PRF_STATE_OUTPUT:
 | 
				
			||||||
 | 
					            break;
 | 
				
			||||||
 | 
					        default:
 | 
				
			||||||
 | 
					            return( PSA_ERROR_BAD_STATE );
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    while( output_length != 0 )
 | 
					    while( output_length != 0 )
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        /* Check if we have fully processed the current block. */
 | 
					        /* Check if we have fully processed the current block. */
 | 
				
			||||||
 | 
				
			|||||||
@ -2777,6 +2777,22 @@ PSA key derivation: HKDF-SHA-256, good case, direct output
 | 
				
			|||||||
depends_on:PSA_WANT_ALG_HKDF:PSA_WANT_ALG_SHA_256
 | 
					depends_on:PSA_WANT_ALG_HKDF:PSA_WANT_ALG_SHA_256
 | 
				
			||||||
derive_input:PSA_ALG_HKDF(PSA_ALG_SHA_256):PSA_KEY_DERIVATION_INPUT_SALT:PSA_KEY_TYPE_NONE:"":PSA_SUCCESS:PSA_KEY_DERIVATION_INPUT_SECRET:PSA_KEY_TYPE_DERIVE:"0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b":PSA_SUCCESS:PSA_KEY_DERIVATION_INPUT_INFO:PSA_KEY_TYPE_NONE:"":PSA_SUCCESS:PSA_KEY_TYPE_NONE:PSA_SUCCESS
 | 
					derive_input:PSA_ALG_HKDF(PSA_ALG_SHA_256):PSA_KEY_DERIVATION_INPUT_SALT:PSA_KEY_TYPE_NONE:"":PSA_SUCCESS:PSA_KEY_DERIVATION_INPUT_SECRET:PSA_KEY_TYPE_DERIVE:"0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b":PSA_SUCCESS:PSA_KEY_DERIVATION_INPUT_INFO:PSA_KEY_TYPE_NONE:"":PSA_SUCCESS:PSA_KEY_TYPE_NONE:PSA_SUCCESS
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					PSA key derivation: HKDF-SHA-256, good case, omitted salt
 | 
				
			||||||
 | 
					depends_on:PSA_WANT_ALG_HKDF:PSA_WANT_ALG_SHA_256
 | 
				
			||||||
 | 
					derive_input:PSA_ALG_HKDF(PSA_ALG_SHA_256):0:UNUSED:"":UNUSED:PSA_KEY_DERIVATION_INPUT_SECRET:PSA_KEY_TYPE_DERIVE:"0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b":PSA_SUCCESS:PSA_KEY_DERIVATION_INPUT_INFO:PSA_KEY_TYPE_NONE:"":PSA_SUCCESS:PSA_KEY_TYPE_NONE:PSA_SUCCESS
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					PSA key derivation: HKDF-SHA-256, good case, info first
 | 
				
			||||||
 | 
					depends_on:PSA_WANT_ALG_HKDF:PSA_WANT_ALG_SHA_256
 | 
				
			||||||
 | 
					derive_input:PSA_ALG_HKDF(PSA_ALG_SHA_256):PSA_KEY_DERIVATION_INPUT_INFO:PSA_KEY_TYPE_NONE:"":PSA_SUCCESS:PSA_KEY_DERIVATION_INPUT_SALT:PSA_KEY_TYPE_NONE:"":PSA_SUCCESS:PSA_KEY_DERIVATION_INPUT_SECRET:PSA_KEY_TYPE_DERIVE:"0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b":PSA_SUCCESS:PSA_KEY_TYPE_NONE:PSA_SUCCESS
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					PSA key derivation: HKDF-SHA-256, good case, info after salt
 | 
				
			||||||
 | 
					depends_on:PSA_WANT_ALG_HKDF:PSA_WANT_ALG_SHA_256
 | 
				
			||||||
 | 
					derive_input:PSA_ALG_HKDF(PSA_ALG_SHA_256):PSA_KEY_DERIVATION_INPUT_SALT:PSA_KEY_TYPE_NONE:"":PSA_SUCCESS:PSA_KEY_DERIVATION_INPUT_SECRET:PSA_KEY_TYPE_DERIVE:"0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b":PSA_SUCCESS:PSA_KEY_DERIVATION_INPUT_INFO:PSA_KEY_TYPE_NONE:"":PSA_SUCCESS:PSA_KEY_TYPE_NONE:PSA_SUCCESS
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					PSA key derivation: HKDF-SHA-256, good case, omitted salt, info first
 | 
				
			||||||
 | 
					depends_on:PSA_WANT_ALG_HKDF:PSA_WANT_ALG_SHA_256
 | 
				
			||||||
 | 
					derive_input:PSA_ALG_HKDF(PSA_ALG_SHA_256):PSA_KEY_DERIVATION_INPUT_INFO:PSA_KEY_TYPE_NONE:"":PSA_SUCCESS:PSA_KEY_DERIVATION_INPUT_SECRET:PSA_KEY_TYPE_DERIVE:"0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b":PSA_SUCCESS:0:UNUSED:"":UNUSED:PSA_KEY_TYPE_NONE:PSA_SUCCESS
 | 
				
			||||||
 | 
					
 | 
				
			||||||
PSA key derivation: HKDF-SHA-256, good case, key output
 | 
					PSA key derivation: HKDF-SHA-256, good case, key output
 | 
				
			||||||
depends_on:PSA_WANT_ALG_HKDF:PSA_WANT_ALG_SHA_256
 | 
					depends_on:PSA_WANT_ALG_HKDF:PSA_WANT_ALG_SHA_256
 | 
				
			||||||
derive_input:PSA_ALG_HKDF(PSA_ALG_SHA_256):PSA_KEY_DERIVATION_INPUT_SALT:PSA_KEY_TYPE_NONE:"":PSA_SUCCESS:PSA_KEY_DERIVATION_INPUT_SECRET:PSA_KEY_TYPE_DERIVE:"0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b":PSA_SUCCESS:PSA_KEY_DERIVATION_INPUT_INFO:PSA_KEY_TYPE_NONE:"":PSA_SUCCESS:PSA_KEY_TYPE_DERIVE:PSA_SUCCESS
 | 
					derive_input:PSA_ALG_HKDF(PSA_ALG_SHA_256):PSA_KEY_DERIVATION_INPUT_SALT:PSA_KEY_TYPE_NONE:"":PSA_SUCCESS:PSA_KEY_DERIVATION_INPUT_SECRET:PSA_KEY_TYPE_DERIVE:"0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b":PSA_SUCCESS:PSA_KEY_DERIVATION_INPUT_INFO:PSA_KEY_TYPE_NONE:"":PSA_SUCCESS:PSA_KEY_TYPE_DERIVE:PSA_SUCCESS
 | 
				
			||||||
@ -2811,6 +2827,10 @@ PSA key derivation: HKDF-SHA-256, direct empty secret, key output
 | 
				
			|||||||
depends_on:PSA_WANT_ALG_HKDF:PSA_WANT_ALG_SHA_256
 | 
					depends_on:PSA_WANT_ALG_HKDF:PSA_WANT_ALG_SHA_256
 | 
				
			||||||
derive_input:PSA_ALG_HKDF(PSA_ALG_SHA_256):PSA_KEY_DERIVATION_INPUT_SALT:PSA_KEY_TYPE_NONE:"":PSA_SUCCESS:PSA_KEY_DERIVATION_INPUT_SECRET:PSA_KEY_TYPE_NONE:"":PSA_SUCCESS:PSA_KEY_DERIVATION_INPUT_INFO:PSA_KEY_TYPE_NONE:"":PSA_SUCCESS:PSA_KEY_TYPE_RAW_DATA:PSA_ERROR_NOT_PERMITTED
 | 
					derive_input:PSA_ALG_HKDF(PSA_ALG_SHA_256):PSA_KEY_DERIVATION_INPUT_SALT:PSA_KEY_TYPE_NONE:"":PSA_SUCCESS:PSA_KEY_DERIVATION_INPUT_SECRET:PSA_KEY_TYPE_NONE:"":PSA_SUCCESS:PSA_KEY_DERIVATION_INPUT_INFO:PSA_KEY_TYPE_NONE:"":PSA_SUCCESS:PSA_KEY_TYPE_RAW_DATA:PSA_ERROR_NOT_PERMITTED
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					PSA key derivation: HKDF-SHA-256, missing secret, key output
 | 
				
			||||||
 | 
					depends_on:PSA_WANT_ALG_HKDF:PSA_WANT_ALG_SHA_256
 | 
				
			||||||
 | 
					derive_input:PSA_ALG_HKDF(PSA_ALG_SHA_256):PSA_KEY_DERIVATION_INPUT_SALT:PSA_KEY_TYPE_NONE:"":PSA_SUCCESS:0:UNUSED:"":UNUSED:PSA_KEY_DERIVATION_INPUT_INFO:PSA_KEY_TYPE_NONE:"":PSA_SUCCESS:PSA_KEY_TYPE_RAW_DATA:PSA_ERROR_NOT_PERMITTED
 | 
				
			||||||
 | 
					
 | 
				
			||||||
PSA key derivation: HKDF-SHA-256, RAW_DATA key as salt
 | 
					PSA key derivation: HKDF-SHA-256, RAW_DATA key as salt
 | 
				
			||||||
depends_on:PSA_WANT_ALG_HKDF:PSA_WANT_ALG_SHA_256
 | 
					depends_on:PSA_WANT_ALG_HKDF:PSA_WANT_ALG_SHA_256
 | 
				
			||||||
derive_input:PSA_ALG_HKDF(PSA_ALG_SHA_256):PSA_KEY_DERIVATION_INPUT_SALT:PSA_KEY_TYPE_RAW_DATA:"412073616c74":PSA_SUCCESS:PSA_KEY_DERIVATION_INPUT_SECRET:PSA_KEY_TYPE_DERIVE:"0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b":PSA_SUCCESS:PSA_KEY_DERIVATION_INPUT_INFO:PSA_KEY_TYPE_NONE:"":PSA_SUCCESS:PSA_KEY_TYPE_DERIVE:PSA_SUCCESS
 | 
					derive_input:PSA_ALG_HKDF(PSA_ALG_SHA_256):PSA_KEY_DERIVATION_INPUT_SALT:PSA_KEY_TYPE_RAW_DATA:"412073616c74":PSA_SUCCESS:PSA_KEY_DERIVATION_INPUT_SECRET:PSA_KEY_TYPE_DERIVE:"0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b":PSA_SUCCESS:PSA_KEY_DERIVATION_INPUT_INFO:PSA_KEY_TYPE_NONE:"":PSA_SUCCESS:PSA_KEY_TYPE_DERIVE:PSA_SUCCESS
 | 
				
			||||||
@ -2833,14 +2853,94 @@ PSA key derivation: HKDF-SHA-256, DERIVE key as info
 | 
				
			|||||||
depends_on:PSA_WANT_ALG_HKDF:PSA_WANT_ALG_SHA_256
 | 
					depends_on:PSA_WANT_ALG_HKDF:PSA_WANT_ALG_SHA_256
 | 
				
			||||||
derive_input:PSA_ALG_HKDF(PSA_ALG_SHA_256):PSA_KEY_DERIVATION_INPUT_SALT:PSA_KEY_TYPE_NONE:"":PSA_SUCCESS:PSA_KEY_DERIVATION_INPUT_SECRET:PSA_KEY_TYPE_DERIVE:"0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b":PSA_SUCCESS:PSA_KEY_DERIVATION_INPUT_INFO:PSA_KEY_TYPE_DERIVE:"4120696e666f":PSA_ERROR_INVALID_ARGUMENT:PSA_KEY_TYPE_NONE:PSA_ERROR_BAD_STATE
 | 
					derive_input:PSA_ALG_HKDF(PSA_ALG_SHA_256):PSA_KEY_DERIVATION_INPUT_SALT:PSA_KEY_TYPE_NONE:"":PSA_SUCCESS:PSA_KEY_DERIVATION_INPUT_SECRET:PSA_KEY_TYPE_DERIVE:"0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b":PSA_SUCCESS:PSA_KEY_DERIVATION_INPUT_INFO:PSA_KEY_TYPE_DERIVE:"4120696e666f":PSA_ERROR_INVALID_ARGUMENT:PSA_KEY_TYPE_NONE:PSA_ERROR_BAD_STATE
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					PSA key derivation: HKDF-SHA-256, salt after secret
 | 
				
			||||||
 | 
					depends_on:PSA_WANT_ALG_HKDF:PSA_WANT_ALG_SHA_256
 | 
				
			||||||
 | 
					derive_input:PSA_ALG_HKDF(PSA_ALG_SHA_256):PSA_KEY_DERIVATION_INPUT_SECRET:PSA_KEY_TYPE_DERIVE:"0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b":PSA_SUCCESS:PSA_KEY_DERIVATION_INPUT_SALT:PSA_KEY_TYPE_NONE:"":PSA_ERROR_BAD_STATE:PSA_KEY_DERIVATION_INPUT_INFO:PSA_KEY_TYPE_NONE:"":PSA_ERROR_BAD_STATE:PSA_KEY_TYPE_NONE:PSA_ERROR_BAD_STATE
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					PSA key derivation: HKDF-SHA-256, missing secret
 | 
				
			||||||
 | 
					depends_on:PSA_WANT_ALG_HKDF:PSA_WANT_ALG_SHA_256
 | 
				
			||||||
 | 
					derive_input:PSA_ALG_HKDF(PSA_ALG_SHA_256):PSA_KEY_DERIVATION_INPUT_SALT:PSA_KEY_TYPE_NONE:"":PSA_SUCCESS:0:UNUSED:"":UNUSED:PSA_KEY_DERIVATION_INPUT_INFO:PSA_KEY_TYPE_NONE:"":PSA_SUCCESS:PSA_KEY_TYPE_NONE:PSA_ERROR_BAD_STATE
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					PSA key derivation: HKDF-SHA-256, missing info
 | 
				
			||||||
 | 
					depends_on:PSA_WANT_ALG_HKDF:PSA_WANT_ALG_SHA_256
 | 
				
			||||||
 | 
					derive_input:PSA_ALG_HKDF(PSA_ALG_SHA_256):PSA_KEY_DERIVATION_INPUT_SALT:PSA_KEY_TYPE_NONE:"":PSA_SUCCESS:PSA_KEY_DERIVATION_INPUT_SECRET:PSA_KEY_TYPE_DERIVE:"0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b":PSA_SUCCESS:0:UNUSED:"":UNUSED:PSA_KEY_TYPE_NONE:PSA_ERROR_BAD_STATE
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					PSA key derivation: HKDF-SHA-256, duplicate salt step
 | 
				
			||||||
 | 
					depends_on:PSA_WANT_ALG_HKDF:PSA_WANT_ALG_SHA_256
 | 
				
			||||||
 | 
					derive_input:PSA_ALG_HKDF(PSA_ALG_SHA_256):PSA_KEY_DERIVATION_INPUT_SALT:PSA_KEY_TYPE_NONE:"":PSA_SUCCESS:PSA_KEY_DERIVATION_INPUT_SECRET:PSA_KEY_TYPE_DERIVE:"0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b":PSA_SUCCESS:PSA_KEY_DERIVATION_INPUT_SALT:PSA_KEY_TYPE_NONE:"":PSA_ERROR_BAD_STATE:PSA_KEY_TYPE_NONE:PSA_ERROR_BAD_STATE
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					PSA key derivation: HKDF-SHA-256, duplicate secret step (direct, direct)
 | 
				
			||||||
 | 
					depends_on:PSA_WANT_ALG_HKDF:PSA_WANT_ALG_SHA_256
 | 
				
			||||||
 | 
					derive_input:PSA_ALG_HKDF(PSA_ALG_SHA_256):PSA_KEY_DERIVATION_INPUT_SECRET:PSA_KEY_TYPE_NONE:"":PSA_SUCCESS:PSA_KEY_DERIVATION_INPUT_SECRET:PSA_KEY_TYPE_DERIVE:"0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b":PSA_ERROR_BAD_STATE:PSA_KEY_DERIVATION_INPUT_INFO:PSA_KEY_TYPE_NONE:"":PSA_ERROR_BAD_STATE:PSA_KEY_TYPE_NONE:PSA_ERROR_BAD_STATE
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					PSA key derivation: HKDF-SHA-256, duplicate secret step (direct, key)
 | 
				
			||||||
 | 
					depends_on:PSA_WANT_ALG_HKDF:PSA_WANT_ALG_SHA_256
 | 
				
			||||||
 | 
					derive_input:PSA_ALG_HKDF(PSA_ALG_SHA_256):PSA_KEY_DERIVATION_INPUT_SECRET:PSA_KEY_TYPE_NONE:"":PSA_SUCCESS:PSA_KEY_DERIVATION_INPUT_SECRET:PSA_KEY_TYPE_DERIVE:"0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b":PSA_ERROR_BAD_STATE:PSA_KEY_DERIVATION_INPUT_INFO:PSA_KEY_TYPE_NONE:"":PSA_ERROR_BAD_STATE:PSA_KEY_TYPE_NONE:PSA_ERROR_BAD_STATE
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					PSA key derivation: HKDF-SHA-256, duplicate secret step (key, direct)
 | 
				
			||||||
 | 
					depends_on:PSA_WANT_ALG_HKDF:PSA_WANT_ALG_SHA_256
 | 
				
			||||||
 | 
					derive_input:PSA_ALG_HKDF(PSA_ALG_SHA_256):PSA_KEY_DERIVATION_INPUT_SECRET:PSA_KEY_TYPE_DERIVE:"0a0a0a0a":PSA_SUCCESS:PSA_KEY_DERIVATION_INPUT_SECRET:PSA_KEY_TYPE_NONE:"0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b":PSA_ERROR_BAD_STATE:PSA_KEY_DERIVATION_INPUT_INFO:PSA_KEY_TYPE_NONE:"":PSA_ERROR_BAD_STATE:PSA_KEY_TYPE_NONE:PSA_ERROR_BAD_STATE
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					PSA key derivation: HKDF-SHA-256, duplicate secret step (key, key)
 | 
				
			||||||
 | 
					depends_on:PSA_WANT_ALG_HKDF:PSA_WANT_ALG_SHA_256
 | 
				
			||||||
 | 
					derive_input:PSA_ALG_HKDF(PSA_ALG_SHA_256):PSA_KEY_DERIVATION_INPUT_SECRET:PSA_KEY_TYPE_DERIVE:"0a0a0a0a":PSA_SUCCESS:PSA_KEY_DERIVATION_INPUT_SECRET:PSA_KEY_TYPE_DERIVE:"0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b":PSA_ERROR_BAD_STATE:PSA_KEY_DERIVATION_INPUT_INFO:PSA_KEY_TYPE_NONE:"":PSA_ERROR_BAD_STATE:PSA_KEY_TYPE_NONE:PSA_ERROR_BAD_STATE
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					PSA key derivation: HKDF-SHA-256, duplicate info step (non-consecutive)
 | 
				
			||||||
 | 
					depends_on:PSA_WANT_ALG_HKDF:PSA_WANT_ALG_SHA_256
 | 
				
			||||||
 | 
					derive_input:PSA_ALG_HKDF(PSA_ALG_SHA_256):PSA_KEY_DERIVATION_INPUT_INFO:PSA_KEY_TYPE_NONE:"":PSA_SUCCESS:PSA_KEY_DERIVATION_INPUT_SECRET:PSA_KEY_TYPE_DERIVE:"0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b":PSA_SUCCESS:PSA_KEY_DERIVATION_INPUT_INFO:PSA_KEY_TYPE_NONE:"":PSA_ERROR_BAD_STATE:PSA_KEY_TYPE_NONE:PSA_ERROR_BAD_STATE
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					PSA key derivation: HKDF-SHA-256, duplicate info step (consecutive)
 | 
				
			||||||
 | 
					depends_on:PSA_WANT_ALG_HKDF:PSA_WANT_ALG_SHA_256
 | 
				
			||||||
 | 
					derive_input:PSA_ALG_HKDF(PSA_ALG_SHA_256):PSA_KEY_DERIVATION_INPUT_INFO:PSA_KEY_TYPE_NONE:"":PSA_SUCCESS:PSA_KEY_DERIVATION_INPUT_INFO:PSA_KEY_TYPE_NONE:"":PSA_ERROR_BAD_STATE:PSA_KEY_DERIVATION_INPUT_SECRET:PSA_KEY_TYPE_DERIVE:"0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b":PSA_ERROR_BAD_STATE:PSA_KEY_TYPE_NONE:PSA_ERROR_BAD_STATE
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					PSA key derivation: HKDF-SHA-256, reject label step
 | 
				
			||||||
 | 
					depends_on:PSA_WANT_ALG_HKDF:PSA_WANT_ALG_SHA_256
 | 
				
			||||||
 | 
					derive_input:PSA_ALG_HKDF(PSA_ALG_SHA_256):PSA_KEY_DERIVATION_INPUT_LABEL:PSA_KEY_TYPE_NONE:"":PSA_ERROR_INVALID_ARGUMENT:PSA_KEY_DERIVATION_INPUT_SECRET:PSA_KEY_TYPE_DERIVE:"0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b":PSA_ERROR_BAD_STATE:PSA_KEY_DERIVATION_INPUT_INFO:PSA_KEY_TYPE_NONE:"":PSA_ERROR_BAD_STATE:PSA_KEY_TYPE_NONE:PSA_ERROR_BAD_STATE
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					PSA key derivation: HKDF-SHA-256, reject seed step
 | 
				
			||||||
 | 
					depends_on:PSA_WANT_ALG_HKDF:PSA_WANT_ALG_SHA_256
 | 
				
			||||||
 | 
					derive_input:PSA_ALG_HKDF(PSA_ALG_SHA_256):PSA_KEY_DERIVATION_INPUT_SEED:PSA_KEY_TYPE_NONE:"":PSA_ERROR_INVALID_ARGUMENT:PSA_KEY_DERIVATION_INPUT_SECRET:PSA_KEY_TYPE_DERIVE:"0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b":PSA_ERROR_BAD_STATE:PSA_KEY_DERIVATION_INPUT_INFO:PSA_KEY_TYPE_NONE:"":PSA_ERROR_BAD_STATE:PSA_KEY_TYPE_NONE:PSA_ERROR_BAD_STATE
 | 
				
			||||||
 | 
					
 | 
				
			||||||
PSA key derivation: TLS 1.2 PRF SHA-256, good case
 | 
					PSA key derivation: TLS 1.2 PRF SHA-256, good case
 | 
				
			||||||
depends_on:PSA_WANT_ALG_SHA_256:PSA_WANT_ALG_TLS12_PRF
 | 
					depends_on:PSA_WANT_ALG_SHA_256:PSA_WANT_ALG_TLS12_PRF
 | 
				
			||||||
derive_input:PSA_ALG_TLS12_PRF(PSA_ALG_SHA_256):PSA_KEY_DERIVATION_INPUT_SEED:PSA_KEY_TYPE_NONE:"":PSA_SUCCESS:PSA_KEY_DERIVATION_INPUT_SECRET:PSA_KEY_TYPE_DERIVE:"0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b":PSA_SUCCESS:PSA_KEY_DERIVATION_INPUT_LABEL:PSA_KEY_TYPE_NONE:"":PSA_SUCCESS:PSA_KEY_TYPE_DERIVE:PSA_SUCCESS
 | 
					derive_input:PSA_ALG_TLS12_PRF(PSA_ALG_SHA_256):PSA_KEY_DERIVATION_INPUT_SEED:PSA_KEY_TYPE_NONE:"":PSA_SUCCESS:PSA_KEY_DERIVATION_INPUT_SECRET:PSA_KEY_TYPE_DERIVE:"0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b":PSA_SUCCESS:PSA_KEY_DERIVATION_INPUT_LABEL:PSA_KEY_TYPE_NONE:"":PSA_SUCCESS:PSA_KEY_TYPE_DERIVE:PSA_SUCCESS
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					PSA key derivation: ECDH with TLS 1.2 PRF SHA-256, good case
 | 
				
			||||||
 | 
					depends_on:PSA_WANT_ALG_SHA_256:PSA_WANT_ALG_TLS12_PRF:PSA_WANT_ALG_ECDH:PSA_WANT_KEY_TYPE_ECC_KEY_PAIR:PSA_WANT_ECC_SECP_R1_256
 | 
				
			||||||
 | 
					derive_input:PSA_ALG_KEY_AGREEMENT(PSA_ALG_ECDH, PSA_ALG_TLS12_PRF(PSA_ALG_SHA_256)):PSA_KEY_DERIVATION_INPUT_SEED:PSA_KEY_TYPE_NONE:"":PSA_SUCCESS:PSA_KEY_DERIVATION_INPUT_SECRET:PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_FAMILY_SECP_R1):"c88f01f510d9ac3f70a292daa2316de544e9aab8afe84049c62a9c57862d1433":PSA_SUCCESS:PSA_KEY_DERIVATION_INPUT_LABEL:PSA_KEY_TYPE_NONE:"":PSA_SUCCESS:PSA_KEY_TYPE_NONE:PSA_SUCCESS
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					PSA key derivation: TLS 1.2 PRF SHA-256, missing label
 | 
				
			||||||
 | 
					depends_on:PSA_WANT_ALG_SHA_256:PSA_WANT_ALG_TLS12_PRF
 | 
				
			||||||
 | 
					derive_input:PSA_ALG_TLS12_PRF(PSA_ALG_SHA_256):PSA_KEY_DERIVATION_INPUT_SEED:PSA_KEY_TYPE_NONE:"":PSA_SUCCESS:PSA_KEY_DERIVATION_INPUT_SECRET:PSA_KEY_TYPE_DERIVE:"0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b":PSA_SUCCESS:0:UNUSED:"":UNUSED:PSA_KEY_TYPE_NONE:PSA_ERROR_BAD_STATE
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					PSA key derivation: ECDH with TLS 1.2 PRF SHA-256, missing label
 | 
				
			||||||
 | 
					depends_on:PSA_WANT_ALG_SHA_256:PSA_WANT_ALG_TLS12_PRF:PSA_WANT_ALG_ECDH:PSA_WANT_KEY_TYPE_ECC_KEY_PAIR:PSA_WANT_ECC_SECP_R1_256
 | 
				
			||||||
 | 
					derive_input:PSA_ALG_KEY_AGREEMENT(PSA_ALG_ECDH, PSA_ALG_TLS12_PRF(PSA_ALG_SHA_256)):PSA_KEY_DERIVATION_INPUT_SEED:PSA_KEY_TYPE_NONE:"":PSA_SUCCESS:PSA_KEY_DERIVATION_INPUT_SECRET:PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_FAMILY_SECP_R1):"c88f01f510d9ac3f70a292daa2316de544e9aab8afe84049c62a9c57862d1433":PSA_SUCCESS:0:UNUSED:"":UNUSED:PSA_KEY_TYPE_NONE:PSA_ERROR_BAD_STATE
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					PSA key derivation: TLS 1.2 PRF SHA-256, missing label and secret
 | 
				
			||||||
 | 
					depends_on:PSA_WANT_ALG_SHA_256:PSA_WANT_ALG_TLS12_PRF
 | 
				
			||||||
 | 
					derive_input:PSA_ALG_TLS12_PRF(PSA_ALG_SHA_256):PSA_KEY_DERIVATION_INPUT_SEED:PSA_KEY_TYPE_NONE:"":PSA_SUCCESS:0:UNUSED:"":UNUSED:0:UNUSED:"":UNUSED:PSA_KEY_TYPE_NONE:PSA_ERROR_BAD_STATE
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					PSA key derivation: ECDH with TLS 1.2 PRF SHA-256, missing label and secret
 | 
				
			||||||
 | 
					depends_on:PSA_WANT_ALG_SHA_256:PSA_WANT_ALG_TLS12_PRF:PSA_WANT_ALG_ECDH:PSA_WANT_KEY_TYPE_ECC_KEY_PAIR:PSA_WANT_ECC_SECP_R1_256
 | 
				
			||||||
 | 
					derive_input:PSA_ALG_KEY_AGREEMENT(PSA_ALG_ECDH, PSA_ALG_TLS12_PRF(PSA_ALG_SHA_256)):PSA_KEY_DERIVATION_INPUT_SEED:PSA_KEY_TYPE_NONE:"":PSA_SUCCESS:0:UNUSED:"":UNUSED:0:UNUSED:"":UNUSED:PSA_KEY_TYPE_NONE:PSA_ERROR_BAD_STATE
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					PSA key derivation: TLS 1.2 PRF SHA-256, no inputs
 | 
				
			||||||
 | 
					depends_on:PSA_WANT_ALG_SHA_256:PSA_WANT_ALG_TLS12_PRF
 | 
				
			||||||
 | 
					derive_input:PSA_ALG_TLS12_PRF(PSA_ALG_SHA_256):0:UNUSED:"":UNUSED:0:UNUSED:"":UNUSED:0:UNUSED:"":UNUSED:PSA_KEY_TYPE_NONE:PSA_ERROR_BAD_STATE
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					PSA key derivation: ECDH with TLS 1.2 PRF SHA-256, no inputs
 | 
				
			||||||
 | 
					depends_on:PSA_WANT_ALG_SHA_256:PSA_WANT_ALG_TLS12_PRF:PSA_WANT_ALG_ECDH:PSA_WANT_KEY_TYPE_ECC_KEY_PAIR:PSA_WANT_ECC_SECP_R1_256
 | 
				
			||||||
 | 
					derive_input:PSA_ALG_KEY_AGREEMENT(PSA_ALG_ECDH, PSA_ALG_TLS12_PRF(PSA_ALG_SHA_256)):0:UNUSED:"":UNUSED:0:UNUSED:"":UNUSED:0:UNUSED:"":UNUSED:PSA_KEY_TYPE_NONE:PSA_ERROR_BAD_STATE
 | 
				
			||||||
 | 
					
 | 
				
			||||||
PSA key derivation: TLS 1.2 PRF SHA-256, key first
 | 
					PSA key derivation: TLS 1.2 PRF SHA-256, key first
 | 
				
			||||||
depends_on:PSA_WANT_ALG_SHA_256:PSA_WANT_ALG_TLS12_PRF
 | 
					depends_on:PSA_WANT_ALG_SHA_256:PSA_WANT_ALG_TLS12_PRF
 | 
				
			||||||
derive_input:PSA_ALG_TLS12_PRF(PSA_ALG_SHA_256):PSA_KEY_DERIVATION_INPUT_SECRET:PSA_KEY_TYPE_DERIVE:"0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b":PSA_ERROR_BAD_STATE:PSA_KEY_DERIVATION_INPUT_SEED:PSA_KEY_TYPE_NONE:"":PSA_ERROR_BAD_STATE:PSA_KEY_DERIVATION_INPUT_LABEL:PSA_KEY_TYPE_NONE:"":PSA_ERROR_BAD_STATE:PSA_KEY_TYPE_NONE:PSA_ERROR_BAD_STATE
 | 
					derive_input:PSA_ALG_TLS12_PRF(PSA_ALG_SHA_256):PSA_KEY_DERIVATION_INPUT_SECRET:PSA_KEY_TYPE_DERIVE:"0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b":PSA_ERROR_BAD_STATE:PSA_KEY_DERIVATION_INPUT_SEED:PSA_KEY_TYPE_NONE:"":PSA_ERROR_BAD_STATE:PSA_KEY_DERIVATION_INPUT_LABEL:PSA_KEY_TYPE_NONE:"":PSA_ERROR_BAD_STATE:PSA_KEY_TYPE_NONE:PSA_ERROR_BAD_STATE
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					PSA key derivation: ECDH with TLS 1.2 PRF SHA-256, key first
 | 
				
			||||||
 | 
					depends_on:PSA_WANT_ALG_SHA_256:PSA_WANT_ALG_TLS12_PRF:PSA_WANT_ALG_ECDH:PSA_WANT_KEY_TYPE_ECC_KEY_PAIR:PSA_WANT_ECC_SECP_R1_256
 | 
				
			||||||
 | 
					derive_input:PSA_ALG_KEY_AGREEMENT(PSA_ALG_ECDH, PSA_ALG_TLS12_PRF(PSA_ALG_SHA_256)):PSA_KEY_DERIVATION_INPUT_SECRET:PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_FAMILY_SECP_R1):"c88f01f510d9ac3f70a292daa2316de544e9aab8afe84049c62a9c57862d1433":PSA_ERROR_BAD_STATE:PSA_KEY_DERIVATION_INPUT_SEED:PSA_KEY_TYPE_NONE:"":PSA_ERROR_BAD_STATE:PSA_KEY_DERIVATION_INPUT_LABEL:PSA_KEY_TYPE_NONE:"":PSA_ERROR_BAD_STATE:PSA_KEY_TYPE_NONE:PSA_ERROR_BAD_STATE
 | 
				
			||||||
 | 
					
 | 
				
			||||||
PSA key derivation: TLS 1.2 PRF SHA-256, label first
 | 
					PSA key derivation: TLS 1.2 PRF SHA-256, label first
 | 
				
			||||||
depends_on:PSA_WANT_ALG_SHA_256:PSA_WANT_ALG_TLS12_PRF
 | 
					depends_on:PSA_WANT_ALG_SHA_256:PSA_WANT_ALG_TLS12_PRF
 | 
				
			||||||
derive_input:PSA_ALG_TLS12_PRF(PSA_ALG_SHA_256):PSA_KEY_DERIVATION_INPUT_LABEL:PSA_KEY_TYPE_NONE:"":PSA_ERROR_BAD_STATE:PSA_KEY_DERIVATION_INPUT_SECRET:PSA_KEY_TYPE_DERIVE:"0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b":PSA_ERROR_BAD_STATE:PSA_KEY_DERIVATION_INPUT_SEED:PSA_KEY_TYPE_NONE:"":PSA_ERROR_BAD_STATE:PSA_KEY_TYPE_NONE:PSA_ERROR_BAD_STATE
 | 
					derive_input:PSA_ALG_TLS12_PRF(PSA_ALG_SHA_256):PSA_KEY_DERIVATION_INPUT_LABEL:PSA_KEY_TYPE_NONE:"":PSA_ERROR_BAD_STATE:PSA_KEY_DERIVATION_INPUT_SECRET:PSA_KEY_TYPE_DERIVE:"0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b":PSA_ERROR_BAD_STATE:PSA_KEY_DERIVATION_INPUT_SEED:PSA_KEY_TYPE_NONE:"":PSA_ERROR_BAD_STATE:PSA_KEY_TYPE_NONE:PSA_ERROR_BAD_STATE
 | 
				
			||||||
@ -2893,20 +2993,36 @@ PSA key derivation: ECDH on P256 with HKDF-SHA256, raw output
 | 
				
			|||||||
depends_on:PSA_WANT_ALG_ECDH:PSA_WANT_ALG_HKDF:PSA_WANT_ALG_SHA_256:PSA_WANT_KEY_TYPE_ECC_KEY_PAIR:MBEDTLS_PK_PARSE_C:PSA_WANT_ECC_SECP_R1_256
 | 
					depends_on:PSA_WANT_ALG_ECDH:PSA_WANT_ALG_HKDF:PSA_WANT_ALG_SHA_256:PSA_WANT_KEY_TYPE_ECC_KEY_PAIR:MBEDTLS_PK_PARSE_C:PSA_WANT_ECC_SECP_R1_256
 | 
				
			||||||
derive_input:PSA_ALG_KEY_AGREEMENT(PSA_ALG_ECDH, PSA_ALG_HKDF(PSA_ALG_SHA_256)):PSA_KEY_DERIVATION_INPUT_SALT:PSA_KEY_TYPE_NONE:"":PSA_SUCCESS:PSA_KEY_DERIVATION_INPUT_SECRET:PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_FAMILY_SECP_R1):"c88f01f510d9ac3f70a292daa2316de544e9aab8afe84049c62a9c57862d1433":PSA_SUCCESS:PSA_KEY_DERIVATION_INPUT_INFO:PSA_KEY_TYPE_NONE:"":PSA_SUCCESS:PSA_KEY_TYPE_NONE:PSA_SUCCESS
 | 
					derive_input:PSA_ALG_KEY_AGREEMENT(PSA_ALG_ECDH, PSA_ALG_HKDF(PSA_ALG_SHA_256)):PSA_KEY_DERIVATION_INPUT_SALT:PSA_KEY_TYPE_NONE:"":PSA_SUCCESS:PSA_KEY_DERIVATION_INPUT_SECRET:PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_FAMILY_SECP_R1):"c88f01f510d9ac3f70a292daa2316de544e9aab8afe84049c62a9c57862d1433":PSA_SUCCESS:PSA_KEY_DERIVATION_INPUT_INFO:PSA_KEY_TYPE_NONE:"":PSA_SUCCESS:PSA_KEY_TYPE_NONE:PSA_SUCCESS
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					PSA key derivation: ECDH on P256 with HKDF-SHA256, omitted salt
 | 
				
			||||||
 | 
					depends_on:PSA_WANT_ALG_ECDH:PSA_WANT_ALG_HKDF:PSA_WANT_ALG_SHA_256:PSA_WANT_KEY_TYPE_ECC_KEY_PAIR:MBEDTLS_PK_PARSE_C:PSA_WANT_ECC_SECP_R1_256
 | 
				
			||||||
 | 
					derive_input:PSA_ALG_KEY_AGREEMENT(PSA_ALG_ECDH, PSA_ALG_HKDF(PSA_ALG_SHA_256)):0:UNUSED:"":UNUSED:PSA_KEY_DERIVATION_INPUT_SECRET:PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_FAMILY_SECP_R1):"c88f01f510d9ac3f70a292daa2316de544e9aab8afe84049c62a9c57862d1433":PSA_SUCCESS:PSA_KEY_DERIVATION_INPUT_INFO:PSA_KEY_TYPE_NONE:"":PSA_SUCCESS:PSA_KEY_TYPE_NONE:PSA_SUCCESS
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					PSA key derivation: ECDH on P256 with HKDF-SHA256, info first
 | 
				
			||||||
 | 
					depends_on:PSA_WANT_ALG_ECDH:PSA_WANT_ALG_HKDF:PSA_WANT_ALG_SHA_256:PSA_WANT_KEY_TYPE_ECC_KEY_PAIR:MBEDTLS_PK_PARSE_C:PSA_WANT_ECC_SECP_R1_256
 | 
				
			||||||
 | 
					derive_input:PSA_ALG_KEY_AGREEMENT(PSA_ALG_ECDH, PSA_ALG_HKDF(PSA_ALG_SHA_256)):PSA_KEY_DERIVATION_INPUT_INFO:PSA_KEY_TYPE_NONE:"":PSA_SUCCESS:PSA_KEY_DERIVATION_INPUT_SALT:PSA_KEY_TYPE_NONE:"":PSA_SUCCESS:PSA_KEY_DERIVATION_INPUT_SECRET:PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_FAMILY_SECP_R1):"c88f01f510d9ac3f70a292daa2316de544e9aab8afe84049c62a9c57862d1433":PSA_SUCCESS:PSA_KEY_TYPE_NONE:PSA_SUCCESS
 | 
				
			||||||
 | 
					
 | 
				
			||||||
PSA key derivation: ECDH on P256 with HKDF-SHA256, key output
 | 
					PSA key derivation: ECDH on P256 with HKDF-SHA256, key output
 | 
				
			||||||
depends_on:PSA_WANT_ALG_ECDH:PSA_WANT_ALG_HKDF:PSA_WANT_ALG_SHA_256:PSA_WANT_KEY_TYPE_ECC_KEY_PAIR:MBEDTLS_PK_PARSE_C:PSA_WANT_ECC_SECP_R1_256
 | 
					depends_on:PSA_WANT_ALG_ECDH:PSA_WANT_ALG_HKDF:PSA_WANT_ALG_SHA_256:PSA_WANT_KEY_TYPE_ECC_KEY_PAIR:MBEDTLS_PK_PARSE_C:PSA_WANT_ECC_SECP_R1_256
 | 
				
			||||||
derive_input:PSA_ALG_KEY_AGREEMENT(PSA_ALG_ECDH, PSA_ALG_HKDF(PSA_ALG_SHA_256)):PSA_KEY_DERIVATION_INPUT_SALT:PSA_KEY_TYPE_NONE:"":PSA_SUCCESS:PSA_KEY_DERIVATION_INPUT_SECRET:PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_FAMILY_SECP_R1):"c88f01f510d9ac3f70a292daa2316de544e9aab8afe84049c62a9c57862d1433":PSA_SUCCESS:PSA_KEY_DERIVATION_INPUT_INFO:PSA_KEY_TYPE_NONE:"":PSA_SUCCESS:PSA_KEY_TYPE_RAW_DATA:PSA_SUCCESS
 | 
					derive_input:PSA_ALG_KEY_AGREEMENT(PSA_ALG_ECDH, PSA_ALG_HKDF(PSA_ALG_SHA_256)):PSA_KEY_DERIVATION_INPUT_SALT:PSA_KEY_TYPE_NONE:"":PSA_SUCCESS:PSA_KEY_DERIVATION_INPUT_SECRET:PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_FAMILY_SECP_R1):"c88f01f510d9ac3f70a292daa2316de544e9aab8afe84049c62a9c57862d1433":PSA_SUCCESS:PSA_KEY_DERIVATION_INPUT_INFO:PSA_KEY_TYPE_NONE:"":PSA_SUCCESS:PSA_KEY_TYPE_RAW_DATA:PSA_SUCCESS
 | 
				
			||||||
 | 
					
 | 
				
			||||||
PSA key derivation: HKDF invalid state (double generate + read past capacity)
 | 
					PSA key derivation: ECDH on P256 with HKDF-SHA256, salt after secret
 | 
				
			||||||
 | 
					depends_on:PSA_WANT_ALG_ECDH:PSA_WANT_ALG_HKDF:PSA_WANT_ALG_SHA_256:PSA_WANT_KEY_TYPE_ECC_KEY_PAIR:MBEDTLS_PK_PARSE_C:PSA_WANT_ECC_SECP_R1_256
 | 
				
			||||||
 | 
					derive_input:PSA_ALG_KEY_AGREEMENT(PSA_ALG_ECDH, PSA_ALG_HKDF(PSA_ALG_SHA_256)):PSA_KEY_DERIVATION_INPUT_SECRET:PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_FAMILY_SECP_R1):"c88f01f510d9ac3f70a292daa2316de544e9aab8afe84049c62a9c57862d1433":PSA_SUCCESS:PSA_KEY_DERIVATION_INPUT_SALT:PSA_KEY_TYPE_NONE:"":PSA_ERROR_BAD_STATE:PSA_KEY_DERIVATION_INPUT_INFO:PSA_KEY_TYPE_NONE:"":PSA_ERROR_BAD_STATE:PSA_KEY_TYPE_NONE:PSA_ERROR_BAD_STATE
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					PSA key derivation: ECDH on P256 with HKDF-SHA256, missing info
 | 
				
			||||||
 | 
					depends_on:PSA_WANT_ALG_ECDH:PSA_WANT_ALG_HKDF:PSA_WANT_ALG_SHA_256:PSA_WANT_KEY_TYPE_ECC_KEY_PAIR:MBEDTLS_PK_PARSE_C:PSA_WANT_ECC_SECP_R1_256
 | 
				
			||||||
 | 
					derive_input:PSA_ALG_KEY_AGREEMENT(PSA_ALG_ECDH, PSA_ALG_HKDF(PSA_ALG_SHA_256)):PSA_KEY_DERIVATION_INPUT_SALT:PSA_KEY_TYPE_NONE:"":PSA_SUCCESS:PSA_KEY_DERIVATION_INPUT_SECRET:PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_FAMILY_SECP_R1):"c88f01f510d9ac3f70a292daa2316de544e9aab8afe84049c62a9c57862d1433":PSA_SUCCESS:0:UNUSED:"":UNUSED:PSA_KEY_TYPE_NONE:PSA_ERROR_BAD_STATE
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					PSA key derivation over capacity: HKDF
 | 
				
			||||||
depends_on:PSA_WANT_ALG_HKDF:PSA_WANT_ALG_SHA_256
 | 
					depends_on:PSA_WANT_ALG_HKDF:PSA_WANT_ALG_SHA_256
 | 
				
			||||||
test_derive_invalid_key_derivation_state:PSA_ALG_HKDF(PSA_ALG_SHA_256)
 | 
					derive_over_capacity:PSA_ALG_HKDF(PSA_ALG_SHA_256)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
PSA key derivation: TLS 1.2 PRF invalid state (double generate + read past capacity)
 | 
					PSA key derivation over capacity: TLS 1.2 PRF
 | 
				
			||||||
depends_on:PSA_WANT_ALG_SHA_256:PSA_WANT_ALG_TLS12_PRF
 | 
					depends_on:PSA_WANT_ALG_SHA_256:PSA_WANT_ALG_TLS12_PRF
 | 
				
			||||||
test_derive_invalid_key_derivation_state:PSA_ALG_TLS12_PRF(PSA_ALG_SHA_256)
 | 
					derive_over_capacity:PSA_ALG_TLS12_PRF(PSA_ALG_SHA_256)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
PSA key derivation: invalid state (call read/get_capacity after init and abort)
 | 
					PSA key derivation: actions without setup
 | 
				
			||||||
test_derive_invalid_key_derivation_tests:
 | 
					derive_actions_without_setup:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
PSA key derivation: HKDF SHA-256, RFC5869 #1, output 42+0
 | 
					PSA key derivation: HKDF SHA-256, RFC5869 #1, output 42+0
 | 
				
			||||||
depends_on:PSA_WANT_ALG_HKDF:PSA_WANT_ALG_SHA_256
 | 
					depends_on:PSA_WANT_ALG_HKDF:PSA_WANT_ALG_SHA_256
 | 
				
			||||||
 | 
				
			|||||||
@ -16,6 +16,9 @@
 | 
				
			|||||||
#include "test/psa_crypto_helpers.h"
 | 
					#include "test/psa_crypto_helpers.h"
 | 
				
			||||||
#include "test/psa_exercise_key.h"
 | 
					#include "test/psa_exercise_key.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* If this comes up, it's a bug in the test code or in the test data. */
 | 
				
			||||||
 | 
					#define UNUSED 0xdeadbeef
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/** An invalid export length that will never be set by psa_export_key(). */
 | 
					/** An invalid export length that will never be set by psa_export_key(). */
 | 
				
			||||||
static const size_t INVALID_EXPORT_LENGTH = ~0U;
 | 
					static const size_t INVALID_EXPORT_LENGTH = ~0U;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -4027,7 +4030,12 @@ void derive_input( int alg_arg,
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    for( i = 0; i < ARRAY_LENGTH( steps ); i++ )
 | 
					    for( i = 0; i < ARRAY_LENGTH( steps ); i++ )
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        if( key_types[i] != PSA_KEY_TYPE_NONE )
 | 
					        mbedtls_test_set_step( i );
 | 
				
			||||||
 | 
					        if( steps[i] == 0 )
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            /* Skip this step */
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        else if( key_types[i] != PSA_KEY_TYPE_NONE )
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            psa_set_key_type( &attributes, key_types[i] );
 | 
					            psa_set_key_type( &attributes, key_types[i] );
 | 
				
			||||||
            PSA_ASSERT( psa_import_key( &attributes,
 | 
					            PSA_ASSERT( psa_import_key( &attributes,
 | 
				
			||||||
@ -4086,7 +4094,7 @@ exit:
 | 
				
			|||||||
/* END_CASE */
 | 
					/* END_CASE */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* BEGIN_CASE */
 | 
					/* BEGIN_CASE */
 | 
				
			||||||
void test_derive_invalid_key_derivation_state( int alg_arg )
 | 
					void derive_over_capacity( int alg_arg )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    psa_algorithm_t alg = alg_arg;
 | 
					    psa_algorithm_t alg = alg_arg;
 | 
				
			||||||
    mbedtls_svc_key_id_t key = MBEDTLS_SVC_KEY_ID_INIT;
 | 
					    mbedtls_svc_key_id_t key = MBEDTLS_SVC_KEY_ID_INIT;
 | 
				
			||||||
@ -4137,7 +4145,7 @@ exit:
 | 
				
			|||||||
/* END_CASE */
 | 
					/* END_CASE */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* BEGIN_CASE */
 | 
					/* BEGIN_CASE */
 | 
				
			||||||
void test_derive_invalid_key_derivation_tests( )
 | 
					void derive_actions_without_setup( )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    uint8_t output_buffer[16];
 | 
					    uint8_t output_buffer[16];
 | 
				
			||||||
    size_t buffer_size = 16;
 | 
					    size_t buffer_size = 16;
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user