sync ltc_math_descriptor from doc
This commit is contained in:
		
							parent
							
								
									a0e5c2e4ff
								
							
						
					
					
						commit
						0cf7c49045
					
				@ -65,13 +65,14 @@ typedef struct {
 | 
				
			|||||||
   /** set small constant
 | 
					   /** set small constant
 | 
				
			||||||
      @param a    Number to write to
 | 
					      @param a    Number to write to
 | 
				
			||||||
      @param n    Source upto bits_per_digit (actually meant for very small constants)
 | 
					      @param n    Source upto bits_per_digit (actually meant for very small constants)
 | 
				
			||||||
      @return CRYPT_OK on succcess
 | 
					      @return CRYPT_OK on success
 | 
				
			||||||
   */
 | 
					   */
 | 
				
			||||||
   int (*set_int)(void *a, unsigned long n);
 | 
					   int (*set_int)(void *a, unsigned long n);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   /** get small constant
 | 
					   /** get small constant
 | 
				
			||||||
      @param a    Number to read, only fetches upto bits_per_digit from the number
 | 
					      @param a  Small number to read,
 | 
				
			||||||
      @return  The lower bits_per_digit of the integer (unsigned)
 | 
					                only fetches up to bits_per_digit from the number
 | 
				
			||||||
 | 
					      @return   The lower bits_per_digit of the integer (unsigned)
 | 
				
			||||||
   */
 | 
					   */
 | 
				
			||||||
   unsigned long (*get_int)(void *a);
 | 
					   unsigned long (*get_int)(void *a);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -91,14 +92,18 @@ typedef struct {
 | 
				
			|||||||
   /** compare two integers
 | 
					   /** compare two integers
 | 
				
			||||||
     @param a   The left side integer
 | 
					     @param a   The left side integer
 | 
				
			||||||
     @param b   The right 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)
 | 
					     @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);
 | 
					   int (*compare)(void *a, void *b);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   /** compare against int
 | 
					   /** compare against int
 | 
				
			||||||
     @param a   The left side integer
 | 
					     @param a   The left side integer
 | 
				
			||||||
     @param b   The right side integer (upto bits_per_digit)
 | 
					     @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)
 | 
					     @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);
 | 
					   int (*compare_d)(void *a, unsigned long n);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -140,8 +145,8 @@ typedef struct {
 | 
				
			|||||||
   int (*write_radix)(void *a, char *str, int radix);
 | 
					   int (*write_radix)(void *a, char *str, int radix);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   /** get size as unsigned char string
 | 
					   /** get size as unsigned char string
 | 
				
			||||||
     @param a     The integer to get the size (when stored in array of octets)
 | 
					     @param a  The integer to get the size (when stored in array of octets)
 | 
				
			||||||
     @return The length of the integer
 | 
					     @return   The length of the integer in octets
 | 
				
			||||||
   */
 | 
					   */
 | 
				
			||||||
   unsigned long (*unsigned_size)(void *a);
 | 
					   unsigned long (*unsigned_size)(void *a);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -158,7 +163,9 @@ typedef struct {
 | 
				
			|||||||
     @param len   The number of octets
 | 
					     @param len   The number of octets
 | 
				
			||||||
     @return CRYPT_OK on success
 | 
					     @return CRYPT_OK on success
 | 
				
			||||||
   */
 | 
					   */
 | 
				
			||||||
   int (*unsigned_read)(void *dst, unsigned char *src, unsigned long len);
 | 
					   int (*unsigned_read)(         void *dst,
 | 
				
			||||||
 | 
					                        unsigned char *src,
 | 
				
			||||||
 | 
					                        unsigned long  len);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* ---- basic math ---- */
 | 
					/* ---- basic math ---- */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -170,10 +177,10 @@ typedef struct {
 | 
				
			|||||||
   */
 | 
					   */
 | 
				
			||||||
   int (*add)(void *a, void *b, void *c);
 | 
					   int (*add)(void *a, void *b, void *c);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
   /** add two integers
 | 
					   /** add two integers
 | 
				
			||||||
     @param a   The first source integer
 | 
					     @param a   The first source integer
 | 
				
			||||||
     @param b   The second source integer (single digit of upto bits_per_digit in length)
 | 
					     @param b   The second source integer
 | 
				
			||||||
 | 
					                (single digit of upto bits_per_digit in length)
 | 
				
			||||||
     @param c   The destination of "a + b"
 | 
					     @param c   The destination of "a + b"
 | 
				
			||||||
     @return CRYPT_OK on success
 | 
					     @return CRYPT_OK on success
 | 
				
			||||||
   */
 | 
					   */
 | 
				
			||||||
@ -189,7 +196,8 @@ typedef struct {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
   /** subtract two integers
 | 
					   /** subtract two integers
 | 
				
			||||||
     @param a   The first source integer
 | 
					     @param a   The first source integer
 | 
				
			||||||
     @param b   The second source integer (single digit of upto bits_per_digit in length)
 | 
					     @param b   The second source integer
 | 
				
			||||||
 | 
					                (single digit of upto bits_per_digit in length)
 | 
				
			||||||
     @param c   The destination of "a - b"
 | 
					     @param c   The destination of "a - b"
 | 
				
			||||||
     @return CRYPT_OK on success
 | 
					     @return CRYPT_OK on success
 | 
				
			||||||
   */
 | 
					   */
 | 
				
			||||||
@ -197,7 +205,8 @@ typedef struct {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
   /** multiply two integers
 | 
					   /** multiply two integers
 | 
				
			||||||
     @param a   The first source integer
 | 
					     @param a   The first source integer
 | 
				
			||||||
     @param b   The second source integer (single digit of upto bits_per_digit in length)
 | 
					     @param b   The second source integer
 | 
				
			||||||
 | 
					                (single digit of upto bits_per_digit in length)
 | 
				
			||||||
     @param c   The destination of "a * b"
 | 
					     @param c   The destination of "a * b"
 | 
				
			||||||
     @return CRYPT_OK on success
 | 
					     @return CRYPT_OK on success
 | 
				
			||||||
   */
 | 
					   */
 | 
				
			||||||
@ -205,7 +214,8 @@ typedef struct {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
   /** multiply two integers
 | 
					   /** multiply two integers
 | 
				
			||||||
     @param a   The first source integer
 | 
					     @param a   The first source integer
 | 
				
			||||||
     @param b   The second source integer (single digit of upto bits_per_digit in length)
 | 
					     @param b   The second source integer
 | 
				
			||||||
 | 
					                (single digit of upto bits_per_digit in length)
 | 
				
			||||||
     @param c   The destination of "a * b"
 | 
					     @param c   The destination of "a * b"
 | 
				
			||||||
     @return CRYPT_OK on success
 | 
					     @return CRYPT_OK on success
 | 
				
			||||||
   */
 | 
					   */
 | 
				
			||||||
@ -285,7 +295,7 @@ typedef struct {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
/* ---- reduction ---- */
 | 
					/* ---- reduction ---- */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   /** setup montgomery
 | 
					   /** setup Montgomery
 | 
				
			||||||
       @param a  The modulus
 | 
					       @param a  The modulus
 | 
				
			||||||
       @param b  The destination for the reduction digit
 | 
					       @param b  The destination for the reduction digit
 | 
				
			||||||
       @return CRYPT_OK on success
 | 
					       @return CRYPT_OK on success
 | 
				
			||||||
@ -339,10 +349,15 @@ typedef struct {
 | 
				
			|||||||
       @param G   The point to multiply
 | 
					       @param G   The point to multiply
 | 
				
			||||||
       @param R   The destination for kG
 | 
					       @param R   The destination for kG
 | 
				
			||||||
       @param modulus  The modulus for the field
 | 
					       @param modulus  The modulus for the field
 | 
				
			||||||
       @param map Boolean indicated whether to map back to affine or not (can be ignored if you work in affine only)
 | 
					       @param map Boolean indicated whether to map back to affine or not
 | 
				
			||||||
 | 
					                  (can be ignored if you work in affine only)
 | 
				
			||||||
       @return CRYPT_OK on success
 | 
					       @return CRYPT_OK on success
 | 
				
			||||||
   */
 | 
					   */
 | 
				
			||||||
   int (*ecc_ptmul)(void *k, ecc_point *G, ecc_point *R, void *modulus, int map);
 | 
					   int (*ecc_ptmul)(     void *k,
 | 
				
			||||||
 | 
					                    ecc_point *G,
 | 
				
			||||||
 | 
					                    ecc_point *R,
 | 
				
			||||||
 | 
					                         void *modulus,
 | 
				
			||||||
 | 
					                          int  map);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   /** ECC GF(p) point addition
 | 
					   /** ECC GF(p) point addition
 | 
				
			||||||
       @param P    The first point
 | 
					       @param P    The first point
 | 
				
			||||||
@ -352,7 +367,11 @@ typedef struct {
 | 
				
			|||||||
       @param mp   The "b" value from montgomery_setup()
 | 
					       @param mp   The "b" value from montgomery_setup()
 | 
				
			||||||
       @return CRYPT_OK on success
 | 
					       @return CRYPT_OK on success
 | 
				
			||||||
   */
 | 
					   */
 | 
				
			||||||
   int (*ecc_ptadd)(ecc_point *P, ecc_point *Q, ecc_point *R, void *modulus, void *mp);
 | 
					   int (*ecc_ptadd)(ecc_point *P,
 | 
				
			||||||
 | 
					                    ecc_point *Q,
 | 
				
			||||||
 | 
					                    ecc_point *R,
 | 
				
			||||||
 | 
					                         void *modulus,
 | 
				
			||||||
 | 
					                         void *mp);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   /** ECC GF(p) point double
 | 
					   /** ECC GF(p) point double
 | 
				
			||||||
       @param P    The first point
 | 
					       @param P    The first point
 | 
				
			||||||
@ -361,15 +380,20 @@ typedef struct {
 | 
				
			|||||||
       @param mp   The "b" value from montgomery_setup()
 | 
					       @param mp   The "b" value from montgomery_setup()
 | 
				
			||||||
       @return CRYPT_OK on success
 | 
					       @return CRYPT_OK on success
 | 
				
			||||||
   */
 | 
					   */
 | 
				
			||||||
   int (*ecc_ptdbl)(ecc_point *P, ecc_point *R, void *modulus, void *mp);
 | 
					   int (*ecc_ptdbl)(ecc_point *P,
 | 
				
			||||||
 | 
					                    ecc_point *R,
 | 
				
			||||||
 | 
					                         void *modulus,
 | 
				
			||||||
 | 
					                         void *mp);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   /** ECC mapping from projective to affine, currently uses (x,y,z) => (x/z^2, y/z^3, 1)
 | 
					   /** ECC mapping from projective to affine,
 | 
				
			||||||
 | 
					       currently uses (x,y,z) => (x/z^2, y/z^3, 1)
 | 
				
			||||||
       @param P     The point to map
 | 
					       @param P     The point to map
 | 
				
			||||||
       @param modulus The modulus
 | 
					       @param modulus The modulus
 | 
				
			||||||
       @param mp    The "b" value from montgomery_setup()
 | 
					       @param mp    The "b" value from montgomery_setup()
 | 
				
			||||||
       @return CRYPT_OK on success
 | 
					       @return CRYPT_OK on success
 | 
				
			||||||
       @remark  The mapping can be different but keep in mind a ecc_point only has three
 | 
					       @remark The mapping can be different but keep in mind a
 | 
				
			||||||
                integers (x,y,z) so if you use a different mapping you have to make it fit.
 | 
					               ecc_point only has three integers (x,y,z) so if
 | 
				
			||||||
 | 
					               you use a different mapping you have to make it fit.
 | 
				
			||||||
   */
 | 
					   */
 | 
				
			||||||
   int (*ecc_map)(ecc_point *P, void *modulus, void *mp);
 | 
					   int (*ecc_map)(ecc_point *P, void *modulus, void *mp);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -378,7 +402,7 @@ typedef struct {
 | 
				
			|||||||
       @param kA       What to multiple A by
 | 
					       @param kA       What to multiple A by
 | 
				
			||||||
       @param B        Second point to multiply
 | 
					       @param B        Second point to multiply
 | 
				
			||||||
       @param kB       What to multiple B by
 | 
					       @param kB       What to multiple B by
 | 
				
			||||||
       @param C        [out] Destination point (can overlap with A or B
 | 
					       @param C        [out] Destination point (can overlap with A or B)
 | 
				
			||||||
       @param modulus  Modulus for curve
 | 
					       @param modulus  Modulus for curve
 | 
				
			||||||
       @return CRYPT_OK on success
 | 
					       @return CRYPT_OK on success
 | 
				
			||||||
   */
 | 
					   */
 | 
				
			||||||
@ -392,19 +416,24 @@ typedef struct {
 | 
				
			|||||||
   /** RSA Key Generation
 | 
					   /** RSA Key Generation
 | 
				
			||||||
       @param prng     An active PRNG state
 | 
					       @param prng     An active PRNG state
 | 
				
			||||||
       @param wprng    The index of the PRNG desired
 | 
					       @param wprng    The index of the PRNG desired
 | 
				
			||||||
       @param size     The size of the modulus (key size) desired (octets)
 | 
					       @param size     The size of the key in octets
 | 
				
			||||||
       @param e        The "e" value (public key).  e==65537 is a good choice
 | 
					       @param e        The "e" value (public key).
 | 
				
			||||||
 | 
					                       e==65537 is a good choice
 | 
				
			||||||
       @param key      [out] Destination of a newly created private key pair
 | 
					       @param key      [out] Destination of a newly created private key pair
 | 
				
			||||||
       @return CRYPT_OK if successful, upon error all allocated ram is freed
 | 
					       @return CRYPT_OK if successful, upon error all allocated ram is freed
 | 
				
			||||||
    */
 | 
					    */
 | 
				
			||||||
    int (*rsa_keygen)(prng_state *prng, int wprng, int size, long e, rsa_key *key);
 | 
					    int (*rsa_keygen)(prng_state *prng,
 | 
				
			||||||
 | 
					                             int  wprng,
 | 
				
			||||||
 | 
					                             int  size,
 | 
				
			||||||
 | 
					                            long  e,
 | 
				
			||||||
 | 
					                         rsa_key *key);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   /** RSA exponentiation
 | 
					   /** RSA exponentiation
 | 
				
			||||||
      @param in       The octet array representing the base
 | 
					      @param in       The octet array representing the base
 | 
				
			||||||
      @param inlen    The length of the input
 | 
					      @param inlen    The length of the input
 | 
				
			||||||
      @param out      The destination (to be stored in an octet array format)
 | 
					      @param out      The destination (to be stored in an octet array format)
 | 
				
			||||||
      @param outlen   The length of the output buffer and the resulting size (zero padded to the size of the modulus)
 | 
					      @param outlen   The length of the output buffer and the resulting size
 | 
				
			||||||
 | 
					                      (zero padded to the size of the modulus)
 | 
				
			||||||
      @param which    PK_PUBLIC for public RSA and PK_PRIVATE for private RSA
 | 
					      @param which    PK_PUBLIC for public RSA and PK_PRIVATE for private RSA
 | 
				
			||||||
      @param key      The RSA key to use
 | 
					      @param key      The RSA key to use
 | 
				
			||||||
      @return CRYPT_OK on success
 | 
					      @return CRYPT_OK on success
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user