in tls/s2n_handshake.c [68:101]
static int s2n_handshake_get_hash_state_ptr(struct s2n_connection *conn, s2n_hash_algorithm hash_alg, struct s2n_hash_state **hash_state)
{
POSIX_ENSURE_REF(conn);
POSIX_ENSURE_REF(conn->handshake.hashes);
switch (hash_alg) {
case S2N_HASH_MD5:
*hash_state = &conn->handshake.hashes->md5;
break;
case S2N_HASH_SHA1:
*hash_state = &conn->handshake.hashes->sha1;
break;
case S2N_HASH_SHA224:
*hash_state = &conn->handshake.hashes->sha224;
break;
case S2N_HASH_SHA256:
*hash_state = &conn->handshake.hashes->sha256;
break;
case S2N_HASH_SHA384:
*hash_state = &conn->handshake.hashes->sha384;
break;
case S2N_HASH_SHA512:
*hash_state = &conn->handshake.hashes->sha512;
break;
case S2N_HASH_MD5_SHA1:
*hash_state = &conn->handshake.hashes->md5_sha1;
break;
default:
POSIX_BAIL(S2N_ERR_HASH_INVALID_ALGORITHM);
break;
}
return S2N_SUCCESS;
}