Cryptographic Performances on STM32WL Series

Revision as of 15:45, 6 May 2021 by Registered User


This page present performances figures for both STM32WL ARM® Cortex®-M.

Info white.png Information
Note: Arm® is a registered trademark of Arm Limited (or its subsidiaries) in the US and/or elsewhere.

1. Measurement configuration

1.1. Hardware configuration

STM32 MCU STM32WL55JC
Device ID 0x497
Revision ID 0x1000
Board NUCLEO-WL55JC RevC

1.2. Firmware Configuration

Cryptographic Library version 040000B1

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 V8.50.4.261/W32 for ARM
Info white.png Information
NOTE: The measurements are done using a project build with High Speed optimization setting enabled.


2. Performances Values for Cortex®-M4

2.1. AES Symmetric key encryption & decryption

In this section we provide the performance results for AES CBC using different modes of operation:

  • Sole buffer: one sole buffer is encrypted or decrypted. Time to perform is given in µs.
  • Data flow: a big message is encrypted or decrypted by chunk. Bit rate is given in Kbytes per s.

2.1.1. Sole buffer mode

In this mode, operation is performed in one single call to one of the CMOX library APIs to encrypt or decrypt the whole message size.

Tables below shows the clock cycles and time (in us) needed to perform described operation in small and in fast configuration.

AES Mode Key size Buffer Size Cipher Operation Configuration Cycles Time
AES CBC 128Bits 32 bytes Encryption Small 5642 117 µs
AES CBC 128Bits 32 bytes Encryption Fast 5703 118 µs
AES CBC 128Bits 64 bytes Encryption Small 9093 189 µs
AES CBC 128Bits 64 bytes Encryption Fast 9216 192 µs
AES CBC 128Bits 128 bytes Encryption Small 16020 333 µs
AES CBC 128Bits 128 bytes Encryption Fast 16223 337 µs
AES CBC 192Bits 32 bytes Encryption Small 6285 130 µs
AES CBC 192Bits 32 bytes Encryption Fast 6258 130 µs
AES CBC 192Bits 64 bytes Encryption Small 10329 215 µs
AES CBC 192Bits 64 bytes Encryption Fast 10310 214 µs
AES CBC 192Bits 128 bytes Encryption Small 18327 381 µs
AES CBC 192Bits 128 bytes Encryption Fast 18416 383 µs
AES CBC 256Bits 32 bytes Encryption Small 7137 148 µs
AES CBC 256Bits 32 bytes Encryption Fast 7145 148 µs
AES CBC 256Bits 64 bytes Encryption Small 11693 243 µs
AES CBC 256Bits 64 bytes Encryption Fast 11749 244 µs
AES CBC 256Bits 128 bytes Encryption Small 20839 434 µs
AES CBC 256Bits 128 bytes Encryption Fast 20967 436 µs
AES CBC 128Bits 32 bytes Decryption Small 9617 200 µs
AES CBC 128Bits 32 bytes Decryption Fast 7461 155 µs
AES CBC 128Bits 64 bytes Decryption Small 17011 354 µs
AES CBC 128Bits 64 bytes Decryption Fast 11086 230 µs
AES CBC 128Bits 128 bytes Decryption Small 31761 661 µs
AES CBC 128Bits 128 bytes Decryption Fast 18350 382 µs
AES CBC 192Bits 32 bytes Decryption Small 11078 230 µs
AES CBC 192Bits 32 bytes Decryption Fast 8409 175 µs
AES CBC 192Bits 64 bytes Decryption Small 19872 414 µs
AES CBC 192Bits 64 bytes Decryption Fast 12623 262 µs
AES CBC 192Bits 128 bytes Decryption Small 37490 781 µs
AES CBC 192Bits 128 bytes Decryption Fast 21025 438 µs
AES CBC 256Bits 32 bytes Decryption Small 12815 266 µs
AES CBC 256Bits 32 bytes Decryption Fast 9635 200 µs
AES CBC 256Bits 64 bytes Decryption Small 23067 480 µs
AES CBC 256Bits 64 bytes Decryption Fast 14467 301 µs
AES CBC 256Bits 128 bytes Decryption Small 43525 906 µs
AES CBC 256Bits 128 bytes Decryption Fast 24026 500 µs
Cryptolib STM32WL55 AES CBC SB Enc.svg
Cryptolib STM32WL55 AES CBC SB Dec.svg


Table below shows flash and RAM usage (in bytes).

Cipher Operation Configuration Code Constant data Global Data Stack usage
Encryption Small 2936 bytes 380 bytes 1 bytes 524 bytes
Encryption Fast 3188 bytes 1404 bytes 1 bytes 548 bytes
Decryption Small 3068 bytes 636 bytes 1 bytes 552 bytes
Decryption Fast 3644 bytes 1660 bytes 1 bytes 556 bytes
Cryptolib STM32WL55 AES CBC SB Enc FP.svg
Cryptolib STM32WL55 AES CBC SB Dec FP.svg


2.1.2. Data flow mode

In this mode, operation is performed in several calls to the CMOX library APIs, as below:

  • cmox_cipher_init
  • cmox_cipher_setKey
  • cmox_cipher_setIV
  • cmox_cipher_append: called several times to encrypt or decrypt the whole message by chunk of fixed size

Tables below shows the clock cycles and bit rate (in KBytes per second) needed to perform described operation in small and in fast configuration.

