1 /*
2 * Copyright (c) 2020 Netflix, Inc
3 *
4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions
6 * are met:
7 * 1. Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer,
9 * without modification.
10 * 2. Redistributions in binary form must reproduce at minimum a disclaimer
11 * similar to the "NO WARRANTY" disclaimer below ("Disclaimer") and any
12 * redistribution must be conditioned upon including a substantially
13 * similar Disclaimer requirement for further binary redistribution.
14 *
15 * NO WARRANTY
16 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
17 * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
18 * LIMITED TO, THE IMPLIED WARRANTIES OF NONINFRINGEMENT, MERCHANTIBILITY
19 * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
20 * THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY,
21 * OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
22 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
23 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
24 * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
25 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
26 * THE POSSIBILITY OF SUCH DAMAGES.
27 *
28 * $FreeBSD$
29 */
30
31 #ifndef __OSSL_H__
32 #define __OSSL_H__
33
34 /* Compatibility shims. */
35 #define OPENSSL_cleanse explicit_bzero
36
37 struct cryptop;
38 struct crypto_session_params;
39 struct ossl_softc;
40 struct ossl_session;
41
42 int ossl_chacha20_poly1305_decrypt(struct cryptop *crp,
43 const struct crypto_session_params *csp);
44 int ossl_chacha20_poly1305_encrypt(struct cryptop *crp,
45 const struct crypto_session_params *csp);
46 void ossl_cpuid(struct ossl_softc *sc);
47
48 struct ossl_softc {
49 int32_t sc_cid;
50 bool has_aes;
51 };
52
53 /* Needs to be big enough to hold any hash context. */
54 struct ossl_hash_context {
55 uint32_t dummy[61];
56 } __aligned(32);
57
58 struct ossl_cipher_context {
59 uint32_t dummy[61];
60 } __aligned(32);
61
62 struct ossl_session_hash {
63 struct ossl_hash_context ictx;
64 struct ossl_hash_context octx;
65 struct auth_hash *axf;
66 u_int mlen;
67 };
68
69 struct ossl_session_cipher {
70 struct ossl_cipher_context dec_ctx;
71 struct ossl_cipher_context enc_ctx;
72 struct ossl_cipher *cipher;
73 };
74
75 struct ossl_session {
76 struct ossl_session_cipher cipher;
77 struct ossl_session_hash hash;
78 };
79
80 extern struct auth_hash ossl_hash_poly1305;
81 extern struct auth_hash ossl_hash_sha1;
82 extern struct auth_hash ossl_hash_sha224;
83 extern struct auth_hash ossl_hash_sha256;
84 extern struct auth_hash ossl_hash_sha384;
85 extern struct auth_hash ossl_hash_sha512;
86
87 extern struct ossl_cipher ossl_cipher_aes_cbc;
88 extern struct ossl_cipher ossl_cipher_chacha20;
89
90 #endif /* !__OSSL_H__ */
Cache object: b40bf44b61623a693ad3ddd2bc8e3843
|