This page shows the measured performance results when using the pure software cryptographic library algorithms with an STM32N6 MCU. In addition to performance figures, it also gives the required code footprint and memory.
1. Measurement configuration
1.1. Hardware configuration
| STM32 MCU | STM32N657X0H3Q |
| Device ID | 0x486 |
| Revision ID | 0x200 |
| Board | NUCLEO-N657X0-Q |
1.2. Firmware configuration
| Cryptographic library version | 040000C0[ver. 1] |
- ↑ This value corresponds to the information returned by a call to
cmox_getInfos
1.3. System configuration
| System core clock frequency | 600 MHz |
| Voltage scaling | Range 0 |
| XSPI frequency | 200 MHz |
| OTP Fuse: HSLV_VDDIO3 | 1 |
| Instruction cache (ART/ICU) | 1 (0: disabled / 1: enabled) |
| Data cache (ART/DCU) | 1 (0: disabled / 1: enabled) |
1.4. Development toolchains and compilers
| IAR Embedded Workbench | IAR ANSI C/C++ Compiler V9.40.1.364/W64 for ARM |
2. Performance values
2.1. AES symmetric key encryption and decryption
This section provides the performance results for AES-CBC using different operation modes:
- Sole buffer: one sole buffer is encrypted or decrypted. The performance time is given in µs.
- Data flow: a big message is encrypted or decrypted in chunks. The bit rate is given in kilobytes per second.
2.1.1. Sole buffer mode
In this mode, the entire encryption or decryption process, for the full message size, is managed through a single API call provided by the CMOX library.
The table below shows the number of clock cycles and time (in µs) needed to perform the described operation in small and fast configurations.
| AES mode | Key size | Buffer size | Cipher operation | Configuration | Cycles | Time |
|---|---|---|---|---|---|---|
| AES CBC | 128 bits | 32 bytes | Encryption | Small | 69 760 | 116 µs |
| AES CBC | 128 bits | 32 bytes | Encryption | Fast | 102 496 | 170 µs |
| AES CBC | 128 bits | 64 bytes | Encryption | Small | 72 728 | 121 µs |
| AES CBC | 128 bits | 64 bytes | Encryption | Fast | 105 304 | 175 µs |
| AES CBC | 128 bits | 128 bytes | Encryption | Small | 78 672 | 131 µs |
| AES CBC | 128 bits | 128 bytes | Encryption | Fast | 110 112 | 183 µs |
| AES CBC | 192 bits | 32 bytes | Encryption | Small | 68 440 | 114 µs |
| AES CBC | 192 bits | 32 bytes | Encryption | Fast | 106 672 | 177 µs |
| AES CBC | 192 bits | 64 bytes | Encryption | Small | 72 360 | 120 µs |
| AES CBC | 192 bits | 64 bytes | Encryption | Fast | 109 904 | 183 µs |
| AES CBC | 192 bits | 128 bytes | Encryption | Small | 79 288 | 132 µs |
| AES CBC | 192 bits | 128 bytes | Encryption | Fast | 115 432 | 192 µs |
| AES CBC | 256 bits | 32 bytes | Encryption | Small | 73 320 | 122 µs |
| AES CBC | 256 bits | 32 bytes | Encryption | Fast | 108 328 | 180 µs |
| AES CBC | 256 bits | 64 bytes | Encryption | Small | 77 272 | 128 µs |
| AES CBC | 256 bits | 64 bytes | Encryption | Fast | 111 448 | 185 µs |
| AES CBC | 256 bits | 128 bytes | Encryption | Small | 85 160 | 141 µs |
| AES CBC | 256 bits | 128 bytes | Encryption | Fast | 117 656 | 196 µs |
| AES CBC | 128 bits | 32 bytes | Decryption | Small | 83 456 | 139 µs |
| AES CBC | 128 bits | 32 bytes | Decryption | Fast | 116 304 | 193 µs |
| AES CBC | 128 bits | 64 bytes | Decryption | Small | 89 744 | 149 µs |
| AES CBC | 128 bits | 64 bytes | Decryption | Fast | 119 144 | 198 µs |
| AES CBC | 128 bits | 128 bytes | Decryption | Small | 102 288 | 170 µs |
| AES CBC | 128 bits | 128 bytes | Decryption | Fast | 123 888 | 206 µs |
| AES CBC | 192 bits | 32 bytes | Decryption | Small | 82 264 | 137 µs |
| AES CBC | 192 bits | 32 bytes | Decryption | Fast | 122 296 | 203 µs |
| AES CBC | 192 bits | 64 bytes | Decryption | Small | 90 240 | 150 µs |
| AES CBC | 192 bits | 64 bytes | Decryption | Fast | 125 504 | 209 µs |
| AES CBC | 192 bits | 128 bytes | Decryption | Small | 105 248 | 175 µs |
| AES CBC | 192 bits | 128 bytes | Decryption | Fast | 130 928 | 218 µs |
| AES CBC | 256 bits | 32 bytes | Decryption | Small | 87 904 | 146 µs |
| AES CBC | 256 bits | 32 bytes | Decryption | Fast | 120 520 | 200 µs |
| AES CBC | 256 bits | 64 bytes | Decryption | Small | 96 616 | 161 µs |
| AES CBC | 256 bits | 64 bytes | Decryption | Fast | 123 576 | 205 µs |
| AES CBC | 256 bits | 128 bytes | Decryption | Small | 114 016 | 190 µs |
| AES CBC | 256 bits | 128 bytes | Decryption | Fast | 129 712 | 216 µs |
The table below shows flash memory and RAM usage (in bytes).
| Cipher operation | Configuration | Code | Constant data | Global data | Stack usage |
|---|---|---|---|---|---|
| Encryption | Small | 2048 bytes | 364 bytes | 1 bytes | 500 bytes |
| Encryption | Fast | 2332 bytes | 1388 bytes | 1 bytes | 544 bytes |
| Decryption | Small | 2140 bytes | 620 bytes | 1 bytes | 552 bytes |
| Decryption | Fast | 2804 bytes | 1644 bytes | 1 bytes | 556 bytes |
2.1.2. Data flow mode
In this mode, the operation is performed in several calls to the CMOX library APIs, as shown below:
cmox_cipher_initcmox_cipher_setKeycmox_cipher_setIVcmox_cipher_append: called several times to encrypt or decrypt the whole message in fixed-size chunks
The table below shows the number of clock cycles and the bit rate (in kilobytes per second) needed to perform the described operation in small and fast configuration.
| AES mode | Key size | Message size | Chunk size | Cipher operation | Configuration | Cycles | Bit rate |
|---|---|---|---|---|---|---|---|
| AES CBC | 128 bits | 8000 bytes | 128 bytes | Encryption | Small | 798 128 | 6014 Kbytes/s |
| AES CBC | 128 bits | 8000 bytes | 128 bytes | Encryption | Fast | 656 440 | 7312 Kbytes/s |
| AES CBC | 128 bits | 8000 bytes | 512 bytes | Encryption | Small | 793 056 | 6052 Kbytes/s |
| AES CBC | 128 bits | 8000 bytes | 512 bytes | Encryption | Fast | 648 032 | 7407 Kbytes/s |
| AES CBC | 128 bits | 8000 bytes | 1024 bytes | Encryption | Small | 791 952 | 6060 Kbytes/s |
| AES CBC | 128 bits | 8000 bytes | 1024 bytes | Encryption | Fast | 649 912 | 7385 Kbytes/s |
| AES CBC | 128 bits | 8000 bytes | 2048 bytes | Encryption | Small | 790 680 | 6070 Kbytes/s |
| AES CBC | 128 bits | 8000 bytes | 2048 bytes | Encryption | Fast | 646 640 | 7422 Kbytes/s |
| AES CBC | 192 bits | 8000 bytes | 128 bytes | Encryption | Small | 915 616 | 5242 Kbytes/s |
| AES CBC | 192 bits | 8000 bytes | 128 bytes | Encryption | Fast | 795 480 | 6034 Kbytes/s |
| AES CBC | 192 bits | 8000 bytes | 512 bytes | Encryption | Small | 908 344 | 5284 Kbytes/s |
| AES CBC | 192 bits | 8000 bytes | 512 bytes | Encryption | Fast | 787 584 | 6094 Kbytes/s |
| AES CBC | 192 bits | 8000 bytes | 1024 bytes | Encryption | Small | 879 192 | 5459 Kbytes/s |
| AES CBC | 192 bits | 8000 bytes | 1024 bytes | Encryption | Fast | 789 376 | 6080 Kbytes/s |
| AES CBC | 192 bits | 8000 bytes | 2048 bytes | Encryption | Small | 876 976 | 5473 Kbytes/s |
| AES CBC | 192 bits | 8000 bytes | 2048 bytes | Encryption | Fast | 785 240 | 6112 Kbytes/s |
| AES CBC | 256 bits | 8000 bytes | 128 bytes | Encryption | Small | 1 010 448 | 4750 Kbytes/s |
| AES CBC | 256 bits | 8000 bytes | 128 bytes | Encryption | Fast | 877 400 | 5470 Kbytes/s |
| AES CBC | 256 bits | 8000 bytes | 512 bytes | Encryption | Small | 1 003 128 | 4785 Kbytes/s |
| AES CBC | 256 bits | 8000 bytes | 512 bytes | Encryption | Fast | 874 072 | 5491 Kbytes/s |
| AES CBC | 256 bits | 8000 bytes | 1024 bytes | Encryption | Small | 1 000 248 | 4798 Kbytes/s |
| AES CBC | 256 bits | 8000 bytes | 1024 bytes | Encryption | Fast | 867 768 | 5531 Kbytes/s |
| AES CBC | 256 bits | 8000 bytes | 2048 bytes | Encryption | Small | 1 002 672 | 4787 Kbytes/s |
| AES CBC | 256 bits | 8000 bytes | 2048 bytes | Encryption | Fast | 866 192 | 5541 Kbytes/s |
| AES CBC | 128 bits | 8000 bytes | 128 bytes | Decryption | Small | 1 715 344 | 2798 Kbytes/s |
| AES CBC | 128 bits | 8000 bytes | 128 bytes | Decryption | Fast | 735 376 | 6527 Kbytes/s |
| AES CBC | 128 bits | 8000 bytes | 512 bytes | Decryption | Small | 1 668 448 | 2876 Kbytes/s |
| AES CBC | 128 bits | 8000 bytes | 512 bytes | Decryption | Fast | 689 408 | 6962 Kbytes/s |
| AES CBC | 128 bits | 8000 bytes | 1024 bytes | Decryption | Small | 1 665 736 | 2881 Kbytes/s |
| AES CBC | 128 bits | 8000 bytes | 1024 bytes | Decryption | Fast | 684 504 | 7012 Kbytes/s |
| AES CBC | 128 bits | 8000 bytes | 2048 bytes | Decryption | Small | 1 653 728 | 2902 Kbytes/s |
| AES CBC | 128 bits | 8000 bytes | 2048 bytes | Decryption | Fast | 672 592 | 7136 Kbytes/s |
| AES CBC | 192 bits | 8000 bytes | 128 bytes | Decryption | Small | 2 021 496 | 2374 Kbytes/s |
| AES CBC | 192 bits | 8000 bytes | 128 bytes | Decryption | Fast | 833 704 | 5757 Kbytes/s |
| AES CBC | 192 bits | 8000 bytes | 512 bytes | Decryption | Small | 1 971 984 | 2434 Kbytes/s |
| AES CBC | 192 bits | 8000 bytes | 512 bytes | Decryption | Fast | 774 656 | 6196 Kbytes/s |
| AES CBC | 192 bits | 8000 bytes | 1024 bytes | Decryption | Small | 1 967 168 | 2440 Kbytes/s |
| AES CBC | 192 bits | 8000 bytes | 1024 bytes | Decryption | Fast | 769 824 | 6235 Kbytes/s |
| AES CBC | 192 bits | 8000 bytes | 2048 bytes | Decryption | Small | 1 962 336 | 2446 Kbytes/s |
| AES CBC | 192 bits | 8000 bytes | 2048 bytes | Decryption | Fast | 754 416 | 6362 Kbytes/s |
| AES CBC | 256 bits | 8000 bytes | 128 bytes | Decryption | Small | 2 323 800 | 2065 Kbytes/s |
| AES CBC | 256 bits | 8000 bytes | 128 bytes | Decryption | Fast | 921 488 | 5208 Kbytes/s |
| AES CBC | 256 bits | 8000 bytes | 512 bytes | Decryption | Small | 2 273 328 | 2111 Kbytes/s |
| AES CBC | 256 bits | 8000 bytes | 512 bytes | Decryption | Fast | 860 048 | 5581 Kbytes/s |
| AES CBC | 256 bits | 8000 bytes | 1024 bytes | Decryption | Small | 2 270 160 | 2114 Kbytes/s |
| AES CBC | 256 bits | 8000 bytes | 1024 bytes | Decryption | Fast | 852 560 | 5630 Kbytes/s |
| AES CBC | 256 bits | 8000 bytes | 2048 bytes | Decryption | Small | 2 261 344 | 2122 Kbytes/s |
| AES CBC | 256 bits | 8000 bytes | 2048 bytes | Decryption | Fast | 840 344 | 5711 Kbytes/s |
The table below shows flash memory and RAM usage (in bytes).
| Cipher operation | Configuration | Code | Constant data | Global data | Stack usage |
|---|---|---|---|---|---|
| Encryption | Small | 1940 bytes | 356 bytes | 1 bytes | 124 bytes |
| Encryption | Fast | 2224 bytes | 1380 bytes | 1 bytes | 168 bytes |
| Decryption | Small | 2032 bytes | 612 bytes | 1 bytes | 176 bytes |
| Decryption | Fast | 2696 bytes | 1636 bytes | 1 bytes | 180 bytes |
2.2. HASH digest
In this section we provide the performance results for HASH, using different modes of operation:
- Sole buffer: one sole buffer is hashed. The performance time is given in us.
- Data flow: a big message is hashed in chunks. The bit rate is given in bytes per second.
2.2.1. Sole buffer mode
In this mode, the entire message hashing process is managed through a single API call provided by the CMOX library.
The table below shows the number of clock cycles and time (in µs) needed to perform the described operation.
| HASH mode | Buffer size | Cycles | Time |
|---|---|---|---|
| SHA256 | 32 bytes | 49 640 | 82 µs |
| SHA256 | 64 bytes | 53 408 | 89 µs |
| SHA256 | 128 bytes | 55 992 | 93 µs |
| SHA384 | 32 bytes | 69 376 | 115 µs |
| SHA384 | 64 bytes | 69 832 | 116 µs |
| SHA384 | 128 bytes | 82 216 | 137 µs |
The table below shows flash memory and RAM usage (in bytes).
| HASH mode | Code | Constant data | Global data | Stack usage |
|---|---|---|---|---|
| SHA256 | 1586 | 280 bytes | 1 bytes | 536 bytes |
| SHA384 | 2834 | 728 bytes | 1 bytes | 1092 bytes |
2.2.2. Data flow mode
In this mode, the operation is performed in several calls to the CMOX library APIs, as shown below:
cmox_hash_initcmox_hash_append: called several times to hash the whole message in fixed-size chunkscmox_hash_generateTag
The table below shows the number of clock cycles and the bit rate (in kilobytes per second) needed to perform the described operation.
| HASH mode | Message size | Chunk size | Cycles | Bit rate |
|---|---|---|---|---|
| SHA256 | 8000 bytes | 128 bytes | 395 984 | 12 121 Kbytes/s |
| SHA256 | 8000 bytes | 512 bytes | 373 888 | 12 838 Kbytes/s |
| SHA256 | 8000 bytes | 1024 bytes | 369 776 | 12 980 Kbytes/s |
| SHA256 | 8000 bytes | 2048 bytes | 367 824 | 13 049 Kbytes/s |
| SHA384 | 8000 bytes | 128 bytes | 790 360 | 6073 Kbytes/s |
| SHA384 | 8000 bytes | 512 bytes | 753 672 | 6368 Kbytes/s |
| SHA384 | 8000 bytes | 1024 bytes | 746 944 | 6426 Kbytes/s |
| SHA384 | 8000 bytes | 2048 bytes | 742 848 | 6461 Kbytes/s |
The table below shows the final tag generation done through the call to cmox_hash_generateTag.
| HASH mode | Cycles | Time |
|---|---|---|
| SHA256 | 15 480 | 25 µs |
| SHA384 | 27 376 | 45 µs |
The table below shows flash memory and RAM usage (in bytes).
| HASH mode | Code | Constant data | Global data | Stack usage |
|---|---|---|---|---|
| SHA256 | 1602 bytes | 272 bytes | 1 bytes | 344 bytes |
| SHA384 | 2850 bytes | 720 bytes | 1 bytes | 796 bytes |
2.3. ECDSA signature and verification
This section provides the performance results for ECDSA signature and verification.
The table below shows the number of clock cycles and time (in ms) needed to perform the described operation in different configurations.
| Curve | Operation | ECC mathematics configuration | Curve definition | Cycles | Time |
|---|---|---|---|---|---|
| SECP256R1 | Signature | Small | Low | 2 895 816 | 4 ms |
| SECP256R1 | Signature | Small | High | 2 835 400 | 4 ms |
| SECP256R1 | Signature | SuperFast | Low | 1 795 584 | 2 ms |
| SECP256R1 | Signature | SuperFast | High | 1 736 416 | 2 ms |
| SECP256R1 | Verification | Small | Low | 6 775 408 | 11 ms |
| SECP256R1 | Verification | Small | High | 6 075 096 | 10 ms |
| SECP256R1 | Verification | SuperFast | Low | 4 200 952 | 7 ms |
| SECP256R1 | Verification | SuperFast | High | 3 732 976 | 6 ms |
| SECP384R1 | Signature | Small | Low | 8 090 488 | 13 ms |
| SECP384R1 | Signature | Small | High | 7 793 872 | 12 ms |
| SECP384R1 | Signature | Fast | Low | 5 913 760 | 9 ms |
| SECP384R1 | Signature | Fast | High | 5 658 200 | 9 ms |
| SECP384R1 | Verification | Small | Low | 19 123 384 | 31 ms |
| SECP384R1 | Verification | Small | High | 16 751 832 | 27 ms |
| SECP384R1 | Verification | Fast | Low | 13 709 696 | 22 ms |
| SECP384R1 | Verification | Fast | High | 11 914 440 | 19 ms |
The table below shows ECDSA flash memory and RAM usage (in bytes).
| Curve | Operation | ECC mathematics configuration | Curve definition | Code | Constant data | Global data | Stack usage | Working buffer |
|---|---|---|---|---|---|---|---|---|
| SECP256R1 | Signature | Small | Low | 11 564 bytes | 1168 bytes | 1 bytes | 328 bytes | 628 bytes |
| SECP256R1 | Signature | Small | High | 11 564 bytes | 1552 bytes | 1 bytes | 328 bytes | 696 bytes |
| SECP256R1 | Signature | SuperFast | Low | 12 874 bytes | 1168 bytes | 1 bytes | 332 bytes | 628 bytes |
| SECP256R1 | Signature | SuperFast | High | 12 874 bytes | 1552 bytes | 1 bytes | 332 bytes | 696 bytes |
| SECP256R1 | Verification | Small | Low | 12 094 bytes | 1184 bytes | 1 bytes | 424 bytes | 856 bytes |
| SECP256R1 | Verification | Small | High | 12 094 bytes | 1568 bytes | 1 bytes | 424 bytes | 1648 bytes |
| SECP256R1 | Verification | SuperFast | Low | 13 404 bytes | 1184 bytes | 1 bytes | 428 bytes | 856 bytes |
| SECP256R1 | Verification | SuperFast | High | 13 404 bytes | 1568 bytes | 1 bytes | 428 bytes | 1648 bytes |
| SECP384R1 | Signature | Small | Low | 11 564 bytes | 1648 bytes | 1 bytes | 328 bytes | 884 bytes |
| SECP384R1 | Signature | Small | High | 11 564 bytes | 2224 bytes | 1 bytes | 328 bytes | 984 bytes |
| SECP384R1 | Signature | Fast | Low | 11 934 bytes | 1648 bytes | 1 bytes | 344 bytes | 884 bytes |
| SECP384R1 | Signature | Fast | High | 11 934 bytes | 2224 bytes | 1 bytes | 344 bytes | 984 bytes |
| SECP384R1 | Verification | Small | Low | 12 094 bytes | 1664 bytes | 1 bytes | 424 bytes | 1192 bytes |
| SECP384R1 | Verification | Small | High | 12 094 bytes | 2240 bytes | 1 bytes | 424 bytes | 2272 bytes |
| SECP384R1 | Verification | Fast | Low | 12 464 bytes | 1664 bytes | 1 bytes | 440 bytes | 1192 bytes |
| SECP384R1 | Verification | Fast | High | 12 464 bytes | 2240 bytes | 1 bytes | 440 bytes | 2272 bytes |
2.4. EdDSA signature and verification
This section provides the performance results for EdDSA signature and verification.
The table below shows the number of clock cycles and time (in ms) needed to perform the described operation in different configurations.
| Curve | Message size | Operation | ECC mathematics configuration | Curve definition | Cycles | Time |
|---|---|---|---|---|---|---|
| Ed25519 | 1023 bytes | Signature | Small | OptLow | 4 445 608 | 7 ms |
| Ed25519 | 1023 bytes | Signature | Small | OptHigh | 2 645 040 | 4 ms |
| Ed25519 | 1023 bytes | Signature | SuperFast | OptLow | 2 977 768 | 4 ms |
| Ed25519 | 1023 bytes | Signature | SuperFast | OptHigh | 1 866 360 | 3 ms |
| Ed25519 | 1023 bytes | Verification | Small | OptLow | 6 594 016 | 10 ms |
| Ed25519 | 1023 bytes | Verification | Small | OptHigh | 5 870 376 | 9 ms |
| Ed25519 | 1023 bytes | Verification | SuperFast | OptLow | 4 238 360 | 7 ms |
| Ed25519 | 1023 bytes | Verification | SuperFast | OptHigh | 3 756 712 | 6 ms |
The table below shows EdDSA flash memory and RAM usage (in bytes).
| Curve | Message size | Operation | ECC mathematics configuration | Curve definition | Code | Constant data | Global data | Stack usage | Working buffer |
|---|---|---|---|---|---|---|---|---|---|
| Ed25519 | 1023 bytes | Signature | Small | OptLow | 13 802 bytes | 1720 bytes | 1 bytes | 1204 bytes | 1388 bytes |
| Ed25519 | 1023 bytes | Signature | Small | OptHigh | 14 210 bytes | 2872 bytes | 1 bytes | 1204 bytes | 1388 bytes |
| Ed25519 | 1023 bytes | Signature | SuperFast | OptLow | 15 112 bytes | 1720 bytes | 1 bytes | 1204 bytes | 1388 bytes |
| Ed25519 | 1023 bytes | Signature | SuperFast | OptHigh | 15 520 bytes | 2872 bytes | 1 bytes | 1204 bytes | 1388 bytes |
| Ed25519 | 1023 bytes | Verification | Small | OptLow | 13 894 bytes | 1724 bytes | 1 bytes | 1212 bytes | 1152 bytes |
| Ed25519 | 1023 bytes | Verification | Small | OptHigh | 14 302 bytes | 2876 bytes | 1 bytes | 1212 bytes | 1992 bytes |
| Ed25519 | 1023 bytes | Verification | SuperFast | OptLow | 15 204 bytes | 1724 bytes | 1 bytes | 1212 bytes | 1152 bytes |
| Ed25519 | 1023 bytes | Verification | SuperFast | OptHigh | 15 612 bytes | 2876 bytes | 1 bytes | 1212 bytes | 1992 bytes |
2.5. RSA signature and verification
This section provides the performance results for RSA signature and verification.
The table below shows the number of clock cycles and time (in ms) needed to perform the described operation in different configurations.
| PKCS#1 | Priv. key mod. exp. method | Hash method | Modulus size | Operation | RSA mathematics configuration | Priv. key mod. exp. implementation | Cycles | Time |
|---|---|---|---|---|---|---|---|---|
| v2.2 | CRT | SHA-256 | 3K | Signature | Small | Low | 197 706 504 | 329 ms |
| v2.2 | CRT | SHA-256 | 3K | Signature | Small | Mid | 148 809 480 | 248 ms |
| v2.2 | CRT | SHA-256 | 3K | Signature | Small | High | 124 988 296 | 208 ms |
| v2.2 | CRT | SHA-256 | 3K | Signature | Fast | Low | 124 303 624 | 207 ms |
| v2.2 | CRT | SHA-256 | 3K | Signature | Fast | Mid | 93 563 064 | 155 ms |
| v2.2 | CRT | SHA-256 | 3K | Signature | Fast | High | 78 639 976 | 131 ms |
| v2.2 | No CRT | SHA-256 | 3K | Signature | Small | Low | 762 152 632 | 1270 ms |
| v2.2 | No CRT | SHA-256 | 3K | Signature | Small | Mid | 572 411 376 | 954 ms |
| v2.2 | No CRT | SHA-256 | 3K | Signature | Small | High | 478 819 496 | 798 ms |
| v2.2 | No CRT | SHA-256 | 3K | Signature | Fast | Low | 454 493 152 | 757 ms |
| v2.2 | No CRT | SHA-256 | 3K | Signature | Fast | Mid | 343 129 352 | 571 ms |
| v2.2 | No CRT | SHA-256 | 3K | Signature | Fast | High | 287 142 792 | 478 ms |
| v2.2 | n/a | SHA-256 | 3K | Verification | Small | n/a | 3 827 160 | 6 ms |
| v2.2 | n/a | SHA-256 | 3K | Verification | Fast | n/a | 2 816 224 | 4 ms |
The table below shows RSA flash memory and RAM usage (in bytes).
| PKCS#1 | Priv. key mod. exp. method | Hash method | Modulus size | Operation | RSA mathematics configuration | Priv. key mod. exp. implementation | Code | Constant data | Global data | Stack usage | Working buffer |
|---|---|---|---|---|---|---|---|---|---|---|---|
| v2.2 | CRT | SHA-256 | 3K | Signature | Small | Low | 6686 bytes | 356 bytes | 5 bytes | 672 bytes | 3704 bytes |
| v2.2 | CRT | SHA-256 | 3K | Signature | Small | Mid | 6934 bytes | 356 bytes | 5 bytes | 672 bytes | 4308 bytes |
| v2.2 | CRT | SHA-256 | 3K | Signature | Small | High | 6934 bytes | 356 bytes | 5 bytes | 672 bytes | 6708 bytes |
| v2.2 | CRT | SHA-256 | 3K | Signature | Fast | Low | 7056 bytes | 356 bytes | 5 bytes | 672 bytes | 3704 bytes |
| v2.2 | CRT | SHA-256 | 3K | Signature | Fast | Mid | 7304 bytes | 356 bytes | 5 bytes | 672 bytes | 4308 bytes |
| v2.2 | CRT | SHA-256 | 3K | Signature | Fast | High | 7304 bytes | 356 bytes | 5 bytes | 672 bytes | 6708 bytes |
| v2.2 | No CRT | SHA-256 | 3K | Signature | Small | Low | 5694 bytes | 348 bytes | 5 bytes | 672 bytes | 3484 bytes |
| v2.2 | No CRT | SHA-256 | 3K | Signature | Small | Mid | 5942 bytes | 348 bytes | 5 bytes | 672 bytes | 4664 bytes |
| v2.2 | No CRT | SHA-256 | 3K | Signature | Small | High | 5942 bytes | 348 bytes | 5 bytes | 672 bytes | 9368 bytes |
| v2.2 | No CRT | SHA-256 | 3K | Signature | Fast | Low | 6064 bytes | 348 bytes | 5 bytes | 672 bytes | 3484 bytes |
| v2.2 | No CRT | SHA-256 | 3K | Signature | Fast | Mid | 6312 bytes | 348 bytes | 5 bytes | 672 bytes | 4664 bytes |
| v2.2 | No CRT | SHA-256 | 3K | Signature | Fast | High | 6312 bytes | 348 bytes | 5 bytes | 672 bytes | 9368 bytes |
| v2.2 | n/a | SHA-256 | 3K | Verification | Small | n/a | 6448 bytes | 352 bytes | 5 bytes | 688 bytes | 3108 bytes |
| v2.2 | n/a | SHA-256 | 3K | Verification | Fast | n/a | 6818 bytes | 352 bytes | 5 bytes | 688 bytes | 3108 bytes |