1234567891011121314151617181920212223242526272829303132333435363738394041 |
- #ifndef _QA_ARITH_H_
- #define _QA_ARITH_H
- /* shortcut macros. */
- #define BN_uiadd1(a) BN_uadd(a, a, BN_value_one())
- /**
- * Fractions made of bignums.
- */
- typedef struct bigfraction {
- BIGNUM* h; /**< numerator */
- BIGNUM* k; /**< denominator */
- } bigfraction_t;
- typedef struct cf {
- bigfraction_t fs[3];
- short i;
- bigfraction_t x;
- BIGNUM* a;
- BN_CTX* ctx;
- } cf_t;
- /* continued fractions utilities. */
- cf_t* cf_new(void);
- cf_t* cf_init(cf_t *f, BIGNUM *num, BIGNUM *b);
- void cf_free(cf_t* f);
- bigfraction_t* cf_next(cf_t *f);
- /* square root calculation */
- int BN_sqrtmod(BIGNUM* dv, BIGNUM* rem, BIGNUM* a, BN_CTX* ctx);
- RSA* qa_RSA_recover(const RSA *rsapub, const BIGNUM *p, BN_CTX *ctx);
- #endif /* _QA_ARITH_H_ */
|