mirror of
https://github.com/alexbosworth/balanceofsatoshis.git
synced 2026-08-13 12:33:37 +02:00
improve cert parsing, add test
This commit is contained in:
parent
7cee8f03e6
commit
d8cea9a442
3 changed files with 88 additions and 7 deletions
|
|
@ -2,6 +2,8 @@ const beginCert = '-----BEGIN CERTIFICATE-----';
|
|||
const beginKey = '-----BEGIN PUBLIC KEY-----';
|
||||
const endCert = '-----END CERTIFICATE-----';
|
||||
const endKey = '-----END PUBLIC KEY-----';
|
||||
const endMarker = 'ENDCERTIFICATE';
|
||||
const notFoundIndex = -1;
|
||||
const split = /.{0,64}/g;
|
||||
|
||||
/** Get a DER encoded public key as a PEM encoded public key
|
||||
|
|
@ -18,10 +20,20 @@ const split = /.{0,64}/g;
|
|||
*/
|
||||
module.exports = ({cert, key}) => {
|
||||
const base64Key = Buffer.from(cert || key, 'hex').toString('base64');
|
||||
const endMarkLen = endMarker.length;
|
||||
|
||||
const endCertIndex = base64Key.indexOf(endMarker);
|
||||
const keyLen = base64Key.length;
|
||||
|
||||
const hasEndMark = endCertIndex !== notFoundIndex;
|
||||
|
||||
const plusCount = keyLen - endCertIndex - endMarkLen;
|
||||
|
||||
const endCut = hasEndMark ? -(plusCount + plusCount + endMarkLen) : keyLen;
|
||||
|
||||
const pem = []
|
||||
.concat(!cert ? beginKey : beginCert)
|
||||
.concat(base64Key.match(split)).filter(n => !!n)
|
||||
.concat(base64Key.slice(Number(), endCut).match(split).filter(n => !!n))
|
||||
.concat(!cert ? endKey : endCert)
|
||||
.join('\n');
|
||||
|
||||
|
|
|
|||
77
package-lock.json
generated
77
package-lock.json
generated
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "balanceofsatoshis",
|
||||
"version": "5.2.0",
|
||||
"version": "5.2.1",
|
||||
"lockfileVersion": 1,
|
||||
"requires": true,
|
||||
"dependencies": {
|
||||
|
|
@ -1992,6 +1992,37 @@
|
|||
"version": "5.0.0",
|
||||
"resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.0.0.tgz",
|
||||
"integrity": "sha512-bVwDX8AF+72fIUNuARelKAlQUNtPOfG2fRxorbVvFk4zpHbqLrPdOGfVg5vrKwVzLLePqPBiATaOZNELQzmS0A=="
|
||||
},
|
||||
"ln-service": {
|
||||
"version": "47.2.1",
|
||||
"resolved": "https://registry.npmjs.org/ln-service/-/ln-service-47.2.1.tgz",
|
||||
"integrity": "sha512-cyfYvQ3jJl65StEQusDgNMzpTOCS14b+lq6GAgdFzlIRI2vR+tcGEUluIF4dxVmBHnnkqrhOZjohN4wRlAGVBw==",
|
||||
"requires": {
|
||||
"@datastructures-js/priority-queue": "1.0.2",
|
||||
"@grpc/proto-loader": "0.5.3",
|
||||
"async": "3.1.0",
|
||||
"asyncjs-util": "1.1.2",
|
||||
"basicauth-middleware": "3.1.0",
|
||||
"bech32": "1.1.3",
|
||||
"bitcoinjs-lib": "5.1.6",
|
||||
"bn.js": "5.0.0",
|
||||
"body-parser": "1.19.0",
|
||||
"bolt07": "1.4.3",
|
||||
"compression": "1.7.4",
|
||||
"cors": "2.8.5",
|
||||
"dotenv": "8.2.0",
|
||||
"express": "4.17.1",
|
||||
"grpc": "1.24.2",
|
||||
"is-base64": "1.0.0",
|
||||
"is-hex": "1.1.3",
|
||||
"lodash": "4.17.15",
|
||||
"morgan": "1.9.1",
|
||||
"promptly": "3.0.3",
|
||||
"request": "2.88.0",
|
||||
"safe-compare": "1.1.4",
|
||||
"secp256k1": "3.7.1",
|
||||
"ws": "7.2.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
|
|
@ -3245,12 +3276,50 @@
|
|||
"json2csv": "4.5.4",
|
||||
"ln-service": "47.2.1",
|
||||
"request": "2.88.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"bn.js": {
|
||||
"version": "5.0.0",
|
||||
"resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.0.0.tgz",
|
||||
"integrity": "sha512-bVwDX8AF+72fIUNuARelKAlQUNtPOfG2fRxorbVvFk4zpHbqLrPdOGfVg5vrKwVzLLePqPBiATaOZNELQzmS0A=="
|
||||
},
|
||||
"ln-service": {
|
||||
"version": "47.2.1",
|
||||
"resolved": "https://registry.npmjs.org/ln-service/-/ln-service-47.2.1.tgz",
|
||||
"integrity": "sha512-cyfYvQ3jJl65StEQusDgNMzpTOCS14b+lq6GAgdFzlIRI2vR+tcGEUluIF4dxVmBHnnkqrhOZjohN4wRlAGVBw==",
|
||||
"requires": {
|
||||
"@datastructures-js/priority-queue": "1.0.2",
|
||||
"@grpc/proto-loader": "0.5.3",
|
||||
"async": "3.1.0",
|
||||
"asyncjs-util": "1.1.2",
|
||||
"basicauth-middleware": "3.1.0",
|
||||
"bech32": "1.1.3",
|
||||
"bitcoinjs-lib": "5.1.6",
|
||||
"bn.js": "5.0.0",
|
||||
"body-parser": "1.19.0",
|
||||
"bolt07": "1.4.3",
|
||||
"compression": "1.7.4",
|
||||
"cors": "2.8.5",
|
||||
"dotenv": "8.2.0",
|
||||
"express": "4.17.1",
|
||||
"grpc": "1.24.2",
|
||||
"is-base64": "1.0.0",
|
||||
"is-hex": "1.1.3",
|
||||
"lodash": "4.17.15",
|
||||
"morgan": "1.9.1",
|
||||
"promptly": "3.0.3",
|
||||
"request": "2.88.0",
|
||||
"safe-compare": "1.1.4",
|
||||
"secp256k1": "3.7.1",
|
||||
"ws": "7.2.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"ln-service": {
|
||||
"version": "47.2.1",
|
||||
"resolved": "https://registry.npmjs.org/ln-service/-/ln-service-47.2.1.tgz",
|
||||
"integrity": "sha512-cyfYvQ3jJl65StEQusDgNMzpTOCS14b+lq6GAgdFzlIRI2vR+tcGEUluIF4dxVmBHnnkqrhOZjohN4wRlAGVBw==",
|
||||
"version": "47.3.0",
|
||||
"resolved": "https://registry.npmjs.org/ln-service/-/ln-service-47.3.0.tgz",
|
||||
"integrity": "sha512-fQ75ynP+oreYxh8NdxQJC6s0H/7feB5S4ExK2FknOVgQWSknDw/oveJtIpHk45MSXFUlyK1K1/PnA0VwyU3gNA==",
|
||||
"requires": {
|
||||
"@datastructures-js/priority-queue": "1.0.2",
|
||||
"@grpc/proto-loader": "0.5.3",
|
||||
|
|
|
|||
|
|
@ -23,7 +23,7 @@
|
|||
"ini": "1.3.5",
|
||||
"inquirer": "7.0.0",
|
||||
"ln-accounting": "3.1.4",
|
||||
"ln-service": "47.2.1",
|
||||
"ln-service": "47.3.0",
|
||||
"moment": "2.24.0",
|
||||
"qrcode-terminal": "0.12.0",
|
||||
"request": "2.88.0",
|
||||
|
|
@ -58,5 +58,5 @@
|
|||
"scripts": {
|
||||
"test": "tap test/arrays/*.js test/balances/*.js test/chain/*.js test/encryption/*.js test/fiat/*.js test/network/*.js test/nodes/*.js test/responses/*.js test/routing/*.js test/swaps/*.js test/telegram/*.js"
|
||||
},
|
||||
"version": "5.2.0"
|
||||
"version": "5.2.1"
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue