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

📄 tomcrypt_math.h

📁 AES加密算法对socket通信过程进行加密传输
💻 H
📖 第 1 页 / 共 2 页
字号:
/** math functions **/#define LTC_MP_LT   -1#define LTC_MP_EQ    0#define LTC_MP_GT    1#define LTC_MP_NO    0#define LTC_MP_YES   1#ifndef LTC_MECC   typedef void ecc_point;#endif#ifndef LTC_MRSA   typedef void rsa_key;#endif/** math descriptor */typedef struct {   /** Name of the math provider */   char *name;   /** Bits per digit, amount of bits must fit in an unsigned long */   int  bits_per_digit;/* ---- init/deinit functions ---- */   /** initialize a bignum     @param   a     The number to initialize     @return  CRYPT_OK on success   */   int (*init)(void **a);      /** init copy      @param  dst    The number to initialize and write to     @param  src    The number to copy from     @return CRYPT_OK on success   */   int (*init_copy)(void **dst, void *src);   /** deinit       @param   a    The number to free      @return CRYPT_OK on success   */   void (*deinit)(void *a);/* ---- data movement ---- */   /** negate      @param   src   The number to negate      @param   dst   The destination      @return CRYPT_OK on success   */   int (*neg)(void *src, void *dst);      /** copy       @param   src   The number to copy from      @param   dst   The number to write to       @return CRYPT_OK on success   */   int (*copy)(void *src, void *dst);/* ---- trivial low level functions ---- */   /** set small constant       @param a    Number to write to      @param n    Source upto bits_per_digit (actually meant for very small constants)       @return CRYPT_OK on succcess   */   int (*set_int)(void *a, unsigned long n);   /** get small constant       @param a    Number to read, only fetches upto bits_per_digit from the number      @return  The lower bits_per_digit of the integer (unsigned)   */   unsigned long (*get_int)(void *a);   /** get digit n      @param a  The number to read from     @param n  The number of the digit to fetch     @return  The bits_per_digit  sized n'th digit of a   */   unsigned long (*get_digit)(void *a, int n);   /** Get the number of digits that represent the number     @param a   The number to count     @return The number of digits used to represent the number   */   int (*get_digit_count)(void *a);   /** compare two integers     @param a   The left side integer     @param b   The right side integer     @return LTC_MP_LT if a < b, LTC_MP_GT if a > b and LTC_MP_EQ otherwise.  (signed comparison)   */   int (*compare)(void *a, void *b);   /** compare against int      @param a   The left side integer     @param b   The right side integer (upto bits_per_digit)     @return LTC_MP_LT if a < b, LTC_MP_GT if a > b and LTC_MP_EQ otherwise.  (signed comparison)   */   int (*compare_d)(void *a, unsigned long n);   /** Count the number of bits used to represent the integer     @param a   The integer to count     @return The number of bits required to represent the integer   */   int (*count_bits)(void * a);   /** Count the number of LSB bits which are zero      @param a   The integer to count     @return The number of contiguous zero LSB bits   */   int (*count_lsb_bits)(void *a);   /** Compute a power of two     @param a  The integer to store the power in     @param n  The power of two you want to store (a = 2^n)     @return CRYPT_OK on success   */   int (*twoexpt)(void *a , int n);/* ---- radix conversions ---- */      /** read ascii string      @param a     The integer to store into     @param str   The string to read     @param radix The radix the integer has been represented in (2-64)     @return CRYPT_OK on success   */   int (*read_radix)(void *a, const char *str, int radix);   /** write number to string     @param a     The integer to store     @param str   The destination for the string     @param radix The radix the integer is to be represented in (2-64)     @return CRYPT_OK on success   */   int (*write_radix)(void *a, char *str, int radix);   /** get size as unsigned char string      @param a     The integer to get the size (when stored in array of octets)     @return The length of the integer   */   unsigned long (*unsigned_size)(void *a);   /** store an integer as an array of octets      @param src   The integer to store     @param dst   The buffer to store the integer in     @return CRYPT_OK on success   */   int (*unsigned_write)(void *src, unsigned char *dst);   /** read an array of octets and store as integer     @param dst   The integer to load     @param src   The array of octets      @param len   The number of octets      @return CRYPT_OK on success   */   int (*unsigned_read)(void *dst, unsigned char *src, unsigned long len);/* ---- basic math ---- */   /** add two integers      @param a   The first source integer     @param b   The second source integer     @param c   The destination of "a + b"     @return CRYPT_OK on success   */   int (*add)(void *a, void *b, void *c);   /** add two integers      @param a   The first source integer     @param b   The second source integer (single digit of upto bits_per_digit in length)     @param c   The destination of "a + b"     @return CRYPT_OK on success   */   int (*addi)(void *a, unsigned long b, void *c);   /** subtract two integers      @param a   The first source integer     @param b   The second source integer     @param c   The destination of "a - b"     @return CRYPT_OK on success   */   int (*sub)(void *a, void *b, void *c);   /** subtract two integers      @param a   The first source integer     @param b   The second source integer (single digit of upto bits_per_digit in length)     @param c   The destination of "a - b"     @return CRYPT_OK on success   */   int (*subi)(void *a, unsigned long b, void *c);   /** multiply two integers      @param a   The first source integer     @param b   The second source integer (single digit of upto bits_per_digit in length)     @param c   The destination of "a * b"     @return CRYPT_OK on success   */   int (*mul)(void *a, void *b, void *c);   /** multiply two integers      @param a   The first source integer     @param b   The second source integer (single digit of upto bits_per_digit in length)     @param c   The destination of "a * b"     @return CRYPT_OK on success   */   int (*muli)(void *a, unsigned long b, void *c);   /** Square an integer     @param a    The integer to square     @param b    The destination     @return CRYPT_OK on success   */   int (*sqr)(void *a, void *b);   /** Divide an integer     @param a    The dividend     @param b    The divisor     @param c    The quotient (can be NULL to signify don't care)     @param d    The remainder (can be NULL to signify don't care)     @return CRYPT_OK on success   */   int (*mpdiv)(void *a, void *b, void *c, void *d);   /** divide by two       @param  a   The integer to divide (shift right)      @param  b   The destination       @return CRYPT_OK on success   */   int (*div_2)(void *a, void *b);   /** Get remainder (small value)      @param  a    The integer to reduce      @param  b    The modulus (upto bits_per_digit in length)      @param  c    The destination for the residue      @return CRYPT_OK on success   */   int (*modi)(void *a, unsigned long b, unsigned long *c);   /** gcd       @param  a     The first integer      @param  b     The second integer      @param  c     The destination for (a, b)      @return CRYPT_OK on success   */   int (*gcd)(void *a, void *b, void *c);

⌨️ 快捷键说明

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