Annotation of OpenXM/src/ox_ntl/crypt/rsa/gmprsa.h, Revision 1.2
1.2 ! iwane 1: /* $OpenXM: OpenXM/src/ox_ntl/crypt/rsa/gmprsa.h,v 1.1 2004/08/16 03:59:58 iwane Exp $ */
1.1 iwane 2:
3: #ifndef __GMP_RSA_H__
4: #define __GMP_RSA_H__
5:
6:
7: #include <gmp.h>
8:
9:
10: typedef struct rsa_key_tag {
11: mpz_t p; /* prime */
12: mpz_t q; /* prime */
13: mpz_t mod; /* = p * q */
14: mpz_t private_key;
15: mpz_t public_key;
16: int k;
17: } rsa_key;
18:
19:
20: #define RSA_PKCS_1_PADDING (0x00000001)
21:
22: #define RSA_PKCS_1_PADDING_PRIVATE0 (0x00)
23: #define RSA_PKCS_1_PADDING_PRIVATE (0x01)
24: #define RSA_PKCS_1_PADDING_PUBLIC (0x02)
25:
26: #ifdef __cplusplus
27: extern "C" {
28: #endif
29:
30:
31: void rsa_init(rsa_key *r);
32: void rsa_clear(rsa_key *r);
33:
34: /*
35: * the probability of a false positive is (1/4) ** reps.
36: * see mpz_probab_prime_p(GMP)
37: */
38: void rsa_genprime(mpz_ptr prime, int len, const mpz_ptr seed, int rep);
1.2 ! iwane 39: void rsa_genprime_strong(mpz_ptr prime, int len, const mpz_ptr seed, int rep);
1.1 iwane 40:
41: /*
42: * bit >= 96 (MUST)
43: * rep >= 80(SHOULD) : see rsa_genprime().
44: */
45: int rsa_keygen(rsa_key *, const mpz_ptr seed1, const mpz_ptr seed2, unsigned int bit, int rep);
46:
47: void rsa_set_publickey(rsa_key *rsa, mpz_ptr public_key, mpz_ptr mod);
48: void rsa_set_key(rsa_key *rsa, mpz_ptr public_key, mpz_ptr private_key, mpz_ptr mod);
49:
50: int rsa_encrypt_by_public_key(rsa_key *, unsigned char *eb, const unsigned char *msg, int len, int);
51: int rsa_encrypt_by_private_key(rsa_key *, unsigned char *eb, const unsigned char *msg, int len, int);
52:
53: int rsa_decrypt_by_public_key(rsa_key *, unsigned char *buf, const unsigned char *eb, int);
54: int rsa_decrypt_by_private_key(rsa_key *, unsigned char *buf, const unsigned char *eb, int);
55:
56:
57: #ifdef __cplusplus
58: }
59: #endif
60:
61:
62: #endif
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>