У меня есть закрытый ключ, хранящийся в виде строки (жестко запрограммированный), и мне нужно подписать строку этим ключом.
Я мог бы использовать openssl, но я не нахожу в документация как использовать мой закрытый ключ. Я вижу только, как использовать pem-файлы или вещи, связанные с сертификатами, тогда как мой процесс не имеет ничего общего с сертификатами или чем-то в этом роде.
Закрытый ключ поступает из настольного Java-приложения и был создан с помощью класса KeyPairGenerator
KeyPairGenerator keyGen = KeyPairGenerator.getInstance("DSA", "SUN");
SecureRandom random = SecureRandom.getInstance("SHA1PRNG", "SUN");
keyGen.initialize(512, random);
KeyPair pair = keyGen.generateKeyPair();
PrivateKey pri = pair.getPrivate();
String base64Key = new Base64().encode(pri.getEncoded());
У кого-нибудь есть подсказка на это?
Спасибо !
Редактировать: Один из закрытых ключей в качестве примера:
"MIHGAgEAMIGoBgcqhkjOOAQBMIGcAkEA/KaCzo4Syrom78z3EQ5SbbB4sF7ey80etKII864WF64B
81uRpH5t9jQTxeEu0ImbzRMqzVDZkVG9xD7nN1kuFwIVAJYu3cw2nLqOuyYO5rahJtk0bjjFAkBn
hHGyepz0TukaScUUfbGpqvJE8FpDTWSGkx0tFCcbnjUDC3H9c9oXkGmzLik1Yw4cIGI1TQ2iCmxB
blC+eUykBBYCFFVbS2ccW7j+SMOiro2PzB1FG/TL"
Это Base64 представление ключа.
Мой текущий код, сохраняющий ключ в файле с именем pem:
$pkeyid = openssl_pkey_get_private("key.pem");
echo openssl_sign($data, $signature, $pkeyid);
echo "<br/>";
echo $signature;
Но openssl_sign ничего не повторяет, даже ложь, как это должно быть в случае неудачи …
Задача ещё не решена.
Других решений пока нет …