Re: 3DES Encryption / Decryption using the EVP api

2006-08-19 Thread k b

Marek,  that was good pointer i'll add that . Thanks !



From: Marek Marcola [EMAIL PROTECTED]
Reply-To: openssl-users@openssl.org
To: openssl-users@openssl.org
Subject: Re: 3DES Encryption / Decryption using the EVP api
Date: Fri, 18 Aug 2006 11:08:55 +0200

Hello,
 I want to decrypt using 3DES and want to use the EVP api.
 Here's what i'm doing, it will be nice someone could validate if my 
approach

 is correct. here's the code that i have come up with...


 int 3desDecrypt(unsigned char * pEncData, int pDataSize)
 {
int dec_data_size = 0;

EVP_CIPHER_CTX *dec_ctx = (EVP_CIPHER_CTX *)
 malloc(sizeof(EVP_CIPHER_CTX));
EVP_CIPHER_CTX_init(dec_ctx);
EVP_DecryptInit(dec_ctx, EVP_des_ede3_cbc(), myStruct-key,
 myStruct-IV);

char *decrypt_data = do_decrypt(dec_ctx, pEncData, pDataSize,
 dec_data_size);

// use the decrypt_data 
free(decrypt_data);
EVP_CIPHER_CTX_cleanup(dec_ctx);
return 0;
 }


 unsigned char *do_decrypt(EVP_CIPHER_CTX * ctx, unsigned char *data, int
 inl, int *dec_data_size)
 {
 unsigned char *buf;
 int ol;
 int bl = EVP_CIPHER_CTX_block_size (ctx);

 buf = (unsigned char *) malloc (inl + bl);

 EVP_DecryptUpdate (ctx, buf, ol, data, inl);
 *dec_data_size = *dec_data_size + ol;

 EVP_DecryptFinal(ctx, buf + ol, ol);
 *dec_data_size = *dec_data_size + ol;

 // return the decrypted buffer.
 return buf;
 }

Looks good, but my proposition is to add some error code checking
(for bad padding for example) something like that:
if(!EVP_DecryptFinal(...)){
/* error handling routine */
}

Best regards,
--
Marek Marcola [EMAIL PROTECTED]

__
OpenSSL Project http://www.openssl.org
User Support Mailing Listopenssl-users@openssl.org
Automated List Manager   [EMAIL PROTECTED]



__
OpenSSL Project http://www.openssl.org
User Support Mailing Listopenssl-users@openssl.org
Automated List Manager   [EMAIL PROTECTED]


Re: 3DES Encryption / Decryption using the EVP api

2006-08-18 Thread Marek Marcola
Hello,
 I want to decrypt using 3DES and want to use the EVP api.
 Here's what i'm doing, it will be nice someone could validate if my approach 
 is correct. here's the code that i have come up with...
 
 
 int 3desDecrypt(unsigned char * pEncData, int pDataSize)
 {
int dec_data_size = 0;
 
EVP_CIPHER_CTX *dec_ctx = (EVP_CIPHER_CTX *) 
 malloc(sizeof(EVP_CIPHER_CTX));
EVP_CIPHER_CTX_init(dec_ctx);
EVP_DecryptInit(dec_ctx, EVP_des_ede3_cbc(), myStruct-key, 
 myStruct-IV);
 
char *decrypt_data = do_decrypt(dec_ctx, pEncData, pDataSize, 
 dec_data_size);
 
// use the decrypt_data 
free(decrypt_data);
EVP_CIPHER_CTX_cleanup(dec_ctx);
return 0;
 }
 
 
 unsigned char *do_decrypt(EVP_CIPHER_CTX * ctx, unsigned char *data, int 
 inl, int *dec_data_size)
 {
 unsigned char *buf;
 int ol;
 int bl = EVP_CIPHER_CTX_block_size (ctx);
 
 buf = (unsigned char *) malloc (inl + bl);
 
 EVP_DecryptUpdate (ctx, buf, ol, data, inl);
 *dec_data_size = *dec_data_size + ol;
 
 EVP_DecryptFinal(ctx, buf + ol, ol);
 *dec_data_size = *dec_data_size + ol;
 
 // return the decrypted buffer.
 return buf;
 }
 
Looks good, but my proposition is to add some error code checking
(for bad padding for example) something like that:
if(!EVP_DecryptFinal(...)){
/* error handling routine */ 
}

Best regards,
-- 
Marek Marcola [EMAIL PROTECTED]

__
OpenSSL Project http://www.openssl.org
User Support Mailing Listopenssl-users@openssl.org
Automated List Manager   [EMAIL PROTECTED]


3DES Encryption / Decryption using the EVP api

2006-08-17 Thread k b


hi ,
I want to decrypt using 3DES and want to use the EVP api.
Here's what i'm doing, it will be nice someone could validate if my approach 
is correct. here's the code that i have come up with...



int 3desDecrypt(unsigned char * pEncData, int pDataSize)
{
  int dec_data_size = 0;

  EVP_CIPHER_CTX *dec_ctx = (EVP_CIPHER_CTX *) 
malloc(sizeof(EVP_CIPHER_CTX));

  EVP_CIPHER_CTX_init(dec_ctx);
  EVP_DecryptInit(dec_ctx, EVP_des_ede3_cbc(), myStruct-key, 
myStruct-IV);


  char *decrypt_data = do_decrypt(dec_ctx, pEncData, pDataSize, 
dec_data_size);


  // use the decrypt_data 
  free(decrypt_data);
  EVP_CIPHER_CTX_cleanup(dec_ctx);
  return 0;
}


unsigned char *do_decrypt(EVP_CIPHER_CTX * ctx, unsigned char *data, int 
inl, int *dec_data_size)

{
unsigned char *buf;
int ol;
int bl = EVP_CIPHER_CTX_block_size (ctx);

buf = (unsigned char *) malloc (inl + bl);

EVP_DecryptUpdate (ctx, buf, ol, data, inl);
*dec_data_size = *dec_data_size + ol;

EVP_DecryptFinal(ctx, buf + ol, ol);
*dec_data_size = *dec_data_size + ol;

// return the decrypted buffer.
return buf;
}


Thanks in advance.
Kunal


__
OpenSSL Project http://www.openssl.org
User Support Mailing Listopenssl-users@openssl.org
Automated List Manager   [EMAIL PROTECTED]