32 #define TRACE_LEVEL SSH_TRACE_LEVEL
42 #if (SSH_SUPPORT == ENABLED)
58 const char_t *macAlgo, uint8_t
x)
74 #if (SSH_STREAM_CIPHER_SUPPORT == ENABLED)
79 error =
sshKdf(connection->hashAlgo, connection->k, connection->kLen,
80 connection->h, connection->hLen, connection->sessionId,
81 connection->sessionIdLen,
x + 2, encryptionEngine->
encKey,
88 error =
sshKdf(connection->hashAlgo, connection->k, connection->kLen,
89 connection->h, connection->hLen, connection->sessionId,
90 connection->sessionIdLen,
x + 4, encryptionEngine->
macKey,
115 encryptionEngine->
hmacContext = &connection->hmacContext;
119 #if (SSH_CBC_CIPHER_SUPPORT == ENABLED || SSH_CTR_CIPHER_SUPPORT == ENABLED)
125 error =
sshKdf(connection->hashAlgo, connection->k, connection->kLen,
126 connection->h, connection->hLen, connection->sessionId,
127 connection->sessionIdLen,
x, encryptionEngine->
iv,
134 error =
sshKdf(connection->hashAlgo, connection->k, connection->kLen,
135 connection->h, connection->hLen, connection->sessionId,
136 connection->sessionIdLen,
x + 2, encryptionEngine->
encKey,
143 error =
sshKdf(connection->hashAlgo, connection->k, connection->kLen,
144 connection->h, connection->hLen, connection->sessionId,
145 connection->sessionIdLen,
x + 4, encryptionEngine->
macKey,
159 encryptionEngine->
hmacContext = &connection->hmacContext;
163 #if (SSH_GCM_CIPHER_SUPPORT == ENABLED || SSH_RFC5647_SUPPORT == ENABLED)
168 error =
sshKdf(connection->hashAlgo, connection->k, connection->kLen,
169 connection->h, connection->hLen, connection->sessionId,
170 connection->sessionIdLen,
x, encryptionEngine->
iv, 12);
176 error =
sshKdf(connection->hashAlgo, connection->k, connection->kLen,
177 connection->h, connection->hLen, connection->sessionId,
178 connection->sessionIdLen,
x + 2, encryptionEngine->
encKey,
202 #if (SSH_CHACHA20_POLY1305_SUPPORT == ENABLED)
209 error =
sshKdf(connection->hashAlgo, connection->k, connection->kLen,
210 connection->h, connection->hLen, connection->sessionId,
211 connection->sessionIdLen,
x + 2, encryptionEngine->
encKey,
244 #if (SSH_GCM_CIPHER_SUPPORT == ENABLED || SSH_RFC5647_SUPPORT == ENABLED)
285 #if (SSH_RC4_SUPPORT == ENABLED && SSH_STREAM_CIPHER_SUPPORT == ENABLED)
296 #if (SSH_RC4_128_SUPPORT == ENABLED && SSH_STREAM_CIPHER_SUPPORT == ENABLED)
307 #if (SSH_RC4_256_SUPPORT == ENABLED && SSH_STREAM_CIPHER_SUPPORT == ENABLED)
318 #if (SSH_CAST128_SUPPORT == ENABLED && SSH_CBC_CIPHER_SUPPORT == ENABLED)
330 #if (SSH_CAST128_SUPPORT == ENABLED && SSH_CTR_CIPHER_SUPPORT == ENABLED)
342 #if (SSH_IDEA_SUPPORT == ENABLED && SSH_CBC_CIPHER_SUPPORT == ENABLED)
353 #if (SSH_IDEA_SUPPORT == ENABLED && SSH_CTR_CIPHER_SUPPORT == ENABLED)
364 #if (SSH_BLOWFISH_SUPPORT == ENABLED && SSH_CBC_CIPHER_SUPPORT == ENABLED)
376 #if (SSH_BLOWFISH_SUPPORT == ENABLED && SSH_CTR_CIPHER_SUPPORT == ENABLED)
388 #if (SSH_3DES_SUPPORT == ENABLED && SSH_CBC_CIPHER_SUPPORT == ENABLED)
400 #if (SSH_3DES_SUPPORT == ENABLED && SSH_CTR_CIPHER_SUPPORT == ENABLED)
412 #if (SSH_AES_128_SUPPORT == ENABLED && SSH_CBC_CIPHER_SUPPORT == ENABLED)
424 #if (SSH_AES_192_SUPPORT == ENABLED && SSH_CBC_CIPHER_SUPPORT == ENABLED)
436 #if (SSH_AES_256_SUPPORT == ENABLED && SSH_CBC_CIPHER_SUPPORT == ENABLED)
448 #if (SSH_AES_128_SUPPORT == ENABLED && SSH_CTR_CIPHER_SUPPORT == ENABLED)
460 #if (SSH_AES_192_SUPPORT == ENABLED && SSH_CTR_CIPHER_SUPPORT == ENABLED)
472 #if (SSH_AES_256_SUPPORT == ENABLED && SSH_CTR_CIPHER_SUPPORT == ENABLED)
484 #if (SSH_TWOFISH_128_SUPPORT == ENABLED && SSH_CBC_CIPHER_SUPPORT == ENABLED)
495 #if (SSH_TWOFISH_192_SUPPORT == ENABLED && SSH_CBC_CIPHER_SUPPORT == ENABLED)
506 #if (SSH_TWOFISH_256_SUPPORT == ENABLED && SSH_CBC_CIPHER_SUPPORT == ENABLED)
518 #if (SSH_TWOFISH_128_SUPPORT == ENABLED && SSH_CTR_CIPHER_SUPPORT == ENABLED)
529 #if (SSH_TWOFISH_192_SUPPORT == ENABLED && SSH_CTR_CIPHER_SUPPORT == ENABLED)
540 #if (SSH_TWOFISH_256_SUPPORT == ENABLED && SSH_CTR_CIPHER_SUPPORT == ENABLED)
551 #if (SSH_SERPENT_128_SUPPORT == ENABLED && SSH_CBC_CIPHER_SUPPORT == ENABLED)
562 #if (SSH_SERPENT_192_SUPPORT == ENABLED && SSH_CBC_CIPHER_SUPPORT == ENABLED)
573 #if (SSH_SERPENT_256_SUPPORT == ENABLED && SSH_CBC_CIPHER_SUPPORT == ENABLED)
584 #if (SSH_SERPENT_128_SUPPORT == ENABLED && SSH_CTR_CIPHER_SUPPORT == ENABLED)
595 #if (SSH_SERPENT_192_SUPPORT == ENABLED && SSH_CTR_CIPHER_SUPPORT == ENABLED)
606 #if (SSH_SERPENT_256_SUPPORT == ENABLED && SSH_CTR_CIPHER_SUPPORT == ENABLED)
617 #if (SSH_CAMELLIA_128_SUPPORT == ENABLED && SSH_CBC_CIPHER_SUPPORT == ENABLED)
628 #if (SSH_CAMELLIA_192_SUPPORT == ENABLED && SSH_CBC_CIPHER_SUPPORT == ENABLED)
639 #if (SSH_CAMELLIA_256_SUPPORT == ENABLED && SSH_CBC_CIPHER_SUPPORT == ENABLED)
650 #if (SSH_CAMELLIA_128_SUPPORT == ENABLED && SSH_CTR_CIPHER_SUPPORT == ENABLED)
661 #if (SSH_CAMELLIA_192_SUPPORT == ENABLED && SSH_CTR_CIPHER_SUPPORT == ENABLED)
672 #if (SSH_CAMELLIA_256_SUPPORT == ENABLED && SSH_CTR_CIPHER_SUPPORT == ENABLED)
683 #if (SSH_SEED_SUPPORT == ENABLED && SSH_CBC_CIPHER_SUPPORT == ENABLED)
694 #if (SSH_AES_128_SUPPORT == ENABLED && SSH_GCM_CIPHER_SUPPORT == ENABLED)
706 #if (SSH_AES_256_SUPPORT == ENABLED && SSH_GCM_CIPHER_SUPPORT == ENABLED)
718 #if (SSH_AES_128_SUPPORT == ENABLED && SSH_RFC5647_SUPPORT == ENABLED)
729 #if (SSH_AES_256_SUPPORT == ENABLED && SSH_RFC5647_SUPPORT == ENABLED)
740 #if (SSH_CAMELLIA_128_SUPPORT == ENABLED && SSH_RFC5647_SUPPORT == ENABLED)
751 #if (SSH_CAMELLIA_256_SUPPORT == ENABLED && SSH_RFC5647_SUPPORT == ENABLED)
762 #if (SSH_CHACHA20_POLY1305_SUPPORT == ENABLED)
802 #if (SSH_AES_128_SUPPORT == ENABLED && SSH_GCM_CIPHER_SUPPORT == ENABLED)
809 encryptionEngine->
macSize = 16;
814 #if (SSH_AES_256_SUPPORT == ENABLED && SSH_GCM_CIPHER_SUPPORT == ENABLED)
821 encryptionEngine->
macSize = 16;
826 #if (SSH_AES_128_SUPPORT == ENABLED && SSH_RFC5647_SUPPORT == ENABLED)
832 encryptionEngine->
macSize = 16;
837 #if (SSH_AES_256_SUPPORT == ENABLED && SSH_RFC5647_SUPPORT == ENABLED)
843 encryptionEngine->
macSize = 16;
848 #if (SSH_CAMELLIA_128_SUPPORT == ENABLED && SSH_RFC5647_SUPPORT == ENABLED)
854 encryptionEngine->
macSize = 16;
859 #if (SSH_CAMELLIA_256_SUPPORT == ENABLED && SSH_RFC5647_SUPPORT == ENABLED)
865 encryptionEngine->
macSize = 16;
870 #if (SSH_CHACHA20_POLY1305_SUPPORT == ENABLED)
877 encryptionEngine->
macSize = 16;
882 #if (SSH_HMAC_SUPPORT == ENABLED && SSH_MD5_SUPPORT == ENABLED)
893 #if (SSH_HMAC_SUPPORT == ENABLED && SSH_MD5_SUPPORT == ENABLED && \
894 SSH_ETM_SUPPORT == ENABLED)
905 #if (SSH_HMAC_SUPPORT == ENABLED && SSH_MD5_96_SUPPORT == ENABLED)
911 encryptionEngine->
macSize = 12;
916 #if (SSH_HMAC_SUPPORT == ENABLED && SSH_MD5_96_SUPPORT == ENABLED && \
917 SSH_ETM_SUPPORT == ENABLED)
923 encryptionEngine->
macSize = 12;
928 #if (SSH_HMAC_SUPPORT == ENABLED && SSH_RIPEMD160_SUPPORT == ENABLED)
940 #if (SSH_HMAC_SUPPORT == ENABLED && SSH_RIPEMD160_SUPPORT == ENABLED && \
941 SSH_ETM_SUPPORT == ENABLED)
952 #if (SSH_HMAC_SUPPORT == ENABLED && SSH_SHA1_SUPPORT == ENABLED)
963 #if (SSH_HMAC_SUPPORT == ENABLED && SSH_SHA1_SUPPORT == ENABLED && \
964 SSH_ETM_SUPPORT == ENABLED)
975 #if (SSH_HMAC_SUPPORT == ENABLED && SSH_SHA1_96_SUPPORT == ENABLED)
981 encryptionEngine->
macSize = 12;
986 #if (SSH_HMAC_SUPPORT == ENABLED && SSH_SHA1_96_SUPPORT == ENABLED && \
987 SSH_ETM_SUPPORT == ENABLED)
993 encryptionEngine->
macSize = 12;
998 #if (SSH_HMAC_SUPPORT == ENABLED && SSH_SHA256_SUPPORT == ENABLED)
1009 #if (SSH_HMAC_SUPPORT == ENABLED && SSH_SHA256_SUPPORT == ENABLED && \
1010 SSH_ETM_SUPPORT == ENABLED)
1021 #if (SSH_HMAC_SUPPORT == ENABLED && SSH_SHA512_SUPPORT == ENABLED)
1032 #if (SSH_HMAC_SUPPORT == ENABLED && SSH_SHA512_SUPPORT == ENABLED && \
1033 SSH_ETM_SUPPORT == ENABLED)
1064 const uint8_t *key,
size_t keyLen)
1066 #if (SSH_KEY_LOG_SUPPORT == ENABLED)
1070 context = connection->context;
1073 if(context->keyLogCallback != NULL)
1090 n +=
osSprintf(buffer +
n,
"%02" PRIX8, connection->cookie[i]);
1098 for(i = 0; i < keyLen; i++)
1108 context->keyLogCallback(connection, buffer);