This page reports measured performance when using the pure software cryptographic library algorithms with an STM32WBA MCU. In addition to performance figures, the required code footprint and memory are also given.
1. Measurement configuration
1.1. Hardware configuration
| STM32 MCU | STM32WBA52CGUx |
| Device ID | 0x492 |
| Revision ID | 0x1000 |
| Board | NUCLEO-WBA52CG |
1.2. Firmware configuration
| Cryptographic library version | 050000B2[ver. 1] |
- ↑ This value corresponds to the information returned by a call to
cmox_getInfos
1.3. System configuration
| System core clock frequency | 100 MHz |
| Flash latency | 3 wait states |
| Voltage scaling | Range 1 |
| ICACHE peripheral | 1 (0: disabled / 1: enabled) |
| Prefetch cache (ART) | 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 | 3650 | 36 µs |
| AES CBC | 128 bits | 32 bytes | Encryption | Fast | 3323 | 33 µs |
| AES CBC | 128 bits | 64 bytes | Encryption | Small | 6294 | 62 µs |
| AES CBC | 128 bits | 64 bytes | Encryption | Fast | 5396 | 53 µs |
| AES CBC | 128 bits | 128 bytes | Encryption | Small | 11 580 | 115 µs |
| AES CBC | 128 bits | 128 bytes | Encryption | Fast | 9625 | 96 µs |
| AES CBC | 192 bits | 32 bytes | Encryption | Small | 4030 | 40 µs |
| AES CBC | 192 bits | 32 bytes | Encryption | Fast | 3540 | 35 µs |
| AES CBC | 192 bits | 64 bytes | Encryption | Small | 7094 | 70 µs |
| AES CBC | 192 bits | 64 bytes | Encryption | Fast | 5925 | 59 µs |
| AES CBC | 192 bits | 128 bytes | Encryption | Small | 13 220 | 132 µs |
| AES CBC | 192 bits | 128 bytes | Encryption | Fast | 10 716 | 107 µs |
| AES CBC | 256 bits | 32 bytes | Encryption | Small | 4613 | 46 µs |
| AES CBC | 256 bits | 32 bytes | Encryption | Fast | 3999 | 39 µs |
| AES CBC | 256 bits | 64 bytes | Encryption | Small | 8099 | 80 µs |
| AES CBC | 256 bits | 64 bytes | Encryption | Fast | 6673 | 66 µs |
| AES CBC | 256 bits | 128 bytes | Encryption | Small | 15 070 | 150 µs |
| AES CBC | 256 bits | 128 bytes | Encryption | Fast | 12 065 | 120 µs |
| AES CBC | 128 bits | 32 bytes | Decryption | Small | 4837 | 48 µs |
| AES CBC | 128 bits | 32 bytes | Decryption | Fast | 4594 | 45 µs |
| AES CBC | 128 bits | 64 bytes | Decryption | Small | 8667 | 86 µs |
| AES CBC | 128 bits | 64 bytes | Decryption | Fast | 6693 | 66 µs |
| AES CBC | 128 bits | 128 bytes | Decryption | Small | 16 332 | 163 µs |
| AES CBC | 128 bits | 128 bytes | Decryption | Fast | 10 918 | 109 µs |
| AES CBC | 192 bits | 32 bytes | Decryption | Small | 5493 | 54 µs |
| AES CBC | 192 bits | 32 bytes | Decryption | Fast | 5063 | 50 µs |
| AES CBC | 192 bits | 64 bytes | Decryption | Small | 10 003 | 100 µs |
| AES CBC | 192 bits | 64 bytes | Decryption | Fast | 7463 | 74 µs |
| AES CBC | 192 bits | 128 bytes | Decryption | Small | 19 025 | 190 µs |
| AES CBC | 192 bits | 128 bytes | Decryption | Fast | 12 274 | 122 µs |
| AES CBC | 256 bits | 32 bytes | Decryption | Small | 6325 | 63 µs |
| AES CBC | 256 bits | 32 bytes | Decryption | Fast | 5764 | 57 µs |
| AES CBC | 256 bits | 64 bytes | Decryption | Small | 11 518 | 115 µs |
| AES CBC | 256 bits | 64 bytes | Decryption | Fast | 8463 | 84 µs |
| AES CBC | 256 bits | 128 bytes | Decryption | Small | 21 900 | 219 µs |
| AES CBC | 256 bits | 128 bytes | Decryption | Fast | 13 882 | 138 µs |
The table below shows flash memory and RAM usage (in bytes).
| Cipher operation | Configuration | Code | Constant data | Global data | Stack usage |
|---|---|---|---|---|---|
| Encryption | Small | 2386 bytes | 324 bytes | 0 bytes | 552 bytes |
| Encryption | Fast | 2330 bytes | 1092 bytes | 0 bytes | 552 bytes |
| Decryption | Small | 2746 bytes | 580 bytes | 0 bytes | 568 bytes |
| Decryption | Fast | 2696 bytes | 2372 bytes | 0 bytes | 568 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 | 668 792 | 1196 Kbytes/s |
| AES CBC | 128 bits | 8000 bytes | 128 bytes | Encryption | Fast | 532 840 | 1501 Kbytes/s |
| AES CBC | 128 bits | 8000 bytes | 512 bytes | Encryption | Small | 663 544 | 1205 Kbytes/s |
| AES CBC | 128 bits | 8000 bytes | 512 bytes | Encryption | Fast | 527 688 | 1516 Kbytes/s |
| AES CBC | 128 bits | 8000 bytes | 1024 bytes | Encryption | Small | 662 624 | 1207 Kbytes/s |
| AES CBC | 128 bits | 8000 bytes | 1024 bytes | Encryption | Fast | 526 768 | 1518 Kbytes/s |
| AES CBC | 128 bits | 8000 bytes | 2048 bytes | Encryption | Small | 662 168 | 1208 Kbytes/s |
| AES CBC | 128 bits | 8000 bytes | 2048 bytes | Encryption | Fast | 526 304 | 1520 Kbytes/s |
| AES CBC | 192 bits | 8000 bytes | 128 bytes | Encryption | Small | 773 808 | 1033 Kbytes/s |
| AES CBC | 192 bits | 8000 bytes | 128 bytes | Encryption | Fast | 606 912 | 1318 Kbytes/s |
| AES CBC | 192 bits | 8000 bytes | 512 bytes | Encryption | Small | 768 560 | 1040 Kbytes/s |
| AES CBC | 192 bits | 8000 bytes | 512 bytes | Encryption | Fast | 601 760 | 1329 Kbytes/s |
| AES CBC | 192 bits | 8000 bytes | 1024 bytes | Encryption | Small | 767 648 | 1042 Kbytes/s |
| AES CBC | 192 bits | 8000 bytes | 1024 bytes | Encryption | Fast | 600 840 | 1331 Kbytes/s |
| AES CBC | 192 bits | 8000 bytes | 2048 bytes | Encryption | Small | 767 184 | 1042 Kbytes/s |
| AES CBC | 192 bits | 8000 bytes | 2048 bytes | Encryption | Fast | 600 392 | 1332 Kbytes/s |
| AES CBC | 256 bits | 8000 bytes | 128 bytes | Encryption | Small | 878 832 | 910 Kbytes/s |
| AES CBC | 256 bits | 8000 bytes | 128 bytes | Encryption | Fast | 680 920 | 1174 Kbytes/s |
| AES CBC | 256 bits | 8000 bytes | 512 bytes | Encryption | Small | 873 528 | 915 Kbytes/s |
| AES CBC | 256 bits | 8000 bytes | 512 bytes | Encryption | Fast | 675 672 | 1184 Kbytes/s |
| AES CBC | 256 bits | 8000 bytes | 1024 bytes | Encryption | Small | 872 616 | 916 Kbytes/s |
| AES CBC | 256 bits | 8000 bytes | 1024 bytes | Encryption | Fast | 674 760 | 1185 Kbytes/s |
| AES CBC | 256 bits | 8000 bytes | 2048 bytes | Encryption | Small | 872 152 | 917 Kbytes/s |
| AES CBC | 256 bits | 8000 bytes | 2048 bytes | Encryption | Fast | 674 296 | 1186 Kbytes/s |
| AES CBC | 128 bits | 8000 bytes | 128 bytes | Decryption | Small | 985 032 | 812 Kbytes/s |
| AES CBC | 128 bits | 8000 bytes | 128 bytes | Decryption | Fast | 557 040 | 1436 Kbytes/s |
| AES CBC | 128 bits | 8000 bytes | 512 bytes | Decryption | Small | 977 424 | 818 Kbytes/s |
| AES CBC | 128 bits | 8000 bytes | 512 bytes | Decryption | Fast | 549 408 | 1456 Kbytes/s |
| AES CBC | 128 bits | 8000 bytes | 1024 bytes | Decryption | Small | 975 088 | 820 Kbytes/s |
| AES CBC | 128 bits | 8000 bytes | 1024 bytes | Decryption | Fast | 546 944 | 1462 Kbytes/s |
| AES CBC | 128 bits | 8000 bytes | 2048 bytes | Decryption | Small | 972 296 | 822 Kbytes/s |
| AES CBC | 128 bits | 8000 bytes | 2048 bytes | Decryption | Fast | 544 272 | 1469 Kbytes/s |
| AES CBC | 192 bits | 8000 bytes | 128 bytes | Decryption | Small | 1 155 064 | 692 Kbytes/s |
| AES CBC | 192 bits | 8000 bytes | 128 bytes | Decryption | Fast | 630 992 | 1267 Kbytes/s |
| AES CBC | 192 bits | 8000 bytes | 512 bytes | Decryption | Small | 1 147 448 | 697 Kbytes/s |
| AES CBC | 192 bits | 8000 bytes | 512 bytes | Decryption | Fast | 623 392 | 1283 Kbytes/s |
| AES CBC | 192 bits | 8000 bytes | 1024 bytes | Decryption | Small | 1 145 104 | 698 Kbytes/s |
| AES CBC | 192 bits | 8000 bytes | 1024 bytes | Decryption | Fast | 620 920 | 1288 Kbytes/s |
| AES CBC | 192 bits | 8000 bytes | 2048 bytes | Decryption | Small | 1 142 304 | 700 Kbytes/s |
| AES CBC | 192 bits | 8000 bytes | 2048 bytes | Decryption | Fast | 618 248 | 1293 Kbytes/s |
| AES CBC | 256 bits | 8000 bytes | 128 bytes | Decryption | Small | 1 325 120 | 603 Kbytes/s |
| AES CBC | 256 bits | 8000 bytes | 128 bytes | Decryption | Fast | 704 968 | 1134 Kbytes/s |
| AES CBC | 256 bits | 8000 bytes | 512 bytes | Decryption | Small | 1 317 488 | 607 Kbytes/s |
| AES CBC | 256 bits | 8000 bytes | 512 bytes | Decryption | Fast | 697 368 | 1147 Kbytes/s |
| AES CBC | 256 bits | 8000 bytes | 1024 bytes | Decryption | Small | 1 315 144 | 608 Kbytes/s |
| AES CBC | 256 bits | 8000 bytes | 1024 bytes | Decryption | Fast | 694 896 | 1151 Kbytes/s |
| AES CBC | 256 bits | 8000 bytes | 2048 bytes | Decryption | Small | 1 312 344 | 609 Kbytes/s |
| AES CBC | 256 bits | 8000 bytes | 2048 bytes | Decryption | Fast | 692 232 | 1155 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 | 2306 bytes | 316 bytes | 0 bytes | 176 bytes |
| Encryption | Fast | 2250 bytes | 1084 bytes | 0 bytes | 176 bytes |
| Decryption | Small | 2666 bytes | 572 bytes | 0 bytes | 192 bytes |
| Decryption | Fast | 2616 bytes | 2364 bytes | 0 bytes | 192 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 | 4085 | 40 µs |
| SHA256 | 64 bytes | 7149 | 71 µs |
| SHA256 | 128 bytes | 10 004 | 100 µs |
| SHA384 | 32 bytes | 15 206 | 152 µs |
| SHA384 | 64 bytes | 15 389 | 153 µs |
| SHA384 | 128 bytes | 28 800 | 288 µs |
The table below shows flash memory and RAM usage (in bytes).
| HASH mode | Code | Constant data | Global data | Stack usage |
|---|---|---|---|---|
| SHA256 | 1378 | 280 bytes | 0 bytes | 532 bytes |
| SHA384 | 2590 | 728 bytes | 0 bytes | 1076 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 | 386 255 | 2071 Kbytes/s |
| SHA256 | 8000 bytes | 512 bytes | 364 351 | 2195 Kbytes/s |
| SHA256 | 8000 bytes | 1024 bytes | 360 653 | 2218 Kbytes/s |
| SHA256 | 8000 bytes | 2048 bytes | 358 797 | 2229 Kbytes/s |
| SHA384 | 8000 bytes | 128 bytes | 859 073 | 931 Kbytes/s |
| SHA384 | 8000 bytes | 512 bytes | 819 794 | 975 Kbytes/s |
| SHA384 | 8000 bytes | 1024 bytes | 812 983 | 984 Kbytes/s |
| SHA384 | 8000 bytes | 2048 bytes | 809 577 | 988 Kbytes/s |
The table below shows the final tag generation done through the call to cmox_hash_generateTag.
| HASH mode | Cycles | Time |
|---|---|---|
| SHA256 | 3368 | 33 µs |
| SHA384 | 14 280 | 142 µs |
The table below shows flash memory and RAM usage (in bytes).
| HASH mode | Code | Constant data | Global data | Stack usage |
|---|---|---|---|---|
| SHA256 | 1374 bytes | 272 bytes | 0 bytes | 340 bytes |
| SHA384 | 2586 bytes | 720 bytes | 0 bytes | 780 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 879 760 | 28 ms |
| SECP256R1 | Signature | Small | High | 2 810 904 | 28 ms |
| SECP256R1 | Signature | SuperFast | Low | 1 881 400 | 18 ms |
| SECP256R1 | Signature | SuperFast | High | 1 824 736 | 18 ms |
| SECP256R1 | Verification | Small | Low | 6 926 200 | 69 ms |
| SECP256R1 | Verification | Small | High | 6 162 616 | 61 ms |
| SECP256R1 | Verification | SuperFast | Low | 4 589 400 | 45 ms |
| SECP256R1 | Verification | SuperFast | High | 4 058 680 | 40 ms |
| SECP384R1 | Signature | Small | Low | 8 166 952 | 81 ms |
| SECP384R1 | Signature | Small | High | 7 861 856 | 78 ms |
| SECP384R1 | Signature | Fast | Low | 6 999 080 | 69 ms |
| SECP384R1 | Signature | Fast | High | 6 595 464 | 65 ms |
| SECP384R1 | Verification | Small | Low | 19 535 912 | 195 ms |
| SECP384R1 | Verification | Small | High | 17 076 032 | 170 ms |
| SECP384R1 | Verification | Fast | Low | 16 807 840 | 168 ms |
| SECP384R1 | Verification | Fast | High | 14 400 936 | 144 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 | 13 468 bytes | 1212 bytes | 0 bytes | 440 bytes | 628 bytes |
| SECP256R1 | Signature | Small | High | 13 468 bytes | 1596 bytes | 0 bytes | 440 bytes | 696 bytes |
| SECP256R1 | Signature | SuperFast | Low | 14 778 bytes | 1212 bytes | 0 bytes | 444 bytes | 628 bytes |
| SECP256R1 | Signature | SuperFast | High | 14 778 bytes | 1596 bytes | 0 bytes | 444 bytes | 696 bytes |
| SECP256R1 | Verification | Small | Low | 13 456 bytes | 1212 bytes | 0 bytes | 488 bytes | 856 bytes |
| SECP256R1 | Verification | Small | High | 13 456 bytes | 1596 bytes | 0 bytes | 488 bytes | 1648 bytes |
| SECP256R1 | Verification | SuperFast | Low | 14 766 bytes | 1212 bytes | 0 bytes | 492 bytes | 856 bytes |
| SECP256R1 | Verification | SuperFast | High | 14 766 bytes | 1596 bytes | 0 bytes | 492 bytes | 1648 bytes |
| SECP384R1 | Signature | Small | Low | 13 468 bytes | 1692 bytes | 0 bytes | 440 bytes | 884 bytes |
| SECP384R1 | Signature | Small | High | 13 468 bytes | 2268 bytes | 0 bytes | 440 bytes | 984 bytes |
| SECP384R1 | Signature | Fast | Low | 13 838 bytes | 1692 bytes | 0 bytes | 456 bytes | 884 bytes |
| SECP384R1 | Signature | Fast | High | 13 838 bytes | 2268 bytes | 0 bytes | 456 bytes | 984 bytes |
| SECP384R1 | Verification | Small | Low | 13 456 bytes | 1692 bytes | 0 bytes | 488 bytes | 1192 bytes |
| SECP384R1 | Verification | Small | High | 13 456 bytes | 2268 bytes | 0 bytes | 488 bytes | 2272 bytes |
| SECP384R1 | Verification | Fast | Low | 13 826 bytes | 1692 bytes | 0 bytes | 504 bytes | 1192 bytes |
| SECP384R1 | Verification | Fast | High | 13 826 bytes | 2268 bytes | 0 bytes | 504 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 428 640 | 44 ms |
| Ed25519 | 1023 bytes | Signature | Small | OptHigh | 2 568 400 | 25 ms |
| Ed25519 | 1023 bytes | Signature | SuperFast | OptLow | 3 173 120 | 31 ms |
| Ed25519 | 1023 bytes | Signature | SuperFast | OptHigh | 1 866 520 | 18 ms |
| Ed25519 | 1023 bytes | Verification | Small | OptLow | 6 673 784 | 66 ms |
| Ed25519 | 1023 bytes | Verification | Small | OptHigh | 5 835 512 | 58 ms |
| Ed25519 | 1023 bytes | Verification | SuperFast | OptLow | 4 582 304 | 45 ms |
| Ed25519 | 1023 bytes | Verification | SuperFast | OptHigh | 4 007 872 | 40 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 | 14 840 bytes | 1748 bytes | 0 bytes | 1172 bytes | 1672 bytes |
| Ed25519 | 1023 bytes | Signature | Small | OptHigh | 15 260 bytes | 2900 bytes | 0 bytes | 1172 bytes | 1672 bytes |
| Ed25519 | 1023 bytes | Signature | SuperFast | OptLow | 16 150 bytes | 1748 bytes | 0 bytes | 1172 bytes | 1672 bytes |
| Ed25519 | 1023 bytes | Signature | SuperFast | OptHigh | 16 570 bytes | 2900 bytes | 0 bytes | 1172 bytes | 1672 bytes |
| Ed25519 | 1023 bytes | Verification | Small | OptLow | 14 836 bytes | 1748 bytes | 0 bytes | 1172 bytes | 984 bytes |
| Ed25519 | 1023 bytes | Verification | Small | OptHigh | 15 256 bytes | 2900 bytes | 0 bytes | 1172 bytes | 1992 bytes |
| Ed25519 | 1023 bytes | Verification | SuperFast | OptLow | 16 146 bytes | 1748 bytes | 0 bytes | 1172 bytes | 984 bytes |
| Ed25519 | 1023 bytes | Verification | SuperFast | OptHigh | 16 566 bytes | 2900 bytes | 0 bytes | 1172 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 726 616 | 1977 ms |
| v2.2 | CRT | SHA-256 | 3K | Signature | Small | Mid | 148 814 744 | 1488 ms |
| v2.2 | CRT | SHA-256 | 3K | Signature | Small | High | 124 974 176 | 1249 ms |
| v2.2 | CRT | SHA-256 | 3K | Signature | Fast | Low | 158 169 456 | 1581 ms |
| v2.2 | CRT | SHA-256 | 3K | Signature | Fast | Mid | 119 106 744 | 1191 ms |
| v2.2 | CRT | SHA-256 | 3K | Signature | Fast | High | 100 473 032 | 1004 ms |
| v2.2 | No CRT | SHA-256 | 3K | Signature | Small | Low | 762 181 720 | 7621 ms |
| v2.2 | No CRT | SHA-256 | 3K | Signature | Small | Mid | 572 420 960 | 5724 ms |
| v2.2 | No CRT | SHA-256 | 3K | Signature | Small | High | 478 812 712 | 4788 ms |
| v2.2 | No CRT | SHA-256 | 3K | Signature | Fast | Low | 605 354 616 | 6053 ms |
| v2.2 | No CRT | SHA-256 | 3K | Signature | Fast | Mid | 454 724 640 | 4547 ms |
| v2.2 | No CRT | SHA-256 | 3K | Signature | Fast | High | 381 290 248 | 3812 ms |
| v2.2 | n/a | SHA-256 | 3K | Verification | Small | n/a | 3 745 384 | 37 ms |
| v2.2 | n/a | SHA-256 | 3K | Verification | Fast | n/a | 3 239 776 | 32 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 | 6890 bytes | 372 bytes | 0 bytes | 668 bytes | 3704 bytes |
| v2.2 | CRT | SHA-256 | 3K | Signature | Small | Mid | 7126 bytes | 372 bytes | 0 bytes | 668 bytes | 4308 bytes |
| v2.2 | CRT | SHA-256 | 3K | Signature | Small | High | 7126 bytes | 372 bytes | 0 bytes | 668 bytes | 6708 bytes |
| v2.2 | CRT | SHA-256 | 3K | Signature | Fast | Low | 7260 bytes | 372 bytes | 0 bytes | 668 bytes | 3704 bytes |
| v2.2 | CRT | SHA-256 | 3K | Signature | Fast | Mid | 7496 bytes | 372 bytes | 0 bytes | 668 bytes | 4308 bytes |
| v2.2 | CRT | SHA-256 | 3K | Signature | Fast | High | 7496 bytes | 372 bytes | 0 bytes | 668 bytes | 6708 bytes |
| v2.2 | No CRT | SHA-256 | 3K | Signature | Small | Low | 5958 bytes | 364 bytes | 0 bytes | 668 bytes | 3484 bytes |
| v2.2 | No CRT | SHA-256 | 3K | Signature | Small | Mid | 6194 bytes | 364 bytes | 0 bytes | 668 bytes | 4664 bytes |
| v2.2 | No CRT | SHA-256 | 3K | Signature | Small | High | 6194 bytes | 364 bytes | 0 bytes | 668 bytes | 9368 bytes |
| v2.2 | No CRT | SHA-256 | 3K | Signature | Fast | Low | 6328 bytes | 364 bytes | 0 bytes | 668 bytes | 3484 bytes |
| v2.2 | No CRT | SHA-256 | 3K | Signature | Fast | Mid | 6564 bytes | 364 bytes | 0 bytes | 668 bytes | 4664 bytes |
| v2.2 | No CRT | SHA-256 | 3K | Signature | Fast | High | 6564 bytes | 364 bytes | 0 bytes | 668 bytes | 9368 bytes |
| v2.2 | n/a | SHA-256 | 3K | Verification | Small | n/a | 6142 bytes | 368 bytes | 0 bytes | 684 bytes | 3108 bytes |
| v2.2 | n/a | SHA-256 | 3K | Verification | Fast | n/a | 6512 bytes | 368 bytes | 0 bytes | 684 bytes | 3108 bytes |