Blame view

crypto/internal.h 3.85 KB
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
1
2
3
4
  /*
   * Cryptographic API.
   *
   * Copyright (c) 2002 James Morris <jmorris@intercode.com.au>
5cb1454b8   Herbert Xu   [CRYPTO] Allow mu...
5
   * Copyright (c) 2005 Herbert Xu <herbert@gondor.apana.org.au>
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
6
7
8
9
10
11
12
13
14
   *
   * 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_INTERNAL_H
  #define _CRYPTO_INTERNAL_H
cce9e06d1   Herbert Xu   [CRYPTO] api: Spl...
15
16
  
  #include <crypto/algapi.h>
2825982d9   Herbert Xu   [CRYPTO] api: Add...
17
  #include <linux/completion.h>
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
18
19
20
21
  #include <linux/mm.h>
  #include <linux/highmem.h>
  #include <linux/interrupt.h>
  #include <linux/init.h>
5cb1454b8   Herbert Xu   [CRYPTO] Allow mu...
22
  #include <linux/list.h>
4cc7720cd   Herbert Xu   [CRYPTO] api: Add...
23
  #include <linux/module.h>
fbdae9f3e   Herbert Xu   [CRYPTO] Ensure c...
24
  #include <linux/kernel.h>
2825982d9   Herbert Xu   [CRYPTO] api: Add...
25
  #include <linux/notifier.h>
5cb1454b8   Herbert Xu   [CRYPTO] Allow mu...
26
  #include <linux/rwsem.h>
64baf3cfe   Herbert Xu   [CRYPTO]: Added C...
27
  #include <linux/slab.h>
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
28

2825982d9   Herbert Xu   [CRYPTO] api: Add...
29
30
31
32
33
34
35
36
  /* Crypto notification events. */
  enum {
  	CRYPTO_MSG_ALG_REQUEST,
  	CRYPTO_MSG_ALG_REGISTER,
  	CRYPTO_MSG_ALG_UNREGISTER,
  	CRYPTO_MSG_TMPL_REGISTER,
  	CRYPTO_MSG_TMPL_UNREGISTER,
  };
4cc7720cd   Herbert Xu   [CRYPTO] api: Add...
37
38
  struct crypto_instance;
  struct crypto_template;
2825982d9   Herbert Xu   [CRYPTO] api: Add...
39
40
41
42
  struct crypto_larval {
  	struct crypto_alg alg;
  	struct crypto_alg *adult;
  	struct completion completion;
492e2b63e   Herbert Xu   [CRYPTO] api: All...
43
  	u32 mask;
2825982d9   Herbert Xu   [CRYPTO] api: Add...
44
  };
5cb1454b8   Herbert Xu   [CRYPTO] Allow mu...
45
46
  extern struct list_head crypto_alg_list;
  extern struct rw_semaphore crypto_alg_sem;
2825982d9   Herbert Xu   [CRYPTO] api: Add...
47
  extern struct blocking_notifier_head crypto_chain;
5cb1454b8   Herbert Xu   [CRYPTO] Allow mu...
48

1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
49
50
  #ifdef CONFIG_PROC_FS
  void __init crypto_init_proc(void);
cce9e06d1   Herbert Xu   [CRYPTO] api: Spl...
51
  void __exit crypto_exit_proc(void);
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
52
53
54
  #else
  static inline void crypto_init_proc(void)
  { }
cce9e06d1   Herbert Xu   [CRYPTO] api: Spl...
55
56
  static inline void crypto_exit_proc(void)
  { }
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
57
  #endif
f1ddcaf33   Herbert Xu   [CRYPTO] api: Rem...
58
  static inline unsigned int crypto_digest_ctxsize(struct crypto_alg *alg)
fbdae9f3e   Herbert Xu   [CRYPTO] Ensure c...
59
  {
ee7564166   Herbert Xu   [CRYPTO] digest: ...
60
61
62
63
64
65
66
67
  	unsigned int len = alg->cra_ctxsize;
  
  	if (alg->cra_alignmask) {
  		len = ALIGN(len, (unsigned long)alg->cra_alignmask + 1);
  		len += alg->cra_digest.dia_digestsize;
  	}
  
  	return len;
fbdae9f3e   Herbert Xu   [CRYPTO] Ensure c...
68
  }
f1ddcaf33   Herbert Xu   [CRYPTO] api: Rem...
69
  static inline unsigned int crypto_cipher_ctxsize(struct crypto_alg *alg)
fbdae9f3e   Herbert Xu   [CRYPTO] Ensure c...
70
  {
f1ddcaf33   Herbert Xu   [CRYPTO] api: Rem...
71
  	return alg->cra_ctxsize;
fbdae9f3e   Herbert Xu   [CRYPTO] Ensure c...
72
  }
