From 025abe3d3693ebdbd55d8a0c8953eaebe8c4b87e Mon Sep 17 00:00:00 2001 From: Dmitry Eremin-Solenikov Date: Mon, 9 Jul 2018 14:02:14 +0300 Subject: lib: remove undefined behaviour when handling GOST paramset Initial version of GOST patchset used param < 0 to represent unknown value. Later special enum entry GNUTLS_GOST_PARAMSET_UNKNOWN was introduced. Fix several leftovers comparing params to 0 directly. Closes #505. Signed-off-by: Dmitry Eremin-Solenikov --- lib/pk.c | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'lib/pk.c') diff --git a/lib/pk.c b/lib/pk.c index b4db8033e0..b395f1741a 100644 --- a/lib/pk.c +++ b/lib/pk.c @@ -459,6 +459,17 @@ gnutls_pk_algorithm_t _gnutls_digest_gost(gnutls_digest_algorithm_t digest) return GNUTLS_PK_UNKNOWN; } +gnutls_gost_paramset_t _gnutls_gost_paramset_default(gnutls_pk_algorithm_t pk) +{ + if (pk == GNUTLS_PK_GOST_01) + return GNUTLS_GOST_PARAMSET_CP_A; + else if (pk == GNUTLS_PK_GOST_12_256 || + pk == GNUTLS_PK_GOST_12_512) + return GNUTLS_GOST_PARAMSET_TC26_Z; + else + return gnutls_assert_val(GNUTLS_GOST_PARAMSET_UNKNOWN); +} + /* some generic pk functions */ int _gnutls_pk_params_copy(gnutls_pk_params_st * dst, -- cgit v1.2.1