Compare commits
3 Commits
87e3555a5a
...
bef931f28f
Author | SHA1 | Date |
---|---|---|
AJ ONeal | bef931f28f | |
AJ ONeal | eb432571ca | |
AJ ONeal | 29a47e8fa4 |
|
@ -11,7 +11,7 @@ A._getAccountKid = function(me, options) {
|
|||
// It's just fine if there's no account, we'll go get the key id we need via the existing key
|
||||
var kid =
|
||||
options.kid ||
|
||||
(options.account && (options.account.key && options.account.key.kid));
|
||||
(options.account && options.account.key && options.account.key.kid);
|
||||
|
||||
if (kid) {
|
||||
return Promise.resolve(kid);
|
||||
|
|
19
acme.js
19
acme.js
|
@ -1236,14 +1236,8 @@ ACME._prepRequest = function(me, options) {
|
|||
options.domains = options.domains || _csr.altnames;
|
||||
_csr.altnames = _csr.altnames || [];
|
||||
if (
|
||||
options.domains
|
||||
.slice(0)
|
||||
.sort()
|
||||
.join(' ') !==
|
||||
_csr.altnames
|
||||
.slice(0)
|
||||
.sort()
|
||||
.join(' ')
|
||||
options.domains.slice(0).sort().join(' ') !==
|
||||
_csr.altnames.slice(0).sort().join(' ')
|
||||
) {
|
||||
return Promise.reject(
|
||||
new Error('certificate altnames do not match requested domains')
|
||||
|
@ -1347,10 +1341,7 @@ ACME._csrToUrlBase64 = function(csr) {
|
|||
// TODO use PEM.parseBlock()
|
||||
// nix PEM headers, if any
|
||||
if ('-' === csr[0]) {
|
||||
csr = csr
|
||||
.split(/\n+/)
|
||||
.slice(1, -1)
|
||||
.join('');
|
||||
csr = csr.split(/\n+/).slice(1, -1).join('');
|
||||
}
|
||||
return Enc.base64ToUrlBase64(csr.trim().replace(/\s+/g, ''));
|
||||
};
|
||||
|
@ -1359,9 +1350,7 @@ ACME._csrToUrlBase64 = function(csr) {
|
|||
ACME._prnd = function (n) {
|
||||
var rnd = '';
|
||||
while (rnd.length / 2 < n) {
|
||||
var i = Math.random()
|
||||
.toString()
|
||||
.substr(2);
|
||||
var i = Math.random().toString().substr(2);
|
||||
var h = parseInt(i, 10).toString(16);
|
||||
if (h.length % 2) {
|
||||
h = '0' + h;
|
||||
|
|
|
@ -9,9 +9,6 @@ sha2.sum = function(alg, str) {
|
|||
var sha = 'sha' + String(alg).replace(/^sha-?/i, '');
|
||||
// utf8 is the default for strings
|
||||
var buf = Buffer.from(str);
|
||||
return crypto
|
||||
.createHash(sha)
|
||||
.update(buf)
|
||||
.digest();
|
||||
return crypto.createHash(sha).update(buf).digest();
|
||||
});
|
||||
};
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "@root/acme",
|
||||
"version": "3.0.10",
|
||||
"version": "3.1.0",
|
||||
"lockfileVersion": 1,
|
||||
"requires": true,
|
||||
"dependencies": {
|
||||
|
@ -28,9 +28,9 @@
|
|||
"integrity": "sha512-OaEub02ufoU038gy6bsNHQOjIn8nUjGiLcaRmJ40IUykneJkIW5fxDqKxQx48cszuNflYldsJLPPXCrGfHs8yQ=="
|
||||
},
|
||||
"@root/keypairs": {
|
||||
"version": "0.9.0",
|
||||
"resolved": "https://registry.npmjs.org/@root/keypairs/-/keypairs-0.9.0.tgz",
|
||||
"integrity": "sha512-NXE2L9Gv7r3iC4kB/gTPZE1vO9Ox/p14zDzAJ5cGpTpytbWOlWF7QoHSJbtVX4H7mRG/Hp7HR3jWdWdb2xaaXg==",
|
||||
"version": "0.10.0",
|
||||
"resolved": "https://registry.npmjs.org/@root/keypairs/-/keypairs-0.10.0.tgz",
|
||||
"integrity": "sha512-t8VocY46Mtb0NTsxzyLLf5tsgfw0BXLYVADAyiRdEdqHcvPFGJdjkXNtHVQuSV/FMaC65iTOHVP4E6X8iT3Ikg==",
|
||||
"requires": {
|
||||
"@root/encoding": "^1.0.1",
|
||||
"@root/pem": "^1.0.4",
|
||||
|
@ -43,9 +43,9 @@
|
|||
"integrity": "sha512-rEUDiUsHtild8GfIjFE9wXtcVxeS+ehCJQBwbQQ3IVfORKHK93CFnRtkr69R75lZFjcmKYVc+AXDB+AeRFOULA=="
|
||||
},
|
||||
"@root/request": {
|
||||
"version": "1.3.11",
|
||||
"resolved": "https://registry.npmjs.org/@root/request/-/request-1.3.11.tgz",
|
||||
"integrity": "sha512-3a4Eeghcjsfe6zh7EJ+ni1l8OK9Fz2wL1OjP4UCa0YdvtH39kdXB9RGWuzyNv7dZi0+Ffkc83KfH0WbPMiuJFw=="
|
||||
"version": "1.6.1",
|
||||
"resolved": "https://registry.npmjs.org/@root/request/-/request-1.6.1.tgz",
|
||||
"integrity": "sha512-8wrWyeBLRp7T8J36GkT3RODJ6zYmL0/maWlAUD5LOXT28D3TDquUepyYDKYANNA3Gc8R5ZCgf+AXvSTYpJEWwQ=="
|
||||
},
|
||||
"@root/x509": {
|
||||
"version": "0.7.2",
|
||||
|
@ -152,9 +152,9 @@
|
|||
"dev": true
|
||||
},
|
||||
"glob": {
|
||||
"version": "7.1.5",
|
||||
"resolved": "https://registry.npmjs.org/glob/-/glob-7.1.5.tgz",
|
||||
"integrity": "sha512-J9dlskqUXK1OeTOYBEn5s8aMukWMwWfs+rPTn/jn50Ux4MNXVhubL1wu/j2t+H4NVI+cXEcCaYellqaPVGXNqQ==",
|
||||
"version": "7.1.6",
|
||||
"resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz",
|
||||
"integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"fs.realpath": "^1.0.0",
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "@root/acme",
|
||||
"version": "3.0.10",
|
||||
"version": "3.1.0",
|
||||
"description": "Free SSL certificates for Node.js and Browsers. Issued via Let's Encrypt",
|
||||
"homepage": "https://rootprojects.org/acme/",
|
||||
"main": "acme.js",
|
||||
|
@ -44,9 +44,9 @@
|
|||
"dependencies": {
|
||||
"@root/csr": "^0.8.1",
|
||||
"@root/encoding": "^1.0.1",
|
||||
"@root/keypairs": "^0.9.0",
|
||||
"@root/keypairs": "^0.10.0",
|
||||
"@root/pem": "^1.0.4",
|
||||
"@root/request": "^1.3.11",
|
||||
"@root/request": "^1.6.1",
|
||||
"@root/x509": "^0.7.2"
|
||||
},
|
||||
"devDependencies": {
|
||||
|
|
|
@ -247,12 +247,7 @@ module.exports = function() {
|
|||
|
||||
function random() {
|
||||
return (
|
||||
parseInt(
|
||||
Math.random()
|
||||
.toString()
|
||||
.slice(2, 99),
|
||||
10
|
||||
)
|
||||
parseInt(Math.random().toString().slice(2, 99), 10)
|
||||
.toString(16)
|
||||
.slice(0, 4) + '例'
|
||||
);
|
||||
|
|
|
@ -33,10 +33,7 @@ native
|
|||
|
||||
var now = Date.now();
|
||||
var nonce = '20';
|
||||
var needle = crypto
|
||||
.randomBytes(3)
|
||||
.toString('hex')
|
||||
.slice(0, 5);
|
||||
var needle = crypto.randomBytes(3).toString('hex').slice(0, 5);
|
||||
native
|
||||
._hashcash({
|
||||
alg: 'SHA-256',
|
||||
|
|
9
utils.js
9
utils.js
|
@ -11,12 +11,13 @@ U._jwsRequest = function(me, bigopts) {
|
|||
bigopts.protected.nonce = nonce;
|
||||
bigopts.protected.url = bigopts.url;
|
||||
// protected.alg: added by Keypairs.signJws
|
||||
if (!bigopts.protected.jwk) {
|
||||
// protected.kid must be overwritten due to ACME's interpretation of the spec
|
||||
if (!('kid' in bigopts.protected)) {
|
||||
if (bigopts.protected.jwk) {
|
||||
bigopts.protected.kid = false;
|
||||
} else if (!('kid' in bigopts.protected)) {
|
||||
// protected.kid must be provided according to ACME's interpretation of the spec
|
||||
// (using the provided URL rather than the Key's Thumbprint as Key ID)
|
||||
bigopts.protected.kid = bigopts.kid;
|
||||
}
|
||||
}
|
||||
|
||||
// this will shasum the thumbprint the 2nd time
|
||||
return Keypairs.signJws({
|
||||
|
|
Loading…
Reference in New Issue