mirror of
				https://github.com/cuberite/polarssl.git
				synced 2025-11-04 04:32:24 -05:00 
			
		
		
		
	Add PSA_ALG_IS_HASH_AND_SIGN to the metadata tests
The status of signature wildcards with respect to PSA_ALG_IS_HASH_AND_SIGN is unclear in the specification. A wildcard is usually instantiated with a specific hash, making the implementation hash-and-sign, but it could also be instantiated with a non-hash-and-sign algorithm. For the time being, go with what's currently implemented, which is that they are considered hash-and-sign. Signed-off-by: Gilles Peskine <Gilles.Peskine@arm.com>
This commit is contained in:
		
							parent
							
								
									f2fe31ab4e
								
							
						
					
					
						commit
						4977e9fe64
					
				@ -200,15 +200,15 @@ asymmetric_signature_algorithm:PSA_ALG_RSA_PKCS1V15_SIGN_RAW:ALG_IS_RSA_PKCS1V15
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
Asymmetric signature: RSA PKCS#1 v1.5 SHA-256
 | 
					Asymmetric signature: RSA PKCS#1 v1.5 SHA-256
 | 
				
			||||||
depends_on:PSA_WANT_ALG_RSA_PKCS1V15_SIGN:PSA_WANT_ALG_SHA_256
 | 
					depends_on:PSA_WANT_ALG_RSA_PKCS1V15_SIGN:PSA_WANT_ALG_SHA_256
 | 
				
			||||||
asymmetric_signature_algorithm:PSA_ALG_RSA_PKCS1V15_SIGN( PSA_ALG_SHA_256 ):ALG_IS_RSA_PKCS1V15_SIGN | ALG_IS_SIGN_HASH
 | 
					asymmetric_signature_algorithm:PSA_ALG_RSA_PKCS1V15_SIGN( PSA_ALG_SHA_256 ):ALG_IS_RSA_PKCS1V15_SIGN | ALG_IS_SIGN_HASH | ALG_IS_HASH_AND_SIGN
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Asymmetric signature: RSA PSS SHA-256
 | 
					Asymmetric signature: RSA PSS SHA-256
 | 
				
			||||||
depends_on:PSA_WANT_ALG_RSA_PSS:PSA_WANT_ALG_SHA_256
 | 
					depends_on:PSA_WANT_ALG_RSA_PSS:PSA_WANT_ALG_SHA_256
 | 
				
			||||||
asymmetric_signature_algorithm:PSA_ALG_RSA_PSS( PSA_ALG_SHA_256 ):ALG_IS_RSA_PSS | ALG_IS_RSA_PSS_STANDARD_SALT | ALG_IS_SIGN_HASH
 | 
					asymmetric_signature_algorithm:PSA_ALG_RSA_PSS( PSA_ALG_SHA_256 ):ALG_IS_RSA_PSS | ALG_IS_RSA_PSS_STANDARD_SALT | ALG_IS_SIGN_HASH | ALG_IS_HASH_AND_SIGN
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Asymmetric signature: RSA PSS-any-salt SHA-256
 | 
					Asymmetric signature: RSA PSS-any-salt SHA-256
 | 
				
			||||||
depends_on:PSA_WANT_ALG_RSA_PSS:PSA_WANT_ALG_SHA_256
 | 
					depends_on:PSA_WANT_ALG_RSA_PSS:PSA_WANT_ALG_SHA_256
 | 
				
			||||||
asymmetric_signature_algorithm:PSA_ALG_RSA_PSS_ANY_SALT( PSA_ALG_SHA_256 ):ALG_IS_RSA_PSS | ALG_IS_RSA_PSS_ANY_SALT | ALG_IS_SIGN_HASH
 | 
					asymmetric_signature_algorithm:PSA_ALG_RSA_PSS_ANY_SALT( PSA_ALG_SHA_256 ):ALG_IS_RSA_PSS | ALG_IS_RSA_PSS_ANY_SALT | ALG_IS_SIGN_HASH | ALG_IS_HASH_AND_SIGN
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Asymmetric signature: randomized ECDSA (no hashing)
 | 
					Asymmetric signature: randomized ECDSA (no hashing)
 | 
				
			||||||
