Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 6 additions & 2 deletions src/gadgets/GadgetRegistry.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,9 @@ import {
import {
Md5Gadget,
Sha1Gadget,
Sha2Gadget,
Sha256Gadget,
Sha512Gadget,
RipeMD160Gadget,
} from "./HashGadgets.js";
import { InputGadget } from "./InputGadgets.js";
import {
Expand Down Expand Up @@ -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));
Expand Down
66 changes: 63 additions & 3 deletions src/gadgets/HashGadgets.js
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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);
}
}
}