2006-08-21 15:08:13 +04:00
/*
* Cryptographic API for algorithms ( i . e . , low - level API ) .
*
* Copyright ( c ) 2006 Herbert Xu < herbert @ gondor . apana . org . au >
*
* 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 _CRYPTO_ALGAPI_H
# define _CRYPTO_ALGAPI_H
# include <linux/crypto.h>
2006-08-06 15:16:34 +04:00
struct module ;
struct crypto_instance {
struct crypto_alg alg ;
struct crypto_template * tmpl ;
struct hlist_node list ;
void * __ctx [ ] CRYPTO_MINALIGN_ATTR ;
} ;
struct crypto_template {
struct list_head list ;
struct hlist_head instances ;
struct module * module ;
struct crypto_instance * ( * alloc ) ( void * param , unsigned int len ) ;
void ( * free ) ( struct crypto_instance * inst ) ;
char name [ CRYPTO_MAX_ALG_NAME ] ;
} ;
2006-09-21 05:39:29 +04:00
struct crypto_spawn {
struct list_head list ;
struct crypto_alg * alg ;
struct crypto_instance * inst ;
} ;
2006-08-06 15:16:34 +04:00
int crypto_register_template ( struct crypto_template * tmpl ) ;
void crypto_unregister_template ( struct crypto_template * tmpl ) ;
struct crypto_template * crypto_lookup_template ( const char * name ) ;
2006-09-21 05:39:29 +04:00
int crypto_init_spawn ( struct crypto_spawn * spawn , struct crypto_alg * alg ,
struct crypto_instance * inst ) ;
void crypto_drop_spawn ( struct crypto_spawn * spawn ) ;
struct crypto_tfm * crypto_spawn_tfm ( struct crypto_spawn * spawn ) ;
2006-08-06 17:10:45 +04:00
struct crypto_alg * crypto_get_attr_alg ( void * param , unsigned int len ,
u32 type , u32 mask ) ;
struct crypto_instance * crypto_alloc_instance ( const char * name ,
struct crypto_alg * alg ) ;
2006-08-06 15:16:34 +04:00
static inline void * crypto_instance_ctx ( struct crypto_instance * inst )
{
return inst - > __ctx ;
}
2006-08-21 15:08:13 +04:00
# endif /* _CRYPTO_ALGAPI_H */