/* Same function for block and iv size */ uint8_t sslCipherSuiteGetSymmetricCipherBlockIvSize(SSLCipherSuite cipherSuite) { SSL_CipherAlgorithm alg = sslCipherSuiteGetSymmetricCipherAlgorithm(cipherSuite); switch (alg) { case SSL_CipherAlgorithmNull: case SSL_CipherAlgorithmRC4_128: return 0; case SSL_CipherAlgorithmDES_CBC: case SSL_CipherAlgorithm3DES_CBC: case SSL_CipherAlgorithmRC2_128: return 8; case SSL_CipherAlgorithmAES_128_CBC: case SSL_CipherAlgorithmAES_128_GCM: case SSL_CipherAlgorithmAES_256_CBC: case SSL_CipherAlgorithmAES_256_GCM: return 16; default: return 0; } }
static const SSLSymmetricCipher *sslCipherSuiteGetSymmetricCipher(uint16_t selectedCipher) { SSL_CipherAlgorithm alg = sslCipherSuiteGetSymmetricCipherAlgorithm(selectedCipher); switch(alg) { case SSL_CipherAlgorithmNull: return &SSLCipherNull; #if ENABLE_RC2 case SSL_CipherAlgorithmRC2_128: return &SSLCipherRC2_128; #endif #if ENABLE_RC4 case SSL_CipherAlgorithmRC4_128: return &SSLCipherRC4_128; #endif #if ENABLE_DES case SSL_CipherAlgorithmDES_CBC: return &SSLCipherDES_CBC; #endif case SSL_CipherAlgorithm3DES_CBC: return &SSLCipher3DES_CBC; case SSL_CipherAlgorithmAES_128_CBC: return &SSLCipherAES_128_CBC; case SSL_CipherAlgorithmAES_256_CBC: return &SSLCipherAES_256_CBC; #if ENABLE_AES_GCM case SSL_CipherAlgorithmAES_128_GCM: return &SSLCipherAES_128_GCM; case SSL_CipherAlgorithmAES_256_GCM: return &SSLCipherAES_256_GCM; #endif default: check(0); return &SSLCipherNull; } }