我们的确有一个构建服务器,它包含我们的私钥,用于在密钥容器中签署延迟签名的程序集。我们现在正在创建另一个构建服务器,似乎没有人知道原始密钥文件在哪里,所以我们试图从原始服务器导出密钥并导入新服务器。从密钥容器导出强名称
做出口,我们使用的是这样的:
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
所以,我怀疑,无论是我们的进口或出口过程我这是错的。想法?
那么,试图与导出的旗帜属性arround周围 - 它是为每个设置生成不同的键。一致,但不同。没有一个是正确的。明天继续调查。 – Hassan