/* crypto.h * * Prototypes and definitions for services in crypto.c * * ported to win nt from win 95 on 6/95 * Cory West */ #include #define CIPHERBLOCKSIZE 8 // size of RC2 block #define MAX_RSA_BITS 512 // actually 420 #define MAX_RSA_BYTES (MAX_RSA_BITS/8) #define B_PSIZEBITS 210 #define B_PSIZEWORDS (1 + B_PSIZEBITS/32) void __cdecl GenRandomBytes( BYTE *output, int len ); // // Generate an 8 byte key from a seed of the given length. // void __cdecl GenKey8( BYTE *keyData, int keyDataLen, BYTE key8[8] ); void __cdecl MD2( BYTE *input, const int inlen, BYTE *output ); // // RC2 encrypt and decrypt wrappers. // int __cdecl CBCEncrypt( BYTE *key, // secret key BYTE const *ivec, // initialization vector, NULL implies zero vector BYTE *const input, // plain text int inlen, // size of plaintext BYTE *const output, // encrypted text int *outlen, // OUTPUT: size of encrypted text const int checksumlen // size of checksum, if 0 no checksum is used ); int __cdecl CBCDecrypt( BYTE *key, // secret key BYTE *ivec, // initialization vector, null ptr implies zero vector BYTE *input, // encrypted text int inlen, // size of encrypted text BYTE *output, // plain text int *outlen, // OUTPUT: size of plaintext int checksumlen // size of checksum; 0=> no checksum ); // // Wrappers to the RSA code. // int __cdecl RSAGetInputBlockSize( BYTE *keydata, int keylen ); BYTE * __cdecl RSAGetModulus( BYTE *keydata, int keylen, int *modSize ); BYTE * _cdecl RSAGetPublicExponent( BYTE *keydata, int keylen, int *expSize ); int __cdecl RSAPack( BYTE *input, int inlen, BYTE *output, int blocksize ); int __cdecl RSAPublic( BYTE *pukeydata, // BSAFE 1 itemized public key data int pukeylen, // length of BSAFE1 keydata (including sign) BYTE *input, // input block int inlen, // size of input (< modulus) BYTE *output // encrypted block (modulus sized) ); int __cdecl RSAPrivate( BYTE *prkeydata, int prkeylen, BYTE *input, int inlen, BYTE *output ); int __cdecl RSAModMpy( BYTE *pukeydata, // BSAFE 1 itemized public key data int pukeylen, // length of BSAFE1 keydata (including sign) BYTE *input1, // input block int inlen1, // size of input (< modulus) BYTE *input2, // multiplier int inlen2, // size of multiplier BYTE *output // encrypted block (modulus sized) ); int __cdecl RSAModExp( BYTE *pukeydata, // BSAFE 1 itemized public key data int pukeylen, // length of BSAFE1 keydata (including sign) BYTE *input1, // input block int inlen1, // size of input (< modulus) BYTE *exponent, int explen, BYTE *output // encrypted block (modulus sized) );