/* ** ** Krishna Puttaswamy: created on 21st May 2006 ** description: My collection of functions to help in performing cryptographic operations */ #ifndef _MYCRYPTO_H_ #define _MYCRYPTO_H_ #include "chimera.h" #define RAND_SEED_LENGTH 16 #define SYMMETRIC_KEY_LENGTH 16 #define IV_LENGTH 16 // This is the symmetric encryption by default for this project #define SYMMETRIC_CYPHER_TYPE "bf-ecb" #ifdef __cplusplus extern "C" { #endif // These are for symmetric key encryption void get_data_from_random_file (unsigned char *data, int length); void print_in_hex (unsigned char *data, int length); unsigned char *symmetric_encrypt (unsigned char *data, int inputlen, unsigned char *key, int keylen, unsigned char *iv, int ivlen, int *outlen); unsigned char *symmetric_decrypt (ChimeraState *state, unsigned char *data, int inputlen, unsigned char *key, int keylen, unsigned char *iv, int ivlen, int *outlen); void generate_symmetric_key (unsigned char *key, int keylen, unsigned char *iv, int ivlen); // There are for asymmetric key encryption EVP_PKEY *ReadPublicKey (const char *certfile); EVP_PKEY *ReadPrivateKey (const char *keyfile); // there is no need to generate the asymmetric keys unlike symmetric keys because they are obtained from the CA unsigned char *rsa_decrypt (unsigned char *data, int inputlen, char *privKeyFile, int *outlen); unsigned char *rsa_encrypt (unsigned char *data, int inputlen, char *pubKeyFile, int *outlen); #ifdef __cplusplus } #endif #endif /* _MYCRYPTO_H_ */