18fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang/* 28fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang * Cryptographic API. 38fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang * 48fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang * Copyright (c) 2002 James Morris <jmorris@intercode.com.au> 58fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang * 68fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang * This program is free software; you can redistribute it and/or modify it 78fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang * under the terms of the GNU General Public License as published by the Free 88fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang * Software Foundation; either version 2 of the License, or (at your option) 98fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang * any later version. 108fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang * 118fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang */ 128fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang#ifndef _CRYPTO_INTERNAL_H 138fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang#define _CRYPTO_INTERNAL_H 148fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang 158fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang 168fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang//#include <linux/crypto.h> 178fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang#include "rtl_crypto.h" 188fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang#include <linux/mm.h> 198fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang#include <linux/highmem.h> 208fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang#include <linux/init.h> 218fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang#include <asm/hardirq.h> 228fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang#include <asm/softirq.h> 238fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang#include <asm/kmap_types.h> 248fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang 258fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang 268fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuangstatic inline void crypto_yield(struct crypto_tfm *tfm) 278fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang{ 288fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang if (!in_softirq()) 298fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang cond_resched(); 308fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang} 318fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang 328fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuangstatic inline void *crypto_tfm_ctx(struct crypto_tfm *tfm) 338fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang{ 348fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang return (void *)&tfm[1]; 358fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang} 368fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang 378fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuangstruct crypto_alg *crypto_alg_lookup(const char *name); 388fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang 398fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang#ifdef CONFIG_KMOD 408fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuangvoid crypto_alg_autoload(const char *name); 418fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuangstruct crypto_alg *crypto_alg_mod_lookup(const char *name); 428fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang#else 438fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuangstatic inline struct crypto_alg *crypto_alg_mod_lookup(const char *name) 448fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang{ 458fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang return crypto_alg_lookup(name); 468fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang} 478fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang#endif 488fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang 498fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang#ifdef CONFIG_CRYPTO_HMAC 508fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuangint crypto_alloc_hmac_block(struct crypto_tfm *tfm); 518fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuangvoid crypto_free_hmac_block(struct crypto_tfm *tfm); 528fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang#else 538fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuangstatic inline int crypto_alloc_hmac_block(struct crypto_tfm *tfm) 548fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang{ 558fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang return 0; 568fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang} 578fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang 588fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuangstatic inline void crypto_free_hmac_block(struct crypto_tfm *tfm) 598fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang{ } 608fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang#endif 618fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang 628fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang#ifdef CONFIG_PROC_FS 638fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuangvoid __init crypto_init_proc(void); 648fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang#else 658fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuangstatic inline void crypto_init_proc(void) 668fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang{ } 678fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang#endif 688fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang 698fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuangint crypto_init_digest_flags(struct crypto_tfm *tfm, u32 flags); 708fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuangint crypto_init_cipher_flags(struct crypto_tfm *tfm, u32 flags); 718fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuangint crypto_init_compress_flags(struct crypto_tfm *tfm, u32 flags); 728fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang 738fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuangint crypto_init_digest_ops(struct crypto_tfm *tfm); 748fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuangint crypto_init_cipher_ops(struct crypto_tfm *tfm); 758fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuangint crypto_init_compress_ops(struct crypto_tfm *tfm); 768fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang 778fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuangvoid crypto_exit_digest_ops(struct crypto_tfm *tfm); 788fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuangvoid crypto_exit_cipher_ops(struct crypto_tfm *tfm); 798fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuangvoid crypto_exit_compress_ops(struct crypto_tfm *tfm); 808fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang 818fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang#endif /* _CRYPTO_INTERNAL_H */ 828fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang 83