public static FileInfo PGPSignAndEncrypt(this FileInfo plainFile, string pathOut, FileInfo privateKeyFile, string password, FileInfo publicKeyFile)
{
FileInfo encryptedFile = new FileInfo($"{pathOut}i80i{GetFileCountString().PadLeft(4, '0')}");
PGPLib pgp = new PGPLib();
pgp.SignAndEncryptFile(plainFile, privateKeyFile, password, publicKeyFile, encryptedFile, true, false);
return encryptedFile;
}
我已经在GoAnywhere的OpenPGP Studio具有一个公共和一对密钥的环境中成功使用了此方法。现在,我创建了第二个密钥对,并导入了第二个公共密钥,这破坏了该方法。错误消息是:
秘密密钥密码不正确
Org.BouncyCastle.Bcpg.OpenPgp.PgpException:校验和不匹配,为2的0 在Org.BouncyCastle.Bcpg.OpenPgp.PgpSecretKey.ExtractPrivateKey(Char [] passPhrase)
在DidiSoft.BC.BaseLib.ExtractPrivateKey(PgpSecretKey pgpSec,字符串privateKeyPassword) 在DidiSoft.Pgp.PGPLib.SignAndEncryptFile(FileInfo inputFile,FileInfo privateKeyFile,String password,FileInfo publicKeyFile,FileInfo outputFile,Boolean asciiArmor,Boolean withIntegrityCheck)
位于C:\ TFS \ Intercept Pharmaceuticals Inc \ Safe Pay Citi Upload \ InterceptPharma.RSM.SafePayCitiUpload \ Extensions.cs中的InterceptPharma.RSM.SafePayCitiUpload.Extensions.PGPSignAndEncrypt(FileInfo plainFile,String pathOut,FileInfo privateKeyFile,String password,FileInfo publicKeyFile) :第30行
我得出的结论是,我现在需要拨打一个电话,以指定要使用的密钥。 Didisoft PGP的SignAndEncryptFile()具有以下重载:
public void SignAndEncryptFile(string inputFileName, KeyStore keyStore, long signingKeyId, string signingKeyPassword, long encryptionKeyId, string outputFileName, bool armor, bool withIntegrityCheck);
我不确定这个KeyStore对象是什么。我可以从Open PGP Studio的密钥环文件获取到密钥库吗?