f1ddcaf33   Herbert Xu   [CRYPTO] api: Rem...
73
  static inline unsigned int crypto_compress_ctxsize(struct crypto_alg *alg)
fbdae9f3e   Herbert Xu   [CRYPTO] Ensure c...
74
75
76
  {
  	return alg->cra_ctxsize;
  }
2825982d9   Herbert Xu   [CRYPTO] api: Add...
77
  struct crypto_alg *crypto_mod_get(struct crypto_alg *alg);
492e2b63e   Herbert Xu   [CRYPTO] api: All...
78
79
  struct crypto_alg *__crypto_alg_lookup(const char *name, u32 type, u32 mask);
  struct crypto_alg *crypto_alg_mod_lookup(const char *name, u32 type, u32 mask);
2825982d9   Herbert Xu   [CRYPTO] api: Add...
80

1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
81
  int crypto_init_digest_ops(struct crypto_tfm *tfm);
004a403c2   Loc Ho   [CRYPTO] hash: Ad...
82
  int crypto_init_digest_ops_async(struct crypto_tfm *tfm);
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
83
84
85
86
87
88
  int crypto_init_cipher_ops(struct crypto_tfm *tfm);
  int crypto_init_compress_ops(struct crypto_tfm *tfm);
  
  void crypto_exit_digest_ops(struct crypto_tfm *tfm);
  void crypto_exit_cipher_ops(struct crypto_tfm *tfm);
  void crypto_exit_compress_ops(struct crypto_tfm *tfm);
b9c55aa47   Herbert Xu   [CRYPTO] skcipher...
89
90
  void crypto_larval_kill(struct crypto_alg *alg);
  struct crypto_alg *crypto_larval_lookup(const char *name, u32 type, u32 mask);
492e2b63e   Herbert Xu   [CRYPTO] api: All...
91
  void crypto_larval_error(const char *name, u32 type, u32 mask);
2825982d9   Herbert Xu   [CRYPTO] api: Add...
92

6bfd48096   Herbert Xu   [CRYPTO] api: Add...
93
  void crypto_shoot_alg(struct crypto_alg *alg);
27d2a3300   Herbert Xu   [CRYPTO] api: All...
94
95
  struct crypto_tfm *__crypto_alloc_tfm(struct crypto_alg *alg, u32 type,
  				      u32 mask);
6bfd48096   Herbert Xu   [CRYPTO] api: Add...
96

4cc7720cd   Herbert Xu   [CRYPTO] api: Add...
97
98
  int crypto_register_instance(struct crypto_template *tmpl,
  			     struct crypto_instance *inst);
2825982d9   Herbert Xu   [CRYPTO] api: Add...
99
100
  int crypto_register_notifier(struct notifier_block *nb);
  int crypto_unregister_notifier(struct notifier_block *nb);
6bfd48096   Herbert Xu   [CRYPTO] api: Add...
101
102
103
104
105
  static inline void crypto_alg_put(struct crypto_alg *alg)
  {
  	if (atomic_dec_and_test(&alg->cra_refcnt) && alg->cra_destroy)
  		alg->cra_destroy(alg);
  }
4cc7720cd   Herbert Xu   [CRYPTO] api: Add...
106
107
108
109
110
111
112
113
114
  static inline int crypto_tmpl_get(struct crypto_template *tmpl)
  {
  	return try_module_get(tmpl->module);
  }
  
  static inline void crypto_tmpl_put(struct crypto_template *tmpl)
  {
  	module_put(tmpl->module);
  }
2825982d9   Herbert Xu   [CRYPTO] api: Add...
115
116
117
118
  static inline int crypto_is_larval(struct crypto_alg *alg)
  {
  	return alg->cra_flags & CRYPTO_ALG_LARVAL;
  }
6bfd48096   Herbert Xu   [CRYPTO] api: Add...
119
120
121
122
123
124
125
126
127
  static inline int crypto_is_dead(struct crypto_alg *alg)
  {
  	return alg->cra_flags & CRYPTO_ALG_DEAD;
  }
  
  static inline int crypto_is_moribund(struct crypto_alg *alg)
  {
  	return alg->cra_flags & (CRYPTO_ALG_DEAD | CRYPTO_ALG_DYING);
  }
2825982d9   Herbert Xu   [CRYPTO] api: Add...
128
129
130
131
  static inline int crypto_notify(unsigned long val, void *v)
  {
  	return blocking_notifier_call_chain(&crypto_chain, val, v);
  }
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
132
  #endif	/* _CRYPTO_INTERNAL_H */