function _asn1gen_pad(s,n,z) { if (z == undefined) z = "0"; if (n == undefined) n = s.length + s.length%2; var r = ""; var i; for (i=s.length; i= 8) hexValue = "00" + hexValue; return _asn1gen_genHeader("02", (hexValue.length/2)) + hexValue; } function _asn1gen_genX509(hexN, hexE) { var result = _asn1gen_genSequence([ "300D06092A864886F70D0101010500", // header _asn1gen_genBitString([ _asn1gen_genSequence([ _asn1gen_genInteger(_asn1gen_pad(hexN)), _asn1gen_genInteger(_asn1gen_pad(hexE)), ]) ]) ]); return result; } function asn1gen_genX509_key() { var result = _asn1gen_genX509( this.n.toString(16), this.e.toString(16) ); return result; } function asn1gen_genPKCS1(n1, e1, d1, p1, q1, dp1, dq1, co1) { var result = _asn1gen_genSequence([ "020100300D06092A864886F70D0101010500", // header _asn1gen_genOctetString([ _asn1gen_genSequence([ _asn1gen_genInteger(_asn1gen_pad("00")), _asn1gen_genInteger(_asn1gen_pad(n1)), _asn1gen_genInteger(_asn1gen_pad(e1)), _asn1gen_genInteger(_asn1gen_pad(d1)), _asn1gen_genInteger(_asn1gen_pad(p1)), _asn1gen_genInteger(_asn1gen_pad(q1)), _asn1gen_genInteger(_asn1gen_pad(dp1)), _asn1gen_genInteger(_asn1gen_pad(dq1)), _asn1gen_genInteger(_asn1gen_pad(co1)), ]) ]) ]); return result; } function asn1gen_genPKCS1_key() { var result = asn1gen_genPKCS1( this.n.toString(16), this.e.toString(16), this.d.toString(16), this.p.toString(16), this.q.toString(16), this.dmp1.toString(16), this.dmq1.toString(16), this.coeff.toString(16) ); return result; } rsa_serialize_members = [ 'n', 'e', 'd', 'p', 'q', 'dmp1', 'dmq1', 'coeff' ]; function rsa_serialize() { var s = {}; var i; for (i=0; i