キー コンテナーには、遅延署名されたアセンブリに署名するために使用される秘密キーを含むビルド サーバーがあります。現在、別のビルド サーバーを作成していますが、元のキー ファイルがどこにあるか誰も知らないようです。そのため、元のサーバーからキーをエクスポートし、新しいサーバーにインポートしようとしています。
エクスポートを行うために、これを使用しています:
RSACryptoServiceProvider key;
CspParameters cp = new CspParameters();
cp.KeyContainerName = "nameOfOurContainer";
cp.Flags = CspProviderFlags.UseMachineKeyStore;
key = new RSACryptoServiceProvider(cp);
var blob = key.ExportCspBlob(true);
using (var fs = new FileStream(filePath, FileMode.CreateNew))
{
fs.Write(blob, 0, blob.Length);
}
インポートする - これ
CspParameters cp = new CspParameters();
cp.KeyContainerName = containerName;
cp.Flags = CspProviderFlags.UseMachineKeyStore;
cp.KeyNumber = (int)KeyNumber.Signature;
RSACryptoServiceProvider key = new RSACryptoServiceProvider(cp);
using (var fs = new FileStream(filePath, FileMode.Open))
{
var blob = new byte[fs.Length];
fs.Read(blob,0,(int)fs.Length);
key.ImportCspBlob(blob);
key.PersistKeyInCsp = true;
}
キーは正常にエクスポートおよびインポートされていますが、新しいサーバーでの署名が機能していません。
Key pair does not match public key from assembly
したがって、私たちのインポートまたはエクスポートのプロセスが間違っているのではないかと思います。アイデア?