depends_on:PSA_WANT_ALG_ECDSA
 | 
					depends_on:PSA_WANT_ALG_ECDSA
 | 
				
			||||||
@ -216,11 +216,11 @@ asymmetric_signature_algorithm:PSA_ALG_ECDSA_ANY:ALG_IS_ECDSA | ALG_IS_RANDOMIZE
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
Asymmetric signature: SHA-256 + randomized ECDSA
 | 
					Asymmetric signature: SHA-256 + randomized ECDSA
 | 
				
			||||||
depends_on:PSA_WANT_ALG_ECDSA:PSA_WANT_ALG_SHA_256
 | 
					depends_on:PSA_WANT_ALG_ECDSA:PSA_WANT_ALG_SHA_256
 | 
				
			||||||
asymmetric_signature_algorithm:PSA_ALG_ECDSA( PSA_ALG_SHA_256 ):ALG_IS_ECDSA | ALG_IS_RANDOMIZED_ECDSA | ALG_IS_SIGN_HASH
 | 
					asymmetric_signature_algorithm:PSA_ALG_ECDSA( PSA_ALG_SHA_256 ):ALG_IS_ECDSA | ALG_IS_RANDOMIZED_ECDSA | ALG_IS_SIGN_HASH | ALG_IS_HASH_AND_SIGN
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Asymmetric signature: SHA-256 + deterministic ECDSA using SHA-256
 | 
					Asymmetric signature: SHA-256 + deterministic ECDSA using SHA-256
 | 
				
			||||||
depends_on:PSA_WANT_ALG_DETERMINISTIC_ECDSA:PSA_WANT_ALG_SHA_256
 | 
					depends_on:PSA_WANT_ALG_DETERMINISTIC_ECDSA:PSA_WANT_ALG_SHA_256
 | 
				
			||||||
asymmetric_signature_algorithm:PSA_ALG_DETERMINISTIC_ECDSA( PSA_ALG_SHA_256 ):ALG_IS_ECDSA | ALG_IS_DETERMINISTIC_ECDSA | ALG_ECDSA_IS_DETERMINISTIC | ALG_IS_SIGN_HASH
 | 
					asymmetric_signature_algorithm:PSA_ALG_DETERMINISTIC_ECDSA( PSA_ALG_SHA_256 ):ALG_IS_ECDSA | ALG_IS_DETERMINISTIC_ECDSA | ALG_ECDSA_IS_DETERMINISTIC | ALG_IS_SIGN_HASH | ALG_IS_HASH_AND_SIGN
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Asymmetric signature: pure EdDSA
 | 
					Asymmetric signature: pure EdDSA
 | 
				
			||||||
depends_on:PSA_WANT_ALG_EDDSA
 | 
					depends_on:PSA_WANT_ALG_EDDSA
 | 
				
			||||||
@ -228,11 +228,11 @@ asymmetric_signature_algorithm:PSA_ALG_PURE_EDDSA:0
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
Asymmetric signature: Ed25519ph
 | 
					Asymmetric signature: Ed25519ph
 | 
				
			||||||
depends_on:PSA_WANT_ALG_EDDSA
 | 
					depends_on:PSA_WANT_ALG_EDDSA
 | 
				
			||||||
asymmetric_signature_algorithm:PSA_ALG_ED25519PH:ALG_IS_HASH_EDDSA | ALG_IS_SIGN_HASH
 | 
					asymmetric_signature_algorithm:PSA_ALG_ED25519PH:ALG_IS_HASH_EDDSA | ALG_IS_SIGN_HASH | ALG_IS_HASH_AND_SIGN
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Asymmetric signature: Ed448ph
 | 
					Asymmetric signature: Ed448ph
 | 
				
			||||||
depends_on:PSA_WANT_ALG_EDDSA
 | 
					depends_on:PSA_WANT_ALG_EDDSA
 | 
				
			||||||
