This page reports measured performance when using the pure software cryptographic library algorithms with an STM32WL MCU. In addition to performance figures, the required code footprint and memory are also given.
1. Measurement configuration
1.1. Hardware configuration
| STM32 MCU | STM32WL55JC |
| Device ID | 0x497 |
| Revision ID | 0x1003 |
| Board | NUCLEO-WL55JC RevC |
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 | 48 MHz |
| Flash latency | 2 wait states |
| Voltage scaling | Range 1 |
| Instruction cache (ART/ICU) | 1 (0: disabled / 1: enabled) |
| Data cache (ART/DCU) | 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 | 3712 | 77 µs |
| AES CBC | 128 bits | 32 bytes | Encryption | Fast | 3696 | 77 µs |
| AES CBC | 128 bits | 64 bytes | Encryption | Small | 6220 | 129 µs |
| AES CBC | 128 bits | 64 bytes | Encryption | Fast | 6193 | 129 µs |
| AES CBC | 128 bits | 128 bytes | Encryption | Small | 11 270 | 234 µs |
| AES CBC | 128 bits | 128 bytes | Encryption | Fast | 11 181 | 232 µs |
| AES CBC | 192 bits | 32 bytes | Encryption | Small | 4041 | 84 µs |
| AES CBC | 192 bits | 32 bytes | Encryption | Fast | 4027 | 83 µs |
| AES CBC | 192 bits | 64 bytes | Encryption | Small | 6918 | 144 µs |
| AES CBC | 192 bits | 64 bytes | Encryption | Fast | 6900 | 143 µs |
| AES CBC | 192 bits | 128 bytes | Encryption | Small | 12 669 | 263 µs |
| AES CBC | 192 bits | 128 bytes | Encryption | Fast | 12 612 | 262 µs |
| AES CBC | 256 bits | 32 bytes | Encryption | Small | 4582 | 95 µs |
| AES CBC | 256 bits | 32 bytes | Encryption | Fast | 4531 | 94 µs |
| AES CBC | 256 bits | 64 bytes | Encryption | Small | 7833 | 163 µs |
| AES CBC | 256 bits | 64 bytes | Encryption | Fast | 7724 | 160 µs |
| AES CBC | 256 bits | 128 bytes | Encryption | Small | 14 253 | 296 µs |
| AES CBC | 256 bits | 128 bytes | Encryption | Fast | 14 112 | 294 µs |
| AES CBC | 128 bits | 32 bytes | Decryption | Small | 4574 | 95 µs |
| AES CBC | 128 bits | 32 bytes | Decryption | Fast | 5087 | 105 µs |
| AES CBC | 128 bits | 64 bytes | Decryption | Small | 7924 | 165 µs |
| AES CBC | 128 bits | 64 bytes | Decryption | Fast | 7588 | 158 µs |
| AES CBC | 128 bits | 128 bytes | Decryption | Small | 14 678 | 305 µs |
| AES CBC | 128 bits | 128 bytes | Decryption | Fast | 12 593 | 262 µs |
| AES CBC | 192 bits | 32 bytes | Decryption | Small | 5073 | 105 µs |
| AES CBC | 192 bits | 32 bytes | Decryption | Fast | 5716 | 119 µs |
| AES CBC | 192 bits | 64 bytes | Decryption | Small | 8964 | 186 µs |
| AES CBC | 192 bits | 64 bytes | Decryption | Fast | 8589 | 178 µs |
| AES CBC | 192 bits | 128 bytes | Decryption | Small | 16 701 | 347 µs |
| AES CBC | 192 bits | 128 bytes | Decryption | Fast | 14 321 | 298 µs |
| AES CBC | 256 bits | 32 bytes | Decryption | Small | 5797 | 120 µs |
| AES CBC | 256 bits | 32 bytes | Decryption | Fast | 6567 | 136 µs |
| AES CBC | 256 bits | 64 bytes | Decryption | Small | 10 283 | 214 µs |
| AES CBC | 256 bits | 64 bytes | Decryption | Fast | 9808 | 204 µs |
| AES CBC | 256 bits | 128 bytes | Decryption | Small | 19 205 | 400 µs |
| AES CBC | 256 bits | 128 bytes | Decryption | Fast | 16 277 | 339 µs |
The table below shows flash memory and RAM usage (in bytes).
| Cipher operation | Configuration | Code | Constant data | Global data | Stack usage |
|---|---|---|---|---|---|
| Encryption | Small | 2302 bytes | 324 bytes | 0 bytes | 552 bytes |
| Encryption | Fast | 2246 bytes | 1092 bytes | 0 bytes | 552 bytes |
| Decryption | Small | 2650 bytes | 580 bytes | 0 bytes | 568 bytes |
| Decryption | Fast | 2600 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 | 636 904 | 602 Kbytes/s |
| AES CBC | 128 bits | 8000 bytes | 128 bytes | Encryption | Fast | 631 832 | 607 Kbytes/s |
| AES CBC | 128 bits | 8000 bytes | 512 bytes | Encryption | Small | 629 784 | 609 Kbytes/s |
| AES CBC | 128 bits | 8000 bytes | 512 bytes | Encryption | Fast | 622 864 | 616 Kbytes/s |
| AES CBC | 128 bits | 8000 bytes | 1024 bytes | Encryption | Small | 628 544 | 610 Kbytes/s |
| AES CBC | 128 bits | 8000 bytes | 1024 bytes | Encryption | Fast | 621 328 | 618 Kbytes/s |
| AES CBC | 128 bits | 8000 bytes | 2048 bytes | Encryption | Small | 627 696 | 611 Kbytes/s |
| AES CBC | 128 bits | 8000 bytes | 2048 bytes | Encryption | Fast | 620 576 | 618 Kbytes/s |
| AES CBC | 192 bits | 8000 bytes | 128 bytes | Encryption | Small | 727 456 | 527 Kbytes/s |
| AES CBC | 192 bits | 8000 bytes | 128 bytes | Encryption | Fast | 722 352 | 531 Kbytes/s |
| AES CBC | 192 bits | 8000 bytes | 512 bytes | Encryption | Small | 718 704 | 534 Kbytes/s |
| AES CBC | 192 bits | 8000 bytes | 512 bytes | Encryption | Fast | 714 848 | 537 Kbytes/s |
| AES CBC | 192 bits | 8000 bytes | 1024 bytes | Encryption | Small | 717 448 | 535 Kbytes/s |
| AES CBC | 192 bits | 8000 bytes | 1024 bytes | Encryption | Fast | 713 584 | 538 Kbytes/s |
| AES CBC | 192 bits | 8000 bytes | 2048 bytes | Encryption | Small | 716 624 | 535 Kbytes/s |
| AES CBC | 192 bits | 8000 bytes | 2048 bytes | Encryption | Fast | 712 952 | 538 Kbytes/s |
| AES CBC | 256 bits | 8000 bytes | 128 bytes | Encryption | Small | 821 672 | 467 Kbytes/s |
| AES CBC | 256 bits | 8000 bytes | 128 bytes | Encryption | Fast | 810 016 | 474 Kbytes/s |
| AES CBC | 256 bits | 8000 bytes | 512 bytes | Encryption | Small | 812 040 | 472 Kbytes/s |
| AES CBC | 256 bits | 8000 bytes | 512 bytes | Encryption | Fast | 802 264 | 478 Kbytes/s |
| AES CBC | 256 bits | 8000 bytes | 1024 bytes | Encryption | Small | 811 032 | 473 Kbytes/s |
| AES CBC | 256 bits | 8000 bytes | 1024 bytes | Encryption | Fast | 800 944 | 479 Kbytes/s |
| AES CBC | 256 bits | 8000 bytes | 2048 bytes | Encryption | Small | 810 992 | 473 Kbytes/s |
| AES CBC | 256 bits | 8000 bytes | 2048 bytes | Encryption | Fast | 800 288 | 479 Kbytes/s |
| AES CBC | 128 bits | 8000 bytes | 128 bytes | Decryption | Small | 874 288 | 439 Kbytes/s |
| AES CBC | 128 bits | 8000 bytes | 128 bytes | Decryption | Fast | 658 952 | 582 Kbytes/s |
| AES CBC | 128 bits | 8000 bytes | 512 bytes | Decryption | Small | 858 176 | 447 Kbytes/s |
| AES CBC | 128 bits | 8000 bytes | 512 bytes | Decryption | Fast | 648 032 | 592 Kbytes/s |
| AES CBC | 128 bits | 8000 bytes | 1024 bytes | Decryption | Small | 854 016 | 449 Kbytes/s |
| AES CBC | 128 bits | 8000 bytes | 1024 bytes | Decryption | Fast | 644 984 | 595 Kbytes/s |
| AES CBC | 128 bits | 8000 bytes | 2048 bytes | Decryption | Small | 850 608 | 451 Kbytes/s |
| AES CBC | 128 bits | 8000 bytes | 2048 bytes | Decryption | Fast | 642 632 | 597 Kbytes/s |
| AES CBC | 192 bits | 8000 bytes | 128 bytes | Decryption | Small | 1 001 336 | 383 Kbytes/s |
| AES CBC | 192 bits | 8000 bytes | 128 bytes | Decryption | Fast | 749 128 | 512 Kbytes/s |
| AES CBC | 192 bits | 8000 bytes | 512 bytes | Decryption | Small | 987 040 | 389 Kbytes/s |
| AES CBC | 192 bits | 8000 bytes | 512 bytes | Decryption | Fast | 738 056 | 520 Kbytes/s |
| AES CBC | 192 bits | 8000 bytes | 1024 bytes | Decryption | Small | 983 976 | 390 Kbytes/s |
| AES CBC | 192 bits | 8000 bytes | 1024 bytes | Decryption | Fast | 735 112 | 522 Kbytes/s |
| AES CBC | 192 bits | 8000 bytes | 2048 bytes | Decryption | Small | 980 176 | 391 Kbytes/s |
| AES CBC | 192 bits | 8000 bytes | 2048 bytes | Decryption | Fast | 731 928 | 524 Kbytes/s |
| AES CBC | 256 bits | 8000 bytes | 128 bytes | Decryption | Small | 1 146 224 | 335 Kbytes/s |
| AES CBC | 256 bits | 8000 bytes | 128 bytes | Decryption | Fast | 839 264 | 457 Kbytes/s |
| AES CBC | 256 bits | 8000 bytes | 512 bytes | Decryption | Small | 1 130 696 | 339 Kbytes/s |
| AES CBC | 256 bits | 8000 bytes | 512 bytes | Decryption | Fast | 827 784 | 463 Kbytes/s |
| AES CBC | 256 bits | 8000 bytes | 1024 bytes | Decryption | Small | 1 125 704 | 341 Kbytes/s |
| AES CBC | 256 bits | 8000 bytes | 1024 bytes | Decryption | Fast | 824 688 | 465 Kbytes/s |
| AES CBC | 256 bits | 8000 bytes | 2048 bytes | Decryption | Small | 1 121 616 | 342 Kbytes/s |
| AES CBC | 256 bits | 8000 bytes | 2048 bytes | Decryption | Fast | 822 296 | 466 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 | 2222 bytes | 316 bytes | 0 bytes | 176 bytes |
| Encryption | Fast | 2166 bytes | 1084 bytes | 0 bytes | 176 bytes |
| Decryption | Small | 2570 bytes | 572 bytes | 0 bytes | 192 bytes |
| Decryption | Fast | 2520 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 | 4423 | 92 µs |
| SHA256 | 64 bytes | 7620 | 158 µs |
| SHA256 | 128 bytes | 10 607 | 220 µs |
| SHA384 | 32 bytes | 17 803 | 370 µs |
| SHA384 | 64 bytes | 18 017 | 375 µs |
| SHA384 | 128 bytes | 34 310 | 714 µs |
The table below shows flash memory and RAM usage (in bytes).
| HASH mode | Code | Constant data | Global data | Stack usage |
|---|---|---|---|---|
| SHA256 | 1358 | 280 bytes | 0 bytes | 532 bytes |
| SHA384 | 2504 | 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 | 404 718 | 948 Kbytes/s |
| SHA256 | 8000 bytes | 512 bytes | 379 056 | 1013 Kbytes/s |
| SHA256 | 8000 bytes | 1024 bytes | 374 700 | 1024 Kbytes/s |
| SHA256 | 8000 bytes | 2048 bytes | 372 504 | 1030 Kbytes/s |
| SHA384 | 8000 bytes | 128 bytes | 1 045 358 | 367 Kbytes/s |
| SHA384 | 8000 bytes | 512 bytes | 997 679 | 384 Kbytes/s |
| SHA384 | 8000 bytes | 1024 bytes | 989 407 | 388 Kbytes/s |
| SHA384 | 8000 bytes | 2048 bytes | 985 271 | 389 Kbytes/s |
The table below shows the final tag generation done through the call to cmox_hash_generateTag.
| HASH mode | Cycles | Time |
|---|---|---|
| SHA256 | 3477 | 72 µs |
| SHA384 | 16 668 | 347 µs |
The table below shows flash memory and RAM usage (in bytes).
| HASH mode | Code | Constant data | Global data | Stack usage |
|---|---|---|---|---|
| SHA256 | 1354 bytes | 272 bytes | 0 bytes | 340 bytes |
| SHA384 | 2500 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 | 3 047 920 | 63 ms |
| SECP256R1 | Signature | Small | High | 2 957 288 | 61 ms |
| SECP256R1 | Signature | SuperFast | Low | 2 241 352 | 46 ms |
| SECP256R1 | Signature | SuperFast | High | 2 182 696 | 45 ms |
| SECP256R1 | Verification | Small | Low | 7 369 080 | 153 ms |
| SECP256R1 | Verification | Small | High | 6 529 480 | 136 ms |
| SECP256R1 | Verification | SuperFast | Low | 5 479 616 | 114 ms |
| SECP256R1 | Verification | SuperFast | High | 4 872 152 | 101 ms |
| SECP384R1 | Signature | Small | Low | 8 365 392 | 174 ms |
| SECP384R1 | Signature | Small | High | 7 994 808 | 166 ms |
| SECP384R1 | Signature | Fast | Low | 8 227 088 | 171 ms |
| SECP384R1 | Signature | Fast | High | 7 802 960 | 162 ms |
| SECP384R1 | Verification | Small | Low | 20 119 416 | 419 ms |
| SECP384R1 | Verification | Small | High | 17 458 528 | 363 ms |
| SECP384R1 | Verification | Fast | Low | 19 798 712 | 412 ms |
| SECP384R1 | Verification | Fast | High | 17 048 984 | 355 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 442 bytes | 1212 bytes | 0 bytes | 440 bytes | 628 bytes |
| SECP256R1 | Signature | Small | High | 13 442 bytes | 1596 bytes | 0 bytes | 440 bytes | 696 bytes |
| SECP256R1 | Signature | SuperFast | Low | 14 752 bytes | 1212 bytes | 0 bytes | 444 bytes | 628 bytes |
| SECP256R1 | Signature | SuperFast | High | 14 752 bytes | 1596 bytes | 0 bytes | 444 bytes | 696 bytes |
| SECP256R1 | Verification | Small | Low | 13 430 bytes | 1212 bytes | 0 bytes | 488 bytes | 856 bytes |
| SECP256R1 | Verification | Small | High | 13 430 bytes | 1596 bytes | 0 bytes | 488 bytes | 1648 bytes |
| SECP256R1 | Verification | SuperFast | Low | 14 740 bytes | 1212 bytes | 0 bytes | 492 bytes | 856 bytes |
| SECP256R1 | Verification | SuperFast | High | 14 740 bytes | 1596 bytes | 0 bytes | 492 bytes | 1648 bytes |
| SECP384R1 | Signature | Small | Low | 13 442 bytes | 1692 bytes | 0 bytes | 440 bytes | 884 bytes |
| SECP384R1 | Signature | Small | High | 13 442 bytes | 2268 bytes | 0 bytes | 440 bytes | 984 bytes |
| SECP384R1 | Signature | Fast | Low | 13 812 bytes | 1692 bytes | 0 bytes | 456 bytes | 884 bytes |
| SECP384R1 | Signature | Fast | High | 13 812 bytes | 2268 bytes | 0 bytes | 456 bytes | 984 bytes |
| SECP384R1 | Verification | Small | Low | 13 430 bytes | 1692 bytes | 0 bytes | 488 bytes | 1192 bytes |
| SECP384R1 | Verification | Small | High | 13 430 bytes | 2268 bytes | 0 bytes | 488 bytes | 2272 bytes |
| SECP384R1 | Verification | Fast | Low | 13 800 bytes | 1692 bytes | 0 bytes | 504 bytes | 1192 bytes |
| SECP384R1 | Verification | Fast | High | 13 800 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 775 952 | 99 ms |
| Ed25519 | 1023 bytes | Signature | Small | OptHigh | 2 788 080 | 58 ms |
| Ed25519 | 1023 bytes | Signature | SuperFast | OptLow | 3 743 624 | 77 ms |
| Ed25519 | 1023 bytes | Signature | SuperFast | OptHigh | 2 214 384 | 46 ms |
| Ed25519 | 1023 bytes | Verification | Small | OptLow | 7 136 408 | 148 ms |
| Ed25519 | 1023 bytes | Verification | Small | OptHigh | 6 267 432 | 130 ms |
| Ed25519 | 1023 bytes | Verification | SuperFast | OptLow | 5 417 456 | 112 ms |
| Ed25519 | 1023 bytes | Verification | SuperFast | OptHigh | 4 773 056 | 99 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 752 bytes | 1748 bytes | 0 bytes | 1172 bytes | 1672 bytes |
| Ed25519 | 1023 bytes | Signature | Small | OptHigh | 15 172 bytes | 2900 bytes | 0 bytes | 1172 bytes | 1672 bytes |
| Ed25519 | 1023 bytes | Signature | SuperFast | OptLow | 16 062 bytes | 1748 bytes | 0 bytes | 1172 bytes | 1672 bytes |
| Ed25519 | 1023 bytes | Signature | SuperFast | OptHigh | 16 482 bytes | 2900 bytes | 0 bytes | 1172 bytes | 1672 bytes |
| Ed25519 | 1023 bytes | Verification | Small | OptLow | 14 748 bytes | 1748 bytes | 0 bytes | 1172 bytes | 984 bytes |
| Ed25519 | 1023 bytes | Verification | Small | OptHigh | 15 168 bytes | 2900 bytes | 0 bytes | 1172 bytes | 1992 bytes |
| Ed25519 | 1023 bytes | Verification | SuperFast | OptLow | 16 058 bytes | 1748 bytes | 0 bytes | 1172 bytes | 984 bytes |
| Ed25519 | 1023 bytes | Verification | SuperFast | OptHigh | 16 478 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 | 187 603 896 | 3908 ms |
| v2.2 | CRT | SHA-256 | 3K | Signature | Small | Mid | 141 253 840 | 2942 ms |
| v2.2 | CRT | SHA-256 | 3K | Signature | Small | High | 118 639 656 | 2471 ms |
| v2.2 | CRT | SHA-256 | 3K | Signature | Fast | Low | 186 956 624 | 3894 ms |
| v2.2 | CRT | SHA-256 | 3K | Signature | Fast | Mid | 140 765 160 | 2932 ms |
| v2.2 | CRT | SHA-256 | 3K | Signature | Fast | High | 118 241 472 | 2463 ms |
| v2.2 | No CRT | SHA-256 | 3K | Signature | Small | Low | 713 462 520 | 14 863 ms |
| v2.2 | No CRT | SHA-256 | 3K | Signature | Small | Mid | 535 912 648 | 11 164 ms |
| v2.2 | No CRT | SHA-256 | 3K | Signature | Small | High | 448 304 264 | 9339 ms |
| v2.2 | No CRT | SHA-256 | 3K | Signature | Fast | Low | 712 308 848 | 14 839 ms |
| v2.2 | No CRT | SHA-256 | 3K | Signature | Fast | Mid | 535 036 080 | 11 146 ms |
| v2.2 | No CRT | SHA-256 | 3K | Signature | Fast | High | 447 583 416 | 9324 ms |
| v2.2 | n/a | SHA-256 | 3K | Verification | Small | n/a | 3 728 344 | 77 ms |
| v2.2 | n/a | SHA-256 | 3K | Verification | Fast | n/a | 3 724 552 | 77 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 | 6850 bytes | 372 bytes | 0 bytes | 668 bytes | 3704 bytes |
| v2.2 | CRT | SHA-256 | 3K | Signature | Small | Mid | 7086 bytes | 372 bytes | 0 bytes | 668 bytes | 4308 bytes |
| v2.2 | CRT | SHA-256 | 3K | Signature | Small | High | 7086 bytes | 372 bytes | 0 bytes | 668 bytes | 6708 bytes |
| v2.2 | CRT | SHA-256 | 3K | Signature | Fast | Low | 7220 bytes | 372 bytes | 0 bytes | 668 bytes | 3704 bytes |
| v2.2 | CRT | SHA-256 | 3K | Signature | Fast | Mid | 7456 bytes | 372 bytes | 0 bytes | 668 bytes | 4308 bytes |
| v2.2 | CRT | SHA-256 | 3K | Signature | Fast | High | 7456 bytes | 372 bytes | 0 bytes | 668 bytes | 6708 bytes |
| v2.2 | No CRT | SHA-256 | 3K | Signature | Small | Low | 5918 bytes | 364 bytes | 0 bytes | 668 bytes | 3484 bytes |
| v2.2 | No CRT | SHA-256 | 3K | Signature | Small | Mid | 6154 bytes | 364 bytes | 0 bytes | 668 bytes | 4664 bytes |
| v2.2 | No CRT | SHA-256 | 3K | Signature | Small | High | 6154 bytes | 364 bytes | 0 bytes | 668 bytes | 9368 bytes |
| v2.2 | No CRT | SHA-256 | 3K | Signature | Fast | Low | 6288 bytes | 364 bytes | 0 bytes | 668 bytes | 3484 bytes |
| v2.2 | No CRT | SHA-256 | 3K | Signature | Fast | Mid | 6524 bytes | 364 bytes | 0 bytes | 668 bytes | 4664 bytes |
| v2.2 | No CRT | SHA-256 | 3K | Signature | Fast | High | 6524 bytes | 364 bytes | 0 bytes | 668 bytes | 9368 bytes |
| v2.2 | n/a | SHA-256 | 3K | Verification | Small | n/a | 6102 bytes | 368 bytes | 0 bytes | 684 bytes | 3108 bytes |
| v2.2 | n/a | SHA-256 | 3K | Verification | Fast | n/a | 6472 bytes | 368 bytes | 0 bytes | 684 bytes | 3108 bytes |