AES Mode Key size Message size Chunk Size Cipher Operation Configuration Cycles Bit Rate
AES CBC 128Bits 8000 bytes 128 bytes Encryption Small 872896 439 kB/s
AES CBC 128Bits 8000 bytes 128 bytes Encryption Fast 890408 431 kB/s
AES CBC 128Bits 8000 bytes 512 bytes Encryption Small 865712 443 kB/s
AES CBC 128Bits 8000 bytes 512 bytes Encryption Fast 881904 435 kB/s
AES CBC 128Bits 8000 bytes 1024 bytes Encryption Small 864496 444 kB/s
AES CBC 128Bits 8000 bytes 1024 bytes Encryption Fast 880496 436 kB/s
AES CBC 128Bits 8000 bytes 2048 bytes Encryption Small 863888 444 kB/s
AES CBC 128Bits 8000 bytes 2048 bytes Encryption Fast 879720 436 kB/s
AES CBC 192Bits 8000 bytes 128 bytes Encryption Small 1014224 378 kB/s
AES CBC 192Bits 8000 bytes 128 bytes Encryption Fast 1028424 373 kB/s
AES CBC 192Bits 8000 bytes 512 bytes Encryption Small 1006792 381 kB/s
AES CBC 192Bits 8000 bytes 512 bytes Encryption Fast 1020080 376 kB/s
AES CBC 192Bits 8000 bytes 1024 bytes Encryption Small 1005528 381 kB/s
AES CBC 192Bits 8000 bytes 1024 bytes Encryption Fast 1018672 376 kB/s
AES CBC 192Bits 8000 bytes 2048 bytes Encryption Small 1004904 382 kB/s
AES CBC 192Bits 8000 bytes 2048 bytes Encryption Fast 1017968 377 kB/s
AES CBC 256Bits 8000 bytes 128 bytes Encryption Small 1154160 332 kB/s
AES CBC 256Bits 8000 bytes 128 bytes Encryption Fast 1165872 329 kB/s
AES CBC 256Bits 8000 bytes 512 bytes Encryption Small 1146888 334 kB/s
AES CBC 256Bits 8000 bytes 512 bytes Encryption Fast 1157728 331 kB/s
AES CBC 256Bits 8000 bytes 1024 bytes Encryption Small 1145616 335 kB/s
AES CBC 256Bits 8000 bytes 1024 bytes Encryption Fast 1156328 332 kB/s
AES CBC 256Bits 8000 bytes 2048 bytes Encryption Small 1144992 335 kB/s
AES CBC 256Bits 8000 bytes 2048 bytes Encryption Fast 1155632 332 kB/s
AES CBC 128Bits 8000 bytes 128 bytes Decryption Small 1877960 204 kB/s
AES CBC 128Bits 8000 bytes 128 bytes Decryption Fast 938888 408 kB/s
AES CBC 128Bits 8000 bytes 512 bytes Decryption Small 1865616 205 kB/s
AES CBC 128Bits 8000 bytes 512 bytes Decryption Fast 927320 414 kB/s
AES CBC 128Bits 8000 bytes 1024 bytes Decryption Small 1861904 206 kB/s
AES CBC 128Bits 8000 bytes 1024 bytes Decryption Fast 924296 415 kB/s
AES CBC 128Bits 8000 bytes 2048 bytes Decryption Small 1857992 206 kB/s
AES CBC 128Bits 8000 bytes 2048 bytes Decryption Fast 921240 416 kB/s
AES CBC 192Bits 8000 bytes 128 bytes Decryption Small 2233824 171 kB/s
AES CBC 192Bits 8000 bytes 128 bytes Decryption Fast 1083368 354 kB/s
AES CBC 192Bits 8000 bytes 512 bytes Decryption Small 2220992 172 kB/s
AES CBC 192Bits 8000 bytes 512 bytes Decryption Fast 1071960 358 kB/s
AES CBC 192Bits 8000 bytes 1024 bytes Decryption Small 2217664 173 kB/s
AES CBC 192Bits 8000 bytes 1024 bytes Decryption Fast 1068928 359 kB/s
AES CBC 192Bits 8000 bytes 2048 bytes Decryption Small 2214200 173 kB/s
AES CBC 192Bits 8000 bytes 2048 bytes Decryption Fast 1065696 360 kB/s
AES CBC 256Bits 8000 bytes 128 bytes Decryption Small 2589952 148 kB/s
AES CBC 256Bits 8000 bytes 128 bytes Decryption Fast 1226736 313 kB/s
AES CBC 256Bits 8000 bytes 512 bytes Decryption Small 2577736 148 kB/s
AES CBC 256Bits 8000 bytes 512 bytes Decryption Fast 1215560 315 kB/s
AES CBC 256Bits 8000 bytes 1024 bytes Decryption Small 2574408 149 kB/s
AES CBC 256Bits 8000 bytes 1024 bytes Decryption Fast 1212584 316 kB/s
AES CBC 256Bits 8000 bytes 2048 bytes Decryption Small 2571688 149 kB/s
AES CBC 256Bits 8000 bytes 2048 bytes Decryption Fast 1209728 317 kB/s
Cryptolib STM32WL55 AES CBC DF Enc.svg
Cryptolib STM32WL55 AES CBC DF Dec.svg


Table below shows flash and RAM usage (in bytes).

Cipher Operation Configuration Code Constant data Global Data Stack usage
Encryption Small 2828 bytes 372 bytes 1 bytes 140 bytes
Encryption Fast 3080 bytes 1396 bytes 1 bytes 172 bytes
Decryption Small 2960 bytes 628 bytes 1 bytes 176 bytes
Decryption Fast 3536 bytes 1652 bytes 1 bytes 180 bytes
Cryptolib STM32WL55 AES CBC DF Enc FP.svg
Cryptolib STM32WL55 AES CBC DF Dec FP.svg


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. Time to perform is given in us.
  • Data flow: a big message is hashed by chunk. Bit rate is given in bytes per s.

2.2.1. Sole buffer mode

In this mode, operation is performed in one single call to one of the CMOX library APIs to digest the whole message size.

Tables below shows the clock cycles and time (in µs) needed to perform described operation.

