int openssl_seal (string data, string sealed_data, array env_keys, array pub_key_ids)
Предупреждение!
Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.
Возвращает длину пломбированных данных при успехе, FALSE при ошибке.
При успехе возвращаются пломбированные данные в параметре sealed_data, и envelope-ключи - в
env_keys.
openssl_seal() пломбирует (шифрует)
data с помощью RC4 случайно генерируемым секретным ключом. Этот ключ шифруется с
каждым public ключом, ассоциированным с идентификатором в pub_key_ids, и каждый шифрованный ключ возвращается в
env_keys. Это значит, что можно пломбировать данные для нескольких принимающих (в
предположении, что пломбировщик имеет их public ключи). Каждый принимающий обязан получить пломбированные данные и envelope
ключ, который был зашифрован с public ключом принимающего.
Пример 1. openssl_seal()
// принимаем, что $data содержит пломбируемые данные
// извлекаем public ключи для наших получателей и читаем их
$fp = fopen("/src/openssl-0.9.6/demos/maurice/cert.pem", "r");
$cert = fread($fp, 8192);
fclose($fp);
$pk1 = openssl_get_publickey($cert);
// повторяем для второго получателя
$fp = fopen("/src/openssl-0.9.6/demos/sign/cert.pem", "r");
$cert = fread($fp, 8192);
fclose($fp);
$pk2 = openssl_get_publickey($cert);
// пломбируем сообщение, только владельцы $pk1 и $pk2 могут дешифровать $sealed ключами
// $ekeys[0] и $ekeys[1], соответственно.
openssl_seal($data, $sealed, $ekeys, array($pk1,$pk2));
// освобождает ключи из памяти
openssl_free_key($pk1);
openssl_free_key($pk2);