@@ -4,39 +4,45 @@ const { parse: parseUrl } = require('url')
44
55module . 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