⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tomcrypt_prng.h

📁 这是由Rinick编写的加解密函数库。最近找了不少关于加解密的C源码
💻 H
字号:
/* ---- PRNG Stuff ---- */#ifdef YARROWstruct yarrow_prng {    int                   cipher, hash;    unsigned char         pool[MAXBLOCKSIZE];    symmetric_CTR         ctr;};#endif#ifdef RC4struct rc4_prng {    int x, y;    unsigned char buf[256];};#endif#ifdef FORTUNAstruct fortuna_prng {    hash_state pool[FORTUNA_POOLS];     /* the  pools */    symmetric_key skey;    unsigned char K[32],      /* the current key */                  IV[16];     /* IV for CTR mode */        unsigned long pool_idx,   /* current pool we will add to */                  pool0_len,  /* length of 0'th pool */                  wd;                ulong64       reset_cnt;  /* number of times we have reset */};#endif#ifdef SOBER128struct sober128_prng {    ulong32      R[17],          /* Working storage for the shift register */                 initR[17],      /* saved register contents */                  konst,          /* key dependent constant */                 sbuf;           /* partial word encryption buffer */    int          nbuf,           /* number of part-word stream bits buffered */                 flag,           /* first add_entropy call or not? */                 set;            /* did we call add_entropy to set key? */    };#endiftypedef union Prng_state {#ifdef YARROW    struct yarrow_prng    yarrow;#endif#ifdef RC4    struct rc4_prng       rc4;#endif#ifdef FORTUNA    struct fortuna_prng   fortuna;#endif#ifdef SOBER128    struct sober128_prng  sober128;#endif} prng_state;extern struct ltc_prng_descriptor {    /** Name of the PRNG */    char *name;    /** size in bytes of exported state */    int  export_size;    /** Start a PRNG state        @param prng   [out] The state to initialize        @return CRYPT_OK if successful    */    int (*start)(prng_state *prng);    /** Add entropy to the PRNG        @param in         The entropy        @param inlen      Length of the entropy (octets)\        @param prng       The PRNG state        @return CRYPT_OK if successful    */    int (*add_entropy)(const unsigned char *in, unsigned long inlen, prng_state *prng);    /** Ready a PRNG state to read from        @param prng       The PRNG state to ready        @return CRYPT_OK if successful    */    int (*ready)(prng_state *prng);    /** Read from the PRNG        @param out     [out] Where to store the data        @param outlen  Length of data desired (octets)        @param prng    The PRNG state to read from        @return Number of octets read    */    unsigned long (*read)(unsigned char *out, unsigned long outlen, prng_state *prng);    /** Terminate a PRNG state        @param prng   The PRNG state to terminate        @return CRYPT_OK if successful    */    int (*done)(prng_state *prng);    /** Export a PRNG state          @param out     [out] The destination for the state        @param outlen  [in/out] The max size and resulting size of the PRNG state        @param prng    The PRNG to export        @return CRYPT_OK if successful    */    int (*pexport)(unsigned char *out, unsigned long *outlen, prng_state *prng);    /** Import a PRNG state        @param in      The data to import        @param inlen   The length of the data to import (octets)        @param prng    The PRNG to initialize/import        @return CRYPT_OK if successful    */    int (*pimport)(const unsigned char *in, unsigned long inlen, prng_state *prng);    /** Self-test the PRNG        @return CRYPT_OK if successful, CRYPT_NOP if self-testing has been disabled    */    int (*test)(void);} prng_descriptor[];#ifdef YARROWint yarrow_start(prng_state *prng);int yarrow_add_entropy(const unsigned char *in, unsigned long inlen, prng_state *prng);int yarrow_ready(prng_state *prng);unsigned long yarrow_read(unsigned char *out, unsigned long outlen, prng_state *prng);int yarrow_done(prng_state *prng);int  yarrow_export(unsigned char *out, unsigned long *outlen, prng_state *prng);int  yarrow_import(const unsigned char *in, unsigned long inlen, prng_state *prng);int  yarrow_test(void);extern const struct ltc_prng_descriptor yarrow_desc;#endif#ifdef FORTUNAint fortuna_start(prng_state *prng);int fortuna_add_entropy(const unsigned char *in, unsigned long inlen, prng_state *prng);int fortuna_ready(prng_state *prng);unsigned long fortuna_read(unsigned char *out, unsigned long outlen, prng_state *prng);int fortuna_done(prng_state *prng);int  fortuna_export(unsigned char *out, unsigned long *outlen, prng_state *prng);int  fortuna_import(const unsigned char *in, unsigned long inlen, prng_state *prng);int  fortuna_test(void);extern const struct ltc_prng_descriptor fortuna_desc;#endif#ifdef RC4int rc4_start(prng_state *prng);int rc4_add_entropy(const unsigned char *in, unsigned long inlen, prng_state *prng);int rc4_ready(prng_state *prng);unsigned long rc4_read(unsigned char *out, unsigned long outlen, prng_state *prng);int  rc4_done(prng_state *prng);int  rc4_export(unsigned char *out, unsigned long *outlen, prng_state *prng);int  rc4_import(const unsigned char *in, unsigned long inlen, prng_state *prng);int  rc4_test(void);extern const struct ltc_prng_descriptor rc4_desc;#endif#ifdef SPRNGint sprng_start(prng_state *prng);int sprng_add_entropy(const unsigned char *in, unsigned long inlen, prng_state *prng);int sprng_ready(prng_state *prng);unsigned long sprng_read(unsigned char *out, unsigned long outlen, prng_state *prng);int sprng_done(prng_state *prng);int  sprng_export(unsigned char *out, unsigned long *outlen, prng_state *prng);int  sprng_import(const unsigned char *in, unsigned long inlen, prng_state *prng);int  sprng_test(void);extern const struct ltc_prng_descriptor sprng_desc;#endif#ifdef SOBER128int sober128_start(prng_state *prng);int sober128_add_entropy(const unsigned char *in, unsigned long inlen, prng_state *prng);int sober128_ready(prng_state *prng);unsigned long sober128_read(unsigned char *out, unsigned long outlen, prng_state *prng);int sober128_done(prng_state *prng);int  sober128_export(unsigned char *out, unsigned long *outlen, prng_state *prng);int  sober128_import(const unsigned char *in, unsigned long inlen, prng_state *prng);int  sober128_test(void);extern const struct ltc_prng_descriptor sober128_desc;#endifint find_prng(const char *name);int register_prng(const struct ltc_prng_descriptor *prng);int unregister_prng(const struct ltc_prng_descriptor *prng);int prng_is_valid(int idx);LTC_MUTEX_PROTO(ltc_prng_mutex);/* Slow RNG you **might** be able to use to seed a PRNG with.  Be careful as this * might not work on all platforms as planned */unsigned long rng_get_bytes(unsigned char *out,                             unsigned long outlen,                             void (*callback)(void));int rng_make_prng(int bits, int wprng, prng_state *prng, void (*callback)(void));/* $Source: /cvs/libtom/libtomcrypt/src/headers/tomcrypt_prng.h,v $ *//* $Revision: 1.3 $ *//* $Date: 2005/06/19 18:00:28 $ */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -