Мне нужно подписать цифровую строку с использованием алгоритма SHA-1 с RSA с использованием дополнения PKCS # 1. Я загрузил Turbo Power Lockbox.Чтение частного ключа в формате PEM с помощью LockBox
Секретный ключ я имею в формате PEM и был создан с помощью OpenSSL:
openssl req -x509 -nodes -days 365 -newkey rsa:1024 -sha1 -subj "/C=US/ST=CA/L=Mountain View/CN=www.mycompany.com" -keyout myrsakey.pem -out c:\temp\myrsacert.pem
Вот как это выглядит:
-----BEGIN RSA PRIVATE KEY-----
MIICXAIBAAKBgQDFzvqdAEQn9MrSLTNua5SOxshV/8jQIf3qpfunBXa9SVdm4NJw
lY7iYpwivw7EdMlBe4FmezN9LGwyIokcUSt4KUdWmA8l4Lm5rcuDzzfmlVWP7y+j
0GKG2XCp2JwHpW4Q5WiMgcAnCMD/gbDustfz3utxQhLNBdWp2MlrEH2/rQIDAQAB
AoGAUMZmnHohWtehgxYmLG8N6QfPgx7CWAupbop9KwUWKdGrOT2RcZwBDv0JmT6/
vwWZsX3Hp5ujuPfM7uQfbUrQHrcruUg/fPY8YXcWgNfOytGpaN/XKxfy2g2Cp8mE
4yoDR2QW8jo25ZH1q1cJ3jMyX9xlXaSZm7qtaoiDydE6roECQQDxqtP2tMEZ2FmQ
2o4T5Zv7P4II2PrLq+9IP0ASCZ2VzLxm2Pk6kxjnPjZ2oHG8pUQHvMz0m8Br3BY8
X1BpXrj9AkEA0YpBH7qm/nbG6YjxKAL3PbxXUJ06T/ByLjfstfCrT3LxDeklfWJb
n/V8ahRcKPLajdbKAuWvJA5NvjeJPi34cQJAZ+vD1nUIDKsiaM3zBs9X8gTvUAqu
XmMDNJguXxNPdplh8wAevHeA3/+6v+xivHJ8/K7Nm+pWJouv7Co4k/ctqQJASV4y
TUzKmgC2xyCG5+6Z6Ujf/b7/ouva3un//PiG0yu40ZkX4l4lHM4UwQPd/QyDj/Rs
CTWo7GQBvp+tc1MfUQJBALnQnNOIIkvwIK+1J6iLZgh7GurbCPMrH8nSn8SxkfBe
qq5JWo31LQAUNDW5ntG0qHZQpx6zm2MzIlt2NgOLf4s=
-----END RSA PRIVATE KEY-----
Если я не ошибаюсь, компонент, который я хочу использовать, - TLbRSAKey. Так что я попытался создать ключевой объект и прочитать его из файла:
var
mPrivateKey: TLbRSAKey;
begin
mPrivateKey := TLbRSAKey.Create(aks1024);
mPrivateKey.LoadFromFile('C:\temp\myrsakey.pem');
На LoadFromFile я получаю ошибку «Invalid RSA Key». Что я делаю не так? Поддерживает ли Lockbox ключи в формате PEM? Ни один из примеров не иллюстрирует; все, кажется, в формате ASN
Just [велосипед линять] (http://bikeshed.com/), но * "CN = www.mycompany.com "* - это прежний способ сделать это. Сегодня это может вызвать массу проблем, даже если вы подписываете его со своим собственным ЦС (т. Е. Не подписались самостоятельно). См. [Как создать самозаверяющий сертификат с openssl?] (Http://stackoverflow.com/q/10175812/608639). Сосредоточьтесь на использовании альтернативных имен предмета (а не на самоподписанной части). – jww