@@ -22,29 +22,22 @@ static rsa_key s_rsa_key_should;
2222static ecc_key s_ecc_key_should ;
2323#endif
2424
25- static int s_pem_decode_filehandle ( const void * in , unsigned long inlen , void * key )
25+ static int s_key_cmp ( ltc_pka_key * key )
2626{
27- password_ctx pw_ctx ;
28- ltc_pka_key * key_ = key ;
29- int err ;
30- pw_ctx .callback = password_get ;
31- if ((err = pem_decode (in , inlen , key_ , & pw_ctx )) != CRYPT_OK ) {
32- return err ;
33- }
34- switch (key_ -> id ) {
27+ switch (key -> id ) {
3528 case LTC_PKA_DSA :
3629#if defined(LTC_MDSA )
37- return dsa_key_cmp (PK_PRIVATE , & s_dsa_key_should , & key_ -> u .dsa );
30+ return dsa_key_cmp (PK_PRIVATE , & s_dsa_key_should , & key -> u .dsa );
3831#endif
3932 break ;
4033 case LTC_PKA_RSA :
4134#if defined(LTC_MRSA )
42- return rsa_key_cmp (PK_PRIVATE , & s_rsa_key_should , & key_ -> u .rsa );
35+ return rsa_key_cmp (PK_PRIVATE , & s_rsa_key_should , & key -> u .rsa );
4336#endif
4437 break ;
4538 case LTC_PKA_EC :
4639#if defined(LTC_MECC )
47- return ecc_key_cmp (PK_PRIVATE , & s_ecc_key_should , & key_ -> u .ecc );
40+ return ecc_key_cmp (PK_PRIVATE , & s_ecc_key_should , & key -> u .ecc );
4841#endif
4942 break ;
5043 case LTC_PKA_CURVE25519 :
@@ -55,6 +48,17 @@ static int s_pem_decode_filehandle(const void *in, unsigned long inlen, void *ke
5548 return CRYPT_INVALID_ARG ;
5649}
5750
51+ static int s_pem_decode (const void * in , unsigned long inlen , void * key )
52+ {
53+ password_ctx pw_ctx ;
54+ int err ;
55+ pw_ctx .callback = password_get ;
56+ if ((err = pem_decode (in , inlen , key , & pw_ctx )) != CRYPT_OK ) {
57+ return err ;
58+ }
59+ return s_key_cmp (key );
60+ }
61+
5862static void s_pem_free_key (ltc_pka_key * key )
5963{
6064 switch (key -> id ) {
@@ -95,8 +99,9 @@ int pem_test(void)
9599#endif
96100
97101
98- DO (test_process_dir ("tests/pem" , & key , s_pem_decode_filehandle , (dir_cleanup_cb )s_pem_free_key , "pem_test" ));
99- DO (test_process_dir ("tests/pem-ecc-pkcs8" , & key , s_pem_decode_filehandle , (dir_cleanup_cb )s_pem_free_key , "pem_test+ecc" ));
102+ DO (test_process_dir ("tests/pem" , & key , s_pem_decode , NULL , (dir_cleanup_cb )s_pem_free_key , "pem_test" ));
103+ DO (test_process_dir ("tests/pem-ecc-pkcs8" , & key , s_pem_decode , NULL , (dir_cleanup_cb )s_pem_free_key , "pem_test+ecc" ));
104+ DO (test_process_dir ("tests/ssh" , & key , s_pem_decode_ssh , NULL , (dir_cleanup_cb )s_pem_free_key , "pem_test+ssh" ));
100105
101106#if defined(LTC_MDSA )
102107 dsa_free (& s_dsa_key_should );
0 commit comments