Annotation of OpenXM/src/ox_ntl/crypt/rsa/gmprsa.h, Revision 1.1
1.1 ! iwane 1: /* $OpenXM$ */
! 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);
! 39:
! 40: /*
! 41: * bit >= 96 (MUST)
! 42: * rep >= 80(SHOULD) : see rsa_genprime().
! 43: */
! 44: int rsa_keygen(rsa_key *, const mpz_ptr seed1, const mpz_ptr seed2, unsigned int bit, int rep);
! 45:
! 46: void rsa_set_publickey(rsa_key *rsa, mpz_ptr public_key, mpz_ptr mod);
! 47: void rsa_set_key(rsa_key *rsa, mpz_ptr public_key, mpz_ptr private_key, mpz_ptr mod);
! 48:
! 49: int rsa_encrypt_by_public_key(rsa_key *, unsigned char *eb, const unsigned char *msg, int len, int);
! 50: int rsa_encrypt_by_private_key(rsa_key *, unsigned char *eb, const unsigned char *msg, int len, int);
! 51:
! 52: int rsa_decrypt_by_public_key(rsa_key *, unsigned char *buf, const unsigned char *eb, int);
! 53: int rsa_decrypt_by_private_key(rsa_key *, unsigned char *buf, const unsigned char *eb, int);
! 54:
! 55:
! 56: #ifdef __cplusplus
! 57: }
! 58: #endif
! 59:
! 60:
! 61: #endif
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>