@li0ard/kupyna
Version:
Kupyna (DSTU 7564:2014) hash function in pure TypeScript
52 lines (51 loc) • 1.44 kB
JavaScript
import { Kupyna256, Kupyna384, Kupyna512 } from "./index.js";
import { KupynaKMAC } from "./modes/kmac.js";
import { kpad32, kpad48, kpad64 } from "./const.js";
/** Kupyna KMAC (256 bit version) */
export class KupynaKMAC256 extends KupynaKMAC {
key;
constructor(key) {
super(Kupyna256.create, kpad32, key);
this.key = key;
}
_cloneInto(to) {
to ||= new KupynaKMAC256(this.key);
to.h = this.h.clone();
to.len = this.len;
to.ik = new Uint8Array(this.ik);
return to;
}
clone() { return this._cloneInto(); }
}
/** Kupyna KMAC (512 bit version) */
export class KupynaKMAC512 extends KupynaKMAC {
key;
constructor(key) {
super(Kupyna512.create, kpad64, key);
this.key = key;
}
_cloneInto(to) {
to ||= new KupynaKMAC512(this.key);
to.h = this.h.clone();
to.len = this.len;
to.ik = new Uint8Array(this.ik);
return to;
}
clone() { return this._cloneInto(); }
}
/** Kupyna KMAC (384 bit version) */
export class KupynaKMAC384 extends KupynaKMAC {
key;
constructor(key) {
super(Kupyna384.create, kpad48, key);
this.key = key;
}
_cloneInto(to) {
to ||= new KupynaKMAC384(this.key);
to.h = this.h.clone();
to.len = this.len;
to.ik = new Uint8Array(this.ik);
return to;
}
clone() { return this._cloneInto(); }
}