From 76bd92c8ac2aedb9f5e0a7c8c1c7e3799822f4b8 Mon Sep 17 00:00:00 2001 From: SirTobi Date: Sun, 22 Nov 2015 19:52:52 +0100 Subject: [PATCH 1/8] Renamed old jssha files of version 1.6.0 to contain their version --- jssha/{jssha-tests.ts => jssha-1.6.0-tests.ts} | 2 +- jssha/{jssha.d.ts => jssha-1.6.0.d.ts} | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) rename jssha/{jssha-tests.ts => jssha-1.6.0-tests.ts} (93%) rename jssha/{jssha.d.ts => jssha-1.6.0.d.ts} (98%) diff --git a/jssha/jssha-tests.ts b/jssha/jssha-1.6.0-tests.ts similarity index 93% rename from jssha/jssha-tests.ts rename to jssha/jssha-1.6.0-tests.ts index 8d6eec5a6..67e1ec026 100755 --- a/jssha/jssha-tests.ts +++ b/jssha/jssha-1.6.0-tests.ts @@ -1,4 +1,4 @@ -/// +/// /// var imported = require("jssha"); diff --git a/jssha/jssha.d.ts b/jssha/jssha-1.6.0.d.ts similarity index 98% rename from jssha/jssha.d.ts rename to jssha/jssha-1.6.0.d.ts index 1c75c3862..7ff6e2a20 100755 --- a/jssha/jssha.d.ts +++ b/jssha/jssha-1.6.0.d.ts @@ -1,4 +1,4 @@ -// Type definitions for jsSHA +// Type definitions for jsSHA-1.6.0 // Project: https://github.com/Caligatio/jsSHA // Definitions by: David Li // Definitions: https://github.com/borisyankov/DefinitelyTyped From 6e12544cf91956cf3b4f9811eab1fd1a12e1604c Mon Sep 17 00:00:00 2001 From: SirTobi Date: Sun, 22 Nov 2015 20:34:52 +0100 Subject: [PATCH 2/8] made option map properties optional --- jssha/jssha-1.6.0.d.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/jssha/jssha-1.6.0.d.ts b/jssha/jssha-1.6.0.d.ts index 7ff6e2a20..b6dcef80f 100755 --- a/jssha/jssha-1.6.0.d.ts +++ b/jssha/jssha-1.6.0.d.ts @@ -6,8 +6,8 @@ declare module jsSHA { export interface OutputFormatOptions { - outputUpper : boolean; - b64Pad : string; + outputUpper? : boolean; + b64Pad? : string; } export interface jsSHA { From 8bbf0548e54d6b7544d47940058c3bf42c5e71e8 Mon Sep 17 00:00:00 2001 From: SirTobi Date: Sun, 22 Nov 2015 20:38:19 +0100 Subject: [PATCH 3/8] add: added type definitions for new jssha version (2.0.2) because of the rework from 1.6 to 2.0 --- jssha/jssha-tests.ts | 50 +++++++++++++++++++++++++ jssha/jssha.d.ts | 87 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 137 insertions(+) create mode 100644 jssha/jssha-tests.ts create mode 100644 jssha/jssha.d.ts diff --git a/jssha/jssha-tests.ts b/jssha/jssha-tests.ts new file mode 100644 index 000000000..def07a2d2 --- /dev/null +++ b/jssha/jssha-tests.ts @@ -0,0 +1,50 @@ +/// +/// + +var imported = require("jssha"); + +// constructor +let shaObj1:jsSHA.jsSHA = imported("SHA-256", "HEX"); +let shaObj2:jsSHA.jsSHA = new jsSHA("SHA-512", "TEXT"); +let shaObj3:jsSHA.jsSHA = new jsSHA("SHA-512", "TEXT", { }); +let shaObj4:jsSHA.jsSHA = new jsSHA("SHA-512", "TEXT", { encoding: "UTF" }); +let shaObj5:jsSHA.jsSHA = new jsSHA("SHA-512", "TEXT", { numRounds: 1 }); +let shaObj6:jsSHA.jsSHA = new jsSHA("SHA-512", "TEXT", { encoding: "UTF", numRounds: 1 }); + +// setHMACKey +shaObj1.setHMACKey("key", "TEXT"); +shaObj1.setHMACKey("key", "TEXT", { }); +shaObj1.setHMACKey("key", "TEXT", { encoding: "UTF" }); + +// update +shaObj1.update("This is a test"); + +// getHash +let hash1:string = shaObj1.getHash("HEX"); +let hash2:string = shaObj1.getHash("HEX", {}); +let hash3:string = shaObj1.getHash("HEX", { b64Pad: "=" }); +let hash4:string = shaObj1.getHash("HEX", { outputUpper: true }); +let hash5:string = shaObj1.getHash("HEX", { outputUpper: true, b64Pad: '=' }); + +// getHMAC +let hmac1:string = shaObj1.getHMAC("HEX"); +let hmac2:string = shaObj1.getHMAC("HEX", {}); +let hmac3:string = shaObj1.getHMAC("HEX", { b64Pad: "=" }); +let hmac4:string = shaObj1.getHMAC("HEX", { outputUpper: true }); +let hmac5:string = shaObj1.getHMAC("HEX", { outputUpper: true, b64Pad: '=' }); + + +// examples from the readme.md (https://github.com/Caligatio/jsSHA/blob/v2.0.2/README.md) +{ + var shaObj = new jsSHA("SHA-512", "TEXT"); + shaObj.update("This is a test"); + var hash = shaObj.getHash("HEX"); +} + + +{ + let shaObj = new jsSHA("SHA-256", "TEXT"); + shaObj.setHMACKey("abc", "TEXT"); + shaObj.update("This is a test"); + let hmac = shaObj.getHMAC("HEX"); +} \ No newline at end of file diff --git a/jssha/jssha.d.ts b/jssha/jssha.d.ts new file mode 100644 index 000000000..8ce44f2c1 --- /dev/null +++ b/jssha/jssha.d.ts @@ -0,0 +1,87 @@ +// Type definitions for jsSHA +// Project: https://github.com/Caligatio/jsSHA +// Definitions by: Tobias Kahlert +// Definitions: https://github.com/SrTobi/DefinitelyTyped + + +declare module jsSHA { + + export interface EncodingOptions { + encoding? : string; + } + + export interface Options extends EncodingOptions { + numRounds? : number; + } + + export interface OutputFormatOptions { + outputUpper? : boolean; + b64Pad? : string; + } + + export interface jsSHA { + /** + * jsSHA is the workhorse of the library. Instantiate it with the string to + * be hashed as the parameter + * + * @constructor + * @this {jsSHA} + * @param {string} variant The desired SHA variant (SHA-1, SHA-224, SHA-256, + * SHA-384, or SHA-512) + * @param {string} inputFormat The format of srcString: HEX, TEXT, B64, or BYTES + * @param {{encoding: (string|undefined), numRounds: (string|undefined)}=} + * options Optional values + */ + new (variant:string, inputFormat:string, options?:Options):jsSHA; + + /** + * Sets the HMAC key for an eventual getHMAC call. Must be called + * immediately after jsSHA object instantiation + * + * @param {string} key The key used to calculate the HMAC + * @param {string} inputFormat The format of key, HEX, TEXT, B64, or BYTES + * @param {{encoding : (string|undefined)}=} options Associative array + * of input format options + */ + setHMACKey(key:string, inputFormat:string, encodingOpts?:EncodingOptions):void; + + /** + * Takes strString and hashes as many blocks as possible. Stores the + * rest for either a future update or getHash call. + * + * @param {string} srcString The string to be hashed + */ + update(srcString:string):void; + + + /** + * Returns the desired SHA hash of the string specified at instantiation + * using the specified parameters + * + * @param {string} format The desired output formatting (B64, HEX, or BYTES) + * @param {{outputUpper : (boolean|undefined), b64Pad : (string|undefined)}=} + * options Hash list of output formatting options + * @return {string} The string representation of the hash in the format + * specified + */ + getHash(format:string, outputFormatOpts?:OutputFormatOptions):string; + + /** + * Returns the the HMAC in the specified format using the key given by + * a previous setHMACKey call. + * + * @param {string} format The desired output formatting + * (B64, HEX, or BYTES) + * @param {{outputUpper : (boolean|undefined), b64Pad : (string|undefined)}=} + * options associative array of output formatting options + * @return {string} The string representation of the hash in the format + * specified + */ + getHMAC(format:string, outputFormatOpts?:OutputFormatOptions):string; + } +} + +declare var jsSHA: jsSHA.jsSHA; +declare module 'jssha' { + export = jsSHA; +} \ No newline at end of file From 4986b607ede2a16aa81881155603c45f99f9c842 Mon Sep 17 00:00:00 2001 From: SrTobi Date: Mon, 23 Nov 2015 00:36:09 +0100 Subject: [PATCH 4/8] fixed parameter documentation --- jssha/jssha.d.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/jssha/jssha.d.ts b/jssha/jssha.d.ts index 8ce44f2c1..2b5a2b7e0 100644 --- a/jssha/jssha.d.ts +++ b/jssha/jssha.d.ts @@ -40,7 +40,7 @@ declare module jsSHA { * * @param {string} key The key used to calculate the HMAC * @param {string} inputFormat The format of key, HEX, TEXT, B64, or BYTES - * @param {{encoding : (string|undefined)}=} options Associative array + * @param {{encoding : (string|undefined)}=} encodingOpts Associative array * of input format options */ setHMACKey(key:string, inputFormat:string, encodingOpts?:EncodingOptions):void; @@ -60,7 +60,7 @@ declare module jsSHA { * * @param {string} format The desired output formatting (B64, HEX, or BYTES) * @param {{outputUpper : (boolean|undefined), b64Pad : (string|undefined)}=} - * options Hash list of output formatting options + * outputFormatOpts Hash list of output formatting options * @return {string} The string representation of the hash in the format * specified */ @@ -73,7 +73,7 @@ declare module jsSHA { * @param {string} format The desired output formatting * (B64, HEX, or BYTES) * @param {{outputUpper : (boolean|undefined), b64Pad : (string|undefined)}=} - * options associative array of output formatting options + * outputFormatOpts associative array of output formatting options * @return {string} The string representation of the hash in the format * specified */ From 9dcb36b7e2cdad44b845f568e92fe0e602f75a28 Mon Sep 17 00:00:00 2001 From: SrTobi Date: Mon, 23 Nov 2015 00:36:53 +0100 Subject: [PATCH 5/8] improved constructor documentation --- jssha/jssha.d.ts | 2 -- 1 file changed, 2 deletions(-) diff --git a/jssha/jssha.d.ts b/jssha/jssha.d.ts index 2b5a2b7e0..0d880de45 100644 --- a/jssha/jssha.d.ts +++ b/jssha/jssha.d.ts @@ -24,8 +24,6 @@ declare module jsSHA { * jsSHA is the workhorse of the library. Instantiate it with the string to * be hashed as the parameter * - * @constructor - * @this {jsSHA} * @param {string} variant The desired SHA variant (SHA-1, SHA-224, SHA-256, * SHA-384, or SHA-512) * @param {string} inputFormat The format of srcString: HEX, TEXT, B64, or BYTES From 9bfee0e09d6b5678296e748dc075d2aca20daf24 Mon Sep 17 00:00:00 2001 From: SrTobi Date: Mon, 23 Nov 2015 00:46:38 +0100 Subject: [PATCH 6/8] improved test --- jssha/jssha-tests.ts | 31 +++++++++++++++---------------- 1 file changed, 15 insertions(+), 16 deletions(-) diff --git a/jssha/jssha-tests.ts b/jssha/jssha-tests.ts index def07a2d2..f6e0f96b4 100644 --- a/jssha/jssha-tests.ts +++ b/jssha/jssha-tests.ts @@ -1,30 +1,29 @@ /// /// -var imported = require("jssha"); +import imported = require("jssha"); // constructor -let shaObj1:jsSHA.jsSHA = imported("SHA-256", "HEX"); -let shaObj2:jsSHA.jsSHA = new jsSHA("SHA-512", "TEXT"); -let shaObj3:jsSHA.jsSHA = new jsSHA("SHA-512", "TEXT", { }); -let shaObj4:jsSHA.jsSHA = new jsSHA("SHA-512", "TEXT", { encoding: "UTF" }); -let shaObj5:jsSHA.jsSHA = new jsSHA("SHA-512", "TEXT", { numRounds: 1 }); -let shaObj6:jsSHA.jsSHA = new jsSHA("SHA-512", "TEXT", { encoding: "UTF", numRounds: 1 }); +let shaObj1:jsSHA.jsSHA = new imported("SHA-512", "TEXT"); +let shaObj2:jsSHA.jsSHA = new imported("SHA-512", "TEXT", { }); +let shaObj3:jsSHA.jsSHA = new imported("SHA-512", "TEXT", { encoding: "UTF8" }); +let shaObj4:jsSHA.jsSHA = new imported("SHA-512", "TEXT", { numRounds: 1 }); +let shaObj5:jsSHA.jsSHA = new imported("SHA-512", "TEXT", { encoding: "UTF8", numRounds: 1 }); // setHMACKey shaObj1.setHMACKey("key", "TEXT"); -shaObj1.setHMACKey("key", "TEXT", { }); -shaObj1.setHMACKey("key", "TEXT", { encoding: "UTF" }); +shaObj2.setHMACKey("key", "TEXT", { }); +shaObj3.setHMACKey("key", "TEXT", { encoding: "UTF8" }); // update shaObj1.update("This is a test"); // getHash -let hash1:string = shaObj1.getHash("HEX"); -let hash2:string = shaObj1.getHash("HEX", {}); -let hash3:string = shaObj1.getHash("HEX", { b64Pad: "=" }); -let hash4:string = shaObj1.getHash("HEX", { outputUpper: true }); -let hash5:string = shaObj1.getHash("HEX", { outputUpper: true, b64Pad: '=' }); +let hash1:string = shaObj4.getHash("HEX"); +let hash2:string = shaObj4.getHash("HEX", {}); +let hash3:string = shaObj4.getHash("HEX", { b64Pad: "=" }); +let hash4:string = shaObj4.getHash("HEX", { outputUpper: true }); +let hash5:string = shaObj4.getHash("HEX", { outputUpper: true, b64Pad: '=' }); // getHMAC let hmac1:string = shaObj1.getHMAC("HEX"); @@ -36,14 +35,14 @@ let hmac5:string = shaObj1.getHMAC("HEX", { outputUpper: true, b64Pad: '=' }); // examples from the readme.md (https://github.com/Caligatio/jsSHA/blob/v2.0.2/README.md) { - var shaObj = new jsSHA("SHA-512", "TEXT"); + var shaObj = new imported("SHA-512", "TEXT"); shaObj.update("This is a test"); var hash = shaObj.getHash("HEX"); } { - let shaObj = new jsSHA("SHA-256", "TEXT"); + let shaObj = new imported("SHA-256", "TEXT"); shaObj.setHMACKey("abc", "TEXT"); shaObj.update("This is a test"); let hmac = shaObj.getHMAC("HEX"); From 8ed81ba63237a628ec63f7cd34697c6acc1bdaed Mon Sep 17 00:00:00 2001 From: SrTobi Date: Mon, 23 Nov 2015 00:53:32 +0100 Subject: [PATCH 7/8] hide jsSHA instance --- jssha/jssha.d.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/jssha/jssha.d.ts b/jssha/jssha.d.ts index 0d880de45..e8e8787c5 100644 --- a/jssha/jssha.d.ts +++ b/jssha/jssha.d.ts @@ -79,7 +79,7 @@ declare module jsSHA { } } -declare var jsSHA: jsSHA.jsSHA; declare module 'jssha' { + var jsSHA: jsSHA.jsSHA; export = jsSHA; } \ No newline at end of file From cc35e0f7a01116f425d2a9334c7ff5c24b122ae0 Mon Sep 17 00:00:00 2001 From: SrTobi Date: Tue, 1 Dec 2015 16:35:26 +0100 Subject: [PATCH 8/8] fixed definition header --- jssha/jssha.d.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/jssha/jssha.d.ts b/jssha/jssha.d.ts index e8e8787c5..6dc4f65d3 100644 --- a/jssha/jssha.d.ts +++ b/jssha/jssha.d.ts @@ -1,7 +1,7 @@ // Type definitions for jsSHA // Project: https://github.com/Caligatio/jsSHA -// Definitions by: Tobias Kahlert -// Definitions: https://github.com/SrTobi/DefinitelyTyped +// Definitions by: David Li , Tobias Kahlert +// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped declare module jsSHA {