From: Nikos Mavrogiannopoulos Date: Sun, 23 Aug 2015 17:28:09 +0000 (+0200) Subject: Moved pk_* functions to pk.c X-Git-Tag: gnutls_3_5_0~720 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=5e53eebd5fab5559f54f5b25b2b11116987cdb1d;p=thirdparty%2Fgnutls.git Moved pk_* functions to pk.c --- diff --git a/lib/pk.c b/lib/pk.c index 60d1f78087..94c89247e0 100644 --- a/lib/pk.c +++ b/lib/pk.c @@ -635,3 +635,71 @@ int _gnutls_params_get_ecc_raw(const gnutls_pk_params_st* params, return 0; } + +int +pk_hash_data(gnutls_pk_algorithm_t pk, const mac_entry_st * hash, + gnutls_pk_params_st * params, + const gnutls_datum_t * data, gnutls_datum_t * digest) +{ + int ret; + + digest->size = _gnutls_hash_get_algo_len(hash); + digest->data = gnutls_malloc(digest->size); + if (digest->data == NULL) { + gnutls_assert(); + return GNUTLS_E_MEMORY_ERROR; + } + + ret = + _gnutls_hash_fast((gnutls_digest_algorithm_t)hash->id, data->data, data->size, + digest->data); + if (ret < 0) { + gnutls_assert(); + goto cleanup; + } + + return 0; + + cleanup: + gnutls_free(digest->data); + return ret; +} + + +/* + * This function will do RSA PKCS #1 1.5 encoding + * on the given digest. The given digest must be allocated + * and will be freed if replacement is required. + */ +int +pk_prepare_hash(gnutls_pk_algorithm_t pk, + const mac_entry_st * hash, gnutls_datum_t * digest) +{ + int ret; + gnutls_datum_t old_digest = { digest->data, digest->size }; + + switch (pk) { + case GNUTLS_PK_RSA: + if (unlikely(hash == NULL)) + return gnutls_assert_val(GNUTLS_E_INVALID_REQUEST); + /* Encode the digest as a DigestInfo + */ + if ((ret = + encode_ber_digest_info(hash, &old_digest, + digest)) != 0) { + gnutls_assert(); + return ret; + } + + _gnutls_free_datum(&old_digest); + break; + case GNUTLS_PK_DSA: + case GNUTLS_PK_EC: + break; + default: + gnutls_assert(); + return GNUTLS_E_UNIMPLEMENTED_FEATURE; + } + + return 0; +} diff --git a/lib/pk.h b/lib/pk.h index 34712f5098..4b52146e78 100644 --- a/lib/pk.h +++ b/lib/pk.h @@ -94,4 +94,10 @@ int _gnutls_params_get_ecc_raw(const gnutls_pk_params_st* params, gnutls_datum_t * y, gnutls_datum_t * k); +int pk_prepare_hash(gnutls_pk_algorithm_t pk, const mac_entry_st * hash, + gnutls_datum_t * output); +int pk_hash_data(gnutls_pk_algorithm_t pk, const mac_entry_st * hash, + gnutls_pk_params_st * params, const gnutls_datum_t * data, + gnutls_datum_t * digest); + #endif /* GNUTLS_PK_H */ diff --git a/lib/tls-sig.c b/lib/tls-sig.c index 8706ac598b..f51966aa3e 100644 --- a/lib/tls-sig.c +++ b/lib/tls-sig.c @@ -681,70 +681,3 @@ _gnutls_handshake_sign_crt_vrfy(gnutls_session_t session, return ret; } -int -pk_hash_data(gnutls_pk_algorithm_t pk, const mac_entry_st * hash, - gnutls_pk_params_st * params, - const gnutls_datum_t * data, gnutls_datum_t * digest) -{ - int ret; - - digest->size = _gnutls_hash_get_algo_len(hash); - digest->data = gnutls_malloc(digest->size); - if (digest->data == NULL) { - gnutls_assert(); - return GNUTLS_E_MEMORY_ERROR; - } - - ret = - _gnutls_hash_fast((gnutls_digest_algorithm_t)hash->id, data->data, data->size, - digest->data); - if (ret < 0) { - gnutls_assert(); - goto cleanup; - } - - return 0; - - cleanup: - gnutls_free(digest->data); - return ret; -} - - -/* - * This function will do RSA PKCS #1 1.5 encoding - * on the given digest. The given digest must be allocated - * and will be freed if replacement is required. - */ -int -pk_prepare_hash(gnutls_pk_algorithm_t pk, - const mac_entry_st * hash, gnutls_datum_t * digest) -{ - int ret; - gnutls_datum_t old_digest = { digest->data, digest->size }; - - switch (pk) { - case GNUTLS_PK_RSA: - if (unlikely(hash == NULL)) - return gnutls_assert_val(GNUTLS_E_INVALID_REQUEST); - /* Encode the digest as a DigestInfo - */ - if ((ret = - encode_ber_digest_info(hash, &old_digest, - digest)) != 0) { - gnutls_assert(); - return ret; - } - - _gnutls_free_datum(&old_digest); - break; - case GNUTLS_PK_DSA: - case GNUTLS_PK_EC: - break; - default: - gnutls_assert(); - return GNUTLS_E_UNIMPLEMENTED_FEATURE; - } - - return 0; -} diff --git a/lib/tls-sig.h b/lib/tls-sig.h index 0bfdc4edec..5ba37128be 100644 --- a/lib/tls-sig.h +++ b/lib/tls-sig.h @@ -55,10 +55,4 @@ int _gnutls_handshake_verify_data(gnutls_session_t session, gnutls_datum_t * signature, gnutls_sign_algorithm_t algo); -int pk_prepare_hash(gnutls_pk_algorithm_t pk, const mac_entry_st * hash, - gnutls_datum_t * output); -int pk_hash_data(gnutls_pk_algorithm_t pk, const mac_entry_st * hash, - gnutls_pk_params_st * params, const gnutls_datum_t * data, - gnutls_datum_t * digest); - #endif