|
26 | 26 |
|
27 | 27 | #define MODULE_ID MAKE_MODULE_ID('f', 'a', 'i') |
28 | 28 |
|
| 29 | +// Markers in the dis file to be able to trace certain functions |
| 30 | +#define PENTEST_MARKER_LABEL(name) asm volatile(#name ":" ::: "memory") |
| 31 | + |
29 | 32 | // OAEP label for testing. |
30 | 33 | static const unsigned char kTestLabel[] = "Test label."; |
31 | 34 | static const size_t kTestLabelLen = sizeof(kTestLabel) - 1; |
@@ -403,12 +406,14 @@ status_t cryptolib_fi_rsa_sign_impl( |
403 | 406 |
|
404 | 407 | // Trigger window. |
405 | 408 | if (uj_input.trigger & kPentestTrigger3) { |
| 409 | + PENTEST_MARKER_LABEL(PENTEST_MARKER_RSA_SIGN_START); |
406 | 410 | pentest_set_trigger_high(); |
407 | 411 | } |
408 | 412 | TRY(otcrypto_rsa_sign(&private_key, msg_digest, padding_mode, sig_buf)); |
409 | 413 | // Trigger window. |
410 | 414 | if (uj_input.trigger & kPentestTrigger3) { |
411 | 415 | pentest_set_trigger_low(); |
| 416 | + PENTEST_MARKER_LABEL(PENTEST_MARKER_RSA_SIGN_END); |
412 | 417 | } |
413 | 418 |
|
414 | 419 | // Return data back to host. |
@@ -561,13 +566,16 @@ status_t cryptolib_fi_rsa_verify_impl( |
561 | 566 | hardened_bool_t verification_result; |
562 | 567 | // Trigger window. |
563 | 568 | if (uj_input.trigger & kPentestTrigger3) { |
| 569 | + PENTEST_MARKER_LABEL(PENTEST_MARKER_RSA_VERIFY_START); |
564 | 570 | pentest_set_trigger_high(); |
565 | 571 | } |
566 | | - TRY(otcrypto_rsa_verify(&public_key, msg_digest, padding_mode, sig, |
567 | | - &verification_result)); |
| 572 | + status_t status = otcrypto_rsa_verify(&public_key, msg_digest, padding_mode, |
| 573 | + sig, &verification_result); |
568 | 574 | if (uj_input.trigger & kPentestTrigger3) { |
569 | 575 | pentest_set_trigger_low(); |
| 576 | + PENTEST_MARKER_LABEL(PENTEST_MARKER_RSA_VERIFY_END); |
570 | 577 | } |
| 578 | + TRY(status); |
571 | 579 |
|
572 | 580 | // Return data back to host. |
573 | 581 | uj_output->result = true; |
@@ -633,9 +641,11 @@ status_t cryptolib_fi_p256_ecdh_impl( |
633 | 641 | .keyblob = shared_secretblob, |
634 | 642 | }; |
635 | 643 |
|
| 644 | + PENTEST_MARKER_LABEL(PENTEST_MARKER_P256_ECDH_START); |
636 | 645 | pentest_set_trigger_high(); |
637 | 646 | TRY(otcrypto_ecdh_p256(&private_key, &public_key, &shared_secret)); |
638 | 647 | pentest_set_trigger_low(); |
| 648 | + PENTEST_MARKER_LABEL(PENTEST_MARKER_P256_ECDH_END); |
639 | 649 |
|
640 | 650 | uint32_t share0[kPentestP256Words]; |
641 | 651 | uint32_t share1[kPentestP256Words]; |
@@ -726,13 +736,15 @@ status_t cryptolib_fi_p256_sign_impl( |
726 | 736 |
|
727 | 737 | // Trigger window 1. |
728 | 738 | if (uj_input.trigger == 1) { |
| 739 | + PENTEST_MARKER_LABEL(PENTEST_MARKER_P256_SIGN_START); |
729 | 740 | pentest_set_trigger_high(); |
730 | 741 | } |
731 | 742 | // Sign the message. |
732 | 743 | TRY(otcrypto_ecdsa_p256_sign_verify(&private_key, &public_key, message_digest, |
733 | 744 | signature_mut)); |
734 | 745 | if (uj_input.trigger == 1) { |
735 | 746 | pentest_set_trigger_low(); |
| 747 | + PENTEST_MARKER_LABEL(PENTEST_MARKER_P256_SIGN_END); |
736 | 748 | } |
737 | 749 |
|
738 | 750 | // Return data back to host. |
@@ -790,10 +802,12 @@ status_t cryptolib_fi_p256_verify_impl( |
790 | 802 |
|
791 | 803 | hardened_bool_t verification_result = kHardenedBoolFalse; |
792 | 804 |
|
| 805 | + PENTEST_MARKER_LABEL(PENTEST_MARKER_P256_VERIFY_START); |
793 | 806 | pentest_set_trigger_high(); |
794 | 807 | TRY(otcrypto_ecdsa_p256_verify(&public_key, message_digest, signature, |
795 | 808 | &verification_result)); |
796 | 809 | pentest_set_trigger_low(); |
| 810 | + PENTEST_MARKER_LABEL(PENTEST_MARKER_P256_VERIFY_END); |
797 | 811 |
|
798 | 812 | // Return data back to host. |
799 | 813 | uj_output->result = true; |
@@ -859,9 +873,11 @@ status_t cryptolib_fi_p384_ecdh_impl( |
859 | 873 | .keyblob = shared_secretblob, |
860 | 874 | }; |
861 | 875 |
|
| 876 | + PENTEST_MARKER_LABEL(PENTEST_MARKER_P384_ECDH_START); |
862 | 877 | pentest_set_trigger_high(); |
863 | 878 | TRY(otcrypto_ecdh_p384(&private_key, &public_key, &shared_secret)); |
864 | 879 | pentest_set_trigger_low(); |
| 880 | + PENTEST_MARKER_LABEL(PENTEST_MARKER_P384_ECDH_END); |
865 | 881 |
|
866 | 882 | uint32_t share0[kPentestP384Words]; |
867 | 883 | uint32_t share1[kPentestP384Words]; |
@@ -952,12 +968,14 @@ status_t cryptolib_fi_p384_sign_impl( |
952 | 968 |
|
953 | 969 | // Trigger window 1. |
954 | 970 | if (uj_input.trigger == 1) { |
| 971 | + PENTEST_MARKER_LABEL(PENTEST_MARKER_P384_SIGN_START); |
955 | 972 | pentest_set_trigger_high(); |
956 | 973 | } |
957 | 974 | TRY(otcrypto_ecdsa_p384_sign_verify(&private_key, &public_key, message_digest, |
958 | 975 | signature_mut)); |
959 | 976 | if (uj_input.trigger == 1) { |
960 | 977 | pentest_set_trigger_low(); |
| 978 | + PENTEST_MARKER_LABEL(PENTEST_MARKER_P384_SIGN_END); |
961 | 979 | } |
962 | 980 |
|
963 | 981 | // Return data back to host. |
@@ -1015,10 +1033,12 @@ status_t cryptolib_fi_p384_verify_impl( |
1015 | 1033 |
|
1016 | 1034 | hardened_bool_t verification_result = kHardenedBoolFalse; |
1017 | 1035 |
|
| 1036 | + PENTEST_MARKER_LABEL(PENTEST_MARKER_P384_VERIFY_START); |
1018 | 1037 | pentest_set_trigger_high(); |
1019 | 1038 | TRY(otcrypto_ecdsa_p384_verify(&public_key, message_digest, signature, |
1020 | 1039 | &verification_result)); |
1021 | 1040 | pentest_set_trigger_low(); |
| 1041 | + PENTEST_MARKER_LABEL(PENTEST_MARKER_P384_VERIFY_END); |
1022 | 1042 |
|
1023 | 1043 | // Return data back to host. |
1024 | 1044 | uj_output->result = true; |
|
0 commit comments