asymmetric_signature_algorithm:PSA_ALG_ED448PH:ALG_IS_HASH_EDDSA | ALG_IS_SIGN_HASH
 | 
					asymmetric_signature_algorithm:PSA_ALG_ED448PH:ALG_IS_HASH_EDDSA | ALG_IS_SIGN_HASH | ALG_IS_HASH_AND_SIGN
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Asymmetric signature: RSA PKCS#1 v1.5 with wildcard hash
 | 
					Asymmetric signature: RSA PKCS#1 v1.5 with wildcard hash
 | 
				
			||||||
depends_on:PSA_WANT_ALG_RSA_PKCS1V15_SIGN
 | 
					depends_on:PSA_WANT_ALG_RSA_PKCS1V15_SIGN
 | 
				
			||||||
 | 
				
			|||||||
@ -33,16 +33,17 @@
 | 
				
			|||||||
#define ALG_IS_DETERMINISTIC_ECDSA      ( 1u << 14 )
 | 
					#define ALG_IS_DETERMINISTIC_ECDSA      ( 1u << 14 )
 | 
				
			||||||
#define ALG_IS_RANDOMIZED_ECDSA         ( 1u << 15 )
 | 
					#define ALG_IS_RANDOMIZED_ECDSA         ( 1u << 15 )
 | 
				
			||||||
#define ALG_IS_HASH_EDDSA               ( 1u << 16 )
 | 
					#define ALG_IS_HASH_EDDSA               ( 1u << 16 )
 | 
				
			||||||
#define ALG_IS_SIGN_HASH            ( 1u << 17 )
 | 
					#define ALG_IS_SIGN_HASH                ( 1u << 17 )
 | 
				
			||||||
#define ALG_IS_RSA_OAEP                 ( 1u << 18 )
 | 
					#define ALG_IS_HASH_AND_SIGN            ( 1u << 18 )
 | 
				
			||||||
#define ALG_IS_HKDF                     ( 1u << 19 )
 | 
					#define ALG_IS_RSA_OAEP                 ( 1u << 19 )
 | 
				
			||||||
#define ALG_IS_FFDH                     ( 1u << 20 )
 | 
					#define ALG_IS_HKDF                     ( 1u << 20 )
 | 
				
			||||||
#define ALG_IS_ECDH                     ( 1u << 21 )
 | 
					#define ALG_IS_FFDH                     ( 1u << 21 )
 | 
				
			||||||
#define ALG_IS_WILDCARD                 ( 1u << 22 )
 | 
					#define ALG_IS_ECDH                     ( 1u << 22 )
 | 
				
			||||||
#define ALG_IS_RAW_KEY_AGREEMENT        ( 1u << 23 )
 | 
					#define ALG_IS_WILDCARD                 ( 1u << 23 )
 | 
				
			||||||
#define ALG_IS_AEAD_ON_BLOCK_CIPHER     ( 1u << 24 )
 | 
					#define ALG_IS_RAW_KEY_AGREEMENT        ( 1u << 24 )
 | 
				
			||||||
#define ALG_IS_TLS12_PRF                ( 1u << 25 )
 | 
					#define ALG_IS_AEAD_ON_BLOCK_CIPHER     ( 1u << 25 )
 | 
				
			||||||
