Skip to content
This repository was archived by the owner on Jun 15, 2023. It is now read-only.

Commit eb791cb

Browse files
update
1 parent 8b0d4d6 commit eb791cb

File tree

2 files changed

+33
-24
lines changed

2 files changed

+33
-24
lines changed

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "insomnia-plugin-http-signature",
3-
"version": "1.0.0-beta.1",
3+
"version": "1.0.0-beta.2",
44
"author": "Alessio Dionisi <hello@adns.io>",
55
"description": "HTTP Signature for Insomnia REST Client",
66
"repository": "github:adnsio/insomnia-plugin-http-signature",

src/plugin.js

Lines changed: 32 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -4,39 +4,45 @@ const { parse: parseUrl } = require('url')
44

55
module.exports.requestHooks = [
66
async context => {
7+
console.log(context)
78
const { store, request } = context
89
const keyId = await store.getItem('keyId')
910
let privateKey = await store.getItem('privateKey')
1011
privateKey = `-----BEGIN PRIVATE KEY-----\n${privateKey}\n-----END PRIVATE KEY-----`
12+
const signRequest = await store.getItem('signRequest')
1113

12-
const parsedUrl = parseUrl(request.getUrl())
14+
if (signRequest) {
15+
const parsedUrl = parseUrl(request.getUrl())
1316

14-
const algorithmBits = 256
15-
const hashAlgorithm = `sha${algorithmBits}`
16-
const digestAlgorithm = `SHA-${algorithmBits}`
17-
const signAlgorithm = `RSA-SHA${algorithmBits}`
17+
const algorithmBits = 256
18+
const hashAlgorithm = `sha${algorithmBits}`
19+
const digestAlgorithm = `SHA-${algorithmBits}`
20+
const signAlgorithm = `RSA-SHA${algorithmBits}`
1821

19-
const date = DateTime.utc().toRFC2822()
22+
const date = DateTime.utc().toRFC2822()
2023

21-
const digestHash = crypto.createHash(hashAlgorithm)
22-
const digest = digestHash.update(request.getBodyText()).digest('base64')
24+
const digestHash = crypto.createHash(hashAlgorithm)
25+
const digest = digestHash.update(request.getBodyText()).digest('base64')
2326

24-
const signatureString = []
25-
signatureString.push(`(request-target): ${request.getMethod().toLowerCase()} ${parsedUrl.path}`)
26-
signatureString.push(`host: ${parsedUrl.hostname}`)
27-
signatureString.push(`digest: ${digestAlgorithm}=${digest}`)
28-
signatureString.push(`date: ${date}`)
29-
if (request.hasHeader('Content-Type')) signatureString.push(`content-type: ${request.getHeader('Content-Type')}`)
30-
const signature = signatureString.join('\n')
27+
const signatureString = []
28+
signatureString.push(`(request-target): ${request.getMethod().toLowerCase()} ${parsedUrl.path}`)
29+
signatureString.push(`host: ${parsedUrl.hostname}`)
30+
signatureString.push(`digest: ${digestAlgorithm}=${digest}`)
31+
signatureString.push(`date: ${date}`)
32+
if (request.hasHeader('Content-Type')) signatureString.push(`content-type: ${request.getHeader('Content-Type')}`)
33+
const signature = signatureString.join('\n')
3134

32-
const signatureSign = crypto.createSign(signAlgorithm)
33-
const signedSignature = signatureSign.update(signature).sign(privateKey, 'base64')
35+
const signatureSign = crypto.createSign(signAlgorithm)
36+
const signedSignature = signatureSign.update(signature).sign(privateKey, 'base64')
3437

35-
const authorization = `Signature keyId="${keyId}", algorithm="${signAlgorithm.toLowerCase()}", headers="(request-target) host digest date${request.hasHeader('Content-Type') ? ' content-type' : ''}", signature="${signedSignature}"`
38+
const authorization = `Signature keyId="${keyId}", algorithm="${signAlgorithm.toLowerCase()}", headers="(request-target) host digest date${request.hasHeader('Content-Type') ? ' content-type' : ''}", signature="${signedSignature}"`
3639

37-
request.setHeader('Digest', `${digestAlgorithm}=${digest}`)
38-
request.setHeader('Date', date)
39-
request.setHeader('Authorization', authorization)
40+
request.setHeader('Digest', `${digestAlgorithm}=${digest}`)
41+
request.setHeader('Date', date)
42+
request.setHeader('Authorization', authorization)
43+
}
44+
45+
await store.clear()
4046
}
4147
]
4248

@@ -57,8 +63,11 @@ module.exports.templateTags = [{
5763
],
5864

5965
async run (context, keyId, privateKey) {
60-
await context.store.setItem('keyId', keyId)
61-
await context.store.setItem('privateKey', privateKey)
66+
const { store } = context
67+
await store.clear()
68+
await store.setItem('keyId', keyId)
69+
await store.setItem('privateKey', privateKey)
70+
await store.setItem('signRequest', true)
6271
return ' '
6372
}
6473
}]

0 commit comments

Comments
 (0)