1 /* PKCS Header Info */ 2 3 /* ===> PKCS #1 -- RSA Cryptography <=== */ 4 #ifdef PKCS_1 5 6 enum ltc_pkcs_1_v1_5_blocks 7 { 8 LTC_PKCS_1_EMSA = 1, /* Block type 1 (PKCS #1 v1.5 signature padding) */ 9 LTC_PKCS_1_EME = 2 /* Block type 2 (PKCS #1 v1.5 encryption padding) */ 10 }; 11 12 enum ltc_pkcs_1_paddings 13 { 14 LTC_PKCS_1_V1_5 = 1, /* PKCS #1 v1.5 padding (\sa ltc_pkcs_1_v1_5_blocks) */ 15 LTC_PKCS_1_OAEP = 2, /* PKCS #1 v2.0 encryption padding */ 16 LTC_PKCS_1_PSS = 3 /* PKCS #1 v2.1 signature padding */ 17 }; 18 19 int pkcs_1_mgf1( int hash_idx, 20 const unsigned char *seed, unsigned long seedlen, 21 unsigned char *mask, unsigned long masklen); 22 23 int pkcs_1_i2osp(void *n, unsigned long modulus_len, unsigned char *out); 24 int pkcs_1_os2ip(void *n, unsigned char *in, unsigned long inlen); 25 26 /* *** v1.5 padding */ 27 int pkcs_1_v1_5_encode(const unsigned char *msg, 28 unsigned long msglen, 29 int block_type, 30 unsigned long modulus_bitlen, 31 prng_state *prng, 32 int prng_idx, 33 unsigned char *out, 34 unsigned long *outlen); 35 36 int pkcs_1_v1_5_decode(const unsigned char *msg, 37 unsigned long msglen, 38 int block_type, 39 unsigned long modulus_bitlen, 40 unsigned char *out, 41 unsigned long *outlen, 42 int *is_valid); 43 44 /* *** v2.1 padding */ 45 int pkcs_1_oaep_encode(const unsigned char *msg, unsigned long msglen, 46 const unsigned char *lparam, unsigned long lparamlen, 47 unsigned long modulus_bitlen, prng_state *prng, 48 int prng_idx, int hash_idx, 49 unsigned char *out, unsigned long *outlen); 50 51 int pkcs_1_oaep_decode(const unsigned char *msg, unsigned long msglen, 52 const unsigned char *lparam, unsigned long lparamlen, 53 unsigned long modulus_bitlen, int hash_idx, 54 unsigned char *out, unsigned long *outlen, 55 int *res); 56 57 int pkcs_1_pss_encode(const unsigned char *msghash, unsigned long msghashlen, 58 unsigned long saltlen, prng_state *prng, 59 int prng_idx, int hash_idx, 60 unsigned long modulus_bitlen, 61 unsigned char *out, unsigned long *outlen); 62 63 int pkcs_1_pss_decode(const unsigned char *msghash, unsigned long msghashlen, 64 const unsigned char *sig, unsigned long siglen, 65 unsigned long saltlen, int hash_idx, 66 unsigned long modulus_bitlen, int *res); 67 68 #endif /* PKCS_1 */ 69 70 /* ===> PKCS #5 -- Password Based Cryptography <=== */ 71 #ifdef PKCS_5 72 73 /* Algorithm #1 (old) */ 74 int pkcs_5_alg1(const unsigned char *password, unsigned long password_len, 75 const unsigned char *salt, 76 int iteration_count, int hash_idx, 77 unsigned char *out, unsigned long *outlen); 78 79 /* Algorithm #2 (new) */ 80 int pkcs_5_alg2(const unsigned char *password, unsigned long password_len, 81 const unsigned char *salt, unsigned long salt_len, 82 int iteration_count, int hash_idx, 83 unsigned char *out, unsigned long *outlen); 84 85 #endif /* PKCS_5 */ 86 87 /* $Source: /cvs/libtom/libtomcrypt/src/headers/tomcrypt_pkcs.h,v $ */ 88 /* $Revision: 1.7 $ */ 89 /* $Date: 2006/11/15 12:44:59 $ */ 90