HASH Mode Buffer Size Cycles Time
SHA256 32 bytes 5478 114 µs
SHA256 64 bytes 8784 183 µs
SHA256 128 bytes 11765 245 µs
SHA384 32 bytes 19094 397 µs
SHA384 64 bytes 19300 402 µs
SHA384 128 bytes 35875 747 µs
Cryptolib STM32WL55 HASH SB Dig.svg


Table below shows flash and RAM usage (in bytes).

HASH Mode Code Constant data Global Data Stack usage
SHA256 1848 296 bytes 1 bytes 564 bytes
SHA384 3004 744 bytes 1 bytes 1124 bytes
Cryptolib STM32WL55 HASH SB Dig FP.svg


2.2.2. Data flow mode

In this mode, operation is performed in several calls to the CMOX library APIs, as below:

  • cmox_hash_init
  • cmox_hash_append: called several times to hash the whole message by chunk of fixed size
  • cmox_hash_generateTag

Tables below shows the clock cycles and bit rate (in KBytes per second) needed to perform described operation.

HASH Mode Message size Chunk Size Cycles Bit Rate
SHA256 8000 bytes 128 bytes 418643 917 kB/s
SHA256 8000 bytes 512 bytes 391249 981 kB/s
SHA256 8000 bytes 1024 bytes 386583 993 kB/s
SHA256 8000 bytes 2048 bytes 384251 999 kB/s
SHA384 8000 bytes 128 bytes 1063783 360 kB/s
SHA384 8000 bytes 512 bytes 1015249 378 kB/s
SHA384 8000 bytes 1024 bytes 1006833 381 kB/s
SHA384 8000 bytes 2048 bytes 1002625 382 kB/s
Cryptolib STM32WL55 HASH DF Dig.svg


Table below shows final tag generation done through the call to cmox_hash_generateTag.

HASH Mode Cycles Time
SHA256 4501 93 µs
SHA384 17860 372 µs

Table below shows flash and RAM usage (in bytes).

HASH Mode Code Constant data Global Data Stack usage
SHA256 1856 bytes 288 bytes 1 bytes 372 bytes
SHA384 3012 bytes 736 bytes 1 bytes 828 bytes
Cryptolib STM32WL55 HASH DF Dig FP.svg


2.3. ECDSA Signature & Verification

In this section we provide the performance results for ECDSA Signature & Verification.

Tables below shows the clock cycles and time (in ms) needed to perform described operation in different configurations.

Curve Operation ECC Mathematics configuration Curve definition Cycles Time
SECP256R1 Signature Small Low 3058008 63 ms
SECP256R1 Signature Small High 2970632 61 ms
SECP256R1 Signature SuperFast Low 2263088 47 ms
SECP256R1 Signature SuperFast High 2191712 45 ms
SECP256R1 Verification Small Low 7382280 153 ms
SECP256R1 Verification Small High 6559784 136 ms
SECP256R1 Verification SuperFast Low 5526416 115 ms
SECP256R1 Verification SuperFast High 4891992 101 ms
SECP384R1 Signature Small Low 8367256 174 ms
SECP384R1 Signature Small High 8005416 166 ms
SECP384R1 Signature Fast Low 8237232 171 ms
SECP384R1 Signature Fast High 7893280 164 ms
SECP384R1 Verification Small Low 20101024 418 ms
SECP384R1 Verification Small High 17471688 363 ms
SECP384R1 Verification Fast Low 19800624 412 ms
SECP384R1 Verification Fast High 17244232 359 ms
Cryptolib STM32WL55 ECDSA Sig.svg
Cryptolib STM32WL55 ECDSA Ver.svg


Table below shows ECDSA flash 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 11732 bytes 1184 bytes 1 bytes 328 bytes 628 bytes
SECP256R1 Signature Small High 11732 bytes 1568 bytes 1 bytes 328 bytes 696 bytes
SECP256R1 Signature SuperFast Low 13042 bytes 1184 bytes 1 bytes 332 bytes 628 bytes
SECP256R1 Signature SuperFast High 13042 bytes 1568 bytes 1 bytes 332 bytes 696 bytes
SECP256R1 Verification Small Low 12216 bytes 1200 bytes 1 bytes 424 bytes 856 bytes
SECP256R1 Verification Small High 12216 bytes 1584 bytes 1 bytes 424 bytes 1648 bytes
SECP256R1 Verification SuperFast Low 13526 bytes 1200 bytes 1 bytes 428 bytes 856 bytes
SECP256R1 Verification SuperFast High 13526 bytes 1584 bytes 1 bytes 428 bytes 1648 bytes
SECP384R1 Signature Small Low 11732 bytes 1664 bytes 1 bytes 328 bytes 884 bytes
SECP384R1 Signature Small High 11732 bytes 2240 bytes 1 bytes 328 bytes 984 bytes
SECP384R1 Signature Fast Low 12102 bytes 1664 bytes 1 bytes 344 bytes 884 bytes
SECP384R1 Signature Fast High 12102 bytes 2240 bytes 1 bytes 344 bytes 984 bytes
SECP384R1 Verification Small Low 12216 bytes 1680 bytes 1 bytes 424 bytes 1192 bytes
SECP384R1 Verification Small High 12216 bytes 2256 bytes 1 bytes 424 bytes 2272 bytes
SECP384R1 Verification Fast Low 12586 bytes 1680 bytes 1 bytes 440 bytes 1192 bytes
SECP384R1 Verification Fast High 12586 bytes 2256 bytes 1 bytes 440 bytes 2272 bytes
Cryptolib STM32WL55 ECDSA SECP256R1 Sig FP.svg
Cryptolib STM32WL55 ECDSA SECP256R1 Ver FP.svg
Cryptolib STM32WL55 ECDSA SECP384R1 Sig FP.svg
Cryptolib STM32WL55 ECDSA SECP384R1 Ver FP.svg


2.4. EdDSA Signature & Verification

In this section we provide the performance results for EdDSA Signature & Verification.

