diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/cipher.h | 2 | ||||
-rw-r--r-- | src/gcrypt.h.in | 14 | ||||
-rw-r--r-- | src/libgcrypt.def | 1 | ||||
-rw-r--r-- | src/libgcrypt.vers | 1 | ||||
-rw-r--r-- | src/visibility.c | 12 | ||||
-rw-r--r-- | src/visibility.h | 3 |
6 files changed, 33 insertions, 0 deletions
diff --git a/src/cipher.h b/src/cipher.h index ea8ba2af..7791083b 100644 --- a/src/cipher.h +++ b/src/cipher.h @@ -79,6 +79,8 @@ void _gcry_rmd160_hash_buffer (void *outbuf, /*-- sha1.c --*/ void _gcry_sha1_hash_buffer (void *outbuf, const void *buffer, size_t length); +void _gcry_sha1_hash_buffers (void *outbuf, + const gcry_buffer_t *iov, int iovcnt); /*-- rijndael.c --*/ void _gcry_aes_cfb_enc (void *context, unsigned char *iv, diff --git a/src/gcrypt.h.in b/src/gcrypt.h.in index 5d30ced1..71ea0730 100644 --- a/src/gcrypt.h.in +++ b/src/gcrypt.h.in @@ -232,6 +232,16 @@ typedef struct gcry_mpi *GCRY_MPI _GCRY_GCC_ATTR_DEPRECATED; typedef struct gcry_mpi *GcryMPI _GCRY_GCC_ATTR_DEPRECATED; #endif +/* A structure used for scatter gather hashing. */ +typedef struct +{ + size_t size; /* The allocated size of the buffer or 0. */ + size_t off; /* Offset into the buffer. */ + size_t len; /* The used length of the buffer. */ + void *data; /* The buffer. */ +} gcry_buffer_t; + + /* Check that the library fulfills the version requirement. */ @@ -1151,6 +1161,10 @@ unsigned char *gcry_md_read (gcry_md_hd_t hd, int algo); void gcry_md_hash_buffer (int algo, void *digest, const void *buffer, size_t length); +/* Convenience function to hash multiple buffers. */ +gpg_error_t gcry_md_hash_buffers (int algo, unsigned int flags, void *digest, + const gcry_buffer_t *iov, int iovcnt); + /* Retrieve the algorithm used with HD. This does not work reliable if more than one algorithm is enabled in HD. */ int gcry_md_get_algo (gcry_md_hd_t hd); diff --git a/src/libgcrypt.def b/src/libgcrypt.def index 9c691ec2..9fa42458 100644 --- a/src/libgcrypt.def +++ b/src/libgcrypt.def @@ -245,6 +245,7 @@ EXPORTS gcry_mpi_ec_curve_point @218 + gcry_md_hash_buffers @219 ;; end of file with public symbols for Windows. diff --git a/src/libgcrypt.vers b/src/libgcrypt.vers index beb691ee..904ab412 100644 --- a/src/libgcrypt.vers +++ b/src/libgcrypt.vers @@ -39,6 +39,7 @@ GCRYPT_1.6 { gcry_md_algo_info; gcry_md_algo_name; gcry_md_close; gcry_md_copy; gcry_md_ctl; gcry_md_enable; gcry_md_get; gcry_md_get_algo; gcry_md_get_algo_dlen; gcry_md_hash_buffer; + gcry_md_hash_buffers; gcry_md_info; gcry_md_is_enabled; gcry_md_is_secure; gcry_md_map_name; gcry_md_open; gcry_md_read; gcry_md_reset; gcry_md_setkey; diff --git a/src/visibility.c b/src/visibility.c index 404da20b..48725ffe 100644 --- a/src/visibility.c +++ b/src/visibility.c @@ -997,6 +997,18 @@ gcry_md_hash_buffer (int algo, void *digest, _gcry_md_hash_buffer (algo, digest, buffer, length); } +gpg_error_t +gcry_md_hash_buffers (int algo, unsigned int flags, void *digest, + const gcry_buffer_t *iov, int iovcnt) +{ + if (!fips_is_operational ()) + { + (void)fips_not_operational (); + fips_signal_error ("called in non-operational state"); + } + return _gcry_md_hash_buffers (algo, flags, digest, iov, iovcnt); +} + int gcry_md_get_algo (gcry_md_hd_t hd) { diff --git a/src/visibility.h b/src/visibility.h index b4da48e8..5e3556c0 100644 --- a/src/visibility.h +++ b/src/visibility.h @@ -63,6 +63,7 @@ #define gcry_md_get_algo _gcry_md_get_algo #define gcry_md_get_algo_dlen _gcry_md_get_algo_dlen #define gcry_md_hash_buffer _gcry_md_hash_buffer +#define gcry_md_hash_buffers _gcry_md_hash_buffers #define gcry_md_info _gcry_md_info #define gcry_md_is_enabled _gcry_md_is_enabled #define gcry_md_is_secure _gcry_md_is_secure @@ -279,6 +280,7 @@ gcry_err_code_t gcry_md_get (gcry_md_hd_t hd, int algo, #undef gcry_md_get_algo #undef gcry_md_get_algo_dlen #undef gcry_md_hash_buffer +#undef gcry_md_hash_buffers #undef gcry_md_info #undef gcry_md_is_enabled #undef gcry_md_is_secure @@ -455,6 +457,7 @@ MARK_VISIBLE (gcry_md_get) MARK_VISIBLE (gcry_md_get_algo) MARK_VISIBLE (gcry_md_get_algo_dlen) MARK_VISIBLE (gcry_md_hash_buffer) +MARK_VISIBLE (gcry_md_hash_buffers) MARK_VISIBLE (gcry_md_info) MARK_VISIBLE (gcry_md_is_enabled) MARK_VISIBLE (gcry_md_is_secure) |