2016-09-28 19 views
1

私はECDSA鍵と証明書を.NETで実装しています。新しい署名でそれらを再利用できるように鍵を格納する必要があります。 RSAでRSACryptoServiceProviderクラスを使用していましたが、ECDsaとECDsaCngのどちらのクラスも似ていません。ECDSA鍵を格納する

私は、DSACryptoServiceProviderとフレームワーク4.3(古いもの)に対する古いECDsaCryptoServiceProviderを見たことがあります。

RSAのようにECDSAキーを保存する方法を知っている人はいらっしゃいますか?

private static ECDsa CreateOrOpenECDsaKey(string keyName) 
{ 
    CngKey key; 

    if (CngKey.Exists(keyName)) 
    { 
     key = CngKey.Open(keyName); 
    } 
    else 
    { 
     // You can also specify options here, like if it should be exportable, in a 
     // different overload. 
     key = CngKey.Create(CngAlgorithm.ECDsaP521, keyName); 
    } 

    // The ECDsaCng constructor will duplicate the key reference, so we can close this one. 
    using (key) 
    { 
     return new ECDsaCng(key); 
    } 
} 

あなたがしたい意味場合:CNGとのインターフェースは少し異なっている、あなたは(という名前のキーを使用してRSACryptoServiceProvider)OSのキーストアにキーを持続したい意味すると仮定すると

答えて

1

RSAParametersのようにエクスポート/インポートを実行すると、その機能は.NET Coreに存在しますが、.NET Frameworkにはまだ存在しません。

+0

答えをいただきありがとうございます。本当に便利です。私は試しましたが、ECDsaCngの値として返されました。例外として、「ECDsaCngアルゴリズムで使用されるキーには、ECDsaのアルゴリズムグループが必要です。\ r \ nパラメータ名:キー」。私の鍵はBouncyCastleライブラリで生成され、ECDSAの代わりにECDHとして作成されたようです。私はこの面で見つけなければならない。 – santiPipes

+0

@santiPipesそれが修正されました。.NET Framework 4.6.2(http://referencesource.microsoft.com/#System.Core/System/Security/Cryptography/ECDsaCng.cs,bab9826847a21b79) – bartonjs

+0

ありがとう、とてもバトンジョーンズ。つまり、このソフトウェアが実行されるすべてのコンピュータに新しいフレームワークをインストールする必要がありますか?私はこれがフレームワーク4.6.2でコンパイルするだけでは解決しないと思います(私は愚かな疑問を知っています) – santiPipes

関連する問題