Dear php users,

Is there any way to decrypt data encrypted using openssl_seal _without_ using openssl_open, and instead using the openssl command- line tools?

Here's how the data is encrypted (using openssl_seal). The function 'store_for_later()' just base64_encodes the data and writes to an archive location. $keycert contains the x509 certificate.

###
$key = openssl_pkey_get_public($keycert);
openssl_seal($plaintext,
             $sealed,
             $envelope,
             array($key));

store_for_later($sealed, $envelope[0]);
###

Retrieving the stored data using php, by base64_decoding it and openssl_open'ing it works fine. However, this sequence of commands fails using the OpenSSL command-line tools:

###
bt$ openssl base64 -A -d -in envelope | \
    openssl rsautl -inkey key.pem -decrypt > data_key
bt$ openssl rc4 -A -d -in sealed -kfile data_key
bad magic number
bt$
###

What's 'bad magic number' mean? I tried using the -nosalt option to openssl, and get garbage from openssl, but no 'bad magic number' error message. I suspect it has something to do with the way php creates the initial rc4 key, as I get the same plaintext key if I decrypt the "envelope" from within php or from openssl command-line.

Regards,
William

--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to