1/*
2 * Copyright 2017-2018 The OpenSSL Project Authors. All Rights Reserved.
3 *
4 * Licensed under the OpenSSL license (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/*
11 * Known answer tests (KAT) for NIST SP800-90A DRBGs.
12 */
13
14#include <stddef.h>
15
16#ifndef OSSL_TEST_DRBG_CAVS_DATA_H
17# define OSSL_TEST_DRBG_CAVS_DATA_H
18
19enum drbg_kat_type {
20    NO_RESEED,
21    PR_FALSE,
22    PR_TRUE
23};
24
25enum drbg_df {
26    USE_DF,
27    NO_DF,
28    NA
29};
30
31struct drbg_kat_no_reseed {
32    size_t count;
33    const unsigned char *entropyin;
34    const unsigned char *nonce;
35    const unsigned char *persstr;
36    const unsigned char *addin1;
37    const unsigned char *addin2;
38    const unsigned char *retbytes;
39};
40
41struct drbg_kat_pr_false {
42    size_t count;
43    const unsigned char *entropyin;
44    const unsigned char *nonce;
45    const unsigned char *persstr;
46    const unsigned char *entropyinreseed;
47    const unsigned char *addinreseed;
48    const unsigned char *addin1;
49    const unsigned char *addin2;
50    const unsigned char *retbytes;
51};
52
53struct drbg_kat_pr_true {
54    size_t count;
55    const unsigned char *entropyin;
56    const unsigned char *nonce;
57    const unsigned char *persstr;
58    const unsigned char *entropyinpr1;
59    const unsigned char *addin1;
60    const unsigned char *entropyinpr2;
61    const unsigned char *addin2;
62    const unsigned char *retbytes;
63};
64
65struct drbg_kat {
66    enum drbg_kat_type type;
67    enum drbg_df df;
68    int nid;
69
70    size_t entropyinlen;
71    size_t noncelen;
72    size_t persstrlen;
73    size_t addinlen;
74    size_t retbyteslen;
75
76    const void *t;
77};
78
79extern const struct drbg_kat *drbg_test[];
80extern const size_t drbg_test_nelem;
81
82#endif
83