diff --git a/index.html b/index.html
index 260e34b..4c968ea 100644
--- a/index.html
+++ b/index.html
@@ -3,13 +3,143 @@
Greenlock™
-
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/js/app.js b/js/app.js
index 8c0a810..73d30ee 100644
--- a/js/app.js
+++ b/js/app.js
@@ -1,6 +1,57 @@
(function () {
'use strict';
- //window.document.querySelector('.js-acme-directory-url').value = 'https://acme-v02.api.letsencrypt.org/directory';
- window.document.querySelector('.js-acme-directory-url').value = 'https://acme-staging-v02.api.letsencrypt.org/directory';
+ var $qs = function (s) { return window.document.querySelector(s); };
+ var $qsa = function (s) { return window.document.querySelectorAll(s); };
+ var info = {};
+ var steps = {};
+ var i = 1;
+
+ //$qs('.js-acme-directory-url').value = 'https://acme-v02.api.letsencrypt.org/directory';
+ $qs('.js-acme-directory-url').value = 'https://acme-staging-v02.api.letsencrypt.org/directory';
+
+ function hideForms() {
+ $qsa('.js-acme-form').forEach(function (el) {
+ el.hidden = true;
+ });
+ }
+
+ $qs('.js-acme-form-domains').addEventListener('submit', function (ev) {
+ ev.preventDefault();
+ info.identifiers = $qs('.js-acme-domains').value.split(/,/g).map(function (hostname) {
+ return { type: 'dns', value: hostname.trim() };
+ });
+
+ return BACME.directory($qs('.js-acme-directory-url').value).then(function () {
+ i += 1;
+ steps[i]();
+ });
+ });
+
+ steps[1] = function () {
+ hideForms();
+ $qs('.js-acme-form-domains').hidden = false;
+ };
+
+ steps[2] = function () {
+ hideForms();
+ $qs('.js-acme-form-account').hidden = false;
+ };
+
+ steps[3] = function () {
+ hideForms();
+ $qs('.js-acme-form-challenges').hidden = false;
+ };
+
+ steps[4] = function () {
+ hideForms();
+ $qs('.js-acme-form-poll').hidden = false;
+ }
+
+ steps[5] = function () {
+ hideForms();
+ $qs('.js-acme-form-download').hidden = false;
+ }
+
+ steps[1]();
}());
diff --git a/js/bacme.js b/js/bacme.js
index 7054187..6f68173 100644
--- a/js/bacme.js
+++ b/js/bacme.js
@@ -8,13 +8,13 @@ var webCrypto = exports.crypto;
var directoryUrl = 'https://acme-staging-v02.api.letsencrypt.org/directory';
var directory;
-var nonceUrl = directory.newNonce || 'https://acme-staging-v02.api.letsencrypt.org/acme/new-nonce';
+var nonceUrl;
var nonce;
var accountKeypair;
var accountJwk;
-var accountUrl = directory.newAccount;
+var accountUrl;
var signedAccount;
BACME.challengePrefixes = {
@@ -38,6 +38,9 @@ BACME.directory = function (url) {
BACME._logHeaders(resp);
return resp.json().then(function (body) {
directory = body;
+ nonceUrl = directory.newNonce || 'https://acme-staging-v02.api.letsencrypt.org/acme/new-nonce';
+ accountUrl = directory.newAccount || 'https://acme-staging-v02.api.letsencrypt.org/acme/new-account';
+ orderUrl = directory.newOrder || "https://acme-staging-v02.api.letsencrypt.org/acme/new-order";
BACME._logBody(body);
return body;
});
@@ -169,7 +172,7 @@ BACME.accounts.set = function () {
});
};
-var orderUrl = directory.newOrder || "https://acme-staging-v02.api.letsencrypt.org/acme/new-order";
+var orderUrl;
var signedOrder;
BACME.orders = {};
@@ -305,7 +308,8 @@ BACME.challenges['http-01'] = function () {
path: httpPath
, value: keyAuth
};
-});
+};
+
BACME.challenges['dns-01'] = function () {
return window.crypto.subtle.digest(
{ name: "SHA-256", }
@@ -326,7 +330,7 @@ BACME.challenges['dns-01'] = function () {
return {
type: 'TXT'
, host: dnsRecord
- , answer: dnsAuth;
+ , answer: dnsAuth
};
});
};
@@ -424,13 +428,13 @@ BACME.domains.generateKeypair = function () {
});
};
-BACME.order.generateCsr = function (keypair, domains) {
+BACME.orders.generateCsr = function (keypair, domains) {
return Promise.resolve(CSR.generate(keypair, domains));
};
var certificateUrl;
-BACME.order.finalize = function () {
+BACME.orders.finalize = function () {
var payload64 = jsto64(
{ csr: csr }
);