We do have a build server, which contains our private key, used to sign the delay-signed assemblies, in a key container. We are now creating another build server and no one seems to know, where the original key file is, so we're trying to export the key from the original server and import into the new one.
To do the export, we are using this:
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);
}
to import - this
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;
}
The keys are being exported and imported successfully, but the signing on the new server is not working - we're getting
Key pair does not match public key from assembly
So, I suspect, that either our import, or export process is wrong. Ideas?