Coverage Report

Created: 2024-05-15 07:14

/src/openssl/include/internal/sha3.h
Line
Count
Source (jump to first uncovered line)
1
/*
2
 * Copyright 2019 The OpenSSL Project Authors. All Rights Reserved.
3
 *
4
 * Licensed under the Apache License 2.0 (the "License").  You may not use
5
 * this file except in compliance with the License.  You can obtain a copy
6
 * in the file LICENSE in the source distribution or at
7
 * https://www.openssl.org/source/license.html
8
 */
9
10
/* TODO(3.0) Move this header into provider when dependencies are removed */
11
#ifndef OSSL_INTERNAL_SHA3_H
12
# define OSSL_INTERNAL_SHA3_H
13
14
# include <openssl/e_os2.h>
15
# include <stddef.h>
16
17
0
# define KECCAK1600_WIDTH 1600
18
# define SHA3_MDSIZE(bitlen)    (bitlen / 8)
19
# define KMAC_MDSIZE(bitlen)    2 * (bitlen / 8)
20
0
# define SHA3_BLOCKSIZE(bitlen) (KECCAK1600_WIDTH - bitlen * 2) / 8
21
22
typedef struct keccak_st KECCAK1600_CTX;
23
24
typedef size_t (sha3_absorb_fn)(void *vctx, const void *inp, size_t len);
25
typedef int (sha3_final_fn)(unsigned char *md, void *vctx);
26
27
typedef struct prov_sha3_meth_st
28
{
29
    sha3_absorb_fn *absorb;
30
    sha3_final_fn *final;
31
} PROV_SHA3_METHOD;
32
33
struct keccak_st {
34
    uint64_t A[5][5];
35
    size_t block_size;          /* cached ctx->digest->block_size */
36
    size_t md_size;             /* output length, variable in XOF */
37
    size_t bufsz;               /* used bytes in below buffer */
38
    unsigned char buf[KECCAK1600_WIDTH / 8 - 32];
39
    unsigned char pad;
40
    PROV_SHA3_METHOD meth;
41
};
42
43
void sha3_reset(KECCAK1600_CTX *ctx);
44
int sha3_init(KECCAK1600_CTX *ctx, unsigned char pad, size_t bitlen);
45
int keccak_kmac_init(KECCAK1600_CTX *ctx, unsigned char pad, size_t bitlen);
46
int sha3_update(KECCAK1600_CTX *ctx, const void *_inp, size_t len);
47
int sha3_final(unsigned char *md, KECCAK1600_CTX *ctx);
48
49
size_t SHA3_absorb(uint64_t A[5][5], const unsigned char *inp, size_t len,
50
                   size_t r);
51
52
#endif /* OSSL_INTERNAL_SHA3_H */