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] |
- ↑ 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 |
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 |