draft-smyshlyaev-tls12-gost-suites limits SignatureAndHash algorithms
in CertificateRequest message to GOST values if GOST cipher suite is
selected.
Signed-off-by: Dmitry Eremin-Solenikov <dbaryshkov@gmail.com>
return 0;
}
+static inline bool
+_sign_is_gost(const gnutls_sign_entry_st *se)
+{
+ gnutls_pk_algorithm_t pk = se->pk;
+
+ return (pk == GNUTLS_PK_GOST_01) ||
+ (pk == GNUTLS_PK_GOST_12_256) ||
+ (pk == GNUTLS_PK_GOST_12_512);
+}
+
static inline int _sig_is_ecdsa(gnutls_sign_algorithm_t sig)
{
if (sig == GNUTLS_SIGN_ECDSA_SHA1 || sig == GNUTLS_SIGN_ECDSA_SHA224 ||
if (prev && prev->id[0] == aid->id[0] && prev->id[1] == aid->id[1])
continue;
+ /* Ignore non-GOST sign types for CertReq */
+ if (session->security_parameters.cs &&
+ _gnutls_kx_is_vko_gost(session->security_parameters.cs->kx_algorithm) &&
+ !_sign_is_gost(session->internals.priorities->sigalg.entry[i]))
+ continue;
+
_gnutls_handshake_log
("EXT[%p]: sent signature algo (%d.%d) %s\n", session,
(int)aid->id[0], (int)aid->id[1],