Blame view
include/linux/crypto.h
32.3 KB
1da177e4c Linux-2.6.12-rc2 |
1 2 3 4 5 |
/* * Scatterlist Cryptographic API. * * Copyright (c) 2002 James Morris <jmorris@intercode.com.au> * Copyright (c) 2002 David S. Miller (davem@redhat.com) |
5cb1454b8 [CRYPTO] Allow mu... |
6 |
* Copyright (c) 2005 Herbert Xu <herbert@gondor.apana.org.au> |
1da177e4c Linux-2.6.12-rc2 |
7 8 |
* * Portions derived from Cryptoapi, by Alexander Kjeldaas <astor@fast.no> |
18735dd8d crypto: convert c... |
9 |
* and Nettle, by Niels Möller. |
1da177e4c Linux-2.6.12-rc2 |
10 11 12 13 14 15 16 17 18 |
* * This program is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the Free * Software Foundation; either version 2 of the License, or (at your option) * any later version. * */ #ifndef _LINUX_CRYPTO_H #define _LINUX_CRYPTO_H |
60063497a atomic: use <linu... |
19 |
#include <linux/atomic.h> |
1da177e4c Linux-2.6.12-rc2 |
20 |
#include <linux/kernel.h> |
1da177e4c Linux-2.6.12-rc2 |
21 |
#include <linux/list.h> |
799111020 [CRYPTO] api: Fix... |
22 |
#include <linux/slab.h> |
1da177e4c Linux-2.6.12-rc2 |
23 |
#include <linux/string.h> |
799111020 [CRYPTO] api: Fix... |
24 |
#include <linux/uaccess.h> |
1da177e4c Linux-2.6.12-rc2 |
25 26 27 28 |
/* * Algorithm masks and types. */ |
2825982d9 [CRYPTO] api: Add... |
29 |
#define CRYPTO_ALG_TYPE_MASK 0x0000000f |
1da177e4c Linux-2.6.12-rc2 |
30 |
#define CRYPTO_ALG_TYPE_CIPHER 0x00000001 |
004a403c2 [CRYPTO] hash: Ad... |
31 32 |
#define CRYPTO_ALG_TYPE_COMPRESS 0x00000002 #define CRYPTO_ALG_TYPE_AEAD 0x00000003 |
055bcee31 [CRYPTO] digest: ... |
33 |
#define CRYPTO_ALG_TYPE_BLKCIPHER 0x00000004 |
332f8840f [CRYPTO] ablkciph... |
34 |
#define CRYPTO_ALG_TYPE_ABLKCIPHER 0x00000005 |
61da88e2b [CRYPTO] skcipher... |
35 |
#define CRYPTO_ALG_TYPE_GIVCIPHER 0x00000006 |
004a403c2 [CRYPTO] hash: Ad... |
36 |
#define CRYPTO_ALG_TYPE_DIGEST 0x00000008 |
5f7082ed4 crypto: hash - Ex... |
37 38 |
#define CRYPTO_ALG_TYPE_HASH 0x00000008 #define CRYPTO_ALG_TYPE_SHASH 0x00000009 |
004a403c2 [CRYPTO] hash: Ad... |
39 |
#define CRYPTO_ALG_TYPE_AHASH 0x0000000a |
17f0f4a47 crypto: rng - RNG... |
40 |
#define CRYPTO_ALG_TYPE_RNG 0x0000000c |
a1d2f0954 crypto: compress ... |
41 |
#define CRYPTO_ALG_TYPE_PCOMPRESS 0x0000000f |
055bcee31 [CRYPTO] digest: ... |
42 43 |
#define CRYPTO_ALG_TYPE_HASH_MASK 0x0000000e |
004a403c2 [CRYPTO] hash: Ad... |
44 |
#define CRYPTO_ALG_TYPE_AHASH_MASK 0x0000000c |
332f8840f [CRYPTO] ablkciph... |
45 |
#define CRYPTO_ALG_TYPE_BLKCIPHER_MASK 0x0000000c |
1da177e4c Linux-2.6.12-rc2 |
46 |
|
2825982d9 [CRYPTO] api: Add... |
47 |
#define CRYPTO_ALG_LARVAL 0x00000010 |
6bfd48096 [CRYPTO] api: Add... |
48 49 |
#define CRYPTO_ALG_DEAD 0x00000020 #define CRYPTO_ALG_DYING 0x00000040 |
f3f632d61 [CRYPTO] api: Add... |
50 |
#define CRYPTO_ALG_ASYNC 0x00000080 |
2825982d9 [CRYPTO] api: Add... |
51 |
|
1da177e4c Linux-2.6.12-rc2 |
52 |
/* |
6010439f4 [CRYPTO] padlock:... |
53 54 55 56 57 58 |
* Set this bit if and only if the algorithm requires another algorithm of * the same type to handle corner cases. */ #define CRYPTO_ALG_NEED_FALLBACK 0x00000100 /* |
ecfc43292 [CRYPTO] skcipher... |
59 60 61 62 63 64 |
* This bit is set for symmetric key ciphers that have already been wrapped * with a generic IV generator to prevent them from being wrapped again. */ #define CRYPTO_ALG_GENIV 0x00000200 /* |
73d3864a4 crypto: api - Use... |
65 66 67 68 69 70 71 72 |
* Set if the algorithm has passed automated run-time testing. Note that * if there is no run-time testing for a given algorithm it is considered * to have passed. */ #define CRYPTO_ALG_TESTED 0x00000400 /* |
64a947b13 crypto: Add a fla... |
73 74 75 76 77 |
* Set if the algorithm is an instance that is build from templates. */ #define CRYPTO_ALG_INSTANCE 0x00000800 /* |
1da177e4c Linux-2.6.12-rc2 |
78 79 |
* Transform masks and values (for crt_flags). */ |
1da177e4c Linux-2.6.12-rc2 |
80 81 |
#define CRYPTO_TFM_REQ_MASK 0x000fff00 #define CRYPTO_TFM_RES_MASK 0xfff00000 |
1da177e4c Linux-2.6.12-rc2 |
82 |
#define CRYPTO_TFM_REQ_WEAK_KEY 0x00000100 |
64baf3cfe [CRYPTO]: Added C... |
83 |
#define CRYPTO_TFM_REQ_MAY_SLEEP 0x00000200 |
32e3983fe [CRYPTO] api: Add... |
84 |
#define CRYPTO_TFM_REQ_MAY_BACKLOG 0x00000400 |
1da177e4c Linux-2.6.12-rc2 |
85 86 87 88 89 90 91 92 93 |
#define CRYPTO_TFM_RES_WEAK_KEY 0x00100000 #define CRYPTO_TFM_RES_BAD_KEY_LEN 0x00200000 #define CRYPTO_TFM_RES_BAD_KEY_SCHED 0x00400000 #define CRYPTO_TFM_RES_BAD_BLOCK_LEN 0x00800000 #define CRYPTO_TFM_RES_BAD_FLAGS 0x01000000 /* * Miscellaneous stuff. */ |
1da177e4c Linux-2.6.12-rc2 |
94 |
#define CRYPTO_MAX_ALG_NAME 64 |
799111020 [CRYPTO] api: Fix... |
95 96 97 98 99 100 101 102 |
/* * The macro CRYPTO_MINALIGN_ATTR (along with the void * type in the actual * declaration) is used to ensure that the crypto_tfm context structure is * aligned correctly for the given architecture so that there are no alignment * faults for C data types. In particular, this is required on platforms such * as arm where pointers are 32-bit aligned but there are data types such as * u64 which require 64-bit alignment. */ |
799111020 [CRYPTO] api: Fix... |
103 |
#define CRYPTO_MINALIGN ARCH_KMALLOC_MINALIGN |
799111020 [CRYPTO] api: Fix... |
104 |
|
799111020 [CRYPTO] api: Fix... |
105 |
#define CRYPTO_MINALIGN_ATTR __attribute__ ((__aligned__(CRYPTO_MINALIGN))) |
799111020 [CRYPTO] api: Fix... |
106 |
|
1da177e4c Linux-2.6.12-rc2 |
107 |
struct scatterlist; |
32e3983fe [CRYPTO] api: Add... |
108 109 |
struct crypto_ablkcipher; struct crypto_async_request; |
1ae978208 [CRYPTO] api: Add... |
110 |
struct crypto_aead; |
5cde0af2a [CRYPTO] cipher: ... |
111 |
struct crypto_blkcipher; |
055bcee31 [CRYPTO] digest: ... |
112 |
struct crypto_hash; |
17f0f4a47 crypto: rng - RNG... |
113 |
struct crypto_rng; |
40725181b [CRYPTO] Add supp... |
114 |
struct crypto_tfm; |
e853c3cfa [CRYPTO] api: Add... |
115 |
struct crypto_type; |
743edf572 [CRYPTO] aead: Ad... |
116 |
struct aead_givcrypt_request; |
61da88e2b [CRYPTO] skcipher... |
117 |
struct skcipher_givcrypt_request; |
40725181b [CRYPTO] Add supp... |
118 |
|
32e3983fe [CRYPTO] api: Add... |
119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 |
typedef void (*crypto_completion_t)(struct crypto_async_request *req, int err); struct crypto_async_request { struct list_head list; crypto_completion_t complete; void *data; struct crypto_tfm *tfm; u32 flags; }; struct ablkcipher_request { struct crypto_async_request base; unsigned int nbytes; void *info; struct scatterlist *src; struct scatterlist *dst; void *__ctx[] CRYPTO_MINALIGN_ATTR; }; |
1ae978208 [CRYPTO] api: Add... |
142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 |
/** * struct aead_request - AEAD request * @base: Common attributes for async crypto requests * @assoclen: Length in bytes of associated data for authentication * @cryptlen: Length of data to be encrypted or decrypted * @iv: Initialisation vector * @assoc: Associated data * @src: Source data * @dst: Destination data * @__ctx: Start of private context data */ struct aead_request { struct crypto_async_request base; unsigned int assoclen; unsigned int cryptlen; u8 *iv; struct scatterlist *assoc; struct scatterlist *src; struct scatterlist *dst; void *__ctx[] CRYPTO_MINALIGN_ATTR; }; |
5cde0af2a [CRYPTO] cipher: ... |
167 168 169 170 171 |
struct blkcipher_desc { struct crypto_blkcipher *tfm; void *info; u32 flags; }; |
40725181b [CRYPTO] Add supp... |
172 173 |
struct cipher_desc { struct crypto_tfm *tfm; |
6c2bb98bc [CRYPTO] all: Pas... |
174 |
void (*crfn)(struct crypto_tfm *tfm, u8 *dst, const u8 *src); |
40725181b [CRYPTO] Add supp... |
175 176 177 178 |
unsigned int (*prfn)(const struct cipher_desc *desc, u8 *dst, const u8 *src, unsigned int nbytes); void *info; }; |
1da177e4c Linux-2.6.12-rc2 |
179 |
|
055bcee31 [CRYPTO] digest: ... |
180 181 182 183 |
struct hash_desc { struct crypto_hash *tfm; u32 flags; }; |
1da177e4c Linux-2.6.12-rc2 |
184 185 186 187 |
/* * Algorithms: modular crypto algorithm implementations, managed * via crypto_register_alg() and crypto_unregister_alg(). */ |
b5b7f0886 [CRYPTO] api: Add... |
188 189 190 191 192 |
struct ablkcipher_alg { int (*setkey)(struct crypto_ablkcipher *tfm, const u8 *key, unsigned int keylen); int (*encrypt)(struct ablkcipher_request *req); int (*decrypt)(struct ablkcipher_request *req); |
61da88e2b [CRYPTO] skcipher... |
193 194 |
int (*givencrypt)(struct skcipher_givcrypt_request *req); int (*givdecrypt)(struct skcipher_givcrypt_request *req); |
b5b7f0886 [CRYPTO] api: Add... |
195 |
|
23508e11a [CRYPTO] skcipher... |
196 |
const char *geniv; |
b5b7f0886 [CRYPTO] api: Add... |
197 198 199 200 |
unsigned int min_keysize; unsigned int max_keysize; unsigned int ivsize; }; |
1ae978208 [CRYPTO] api: Add... |
201 202 203 |
struct aead_alg { int (*setkey)(struct crypto_aead *tfm, const u8 *key, unsigned int keylen); |
7ba683a6d [CRYPTO] aead: Ma... |
204 |
int (*setauthsize)(struct crypto_aead *tfm, unsigned int authsize); |
1ae978208 [CRYPTO] api: Add... |
205 206 |
int (*encrypt)(struct aead_request *req); int (*decrypt)(struct aead_request *req); |
743edf572 [CRYPTO] aead: Ad... |
207 208 |
int (*givencrypt)(struct aead_givcrypt_request *req); int (*givdecrypt)(struct aead_givcrypt_request *req); |
1ae978208 [CRYPTO] api: Add... |
209 |
|
5b6d2d7fd [CRYPTO] aead: Ad... |
210 |
const char *geniv; |
1ae978208 [CRYPTO] api: Add... |
211 |
unsigned int ivsize; |
7ba683a6d [CRYPTO] aead: Ma... |
212 |
unsigned int maxauthsize; |
1ae978208 [CRYPTO] api: Add... |
213 |
}; |
5cde0af2a [CRYPTO] cipher: ... |
214 215 216 217 218 219 220 221 222 |
struct blkcipher_alg { int (*setkey)(struct crypto_tfm *tfm, const u8 *key, unsigned int keylen); int (*encrypt)(struct blkcipher_desc *desc, struct scatterlist *dst, struct scatterlist *src, unsigned int nbytes); int (*decrypt)(struct blkcipher_desc *desc, struct scatterlist *dst, struct scatterlist *src, unsigned int nbytes); |
23508e11a [CRYPTO] skcipher... |
223 |
const char *geniv; |
5cde0af2a [CRYPTO] cipher: ... |
224 225 226 227 |
unsigned int min_keysize; unsigned int max_keysize; unsigned int ivsize; }; |
1da177e4c Linux-2.6.12-rc2 |
228 229 230 |
struct cipher_alg { unsigned int cia_min_keysize; unsigned int cia_max_keysize; |
6c2bb98bc [CRYPTO] all: Pas... |
231 |
int (*cia_setkey)(struct crypto_tfm *tfm, const u8 *key, |
560c06ae1 [CRYPTO] api: Get... |
232 |
unsigned int keylen); |
6c2bb98bc [CRYPTO] all: Pas... |
233 234 |
void (*cia_encrypt)(struct crypto_tfm *tfm, u8 *dst, const u8 *src); void (*cia_decrypt)(struct crypto_tfm *tfm, u8 *dst, const u8 *src); |
1da177e4c Linux-2.6.12-rc2 |
235 |
}; |
1da177e4c Linux-2.6.12-rc2 |
236 |
struct compress_alg { |
6c2bb98bc [CRYPTO] all: Pas... |
237 238 239 240 |
int (*coa_compress)(struct crypto_tfm *tfm, const u8 *src, unsigned int slen, u8 *dst, unsigned int *dlen); int (*coa_decompress)(struct crypto_tfm *tfm, const u8 *src, unsigned int slen, u8 *dst, unsigned int *dlen); |
1da177e4c Linux-2.6.12-rc2 |
241 |
}; |
17f0f4a47 crypto: rng - RNG... |
242 243 244 245 246 247 248 |
struct rng_alg { int (*rng_make_random)(struct crypto_rng *tfm, u8 *rdata, unsigned int dlen); int (*rng_reset)(struct crypto_rng *tfm, u8 *seed, unsigned int slen); unsigned int seedsize; }; |
b5b7f0886 [CRYPTO] api: Add... |
249 |
#define cra_ablkcipher cra_u.ablkcipher |
1ae978208 [CRYPTO] api: Add... |
250 |
#define cra_aead cra_u.aead |
5cde0af2a [CRYPTO] cipher: ... |
251 |
#define cra_blkcipher cra_u.blkcipher |
1da177e4c Linux-2.6.12-rc2 |
252 |
#define cra_cipher cra_u.cipher |
1da177e4c Linux-2.6.12-rc2 |
253 |
#define cra_compress cra_u.compress |
17f0f4a47 crypto: rng - RNG... |
254 |
#define cra_rng cra_u.rng |
1da177e4c Linux-2.6.12-rc2 |
255 256 257 |
struct crypto_alg { struct list_head cra_list; |
6bfd48096 [CRYPTO] api: Add... |
258 |
struct list_head cra_users; |
1da177e4c Linux-2.6.12-rc2 |
259 260 261 |
u32 cra_flags; unsigned int cra_blocksize; unsigned int cra_ctxsize; |
954773779 [CRYPTO] Add alig... |
262 |
unsigned int cra_alignmask; |
5cb1454b8 [CRYPTO] Allow mu... |
263 264 |
int cra_priority; |
6521f3027 [CRYPTO] api: Add... |
265 |
atomic_t cra_refcnt; |
5cb1454b8 [CRYPTO] Allow mu... |
266 |
|
d913ea0d6 [CRYPTO] api: Rem... |
267 268 |
char cra_name[CRYPTO_MAX_ALG_NAME]; char cra_driver_name[CRYPTO_MAX_ALG_NAME]; |
1da177e4c Linux-2.6.12-rc2 |
269 |
|
e853c3cfa [CRYPTO] api: Add... |
270 |
const struct crypto_type *cra_type; |
1da177e4c Linux-2.6.12-rc2 |
271 |
union { |
b5b7f0886 [CRYPTO] api: Add... |
272 |
struct ablkcipher_alg ablkcipher; |
1ae978208 [CRYPTO] api: Add... |
273 |
struct aead_alg aead; |
5cde0af2a [CRYPTO] cipher: ... |
274 |
struct blkcipher_alg blkcipher; |
1da177e4c Linux-2.6.12-rc2 |
275 |
struct cipher_alg cipher; |
1da177e4c Linux-2.6.12-rc2 |
276 |
struct compress_alg compress; |
17f0f4a47 crypto: rng - RNG... |
277 |
struct rng_alg rng; |
1da177e4c Linux-2.6.12-rc2 |
278 |
} cra_u; |
c7fc05992 [CRYPTO] api: Add... |
279 280 281 |
int (*cra_init)(struct crypto_tfm *tfm); void (*cra_exit)(struct crypto_tfm *tfm); |
6521f3027 [CRYPTO] api: Add... |
282 |
void (*cra_destroy)(struct crypto_alg *alg); |
1da177e4c Linux-2.6.12-rc2 |
283 284 285 286 287 288 289 290 291 292 293 294 295 |
struct module *cra_module; }; /* * Algorithm registration interface. */ int crypto_register_alg(struct crypto_alg *alg); int crypto_unregister_alg(struct crypto_alg *alg); /* * Algorithm query interface. */ |
fce32d70b [CRYPTO] api: Add... |
296 |
int crypto_has_alg(const char *name, u32 type, u32 mask); |
1da177e4c Linux-2.6.12-rc2 |
297 298 299 |
/* * Transforms: user-instantiated objects which encapsulate algorithms |
6d7d684d6 [CRYPTO] api: Add... |
300 301 |
* and core processing logic. Managed via crypto_alloc_*() and * crypto_free_*(), as well as the various helpers below. |
1da177e4c Linux-2.6.12-rc2 |
302 |
*/ |
1da177e4c Linux-2.6.12-rc2 |
303 |
|
32e3983fe [CRYPTO] api: Add... |
304 305 306 307 308 |
struct ablkcipher_tfm { int (*setkey)(struct crypto_ablkcipher *tfm, const u8 *key, unsigned int keylen); int (*encrypt)(struct ablkcipher_request *req); int (*decrypt)(struct ablkcipher_request *req); |
61da88e2b [CRYPTO] skcipher... |
309 310 |
int (*givencrypt)(struct skcipher_givcrypt_request *req); int (*givdecrypt)(struct skcipher_givcrypt_request *req); |
ecfc43292 [CRYPTO] skcipher... |
311 |
struct crypto_ablkcipher *base; |
32e3983fe [CRYPTO] api: Add... |
312 313 314 |
unsigned int ivsize; unsigned int reqsize; }; |
1ae978208 [CRYPTO] api: Add... |
315 316 317 318 319 |
struct aead_tfm { int (*setkey)(struct crypto_aead *tfm, const u8 *key, unsigned int keylen); int (*encrypt)(struct aead_request *req); int (*decrypt)(struct aead_request *req); |
743edf572 [CRYPTO] aead: Ad... |
320 321 |
int (*givencrypt)(struct aead_givcrypt_request *req); int (*givdecrypt)(struct aead_givcrypt_request *req); |
5b6d2d7fd [CRYPTO] aead: Ad... |
322 323 |
struct crypto_aead *base; |
1ae978208 [CRYPTO] api: Add... |
324 325 326 327 |
unsigned int ivsize; unsigned int authsize; unsigned int reqsize; }; |
5cde0af2a [CRYPTO] cipher: ... |
328 329 330 331 332 333 334 335 336 |
struct blkcipher_tfm { void *iv; int (*setkey)(struct crypto_tfm *tfm, const u8 *key, unsigned int keylen); int (*encrypt)(struct blkcipher_desc *desc, struct scatterlist *dst, struct scatterlist *src, unsigned int nbytes); int (*decrypt)(struct blkcipher_desc *desc, struct scatterlist *dst, struct scatterlist *src, unsigned int nbytes); }; |
1da177e4c Linux-2.6.12-rc2 |
337 |
struct cipher_tfm { |
1da177e4c Linux-2.6.12-rc2 |
338 339 |
int (*cit_setkey)(struct crypto_tfm *tfm, const u8 *key, unsigned int keylen); |
f28776a36 [CRYPTO] cipher: ... |
340 341 |
void (*cit_encrypt_one)(struct crypto_tfm *tfm, u8 *dst, const u8 *src); void (*cit_decrypt_one)(struct crypto_tfm *tfm, u8 *dst, const u8 *src); |
1da177e4c Linux-2.6.12-rc2 |
342 |
}; |
055bcee31 [CRYPTO] digest: ... |
343 344 345 346 347 348 349 350 351 |
struct hash_tfm { int (*init)(struct hash_desc *desc); int (*update)(struct hash_desc *desc, struct scatterlist *sg, unsigned int nsg); int (*final)(struct hash_desc *desc, u8 *out); int (*digest)(struct hash_desc *desc, struct scatterlist *sg, unsigned int nsg, u8 *out); int (*setkey)(struct crypto_hash *tfm, const u8 *key, unsigned int keylen); |
055bcee31 [CRYPTO] digest: ... |
352 |
unsigned int digestsize; |
1da177e4c Linux-2.6.12-rc2 |
353 354 355 356 357 358 359 360 361 362 |
}; struct compress_tfm { int (*cot_compress)(struct crypto_tfm *tfm, const u8 *src, unsigned int slen, u8 *dst, unsigned int *dlen); int (*cot_decompress)(struct crypto_tfm *tfm, const u8 *src, unsigned int slen, u8 *dst, unsigned int *dlen); }; |
17f0f4a47 crypto: rng - RNG... |
363 364 365 366 367 |
struct rng_tfm { int (*rng_gen_random)(struct crypto_rng *tfm, u8 *rdata, unsigned int dlen); int (*rng_reset)(struct crypto_rng *tfm, u8 *seed, unsigned int slen); }; |
32e3983fe [CRYPTO] api: Add... |
368 |
#define crt_ablkcipher crt_u.ablkcipher |
1ae978208 [CRYPTO] api: Add... |
369 |
#define crt_aead crt_u.aead |
5cde0af2a [CRYPTO] cipher: ... |
370 |
#define crt_blkcipher crt_u.blkcipher |
1da177e4c Linux-2.6.12-rc2 |
371 |
#define crt_cipher crt_u.cipher |
055bcee31 [CRYPTO] digest: ... |
372 |
#define crt_hash crt_u.hash |
1da177e4c Linux-2.6.12-rc2 |
373 |
#define crt_compress crt_u.compress |
17f0f4a47 crypto: rng - RNG... |
374 |
#define crt_rng crt_u.rng |
1da177e4c Linux-2.6.12-rc2 |
375 376 377 378 379 380 |
struct crypto_tfm { u32 crt_flags; union { |
32e3983fe [CRYPTO] api: Add... |
381 |
struct ablkcipher_tfm ablkcipher; |
1ae978208 [CRYPTO] api: Add... |
382 |
struct aead_tfm aead; |
5cde0af2a [CRYPTO] cipher: ... |
383 |
struct blkcipher_tfm blkcipher; |
1da177e4c Linux-2.6.12-rc2 |
384 |
struct cipher_tfm cipher; |
055bcee31 [CRYPTO] digest: ... |
385 |
struct hash_tfm hash; |
1da177e4c Linux-2.6.12-rc2 |
386 |
struct compress_tfm compress; |
17f0f4a47 crypto: rng - RNG... |
387 |
struct rng_tfm rng; |
1da177e4c Linux-2.6.12-rc2 |
388 |
} crt_u; |
4a7794860 crypto: api - Mov... |
389 390 |
void (*exit)(struct crypto_tfm *tfm); |
1da177e4c Linux-2.6.12-rc2 |
391 392 |
struct crypto_alg *__crt_alg; |
f10b7897e [CRYPTO] api: Ali... |
393 |
|
799111020 [CRYPTO] api: Fix... |
394 |
void *__crt_ctx[] CRYPTO_MINALIGN_ATTR; |
1da177e4c Linux-2.6.12-rc2 |
395 |
}; |
32e3983fe [CRYPTO] api: Add... |
396 397 398 |
struct crypto_ablkcipher { struct crypto_tfm base; }; |
1ae978208 [CRYPTO] api: Add... |
399 400 401 |
struct crypto_aead { struct crypto_tfm base; }; |
5cde0af2a [CRYPTO] cipher: ... |
402 403 404 |
struct crypto_blkcipher { struct crypto_tfm base; }; |
78a1fe4f2 [CRYPTO] api: Use... |
405 406 407 408 409 410 411 |
struct crypto_cipher { struct crypto_tfm base; }; struct crypto_comp { struct crypto_tfm base; }; |
055bcee31 [CRYPTO] digest: ... |
412 413 414 |
struct crypto_hash { struct crypto_tfm base; }; |
17f0f4a47 crypto: rng - RNG... |
415 416 417 |
struct crypto_rng { struct crypto_tfm base; }; |
2b8c19dbd [CRYPTO] api: Add... |
418 419 420 |
enum { CRYPTOA_UNSPEC, CRYPTOA_ALG, |
ebc610e5b [CRYPTO] template... |
421 |
CRYPTOA_TYPE, |
39e1ee011 [CRYPTO] api: Add... |
422 |
CRYPTOA_U32, |
ebc610e5b [CRYPTO] template... |
423 |
__CRYPTOA_MAX, |
2b8c19dbd [CRYPTO] api: Add... |
424 |
}; |
ebc610e5b [CRYPTO] template... |
425 |
#define CRYPTOA_MAX (__CRYPTOA_MAX - 1) |
39e1ee011 [CRYPTO] api: Add... |
426 427 |
/* Maximum number of (rtattr) parameters for each template. */ #define CRYPTO_MAX_ATTRS 32 |
2b8c19dbd [CRYPTO] api: Add... |
428 429 430 |
struct crypto_attr_alg { char name[CRYPTO_MAX_ALG_NAME]; }; |
ebc610e5b [CRYPTO] template... |
431 432 433 434 |
struct crypto_attr_type { u32 type; u32 mask; }; |
39e1ee011 [CRYPTO] api: Add... |
435 436 437 |
struct crypto_attr_u32 { u32 num; }; |
1da177e4c Linux-2.6.12-rc2 |
438 439 440 441 |
/* * Transform user interface. */ |
6d7d684d6 [CRYPTO] api: Add... |
442 |
struct crypto_tfm *crypto_alloc_base(const char *alg_name, u32 type, u32 mask); |
7b2cd92ad crypto: api - Fix... |
443 444 445 446 447 448 |
void crypto_destroy_tfm(void *mem, struct crypto_tfm *tfm); static inline void crypto_free_tfm(struct crypto_tfm *tfm) { return crypto_destroy_tfm(tfm, tfm); } |
1da177e4c Linux-2.6.12-rc2 |
449 |
|
da7f033dd crypto: cryptomgr... |
450 |
int alg_test(const char *driver, const char *alg, u32 type, u32 mask); |
1da177e4c Linux-2.6.12-rc2 |
451 452 453 454 455 456 457 |
/* * Transform helpers which query the underlying algorithm. */ static inline const char *crypto_tfm_alg_name(struct crypto_tfm *tfm) { return tfm->__crt_alg->cra_name; } |
b14cdd670 [CRYPTO] api: Add... |
458 459 460 461 462 463 464 465 466 |
static inline const char *crypto_tfm_alg_driver_name(struct crypto_tfm *tfm) { return tfm->__crt_alg->cra_driver_name; } static inline int crypto_tfm_alg_priority(struct crypto_tfm *tfm) { return tfm->__crt_alg->cra_priority; } |
1da177e4c Linux-2.6.12-rc2 |
467 468 469 470 |
static inline u32 crypto_tfm_alg_type(struct crypto_tfm *tfm) { return tfm->__crt_alg->cra_flags & CRYPTO_ALG_TYPE_MASK; } |
1da177e4c Linux-2.6.12-rc2 |
471 472 473 474 |
static inline unsigned int crypto_tfm_alg_blocksize(struct crypto_tfm *tfm) { return tfm->__crt_alg->cra_blocksize; } |
fbdae9f3e [CRYPTO] Ensure c... |
475 476 477 478 |
static inline unsigned int crypto_tfm_alg_alignmask(struct crypto_tfm *tfm) { return tfm->__crt_alg->cra_alignmask; } |
f28776a36 [CRYPTO] cipher: ... |
479 480 481 482 483 484 485 486 487 488 489 490 491 492 |
static inline u32 crypto_tfm_get_flags(struct crypto_tfm *tfm) { return tfm->crt_flags; } static inline void crypto_tfm_set_flags(struct crypto_tfm *tfm, u32 flags) { tfm->crt_flags |= flags; } static inline void crypto_tfm_clear_flags(struct crypto_tfm *tfm, u32 flags) { tfm->crt_flags &= ~flags; } |
40725181b [CRYPTO] Add supp... |
493 494 |
static inline void *crypto_tfm_ctx(struct crypto_tfm *tfm) { |
f10b7897e [CRYPTO] api: Ali... |
495 496 497 498 499 500 501 |
return tfm->__crt_ctx; } static inline unsigned int crypto_tfm_ctx_alignment(void) { struct crypto_tfm *tfm; return __alignof__(tfm->__crt_ctx); |
40725181b [CRYPTO] Add supp... |
502 |
} |
1da177e4c Linux-2.6.12-rc2 |
503 504 505 |
/* * API wrappers. */ |
32e3983fe [CRYPTO] api: Add... |
506 507 508 509 510 |
static inline struct crypto_ablkcipher *__crypto_ablkcipher_cast( struct crypto_tfm *tfm) { return (struct crypto_ablkcipher *)tfm; } |
378f4f51f [CRYPTO] skcipher... |
511 |
static inline u32 crypto_skcipher_type(u32 type) |
32e3983fe [CRYPTO] api: Add... |
512 |
{ |
ecfc43292 [CRYPTO] skcipher... |
513 |
type &= ~(CRYPTO_ALG_TYPE_MASK | CRYPTO_ALG_GENIV); |
32e3983fe [CRYPTO] api: Add... |
514 |
type |= CRYPTO_ALG_TYPE_BLKCIPHER; |
378f4f51f [CRYPTO] skcipher... |
515 516 517 518 519 |
return type; } static inline u32 crypto_skcipher_mask(u32 mask) { |
ecfc43292 [CRYPTO] skcipher... |
520 |
mask &= ~(CRYPTO_ALG_TYPE_MASK | CRYPTO_ALG_GENIV); |
332f8840f [CRYPTO] ablkciph... |
521 |
mask |= CRYPTO_ALG_TYPE_BLKCIPHER_MASK; |
378f4f51f [CRYPTO] skcipher... |
522 523 |
return mask; } |
32e3983fe [CRYPTO] api: Add... |
524 |
|
b9c55aa47 [CRYPTO] skcipher... |
525 526 |
struct crypto_ablkcipher *crypto_alloc_ablkcipher(const char *alg_name, u32 type, u32 mask); |
32e3983fe [CRYPTO] api: Add... |
527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 |
static inline struct crypto_tfm *crypto_ablkcipher_tfm( struct crypto_ablkcipher *tfm) { return &tfm->base; } static inline void crypto_free_ablkcipher(struct crypto_ablkcipher *tfm) { crypto_free_tfm(crypto_ablkcipher_tfm(tfm)); } static inline int crypto_has_ablkcipher(const char *alg_name, u32 type, u32 mask) { |
378f4f51f [CRYPTO] skcipher... |
542 543 |
return crypto_has_alg(alg_name, crypto_skcipher_type(type), crypto_skcipher_mask(mask)); |
32e3983fe [CRYPTO] api: Add... |
544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 |
} static inline struct ablkcipher_tfm *crypto_ablkcipher_crt( struct crypto_ablkcipher *tfm) { return &crypto_ablkcipher_tfm(tfm)->crt_ablkcipher; } static inline unsigned int crypto_ablkcipher_ivsize( struct crypto_ablkcipher *tfm) { return crypto_ablkcipher_crt(tfm)->ivsize; } static inline unsigned int crypto_ablkcipher_blocksize( struct crypto_ablkcipher *tfm) { return crypto_tfm_alg_blocksize(crypto_ablkcipher_tfm(tfm)); } static inline unsigned int crypto_ablkcipher_alignmask( struct crypto_ablkcipher *tfm) { return crypto_tfm_alg_alignmask(crypto_ablkcipher_tfm(tfm)); } static inline u32 crypto_ablkcipher_get_flags(struct crypto_ablkcipher *tfm) { return crypto_tfm_get_flags(crypto_ablkcipher_tfm(tfm)); } static inline void crypto_ablkcipher_set_flags(struct crypto_ablkcipher *tfm, u32 flags) { crypto_tfm_set_flags(crypto_ablkcipher_tfm(tfm), flags); } static inline void crypto_ablkcipher_clear_flags(struct crypto_ablkcipher *tfm, u32 flags) { crypto_tfm_clear_flags(crypto_ablkcipher_tfm(tfm), flags); } static inline int crypto_ablkcipher_setkey(struct crypto_ablkcipher *tfm, const u8 *key, unsigned int keylen) { |
ecfc43292 [CRYPTO] skcipher... |
590 591 592 |
struct ablkcipher_tfm *crt = crypto_ablkcipher_crt(tfm); return crt->setkey(crt->base, key, keylen); |
32e3983fe [CRYPTO] api: Add... |
593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 |
} static inline struct crypto_ablkcipher *crypto_ablkcipher_reqtfm( struct ablkcipher_request *req) { return __crypto_ablkcipher_cast(req->base.tfm); } static inline int crypto_ablkcipher_encrypt(struct ablkcipher_request *req) { struct ablkcipher_tfm *crt = crypto_ablkcipher_crt(crypto_ablkcipher_reqtfm(req)); return crt->encrypt(req); } static inline int crypto_ablkcipher_decrypt(struct ablkcipher_request *req) { struct ablkcipher_tfm *crt = crypto_ablkcipher_crt(crypto_ablkcipher_reqtfm(req)); return crt->decrypt(req); } |
b16c3a2e2 [CRYPTO] api: Fix... |
614 615 |
static inline unsigned int crypto_ablkcipher_reqsize( struct crypto_ablkcipher *tfm) |
32e3983fe [CRYPTO] api: Add... |
616 617 618 |
{ return crypto_ablkcipher_crt(tfm)->reqsize; } |
e196d6259 [CRYPTO] api: Add... |
619 620 621 |
static inline void ablkcipher_request_set_tfm( struct ablkcipher_request *req, struct crypto_ablkcipher *tfm) { |
ecfc43292 [CRYPTO] skcipher... |
622 |
req->base.tfm = crypto_ablkcipher_tfm(crypto_ablkcipher_crt(tfm)->base); |
e196d6259 [CRYPTO] api: Add... |
623 |
} |
b5b7f0886 [CRYPTO] api: Add... |
624 625 626 627 628 |
static inline struct ablkcipher_request *ablkcipher_request_cast( struct crypto_async_request *req) { return container_of(req, struct ablkcipher_request, base); } |
32e3983fe [CRYPTO] api: Add... |
629 630 631 632 633 634 635 636 637 |
static inline struct ablkcipher_request *ablkcipher_request_alloc( struct crypto_ablkcipher *tfm, gfp_t gfp) { struct ablkcipher_request *req; req = kmalloc(sizeof(struct ablkcipher_request) + crypto_ablkcipher_reqsize(tfm), gfp); if (likely(req)) |
e196d6259 [CRYPTO] api: Add... |
638 |
ablkcipher_request_set_tfm(req, tfm); |
32e3983fe [CRYPTO] api: Add... |
639 640 641 642 643 644 |
return req; } static inline void ablkcipher_request_free(struct ablkcipher_request *req) { |
aef73cfcb crypto: async - U... |
645 |
kzfree(req); |
32e3983fe [CRYPTO] api: Add... |
646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 |
} static inline void ablkcipher_request_set_callback( struct ablkcipher_request *req, u32 flags, crypto_completion_t complete, void *data) { req->base.complete = complete; req->base.data = data; req->base.flags = flags; } static inline void ablkcipher_request_set_crypt( struct ablkcipher_request *req, struct scatterlist *src, struct scatterlist *dst, unsigned int nbytes, void *iv) { req->src = src; req->dst = dst; req->nbytes = nbytes; req->info = iv; } |
1ae978208 [CRYPTO] api: Add... |
667 668 669 670 |
static inline struct crypto_aead *__crypto_aead_cast(struct crypto_tfm *tfm) { return (struct crypto_aead *)tfm; } |
d29ce988a [CRYPTO] aead: Cr... |
671 |
struct crypto_aead *crypto_alloc_aead(const char *alg_name, u32 type, u32 mask); |
1ae978208 [CRYPTO] api: Add... |
672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 |
static inline struct crypto_tfm *crypto_aead_tfm(struct crypto_aead *tfm) { return &tfm->base; } static inline void crypto_free_aead(struct crypto_aead *tfm) { crypto_free_tfm(crypto_aead_tfm(tfm)); } static inline struct aead_tfm *crypto_aead_crt(struct crypto_aead *tfm) { return &crypto_aead_tfm(tfm)->crt_aead; } static inline unsigned int crypto_aead_ivsize(struct crypto_aead *tfm) { return crypto_aead_crt(tfm)->ivsize; } static inline unsigned int crypto_aead_authsize(struct crypto_aead *tfm) { return crypto_aead_crt(tfm)->authsize; } static inline unsigned int crypto_aead_blocksize(struct crypto_aead *tfm) { return crypto_tfm_alg_blocksize(crypto_aead_tfm(tfm)); } static inline unsigned int crypto_aead_alignmask(struct crypto_aead *tfm) { return crypto_tfm_alg_alignmask(crypto_aead_tfm(tfm)); } static inline u32 crypto_aead_get_flags(struct crypto_aead *tfm) { return crypto_tfm_get_flags(crypto_aead_tfm(tfm)); } static inline void crypto_aead_set_flags(struct crypto_aead *tfm, u32 flags) { crypto_tfm_set_flags(crypto_aead_tfm(tfm), flags); } static inline void crypto_aead_clear_flags(struct crypto_aead *tfm, u32 flags) { crypto_tfm_clear_flags(crypto_aead_tfm(tfm), flags); } static inline int crypto_aead_setkey(struct crypto_aead *tfm, const u8 *key, unsigned int keylen) { |
5b6d2d7fd [CRYPTO] aead: Ad... |
726 727 728 |
struct aead_tfm *crt = crypto_aead_crt(tfm); return crt->setkey(crt->base, key, keylen); |
1ae978208 [CRYPTO] api: Add... |
729 |
} |
7ba683a6d [CRYPTO] aead: Ma... |
730 |
int crypto_aead_setauthsize(struct crypto_aead *tfm, unsigned int authsize); |
1ae978208 [CRYPTO] api: Add... |
731 732 733 734 735 736 737 738 739 740 741 742 743 744 |
static inline struct crypto_aead *crypto_aead_reqtfm(struct aead_request *req) { return __crypto_aead_cast(req->base.tfm); } static inline int crypto_aead_encrypt(struct aead_request *req) { return crypto_aead_crt(crypto_aead_reqtfm(req))->encrypt(req); } static inline int crypto_aead_decrypt(struct aead_request *req) { return crypto_aead_crt(crypto_aead_reqtfm(req))->decrypt(req); } |
b16c3a2e2 [CRYPTO] api: Fix... |
745 |
static inline unsigned int crypto_aead_reqsize(struct crypto_aead *tfm) |
1ae978208 [CRYPTO] api: Add... |
746 747 748 749 750 751 752 |
{ return crypto_aead_crt(tfm)->reqsize; } static inline void aead_request_set_tfm(struct aead_request *req, struct crypto_aead *tfm) { |
5b6d2d7fd [CRYPTO] aead: Ad... |
753 |
req->base.tfm = crypto_aead_tfm(crypto_aead_crt(tfm)->base); |
1ae978208 [CRYPTO] api: Add... |
754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 |
} static inline struct aead_request *aead_request_alloc(struct crypto_aead *tfm, gfp_t gfp) { struct aead_request *req; req = kmalloc(sizeof(*req) + crypto_aead_reqsize(tfm), gfp); if (likely(req)) aead_request_set_tfm(req, tfm); return req; } static inline void aead_request_free(struct aead_request *req) { |
aef73cfcb crypto: async - U... |
771 |
kzfree(req); |
1ae978208 [CRYPTO] api: Add... |
772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 |
} static inline void aead_request_set_callback(struct aead_request *req, u32 flags, crypto_completion_t complete, void *data) { req->base.complete = complete; req->base.data = data; req->base.flags = flags; } static inline void aead_request_set_crypt(struct aead_request *req, struct scatterlist *src, struct scatterlist *dst, unsigned int cryptlen, u8 *iv) { req->src = src; req->dst = dst; req->cryptlen = cryptlen; req->iv = iv; } static inline void aead_request_set_assoc(struct aead_request *req, struct scatterlist *assoc, unsigned int assoclen) { req->assoc = assoc; req->assoclen = assoclen; } |
5cde0af2a [CRYPTO] cipher: ... |
802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 |
static inline struct crypto_blkcipher *__crypto_blkcipher_cast( struct crypto_tfm *tfm) { return (struct crypto_blkcipher *)tfm; } static inline struct crypto_blkcipher *crypto_blkcipher_cast( struct crypto_tfm *tfm) { BUG_ON(crypto_tfm_alg_type(tfm) != CRYPTO_ALG_TYPE_BLKCIPHER); return __crypto_blkcipher_cast(tfm); } static inline struct crypto_blkcipher *crypto_alloc_blkcipher( const char *alg_name, u32 type, u32 mask) { |
332f8840f [CRYPTO] ablkciph... |
818 |
type &= ~CRYPTO_ALG_TYPE_MASK; |
5cde0af2a [CRYPTO] cipher: ... |
819 |
type |= CRYPTO_ALG_TYPE_BLKCIPHER; |
332f8840f [CRYPTO] ablkciph... |
820 |
mask |= CRYPTO_ALG_TYPE_MASK; |
5cde0af2a [CRYPTO] cipher: ... |
821 822 823 824 825 826 827 828 829 830 831 832 833 834 |
return __crypto_blkcipher_cast(crypto_alloc_base(alg_name, type, mask)); } static inline struct crypto_tfm *crypto_blkcipher_tfm( struct crypto_blkcipher *tfm) { return &tfm->base; } static inline void crypto_free_blkcipher(struct crypto_blkcipher *tfm) { crypto_free_tfm(crypto_blkcipher_tfm(tfm)); } |
fce32d70b [CRYPTO] api: Add... |
835 836 |
static inline int crypto_has_blkcipher(const char *alg_name, u32 type, u32 mask) { |
332f8840f [CRYPTO] ablkciph... |
837 |
type &= ~CRYPTO_ALG_TYPE_MASK; |
fce32d70b [CRYPTO] api: Add... |
838 |
type |= CRYPTO_ALG_TYPE_BLKCIPHER; |
332f8840f [CRYPTO] ablkciph... |
839 |
mask |= CRYPTO_ALG_TYPE_MASK; |
fce32d70b [CRYPTO] api: Add... |
840 841 842 |
return crypto_has_alg(alg_name, type, mask); } |
5cde0af2a [CRYPTO] cipher: ... |
843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 |
static inline const char *crypto_blkcipher_name(struct crypto_blkcipher *tfm) { return crypto_tfm_alg_name(crypto_blkcipher_tfm(tfm)); } static inline struct blkcipher_tfm *crypto_blkcipher_crt( struct crypto_blkcipher *tfm) { return &crypto_blkcipher_tfm(tfm)->crt_blkcipher; } static inline struct blkcipher_alg *crypto_blkcipher_alg( struct crypto_blkcipher *tfm) { return &crypto_blkcipher_tfm(tfm)->__crt_alg->cra_blkcipher; } static inline unsigned int crypto_blkcipher_ivsize(struct crypto_blkcipher *tfm) { return crypto_blkcipher_alg(tfm)->ivsize; } static inline unsigned int crypto_blkcipher_blocksize( struct crypto_blkcipher *tfm) { return crypto_tfm_alg_blocksize(crypto_blkcipher_tfm(tfm)); } static inline unsigned int crypto_blkcipher_alignmask( struct crypto_blkcipher *tfm) { return crypto_tfm_alg_alignmask(crypto_blkcipher_tfm(tfm)); } static inline u32 crypto_blkcipher_get_flags(struct crypto_blkcipher *tfm) { return crypto_tfm_get_flags(crypto_blkcipher_tfm(tfm)); } static inline void crypto_blkcipher_set_flags(struct crypto_blkcipher *tfm, u32 flags) { crypto_tfm_set_flags(crypto_blkcipher_tfm(tfm), flags); } static inline void crypto_blkcipher_clear_flags(struct crypto_blkcipher *tfm, u32 flags) { crypto_tfm_clear_flags(crypto_blkcipher_tfm(tfm), flags); } static inline int crypto_blkcipher_setkey(struct crypto_blkcipher *tfm, const u8 *key, unsigned int keylen) { return crypto_blkcipher_crt(tfm)->setkey(crypto_blkcipher_tfm(tfm), key, keylen); } static inline int crypto_blkcipher_encrypt(struct blkcipher_desc *desc, struct scatterlist *dst, struct scatterlist *src, unsigned int nbytes) { desc->info = crypto_blkcipher_crt(desc->tfm)->iv; return crypto_blkcipher_crt(desc->tfm)->encrypt(desc, dst, src, nbytes); } static inline int crypto_blkcipher_encrypt_iv(struct blkcipher_desc *desc, struct scatterlist *dst, struct scatterlist *src, unsigned int nbytes) { return crypto_blkcipher_crt(desc->tfm)->encrypt(desc, dst, src, nbytes); } static inline int crypto_blkcipher_decrypt(struct blkcipher_desc *desc, struct scatterlist *dst, struct scatterlist *src, unsigned int nbytes) { desc->info = crypto_blkcipher_crt(desc->tfm)->iv; return crypto_blkcipher_crt(desc->tfm)->decrypt(desc, dst, src, nbytes); } static inline int crypto_blkcipher_decrypt_iv(struct blkcipher_desc *desc, struct scatterlist *dst, struct scatterlist *src, unsigned int nbytes) { return crypto_blkcipher_crt(desc->tfm)->decrypt(desc, dst, src, nbytes); } static inline void crypto_blkcipher_set_iv(struct crypto_blkcipher *tfm, const u8 *src, unsigned int len) { memcpy(crypto_blkcipher_crt(tfm)->iv, src, len); } static inline void crypto_blkcipher_get_iv(struct crypto_blkcipher *tfm, u8 *dst, unsigned int len) { memcpy(dst, crypto_blkcipher_crt(tfm)->iv, len); } |
f28776a36 [CRYPTO] cipher: ... |
946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 |
static inline struct crypto_cipher *__crypto_cipher_cast(struct crypto_tfm *tfm) { return (struct crypto_cipher *)tfm; } static inline struct crypto_cipher *crypto_cipher_cast(struct crypto_tfm *tfm) { BUG_ON(crypto_tfm_alg_type(tfm) != CRYPTO_ALG_TYPE_CIPHER); return __crypto_cipher_cast(tfm); } static inline struct crypto_cipher *crypto_alloc_cipher(const char *alg_name, u32 type, u32 mask) { type &= ~CRYPTO_ALG_TYPE_MASK; type |= CRYPTO_ALG_TYPE_CIPHER; mask |= CRYPTO_ALG_TYPE_MASK; return __crypto_cipher_cast(crypto_alloc_base(alg_name, type, mask)); } static inline struct crypto_tfm *crypto_cipher_tfm(struct crypto_cipher *tfm) { |
78a1fe4f2 [CRYPTO] api: Use... |
969 |
return &tfm->base; |
f28776a36 [CRYPTO] cipher: ... |
970 971 972 973 974 975 |
} static inline void crypto_free_cipher(struct crypto_cipher *tfm) { crypto_free_tfm(crypto_cipher_tfm(tfm)); } |
fce32d70b [CRYPTO] api: Add... |
976 977 978 979 980 981 982 983 |
static inline int crypto_has_cipher(const char *alg_name, u32 type, u32 mask) { type &= ~CRYPTO_ALG_TYPE_MASK; type |= CRYPTO_ALG_TYPE_CIPHER; mask |= CRYPTO_ALG_TYPE_MASK; return crypto_has_alg(alg_name, type, mask); } |
f28776a36 [CRYPTO] cipher: ... |
984 985 986 987 988 989 990 991 992 993 994 995 996 997 998 999 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 |
static inline struct cipher_tfm *crypto_cipher_crt(struct crypto_cipher *tfm) { return &crypto_cipher_tfm(tfm)->crt_cipher; } static inline unsigned int crypto_cipher_blocksize(struct crypto_cipher *tfm) { return crypto_tfm_alg_blocksize(crypto_cipher_tfm(tfm)); } static inline unsigned int crypto_cipher_alignmask(struct crypto_cipher *tfm) { return crypto_tfm_alg_alignmask(crypto_cipher_tfm(tfm)); } static inline u32 crypto_cipher_get_flags(struct crypto_cipher *tfm) { return crypto_tfm_get_flags(crypto_cipher_tfm(tfm)); } static inline void crypto_cipher_set_flags(struct crypto_cipher *tfm, u32 flags) { crypto_tfm_set_flags(crypto_cipher_tfm(tfm), flags); } static inline void crypto_cipher_clear_flags(struct crypto_cipher *tfm, u32 flags) { crypto_tfm_clear_flags(crypto_cipher_tfm(tfm), flags); } |
7226bc877 [CRYPTO] api: Mar... |
1015 1016 1017 1018 1019 1020 |
static inline int crypto_cipher_setkey(struct crypto_cipher *tfm, const u8 *key, unsigned int keylen) { return crypto_cipher_crt(tfm)->cit_setkey(crypto_cipher_tfm(tfm), key, keylen); } |
f28776a36 [CRYPTO] cipher: ... |
1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 1031 1032 1033 |
static inline void crypto_cipher_encrypt_one(struct crypto_cipher *tfm, u8 *dst, const u8 *src) { crypto_cipher_crt(tfm)->cit_encrypt_one(crypto_cipher_tfm(tfm), dst, src); } static inline void crypto_cipher_decrypt_one(struct crypto_cipher *tfm, u8 *dst, const u8 *src) { crypto_cipher_crt(tfm)->cit_decrypt_one(crypto_cipher_tfm(tfm), dst, src); } |
055bcee31 [CRYPTO] digest: ... |
1034 |
static inline struct crypto_hash *__crypto_hash_cast(struct crypto_tfm *tfm) |
1da177e4c Linux-2.6.12-rc2 |
1035 |
{ |
055bcee31 [CRYPTO] digest: ... |
1036 |
return (struct crypto_hash *)tfm; |
1da177e4c Linux-2.6.12-rc2 |
1037 |
} |
055bcee31 [CRYPTO] digest: ... |
1038 |
static inline struct crypto_hash *crypto_hash_cast(struct crypto_tfm *tfm) |
1da177e4c Linux-2.6.12-rc2 |
1039 |
{ |
055bcee31 [CRYPTO] digest: ... |
1040 1041 1042 |
BUG_ON((crypto_tfm_alg_type(tfm) ^ CRYPTO_ALG_TYPE_HASH) & CRYPTO_ALG_TYPE_HASH_MASK); return __crypto_hash_cast(tfm); |
1da177e4c Linux-2.6.12-rc2 |
1043 |
} |
055bcee31 [CRYPTO] digest: ... |
1044 1045 |
static inline struct crypto_hash *crypto_alloc_hash(const char *alg_name, u32 type, u32 mask) |
1da177e4c Linux-2.6.12-rc2 |
1046 |
{ |
055bcee31 [CRYPTO] digest: ... |
1047 |
type &= ~CRYPTO_ALG_TYPE_MASK; |
551a09a7a [CRYPTO] api: San... |
1048 |
mask &= ~CRYPTO_ALG_TYPE_MASK; |
055bcee31 [CRYPTO] digest: ... |
1049 1050 1051 1052 |
type |= CRYPTO_ALG_TYPE_HASH; mask |= CRYPTO_ALG_TYPE_HASH_MASK; return __crypto_hash_cast(crypto_alloc_base(alg_name, type, mask)); |
1da177e4c Linux-2.6.12-rc2 |
1053 |
} |
055bcee31 [CRYPTO] digest: ... |
1054 |
static inline struct crypto_tfm *crypto_hash_tfm(struct crypto_hash *tfm) |
1da177e4c Linux-2.6.12-rc2 |
1055 |
{ |
055bcee31 [CRYPTO] digest: ... |
1056 1057 1058 1059 1060 1061 1062 |
return &tfm->base; } static inline void crypto_free_hash(struct crypto_hash *tfm) { crypto_free_tfm(crypto_hash_tfm(tfm)); } |
fce32d70b [CRYPTO] api: Add... |
1063 1064 1065 |
static inline int crypto_has_hash(const char *alg_name, u32 type, u32 mask) { type &= ~CRYPTO_ALG_TYPE_MASK; |
551a09a7a [CRYPTO] api: San... |
1066 |
mask &= ~CRYPTO_ALG_TYPE_MASK; |
fce32d70b [CRYPTO] api: Add... |
1067 1068 1069 1070 1071 |
type |= CRYPTO_ALG_TYPE_HASH; mask |= CRYPTO_ALG_TYPE_HASH_MASK; return crypto_has_alg(alg_name, type, mask); } |
055bcee31 [CRYPTO] digest: ... |
1072 1073 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 1087 1088 1089 1090 1091 1092 1093 1094 1095 1096 1097 1098 1099 1100 1101 1102 1103 1104 1105 1106 1107 1108 1109 1110 1111 1112 1113 1114 1115 1116 1117 1118 1119 1120 1121 1122 1123 1124 1125 1126 1127 1128 1129 1130 1131 1132 1133 1134 |
static inline struct hash_tfm *crypto_hash_crt(struct crypto_hash *tfm) { return &crypto_hash_tfm(tfm)->crt_hash; } static inline unsigned int crypto_hash_blocksize(struct crypto_hash *tfm) { return crypto_tfm_alg_blocksize(crypto_hash_tfm(tfm)); } static inline unsigned int crypto_hash_alignmask(struct crypto_hash *tfm) { return crypto_tfm_alg_alignmask(crypto_hash_tfm(tfm)); } static inline unsigned int crypto_hash_digestsize(struct crypto_hash *tfm) { return crypto_hash_crt(tfm)->digestsize; } static inline u32 crypto_hash_get_flags(struct crypto_hash *tfm) { return crypto_tfm_get_flags(crypto_hash_tfm(tfm)); } static inline void crypto_hash_set_flags(struct crypto_hash *tfm, u32 flags) { crypto_tfm_set_flags(crypto_hash_tfm(tfm), flags); } static inline void crypto_hash_clear_flags(struct crypto_hash *tfm, u32 flags) { crypto_tfm_clear_flags(crypto_hash_tfm(tfm), flags); } static inline int crypto_hash_init(struct hash_desc *desc) { return crypto_hash_crt(desc->tfm)->init(desc); } static inline int crypto_hash_update(struct hash_desc *desc, struct scatterlist *sg, unsigned int nbytes) { return crypto_hash_crt(desc->tfm)->update(desc, sg, nbytes); } static inline int crypto_hash_final(struct hash_desc *desc, u8 *out) { return crypto_hash_crt(desc->tfm)->final(desc, out); } static inline int crypto_hash_digest(struct hash_desc *desc, struct scatterlist *sg, unsigned int nbytes, u8 *out) { return crypto_hash_crt(desc->tfm)->digest(desc, sg, nbytes, out); } static inline int crypto_hash_setkey(struct crypto_hash *hash, const u8 *key, unsigned int keylen) { return crypto_hash_crt(hash)->setkey(hash, key, keylen); |
1da177e4c Linux-2.6.12-rc2 |
1135 |
} |
fce32d70b [CRYPTO] api: Add... |
1136 1137 1138 1139 1140 1141 1142 1143 1144 1145 1146 1147 1148 1149 1150 1151 1152 1153 1154 1155 1156 1157 1158 1159 |
static inline struct crypto_comp *__crypto_comp_cast(struct crypto_tfm *tfm) { return (struct crypto_comp *)tfm; } static inline struct crypto_comp *crypto_comp_cast(struct crypto_tfm *tfm) { BUG_ON((crypto_tfm_alg_type(tfm) ^ CRYPTO_ALG_TYPE_COMPRESS) & CRYPTO_ALG_TYPE_MASK); return __crypto_comp_cast(tfm); } static inline struct crypto_comp *crypto_alloc_comp(const char *alg_name, u32 type, u32 mask) { type &= ~CRYPTO_ALG_TYPE_MASK; type |= CRYPTO_ALG_TYPE_COMPRESS; mask |= CRYPTO_ALG_TYPE_MASK; return __crypto_comp_cast(crypto_alloc_base(alg_name, type, mask)); } static inline struct crypto_tfm *crypto_comp_tfm(struct crypto_comp *tfm) { |
78a1fe4f2 [CRYPTO] api: Use... |
1160 |
return &tfm->base; |
fce32d70b [CRYPTO] api: Add... |
1161 1162 1163 1164 1165 1166 1167 1168 1169 1170 1171 1172 1173 1174 1175 |
} static inline void crypto_free_comp(struct crypto_comp *tfm) { crypto_free_tfm(crypto_comp_tfm(tfm)); } static inline int crypto_has_comp(const char *alg_name, u32 type, u32 mask) { type &= ~CRYPTO_ALG_TYPE_MASK; type |= CRYPTO_ALG_TYPE_COMPRESS; mask |= CRYPTO_ALG_TYPE_MASK; return crypto_has_alg(alg_name, type, mask); } |
e4d5b79c6 [CRYPTO] users: U... |
1176 1177 1178 1179 |
static inline const char *crypto_comp_name(struct crypto_comp *tfm) { return crypto_tfm_alg_name(crypto_comp_tfm(tfm)); } |
fce32d70b [CRYPTO] api: Add... |
1180 1181 1182 1183 1184 1185 |
static inline struct compress_tfm *crypto_comp_crt(struct crypto_comp *tfm) { return &crypto_comp_tfm(tfm)->crt_compress; } static inline int crypto_comp_compress(struct crypto_comp *tfm, |
1da177e4c Linux-2.6.12-rc2 |
1186 1187 1188 |
const u8 *src, unsigned int slen, u8 *dst, unsigned int *dlen) { |
78a1fe4f2 [CRYPTO] api: Use... |
1189 1190 |
return crypto_comp_crt(tfm)->cot_compress(crypto_comp_tfm(tfm), src, slen, dst, dlen); |
1da177e4c Linux-2.6.12-rc2 |
1191 |
} |
fce32d70b [CRYPTO] api: Add... |
1192 |
static inline int crypto_comp_decompress(struct crypto_comp *tfm, |
1da177e4c Linux-2.6.12-rc2 |
1193 1194 1195 |
const u8 *src, unsigned int slen, u8 *dst, unsigned int *dlen) { |
78a1fe4f2 [CRYPTO] api: Use... |
1196 1197 |
return crypto_comp_crt(tfm)->cot_decompress(crypto_comp_tfm(tfm), src, slen, dst, dlen); |
1da177e4c Linux-2.6.12-rc2 |
1198 |
} |
1da177e4c Linux-2.6.12-rc2 |
1199 |
#endif /* _LINUX_CRYPTO_H */ |