コマンドを実行すると:
openssl pkcs8 -inform DER -in file.key
次に、この出力を取得します。
-----BEGIN PRIVATE KEY-----
MIICdQIBADANBgkqhkiG9w0BAQEFAASCAl8wggJbAgEAAoGBAJymFcYButtSdq6a
. . .
ROHl3KioElE/sRvPEHxJp5Bqlr2UmWSs4oMcDBVLfY609YKZTeKw6NuqH4xzd81F
7Rj3Gr6eyKeC
-----END PRIVATE KEY-----
これと同じ出力をPERLスクリプトで生成して、次の宛先に渡す必要があります。
Crypt::OpenSSL::RSA->new_private_key($key_string);
そして私のデータに署名します。
だから私は尋ねています:このコマンドは内部で何をしますか?
openssl pkcs8 -inform DER -in file.key
だから私はプロセスをperlに変換することができます。
これは私がこれまでに持っているものです:
pkcs8のASN.1構文をロードすると、参照によってデータのブロックを取得できるようになります。
$pkcs8 = Convert::ASN1->new(encoding => 'DER');
$pkcs8->prepare(q<
--PrivateKey
EncryptedPrivateKeyInfo ::= SEQUENCE {
encryptionAlgorithm EncryptionAlgorithmIdentifier,
encryptedData EncryptedData
}
EncryptionAlgorithmIdentifier ::= AlgorithmIdentifier
EncryptedData ::= OCTET STRING
AlgorithmIdentifier ::= SEQUENCE {
algorithm OBJECT IDENTIFIER,
parameters ANY DEFINED BY algorithm OPTIONAL }
>);
.keyファイルをロードしてダンプを作成する結果は次のとおりです。
$VAR1 = {
'encryptionAlgorithm' => {
binary data 'parameters' => binary data¸
'algorithm' => '1.2.840.113549.1.5.13'
},
'encryptedData' => ' . . . . binary data . . . . . '
};
私が信じているのは、encryptedDataはOID1.2.840.113549.1.5.13に従ってpkcs5を使用してエンコードされているということです
任意の提案をいただければ幸いです。