How to use the crypt.HMAC function in crypt

To help you get started, we’ve selected a few crypt examples, based on popular ways it is used in public projects.

Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.

github Kinoma / kinomajs / xs6 / extensions / ssl / ssl_setup.js View on Github external
default:
		throw new Error("SSL: SetupCipher: unkown encryption algorithm");
	}
	switch (cipher.encryptionMode) {
	case SSL.cipherSuite.CBC:
	case SSL.cipherSuite.NONE:
		let h;
		switch (cipher.hashAlgorithm) {
		case SSL.cipherSuite.MD5: h = new Crypt.MD5(); break;
		case SSL.cipherSuite.SHA1: h = new Crypt.SHA1(); break;
		case SSL.cipherSuite.SHA256: h = new Crypt.SHA256(); break;
		case SSL.cipherSuite.SHA384: h = new Crypt.SHA384(); break;
		default:
			throw new Error("SSL: SetupCipher: unknown hash algorithm");
		}
		o.hmac = new Crypt.HMAC(h, o.macSecret);
		if (cipher.encryptionMode == SSL.cipherSuite.CBC)
			o.enc = new Crypt.CBC(enc, o.iv);	// no padding -- SSL 3.2 requires padding process beyond RFC2630
		else
			o.enc = enc;
		break;
	case SSL.cipherSuite.GCM:
		let Arith = require.weak("arith");
		o.enc = new Crypt.GCM(enc);
		o.nonce = new Arith.Integer(1);
		break;
	default:
		o.enc = enc;
		break;
	}
}
github Kinoma / kinomajs / xs6 / extensions / ssl / ssl_prf.js View on Github external
function p_hash(hash, secret, seed, sz)
{
	var hmac = new Crypt.HMAC(hash, secret);
	var niter = iceil(sz, hash.outputSize);
	var A = hmac.process(seed);		// start from A(1) = hmac(seed)
	var p = new SSLStream();
	while (--niter >= 0) {
		var c = hmac.process(A, seed);
		p.writeChunk(c);
		if (niter > 0)
			A = hmac.process(A);
	}
	return p.getChunk();
}
github Kinoma / kinomajs / xs6 / extensions / crypt / crypt_hkdf.js View on Github external
process(len, info) {
		var hmac = new Crypt.HMAC(this.hash, this.prk);
		var res = new ArrayBuffer(0);
		var counter = new Uint8Array(1);
		var hashlen = this.hash.outputSize;
		var block = "";
		for (var i = 1, l = len; l > 0; l -= hashlen, i++) {
			hmac.reset();
			hmac.update(block);
			hmac.update(info);
			counter[0] = i & 0xff;
			hmac.update(counter.buffer);
			block = hmac.close();
			res = res.concat(block);
		}
		return len % hashlen == 0 ? res : res.slice(0, len);
	};
};
github Kinoma / kinomajs / xs6 / extensions / crypt / crypt_hkdf.js View on Github external
constructor(key, salt, digest) {
		this.hash = new digest();
		if (!salt) {
			salt = new Uint8Array(this.hash.outputSize);
			salt.fill(0);
			salt = salt.buffer;
		}
		var hmac = new Crypt.HMAC(this.hash, salt);
		hmac.update(key);
		this.prk = hmac.close();
	};
	process(len, info) {