|
41 | 41 | #endif |
42 | 42 |
|
43 | 43 | #ifdef WOLFBOOT_TZ_PKCS11 |
44 | | -#include "wcs/user_settings.h" |
45 | | -#include "wolfssl/wolfcrypt/settings.h" |
46 | | -#include "wolfssl/wolfcrypt/wc_pkcs11.h" |
47 | | -#include "wolfssl/wolfcrypt/random.h" |
48 | | -extern const char pkcs11_library_name[]; |
49 | | -extern const CK_FUNCTION_LIST wolfpkcs11nsFunctionList; |
| 44 | +#include "test_pkcs11.h" |
50 | 45 | #endif |
51 | 46 |
|
52 | 47 | #ifdef WOLFCRYPT_SECURE_MODE |
@@ -192,8 +187,6 @@ void extra_led_off(void) |
192 | 187 | GPIOF_BSRR |= (1 << (LED_EXTRA_PIN + 16)); |
193 | 188 | } |
194 | 189 |
|
195 | | -extern int ecdsa_sign_verify(int devId); |
196 | | - |
197 | 190 | /* Command line commands */ |
198 | 191 | static int cmd_help(const char *args); |
199 | 192 | static int cmd_info(const char *args); |
@@ -837,98 +830,8 @@ static int run_psa_boot_attestation(void) |
837 | 830 | #ifdef WOLFBOOT_TZ_PKCS11 |
838 | 831 | static int cmd_login_pkcs11(const char *args) |
839 | 832 | { |
840 | | - int ret = -1; |
841 | | - unsigned int devId = 0; |
842 | | - Pkcs11Token token; |
843 | | - Pkcs11Dev PKCS11_d; |
844 | | - unsigned long session; |
845 | | - char TokenPin[] = "0123456789ABCDEF"; |
846 | | - char UserPin[] = "ABCDEF0123456789"; |
847 | | - char SoPinName[] = "SO-PIN"; |
848 | | - static int pkcs11_initialized = 0; |
849 | | - |
850 | | - if (pkcs11_initialized) { |
851 | | - printf("PKCS11 already initialized.\r\n"); |
852 | | - return 0; |
853 | | - } |
854 | | - |
855 | | - printf("PKCS11 Login\r\n"); |
856 | | - |
857 | | - printf("Initializing wolfCrypt..."); |
858 | | - fflush(stdout); |
859 | | - wolfCrypt_Init(); |
860 | | - printf("Done.\r\n"); |
861 | | - |
862 | | - PKCS11_d.heap = NULL, |
863 | | - PKCS11_d.func = (CK_FUNCTION_LIST *)&wolfpkcs11nsFunctionList; |
864 | | - |
865 | | - printf("Initializing EccKey token..."); |
866 | | - fflush(stdout); |
867 | | - ret = wc_Pkcs11Token_Init(&token, &PKCS11_d, 1, "EccKey", |
868 | | - (const byte*)TokenPin, strlen(TokenPin)); |
869 | | - |
870 | | - if (ret == 0) { |
871 | | - printf("Done.\r\n"); |
872 | | - printf("Initializing token..."); |
873 | | - fflush(stdout); |
874 | | - ret = wolfpkcs11nsFunctionList.C_InitToken(1, |
875 | | - (byte *)TokenPin, strlen(TokenPin), (byte *)SoPinName); |
876 | | - } |
877 | | - if (ret == 0) { |
878 | | - printf("Done.\r\n"); |
879 | | - printf("Opening session..."); |
880 | | - fflush(stdout); |
881 | | - ret = wolfpkcs11nsFunctionList.C_OpenSession(1, |
882 | | - CKF_SERIAL_SESSION | CKF_RW_SESSION, |
883 | | - NULL, NULL, &session); |
884 | | - } |
885 | | - |
886 | | - if (ret == 0) { |
887 | | - printf("Done.\r\n"); |
888 | | - printf("Logging in as SO..."); |
889 | | - ret = wolfpkcs11nsFunctionList.C_Login(session, CKU_SO, |
890 | | - (byte *)TokenPin, |
891 | | - strlen(TokenPin)); |
892 | | - } |
893 | | - if (ret == 0) { |
894 | | - extra_led_on(); |
895 | | - printf("Done.\r\n"); |
896 | | - printf("Setting PIN..."); |
897 | | - ret = wolfpkcs11nsFunctionList.C_InitPIN(session, |
898 | | - (byte *)TokenPin, |
899 | | - strlen(TokenPin)); |
900 | | - } |
901 | | - if (ret == 0) { |
902 | | - printf("Done.\r\n"); |
903 | | - printf("Logging out..."); |
904 | | - ret = wolfpkcs11nsFunctionList.C_Logout(session); |
905 | | - } |
906 | | - if (ret == 0) { |
907 | | - printf("Done.\r\n"); |
908 | | - printf("Registering crypto calls with wolfCrypt..."); |
909 | | - ret = wc_CryptoDev_RegisterDevice(devId, wc_Pkcs11_CryptoDevCb, |
910 | | - &token); |
911 | | - } |
912 | | - if (ret == 0) { |
913 | | - printf("Done.\r\n"); |
914 | | -#ifdef HAVE_ECC |
915 | | - printf("Testing ECC..."); |
916 | | - ret = ecdsa_sign_verify(devId); |
917 | | - if (ret != 0) { |
918 | | - ret = -1; |
919 | | - printf("Failed.\r\n"); |
920 | | - } |
921 | | - else { |
922 | | - usr_led_on(); |
923 | | - printf("Done.\r\n"); |
924 | | - } |
925 | | -#endif |
926 | | - } |
927 | | - if (ret == 0) { |
928 | | - printf("PKCS11 initialization completed successfully.\r\n"); |
929 | | - pkcs11_initialized = 1; |
930 | | - } |
931 | | - return ret; |
| 833 | + (void)args; |
| 834 | + return test_pkcs11_start(); |
932 | 835 | } |
933 | 836 | #endif /* WOLFBOOT_TZ_PKCS11 */ |
934 | 837 |
|
@@ -1377,6 +1280,16 @@ void main(void) |
1377 | 1280 | (void)run_psa_boot_attestation(); |
1378 | 1281 | #endif |
1379 | 1282 |
|
| 1283 | +#ifdef WOLFBOOT_PKCS11_TESTAPP |
| 1284 | + ret = test_pkcs11_start(); |
| 1285 | + if (ret == PKCS11_TEST_FIRST_BOOT_OK) |
| 1286 | + asm volatile ("bkpt #0x7d"); |
| 1287 | + else if (ret == PKCS11_TEST_SECOND_BOOT_OK) |
| 1288 | + asm volatile ("bkpt #0x7f"); |
| 1289 | + else |
| 1290 | + asm volatile ("bkpt #0x7e"); |
| 1291 | +#endif |
| 1292 | + |
1380 | 1293 | console_loop(); |
1381 | 1294 |
|
1382 | 1295 | while(1) |
|
0 commit comments