Tables below shows the clock cycles and time (in ms) needed to perform described operation in different configurations.

Curve Message size Operation ECC Mathematics configuration Curve definition Cycles Time
Ed25519 1023 bytes Signature Small OptLow 4817480 100 ms
Ed25519 1023 bytes Signature Small OptHigh 2818064 58 ms
Ed25519 1023 bytes Signature SuperFast OptLow 3792360 79 ms
Ed25519 1023 bytes Signature SuperFast OptHigh 2237272 46 ms
Ed25519 1023 bytes Verification Small OptLow 7190080 149 ms
Ed25519 1023 bytes Verification Small OptHigh 6299304 131 ms
Ed25519 1023 bytes Verification SuperFast OptLow 5475776 114 ms
Ed25519 1023 bytes Verification SuperFast OptHigh 4788560 99 ms
Cryptolib STM32WL55 EdDSA Sig.svg
Cryptolib STM32WL55 EdDSA Ver.svg


Table below shows EdDSA flash 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 14088 bytes 1744 bytes 1 bytes 1236 bytes 1388 bytes
Ed25519 1023 bytes Signature Small OptHigh 14494 bytes 2896 bytes 1 bytes 1236 bytes 1388 bytes
Ed25519 1023 bytes Signature SuperFast OptLow 15398 bytes 1744 bytes 1 bytes 1236 bytes 1388 bytes
Ed25519 1023 bytes Signature SuperFast OptHigh 15804 bytes 2896 bytes 1 bytes 1236 bytes 1388 bytes
Ed25519 1023 bytes Verification Small OptLow 14178 bytes 1748 bytes 1 bytes 1244 bytes 1152 bytes
Ed25519 1023 bytes Verification Small OptHigh 14584 bytes 2900 bytes 1 bytes 1244 bytes 1992 bytes
Ed25519 1023 bytes Verification SuperFast OptLow 15488 bytes 1748 bytes 1 bytes 1244 bytes 1152 bytes
Ed25519 1023 bytes Verification SuperFast OptHigh 15894 bytes 2900 bytes 1 bytes 1244 bytes 1992 bytes
Cryptolib STM32WL55 EdDSA Sig FP.svg
Cryptolib STM32WL55 EdDSA Ver FP.svg


2.5. RSA Signature & Verification

In this section we provide the performance results for RSA Signature & Verification.

Tables below shows the clock cycles and time (in ms) needed to perform 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 187679960 3909 ms
v2.2 CRT SHA-256 3K Signature Small Mid 141325512 2944 ms
v2.2 CRT SHA-256 3K Signature Small High 118679656 2472 ms
v2.2 CRT SHA-256 3K Signature Fast Low 187009264 3896 ms
v2.2 CRT SHA-256 3K Signature Fast Mid 140833056 2934 ms
v2.2 CRT SHA-256 3K Signature Fast High 117761552 2453 ms
v2.2 No CRT SHA-256 3K Signature Small Low 713590200 14866 ms
v2.2 No CRT SHA-256 3K Signature Small Mid 536036040 11167 ms
v2.2 No CRT SHA-256 3K Signature Small High 448385984 9341 ms
v2.2 No CRT SHA-256 3K Signature Fast Low 712408424 14841 ms
v2.2 No CRT SHA-256 3K Signature Fast Mid 535150912 11148 ms
v2.2 No CRT SHA-256 3K Signature Fast High 446644936 9305 ms
v2.2 n/a SHA-256 3K Verification Small n/a 3816560 79 ms
v2.2 n/a SHA-256 3K Verification Fast n/a 3770000 78 ms
Cryptolib STM32WL55 RSA Sig.svg
Cryptolib STM32WL55 RSA Ver.svg


Table below shows RSA flash 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 7034 bytes 370 bytes 5 bytes 700 bytes 3704 bytes
v2.2 CRT SHA-256 3K Signature Small Mid 7282 bytes 370 bytes 5 bytes 700 bytes 4308 bytes
v2.2 CRT SHA-256 3K Signature Small High 7282 bytes 370 bytes 5 bytes 700 bytes 6708 bytes
v2.2 CRT SHA-256 3K Signature Fast Low 7404 bytes 370 bytes 5 bytes 700 bytes 3704 bytes
v2.2 CRT SHA-256 3K Signature Fast Mid 7652 bytes 370 bytes 5 bytes 700 bytes 4308 bytes
v2.2 CRT SHA-256 3K Signature Fast High 7652 bytes 370 bytes 5 bytes 700 bytes 6708 bytes
v2.2 No CRT SHA-256 3K Signature Small Low 6064 bytes 362 bytes 5 bytes 700 bytes 3484 bytes
v2.2 No CRT SHA-256 3K Signature Small Mid 6312 bytes 362 bytes 5 bytes 700 bytes 4664 bytes
v2.2 No CRT SHA-256 3K Signature Small High 6312 bytes 362 bytes 5 bytes 700 bytes 9368 bytes
v2.2 No CRT SHA-256 3K Signature Fast Low 6434 bytes 362 bytes 5 bytes 700 bytes 3484 bytes
v2.2 No CRT SHA-256 3K Signature Fast Mid 6682 bytes 362 bytes 5 bytes 700 bytes 4664 bytes
v2.2 No CRT SHA-256 3K Signature Fast High 6682 bytes 362 bytes 5 bytes 700 bytes 9368 bytes
v2.2 n/a SHA-256 3K Verification Small n/a 6810 bytes 366 bytes 5 bytes 716 bytes 3108 bytes
v2.2 n/a SHA-256 3K Verification Fast n/a 7180 bytes 366 bytes 5 bytes 716 bytes 3108 bytes
Cryptolib STM32WL55 RSA 3K CRT Sig FP.svg
Cryptolib STM32WL55 RSA 3K NoCRT Sig FP.svg
Cryptolib STM32WL55 RSA 3K Ver FP.svg


