使用 Stream 读取私钥
Use Stream to read private key
使用 READER 更新以获取更多内容:
这个有效:
var privateKeyPath = @"C:\foo\DKIM Private Key.txt";
var signer = new DkimSigner(
privateKeyPath,
mailKitConfiguration.Domain,
mailKitConfiguration.Selector);
signer.Sign(message, headersToSign);
如何改用 Stream 来工作? - 我什至不知道是我的 privateKey
变量还是我的 memory Stream
导致了我的麻烦。我试过这个:
var privateKey = @"-----BEGIN RSA PRIVATE KEY-----MICESDABCDEF..............KBgQDa3-----END RSA PRIVATE KEY-----";
var privateKeyBytes = Encoding.ASCII.GetBytes(privateKey);
using (var memory = new MemoryStream(privateKeyBytes))
{
using (var reader = new StreamReader(memory))
{
var test1 = reader.ReadLine(); // test1: "-----BEGIN RSA PRIVATE KEY-----\nMIICXQIBAAKBgQDa38lnCp4wTcuk0Dkl6zjbc9hkeTCLFa0F4pc7XCsDj......."
var test2 = reader.ReadLine(); // test2: empty
var test3 = reader.ReadLine(); // test3: empty
}
memory.Position = 0;
var signer = new DkimSigner(
memory,
mailKitConfiguration.Domain,
mailKitConfiguration.Selector
);
signer.Sign(message, headersToSign);
}
留言:
System.FormatException: Private key not found.
堆栈跟踪:
at MimeKit.Cryptography.DkimSignerBase.LoadPrivateKey(Stream stream)
at MimeKit.Cryptography.DkimSigner..ctor(Stream stream, String domain, String selector,
DkimSignatureAlgorithm algorithm)
您不需要将流的位置重置为 0,构造函数 MemoryStream(byte[])
已经从 0 开始。
您的密钥中需要换行符:-----BEGIN RSA PRIVATE KEY-----\r\n(data)\r\n---
。
使用 READER 更新以获取更多内容:
这个有效:
var privateKeyPath = @"C:\foo\DKIM Private Key.txt";
var signer = new DkimSigner(
privateKeyPath,
mailKitConfiguration.Domain,
mailKitConfiguration.Selector);
signer.Sign(message, headersToSign);
如何改用 Stream 来工作? - 我什至不知道是我的 privateKey
变量还是我的 memory Stream
导致了我的麻烦。我试过这个:
var privateKey = @"-----BEGIN RSA PRIVATE KEY-----MICESDABCDEF..............KBgQDa3-----END RSA PRIVATE KEY-----";
var privateKeyBytes = Encoding.ASCII.GetBytes(privateKey);
using (var memory = new MemoryStream(privateKeyBytes))
{
using (var reader = new StreamReader(memory))
{
var test1 = reader.ReadLine(); // test1: "-----BEGIN RSA PRIVATE KEY-----\nMIICXQIBAAKBgQDa38lnCp4wTcuk0Dkl6zjbc9hkeTCLFa0F4pc7XCsDj......."
var test2 = reader.ReadLine(); // test2: empty
var test3 = reader.ReadLine(); // test3: empty
}
memory.Position = 0;
var signer = new DkimSigner(
memory,
mailKitConfiguration.Domain,
mailKitConfiguration.Selector
);
signer.Sign(message, headersToSign);
}
留言:
System.FormatException: Private key not found.
堆栈跟踪:
at MimeKit.Cryptography.DkimSignerBase.LoadPrivateKey(Stream stream)
at MimeKit.Cryptography.DkimSigner..ctor(Stream stream, String domain, String selector,
DkimSignatureAlgorithm algorithm)
您不需要将流的位置重置为 0,构造函数 MemoryStream(byte[])
已经从 0 开始。
您的密钥中需要换行符:-----BEGIN RSA PRIVATE KEY-----\r\n(data)\r\n---
。