Bot-Factory 602 Posted March 16, 2014 Report Share Posted March 16, 2014 Hi. If someone is working with amazon AWS in combination with the http plugin, please send me a PM.Since a couple of hours I'm fighting with this signature stuff. But I can't get my head around it.. Dan Quote Link to post Share on other sites
Bot-Factory 602 Posted March 16, 2014 Author Report Share Posted March 16, 2014 If someone want's to jump in...http://docs.aws.amazon.com/general/latest/gr/signature-v4-examples.html I currently try to recreate the signatur calculation they show in their example: navigate("http://www.google.com", "Wait") set(#hmajs, "/* CryptoJS v3.1.2 code.google.com/p/crypto-js (c) 2009-2013 by Jeff Mott. All rights reserved. code.google.com/p/crypto-js/wiki/License */ var CryptoJS=CryptoJS||function(h,s)\{var f=\{\},g=f.lib=\{\},q=function()\{\},m=g.Base=\{extend:function(a)\{q.prototype=this;var c=new q;a&&c.mixIn(a);c.hasOwnProperty(\"init\")||(c.init=function()\{c.$super.init.apply(this,arguments)\});c.init.prototype=c;c.$super=this;return c\},create:function()\{var a=this.extend();a.init.apply(a,arguments);return a\},init:function()\{\},mixIn:function(a)\{for(var c in a)a.hasOwnProperty(c)&&(this[c]=a[c]);a.hasOwnProperty(\"toString\")&&(this.toString=a.toString)\},clone:function()\{return this.init.prototype.extend(this)\}\}, r=g.WordArray=m.extend(\{init:function(a,c)\{a=this.words=a||[];this.sigBytes=c!=s?c:4*a.length\},toString:function(a)\{return(a||k).stringify(this)\},concat:function(a)\{var c=this.words,d=a.words,b=this.sigBytes;a=a.sigBytes;this.clamp();if(b%4)for(var e=0;e<a;e++)c[b+e>>>2]|=(d[e>>>2]>>>24-8*(e%4)&255)<<24-8*((b+e)%4);else if(65535<d.length)for(e=0;e<a;e+=4)c[b+e>>>2]=d[e>>>2];else c.push.apply(c,d);this.sigBytes+=a;return this\},clamp:function()\{var a=this.words,c=this.sigBytes;a[c>>>2]&=4294967295<< 32-8*(c%4);a.length=h.ceil(c/4)\},clone:function()\{var a=m.clone.call(this);a.words=this.words.slice(0);return a\},random:function(a)\{for(var c=[],d=0;d<a;d+=4)c.push(4294967296*h.random()|0);return new r.init(c,a)\}\}),l=f.enc=\{\},k=l.Hex=\{stringify:function(a)\{var c=a.words;a=a.sigBytes;for(var d=[],b=0;b<a;b++)\{var e=c[b>>>2]>>>24-8*(b%4)&255;d.push((e>>>4).toString(16));d.push((e&15).toString(16))\}return d.join(\"\")\},parse:function(a)\{for(var c=a.length,d=[],b=0;b<c;b+=2)d[b>>>3]|=parseInt(a.substr(b, 2),16)<<24-4*(b%8);return new r.init(d,c/2)\}\},n=l.Latin1=\{stringify:function(a)\{var c=a.words;a=a.sigBytes;for(var d=[],b=0;b<a;b++)d.push(String.fromCharCode(c[b>>>2]>>>24-8*(b%4)&255));return d.join(\"\")\},parse:function(a)\{for(var c=a.length,d=[],b=0;b<c;b++)d[b>>>2]|=(a.charCodeAt(&255)<<24-8*(b%4);return new r.init(d,c)\}\},j=l.Utf8=\{stringify:function(a)\{try\{return decodeURIComponent(escape(n.stringify(a)))\}catch(c)\{throw Error(\"Malformed UTF-8 data\");\}\},parse:function(a)\{return n.parse(unescape(encodeURIComponent(a)))\}\}, u=g.BufferedBlockAlgorithm=m.extend(\{reset:function()\{this._data=new r.init;this._nDataBytes=0\},_append:function(a)\{\"string\"==typeof a&&(a=j.parse(a));this._data.concat(a);this._nDataBytes+=a.sigBytes\},_process:function(a)\{var c=this._data,d=c.words,b=c.sigBytes,e=this.blockSize,f=b/(4*e),f=a?h.ceil(f):h.max((f|0)-this._minBufferSize,0);a=f*e;b=h.min(4*a,;if(a)\{for(var g=0;g<a;g+=e)this._doProcessBlock(d,g);g=d.splice(0,a);c.sigBytes-=b\}return new r.init(g,\},clone:function()\{var a=m.clone.call(this); a._data=this._data.clone();return a\},_minBufferSize:0\});g.Hasher=u.extend(\{cfg:m.extend(),init:function(a)\{this.cfg=this.cfg.extend(a);this.reset()\},reset:function()\{u.reset.call(this);this._doReset()\},update:function(a)\{this._append(a);this._process();return this\},finalize:function(a)\{a&&this._append(a);return this._doFinalize()\},blockSize:16,_createHelper:function(a)\{return function(c,d)\{return(new a.init(d)).finalize(c)\}\},_createHmacHelper:function(a)\{return function(c,d)\{return(new t.HMAC.init(a, d)).finalize(c)\}\}\});var t=f.algo=\{\};return f\}(Math); (function(h)\{for(var s=CryptoJS,f=s.lib,g=f.WordArray,q=f.Hasher,f=s.algo,m=[],r=[],l=function(a)\{return 4294967296*(a-(a|0))|0\},k=2,n=0;64>n;)\{var j;a:\{j=k;for(var u=h.sqrt(j),t=2;t<=u;t++)if(!(j%t))\{j=!1;break a\}j=!0\}j&&(8>n&&(m[n]=l(h.pow(k,0.5))),r[n]=l(h.pow(k,1/3)),n++);k++\}var a=[],f=f.SHA256=q.extend(\{_doReset:function()\{this._hash=new g.init(m.slice(0))\},_doProcessBlock:function(c,d)\{for(var b=this._hash.words,e=b[0],f=b[1],g=b[2],j=b[3],h=b[4],m=b[5],n=b[6],q=b[7],p=0;64>p;p++)\{if(16>p)a[p]= c[d+p]|0;else\{var k=a[p-15],l=a[p-2];a[p]=((k<<25|k>>>7)^(k<<14|k>>>18)^k>>>3)+a[p-7]+((l<<15|l>>>17)^(l<<13|l>>>19)^l>>>10)+a[p-16]\}k=q+((h<<26|h>>>6)^(h<<21|h>>>11)^(h<<7|h>>>25))+(h&m^~h&n)+r[p]+a[p];l=((e<<30|e>>>2)^(e<<19|e>>>13)^(e<<10|e>>>22))+(e&f^e&g^f&g);q=n;n=m;m=h;h=j+k|0;j=g;g=f;f=e;e=k+l|0\}b[0]=b[0]+e|0;b[1]=b[1]+f|0;b[2]=b[2]+g|0;b[3]=b[3]+j|0;b[4]=b[4]+h|0;b[5]=b[5]+m|0;b[6]=b[6]+n|0;b[7]=b[7]+q|0\},_doFinalize:function()\{var a=this._data,d=a.words,b=8*this._nDataBytes,e=8*a.sigBytes; d[e>>>5]|=128<<24-e%32;d[(e+64>>>9<<4)+14]=h.floor(b/4294967296);d[(e+64>>>9<<4)+15]=b;a.sigBytes=4*d.length;this._process();return this._hash\},clone:function()\{var a=q.clone.call(this);a._hash=this._hash.clone();return a\}\});s.SHA256=q._createHelper(f);s.HmacSHA256=q._createHmacHelper(f)\})(Math); (function()\{var h=CryptoJS,s=h.enc.Utf8;h.algo.HMAC=h.lib.Base.extend(\{init:function(f,g)\{f=this._hasher=new f.init;\"string\"==typeof g&&(g=s.parse(g));var h=f.blockSize,m=4*h;g.sigBytes>m&&(g=f.finalize(g));g.clamp();for(var r=this._oKey=g.clone(),l=this._iKey=g.clone(),k=r.words,n=l.words,j=0;j<h;j++)k[j]^=1549556828,n[j]^=909522486;r.sigBytes=l.sigBytes=m;this.reset()\},reset:function()\{var f=this._hasher;f.reset();f.update(this._iKey)\},update:function(f)\{this._hasher.update(f);return this\},finalize:function(f)\{var g= this._hasher;f=g.finalize(f);g.reset();return g.finalize(this._oKey.clone().concat(f))\}\})\})();", "Global") run javascript(#hmajs) set(#hmajs, $nothing, "Global") set(#result, $eval("var hash = CryptoJS.HmacSHA256(\"Message\", \"Secret Passphrase\").toString(); hash;"), "Global") set(#result2, $eval(" var kDate= CryptoJS.HmacSHA256(\"20120215\", \"AWS4\" + \"wJalrXUtnFEMI/K7MDENG+bPxRfiCYEXAMPLEKEY\", \{ asBytes: true\}).toString(); var kRegion= CryptoJS.HmacSHA256(\"us-east-1\", kDate, \{ asBytes: true\}).toString(); var kService=CryptoJS.HmacSHA256(\"iam\", kRegion, \{ asBytes: true\}).toString(); var kSigning= CryptoJS.HmacSHA256(\"aws4_request\", kService, \{ asBytes: true\}).toString(); kDate;"), "Global") set(#result3, $eval(" var kDate= CryptoJS.HmacSHA256(\"20120215\", \"AWS4\" + \"wJalrXUtnFEMI/K7MDENG+bPxRfiCYEXAMPLEKEY\").toString(); var kRegion= CryptoJS.HmacSHA256(\"us-east-1\", kDate).toString(); var kService=CryptoJS.HmacSHA256(\"iam\", kRegion).toString(); var kSigning= CryptoJS.HmacSHA256(\"aws4_request\", kService).toString(); kDate;"), "Global") result2 and result3 produce similar results. I just want to test if this "{ asBytes: true}" makes any difference. But it doesn't. kdate is the only variable that matches with the amazon example. But all the others are wrong. Task1 and Task2 are also something I haven't figured out yet. :-( Dan Quote Link to post Share on other sites
whoami 26 Posted March 19, 2014 Report Share Posted March 19, 2014 Which service are you wanting to use?RDS?SES? Quote Link to post Share on other sites
Bot-Factory 602 Posted March 19, 2014 Author Report Share Posted March 19, 2014 SQS Quote Link to post Share on other sites
great2bme 5 Posted April 25, 2014 Report Share Posted April 25, 2014 Were you able to make any more progress with AWS? Quote Link to post Share on other sites
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.