How to use the crypt.BER 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 Moddable-OpenSource / moddable / modules / crypt / etc / pkcs8.js View on Github external
static parse(buf) {
		// RSA only
		var key = {};
		var ber = new Crypt.BER(buf);
		if (ber.getTag() != 0x30)	// SEQUENCE
			throw new Error("PKCS8: not a sequence");
		ber.getLength()		// skip the sequence length
		ber.getInteger();	// skip the Version
		ber.next();		// skip the AlgorithmIdentifier
		ber.getTag();		// OCTET STRING that includes the private key in the SEQUENCE
		ber.getLength();
		{
			ber.getTag();		// SEQUENCE
			ber.getLength();
			ber.getInteger();	// skip the first INTEGER
			key.modulus = ber.getInteger();
			key.exponent = ber.getInteger();
			key.privExponent = ber.getInteger();
			key.prim1 = ber.getInteger();
			key.prim2 = ber.getInteger();
github Moddable-OpenSource / moddable / modules / crypt / etc / pkcs8.js View on Github external
static decrypt(buf, pass) {
		var ber = new Crypt.BER(buf);
		if (ber.getTag() == 0x30) {
			ber.getLength();
			if (ber.getTag() == 0x30) {
				ber.getLength();
				var oid = ber.getObjectIdentifier();
				if (ber.getTag() == 0x30) {
					ber.getLength();
					var salt = ber.getOctetString();
					var iter = ber.getInteger();
					var data = ber.getOctetString();
					var cipher, hash, mode, v;
					switch (oid.toString()) {
					case [1,2,840,113549,1,12,1,1].toString():	// pbeWithSHA1And128BitRC4
						cipher = Crypt.RC4;
						hash = Crypt.SHA1;
						v = 512 / 8;
github Kinoma / kinomajs / xs6 / extensions / crypt / crypt_pkcs8.js View on Github external
static parse(buf) {
		// RSA only
		var key = {};
		var ber = new Crypt.BER(buf);
		if (ber.getTag() != 0x30)	// SEQUENCE
			throw new Error("PKCS8: not a sequence");
		ber.getLength()		// skip the sequence length
		ber.getInteger();	// skip the Version
		ber.next();		// skip the AlgorithmIdentifier
		ber.getTag();		// OCTET STRING that includes the private key in the SEQUENCE
		ber.getLength();
		{
			ber.getTag();		// SEQUENCE
			ber.getLength();
			ber.getInteger();	// skip the first INTEGER
			key.modulus = ber.getInteger();
			key.exponent = ber.getInteger();
			key.privExponent = ber.getInteger();
			key.prim1 = ber.getInteger();
			key.prim2 = ber.getInteger();
github Kinoma / kinomajs / xs6 / extensions / ssl / ssl_cert_mc.js View on Github external
case [1, 2, 840, 113549, 1, 1, 13].toString():	// PKCS-1 SHA512 with RSA encryption
			hash = Crypt.SHA512;
			pk = Crypt.PKCS1_5;
			sig = x509.sig;
			break;
		case [1, 2, 840, 113549, 1, 1, 14].toString():	// PKCS-1 SHA224 with RSA encryption
			hash = Crypt.SHA224;
			pk = Crypt.PKCS1_5;
			sig = x509.sig;
			break;
		case [1, 2, 840, 10040, 4, 3].toString():
		case [1, 3, 14, 3, 2, 27].toString():
			hash = Crypt.SHA1;
			pk = Crypt.DSA;
			// needs to decode the sig value into 
			var ber = new Crypt.BER(x509.sig);
			if (ber.getTag() == 0x30) {
				ber.getLength();
				var r = ber.getInteger();
				var s = ber.getInteger();
				sig = r.concat(s);
			}
			break;
		default:
			throw new Error("Cert: unsupported algorithm: " + x509.algo.toString());
			break;
		}
		var H = (new hash()).process(x509.tbs);
		return (new pk(spki, false, [] /* any oid */)).verify(H, sig);
	};
	register(cert) {
github Kinoma / kinomajs / xs6 / extensions / crypt / crypt_pkcs1.js View on Github external
static parse(buf, privFlag) {
		// currently RSA only
		var key = {};
		var ber = new Crypt.BER(buf);
		if (ber.getTag() != 0x30)	// SEQUENCE
			throw new Error("PKCS1: not a sequence");
		ber.getLength();	// skip the sequence length
		ber.getInteger();	// ignore the first INTEGER
		key.modulus = ber.getInteger();
		key.exponent = ber.getInteger();
		if (privFlag) {
			key.privExponent = ber.getInteger();
			key.prim1 = ber.getInteger();
			key.prim2 = ber.getInteger();
			key.exponent1 = ber.getInteger();
			key.exponent2 = ber.getInteger();
			key.coefficient = ber.getInteger();
		}
		return key;
	};
github Kinoma / kinomajs / xs6 / extensions / crypt / crypt_pkcs8.js View on Github external
static decrypt(buf, pass) {
		var ber = new Crypt.BER(buf);
		if (ber.getTag() == 0x30) {
			ber.getLength();
			if (ber.getTag() == 0x30) {
				ber.getLength();
				var oid = ber.getObjectIdentifier();
				if (ber.getTag() == 0x30) {
					ber.getLength();
					var salt = ber.getOctetString();
					var iter = ber.getInteger();
					var data = ber.getOctetString();
					var cipher, hash, mode, v;
					switch (oid.toString()) {
					case [1,2,840,113549,1,12,1,1].toString():	// pbeWithSHA1And128BitRC4
						cipher = Crypt.RC4;
						hash = Crypt.SHA1;
						v = 512 / 8;
github Kinoma / kinomajs / xs6 / extensions / ssl / ssl_cert_mc.js View on Github external
getDH() {
		let dh = Files.read("dh.der");
		let ber = new Crypt.BER(dh);
		if (ber.getTag() == 0x30) {
			ber.getLength();
			let p = ber.getInteger();
			let g = ber.getInteger();
			return {p, g};
		}
	};
};