Skip navigation

Performance

emSSL is built for high performance with target independent code. It is completely written in ANSI C and can be used in any embedded application, as well as in PC applications.

Performance

The following results show the connection time of a Cortex-M4, running at 200MHz from internal flash memory, using internal RAM.

Performance Test

The times are measured for the negotiation phase, connecting to www.segger.com and www.google.com with the key exchange algorithms (marked in bold). Cipher Suite is the used cipher suite for this connection which is supported by emSSL and the server. SSL time is the time required by emSSL to fully agree the session keys for a secure connection — it excludes transmission and reception times over the IP transport which are highly variable.

Cipher SuiteKey algorithmSSL time [ms]1
C008 TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA ECDSA278 ms
C009 TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA ECDSA274 ms
C023 TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256 ECDSA273 ms
C0AC TLS_ECDHE_ECDSA_WITH_AES_128_CCM ECDSA277 ms
C0AE TLS_ECDHE_ECDSA_WITH_AES_128_CCM_8 ECDSA276 ms
C02B TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 ECDSA272 ms
C00A TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA ECDSA276 ms
C024 TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384 ECDSA279 ms
C0AD TLS_ECDHE_ECDSA_WITH_AES_256_CCM ECDSA275 ms
C0AF TLS_ECDHE_ECDSA_WITH_AES_256_CCM_8 ECDSA277 ms
C02C TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 ECDSA277 ms
C048 TLS_ECDHE_ECDSA_WITH_ARIA_128_CBC_SHA256 ECDSA280 ms
C05C TLS_ECDHE_ECDSA_WITH_ARIA_128_GCM_SHA256 ECDSA272 ms
C049 TLS_ECDHE_ECDSA_WITH_ARIA_256_CBC_SHA384 ECDSA286 ms
C05D TLS_ECDHE_ECDSA_WITH_ARIA_256_GCM_SHA384 ECDSA276 ms
C072 TLS_ECDHE_ECDSA_WITH_CAMELLIA_128_CBC_SHA256 ECDSA280 ms
C086 TLS_ECDHE_ECDSA_WITH_CAMELLIA_128_GCM_SHA256 ECDSA272 ms
C073 TLS_ECDHE_ECDSA_WITH_CAMELLIA_256_CBC_SHA384 ECDSA277 ms
C087 TLS_ECDHE_ECDSA_WITH_CAMELLIA_256_GCM_SHA384 ECDSA283 ms
C007 TLS_ECDHE_ECDSA_WITH_RC4_128_SHA ECDSA293 ms
CCA9 TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256 ECDSA269 ms
C012 TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA RSA197 ms
C013 TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA RSA195 ms
C027 TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 RSA205 ms
C02F TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 RSA198 ms
C014 TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA RSA192 ms
C028 TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384 RSA202 ms
C030 TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 RSA196 ms
C04C TLS_ECDHE_RSA_WITH_ARIA_128_CBC_SHA256 RSA194 ms
C060 TLS_ECDHE_RSA_WITH_ARIA_128_GCM_SHA256 RSA202 ms
C04D TLS_ECDHE_RSA_WITH_ARIA_256_CBC_SHA384 RSA200 ms
C061 TLS_ECDHE_RSA_WITH_ARIA_256_GCM_SHA384 RSA192 ms
C076 TLS_ECDHE_RSA_WITH_CAMELLIA_128_CBC_SHA256 RSA186 ms
C08A TLS_ECDHE_RSA_WITH_CAMELLIA_128_GCM_SHA256 RSA191 ms
C077 TLS_ECDHE_RSA_WITH_CAMELLIA_256_CBC_SHA384 RSA200 ms
C08B TLS_ECDHE_RSA_WITH_CAMELLIA_256_GCM_SHA384 RSA194 ms
C011 TLS_ECDHE_RSA_WITH_RC4_128_SHA RSA200 ms
CCA8 TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256 RSA200 ms
C002 TLS_ECDH_ECDSA_WITH_RC4_128_SHA ECDSA186 ms
C003 TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA ECDSA181 ms
C004 TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA ECDSA186 ms
C025 TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256 ECDSA193 ms
C02D TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256 ECDSA191 ms
C005 TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA ECDSA184 ms
C026 TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384 ECDSA194 ms
C02E TLS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384 ECDSA186 ms
C04A TLS_ECDH_ECDSA_WITH_ARIA_128_CBC_SHA256 ECDSA195 ms
C05E TLS_ECDH_ECDSA_WITH_ARIA_128_GCM_SHA256 ECDSA194 ms
C04B TLS_ECDH_ECDSA_WITH_ARIA_256_CBC_SHA384 ECDSA187 ms
C05F TLS_ECDH_ECDSA_WITH_ARIA_256_GCM_SHA384 ECDSA181 ms
C074 TLS_ECDH_ECDSA_WITH_CAMELLIA_128_CBC_SHA256 ECDSA183 ms
C088 TLS_ECDH_ECDSA_WITH_CAMELLIA_128_GCM_SHA256 ECDSA184 ms
C075 TLS_ECDH_ECDSA_WITH_CAMELLIA_256_CBC_SHA384 ECDSA181 ms
C089 TLS_ECDH_ECDSA_WITH_CAMELLIA_256_GCM_SHA384 ECDSA178 ms
C00D TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA RSA194 ms
C00E TLS_ECDH_RSA_WITH_AES_128_CBC_SHA RSA186 ms
C029 TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256 RSA182 ms
C031 TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256 RSA185 ms
C00F TLS_ECDH_RSA_WITH_AES_256_CBC_SHA RSA189 ms
C02A TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384 RSA191 ms
C032 TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384 RSA188 ms
C04E TLS_ECDH_RSA_WITH_ARIA_128_CBC_SHA256 RSA187 ms
C062 TLS_ECDH_RSA_WITH_ARIA_128_GCM_SHA256 RSA182 ms
C04F TLS_ECDH_RSA_WITH_ARIA_256_CBC_SHA384 RSA190 ms
C063 TLS_ECDH_RSA_WITH_ARIA_256_GCM_SHA384 RSA185 ms
C078 TLS_ECDH_RSA_WITH_CAMELLIA_128_CBC_SHA256 RSA187 ms
C08C TLS_ECDH_RSA_WITH_CAMELLIA_128_GCM_SHA256 RSA192 ms
C079 TLS_ECDH_RSA_WITH_CAMELLIA_256_CBC_SHA384 RSA192 ms
C08D TLS_ECDH_RSA_WITH_CAMELLIA_256_GCM_SHA384 RSA186 ms
C00C TLS_ECDH_RSA_WITH_RC4_128_SHA RSA185 ms
000A TLS_RSA_WITH_3DES_EDE_CBC_SHA RSA 13 ms
0096 TLS_RSA_WITH_SEED_CBC_SHA RSA 11 ms
002F TLS_RSA_WITH_AES_128_CBC_SHA RSA 12 ms
003C TLS_RSA_WITH_AES_128_CBC_SHA256 RSA 12 ms
C09C TLS_RSA_WITH_AES_128_CCM RSA 12 ms
009C TLS_RSA_WITH_AES_128_GCM_SHA256 RSA 12 ms
0035 TLS_RSA_WITH_AES_256_CBC_SHA RSA 12 ms
003D TLS_RSA_WITH_AES_256_CBC_SHA256 RSA 12 ms
C09D TLS_RSA_WITH_AES_256_CCM RSA 13 ms
009D TLS_RSA_WITH_AES_256_GCM_SHA384 RSA 15 ms
0041 TLS_RSA_WITH_CAMELLIA_128_CBC_SHA RSA 12 ms
0084 TLS_RSA_WITH_CAMELLIA_256_CBC_SHA RSA 12 ms
00BA TLS_RSA_WITH_CAMELLIA_128_CBC_SHA256 RSA 12 ms
00C0 TLS_RSA_WITH_CAMELLIA_256_CBC_SHA256 RSA 12 ms
C07A TLS_RSA_WITH_CAMELLIA_128_GCM_SHA256 RSA 12 ms
C07B TLS_RSA_WITH_CAMELLIA_256_GCM_SHA384 RSA 15 ms
C03C TLS_RSA_WITH_ARIA_128_CBC_SHA256 RSA 13 ms
C03D TLS_RSA_WITH_ARIA_256_CBC_SHA384 RSA 18 ms
C050 TLS_RSA_WITH_ARIA_128_GCM_SHA256 RSA 14 ms
C051 TLS_RSA_WITH_ARIA_256_GCM_SHA384 RSA 16 ms
0004 TLS_RSA_WITH_RC4_128_MD5 RSA 13 ms
0005 TLS_RSA_WITH_RC4_128_SHA RSA 12 ms

