UNPKG

email-dkim

Version:

DomainKeys Identified Mail (DKIM)

221 lines (139 loc) 5.88 kB
# DomainKeys Identified Mail (DKIM) [![npm](http://img.shields.io/npm/v/dkim.svg?style=flat-square)](https://npmjs.com/package/dkim) [![npm](http://img.shields.io/npm/l/dkim.svg?style=flat-square)](https://npmjs.com/package/dkim) [![npm downloads](http://img.shields.io/npm/dm/dkim.svg?style=flat-square)](https://npmjs.com/package/dkim) [![build status](http://img.shields.io/travis/jhermsmeier/node-dkim.svg?style=flat-square)](https://travis-ci.org/jhermsmeier/node-dkim) ## Install via [npm](https://npmjs.com) ```sh $ npm install --save dkim ``` ## References - [RFC 6368 - DomainKeys Identified Mail (DKIM) Signatures](https://tools.ietf.org/html/rfc6376) - [RFC 8301 - Cryptographic Algorithm and Key Usage Update to DomainKeys Identified Mail (DKIM)](https://tools.ietf.org/html/rfc8301) - [RFC 8463 - A New Cryptographic Signature Method for DomainKeys Identified Mail (DKIM)](https://tools.ietf.org/html/rfc8463) - [RFC 8616 - Email Authentication for Internationalized Mail](https://tools.ietf.org/html/rfc8616) - [RFC 7489 - Domain-based Message Authentication, Reporting, and Conformance (DMARC)](https://tools.ietf.org/html/rfc7489) ## API <a name="DKIM"></a> ### DKIM : <code>Object</code> **Kind**: global variable * [DKIM](#DKIM) : <code>Object</code> * [.Signature](#DKIM.Signature) * [new DKIM.Signature()](#new_DKIM.Signature_new) * [.Key](#DKIM.Key) * [new DKIM.Key()](#new_DKIM.Key_new) * [.NONE](#DKIM.NONE) : <code>String</code> * [.OK](#DKIM.OK) : <code>String</code> * [.TEMPFAIL](#DKIM.TEMPFAIL) : <code>String</code> * [.PERMFAIL](#DKIM.PERMFAIL) : <code>String</code> * [.getKey(domain, [selector], callback)](#DKIM.getKey) * [.processBody(message, method)](#DKIM.processBody) ⇒ <code>String</code> * [.processHeader(headers, signHeaders, method)](#DKIM.processHeader) ⇒ <code>String</code> * [.verifySignature(body, headers, callback)](#DKIM.verifySignature) * [.verify(message, callback)](#DKIM.verify) * [.filterSignatureHeaders(headers, signatureHeader)](#DKIM.verify.filterSignatureHeaders) ⇒ <code>Array.&lt;String&gt;</code> * * * <a name="DKIM.Signature"></a> #### DKIM.Signature **Kind**: static class of [<code>DKIM</code>](#DKIM) **See**: [dkim-signature](https://github.com/jhermsmeier/node-dkim-signature) * * * <a name="new_DKIM.Signature_new"></a> ##### new DKIM.Signature() DKIM Signature * * * <a name="DKIM.Key"></a> #### DKIM.Key **Kind**: static class of [<code>DKIM</code>](#DKIM) **See**: [dkim-key](https://github.com/jhermsmeier/node-dkim-key) * * * <a name="new_DKIM.Key_new"></a> ##### new DKIM.Key() DKIM Key * * * <a name="DKIM.NONE"></a> #### DKIM.NONE : <code>String</code> **Kind**: static property of [<code>DKIM</code>](#DKIM) * * * <a name="DKIM.OK"></a> #### DKIM.OK : <code>String</code> **Kind**: static property of [<code>DKIM</code>](#DKIM) * * * <a name="DKIM.TEMPFAIL"></a> #### DKIM.TEMPFAIL : <code>String</code> **Kind**: static property of [<code>DKIM</code>](#DKIM) * * * <a name="DKIM.PERMFAIL"></a> #### DKIM.PERMFAIL : <code>String</code> **Kind**: static property of [<code>DKIM</code>](#DKIM) * * * <a name="DKIM.getKey"></a> #### DKIM.getKey(domain, [selector], callback) Retrieve a domain key **Kind**: static method of [<code>DKIM</code>](#DKIM) **Todo** - [ ] DNS seems to FORMERR on unregistered / expired domains, which maybe should be a TEMPFAIL (?) - [ ] make this `public_key = dkim_find_key(q_val, d_val, s_val)`, where `*_val` are the signature's attribute values - [ ] Throw error if the public key is not a Buffer **Params** - domain <code>String</code> - [selector] <code>String</code> - callback <code>function</code> * * * <a name="DKIM.processBody"></a> #### DKIM.processBody(message, method) ⇒ <code>String</code> Canonicalize the message body according to methods defined in RFC[XXXX] **Kind**: static method of [<code>DKIM</code>](#DKIM) **Throws**: - <code>Error</code> If canonicalization method is unsupported **Params** - message <code>Buffer</code> | <code>String</code> - method <code>String</code> - (simple|relaxed) * * * <a name="DKIM.processHeader"></a> #### DKIM.processHeader(headers, signHeaders, method) ⇒ <code>String</code> Canonicalize the message header according to methods defined in RFC[6376] **Kind**: static method of [<code>DKIM</code>](#DKIM) **Throws**: - <code>Error</code> If canonicalization method is unsupported **Params** - headers <code>Array.&lt;String&gt;</code> - Each header is formatted as `<field>: <value>` - signHeaders <code>Array</code> - method <code>String</code> - (simple|relaxed) **Example** ```js DKIM.processHeader( [ 'A: X', 'B : Y\t\r\n\tZ '], [ 'A' ], 'relaxed' ) ``` * * * <a name="DKIM.verifySignature"></a> #### DKIM.verifySignature(body, headers, callback) Verify a message signature **Kind**: static method of [<code>DKIM</code>](#DKIM) **Params** - body <code>Buffer</code> - headers <code>Array</code> - callback <code>function</code> * * * <a name="DKIM.verify"></a> #### DKIM.verify(message, callback) Verify a message's signatures **Kind**: static method of [<code>DKIM</code>](#DKIM) **Throws**: - <code>Error</code> If input is not a buffer **Params** - message <code>Buffer</code> - callback <code>function</code> * * * <a name="DKIM.verify.filterSignatureHeaders"></a> ##### verify.filterSignatureHeaders(headers, signatureHeader) ⇒ <code>Array.&lt;String&gt;</code> Filter out signature headers other than the specified `signatureHeader` **Kind**: static method of [<code>verify</code>](#DKIM.verify) **Returns**: <code>Array.&lt;String&gt;</code> - filtered headers **Params** - headers <code>Array.&lt;String&gt;</code> - list of headers to filter - signatureHeader <code>String</code> - signature header to keep * * *