3. Performances Values for Cortex®-M0+

3.1. AES Symmetric key encryption & decryption

In this section we provide the performance results for AES CBC using different modes of operation:

  • Sole buffer: one sole buffer is encrypted or decrypted. Time to perform is given in µs.
  • Data flow: a big message is encrypted or decrypted by chunk. Bit rate is given in Kbytes per s.

3.1.1. Sole buffer mode

In this mode, operation is performed in one single call to one of the CMOX library APIs to encrypt or decrypt the whole message size.

Tables below shows the clock cycles and time (in us) needed to perform described operation in small and in fast configuration.

AES Mode Key size Buffer Size Cipher Operation Configuration Cycles Time
AES CBC 128Bits 32 bytes Encryption Small 10231 213 µs
AES CBC 128Bits 32 bytes Encryption Fast 10057 209 µs
AES CBC 128Bits 64 bytes Encryption Small 17517 364 µs
AES CBC 128Bits 64 bytes Encryption Fast 16033 334 µs
AES CBC 128Bits 128 bytes Encryption Small 32089 668 µs
AES CBC 128Bits 128 bytes Encryption Fast 27985 583 µs
AES CBC 192Bits 32 bytes Encryption Small 11560 240 µs
AES CBC 192Bits 32 bytes Encryption Fast 11098 231 µs
AES CBC 192Bits 64 bytes Encryption Small 20170 420 µs
AES CBC 192Bits 64 bytes Encryption Fast 18090 376 µs
AES CBC 192Bits 128 bytes Encryption Small 37390 778 µs
AES CBC 192Bits 128 bytes Encryption Fast 32074 668 µs
AES CBC 256Bits 32 bytes Encryption Small 13230 275 µs
AES CBC 256Bits 32 bytes Encryption Fast 12549 261 µs
AES CBC 256Bits 64 bytes Encryption Small 23164 482 µs
AES CBC 256Bits 64 bytes Encryption Fast 20557 428 µs
AES CBC 256Bits 128 bytes Encryption Small 43032 896 µs
AES CBC 256Bits 128 bytes Encryption Fast 36573 761 µs
AES CBC 128Bits 32 bytes Decryption Small 14383 299 µs
AES CBC 128Bits 32 bytes Decryption Fast 12702 264 µs
AES CBC 128Bits 64 bytes Decryption Small 25809 537 µs
AES CBC 128Bits 64 bytes Decryption Fast 18962 395 µs
AES CBC 128Bits 128 bytes Decryption Small 48661 1013 µs
AES CBC 128Bits 128 bytes Decryption Fast 31482 655 µs
AES CBC 192Bits 32 bytes Decryption Small 16597 345 µs
AES CBC 192Bits 32 bytes Decryption Fast 14298 297 µs
AES CBC 192Bits 64 bytes Decryption Small 30239 629 µs
AES CBC 192Bits 64 bytes Decryption Fast 21606 450 µs
AES CBC 192Bits 128 bytes Decryption Small 57523 1198 µs
AES CBC 192Bits 128 bytes Decryption Fast 36222 754 µs
AES CBC 256Bits 32 bytes Decryption Small 19166 399 µs
AES CBC 256Bits 32 bytes Decryption Fast 16302 339 µs
AES CBC 256Bits 64 bytes Decryption Small 35024 729 µs
AES CBC 256Bits 64 bytes Decryption Fast 24670 513 µs
AES CBC 256Bits 128 bytes Decryption Small 66740 1390 µs
AES CBC 256Bits 128 bytes Decryption Fast 41406 862 µs
Cryptolib STM32WL55 CM0PLUS AES CBC SB Enc.svg
Cryptolib STM32WL55 CM0PLUS AES CBC SB Dec.svg


Table below shows flash and RAM usage (in bytes).

Cipher Operation Configuration Code Constant data Global Data Stack usage
Encryption Small 3028 bytes 380 bytes 1 bytes 536 bytes
Encryption Fast 3276 bytes 1404 bytes 1 bytes 540 bytes
Decryption Small 3104 bytes 636 bytes 1 bytes 584 bytes
Decryption Fast 3696 bytes 1660 bytes 1 bytes 560 bytes
Cryptolib STM32WL55 CM0PLUS AES CBC SB Enc FP.svg
Cryptolib STM32WL55 CM0PLUS AES CBC SB Dec FP.svg


3.1.2. Data flow mode

In this mode, operation is performed in several calls to the CMOX library APIs, as below:

  • cmox_cipher_init
  • cmox_cipher_setKey
  • cmox_cipher_setIV
  • cmox_cipher_append: called several times to encrypt or decrypt the whole message by chunk of fixed size

Tables below shows the clock cycles and bit rate (in KBytes per second) needed to perform described operation in small and in fast configuration.