1 Results may vary depending on the compiler, compiler settings and memory timings of the microcontroller used.

Performance Test – emSSL Server

The times are measured for the negotiation phase, using the scan tool that is part of the emSSL package. The server side is running on an STM32F7 using the emWeb web server and emSSL. The scan tool verifies and measures the key exchange algorithms. Cipher Suite is the used cipher suite for this connection which is supported by the emSSL server. SSL time is the time required by emSSL to fully agree the session keys for a secure connection — it excludes transmission and reception times over the IP transport which are highly variable.

Cipher SuiteKey algorithmSSL time [ms]1
C008 TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA ECDSA272 ms
C009 TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA ECDSA276 ms
C023 TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256 ECDSA271 ms
C0AC TLS_ECDHE_ECDSA_WITH_AES_128_CCM ECDSA276 ms
C0AE TLS_ECDHE_ECDSA_WITH_AES_128_CCM_8 ECDSA266 ms
C02B TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 ECDSA272 ms
C00A TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA ECDSA271 ms
C024 TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384 ECDSA274 ms
C0AD TLS_ECDHE_ECDSA_WITH_AES_256_CCM ECDSA268 ms
C0AF TLS_ECDHE_ECDSA_WITH_AES_256_CCM_8 ECDSA273 ms
C02C TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 ECDSA275 ms
C048 TLS_ECDHE_ECDSA_WITH_ARIA_128_CBC_SHA256 ECDSA268 ms
C05C TLS_ECDHE_ECDSA_WITH_ARIA_128_GCM_SHA256 ECDSA273 ms
C049 TLS_ECDHE_ECDSA_WITH_ARIA_256_CBC_SHA384 ECDSA275 ms
C05D TLS_ECDHE_ECDSA_WITH_ARIA_256_GCM_SHA384 ECDSA269 ms
C072 TLS_ECDHE_ECDSA_WITH_CAMELLIA_128_CBC_SHA256 ECDSA274 ms
C086 TLS_ECDHE_ECDSA_WITH_CAMELLIA_128_GCM_SHA256 ECDSA270 ms
C073 TLS_ECDHE_ECDSA_WITH_CAMELLIA_256_CBC_SHA384 ECDSA281 ms
C087 TLS_ECDHE_ECDSA_WITH_CAMELLIA_256_GCM_SHA384 ECDSA265 ms
C007 TLS_ECDHE_ECDSA_WITH_RC4_128_SHA ECDSA266 ms
CCA9 TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256 ECDSA277 ms
C012 TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA RSA616 ms
C013 TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA RSA613 ms
C027 TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 RSA610 ms
C02F TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 RSA608 ms
C014 TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA RSA611 ms
C028 TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384 RSA619 ms
C030 TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 RSA614 ms
C04C TLS_ECDHE_RSA_WITH_ARIA_128_CBC_SHA256 RSA617 ms
C060 TLS_ECDHE_RSA_WITH_ARIA_128_GCM_SHA256 RSA610 ms
C04D TLS_ECDHE_RSA_WITH_ARIA_256_CBC_SHA384 RSA609 ms
C061 TLS_ECDHE_RSA_WITH_ARIA_256_GCM_SHA384 RSA614 ms
C076 TLS_ECDHE_RSA_WITH_CAMELLIA_128_CBC_SHA256 RSA607 ms
C08A TLS_ECDHE_RSA_WITH_CAMELLIA_128_GCM_SHA256 RSA616 ms
C077 TLS_ECDHE_RSA_WITH_CAMELLIA_256_CBC_SHA384 RSA613 ms
C08B TLS_ECDHE_RSA_WITH_CAMELLIA_256_GCM_SHA384 RSA616 ms
C011 TLS_ECDHE_RSA_WITH_RC4_128_SHA RSA611 ms
CCA8 TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256 RSA614 ms
C002 TLS_ECDH_ECDSA_WITH_RC4_128_SHA ECDSA 90 ms
C003 TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA ECDSA 90 ms
C004 TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA ECDSA 91 ms
C025 TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256 ECDSA 91 ms
C02D TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256 ECDSA 91 ms
C005 TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA ECDSA 90 ms
C026 TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384 ECDSA 94 ms
C02E TLS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384 ECDSA 94 ms
C04A TLS_ECDH_ECDSA_WITH_ARIA_128_CBC_SHA256 ECDSA 92 ms
C05E TLS_ECDH_ECDSA_WITH_ARIA_128_GCM_SHA256 ECDSA 92 ms
C04B TLS_ECDH_ECDSA_WITH_ARIA_256_CBC_SHA384 ECDSA 95 ms
C05F TLS_ECDH_ECDSA_WITH_ARIA_256_GCM_SHA384 ECDSA 94 ms
C074 TLS_ECDH_ECDSA_WITH_CAMELLIA_128_CBC_SHA256 ECDSA 92 ms
C088 TLS_ECDH_ECDSA_WITH_CAMELLIA_128_GCM_SHA256 ECDSA 91 ms
C075 TLS_ECDH_ECDSA_WITH_CAMELLIA_256_CBC_SHA384 ECDSA 94 ms
C089 TLS_ECDH_ECDSA_WITH_CAMELLIA_256_GCM_SHA384 ECDSA 95 ms
C00D TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA RSA 91 ms
C00E TLS_ECDH_RSA_WITH_AES_128_CBC_SHA RSA 92 ms
C029 TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256 RSA 92 ms
C031 TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256 RSA 92 ms
C00F TLS_ECDH_RSA_WITH_AES_256_CBC_SHA RSA 90 ms
C02A TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384 RSA 96 ms
C032 TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384 RSA 93 ms
C04E TLS_ECDH_RSA_WITH_ARIA_128_CBC_SHA256 RSA 90 ms
C062 TLS_ECDH_RSA_WITH_ARIA_128_GCM_SHA256 RSA 92 ms
C04F TLS_ECDH_RSA_WITH_ARIA_256_CBC_SHA384 RSA 96 ms
C063 TLS_ECDH_RSA_WITH_ARIA_256_GCM_SHA384 RSA 95 ms
C078 TLS_ECDH_RSA_WITH_CAMELLIA_128_CBC_SHA256 RSA 90 ms
C08C TLS_ECDH_RSA_WITH_CAMELLIA_128_GCM_SHA256 RSA 91 ms
C079 TLS_ECDH_RSA_WITH_CAMELLIA_256_CBC_SHA384 RSA 95 ms
C08D TLS_ECDH_RSA_WITH_CAMELLIA_256_GCM_SHA384 RSA 93 ms
C00C TLS_ECDH_RSA_WITH_RC4_128_SHA RSA 90 ms
000A TLS_RSA_WITH_3DES_EDE_CBC_SHA RSA437 ms
0096 TLS_RSA_WITH_SEED_CBC_SHA RSA436 ms
002F TLS_RSA_WITH_AES_128_CBC_SHA RSA436 ms
003C TLS_RSA_WITH_AES_128_CBC_SHA256 RSA437 ms
C09C TLS_RSA_WITH_AES_128_CCM RSA436 ms
009C TLS_RSA_WITH_AES_128_GCM_SHA256 RSA438 ms
0035 TLS_RSA_WITH_AES_256_CBC_SHA RSA437 ms
003D TLS_RSA_WITH_AES_256_CBC_SHA256 RSA436 ms
C09D TLS_RSA_WITH_AES_256_CCM RSA436 ms
009D TLS_RSA_WITH_AES_256_GCM_SHA384 RSA439 ms
0041 TLS_RSA_WITH_CAMELLIA_128_CBC_SHA RSA436 ms
0084 TLS_RSA_WITH_CAMELLIA_256_CBC_SHA RSA437 ms
00BA TLS_RSA_WITH_CAMELLIA_128_CBC_SHA256 RSA437 ms
00C0 TLS_RSA_WITH_CAMELLIA_256_CBC_SHA256 RSA436 ms
C07A TLS_RSA_WITH_CAMELLIA_128_GCM_SHA256 RSA437 ms
C07B TLS_RSA_WITH_CAMELLIA_256_GCM_SHA384 RSA440 ms
C03C TLS_RSA_WITH_ARIA_128_CBC_SHA256 RSA437 ms
C03D TLS_RSA_WITH_ARIA_256_CBC_SHA384 RSA441 ms
C050 TLS_RSA_WITH_ARIA_128_GCM_SHA256 RSA436 ms
C051 TLS_RSA_WITH_ARIA_256_GCM_SHA384 RSA439 ms
0004 TLS_RSA_WITH_RC4_128_MD5 RSA434 ms
0005 TLS_RSA_WITH_RC4_128_SHA RSA435 ms

1 Results may vary depending on the compiler, compiler settings and memory timings of the microcontroller used.