cryptocteonvar.h revision 210312
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: head/sys/mips/cavium/cryptocteon/cryptocteonvar.h 210312 2010-07-20 19:32:25Z jmallett $ 30 */ 31 32#ifndef _MIPS_CAVIUM_CRYPTOCTEON_CRYPTOCTEONVAR_H_ 33#define _MIPS_CAVIUM_CRYPTOCTEON_CRYPTOCTEONVAR_H_ 34 35struct octo_sess; 36 37typedef 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); 38typedef 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 40struct 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 70extern int cryptocteon_debug; 71 72void octo_calc_hash(uint8_t, unsigned char *, uint64_t *, uint64_t *); 73 74/* XXX Actually just hashing functions, not encryption. */ 75octo_encrypt_t octo_null_md5_encrypt; 76octo_encrypt_t octo_null_sha1_encrypt; 77 78octo_encrypt_t octo_des_cbc_encrypt; 79octo_encrypt_t octo_des_cbc_md5_encrypt; 80octo_encrypt_t octo_des_cbc_sha1_encrypt; 81 82octo_decrypt_t octo_des_cbc_decrypt; 83octo_decrypt_t octo_des_cbc_md5_decrypt; 84octo_decrypt_t octo_des_cbc_sha1_decrypt; 85 86octo_encrypt_t octo_aes_cbc_encrypt; 87octo_encrypt_t octo_aes_cbc_md5_encrypt; 88octo_encrypt_t octo_aes_cbc_sha1_encrypt; 89 90octo_decrypt_t octo_aes_cbc_decrypt; 91octo_decrypt_t octo_aes_cbc_md5_decrypt; 92octo_decrypt_t octo_aes_cbc_sha1_decrypt; 93 94#endif /* !_MIPS_CAVIUM_CRYPTOCTEON_CRYPTOCTEONVAR_H_ */ 95