AES Mode Key size Message size Chunk Size Cipher Operation Configuration Cycles Bit Rate
AES CBC 128Bits 8000 bytes 128 bytes Encryption Small 1856576 206 kB/s
AES CBC 128Bits 8000 bytes 128 bytes Encryption Fast 1530384 250 kB/s
AES CBC 128Bits 8000 bytes 512 bytes Encryption Small 1847600 207 kB/s
AES CBC 128Bits 8000 bytes 512 bytes Encryption Fast 1521544 252 kB/s
AES CBC 128Bits 8000 bytes 1024 bytes Encryption Small 1846064 208 kB/s
AES CBC 128Bits 8000 bytes 1024 bytes Encryption Fast 1520048 252 kB/s
AES CBC 128Bits 8000 bytes 2048 bytes Encryption Small 1845312 208 kB/s
AES CBC 128Bits 8000 bytes 2048 bytes Encryption Fast 1519296 252 kB/s
AES CBC 192Bits 8000 bytes 128 bytes Encryption Small 2187576 175 kB/s
AES CBC 192Bits 8000 bytes 128 bytes Encryption Fast 1784384 215 kB/s
AES CBC 192Bits 8000 bytes 512 bytes Encryption Small 2178600 176 kB/s
AES CBC 192Bits 8000 bytes 512 bytes Encryption Fast 1775552 216 kB/s
AES CBC 192Bits 8000 bytes 1024 bytes Encryption Small 2177072 176 kB/s
AES CBC 192Bits 8000 bytes 1024 bytes Encryption Fast 1774048 216 kB/s
AES CBC 192Bits 8000 bytes 2048 bytes Encryption Small 2176304 176 kB/s
AES CBC 192Bits 8000 bytes 2048 bytes Encryption Fast 1773296 216 kB/s
AES CBC 256Bits 8000 bytes 128 bytes Encryption Small 2518576 152 kB/s
AES CBC 256Bits 8000 bytes 128 bytes Encryption Fast 2038384 188 kB/s
AES CBC 256Bits 8000 bytes 512 bytes Encryption Small 2509600 153 kB/s
AES CBC 256Bits 8000 bytes 512 bytes Encryption Fast 2029544 189 kB/s
AES CBC 256Bits 8000 bytes 1024 bytes Encryption Small 2508064 153 kB/s
AES CBC 256Bits 8000 bytes 1024 bytes Encryption Fast 2028048 189 kB/s
AES CBC 256Bits 8000 bytes 2048 bytes Encryption Small 2507304 153 kB/s
AES CBC 256Bits 8000 bytes 2048 bytes Encryption Fast 2027296 189 kB/s
AES CBC 128Bits 8000 bytes 128 bytes Decryption Small 2893440 132 kB/s
AES CBC 128Bits 8000 bytes 128 bytes Decryption Fast 1602600 239 kB/s
AES CBC 128Bits 8000 bytes 512 bytes Decryption Small 2881448 133 kB/s
AES CBC 128Bits 8000 bytes 512 bytes Decryption Fast 1590096 241 kB/s
AES CBC 128Bits 8000 bytes 1024 bytes Decryption Small 2878128 133 kB/s
AES CBC 128Bits 8000 bytes 1024 bytes Decryption Fast 1586688 242 kB/s
AES CBC 128Bits 8000 bytes 2048 bytes Decryption Small 2874344 133 kB/s
AES CBC 128Bits 8000 bytes 2048 bytes Decryption Fast 1582864 242 kB/s
AES CBC 192Bits 8000 bytes 128 bytes Decryption Small 3447440 111 kB/s
AES CBC 192Bits 8000 bytes 128 bytes Decryption Fast 1864600 205 kB/s
AES CBC 192Bits 8000 bytes 512 bytes Decryption Small 3435456 111 kB/s
AES CBC 192Bits 8000 bytes 512 bytes Decryption Fast 1852104 207 kB/s
AES CBC 192Bits 8000 bytes 1024 bytes Decryption Small 3432128 111 kB/s
AES CBC 192Bits 8000 bytes 1024 bytes Decryption Fast 1848688 207 kB/s
AES CBC 192Bits 8000 bytes 2048 bytes Decryption Small 3428344 112 kB/s
AES CBC 192Bits 8000 bytes 2048 bytes Decryption Fast 1844864 208 kB/s
AES CBC 256Bits 8000 bytes 128 bytes Decryption Small 4001672 95 kB/s
AES CBC 256Bits 8000 bytes 128 bytes Decryption Fast 2129360 180 kB/s
AES CBC 256Bits 8000 bytes 512 bytes Decryption Small 3989504 96 kB/s
AES CBC 256Bits 8000 bytes 512 bytes Decryption Fast 2117056 181 kB/s
AES CBC 256Bits 8000 bytes 1024 bytes Decryption Small 3986136 96 kB/s
AES CBC 256Bits 8000 bytes 1024 bytes Decryption Fast 2113664 181 kB/s
AES CBC 256Bits 8000 bytes 2048 bytes Decryption Small 3982352 96 kB/s
AES CBC 256Bits 8000 bytes 2048 bytes Decryption Fast 2109864 182 kB/s
Cryptolib STM32WL55 CM0PLUS AES CBC DF Enc.svg
Cryptolib STM32WL55 CM0PLUS AES CBC DF Dec.svg


Table below shows flash and RAM usage (in bytes).

Cipher Operation Configuration Code Constant data Global Data Stack usage
Encryption Small 2950 bytes 372 bytes 1 bytes 152 bytes
Encryption Fast 3198 bytes 1396 bytes 1 bytes 164 bytes
Decryption Small 3022 bytes 628 bytes 1 bytes 208 bytes
Decryption Fast 3614 bytes 1652 bytes 1 bytes 184 bytes
Cryptolib STM32WL55 CM0PLUS AES CBC DF Enc FP.svg
Cryptolib STM32WL55 CM0PLUS AES CBC DF Dec FP.svg


3.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. Time to perform is given in us.
  • Data flow: a big message is hashed by chunk. Bit rate is given in bytes per s.

3.2.1. Sole buffer mode

In this mode, operation is performed in one single call to one of the CMOX library APIs to digest the whole message size.

Tables below shows the clock cycles and time (in µs) needed to perform described operation.

HASH Mode Buffer Size Cycles Time
SHA256 32 bytes 11080 230 µs
SHA256 64 bytes 19241 400 µs
SHA256 128 bytes 27309 568 µs
SHA384 32 bytes 38646 805 µs
SHA384 64 bytes 38656 805 µs
SHA384 128 bytes 72865 1518 µs
Cryptolib STM32WL55 CM0PLUS HASH SB Dig.svg


Table below shows flash and RAM usage (in bytes).