#define ALG_IS_TLS12_PSK_TO_MS          ( 1u << 26 )
 | 
					#define ALG_IS_TLS12_PRF                ( 1u << 26 )
 | 
				
			||||||
 | 
					#define ALG_IS_TLS12_PSK_TO_MS          ( 1u << 27 )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* Flags for key type classification macros. There is a flag for every
 | 
					/* Flags for key type classification macros. There is a flag for every
 | 
				
			||||||
 * key type classification macro PSA_KEY_TYPE_IS_xxx except for some that
 | 
					 * key type classification macro PSA_KEY_TYPE_IS_xxx except for some that
 | 
				
			||||||
@ -51,7 +52,7 @@
 | 
				
			|||||||
#define KEY_TYPE_IS_VENDOR_DEFINED      ( 1u << 0 )
 | 
					#define KEY_TYPE_IS_VENDOR_DEFINED      ( 1u << 0 )
 | 
				
			||||||
#define KEY_TYPE_IS_UNSTRUCTURED        ( 1u << 1 )
 | 
					#define KEY_TYPE_IS_UNSTRUCTURED        ( 1u << 1 )
 | 
				
			||||||
#define KEY_TYPE_IS_PUBLIC_KEY          ( 1u << 2 )
 | 
					#define KEY_TYPE_IS_PUBLIC_KEY          ( 1u << 2 )
 | 
				
			||||||
#define KEY_TYPE_IS_KEY_PAIR             ( 1u << 3 )
 | 
					#define KEY_TYPE_IS_KEY_PAIR            ( 1u << 3 )
 | 
				
			||||||
#define KEY_TYPE_IS_RSA                 ( 1u << 4 )
 | 
					#define KEY_TYPE_IS_RSA                 ( 1u << 4 )
 | 
				
			||||||
#define KEY_TYPE_IS_DSA                 ( 1u << 5 )
 | 
					#define KEY_TYPE_IS_DSA                 ( 1u << 5 )
 | 
				
			||||||
#define KEY_TYPE_IS_ECC                 ( 1u << 6 )
 | 
					#define KEY_TYPE_IS_ECC                 ( 1u << 6 )
 | 
				
			||||||
@ -115,6 +116,7 @@ void algorithm_classification( psa_algorithm_t alg, unsigned flags )
 | 
				
			|||||||
    TEST_CLASSIFICATION_MACRO( ALG_IS_RANDOMIZED_ECDSA, alg, flags );
 | 
					    TEST_CLASSIFICATION_MACRO( ALG_IS_RANDOMIZED_ECDSA, alg, flags );
 | 
				
			||||||
    TEST_CLASSIFICATION_MACRO( ALG_IS_HASH_EDDSA, alg, flags );
 | 
					    TEST_CLASSIFICATION_MACRO( ALG_IS_HASH_EDDSA, alg, flags );
 | 
				
			||||||
    TEST_CLASSIFICATION_MACRO( ALG_IS_SIGN_HASH, alg, flags );
 | 
					    TEST_CLASSIFICATION_MACRO( ALG_IS_SIGN_HASH, alg, flags );
 | 
				
			||||||
 | 
					    TEST_CLASSIFICATION_MACRO( ALG_IS_HASH_AND_SIGN, alg, flags );
 | 
				
			||||||
    TEST_CLASSIFICATION_MACRO( ALG_IS_RSA_OAEP, alg, flags );
 | 
					    TEST_CLASSIFICATION_MACRO( ALG_IS_RSA_OAEP, alg, flags );
 | 
				
			||||||
    TEST_CLASSIFICATION_MACRO( ALG_IS_HKDF, alg, flags );
 | 
					    TEST_CLASSIFICATION_MACRO( ALG_IS_HKDF, alg, flags );
 | 
				
			||||||
    TEST_CLASSIFICATION_MACRO( ALG_IS_WILDCARD, alg, flags );
 | 
					    TEST_CLASSIFICATION_MACRO( ALG_IS_WILDCARD, alg, flags );
 | 
				
			||||||
@ -490,7 +492,9 @@ void asymmetric_signature_algorithm( int alg_arg, int classification_flags )
 | 
				
			|||||||
/* BEGIN_CASE */
 | 
					/* BEGIN_CASE */
 | 
				
			||||||
void asymmetric_signature_wildcard( int alg_arg, int classification_flags )
 | 
					void asymmetric_signature_wildcard( int alg_arg, int classification_flags )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    classification_flags |= ALG_IS_SIGN_HASH | ALG_IS_WILDCARD;
 | 
					    classification_flags |= ALG_IS_WILDCARD;
 | 
				
			||||||
 | 
					    classification_flags |= ALG_IS_SIGN_HASH;
 | 
				
			||||||
 | 
					    classification_flags |= ALG_IS_HASH_AND_SIGN;
 | 
				
			||||||
    test_asymmetric_signature_algorithm( alg_arg, classification_flags );
 | 
					    test_asymmetric_signature_algorithm( alg_arg, classification_flags );
 | 
				
			||||||
    /* Any failure of this test function comes from
 | 
					    /* Any failure of this test function comes from
 | 
				
			||||||
     * asymmetric_signature_algorithm. Pacify -Werror=unused-label. */
 | 
					     * asymmetric_signature_algorithm. Pacify -Werror=unused-label. */
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user