|
|
@@ -39,7 +39,7 @@ function verifyDkimSignature(rawMessage, publicKey) {
|
|
|
const signedHeaderNames = tags.h.split(':').map((name) => name.trim().toLowerCase()).filter(Boolean);
|
|
|
const signingInput = [
|
|
|
...signedHeaderNames.map((name) => relaxedHeader(findLastHeader(headers, name))),
|
|
|
- relaxedHeader({ name: 'DKIM-Signature', value: dkimWithoutSignature })
|
|
|
+ relaxedHeader({ name: 'DKIM-Signature', value: dkimWithoutSignature }, '')
|
|
|
].join('');
|
|
|
const signatureValid = crypto
|
|
|
.createVerify('RSA-SHA256')
|
|
|
@@ -83,8 +83,8 @@ function findLastHeader(headers, name) {
|
|
|
return found || { name, value: '' };
|
|
|
}
|
|
|
|
|
|
-function relaxedHeader(header) {
|
|
|
- return `${header.name.toLowerCase()}:${header.value.replace(/\s+/g, ' ').trim()}\r\n`;
|
|
|
+function relaxedHeader(header, suffix = '\r\n') {
|
|
|
+ return `${header.name.toLowerCase()}:${header.value.replace(/\s+/g, ' ').trim()}${suffix}`;
|
|
|
}
|
|
|
|
|
|
function relaxedBody(body) {
|
|
|
@@ -98,9 +98,9 @@ function relaxedBody(body) {
|
|
|
|
|
|
function dkimPublicPem(publicKey) {
|
|
|
return [
|
|
|
- '-----BEGIN RSA PUBLIC KEY-----',
|
|
|
+ '-----BEGIN PUBLIC KEY-----',
|
|
|
publicKey.match(/.{1,64}/g).join('\n'),
|
|
|
- '-----END RSA PUBLIC KEY-----',
|
|
|
+ '-----END PUBLIC KEY-----',
|
|
|
''
|
|
|
].join('\n');
|
|
|
}
|