agnostic-aws-signature
Version:
Environment Agnostic implementation of the AWS Signature v4 Signing Process. Even works with React Native!
1 lines • 8.75 kB
JavaScript
module.exports=function(e){var t={};function n(r){if(t[r])return t[r].exports;var i=t[r]={i:r,l:!1,exports:{}};return e[r].call(i.exports,i,i.exports,n),i.l=!0,i.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var i in e)n.d(r,i,function(t){return e[t]}.bind(null,i));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=4)}([function(e,t,n){var r;e.exports=(r=r||function(e,t){var n=Object.create||function(){function e(){}return function(t){var n;return e.prototype=t,n=new e,e.prototype=null,n}}(),r={},i=r.lib={},o=i.Base={extend:function(e){var t=n(this);return e&&t.mixIn(e),t.hasOwnProperty("init")&&this.init!==t.init||(t.init=function(){t.$super.init.apply(this,arguments)}),t.init.prototype=t,t.$super=this,t},create:function(){var e=this.extend();return e.init.apply(e,arguments),e},init:function(){},mixIn:function(e){for(var t in e)e.hasOwnProperty(t)&&(this[t]=e[t]);e.hasOwnProperty("toString")&&(this.toString=e.toString)},clone:function(){return this.init.prototype.extend(this)}},s=i.WordArray=o.extend({init:function(e,t){e=this.words=e||[],this.sigBytes=null!=t?t:4*e.length},toString:function(e){return(e||c).stringify(this)},concat:function(e){var t=this.words,n=e.words,r=this.sigBytes,i=e.sigBytes;if(this.clamp(),r%4)for(var o=0;o<i;o++){var s=n[o>>>2]>>>24-o%4*8&255;t[r+o>>>2]|=s<<24-(r+o)%4*8}else for(o=0;o<i;o+=4)t[r+o>>>2]=n[o>>>2];return this.sigBytes+=i,this},clamp:function(){var t=this.words,n=this.sigBytes;t[n>>>2]&=4294967295<<32-n%4*8,t.length=e.ceil(n/4)},clone:function(){var e=o.clone.call(this);return e.words=this.words.slice(0),e},random:function(t){for(var n,r=[],i=function(t){t=t;var n=987654321,r=4294967295;return function(){var i=((n=36969*(65535&n)+(n>>16)&r)<<16)+(t=18e3*(65535&t)+(t>>16)&r)&r;return i/=4294967296,(i+=.5)*(e.random()>.5?1:-1)}},o=0;o<t;o+=4){var a=i(4294967296*(n||e.random()));n=987654071*a(),r.push(4294967296*a()|0)}return new s.init(r,t)}}),a=r.enc={},c=a.Hex={stringify:function(e){for(var t=e.words,n=e.sigBytes,r=[],i=0;i<n;i++){var o=t[i>>>2]>>>24-i%4*8&255;r.push((o>>>4).toString(16)),r.push((15&o).toString(16))}return r.join("")},parse:function(e){for(var t=e.length,n=[],r=0;r<t;r+=2)n[r>>>3]|=parseInt(e.substr(r,2),16)<<24-r%8*4;return new s.init(n,t/2)}},u=a.Latin1={stringify:function(e){for(var t=e.words,n=e.sigBytes,r=[],i=0;i<n;i++){var o=t[i>>>2]>>>24-i%4*8&255;r.push(String.fromCharCode(o))}return r.join("")},parse:function(e){for(var t=e.length,n=[],r=0;r<t;r++)n[r>>>2]|=(255&e.charCodeAt(r))<<24-r%4*8;return new s.init(n,t)}},f=a.Utf8={stringify:function(e){try{return decodeURIComponent(escape(u.stringify(e)))}catch(e){throw new Error("Malformed UTF-8 data")}},parse:function(e){return u.parse(unescape(encodeURIComponent(e)))}},l=i.BufferedBlockAlgorithm=o.extend({reset:function(){this._data=new s.init,this._nDataBytes=0},_append:function(e){"string"==typeof e&&(e=f.parse(e)),this._data.concat(e),this._nDataBytes+=e.sigBytes},_process:function(t){var n=this._data,r=n.words,i=n.sigBytes,o=this.blockSize,a=i/(4*o),c=(a=t?e.ceil(a):e.max((0|a)-this._minBufferSize,0))*o,u=e.min(4*c,i);if(c){for(var f=0;f<c;f+=o)this._doProcessBlock(r,f);var l=r.splice(0,c);n.sigBytes-=u}return new s.init(l,u)},clone:function(){var e=o.clone.call(this);return e._data=this._data.clone(),e},_minBufferSize:0}),p=(i.Hasher=l.extend({cfg:o.extend(),init:function(e){this.cfg=this.cfg.extend(e),this.reset()},reset:function(){l.reset.call(this),this._doReset()},update:function(e){return this._append(e),this._process(),this},finalize:function(e){return e&&this._append(e),this._doFinalize()},blockSize:16,_createHelper:function(e){return function(t,n){return new e.init(n).finalize(t)}},_createHmacHelper:function(e){return function(t,n){return new p.HMAC.init(e,n).finalize(t)}}}),r.algo={});return r}(Math),r)},function(e,t,n){var r;e.exports=(r=n(0),function(e){var t=r,n=t.lib,i=n.WordArray,o=n.Hasher,s=t.algo,a=[],c=[];!function(){function t(t){for(var n=e.sqrt(t),r=2;r<=n;r++)if(!(t%r))return!1;return!0}function n(e){return 4294967296*(e-(0|e))|0}for(var r=2,i=0;i<64;)t(r)&&(i<8&&(a[i]=n(e.pow(r,.5))),c[i]=n(e.pow(r,1/3)),i++),r++}();var u=[],f=s.SHA256=o.extend({_doReset:function(){this._hash=new i.init(a.slice(0))},_doProcessBlock:function(e,t){for(var n=this._hash.words,r=n[0],i=n[1],o=n[2],s=n[3],a=n[4],f=n[5],l=n[6],p=n[7],h=0;h<64;h++){if(h<16)u[h]=0|e[t+h];else{var d=u[h-15],y=(d<<25|d>>>7)^(d<<14|d>>>18)^d>>>3,g=u[h-2],v=(g<<15|g>>>17)^(g<<13|g>>>19)^g>>>10;u[h]=y+u[h-7]+v+u[h-16]}var _=r&i^r&o^i&o,m=(r<<30|r>>>2)^(r<<19|r>>>13)^(r<<10|r>>>22),w=p+((a<<26|a>>>6)^(a<<21|a>>>11)^(a<<7|a>>>25))+(a&f^~a&l)+c[h]+u[h];p=l,l=f,f=a,a=s+w|0,s=o,o=i,i=r,r=w+(m+_)|0}n[0]=n[0]+r|0,n[1]=n[1]+i|0,n[2]=n[2]+o|0,n[3]=n[3]+s|0,n[4]=n[4]+a|0,n[5]=n[5]+f|0,n[6]=n[6]+l|0,n[7]=n[7]+p|0},_doFinalize:function(){var t=this._data,n=t.words,r=8*this._nDataBytes,i=8*t.sigBytes;return n[i>>>5]|=128<<24-i%32,n[14+(i+64>>>9<<4)]=e.floor(r/4294967296),n[15+(i+64>>>9<<4)]=r,t.sigBytes=4*n.length,this._process(),this._hash},clone:function(){var e=o.clone.call(this);return e._hash=this._hash.clone(),e}});t.SHA256=o._createHelper(f),t.HmacSHA256=o._createHmacHelper(f)}(Math),r.SHA256)},function(e,t,n){var r;e.exports=(r=n(0),n(1),n(3),r.HmacSHA256)},function(e,t,n){var r,i,o,s;e.exports=(r=n(0),o=(i=r).lib.Base,s=i.enc.Utf8,void(i.algo.HMAC=o.extend({init:function(e,t){e=this._hasher=new e.init,"string"==typeof t&&(t=s.parse(t));var n=e.blockSize,r=4*n;t.sigBytes>r&&(t=e.finalize(t)),t.clamp();for(var i=this._oKey=t.clone(),o=this._iKey=t.clone(),a=i.words,c=o.words,u=0;u<n;u++)a[u]^=1549556828,c[u]^=909522486;i.sigBytes=o.sigBytes=r,this.reset()},reset:function(){var e=this._hasher;e.reset(),e.update(this._iKey)},update:function(e){return this._hasher.update(e),this},finalize:function(e){var t=this._hasher,n=t.finalize(e);return t.reset(),t.finalize(this._oKey.clone().concat(n))}})))},function(e,t,n){"use strict";n.r(t),n.d(t,"createAwsClient",(function(){return p}));var r=n(1),i=n.n(r),o=n(2),s=n.n(o);const a=e=>i()(e).toString(),c=(e,t)=>s()(t,e),u=e=>{if(!e)return"";let t="";return Object.keys(e).sort().forEach(n=>{t+=`${n}=${encodeURIComponent(e[n])}&`}),t.slice(0,-1)},f=e=>Object.keys(e).sort().join(";"),l=(e,t,n,r,i)=>{return`${e}\n${o=t,encodeURI(o)}\n${u(n)}\n${(e=>{let t="";return Object.keys(e).sort().forEach(n=>{t+=`${n.toLowerCase()}:${e[n]}\n`}),t})(r)}\n${f(r)}\n${a(i)}`;var o},p=(e,t,n,r)=>{const i={},{serviceName:o,region:s,defaultAcceptType:p,defaultContentType:h,endpoint:d,debug:y=!1}=r,{origin:g,pathname:v}=new URL(d);return e&&t?(i.accessKey=e,i.secretKey=t,i.sessionToken=n,i.serviceName=o||"execute-api",i.region=s||"us-east-1",i.defaultAcceptType=p||"application/json",i.defaultContentType=h||"application/json",i.endpoint=g,i.pathComponent=v,i.debug=y,i.signRequest=e=>{const{method:t,queryParams:n,path:r="",body:o}=e,s=(e=>{const t=Object.entries(e).map(([e,t])=>[e.toLowerCase(),t]);return Object.fromEntries(t)})(e.headers||{}),p=t.toUpperCase(),h=i.pathComponent+r;s["content-type"]||(s["content-type"]=i.defaultContentType),s.accept||(s.accept=i.defaultAcceptType),o||delete s["content-type"];const d=(new Date).toISOString().replace(/\.\d{3}Z$/,"Z").replace(/[:-]|\.\d{3}/g,"");s["x-amz-date"]=d,s.host=(e=>{const{hostname:t}=new URL(e);return t})(i.endpoint);const y=l(p,h,n,s,o),g=a(y),v=((e,t,n)=>`${e.substr(0,8)}/${t}/${n}/aws4_request`)(d,i.region,i.serviceName),_=((e,t,n)=>`AWS4-HMAC-SHA256\n${e}\n${t}\n${n}`)(d,v,g),m=((e,t,n,r)=>{const i=c("AWS4"+e,t.substr(0,8)),o=c(i,n),s=c(o,r);return c(s,"aws4_request")})(i.secretKey,d,i.region,i.serviceName),w=c(m,_).toString();s.Authorization=((e,t,n,r)=>`AWS4-HMAC-SHA256 Credential=${e}/${t}, SignedHeaders=${f(n)}, Signature=${r}`)(i.accessKey,v,s,w),delete s.host,i.sessionToken&&(s["x-amz-security-token"]=i.sessionToken);let S=i.endpoint+h;const b=u(n);return b&&(S+="?"+b),s["content-type"]||(s["content-type"]=i.defaultContentType),i.debug&&console.log({awsSigV4Client:i,canonicalRequest:y,hashedCanonicalRequest:g,credentialScope:v,stringToSign:_,signingKey:m,signature:w,headers:s}),{headers:s,url:S}},i):i};t.default=p}]);