HASH Mode Code Constant data Global Data Stack usage
SHA256 1846 296 bytes 1 bytes 580 bytes
SHA384 3158 744 bytes 1 bytes 1132 bytes
Cryptolib STM32WL55 CM0PLUS HASH SB Dig FP.svg


3.2.2. Data flow mode

In this mode, operation is performed in several calls to the CMOX library APIs, as below:

  • cmox_hash_init
  • cmox_hash_append: called several times to hash the whole message by chunk of fixed size
  • cmox_hash_generateTag

Tables below shows the clock cycles and bit rate (in KBytes per second) needed to perform described operation.

HASH Mode Message size Chunk Size Cycles Bit Rate
SHA256 8000 bytes 128 bytes 1030985 372 kB/s
SHA256 8000 bytes 512 bytes 1017214 377 kB/s
SHA256 8000 bytes 1024 bytes 1014870 378 kB/s
SHA256 8000 bytes 2048 bytes 1013698 378 kB/s
SHA384 8000 bytes 128 bytes 2137254 179 kB/s
SHA384 8000 bytes 512 bytes 2122004 180 kB/s
SHA384 8000 bytes 1024 bytes 2119388 181 kB/s
SHA384 8000 bytes 2048 bytes 2118080 181 kB/s
Cryptolib STM32WL55 CM0PLUS HASH DF Dig.svg


Table below shows final tag generation done through the call to cmox_hash_generateTag.

HASH Mode Cycles Time
SHA256 10341 215 µs
SHA384 37843 788 µs

Table below shows flash and RAM usage (in bytes).

HASH Mode Code Constant data Global Data Stack usage
SHA256 1874 bytes 288 bytes 1 bytes 380 bytes
SHA384 3186 bytes 736 bytes 1 bytes 828 bytes
Cryptolib STM32WL55 CM0PLUS HASH DF Dig FP.svg


3.3. ECDSA Signature & Verification

In this section we provide the performance results for ECDSA Signature & Verification.

Tables below shows the clock cycles and time (in ms) needed to perform described operation in different configurations.

Curve Operation ECC Mathematics configuration Curve definition Cycles Time
SECP256R1 Signature Small Low 12376176 257 ms
SECP256R1 Signature Small High 11922104 248 ms
SECP256R1 Signature SuperFast Low 9289128 193 ms
SECP256R1 Signature SuperFast High 9036448 188 ms
SECP256R1 Verification Small Low 29311368 610 ms
SECP256R1 Verification Small High 25844168 538 ms
SECP256R1 Verification SuperFast Low 22231544 463 ms
SECP256R1 Verification SuperFast High 19783032 412 ms
SECP384R1 Signature Small Low 39216312 817 ms
SECP384R1 Signature Small High 37470008 780 ms
SECP384R1 Signature Fast Low 33120720 690 ms
SECP384R1 Signature Fast High 31892880 664 ms
SECP384R1 Verification Small Low 92644096 1930 ms
SECP384R1 Verification Small High 80578208 1678 ms
SECP384R1 Verification Fast Low 78657120 1638 ms
SECP384R1 Verification Fast High 68981648 1437 ms
Cryptolib STM32WL55 CM0PLUS ECDSA Sig.svg
Cryptolib STM32WL55 CM0PLUS ECDSA Ver.svg


Table below shows ECDSA flash 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 11900 bytes 1184 bytes 1 bytes 320 bytes 628 bytes
SECP256R1 Signature Small High 11900 bytes 1568 bytes 1 bytes 320 bytes 696 bytes
SECP256R1 Signature SuperFast Low 15240 bytes 1184 bytes 1 bytes 368 bytes 628 bytes
SECP256R1 Signature SuperFast High 15240 bytes 1568 bytes 1 bytes 368 bytes 696 bytes
SECP256R1 Verification Small Low 12370 bytes 1200 bytes 1 bytes 408 bytes 856 bytes
SECP256R1 Verification Small High 12370 bytes 1584 bytes 1 bytes 408 bytes 1648 bytes
SECP256R1 Verification SuperFast Low 15710 bytes 1200 bytes 1 bytes 456 bytes 856 bytes
SECP256R1 Verification SuperFast High 15710 bytes 1584 bytes 1 bytes 456 bytes 1648 bytes
SECP384R1 Signature Small Low 11900 bytes 1664 bytes 1 bytes 320 bytes 884 bytes
SECP384R1 Signature Small High 11900 bytes 2240 bytes 1 bytes 320 bytes 984 bytes
SECP384R1 Signature Fast Low 12738 bytes 1664 bytes 1 bytes 312 bytes 884 bytes
SECP384R1 Signature Fast High 12738 bytes 2240 bytes 1 bytes 312 bytes 984 bytes
SECP384R1 Verification Small Low 12370 bytes 1680 bytes 1 bytes 408 bytes 1192 bytes
SECP384R1 Verification Small High 12370 bytes 2256 bytes 1 bytes 408 bytes 2272 bytes
SECP384R1 Verification Fast Low 13208 bytes 1680 bytes 1 bytes 400 bytes 1192 bytes
SECP384R1 Verification Fast High 13208 bytes 2256 bytes 1 bytes 400 bytes 2272 bytes
Cryptolib STM32WL55 CM0PLUS ECDSA SECP256R1 Sig FP.svg
Cryptolib STM32WL55 CM0PLUS ECDSA SECP256R1 Ver FP.svg
Cryptolib STM32WL55 CM0PLUS ECDSA SECP384R1 Sig FP.svg
Cryptolib STM32WL55 CM0PLUS ECDSA SECP384R1 Ver FP.svg


3.4. EdDSA Signature & Verification

In this section we provide the performance results for EdDSA Signature & Verification.

Tables below shows the clock cycles and time (in ms) needed to perform described operation in different configurations.

