@@ -899,27 +899,24 @@ UTEST(EP_KEY_MGMT, TLV_TESTS)
899
899
crypto_key_t * ekp = NULL ;
900
900
int status = CRYPTO_LIB_SUCCESS ;
901
901
902
- // NOTE: Added Transfer Frame header to the plaintext
903
- char * buffer_nist_key_h = "000102030405060708090A0B0C0D0E0F000102030405060708090A0B0C0D0E0F" ;
904
- char * buffer_nist_iv_h = "b6ac8e4963f49207ffd6374b" ; // The last valid IV that was seen by the SA
905
-
906
902
// These assume a max TLV of 494 as defined by TLV_DATA_SIZE
907
903
// 2003001c00ff000000001880d039FFFF197f0b00030002008e1f6d21c4555555555555
908
904
// 197f0b00 - pus
909
905
// 03 - tag
910
906
// 0002 - length
911
907
// 008e - value
912
908
913
- char * buffer_TLV_OVERRUN_h = "2003001c00ff000000001880d039FFFF197f0b0003FFFF008e1f6d21c4555555555555" ; // FFFF = 65535
914
- char * buffer_TLV_MAX_MINUS_h = "2003001c00ff000000001880d03901EE197f0b000301ED008e1f6d21c4555555555555" ; // 01ED = 493
915
- char * buffer_TLV_MAX_h = "2003001c00ff000000001880d03901EE197f0b000301EE008e1f6d21c4555555555555" ; // 01EE = 494
916
- char * buffer_TLV_MAX_PLUS_h = "2003001c00ff000000001880d03901EF197f0b000301EF008e1f6d21c4555555555555" ; // 01EF = 495
917
- char * buffer_TLV_ONE_h = "2003001c00ff000000001880d0390001197f0b0003000100811f6d21c4555555555555" ; // 0001 = 1
918
- char * buffer_TLV_ZERO_h = "2003001c00ff000000001880d0390000197f0b00030000008e1f6d21c4555555555555" ; // 0000 = 0
919
-
920
- uint8_t * buffer_nist_iv_b , * buffer_nist_key_b , * buffer_TLV_OVERRUN_b , * buffer_TLV_MAX_MINUS_b , * buffer_TLV_MAX_b ,
921
- * buffer_TLV_MAX_PLUS_b , * buffer_TLV_ONE_b , * buffer_TLV_ZERO_b = NULL ;
922
- int buffer_nist_iv_len , buffer_nist_key_len , buffer_TLV_OVERRUN_len , buffer_TLV_MAX_MINUS_len , buffer_TLV_MAX_len ,
909
+ char * buffer_TLV_OVERRUN_h = "2003001c00ff000000001880d039FFFF197f0b0003FFFF008e1f6d21c4555555555555" ; // FFFF = 65535
910
+ char * buffer_TLV_ONE_KEY_h = "2003001c00ff000000001880d0390012197f0b00030010008e1f6d21c4555555555555" ; // 0010 = 16
911
+ char * buffer_TLV_MAX_h = "2003003a00ff000000001880d03901ee197f0b000301000080008100820083008400850086008700880089008a008b008c008d008e008f1f6d21c4" ; // 01EE = 494
912
+ char * buffer_TLV_MAX_BAD_LEN_h = "2003001a00ff000000001880d03901ee197f0b000301000080008100821f6d21c45555" ; // 01EE = 494
913
+ char * buffer_TLV_TEN_KEYS_h = "2003003400ff000000001880d0390024197f0b000300A000800081008200830084008500860087008800891f6d21c4555555555555" ; // 00A0 = 160
914
+ char * buffer_TLV_ONE_BIT_LEN_h = "2003001c00ff000000001880d0390019197f0b00030001008e1f6d21c4555555555555" ; // 0001 = 1
915
+ char * buffer_TLV_ZERO_h = "2003001a00ff000000001880d0390017197f0b000300001f6d21c4555555555555" ; // 0000 = 0
916
+
917
+ uint8_t * buffer_TLV_OVERRUN_b , * buffer_TLV_ONE_KEY_b , * buffer_TLV_MAX_b , * buffer_TLV_MAX_BAD_LEN_b ,
918
+ * buffer_TLV_TEN_KEYS_b , * buffer_TLV_ONE_BIT_LEN_b , * buffer_TLV_ZERO_b = NULL ;
919
+ int buffer_TLV_OVERRUN_len , buffer_TLV_MAX_MINUS_len , buffer_TLV_MAX_len , buffer_TLV_MAX_BAD_LEN_len ,
923
920
buffer_TLV_MAX_PLUS_len , buffer_TLV_ONE_len , buffer_TLV_ZERO_len = 0 ;
924
921
925
922
// Setup Processed Frame For Decryption
@@ -943,57 +940,73 @@ UTEST(EP_KEY_MGMT, TLV_TESTS)
943
940
test_association -> shsnf_len = 2 ;
944
941
test_association -> arsn_len = 2 ;
945
942
test_association -> arsnw = 5 ;
946
-
947
- // Insert key into keyring of SA 9
948
- hex_conversion (buffer_nist_key_h , (char * * )& buffer_nist_key_b , & buffer_nist_key_len );
949
- ekp = key_if -> get_key (142 );
950
- memcpy (ekp -> value , buffer_nist_key_b , buffer_nist_key_len );
951
- ekp -> key_state = KEY_ACTIVE ;
943
+
944
+ // set all keys to active
945
+ for (int x = 128 ; x <= 143 ; x ++ )
946
+ {
947
+ ekp = key_if -> get_key (x );
948
+ ekp -> key_state = KEY_ACTIVE ;
949
+ }
952
950
953
951
// Convert frames that will be processed
954
952
hex_conversion (buffer_TLV_OVERRUN_h , (char * * )& buffer_TLV_OVERRUN_b , & buffer_TLV_OVERRUN_len );
955
- hex_conversion (buffer_TLV_MAX_MINUS_h , (char * * )& buffer_TLV_MAX_MINUS_b , & buffer_TLV_MAX_MINUS_len );
953
+ hex_conversion (buffer_TLV_ONE_KEY_h , (char * * )& buffer_TLV_ONE_KEY_b , & buffer_TLV_MAX_MINUS_len );
956
954
hex_conversion (buffer_TLV_MAX_h , (char * * )& buffer_TLV_MAX_b , & buffer_TLV_MAX_len );
957
- hex_conversion (buffer_TLV_MAX_PLUS_h , (char * * )& buffer_TLV_MAX_PLUS_b , & buffer_TLV_MAX_PLUS_len );
955
+ hex_conversion (buffer_TLV_MAX_BAD_LEN_h , (char * * )& buffer_TLV_MAX_BAD_LEN_b , & buffer_TLV_MAX_BAD_LEN_len );
956
+ hex_conversion (buffer_TLV_TEN_KEYS_h , (char * * )& buffer_TLV_TEN_KEYS_b , & buffer_TLV_MAX_PLUS_len );
958
957
hex_conversion (buffer_TLV_ZERO_h , (char * * )& buffer_TLV_ZERO_b , & buffer_TLV_ZERO_len );
959
- hex_conversion (buffer_TLV_ONE_h , (char * * )& buffer_TLV_ONE_b , & buffer_TLV_ONE_len );
960
- // Convert/Set input IV
961
- hex_conversion (buffer_nist_iv_h , (char * * )& buffer_nist_iv_b , & buffer_nist_iv_len );
962
- memcpy (test_association -> iv , buffer_nist_iv_b , buffer_nist_iv_len );
958
+ hex_conversion (buffer_TLV_ONE_BIT_LEN_h , (char * * )& buffer_TLV_ONE_BIT_LEN_b , & buffer_TLV_ONE_len );
963
959
964
960
printf (KGRN "Checking for TLV overrun, should fail... \n" RESET );
965
961
status = Crypto_TC_ProcessSecurity (buffer_TLV_OVERRUN_b , & buffer_TLV_OVERRUN_len , & tc_nist_processed_frame );
966
962
ASSERT_EQ (CRYPTO_LIB_ERR_BAD_TLV_LENGTH , status );
967
963
968
- printf (KGRN "Checking for TLV MAX - 1 , should pass... \n" RESET );
969
- status = Crypto_TC_ProcessSecurity (buffer_TLV_MAX_MINUS_b , & buffer_TLV_MAX_MINUS_len , & tc_nist_processed_frame );
964
+ printf (KGRN "Checking for 1 key (16 bits) , should pass... \n" RESET );
965
+ status = Crypto_TC_ProcessSecurity (buffer_TLV_ONE_KEY_b , & buffer_TLV_MAX_MINUS_len , & tc_nist_processed_frame );
970
966
ASSERT_EQ (CRYPTO_LIB_SUCCESS , status );
971
967
972
- printf (KGRN "Checking for TLV MAX, should pass... \n" RESET );
968
+ // set all keys to active
969
+ for (int x = 128 ; x <= 143 ; x ++ )
970
+ {
971
+ ekp = key_if -> get_key (x );
972
+ ekp -> key_state = KEY_ACTIVE ;
973
+ }
974
+
975
+ printf (KGRN "Checking for 32 keys (494 bits), should pass... \n" RESET );
973
976
status = Crypto_TC_ProcessSecurity (buffer_TLV_MAX_b , & buffer_TLV_MAX_len , & tc_nist_processed_frame );
974
977
ASSERT_EQ (CRYPTO_LIB_SUCCESS , status );
975
978
976
- printf (KGRN "Checking for TLV MAX + 1, should fail... \n" RESET );
977
- status = Crypto_TC_ProcessSecurity (buffer_TLV_MAX_PLUS_b , & buffer_TLV_MAX_PLUS_len , & tc_nist_processed_frame );
979
+ // set all keys to active
980
+ for (int x = 128 ; x <= 137 ; x ++ )
981
+ {
982
+ ekp = key_if -> get_key (x );
983
+ ekp -> key_state = KEY_ACTIVE ;
984
+ }
985
+
986
+ printf (KGRN "Checking for 10 keys (160 bits), should pass... \n" RESET );
987
+ status = Crypto_TC_ProcessSecurity (buffer_TLV_TEN_KEYS_b , & buffer_TLV_MAX_PLUS_len , & tc_nist_processed_frame );
988
+ ASSERT_EQ (CRYPTO_LIB_SUCCESS , status );
989
+
990
+ printf (KGRN "Checking for 3 keys with bad pdu len (512 bits), should fail... \n" RESET );
991
+ status = Crypto_TC_ProcessSecurity (buffer_TLV_MAX_BAD_LEN_b , & buffer_TLV_MAX_BAD_LEN_len , & tc_nist_processed_frame );
978
992
ASSERT_EQ (CRYPTO_LIB_ERR_BAD_TLV_LENGTH , status );
979
993
980
- printf (KGRN "Checking for TLV length of 1, should pass... \n" RESET );
981
- status = Crypto_TC_ProcessSecurity (buffer_TLV_ONE_b , & buffer_TLV_ONE_len , & tc_nist_processed_frame );
994
+ printf (KGRN "Checking for TLV length of 1 bit , should pass... \n" RESET );
995
+ status = Crypto_TC_ProcessSecurity (buffer_TLV_ONE_BIT_LEN_b , & buffer_TLV_ONE_len , & tc_nist_processed_frame );
982
996
ASSERT_EQ (CRYPTO_LIB_SUCCESS , status );
983
997
984
- printf (KGRN "Checking for TLV length of 0, should ???? ... \n" RESET );
985
- status = Crypto_TC_ProcessSecurity (buffer_TLV_ONE_b , & buffer_TLV_ONE_len , & tc_nist_processed_frame );
986
- ASSERT_EQ (-110000 , status );
998
+ printf (KGRN "Checking for TLV length of 0 bits , should pass ... \n" RESET );
999
+ status = Crypto_TC_ProcessSecurity (buffer_TLV_ZERO_b , & buffer_TLV_ZERO_len , & tc_nist_processed_frame );
1000
+ ASSERT_EQ (CRYPTO_LIB_SUCCESS , status );
987
1001
988
1002
printf ("\n" );
989
1003
Crypto_Shutdown ();
990
1004
free (ptr_enc_frame );
991
- free (buffer_nist_iv_b );
992
- free (buffer_nist_key_b );
993
- free (buffer_TLV_MAX_MINUS_b );
1005
+ free (buffer_TLV_ONE_KEY_b );
994
1006
free (buffer_TLV_MAX_b );
995
- free (buffer_TLV_MAX_PLUS_b );
996
- free (buffer_TLV_ONE_b );
1007
+ free (buffer_TLV_MAX_BAD_LEN_b );
1008
+ free (buffer_TLV_TEN_KEYS_b );
1009
+ free (buffer_TLV_ONE_BIT_LEN_b );
997
1010
free (buffer_TLV_ZERO_b );
998
1011
free (buffer_TLV_OVERRUN_b );
999
1012
}
0 commit comments