The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/crypto/internal.h

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

    1 /*
    2  * Cryptographic API.
    3  *
    4  * Copyright (c) 2002 James Morris <jmorris@intercode.com.au>
    5  * Copyright (c) 2005 Herbert Xu <herbert@gondor.apana.org.au>
    6  *
    7  * This program is free software; you can redistribute it and/or modify it
    8  * under the terms of the GNU General Public License as published by the Free
    9  * Software Foundation; either version 2 of the License, or (at your option)
   10  * any later version.
   11  *
   12  */
   13 #ifndef _CRYPTO_INTERNAL_H
   14 #define _CRYPTO_INTERNAL_H
   15 
   16 #include <crypto/algapi.h>
   17 #include <linux/completion.h>
   18 #include <linux/mm.h>
   19 #include <linux/highmem.h>
   20 #include <linux/interrupt.h>
   21 #include <linux/init.h>
   22 #include <linux/list.h>
   23 #include <linux/module.h>
   24 #include <linux/kernel.h>
   25 #include <linux/notifier.h>
   26 #include <linux/rwsem.h>
   27 #include <linux/slab.h>
   28 #include <linux/fips.h>
   29 
   30 /* Crypto notification events. */
   31 enum {
   32         CRYPTO_MSG_ALG_REQUEST,
   33         CRYPTO_MSG_ALG_REGISTER,
   34         CRYPTO_MSG_ALG_UNREGISTER,
   35         CRYPTO_MSG_TMPL_REGISTER,
   36         CRYPTO_MSG_TMPL_UNREGISTER,
   37 };
   38 
   39 struct crypto_instance;
   40 struct crypto_template;
   41 
   42 struct crypto_larval {
   43         struct crypto_alg alg;
   44         struct crypto_alg *adult;
   45         struct completion completion;
   46         u32 mask;
   47 };
   48 
   49 extern struct list_head crypto_alg_list;
   50 extern struct rw_semaphore crypto_alg_sem;
   51 extern struct blocking_notifier_head crypto_chain;
   52 
   53 #ifdef CONFIG_PROC_FS
   54 void __init crypto_init_proc(void);
   55 void __exit crypto_exit_proc(void);
   56 #else
   57 static inline void crypto_init_proc(void)
   58 { }
   59 static inline void crypto_exit_proc(void)
   60 { }
   61 #endif
   62 
   63 static inline unsigned int crypto_cipher_ctxsize(struct crypto_alg *alg)
   64 {
   65         return alg->cra_ctxsize;
   66 }
   67 
   68 static inline unsigned int crypto_compress_ctxsize(struct crypto_alg *alg)
   69 {
   70         return alg->cra_ctxsize;
   71 }
   72 
   73 struct crypto_alg *crypto_mod_get(struct crypto_alg *alg);
   74 struct crypto_alg *crypto_alg_lookup(const char *name, u32 type, u32 mask);
   75 struct crypto_alg *crypto_alg_mod_lookup(const char *name, u32 type, u32 mask);
   76 
   77 int crypto_init_cipher_ops(struct crypto_tfm *tfm);
   78 int crypto_init_compress_ops(struct crypto_tfm *tfm);
   79 
   80 void crypto_exit_cipher_ops(struct crypto_tfm *tfm);
   81 void crypto_exit_compress_ops(struct crypto_tfm *tfm);
   82 
   83 struct crypto_larval *crypto_larval_alloc(const char *name, u32 type, u32 mask);
   84 void crypto_larval_kill(struct crypto_alg *alg);
   85 struct crypto_alg *crypto_larval_lookup(const char *name, u32 type, u32 mask);
   86 void crypto_alg_tested(const char *name, int err);
   87 
   88 void crypto_remove_spawns(struct crypto_alg *alg, struct list_head *list,
   89                           struct crypto_alg *nalg);
   90 void crypto_remove_final(struct list_head *list);
   91 void crypto_shoot_alg(struct crypto_alg *alg);
   92 struct crypto_tfm *__crypto_alloc_tfm(struct crypto_alg *alg, u32 type,
   93                                       u32 mask);
   94 void *crypto_create_tfm(struct crypto_alg *alg,
   95                         const struct crypto_type *frontend);
   96 struct crypto_alg *crypto_find_alg(const char *alg_name,
   97                                    const struct crypto_type *frontend,
   98                                    u32 type, u32 mask);
   99 void *crypto_alloc_tfm(const char *alg_name,
  100                        const struct crypto_type *frontend, u32 type, u32 mask);
  101 
  102 int crypto_register_notifier(struct notifier_block *nb);
  103 int crypto_unregister_notifier(struct notifier_block *nb);
  104 int crypto_probing_notify(unsigned long val, void *v);
  105 
  106 static inline void crypto_alg_put(struct crypto_alg *alg)
  107 {
  108         if (atomic_dec_and_test(&alg->cra_refcnt) && alg->cra_destroy)
  109                 alg->cra_destroy(alg);
  110 }
  111 
  112 static inline int crypto_tmpl_get(struct crypto_template *tmpl)
  113 {
  114         return try_module_get(tmpl->module);
  115 }
  116 
  117 static inline void crypto_tmpl_put(struct crypto_template *tmpl)
  118 {
  119         module_put(tmpl->module);
  120 }
  121 
  122 static inline int crypto_is_larval(struct crypto_alg *alg)
  123 {
  124         return alg->cra_flags & CRYPTO_ALG_LARVAL;
  125 }
  126 
  127 static inline int crypto_is_dead(struct crypto_alg *alg)
  128 {
  129         return alg->cra_flags & CRYPTO_ALG_DEAD;
  130 }
  131 
  132 static inline int crypto_is_moribund(struct crypto_alg *alg)
  133 {
  134         return alg->cra_flags & (CRYPTO_ALG_DEAD | CRYPTO_ALG_DYING);
  135 }
  136 
  137 static inline void crypto_notify(unsigned long val, void *v)
  138 {
  139         blocking_notifier_call_chain(&crypto_chain, val, v);
  140 }
  141 
  142 #endif  /* _CRYPTO_INTERNAL_H */
  143 

Cache object: d53e693877c45f54e91c1e1b7cde8352


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.