openssl/crypto/bn/bn_mont2.h

37 lines
755 B
C
Raw Normal View History

2000-11-26 13:55:19 +01:00
/*
*
* bn_mont2.h
*
* Montgomery Modular Arithmetic Functions.
*
* Copyright (C) Lenka Fibikova 2000
*
*
*/
#ifndef HEADER_MONT2_H
#define HEADER_MONT2_H
#define MONTGOMERY
2000-11-26 19:31:32 +01:00
#include <openssl/bn.h>
2000-11-26 13:55:19 +01:00
typedef struct bn_mont_st{
int R_num_bits;
int p_num_bytes;
BIGNUM *p;
BN_ULONG p_inv_b_neg; /* p' = p^{-1} mod b; b = 2^BN_BITS */
} BN_MONTGOMERY;
#define BN_from_mont(x, mont) (BN_mont_red((x), (mont)))
2000-11-26 13:55:19 +01:00
BN_MONTGOMERY *BN_mont_new();
int BN_to_mont(BIGNUM *x, BN_MONTGOMERY *mont, BN_CTX *ctx);
void BN_mont_clear_free(BN_MONTGOMERY *mont);
int BN_mont_set(BIGNUM *p, BN_MONTGOMERY *mont, BN_CTX *ctx);
int BN_mont_red(BIGNUM *y, BN_MONTGOMERY *mont);
int BN_mont_mod_mul(BIGNUM *r, BIGNUM *x, BIGNUM *y, BN_MONTGOMERY *mont);
2000-11-26 13:55:19 +01:00
2000-11-26 19:31:32 +01:00
#endif