Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
if (g === false)
return false;
var y = readString(info.hostkey, info.hostkey._pos, self, callback);
if (y === false)
return false;
asnWriter.startSequence();
asnWriter.writeOID('1.2.840.10040.4.1');
asnWriter.startSequence();
asnWriter.writeBuffer(p, Ber.Integer);
asnWriter.writeBuffer(q, Ber.Integer);
asnWriter.writeBuffer(g, Ber.Integer);
asnWriter.endSequence();
asnWriter.endSequence();
asnWriter.startSequence(Ber.BitString);
asnWriter.writeByte(0x00);
asnWriter.writeBuffer(y, Ber.Integer);
asnWriter.endSequence();
if (rawsig.length <= 40) {
// change bare signature r and s values to ASN.1 DER values for OpenSSL
var asnSigWriter = new Ber.Writer();
asnSigWriter.startSequence();
asnSigWriter.writeBuffer(rawsig.slice(0, 20), Ber.Integer);
asnSigWriter.writeBuffer(rawsig.slice(20), Ber.Integer);
asnSigWriter.endSequence();
rawsig = asnSigWriter.buffer;
}
}
asnWriter.endSequence();
function genOpenSSLECDSAPriv(oid, pub, priv) {
var asnWriter = new Ber.Writer();
asnWriter.startSequence();
// version
asnWriter.writeInt(0x01, Ber.Integer);
// privateKey
asnWriter.writeBuffer(priv, Ber.OctetString);
// parameters (optional)
asnWriter.startSequence(0xA0);
asnWriter.writeOID(oid);
asnWriter.endSequence();
// publicKey (optional)
asnWriter.startSequence(0xA1);
asnWriter.startSequence(Ber.BitString);
asnWriter.writeByte(0x00);
// XXX: hack to write a raw buffer without a tag -- yuck
asnWriter._ensure(pub.length);
pub.copy(asnWriter._buf, asnWriter._offset, 0, pub.length);
asnWriter._offset += pub.length;
// end hack
asnWriter.endSequence();
asnWriter.endSequence();
asnWriter.endSequence();
return makePEM('EC PRIVATE', asnWriter.buffer);
}
var asnWriter = new Ber.Writer();
asnWriter.startSequence();
// algorithm
asnWriter.startSequence();
asnWriter.writeOID('1.2.840.10040.4.1'); // id-dsa
// algorithm parameters
asnWriter.startSequence();
asnWriter.writeBuffer(p, Ber.Integer);
asnWriter.writeBuffer(q, Ber.Integer);
asnWriter.writeBuffer(g, Ber.Integer);
asnWriter.endSequence();
asnWriter.endSequence();
// subjectPublicKey
asnWriter.startSequence(Ber.BitString);
asnWriter.writeByte(0x00);
asnWriter.writeBuffer(y, Ber.Integer);
asnWriter.endSequence();
asnWriter.endSequence();
return asnWriter.buffer;
}
} else {
var p = Parser.readString(info.hostkey, info.hostkey._pos),
q = Parser.readString(info.hostkey, info.hostkey._pos),
g = Parser.readString(info.hostkey, info.hostkey._pos),
y = Parser.readString(info.hostkey, info.hostkey._pos);
asnWriter.startSequence();
asnWriter.writeOID('1.2.840.10040.4.1');
asnWriter.startSequence();
asnWriter.writeBuffer(p, Ber.Integer);
asnWriter.writeBuffer(q, Ber.Integer);
asnWriter.writeBuffer(g, Ber.Integer);
asnWriter.endSequence();
asnWriter.endSequence();
asnWriter.startSequence(Ber.BitString);
asnWriter.writeByte(0x00);
asnWriter.writeBuffer(y, Ber.Integer);
asnWriter.endSequence();
if (rawsig.length <= 40) {
// change bare signature r and s values to ASN.1 DER values for OpenSSL
var asnSigWriter = new Ber.Writer();
asnSigWriter.startSequence();
asnSigWriter.writeBuffer(rawsig.slice(0, 20), Ber.Integer);
asnSigWriter.writeBuffer(rawsig.slice(20), Ber.Integer);
asnSigWriter.endSequence();
rawsig = asnSigWriter.buffer;
}
}
asnWriter.endSequence();
function genOpenSSLEdPub(pub) {
var asnWriter = new Ber.Writer();
asnWriter.startSequence();
// algorithm
asnWriter.startSequence();
asnWriter.writeOID('1.3.101.112'); // id-Ed25519
asnWriter.endSequence();
// PublicKey
asnWriter.startSequence(Ber.BitString);
asnWriter.writeByte(0x00);
// XXX: hack to write a raw buffer without a tag -- yuck
asnWriter._ensure(pub.length);
pub.copy(asnWriter._buf, asnWriter._offset, 0, pub.length);
asnWriter._offset += pub.length;
asnWriter.endSequence();
asnWriter.endSequence();
return makePEM('PUBLIC', asnWriter.buffer);
}