EVP_Seal выполняет простую упаковку с RSA, так что вы можете сделать это вручную с помощью функций OpenSSL.
Вот скрипт PHP, который запечатывает с 1 сертификатом:
<?php
$pubkey = openssl_pkey_get_public(file_get_contents('selfcert.pem'));
$message = 'hello,world';
$cipher_text = NULL;
$keys = NULL;
openssl_seal($message, $cipher_text, $keys, array($pubkey));
$file = fopen('wrapped.bin', 'wb');
fwrite($file, $keys[0]);
fclose($file);
$file = fopen('data.bin', 'wb');
fwrite($file, $cipher_text);
fclose($file);
?>
и скрипт Ruby,распечатайте его:
require 'openssl'
wrapped = File.read('wrapped.bin')
cipher_text = File.read('data.bin')
privkey = OpenSSL::PKey::RSA.new(File.read('privkey.pem'))
key = privkey.private_decrypt(wrapped)
cipher = OpenSSL::Cipher.new('rc4')
cipher.decrypt
cipher.key = key
p cipher.update(cipher_text) + cipher.final
Вы также можете выполнить 'печать' с Ruby, но создать безопасный ключ сеанса (ключ RC4 для этого примера) довольно сложно, поэтому лучше не пытаться делать это самостоятельно.