Line data Source code
1 : /* hmac-streebog.c 2 : 3 : HMAC-Streebog message authentication code. 4 : 5 : Copyright (C) 2016 Dmitry Eremin-Solenikov 6 : 7 : This file is part of GNU Nettle. 8 : 9 : GNU Nettle is free software: you can redistribute it and/or 10 : modify it under the terms of either: 11 : 12 : * the GNU Lesser General Public License as published by the Free 13 : Software Foundation; either version 3 of the License, or (at your 14 : option) any later version. 15 : 16 : or 17 : 18 : * the GNU General Public License as published by the Free 19 : Software Foundation; either version 2 of the License, or (at your 20 : option) any later version. 21 : 22 : or both in parallel, as here. 23 : 24 : GNU Nettle is distributed in the hope that it will be useful, 25 : but WITHOUT ANY WARRANTY; without even the implied warranty of 26 : MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 27 : General Public License for more details. 28 : 29 : You should have received copies of the GNU General Public License and 30 : the GNU Lesser General Public License along with this program. If 31 : not, see https://www.gnu.org/licenses/. 32 : */ 33 : 34 : #if HAVE_CONFIG_H 35 : # include <config.h> 36 : #endif 37 : 38 : #ifndef HAVE_NETTLE_STREEBOG512_UPDATE 39 : #include <gnutls_int.h> 40 : 41 : #include <nettle/hmac.h> 42 : #include "hmac-gost.h" 43 : 44 : void 45 20 : hmac_streebog512_set_key(struct hmac_streebog512_ctx *ctx, 46 : size_t key_length, const uint8_t *key) 47 : { 48 20 : HMAC_SET_KEY(ctx, &nettle_streebog512, key_length, key); 49 20 : } 50 : 51 : void 52 207985 : hmac_streebog512_update(struct hmac_streebog512_ctx *ctx, 53 : size_t length, const uint8_t *data) 54 : { 55 207985 : streebog512_update(&ctx->state, length, data); 56 207985 : } 57 : 58 : void 59 75457 : hmac_streebog512_digest(struct hmac_streebog512_ctx *ctx, 60 : size_t length, uint8_t *digest) 61 : { 62 75457 : HMAC_DIGEST(ctx, &nettle_streebog512, length, digest); 63 75457 : } 64 : 65 : void 66 323 : hmac_streebog256_set_key(struct hmac_streebog256_ctx *ctx, 67 : size_t key_length, const uint8_t *key) 68 : { 69 323 : HMAC_SET_KEY(ctx, &nettle_streebog256, key_length, key); 70 323 : } 71 : 72 : void 73 130820 : hmac_streebog256_digest(struct hmac_streebog256_ctx *ctx, 74 : size_t length, uint8_t *digest) 75 : { 76 130820 : HMAC_DIGEST(ctx, &nettle_streebog256, length, digest); 77 130820 : } 78 : #endif