From: Nikos Mavrogiannopoulos Date: Fri, 17 Aug 2012 18:16:35 +0000 (+0200) Subject: Added gnutls_sign_algorithm_get(). X-Git-Tag: gnutls_3_1_1~40 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=5e4f7a5f22de308e886730cdcbdefa4a0845794d;p=thirdparty%2Fgnutls.git Added gnutls_sign_algorithm_get(). --- diff --git a/NEWS b/NEWS index db12120454..1955e8f83b 100644 --- a/NEWS +++ b/NEWS @@ -2,6 +2,17 @@ GnuTLS NEWS -- History of user-visible changes. -*- outline -*- Copyright (C) 2000-2012 Free Software Foundation, Inc. See the end for copying conditions. +* Version 3.1.1 (unreleased) + +** tpmtool: No longer asks for key password in registered keys. + +** API and ABI modifications: +gnutls_sign_algorithm_get: Added +gnutls_sign_get_hash_algorithm: Added +gnutls_sign_get_pk_algorithm: Added +GNUTLS_PK_RSA_HASH_ONLY: Added + + * Version 3.1.0 (released 2012-08-15) ** libgnutls: Added direct support for TPM as a cryptographic module diff --git a/lib/ext/signature.c b/lib/ext/signature.c index ab77d72a53..59e3750c10 100644 --- a/lib/ext/signature.c +++ b/lib/ext/signature.c @@ -437,3 +437,20 @@ gnutls_sign_algorithm_get_requested (gnutls_session_t session, else return GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE; } + +/** + * gnutls_sign_algorithm_get: + * @session: is a #gnutls_session_t structure. + * + * Returns the signature algorithm that is (or will be) used in this + * session to sign data. + * + * Returns: The sign algorithm or %GNUTLS_SIGN_UNKNOWN. + * + * Since: 3.1.1 + **/ +int +gnutls_sign_algorithm_get (gnutls_session_t session) +{ + return session->security_parameters.sign_algo; +} diff --git a/lib/ext/signature.h b/lib/ext/signature.h index c9acbfc57d..40a54217e1 100644 --- a/lib/ext/signature.h +++ b/lib/ext/signature.h @@ -37,4 +37,10 @@ int _gnutls_sign_algorithm_write_params (gnutls_session_t session, uint8_t * data, size_t max_data_size); int _gnutls_session_sign_algo_enabled (gnutls_session_t session, gnutls_sign_algorithm_t sig); + +static inline void +gnutls_sign_algorithm_set (gnutls_session_t session, gnutls_sign_algorithm_t sign) +{ + session->security_parameters.sign_algo = sign; +} #endif diff --git a/lib/gnutls_int.h b/lib/gnutls_int.h index edb160ab2f..8da69782f2 100644 --- a/lib/gnutls_int.h +++ b/lib/gnutls_int.h @@ -499,6 +499,9 @@ typedef struct gnutls_ecc_curve_t ecc_curve; /* holds the first supported ECC curve requested by client */ gnutls_protocol_t version; /* moved here */ + /* Holds the signature algorithm used in this session - If any */ + gnutls_sign_algorithm_t sign_algo; + /* FIXME: The following are not saved in the session storage * for session resumption. */ diff --git a/lib/gnutls_sig.c b/lib/gnutls_sig.c index 27c8c89ba2..86e60d77c9 100644 --- a/lib/gnutls_sig.c +++ b/lib/gnutls_sig.c @@ -76,6 +76,8 @@ _gnutls_handshake_sign_data (gnutls_session_t session, gnutls_pcert_st* cert, gnutls_assert (); return GNUTLS_E_UNKNOWN_PK_ALGORITHM; } + + gnutls_sign_algorithm_set(session, *sign_algo); hash_algo = gnutls_sign_get_hash_algorithm (*sign_algo); @@ -552,6 +554,8 @@ _gnutls_handshake_sign_crt_vrfy12 (gnutls_session_t session, gnutls_assert (); return GNUTLS_E_UNKNOWN_PK_ALGORITHM; } + + gnutls_sign_algorithm_set(session, sign_algo); hash_algo = gnutls_sign_get_hash_algorithm (sign_algo); diff --git a/lib/includes/gnutls/gnutls.h.in b/lib/includes/gnutls/gnutls.h.in index f3d767c212..ec674038bc 100644 --- a/lib/includes/gnutls/gnutls.h.in +++ b/lib/includes/gnutls/gnutls.h.in @@ -783,6 +783,8 @@ gnutls_ecc_curve_t gnutls_ecc_curve_get(gnutls_session_t session); gnutls_compression_get (gnutls_session_t session); gnutls_certificate_type_t gnutls_certificate_type_get (gnutls_session_t session); + + int gnutls_sign_algorithm_get (gnutls_session_t session); int gnutls_sign_algorithm_get_requested (gnutls_session_t session, size_t indx, diff --git a/lib/libgnutls.map b/lib/libgnutls.map index 3170417475..50a6872809 100644 --- a/lib/libgnutls.map +++ b/lib/libgnutls.map @@ -828,6 +828,7 @@ GNUTLS_3_1_0 { gnutls_handshake_set_timeout; gnutls_sign_get_pk_algorithm; gnutls_sign_get_hash_algorithm; + gnutls_sign_algorithm_get; } GNUTLS_3_0_0; GNUTLS_PRIVATE {