sync ltc_math_descriptor from doc

This commit is contained in:
Steffen Jaeckel 2017-06-12 12:02:10 +02:00
parent a0e5c2e4ff
commit 0cf7c49045

View File

@ -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