Curve Message size Operation ECC Mathematics configuration Curve definition Cycles Time
Ed25519 1023 bytes Signature Small OptLow 17541032 365 ms
Ed25519 1023 bytes Signature Small OptHigh 10047072 209 ms
Ed25519 1023 bytes Signature SuperFast OptLow 13863464 288 ms
Ed25519 1023 bytes Signature SuperFast OptHigh 7844864 163 ms
Ed25519 1023 bytes Verification Small OptLow 27593736 574 ms
Ed25519 1023 bytes Verification Small OptHigh 24073808 501 ms
Ed25519 1023 bytes Verification SuperFast OptLow 21353856 444 ms
Ed25519 1023 bytes Verification SuperFast OptHigh 18258080 380 ms
Cryptolib STM32WL55 CM0PLUS EdDSA Sig.svg
Cryptolib STM32WL55 CM0PLUS EdDSA Ver.svg


Table below shows EdDSA flash 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 14550 bytes 1744 bytes 1 bytes 1236 bytes 1388 bytes
Ed25519 1023 bytes Signature Small OptHigh 14972 bytes 2896 bytes 1 bytes 1236 bytes 1388 bytes
Ed25519 1023 bytes Signature SuperFast OptLow 17890 bytes 1744 bytes 1 bytes 1236 bytes 1388 bytes
Ed25519 1023 bytes Signature SuperFast OptHigh 18312 bytes 2896 bytes 1 bytes 1236 bytes 1388 bytes
Ed25519 1023 bytes Verification Small OptLow 14608 bytes 1748 bytes 1 bytes 1236 bytes 1152 bytes
Ed25519 1023 bytes Verification Small OptHigh 15030 bytes 2900 bytes 1 bytes 1236 bytes 1992 bytes
Ed25519 1023 bytes Verification SuperFast OptLow 17948 bytes 1748 bytes 1 bytes 1236 bytes 1152 bytes
Ed25519 1023 bytes Verification SuperFast OptHigh 18370 bytes 2900 bytes 1 bytes 1236 bytes 1992 bytes
Cryptolib STM32WL55 CM0PLUS EdDSA Sig FP.svg
Cryptolib STM32WL55 CM0PLUS EdDSA Ver FP.svg


3.5. RSA Signature & Verification

In this section we provide the performance results for RSA Signature & Verification.

Tables below shows the clock cycles and time (in ms) needed to perform 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 1094403880 22800 ms
v2.2 CRT SHA-256 3K Signature Small Mid 832868816 17351 ms
v2.2 CRT SHA-256 3K Signature Small High 694549360 14469 ms
v2.2 CRT SHA-256 3K Signature Fast Low 922009088 19208 ms
v2.2 CRT SHA-256 3K Signature Fast Mid 664079472 13834 ms
v2.2 CRT SHA-256 3K Signature Fast High 551535184 11490 ms
v2.2 No CRT SHA-256 3K Signature Small Low 4309167424 89774 ms
v2.2 No CRT SHA-256 3K Signature Small Mid 3276556864 68261 ms
v2.2 No CRT SHA-256 3K Signature Small High 2722194584 56712 ms
v2.2 No CRT SHA-256 3K Signature Fast Low 3624847920 75517 ms
v2.2 No CRT SHA-256 3K Signature Fast Mid 2599469688 54155 ms
v2.2 No CRT SHA-256 3K Signature Fast High 2147945432 44748 ms
v2.2 n/a SHA-256 3K Verification Small n/a 17091480 356 ms
v2.2 n/a SHA-256 3K Verification Fast n/a 14019104 292 ms
Cryptolib STM32WL55 CM0PLUS RSA Sig.svg
Cryptolib STM32WL55 CM0PLUS RSA Ver.svg


Table below shows RSA flash 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 7260 bytes 369 bytes 5 bytes 708 bytes 3704 bytes
v2.2 CRT SHA-256 3K Signature Small Mid 7538 bytes 369 bytes 5 bytes 708 bytes 4308 bytes
v2.2 CRT SHA-256 3K Signature Small High 7538 bytes 369 bytes 5 bytes 708 bytes 6708 bytes
v2.2 CRT SHA-256 3K Signature Fast Low 8098 bytes 370 bytes 5 bytes 708 bytes 3704 bytes
v2.2 CRT SHA-256 3K Signature Fast Mid 8376 bytes 370 bytes 5 bytes 708 bytes 4308 bytes
v2.2 CRT SHA-256 3K Signature Fast High 8376 bytes 370 bytes 5 bytes 708 bytes 6708 bytes
v2.2 No CRT SHA-256 3K Signature Small Low 6274 bytes 361 bytes 5 bytes 708 bytes 3484 bytes
v2.2 No CRT SHA-256 3K Signature Small Mid 6552 bytes 362 bytes 5 bytes 708 bytes 4664 bytes
v2.2 No CRT SHA-256 3K Signature Small High 6552 bytes 362 bytes 5 bytes 708 bytes 9368 bytes
v2.2 No CRT SHA-256 3K Signature Fast Low 7112 bytes 362 bytes 5 bytes 708 bytes 3484 bytes
v2.2 No CRT SHA-256 3K Signature Fast Mid 7390 bytes 362 bytes 5 bytes 708 bytes 4664 bytes
v2.2 No CRT SHA-256 3K Signature Fast High 7390 bytes 362 bytes 5 bytes 708 bytes 9368 bytes
v2.2 n/a SHA-256 3K Verification Small n/a 7054 bytes 365 bytes 5 bytes 724 bytes 3108 bytes
v2.2 n/a SHA-256 3K Verification Fast n/a 7892 bytes 366 bytes 5 bytes 724 bytes 3108 bytes
Cryptolib STM32WL55 CM0PLUS RSA 3K CRT Sig FP.svg
Cryptolib STM32WL55 CM0PLUS RSA 3K NoCRT Sig FP.svg
Cryptolib STM32WL55 CM0PLUS RSA 3K Ver FP.svg


No categories assignedEdit