diff --git a/src/gadgets/GadgetRegistry.js b/src/gadgets/GadgetRegistry.js index 7269b99..3cf1d66 100644 --- a/src/gadgets/GadgetRegistry.js +++ b/src/gadgets/GadgetRegistry.js @@ -7,7 +7,9 @@ import { import { Md5Gadget, Sha1Gadget, - Sha2Gadget, + Sha256Gadget, + Sha512Gadget, + RipeMD160Gadget, } from "./HashGadgets.js"; import { InputGadget } from "./InputGadgets.js"; import { @@ -104,7 +106,9 @@ gadgetRegistry.register((...args) => new Base64EncodeGadget(...args)); gadgetRegistry.register((...args) => new Base64DecodeGadget(...args)); gadgetRegistry.register((...args) => new Md5Gadget(...args)); gadgetRegistry.register((...args) => new Sha1Gadget(...args)); -gadgetRegistry.register((...args) => new Sha2Gadget(...args)); +gadgetRegistry.register((...args) => new Sha256Gadget(...args)); +gadgetRegistry.register((...args) => new Sha512Gadget(...args)); +gadgetRegistry.register((...args) => new RipeMD160Gadget(...args)); gadgetRegistry.register((...args) => new InputGadget(...args)); gadgetRegistry.register((...args) => new UrlEncodeGadget(...args)); gadgetRegistry.register((...args) => new UrlDecodeGadget(...args)); diff --git a/src/gadgets/HashGadgets.js b/src/gadgets/HashGadgets.js index 0bdb6ba..25cb1fd 100644 --- a/src/gadgets/HashGadgets.js +++ b/src/gadgets/HashGadgets.js @@ -119,18 +119,18 @@ export class Sha1Gadget extends BaseHashGadget { } } -export class Sha2Gadget extends BaseHashGadget { +export class Sha256Gadget extends BaseHashGadget { /** * @param {int} x * @param {int} y */ constructor(x, y) { super(x, y); - this.title = "SHA-2"; + this.title = "SHA-256"; } /** - * Override BaseGadget#transform() to SHA-2 hash inputs. + * Override BaseGadget#transform() to SHA-256 hash inputs. */ transform() { const in0 = this.inputPorts[0].value; @@ -148,3 +148,63 @@ export class Sha2Gadget extends BaseHashGadget { } } } + +export class Sha512Gadget extends BaseHashGadget { + /** + * @param {int} x + * @param {int} y + */ + constructor(x, y) { + super(x, y); + this.title = "SHA-512"; + } + + /** + * Override BaseGadget#transform() to SHA-512 hash inputs. + */ + transform() { + const in0 = this.inputPorts[0].value; + + if (in0.length > 0) { + let wordArray = convertBufferToWordArray(in0); + let digest = CryptoES.SHA512(wordArray) + let data = convertWordArrayToBuffer(digest); + let display = data.toString("hex"); + this.display.set(DisplayState.display(display)); + this.outputPorts[0].set(data); + } else { + this.display.set(DisplayState.null()); + this.outputPorts[0].set(null); + } + } +} + +export class RipeMD160Gadget extends BaseHashGadget { + /** + * @param {int} x + * @param {int} y + */ + constructor(x, y) { + super(x, y); + this.title = "RIPEMD-160"; + } + + /** + * Override BaseGadget#transform() for RIPEMD-160 hash inputs. + */ + transform() { + const in0 = this.inputPorts[0].value; + + if (in0.length > 0) { + let wordArray = convertBufferToWordArray(in0); + let digest = CryptoES.RIPEMD160(wordArray) + let data = convertWordArrayToBuffer(digest); + let display = data.toString("hex"); + this.display.set(DisplayState.display(display)); + this.outputPorts[0].set(data); + } else { + this.display.set(DisplayState.null()); + this.outputPorts[0].set(null); + } + } +}