Hi all. I posted question about PKCS12_key_gen() a few days ago, but nobody answered; I beleive, that's because the posting subj was not so clear. What is the correct way to create pkcs12-complient password-based key (sorry for complitely beginner's question)? If I need an a crossplatform- cryptography implementation: OpenSSL<-->JCE - the java side is smth like: PBEKeySpec keyspec = new PBEKeySpec(pwd.toCharArray()); SecretKeyFactory KFac = SecretKeyFactory.getInstance(keyAlg); SecretKey key = KFac.generateSecret(keyspec); PBEParameterSpec pars = new PBEParameterSpec(salt, iters); Cipher cf = Cipher.getInstance(cryptAlg); cf.init(Cipher.DECRYPT_MODE, key, pars); How shoul'd I do the same with OpenSSL? For instace, with cbc-triple-des - is that the correct way? : { char *k1, *k2, *k3, *pwd; char deskey[24]; char salt[8] = {0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08}; int saltlen = 8; des_key_schedule ks1,ks2,ks3; ........ if(PKCS12_key_gen(usr_passwd, strlen(usr_passwd), salt, saltlen, PKCS12_KEY_ID, 1024, /* iters */ 24, /*DES3_KEY_LEN, */ deskey, EVP_sha1()) != 1) exit(printf("failed: PKCS12_key_gen call\n")); k1 = deskey; k2 = deskey + 8; k3 = deskey + 16;
des_set_key((C_Block *)k1,ks1); des_set_key((C_Block *)k2,ks2); des_set_key((C_Block *)k3,ks3); des_ede3_cbc_encrypt((C_Block *)inBuff, (C_Block *)outBuff, data_len, ks1, ks2, ks3, (C_Block *)salt, DES_ENCRYPT); ... } Thanx a lot for any help Sincerely Jab. [EMAIL PROTECTED] ______________________________________________________________________ OpenSSL Project http://www.openssl.org User Support Mailing List [EMAIL PROTECTED] Automated List Manager [EMAIL PROTECTED]