Import Upstream version 1.8.5
[hcoop/debian/openafs.git] / src / crypto / hcrypto / kernel / evp-algs.c
1 /* A cut down set of hcrypto EVP ciphers for kernel use */
2
3 #include <config.h>
4 #include <evp.h>
5 #include <evp-hcrypto.h>
6 #include <aes.h>
7 #include <sha.h>
8
9 static int
10 aes_init(EVP_CIPHER_CTX *ctx,
11 const unsigned char * key,
12 const unsigned char * iv,
13 int encp)
14 {
15 AES_KEY *k = ctx->cipher_data;
16 if (ctx->encrypt)
17 AES_set_encrypt_key(key, ctx->cipher->key_len * 8, k);
18 else
19 AES_set_decrypt_key(key, ctx->cipher->key_len * 8, k);
20 return 1;
21 }
22
23 static int
24 aes_do_cipher(EVP_CIPHER_CTX *ctx,
25 unsigned char *out,
26 const unsigned char *in,
27 unsigned int size)
28 {
29 AES_KEY *k = ctx->cipher_data;
30 if (ctx->flags & EVP_CIPH_CFB8_MODE)
31 AES_cfb8_encrypt(in, out, size, k, ctx->iv, ctx->encrypt);
32 else
33 AES_cbc_encrypt(in, out, size, k, ctx->iv, ctx->encrypt);
34 return 1;
35 }
36
37 const EVP_CIPHER *
38 EVP_hckernel_aes_128_cbc(void)
39 {
40 static const EVP_CIPHER aes_128_cbc = {
41 0,
42 16,
43 16,
44 16,
45 EVP_CIPH_CBC_MODE,
46 aes_init,
47 aes_do_cipher,
48 NULL,
49 sizeof(AES_KEY),
50 NULL,
51 NULL,
52 NULL,
53 NULL
54 };
55
56 return &aes_128_cbc;
57 }
58
59 const EVP_CIPHER *
60 EVP_hckernel_aes_256_cbc(void)
61 {
62 static const EVP_CIPHER aes_256_cbc = {
63 0,
64 16,
65 32,
66 16,
67 EVP_CIPH_CBC_MODE,
68 aes_init,
69 aes_do_cipher,
70 NULL,
71 sizeof(AES_KEY),
72 NULL,
73 NULL,
74 NULL,
75 NULL
76 };
77 return &aes_256_cbc;
78 }
79
80 const EVP_MD *
81 EVP_hckernel_sha1(void)
82 {
83 static const struct hc_evp_md sha1 = {
84 20,
85 64,
86 sizeof(SHA_CTX),
87 (hc_evp_md_init)SHA1_Init,
88 (hc_evp_md_update)SHA1_Update,
89 (hc_evp_md_final)SHA1_Final,
90 NULL
91 };
92 return &sha1;
93 }
94
95 const EVP_MD *
96 EVP_hckernel_sha256(void) {
97 return NULL;
98 }
99
100 const EVP_MD *
101 EVP_hckernel_sha384(void) {
102 return NULL;
103 }
104
105 const EVP_MD *
106 EVP_hckernel_sha512(void) {
107 return NULL;
108 }
109
110 const EVP_MD *
111 EVP_hckernel_md5(void) {
112 return NULL;
113 }
114
115 const EVP_MD *
116 EVP_hckernel_md4(void) {
117 return NULL;
118 }
119
120 const EVP_MD *
121 EVP_hckernel_md2(void) {
122 return NULL;
123 }
124
125 const EVP_CIPHER *
126 EVP_hckernel_rc2_cbc(void) {
127 return NULL;
128 }
129
130 const EVP_CIPHER *
131 EVP_hckernel_rc2_40_cbc(void) {
132 return NULL;
133 }
134
135 const EVP_CIPHER *
136 EVP_hckernel_rc2_64_cbc(void) {
137 return NULL;
138 }
139
140 const EVP_CIPHER *
141 EVP_hckernel_rc4(void) {
142 return NULL;
143 }
144
145 const EVP_CIPHER *
146 EVP_hckernel_rc4_40(void) {
147 return NULL;
148 }
149
150 const EVP_CIPHER *
151 EVP_hckernel_des_cbc(void) {
152 return NULL;
153 }
154
155 const EVP_CIPHER *
156 EVP_hckernel_des_ede3_cbc(void) {
157 return NULL;
158 }
159
160 const EVP_CIPHER *
161 EVP_hckernel_aes_192_cbc(void) {
162 return NULL;
163 }
164
165 const EVP_CIPHER *
166 EVP_hckernel_aes_128_cfb8(void) {
167 return NULL;
168 }
169
170 const EVP_CIPHER *
171 EVP_hckernel_aes_192_cfb8(void) {
172 return NULL;
173 }
174
175 const EVP_CIPHER *
176 EVP_hckernel_aes_256_cfb8(void) {
177 return NULL;
178 }
179
180 const EVP_CIPHER *
181 EVP_hckernel_camellia_128_cbc(void) {
182 return NULL;
183 }
184
185 const EVP_CIPHER *
186 EVP_hckernel_camellia_192_cbc(void) {
187 return NULL;
188 }
189
190 const EVP_CIPHER *
191 EVP_hckernel_camellia_256_cbc(void) {
192 return NULL;
193 }
194
195 void
196 hcrypto_validate(void) {
197 return;
198 }