From 4af9b519150254e929dde4cb81bdb618ca25cb10 Mon Sep 17 00:00:00 2001 From: Yarmo Mackenbach Date: Mon, 13 Jul 2020 18:08:30 +0000 Subject: [PATCH] Add support for advanced WKD lookup (#1115) --- src/wkd.js | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/src/wkd.js b/src/wkd.js index 9b307662..ac387f6f 100644 --- a/src/wkd.js +++ b/src/wkd.js @@ -57,12 +57,23 @@ WKD.prototype.lookup = async function(options) { const [, localPart, domain] = /(.*)@(.*)/.exec(options.email); const localEncoded = util.encodeZBase32(await crypto.hash.sha1(util.str_to_Uint8Array(localPart.toLowerCase()))); - const url = `https://${domain}/.well-known/openpgpkey/hu/${localEncoded}`; + const urlAdvanced = `https://openpgpkey.${domain}/.well-known/openpgpkey/${domain}/hu/${localEncoded}`; + const urlDirect = `https://${domain}/.well-known/openpgpkey/hu/${localEncoded}`; - return fetch(url).then(function(response) { + return fetch(urlAdvanced).then(function(response) { if (response.status === 200) { return response.arrayBuffer(); } + }).then(function(publicKey) { + if (publicKey) { + return publicKey; + } else { + return fetch(urlDirect).then(function(response) { + if (response.status === 200) { + return response.arrayBuffer(); + } + }); + } }).then(function(publicKey) { if (publicKey) { const rawBytes = new Uint8Array(publicKey);