This tool verifies Web Key Directory (WKD) configuration for email addresses, checking both direct and advanced discovery methods. It validates policy files, CORS headers, key availability, and proper key association with the email address.

At least one Method is required to be set up for the WKD to work.

More Information on how to set up WKD

Direct Method Unknown

Policy Available:Unknown
Policy CORS Valid:Unknown
Key Location:Unknown
Key Available:Unknown
Key CORS Valid:Unknown
Key Type:Unknown
Fingerprint:Unknown
Email in Key:Unknown

Advanced Method Unknown

Policy Available:Unknown
Policy CORS Valid:Unknown
Key Location:Unknown
Key Available:Unknown
Key CORS Valid:Unknown
Key Type:Unknown
Fingerprint:Unknown
Email in Key:Unknown

Overall Status Unknown

Valid: Unknown

NPM Library

This tool is powered by the wkd-checker npm library. You can use it in your own projects or run it via CLI. The JSON output below is identical to the library output.

CLI Usage

1
npx wkd-checker test@example.com

Library Usage

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
const wkd = require('wkd-checker');

const email = 'test@example.com';

wkd.checkKey(email)
    .then(result => {
        console.log('WKD Result:', result);
        console.log('Advanced:', result.advanced.valid);
        console.log('Direct:', result.direct.valid);
    })

wkd.getKey(email)
    .then(key => {
        console.log('Retrieved Key:\n', key);
    })
    .catch(err => {
        console.error('Error retrieving key:', err);
    });

API Documentation

Endpoint: POST https://miarecki.eu/api/wkd

Method: POST with Content-Type: application/json or application/x-www-form-urlencoded

Request Body:

  • JSON Format:

    1
    2
    3
    
    {
      "email": "user@example.com"
    }
    
  • x-www-form-urlencoded Format:

    1
    
    email=user@example.com
    

Response:

  • JSON Object with advanced and direct properties, each containing a KeyCheckResult object.

  • Example:

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    
     {
     "advanced": {
       "policy_location": "https://openpgpkey.miarecki.eu/.well-known/openpgpkey/miarecki.eu/policy",
       "policyAvailable": false,
       "policyCorsValid": false,
       "key_location": "https://openpgpkey.miarecki.eu/.well-known/openpgpkey/miarecki.eu/hu/  u5u31zhdn1tyua7kdr4xmbd7k3h733b7?l=jonatan",
       "key_available": false,
       "keyCorsValid": false,
       "keyType": "Invalid",
       "keyTypeValid": false,
       "fingerprint": null,
       "emailInKey": false,
       "expired": false,
       "revoked": false,
       "valid": false
     },
     "direct": {
       "policy_location": "https://miarecki.eu/.well-known/openpgpkey/policy",
       "policyAvailable": false,
       "policyCorsValid": false,
       "key_location": "https://miarecki.eu/.well-known/openpgpkey/hu/u5u31zhdn1tyua7kdr4xmbd7k3h733b7?l=jonatan",
       "key_available": true,
       "keyCorsValid": true,
       "keyType": "BinaryKey",
       "keyTypeValid": true,
       "fingerprint": "18EECCF319422F31D717796880B1C14A34B7634A",
       "emailInKey": true,
       "expired": false,
       "revoked": false,
       "valid": false
     }
     }