blob: 0cbd9a77be52db820ccdb3c280f822a3bf4765ba [file] [log] [blame]
Martin Kreichgauer7c125872017-04-24 13:29:11 -07001/* Copyright (c) 2017, Google Inc.
2 *
3 * Permission to use, copy, modify, and/or distribute this software for any
4 * purpose with or without fee is hereby granted, provided that the above
5 * copyright notice and this permission notice appear in all copies.
6 *
7 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
8 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
9 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
10 * SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
11 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
12 * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
13 * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */
14
15#ifndef OPENSSL_HEADER_CRYPTO_FIPSMODULE_CAVP_TEST_UTIL_H
16#define OPENSSL_HEADER_CRYPTO_FIPSMODULE_CAVP_TEST_UTIL_H
17
18#include <stdlib.h>
19#include <string>
20#include <vector>
21
22#include <openssl/aead.h>
23#include <openssl/cipher.h>
24
Adam Langley58e44992017-04-28 16:45:49 -070025#include "../crypto/test/file_test.h"
David Benjamin90801c12017-04-28 17:08:45 -040026
Martin Kreichgauer7c125872017-04-24 13:29:11 -070027
28std::string EncodeHex(const uint8_t *in, size_t in_len);
29
30const EVP_CIPHER *GetCipher(const std::string &name);
31
32bool CipherOperation(const EVP_CIPHER *cipher, std::vector<uint8_t> *out,
33 bool encrypt, const std::vector<uint8_t> &key,
34 const std::vector<uint8_t> &iv,
35 const std::vector<uint8_t> &in);
36
37bool AEADEncrypt(const EVP_AEAD *aead, std::vector<uint8_t> *ct,
38 std::vector<uint8_t> *tag, size_t tag_len,
39 const std::vector<uint8_t> &key,
40 const std::vector<uint8_t> &pt,
Adam Langley563924b2017-05-30 11:43:25 -070041 const std::vector<uint8_t> &aad,
42 const std::vector<uint8_t> &iv);
Martin Kreichgauer7c125872017-04-24 13:29:11 -070043
Adam Langley563924b2017-05-30 11:43:25 -070044bool AEADDecrypt(const EVP_AEAD *aead, std::vector<uint8_t> *pt, size_t pt_len,
Martin Kreichgauer7c125872017-04-24 13:29:11 -070045 const std::vector<uint8_t> &key,
Adam Langley563924b2017-05-30 11:43:25 -070046 const std::vector<uint8_t> &aad,
Martin Kreichgauer7c125872017-04-24 13:29:11 -070047 const std::vector<uint8_t> &ct,
Adam Langley563924b2017-05-30 11:43:25 -070048 const std::vector<uint8_t> &tag,
49 const std::vector<uint8_t> &iv);
Martin Kreichgauer7c125872017-04-24 13:29:11 -070050
David Benjamin90801c12017-04-28 17:08:45 -040051bssl::UniquePtr<BIGNUM> GetBIGNUM(FileTest *t, const char *attribute);
52
David Benjamineb599892017-05-01 14:56:22 -040053int GetECGroupNIDFromInstruction(FileTest *t, const char **out_str = nullptr);
David Benjamin90801c12017-04-28 17:08:45 -040054
David Benjamin0c292ed2017-04-28 17:41:28 -040055const EVP_MD *GetDigestFromInstruction(FileTest *t);
56
Adam Langleyd79bc9d2017-05-30 15:37:27 -070057void EchoComment(const std::string& comment);
58
Martin Kreichgauerddfcc6a2017-05-03 14:12:39 -070059int cavp_aes_gcm_test_main(int argc, char **argv);
60int cavp_aes_test_main(int argc, char **argv);
61int cavp_ctr_drbg_test_main(int argc, char **argv);
62int cavp_ecdsa2_keypair_test_main(int argc, char **argv);
63int cavp_ecdsa2_pkv_test_main(int argc, char **argv);
64int cavp_ecdsa2_siggen_test_main(int argc, char **argv);
65int cavp_ecdsa2_sigver_test_main(int argc, char **argv);
66int cavp_hmac_test_main(int argc, char **argv);
67int cavp_keywrap_test_main(int argc, char **argv);
68int cavp_rsa2_keygen_test_main(int argc, char **argv);
69int cavp_rsa2_siggen_test_main(int argc, char **argv);
70int cavp_rsa2_sigver_test_main(int argc, char **argv);
71int cavp_sha_monte_test_main(int argc, char **argv);
72int cavp_sha_test_main(int argc, char **argv);
73int cavp_tdes_test_main(int argc, char **argv);
74
Martin Kreichgauer7c125872017-04-24 13:29:11 -070075
76#endif // OPENSSL_HEADER_CRYPTO_FIPSMODULE_CAVP_TEST_UTIL_H