2 * Octeon Crypto for OCF
4 * Written by David McCullough <david_mccullough@securecomputing.com>
5 * Copyright (C) 2009 David McCullough
9 * The free distribution and use of this software in both source and binary
10 * form is allowed (with or without changes) provided that:
12 * 1. distributions of this source code include the above copyright
13 * notice, this list of conditions and the following disclaimer;
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;
19 * 3. the copyright holder's name is not used to endorse products
20 * built using this software without specific written permission.
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 * ---------------------------------------------------------------------------
32 #ifndef _MIPS_CAVIUM_CRYPTOCTEON_CRYPTOCTEONVAR_H_
33 #define _MIPS_CAVIUM_CRYPTOCTEON_CRYPTOCTEONVAR_H_
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);
42 #define MAX_CIPHER_KEYLEN 64
43 char octo_enckey[MAX_CIPHER_KEYLEN];
47 #define MAX_HASH_KEYLEN 64
48 char octo_mackey[MAX_HASH_KEYLEN];
55 octo_encrypt_t *octo_encrypt;
56 octo_decrypt_t *octo_decrypt;
58 uint64_t octo_hminner[3];
59 uint64_t octo_hmouter[3];
61 struct iovec octo_iov[UIO_MAXIOV];
64 #define dprintf(fmt, ...) \
66 if (cryptocteon_debug) \
67 printf("%s: " fmt, __func__, ## __VA_ARGS__); \
70 extern int cryptocteon_debug;
72 void octo_calc_hash(uint8_t, unsigned char *, uint64_t *, uint64_t *);
74 /* XXX Actually just hashing functions, not encryption. */
75 octo_encrypt_t octo_null_md5_encrypt;
76 octo_encrypt_t octo_null_sha1_encrypt;
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;
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;
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;
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;
94 #endif /* !_MIPS_CAVIUM_CRYPTOCTEON_CRYPTOCTEONVAR_H_ */