Cryptographic performance on STM32WB Series

Revision as of 17:18, 22 February 2023 by Registered User (Created page with "{{DISPLAYTITLE:Cryptographic performance on STM32WB Series}} This page reports measured performance when using the pure software cryptographic library algorithms with an STM32...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

This page reports measured performance when using the pure software cryptographic library algorithms with an STM32WB 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 @cfg1;0200.0016:8@[ver. 1]
  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.20.4.327/W64 for ARM
Info white.png Information
NOTE: The measurements are done using a project built with the High Speed optimization setting enabled.


2. Performance values

2.1. AES symmetric key encryption and decryption

This section provides 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 kilobytes per second.

2.1.1. Sole buffer mode

In this mode the entire encryption or decryption process, for the whole 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 @cfg1;0200.001d@ @cfg1;1311.1060@ @cfg1;1311.1061/0@ µs
AES CBC 128 bits 32 bytes Encryption @cfg2;0200.001d@ @cfg2;1311.1060@ @cfg2;1311.1061/0@ µs
AES CBC 128 bits 64 bytes Encryption @cfg1;0200.001d@ @cfg1;1311.1010@ @cfg1;1311.1011/0@ µs
AES CBC 128 bits 64 bytes Encryption @cfg2;0200.001d@ @cfg2;1311.1010@ @cfg2;1311.1011/0@ µs
AES CBC 128 bits 128 bytes Encryption @cfg1;0200.001d@ @cfg1;1311.1020@ @cfg1;1311.1021/0@ µs
AES CBC 128 bits 128 bytes Encryption @cfg2;0200.001d@ @cfg2;1311.1020@ @cfg2;1311.1021/0@ µs
AES CBC 192 bits 32 bytes Encryption @cfg1;0200.001d@ @cfg1;1311.2060@ @cfg1;1311.2061/0@ µs
AES CBC 192 bits 32 bytes Encryption @cfg2;0200.001d@ @cfg2;1311.2060@ @cfg2;1311.2061/0@ µs
AES CBC 192 bits 64 bytes Encryption @cfg1;0200.001d@ @cfg1;1311.2010@ @cfg1;1311.2011/0@ µs
AES CBC 192 bits 64 bytes Encryption @cfg2;0200.001d@ @cfg2;1311.2010@ @cfg2;1311.2011/0@ µs
AES CBC 192 bits 128 bytes Encryption @cfg1;0200.001d@ @cfg1;1311.2020@ @cfg1;1311.2021/0@ µs
AES CBC 192 bits 128 bytes Encryption @cfg2;0200.001d@ @cfg2;1311.2020@ @cfg2;1311.2021/0@ µs
AES CBC 256 bits 32 bytes Encryption @cfg1;0200.001d@ @cfg1;1311.3060@ @cfg1;1311.3061/0@ µs
AES CBC 256 bits 32 bytes Encryption @cfg2;0200.001d@ @cfg2;1311.3060@ @cfg2;1311.3061/0@ µs
AES CBC 256 bits 64 bytes Encryption @cfg1;0200.001d@ @cfg1;1311.3010@ @cfg1;1311.3011/0@ µs
AES CBC 256 bits 64 bytes Encryption @cfg2;0200.001d@ @cfg2;1311.3010@ @cfg2;1311.3011/0@ µs
AES CBC 256 bits 128 bytes Encryption @cfg1;0200.001d@ @cfg1;1311.3020@ @cfg1;1311.3021/0@ µs
AES CBC 256 bits 128 bytes Encryption @cfg2;0200.001d@ @cfg2;1311.3020@ @cfg2;1311.3021/0@ µs
AES CBC 128 bits 32 bytes Decryption @cfg1;0200.001d@ @cfg1;1411.1060@ @cfg1;1411.1061/0@ µs
AES CBC 128 bits 32 bytes Decryption @cfg2;0200.001d@ @cfg2;1411.1060@ @cfg2;1411.1061/0@ µs
AES CBC 128 bits 64 bytes Decryption @cfg1;0200.001d@ @cfg1;1411.1010@ @cfg1;1411.1011/0@ µs
AES CBC 128 bits 64 bytes Decryption @cfg2;0200.001d@ @cfg2;1411.1010@ @cfg2;1411.1011/0@ µs
AES CBC 128 bits 128 bytes Decryption @cfg1;0200.001d@ @cfg1;1411.1020@ @cfg1;1411.1021/0@ µs
AES CBC 128 bits 128 bytes Decryption @cfg2;0200.001d@ @cfg2;1411.1020@ @cfg2;1411.1021/0@ µs
AES CBC 192 bits 32 bytes Decryption @cfg1;0200.001d@ @cfg1;1411.2060@ @cfg1;1411.2061/0@ µs
AES CBC 192 bits 32 bytes Decryption @cfg2;0200.001d@ @cfg2;1411.2060@ @cfg2;1411.2061/0@ µs
AES CBC 192 bits 64 bytes Decryption @cfg1;0200.001d@ @cfg1;1411.2010@ @cfg1;1411.2011/0@ µs
AES CBC 192 bits 64 bytes Decryption @cfg2;0200.001d@ @cfg2;1411.2010@ @cfg2;1411.2011/0@ µs
AES CBC 192 bits 128 bytes Decryption @cfg1;0200.001d@ @cfg1;1411.2020@ @cfg1;1411.2021/0@ µs
AES CBC 192 bits 128 bytes Decryption @cfg2;0200.001d@ @cfg2;1411.2020@ @cfg2;1411.2021/0@ µs
AES CBC 256 bits 32 bytes Decryption @cfg1;0200.001d@ @cfg1;1411.3060@ @cfg1;1411.3061/0@ µs
AES CBC 256 bits 32 bytes Decryption @cfg2;0200.001d@ @cfg2;1411.3060@ @cfg2;1411.3061/0@ µs
AES CBC 256 bits 64 bytes Decryption @cfg1;0200.001d@ @cfg1;1411.3010@ @cfg1;1411.3011/0@ µs
AES CBC 256 bits 64 bytes Decryption @cfg2;0200.001d@ @cfg2;1411.3010@ @cfg2;1411.3011/0@ µs
AES CBC 256 bits 128 bytes Decryption @cfg1;0200.001d@ @cfg1;1411.3020@ @cfg1;1411.3021/0@ µs
AES CBC 256 bits 128 bytes Decryption @cfg2;0200.001d@ @cfg2;1411.3020@ @cfg2;1411.3021/0@ µs


The table below shows Flash and RAM usage (in bytes).

Cipher operation Configuration Code Constant data Global data Stack usage
Encryption @cfg1;0200.001d@ 2960 bytes 380 bytes 1 bytes @cfg1;1311.101b@ bytes
Encryption @cfg2;0200.001d@ 3292 bytes 1404 bytes 1 bytes @cfg2;1311.101b@ bytes
Decryption @cfg1;0200.001d@ 3056 bytes 636 bytes 1 bytes @cfg1;1411.101b@ bytes
Decryption @cfg2;0200.001d@ 3716 bytes 1660 bytes 1 bytes @cfg2;1411.101b@ bytes


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

The table below shows the number of clock cycles and bit rate (in kilobytes per second) needed to perform the described operation in small and in fast configuration.

AES mode Key size Message size Chunk size Cipher operation Configuration Cycles Bit rate
AES CBC 128 bits @cfg1;1311.1079@ bytes 128 bytes Encryption @cfg1;0200.001d@ @cfg1;1311.1070@ @cfg1;1311.1077/0@ kbyte/s
AES CBC 128 bits @cfg2;1311.1079@ bytes 128 bytes Encryption @cfg2;0200.001d@ @cfg2;1311.1070@ @cfg2;1311.1077/0@ kbyte/s
AES CBC 128 bits @cfg1;1311.1039@ bytes 512 bytes Encryption @cfg1;0200.001d@ @cfg1;1311.1030@ @cfg1;1311.1037/0@ kbyte/s
AES CBC 128 bits @cfg2;1311.1039@ bytes 512 bytes Encryption @cfg2;0200.001d@ @cfg2;1311.1030@ @cfg2;1311.1037/0@ kbyte/s
AES CBC 128 bits @cfg1;1311.1049@ bytes 1024 bytes Encryption @cfg1;0200.001d@ @cfg1;1311.1040@ @cfg1;1311.1047/0@ kbyte/s
AES CBC 128 bits @cfg2;1311.1049@ bytes 1024 bytes Encryption @cfg2;0200.001d@ @cfg2;1311.1040@ @cfg2;1311.1047/0@ kbyte/s
AES CBC 128 bits @cfg1;1311.1059@ bytes 2048 bytes Encryption @cfg1;0200.001d@ @cfg1;1311.1050@ @cfg1;1311.1057/0@ kbyte/s
AES CBC 128 bits @cfg2;1311.1059@ bytes 2048 bytes Encryption @cfg2;0200.001d@ @cfg2;1311.1050@ @cfg2;1311.1057/0@ kbyte/s
AES CBC 192 bits @cfg1;1311.2079@ bytes 128 bytes Encryption @cfg1;0200.001d@ @cfg1;1311.2070@ @cfg1;1311.2077/0@ kbyte/s
AES CBC 192 bits @cfg2;1311.2079@ bytes 128 bytes Encryption @cfg2;0200.001d@ @cfg2;1311.2070@ @cfg2;1311.2077/0@ kbyte/s
AES CBC 192 bits @cfg1;1311.2039@ bytes 512 bytes Encryption @cfg1;0200.001d@ @cfg1;1311.2030@ @cfg1;1311.2037/0@ kbyte/s
AES CBC 192 bits @cfg2;1311.2039@ bytes 512 bytes Encryption @cfg2;0200.001d@ @cfg2;1311.2030@ @cfg2;1311.2037/0@ kbyte/s
AES CBC 192 bits @cfg1;1311.2049@ bytes 1024 bytes Encryption @cfg1;0200.001d@ @cfg1;1311.2040@ @cfg1;1311.2047/0@ kbyte/s
AES CBC 192 bits @cfg2;1311.2049@ bytes 1024 bytes Encryption @cfg2;0200.001d@ @cfg2;1311.2040@ @cfg2;1311.2047/0@ kbyte/s
AES CBC 192 bits @cfg1;1311.2059@ bytes 2048 bytes Encryption @cfg1;0200.001d@ @cfg1;1311.2050@ @cfg1;1311.2057/0@ kbyte/s
AES CBC 192 bits @cfg2;1311.2059@ bytes 2048 bytes Encryption @cfg2;0200.001d@ @cfg2;1311.2050@ @cfg2;1311.2057/0@ kbyte/s
AES CBC 256 bits @cfg1;1311.3079@ bytes 128 bytes Encryption @cfg1;0200.001d@ @cfg1;1311.3070@ @cfg1;1311.3077/0@ kbyte/s
AES CBC 256 bits @cfg2;1311.3079@ bytes 128 bytes Encryption @cfg2;0200.001d@ @cfg2;1311.3070@ @cfg2;1311.3077/0@ kbyte/s
AES CBC 256 bits @cfg1;1311.3039@ bytes 512 bytes Encryption @cfg1;0200.001d@ @cfg1;1311.3030@ @cfg1;1311.3037/0@ kbyte/s
AES CBC 256 bits @cfg2;1311.3039@ bytes 512 bytes Encryption @cfg2;0200.001d@ @cfg2;1311.3030@ @cfg2;1311.3037/0@ kbyte/s
AES CBC 256 bits @cfg1;1311.3049@ bytes 1024 bytes Encryption @cfg1;0200.001d@ @cfg1;1311.3040@ @cfg1;1311.3047/0@ kbyte/s
AES CBC 256 bits @cfg2;1311.3049@ bytes 1024 bytes Encryption @cfg2;0200.001d@ @cfg2;1311.3040@ @cfg2;1311.3047/0@ kbyte/s
AES CBC 256 bits @cfg1;1311.3059@ bytes 2048 bytes Encryption @cfg1;0200.001d@ @cfg1;1311.3050@ @cfg1;1311.3057/0@ kbyte/s
AES CBC 256 bits @cfg2;1311.3059@ bytes 2048 bytes Encryption @cfg2;0200.001d@ @cfg2;1311.3050@ @cfg2;1311.3057/0@ kbyte/s
AES CBC 128 bits @cfg1;1411.1079@ bytes 128 bytes Decryption @cfg1;0200.001d@ @cfg1;1411.1070@ @cfg1;1411.1077/0@ kbyte/s
AES CBC 128 bits @cfg2;1411.1079@ bytes 128 bytes Decryption @cfg2;0200.001d@ @cfg2;1411.1070@ @cfg2;1411.1077/0@ kbyte/s
AES CBC 128 bits @cfg1;1411.1039@ bytes 512 bytes Decryption @cfg1;0200.001d@ @cfg1;1411.1030@ @cfg1;1411.1037/0@ kbyte/s
AES CBC 128 bits @cfg2;1411.1039@ bytes 512 bytes Decryption @cfg2;0200.001d@ @cfg2;1411.1030@ @cfg2;1411.1037/0@ kbyte/s
AES CBC 128 bits @cfg1;1411.1049@ bytes 1024 bytes Decryption @cfg1;0200.001d@ @cfg1;1411.1040@ @cfg1;1411.1047/0@ kbyte/s
AES CBC 128 bits @cfg2;1411.1049@ bytes 1024 bytes Decryption @cfg2;0200.001d@ @cfg2;1411.1040@ @cfg2;1411.1047/0@ kbyte/s
AES CBC 128 bits @cfg1;1411.1059@ bytes 2048 bytes Decryption @cfg1;0200.001d@ @cfg1;1411.1050@ @cfg1;1411.1057/0@ kbyte/s
AES CBC 128 bits @cfg2;1411.1059@ bytes 2048 bytes Decryption @cfg2;0200.001d@ @cfg2;1411.1050@ @cfg2;1411.1057/0@ kbyte/s
AES CBC 192 bits @cfg1;1411.2079@ bytes 128 bytes Decryption @cfg1;0200.001d@ @cfg1;1411.2070@ @cfg1;1411.2077/0@ kbyte/s
AES CBC 192 bits @cfg2;1411.2079@ bytes 128 bytes Decryption @cfg2;0200.001d@ @cfg2;1411.2070@ @cfg2;1411.2077/0@ kbyte/s
AES CBC 192 bits @cfg1;1411.2039@ bytes 512 bytes Decryption @cfg1;0200.001d@ @cfg1;1411.2030@ @cfg1;1411.2037/0@ kbyte/s
AES CBC 192 bits @cfg2;1411.2039@ bytes 512 bytes Decryption @cfg2;0200.001d@ @cfg2;1411.2030@ @cfg2;1411.2037/0@ kbyte/s
AES CBC 192 bits @cfg1;1411.2049@ bytes 1024 bytes Decryption @cfg1;0200.001d@ @cfg1;1411.2040@ @cfg1;1411.2047/0@ kbyte/s
AES CBC 192 bits @cfg2;1411.2049@ bytes 1024 bytes Decryption @cfg2;0200.001d@ @cfg2;1411.2040@ @cfg2;1411.2047/0@ kbyte/s
AES CBC 192 bits @cfg1;1411.2059@ bytes 2048 bytes Decryption @cfg1;0200.001d@ @cfg1;1411.2050@ @cfg1;1411.2057/0@ kbyte/s
AES CBC 192 bits @cfg2;1411.2059@ bytes 2048 bytes Decryption @cfg2;0200.001d@ @cfg2;1411.2050@ @cfg2;1411.2057/0@ kbyte/s
AES CBC 256 bits @cfg1;1411.3079@ bytes 128 bytes Decryption @cfg1;0200.001d@ @cfg1;1411.3070@ @cfg1;1411.3077/0@ kbyte/s
AES CBC 256 bits @cfg2;1411.3079@ bytes 128 bytes Decryption @cfg2;0200.001d@ @cfg2;1411.3070@ @cfg2;1411.3077/0@ kbyte/s
AES CBC 256 bits 8000 bytes 512 bytes Decryption @cfg1;0200.001d@ 2 435 192 328 kbyte/s
AES CBC 256 bits 8000 bytes 512 bytes Decryption @cfg2;0200.001d@ 883 808 905 kbyte/s
AES CBC 256 bits @cfg1;1411.3049@ bytes 1024 bytes Decryption @cfg1;0200.001d@ @cfg1;1411.3040@ @cfg1;1411.3047/0@ kbyte/s
AES CBC 256 bits @cfg2;1411.3049@ bytes 1024 bytes Decryption @cfg2;0200.001d@ @cfg2;1411.3040@ @cfg2;1411.3047/0@ kbyte/s
AES CBC 256 bits @cfg1;1411.3059@ bytes 2048 bytes Decryption @cfg1;0200.001d@ @cfg1;1411.3050@ @cfg1;1411.3057/0@ kbyte/s
AES CBC 256 bits @cfg2;1411.3059@ bytes 2048 bytes Decryption @cfg2;0200.001d@ @cfg2;1411.3050@ @cfg2;1411.3057/0@ kbyte/s


The table below shows Flash and RAM usage (in bytes).

Cipher operation Configuration Code Constant data Global data Stack usage
Encryption @cfg1;0200.001d@ 2852 bytes 372 bytes 1 bytes @cfg1;1311.103b@ bytes
Encryption @cfg2;0200.001d@ 3184 bytes 1396 bytes 1 bytes @cfg2;1311.103b@ bytes
Decryption @cfg1;0200.001d@ 2948 bytes 628 bytes 1 bytes @cfg1;1411.103b@ bytes
Decryption @cfg2;0200.001d@ 3608 bytes 1652 bytes 1 bytes @cfg2;1411.103b@ 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. 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, 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 described operation.

HASH mode Buffer size Cycles Time
SHA256 32 bytes @cfg1;2552.0070@ @cfg1;2552.0071/0@ µs
SHA256 64 bytes @cfg1;2552.0010@ @cfg1;2552.0011/0@ µs
SHA256 128 bytes @cfg1;2552.0020@ @cfg1;2552.0021/0@ µs
SHA384 32 bytes @cfg1;2553.0070@ @cfg1;2553.0071/0@ µs
SHA384 64 bytes @cfg1;2553.0010@ @cfg1;2553.0011/0@ µs
SHA384 128 bytes @cfg1;2553.0020@ @cfg1;2553.0021/0@ µs


The table below shows Flash and RAM usage (in bytes).

HASH mode Code Constant data Global data Stack usage
SHA256 1780 296 bytes 1 bytes @cfg1;2552.000b@ bytes
SHA384 3012 744 bytes 1 bytes @cfg1;2553.000b@ bytes


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

The table below shows the number of clock cycles and bit rate (in kilobytes per second) needed to perform described operation.

HASH mode Message size Chunk size Cycles Bit rate
SHA256 @cfg1;2552.0089@ bytes 128 bytes @cfg1;2552.0080@ @cfg1;2552.0087/0@ kbyte/s
SHA256 @cfg1;2552.0039@ bytes 512 bytes @cfg1;2552.0030@ @cfg1;2552.0037/0@ kbyte/s
SHA256 @cfg1;2552.0049@ bytes 1024 bytes @cfg1;2552.0040@ @cfg1;2552.0047/0@ kbyte/s
SHA256 @cfg1;2552.0059@ bytes 2048 bytes @cfg1;2552.0050@ @cfg1;2552.0057/0@ kbyte/s
SHA384 @cfg1;2553.0089@ bytes 128 bytes @cfg1;2553.0080@ @cfg1;2553.0087/0@ kbyte/s
SHA384 8000 bytes 512 bytes 837 472 955 kbyte/s
SHA384 @cfg1;2553.0049@ bytes 1024 bytes @cfg1;2553.0040@ @cfg1;2553.0047/0@ kbyte/s
SHA384 @cfg1;2553.0059@ bytes 2048 bytes @cfg1;2553.0050@ @cfg1;2553.0057/0@ kbyte/s


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

HASH mode Cycles Time
SHA256 @cfg1;2552.0060@ @cfg1;2552.0061/0@ µs
SHA384 @cfg1;2553.0060@ @cfg1;2553.0061/0@ µs

The table below shows Flash and RAM usage (in bytes).

HASH mode Code Constant data Global data Stack usage
SHA256 1788 bytes 288 bytes 1 bytes @cfg1;2552.003b@ bytes
SHA384 3020 bytes 736 bytes 1 bytes 828 bytes


2.3. ECDSA signature and verification

In this section we provide the performance results for ECDSA signature and verification.

The table below shows the number of 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 @cfg1;0200.004d@ @cfg1;0202.008e@ @cfg1;57e2.0010@ @cfg1;57e2.0011/0@ ms
SECP256R1 Signature @cfg5;0200.004d@ @cfg5;0202.008e@ @cfg5;57e2.0010@ @cfg5;57e2.0011/0@ ms
SECP256R1 Signature @cfg6;0200.004d@ @cfg6;0202.008e@ @cfg6;57e2.0010@ @cfg6;57e2.0011/0@ ms
SECP256R1 Signature @cfg2;0200.004d@ @cfg2;0202.008e@ @cfg2;57e2.0010@ @cfg2;57e2.0011/0@ ms
SECP256R1 Verification @cfg1;0200.004d@ @cfg1;0202.008e@ 6 969 136 69 ms
SECP256R1 Verification @cfg5;0200.004d@ @cfg5;0202.008e@ 6 205 952 62 ms
SECP256R1 Verification @cfg6;0200.004d@ @cfg6;0202.008e@ 4 607 088 46 ms
SECP256R1 Verification @cfg2;0200.004d@ @cfg2;0202.008e@ 4 139 208 41 ms
SECP384R1 Signature @cfg1;0200.005d@ @cfg1;0203.008e@ @cfg1;57e3.0010@ @cfg1;57e3.0011/0@ ms
SECP384R1 Signature @cfg5;0200.005d@ @cfg5;0203.008e@ @cfg5;57e3.0010@ @cfg5;57e3.0011/0@ ms
SECP384R1 Signature @cfg6;0200.005d@ @cfg6;0203.008e@ @cfg6;57e3.0010@ @cfg6;57e3.0011/0@ ms
SECP384R1 Signature @cfg2;0200.005d@ @cfg2;0203.008e@ @cfg2;57e3.0010@ @cfg2;57e3.0011/0@ ms
SECP384R1 Verification @cfg1;0200.005d@ @cfg1;0203.008e@ 19 648 240 196 ms
SECP384R1 Verification @cfg5;0200.005d@ @cfg5;0203.008e@ 17 122 008 171 ms
SECP384R1 Verification @cfg6;0200.005d@ @cfg6;0203.008e@ 16 782 784 167 ms
SECP384R1 Verification @cfg2;0200.005d@ @cfg2;0203.008e@ 14 637 064 146 ms


The 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 @cfg1;0200.004d@ @cfg1;0202.008e@ 11 636 bytes 1184 bytes 1 bytes @cfg1;57e2.001b@ bytes @cfg1;57e2.001c@ bytes
SECP256R1 Signature @cfg5;0200.004d@ @cfg5;0202.008e@ 11 636 bytes 1568 bytes 1 bytes @cfg5;57e2.001b@ bytes @cfg5;57e2.001c@ bytes
SECP256R1 Signature @cfg6;0200.004d@ @cfg6;0202.008e@ 12 946 bytes 1184 bytes 1 bytes @cfg6;57e2.001b@ bytes @cfg6;57e2.001c@ bytes
SECP256R1 Signature @cfg2;0200.004d@ @cfg2;0202.008e@ 12 946 bytes 1568 bytes 1 bytes @cfg2;57e2.001b@ bytes @cfg2;57e2.001c@ bytes
SECP256R1 Verification @cfg1;0200.004d@ @cfg1;0202.008e@ 12 158 bytes 1200 bytes 1 bytes 424 bytes 856 bytes
SECP256R1 Verification @cfg5;0200.004d@ @cfg5;0202.008e@ 12 158 bytes 1584 bytes 1 bytes 424 bytes 1648 bytes
SECP256R1 Verification @cfg6;0200.004d@ @cfg6;0202.008e@ 13 468 bytes 1200 bytes 1 bytes 428 bytes 856 bytes
SECP256R1 Verification @cfg2;0200.004d@ @cfg2;0202.008e@ 13 468 bytes 1584 bytes 1 bytes 428 bytes 1648 bytes
SECP384R1 Signature @cfg1;0200.005d@ @cfg1;0203.008e@ 11 636 bytes 1664 bytes 1 bytes @cfg1;57e3.001b@ bytes @cfg1;57e3.001c@ bytes
SECP384R1 Signature @cfg5;0200.005d@ @cfg5;0203.008e@ 11 636 bytes 2240 bytes 1 bytes @cfg5;57e3.001b@ bytes @cfg5;57e3.001c@ bytes
SECP384R1 Signature @cfg6;0200.005d@ @cfg6;0203.008e@ 12 006 bytes 1664 bytes 1 bytes @cfg6;57e3.001b@ bytes @cfg6;57e3.001c@ bytes
SECP384R1 Signature @cfg2;0200.005d@ @cfg2;0203.008e@ 12 006 bytes 2240 bytes 1 bytes @cfg2;57e3.001b@ bytes @cfg2;57e3.001c@ bytes
SECP384R1 Verification @cfg1;0200.005d@ @cfg1;0203.008e@ 12 158 bytes 1680 bytes 1 bytes 424 bytes 1192 bytes
SECP384R1 Verification @cfg5;0200.005d@ @cfg5;0203.008e@ 12 158 bytes 2256 bytes 1 bytes 424 bytes 2272 bytes
SECP384R1 Verification @cfg6;0200.005d@ @cfg6;0203.008e@ 12 528 bytes 1680 bytes 1 bytes 440 bytes 1192 bytes
SECP384R1 Verification @cfg2;0200.005d@ @cfg2;0203.008e@ 12 528 bytes 2256 bytes 1 bytes 440 bytes 2272 bytes


2.4. EdDSA signature and verification

In this section we provide the performance results for EdDSA signature and verification.

The table below shows the number of 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 @cfg1;57f5.0009@ bytes Signature @cfg1;0200.004d@ @cfg1;0205.008e@ @cfg1;57f5.0000@ @cfg1;57f5.0001/0@ ms
Ed25519 @cfg5;57f5.0009@ bytes Signature @cfg5;0200.004d@ @cfg5;0205.008e@ @cfg5;57f5.0000@ @cfg5;57f5.0001/0@ ms
Ed25519 @cfg6;57f5.0009@ bytes Signature @cfg6;0200.004d@ @cfg6;0205.008e@ @cfg6;57f5.0000@ @cfg6;57f5.0001/0@ ms
Ed25519 @cfg2;57f5.0009@ bytes Signature @cfg2;0200.004d@ @cfg2;0205.008e@ @cfg2;57f5.0000@ @cfg2;57f5.0001/0@ ms
Ed25519 1023 bytes Verification @cfg1;0200.004d@ @cfg1;0205.008e@ 6 773 776 67 ms
Ed25519 1023 bytes Verification @cfg5;0200.004d@ @cfg5;0205.008e@ 5 947 424 59 ms
Ed25519 1023 bytes Verification @cfg6;0200.004d@ @cfg6;0205.008e@ 4 601 792 46 ms
Ed25519 1023 bytes Verification @cfg2;0200.004d@ @cfg2;0205.008e@ 4 073 800 40 ms


The 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 @cfg1;57f5.0009@ bytes Signature @cfg1;0200.004d@ @cfg1;0205.008e@ 14 100 bytes 1744 bytes 1 bytes @cfg1;57f5.000b@ bytes @cfg1;57f5.000c@ bytes
Ed25519 @cfg5;57f5.0009@ bytes Signature @cfg5;0200.004d@ @cfg5;0205.008e@ 14 506 bytes 2896 bytes 1 bytes @cfg5;57f5.000b@ bytes @cfg5;57f5.000c@ bytes
Ed25519 @cfg6;57f5.0009@ bytes Signature @cfg6;0200.004d@ @cfg6;0205.008e@ 15 410 bytes 1744 bytes 1 bytes @cfg6;57f5.000b@ bytes @cfg6;57f5.000c@ bytes
Ed25519 @cfg2;57f5.0009@ bytes Signature @cfg2;0200.004d@ @cfg2;0205.008e@ 15 816 bytes 2896 bytes 1 bytes @cfg2;57f5.000b@ bytes @cfg2;57f5.000c@ bytes
Ed25519 1023 bytes Verification @cfg1;0200.004d@ @cfg1;0205.008e@ 14 186 bytes 1748 bytes 1 bytes 1244 bytes 1152 bytes
Ed25519 1023 bytes Verification @cfg5;0200.004d@ @cfg5;0205.008e@ 14 592 bytes 2900 bytes 1 bytes 1244 bytes 1992 bytes
Ed25519 1023 bytes Verification @cfg6;0200.004d@ @cfg6;0205.008e@ 15 496 bytes 1748 bytes 1 bytes 1244 bytes 1152 bytes
Ed25519 1023 bytes Verification @cfg2;0200.004d@ @cfg2;0205.008e@ 15 902 bytes 2900 bytes 1 bytes 1244 bytes 1992 bytes


2.5. RSA signature and verification

In this section we provide the performance results for RSA signature and verification.

The table below shows the number of 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 @cfg1;0200.003d@ @cfg1;0200.007e@ @cfg1;47c0.6010@ @cfg1;47c0.6011/0@ ms
v2.2 CRT SHA-256 3K Signature @cfg3;0200.003d@ @cfg3;0200.007e@ @cfg3;47c0.6010@ @cfg3;47c0.6011/0@ ms
v2.2 CRT SHA-256 3K Signature @cfg5;0200.003d@ @cfg5;0200.007e@ @cfg5;47c0.6010@ @cfg5;47c0.6011/0@ ms
v2.2 CRT SHA-256 3K Signature @cfg6;0200.003d@ @cfg6;0200.007e@ @cfg6;47c0.6010@ @cfg6;47c0.6011/0@ ms
v2.2 CRT SHA-256 3K Signature @cfg7;0200.003d@ @cfg7;0200.007e@ @cfg7;47c0.6010@ @cfg7;47c0.6011/0@ ms
v2.2 CRT SHA-256 3K Signature @cfg2;0200.003d@ @cfg2;0200.007e@ @cfg2;47c0.6010@ @cfg2;47c0.6011/0@ ms
v2.2 No CRT SHA-256 3K Signature @cfg1;0200.003d@ @cfg1;0200.007e@ 763 430 176 7634 ms
v2.2 No CRT SHA-256 3K Signature @cfg3;0200.003d@ @cfg3;0200.007e@ 573 371 960 5733 ms
v2.2 No CRT SHA-256 3K Signature @cfg5;0200.003d@ @cfg5;0200.007e@ 479 615 800 4796 ms
v2.2 No CRT SHA-256 3K Signature @cfg6;0200.003d@ @cfg6;0200.007e@ 605 435 960 6054 ms
v2.2 No CRT SHA-256 3K Signature @cfg7;0200.003d@ @cfg7;0200.007e@ 454 796 848 4547 ms
v2.2 No CRT SHA-256 3K Signature @cfg2;0200.003d@ @cfg2;0200.007e@ 380 469 128 3804 ms
v2.2 n/a SHA-256 3K Verification @cfg1;0200.003d@ n/a 3 799 192 37 ms
v2.2 n/a SHA-256 3K Verification @cfg2;0200.003d@ n/a 3 285 024 32 ms


The 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 @cfg1;0200.003d@ @cfg1;0200.007e@ 6986 bytes 372 bytes 5 bytes @cfg1;47c0.601b@ bytes @cfg1;47c0.601c@ bytes
v2.2 CRT SHA-256 3K Signature @cfg3;0200.003d@ @cfg3;0200.007e@ 7234 bytes 372 bytes 5 bytes @cfg3;47c0.601b@ bytes @cfg3;47c0.601c@ bytes
v2.2 CRT SHA-256 3K Signature @cfg5;0200.003d@ @cfg5;0200.007e@ 7234 bytes 372 bytes 5 bytes @cfg5;47c0.601b@ bytes @cfg5;47c0.601c@ bytes
v2.2 CRT SHA-256 3K Signature @cfg6;0200.003d@ @cfg6;0200.007e@ 7356 bytes 372 bytes 5 bytes @cfg6;47c0.601b@ bytes @cfg6;47c0.601c@ bytes
v2.2 CRT SHA-256 3K Signature @cfg7;0200.003d@ @cfg7;0200.007e@ 7604 bytes 372 bytes 5 bytes @cfg7;47c0.601b@ bytes @cfg7;47c0.601c@ bytes
v2.2 CRT SHA-256 3K Signature @cfg2;0200.003d@ @cfg2;0200.007e@ 7604 bytes 372 bytes 5 bytes @cfg2;47c0.601b@ bytes @cfg2;47c0.601c@ bytes
v2.2 No CRT SHA-256 3K Signature @cfg1;0200.003d@ @cfg1;0200.007e@ 6016 bytes 364 bytes 5 bytes 700 bytes 3484 bytes
v2.2 No CRT SHA-256 3K Signature @cfg3;0200.003d@ @cfg3;0200.007e@ 6264 bytes 364 bytes 5 bytes 700 bytes 4664 bytes
v2.2 No CRT SHA-256 3K Signature @cfg5;0200.003d@ @cfg5;0200.007e@ 6264 bytes 364 bytes 5 bytes 700 bytes 9368 bytes
v2.2 No CRT SHA-256 3K Signature @cfg6;0200.003d@ @cfg6;0200.007e@ 6386 bytes 364 bytes 5 bytes 700 bytes 3484 bytes
v2.2 No CRT SHA-256 3K Signature @cfg7;0200.003d@ @cfg7;0200.007e@ 6634 bytes 364 bytes 5 bytes 700 bytes 4664 bytes
v2.2 No CRT SHA-256 3K Signature @cfg2;0200.003d@ @cfg2;0200.007e@ 6634 bytes 364 bytes 5 bytes 700 bytes 9368 bytes
v2.2 n/a SHA-256 3K Verification @cfg1;0200.003d@ n/a 6762 bytes 368 bytes 5 bytes 716 bytes 3108 bytes
v2.2 n/a SHA-256 3K Verification @cfg2;0200.003d@ n/a 7132 bytes 368 bytes 5 bytes 716 bytes 3108 bytes