internal.h revision 50a09b3b099ebc8326b85b4f508fb47655e1fed3
1/* 2 * Cryptographic API. 3 * 4 * Copyright (c) 2002 James Morris <jmorris@intercode.com.au> 5 * 6 * This program is free software; you can redistribute it and/or modify it 7 * under the terms of the GNU General Public License as published by the Free 8 * Software Foundation; either version 2 of the License, or (at your option) 9 * any later version. 10 * 11 */ 12#ifndef _CRYPTO_INTERNAL_H 13#define _CRYPTO_INTERNAL_H 14 15 16//#include <linux/crypto.h> 17#include "rtl_crypto.h" 18#include <linux/mm.h> 19#include <linux/highmem.h> 20#include <linux/init.h> 21#include <asm/hardirq.h> 22#include <asm/softirq.h> 23#include <asm/kmap_types.h> 24 25 26extern enum km_type crypto_km_types[]; 27 28static inline enum km_type crypto_kmap_type(int out) 29{ 30 return crypto_km_types[(in_softirq() ? 2 : 0) + out]; 31} 32 33static inline void *crypto_kmap(struct page *page, int out) 34{ 35 return kmap_atomic(page, crypto_kmap_type(out)); 36} 37 38static inline void crypto_kunmap(void *vaddr, int out) 39{ 40 kunmap_atomic(vaddr, crypto_kmap_type(out)); 41} 42 43static inline void crypto_yield(struct crypto_tfm *tfm) 44{ 45 if (!in_softirq()) 46 cond_resched(); 47} 48 49static inline void *crypto_tfm_ctx(struct crypto_tfm *tfm) 50{ 51 return (void *)&tfm[1]; 52} 53 54struct crypto_alg *crypto_alg_lookup(const char *name); 55 56#ifdef CONFIG_KMOD 57void crypto_alg_autoload(const char *name); 58struct crypto_alg *crypto_alg_mod_lookup(const char *name); 59#else 60static inline struct crypto_alg *crypto_alg_mod_lookup(const char *name) 61{ 62 return crypto_alg_lookup(name); 63} 64#endif 65 66#ifdef CONFIG_CRYPTO_HMAC 67int crypto_alloc_hmac_block(struct crypto_tfm *tfm); 68void crypto_free_hmac_block(struct crypto_tfm *tfm); 69#else 70static inline int crypto_alloc_hmac_block(struct crypto_tfm *tfm) 71{ 72 return 0; 73} 74 75static inline void crypto_free_hmac_block(struct crypto_tfm *tfm) 76{ } 77#endif 78 79#ifdef CONFIG_PROC_FS 80void __init crypto_init_proc(void); 81#else 82static inline void crypto_init_proc(void) 83{ } 84#endif 85 86int crypto_init_digest_flags(struct crypto_tfm *tfm, u32 flags); 87int crypto_init_cipher_flags(struct crypto_tfm *tfm, u32 flags); 88int crypto_init_compress_flags(struct crypto_tfm *tfm, u32 flags); 89 90int crypto_init_digest_ops(struct crypto_tfm *tfm); 91int crypto_init_cipher_ops(struct crypto_tfm *tfm); 92int crypto_init_compress_ops(struct crypto_tfm *tfm); 93 94void crypto_exit_digest_ops(struct crypto_tfm *tfm); 95void crypto_exit_cipher_ops(struct crypto_tfm *tfm); 96void crypto_exit_compress_ops(struct crypto_tfm *tfm); 97 98#endif /* _CRYPTO_INTERNAL_H */ 99 100