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 19 enum drbg_kat_type { 20 NO_RESEED, 21 PR_FALSE, 22 PR_TRUE 23 }; 24 25 enum drbg_df { 26 USE_DF, 27 NO_DF, 28 NA 29 }; 30 31 struct 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 41 struct 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 53 struct 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 65 struct 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 79 extern const struct drbg_kat *drbg_test[]; 80 extern const size_t drbg_test_nelem; 81 82 #endif 83