]> CyberLeo.Net >> Repos - FreeBSD/releng/10.0.git/blob - sys/mips/cavium/cryptocteon/cryptocteonvar.h
- Copy stable/10 (r259064) to releng/10.0 as part of the
[FreeBSD/releng/10.0.git] / sys / mips / cavium / cryptocteon / cryptocteonvar.h
1 /*
2  * Octeon Crypto for OCF
3  *
4  * Written by David McCullough <david_mccullough@securecomputing.com>
5  * Copyright (C) 2009 David McCullough
6  *
7  * LICENSE TERMS
8  *
9  * The free distribution and use of this software in both source and binary
10  * form is allowed (with or without changes) provided that:
11  *
12  *   1. distributions of this source code include the above copyright
13  *      notice, this list of conditions and the following disclaimer;
14  *
15  *   2. distributions in binary form include the above copyright
16  *      notice, this list of conditions and the following disclaimer
17  *      in the documentation and/or other associated materials;
18  *
19  *   3. the copyright holder's name is not used to endorse products
20  *      built using this software without specific written permission.
21  *
22  * DISCLAIMER
23  *
24  * This software is provided 'as is' with no explicit or implied warranties
25  * in respect of its properties, including, but not limited to, correctness
26  * and/or fitness for purpose.
27  * ---------------------------------------------------------------------------
28  *
29  * $FreeBSD$
30  */
31
32 #ifndef _MIPS_CAVIUM_CRYPTOCTEON_CRYPTOCTEONVAR_H_
33 #define _MIPS_CAVIUM_CRYPTOCTEON_CRYPTOCTEONVAR_H_
34
35 struct octo_sess;
36
37 typedef int octo_encrypt_t(struct octo_sess *od, struct iovec *iov, size_t iovcnt, size_t iovlen, int auth_off, int auth_len, int crypt_off, int crypt_len, int icv_off, uint8_t *ivp);
38 typedef int octo_decrypt_t(struct octo_sess *od, struct iovec *iov, size_t iovcnt, size_t iovlen, int auth_off, int auth_len, int crypt_off, int crypt_len, int icv_off, uint8_t *ivp);
39
40 struct octo_sess {
41         int                                      octo_encalg;
42         #define MAX_CIPHER_KEYLEN       64
43         char                             octo_enckey[MAX_CIPHER_KEYLEN];
44         int                                      octo_encklen;
45
46         int                                      octo_macalg;
47         #define MAX_HASH_KEYLEN 64
48         char                             octo_mackey[MAX_HASH_KEYLEN];
49         int                                      octo_macklen;
50         int                                      octo_mackey_set;
51
52         int                                      octo_mlen;
53         int                                      octo_ivsize;
54
55         octo_encrypt_t                          *octo_encrypt;
56         octo_decrypt_t                          *octo_decrypt;
57
58         uint64_t                         octo_hminner[3];
59         uint64_t                         octo_hmouter[3];
60
61         struct iovec                            octo_iov[UIO_MAXIOV];
62 };
63
64 #define dprintf(fmt, ...)                                               \
65         do {                                                            \
66                 if (cryptocteon_debug)                                  \
67                         printf("%s: " fmt, __func__, ## __VA_ARGS__);   \
68         } while (0)
69
70 extern int cryptocteon_debug;
71
72 void octo_calc_hash(uint8_t, unsigned char *, uint64_t *, uint64_t *);
73
74 /* XXX Actually just hashing functions, not encryption.  */
75 octo_encrypt_t octo_null_md5_encrypt;
76 octo_encrypt_t octo_null_sha1_encrypt;
77
78 octo_encrypt_t octo_des_cbc_encrypt;
79 octo_encrypt_t octo_des_cbc_md5_encrypt;
80 octo_encrypt_t octo_des_cbc_sha1_encrypt;
81
82 octo_decrypt_t octo_des_cbc_decrypt;
83 octo_decrypt_t octo_des_cbc_md5_decrypt;
84 octo_decrypt_t octo_des_cbc_sha1_decrypt;
85
86 octo_encrypt_t octo_aes_cbc_encrypt;
87 octo_encrypt_t octo_aes_cbc_md5_encrypt;
88 octo_encrypt_t octo_aes_cbc_sha1_encrypt;
89
90 octo_decrypt_t octo_aes_cbc_decrypt;
91 octo_decrypt_t octo_aes_cbc_md5_decrypt;
92 octo_decrypt_t octo_aes_cbc_sha1_decrypt;
93
94 #endif /* !_MIPS_CAVIUM_CRYPTOCTEON_CRYPTOCTEONVAR_H_ */