{"version":3,"file":"asn1-1.0.mjs","sources":["../../../../../../../packages/utils/jsencrypt/jselib/jsrsasign/asn1-1.0.js"],"sourcesContent":["/* asn1-1.0.13.js (c) 2013-2017 Kenji Urushima | kjur.github.com/jsrsasign/license\n */\n/*\n * asn1.js - ASN.1 DER encoder classes\n *\n * Copyright (c) 2013-2017 Kenji Urushima (kenji.urushima@gmail.com)\n *\n * This software is licensed under the terms of the MIT License.\n * https://kjur.github.io/jsrsasign/license\n *\n * The above copyright and license notice shall be\n * included in all copies or substantial portions of the Software.\n */\n/* eslint-disable */\nimport { BigInteger } from '../jsbn/jsbn'\nimport { YAHOO } from './yahoo'\n/**\n * @fileOverview\n * @name asn1-1.0.js\n * @author Kenji Urushima kenji.urushima@gmail.com\n * @version asn1 1.0.13 (2017-Jun-02)\n * @since jsrsasign 2.1\n * @license <a href=\"https://kjur.github.io/jsrsasign/license/\">MIT License</a>\n */\n/**\n * kjur's class library name space\n * <p>\n * This name space provides following name spaces:\n * <ul>\n * <li>{@link KJUR.asn1} - ASN.1 primitive hexadecimal encoder</li>\n * <li>{@link KJUR.asn1.x509} - ASN.1 structure for X.509 certificate and CRL</li>\n * <li>{@link KJUR.crypto} - Java Cryptographic Extension(JCE) style MessageDigest/Signature\n * class and utilities</li>\n * </ul>\n * </p>\n * NOTE: Please ignore method summary and document of this namespace. This caused by a bug of jsdoc2.\n * @name KJUR\n * @namespace kjur's class library name space\n */\nexport var KJUR = {}\n/**\n * kjur's ASN.1 class library name space\n * <p>\n * This is ITU-T X.690 ASN.1 DER encoder class library and\n * class structure and methods is very similar to\n * org.bouncycastle.asn1 package of\n * well known BouncyCaslte Cryptography Library.\n * <h4>PROVIDING ASN.1 PRIMITIVES</h4>\n * Here are ASN.1 DER primitive classes.\n * <ul>\n * <li>0x01 {@link KJUR.asn1.DERBoolean}</li>\n * <li>0x02 {@link KJUR.asn1.DERInteger}</li>\n * <li>0x03 {@link KJUR.asn1.DERBitString}</li>\n * <li>0x04 {@link KJUR.asn1.DEROctetString}</li>\n * <li>0x05 {@link KJUR.asn1.DERNull}</li>\n * <li>0x06 {@link KJUR.asn1.DERObjectIdentifier}</li>\n * <li>0x0a {@link KJUR.asn1.DEREnumerated}</li>\n * <li>0x0c {@link KJUR.asn1.DERUTF8String}</li>\n * <li>0x12 {@link KJUR.asn1.DERNumericString}</li>\n * <li>0x13 {@link KJUR.asn1.DERPrintableString}</li>\n * <li>0x14 {@link KJUR.asn1.DERTeletexString}</li>\n * <li>0x16 {@link KJUR.asn1.DERIA5String}</li>\n * <li>0x17 {@link KJUR.asn1.DERUTCTime}</li>\n * <li>0x18 {@link KJUR.asn1.DERGeneralizedTime}</li>\n * <li>0x30 {@link KJUR.asn1.DERSequence}</li>\n * <li>0x31 {@link KJUR.asn1.DERSet}</li>\n * </ul>\n * <h4>OTHER ASN.1 CLASSES</h4>\n * <ul>\n * <li>{@link KJUR.asn1.ASN1Object}</li>\n * <li>{@link KJUR.asn1.DERAbstractString}</li>\n * <li>{@link KJUR.asn1.DERAbstractTime}</li>\n * <li>{@link KJUR.asn1.DERAbstractStructured}</li>\n * <li>{@link KJUR.asn1.DERTaggedObject}</li>\n * </ul>\n * <h4>SUB NAME SPACES</h4>\n * <ul>\n * <li>{@link KJUR.asn1.cades} - CAdES long term signature format</li>\n * <li>{@link KJUR.asn1.cms} - Cryptographic Message Syntax</li>\n * <li>{@link KJUR.asn1.csr} - Certificate Signing Request (CSR/PKCS#10)</li>\n * <li>{@link KJUR.asn1.tsp} - RFC 3161 Timestamping Protocol Format</li>\n * <li>{@link KJUR.asn1.x509} - RFC 5280 X.509 certificate and CRL</li>\n * </ul>\n * </p>\n * NOTE: Please ignore method summary and document of this namespace.\n * This caused by a bug of jsdoc2.\n * @name KJUR.asn1\n * @namespace\n */\nif (typeof KJUR.asn1 == 'undefined' || !KJUR.asn1) KJUR.asn1 = {}\n/**\n * ASN1 utilities class\n * @name KJUR.asn1.ASN1Util\n * @class ASN1 utilities class\n * @since asn1 1.0.2\n */\nKJUR.asn1.ASN1Util = new (function () {\n\tthis.integerToByteHex = function (i) {\n\t\tvar h = i.toString(16)\n\t\tif (h.length % 2 == 1) h = '0' + h\n\t\treturn h\n\t}\n\tthis.bigIntToMinTwosComplementsHex = function (bigIntegerValue) {\n\t\tvar h = bigIntegerValue.toString(16)\n\t\tif (h.substr(0, 1) != '-') {\n\t\t\tif (h.length % 2 == 1) {\n\t\t\t\th = '0' + h\n\t\t\t} else {\n\t\t\t\tif (!h.match(/^[0-7]/)) {\n\t\t\t\t\th = '00' + h\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tvar hPos = h.substr(1)\n\t\t\tvar xorLen = hPos.length\n\t\t\tif (xorLen % 2 == 1) {\n\t\t\t\txorLen += 1\n\t\t\t} else {\n\t\t\t\tif (!h.match(/^[0-7]/)) {\n\t\t\t\t\txorLen += 2\n\t\t\t\t}\n\t\t\t}\n\t\t\tvar hMask = ''\n\t\t\tfor (var i = 0; i < xorLen; i++) {\n\t\t\t\thMask += 'f'\n\t\t\t}\n\t\t\tvar biMask = new BigInteger(hMask, 16)\n\t\t\tvar biNeg = biMask.xor(bigIntegerValue).add(BigInteger.ONE)\n\t\t\th = biNeg.toString(16).replace(/^-/, '')\n\t\t}\n\t\treturn h\n\t}\n\t/**\n\t * get PEM string from hexadecimal data and header string\n\t * @name getPEMStringFromHex\n\t * @memberOf KJUR.asn1.ASN1Util\n\t * @function\n\t * @param {String} dataHex hexadecimal string of PEM body\n\t * @param {String} pemHeader PEM header string (ex. 'RSA PRIVATE KEY')\n\t * @return {String} PEM formatted string of input data\n\t * @description\n\t * This method converts a hexadecimal string to a PEM string with\n\t * a specified header. Its line break will be CRLF(\"\\r\\n\").\n\t * @example\n\t * var pem  = KJUR.asn1.ASN1Util.getPEMStringFromHex('616161', 'RSA PRIVATE KEY');\n\t * // value of pem will be:\n\t * -----BEGIN PRIVATE KEY-----\n\t * YWFh\n\t * -----END PRIVATE KEY-----\n\t */\n\tthis.getPEMStringFromHex = function (dataHex, pemHeader) {\n\t\treturn hextopem(dataHex, pemHeader)\n\t}\n\t/**\n\t * generate ASN1Object specifed by JSON parameters\n\t * @name newObject\n\t * @memberOf KJUR.asn1.ASN1Util\n\t * @function\n\t * @param {Array} param JSON parameter to generate ASN1Object\n\t * @return {KJUR.asn1.ASN1Object} generated object\n\t * @since asn1 1.0.3\n\t * @description\n\t * generate any ASN1Object specified by JSON param\n\t * including ASN.1 primitive or structured.\n\t * Generally 'param' can be described as follows:\n\t * <blockquote>\n\t * {TYPE-OF-ASNOBJ: ASN1OBJ-PARAMETER}\n\t * </blockquote>\n\t * 'TYPE-OF-ASN1OBJ' can be one of following symbols:\n\t * <ul>\n\t * <li>'bool' - DERBoolean</li>\n\t * <li>'int' - DERInteger</li>\n\t * <li>'bitstr' - DERBitString</li>\n\t * <li>'octstr' - DEROctetString</li>\n\t * <li>'null' - DERNull</li>\n\t * <li>'oid' - DERObjectIdentifier</li>\n\t * <li>'enum' - DEREnumerated</li>\n\t * <li>'utf8str' - DERUTF8String</li>\n\t * <li>'numstr' - DERNumericString</li>\n\t * <li>'prnstr' - DERPrintableString</li>\n\t * <li>'telstr' - DERTeletexString</li>\n\t * <li>'ia5str' - DERIA5String</li>\n\t * <li>'utctime' - DERUTCTime</li>\n\t * <li>'gentime' - DERGeneralizedTime</li>\n\t * <li>'seq' - DERSequence</li>\n\t * <li>'set' - DERSet</li>\n\t * <li>'tag' - DERTaggedObject</li>\n\t * </ul>\n\t * @example\n\t * newObject({'prnstr': 'aaa'});\n\t * newObject({'seq': [{'int': 3}, {'prnstr': 'aaa'}]})\n\t * // ASN.1 Tagged Object\n\t * newObject({'tag': {'tag': 'a1',\n\t *                    'explicit': true,\n\t *                    'obj': {'seq': [{'int': 3}, {'prnstr': 'aaa'}]}}});\n\t * // more simple representation of ASN.1 Tagged Object\n\t * newObject({'tag': ['a1',\n\t *                    true,\n\t *                    {'seq': [\n\t *                      {'int': 3},\n\t *                      {'prnstr': 'aaa'}]}\n\t *                   ]});\n\t */\n\tthis.newObject = function (param) {\n\t\tvar _KJUR = KJUR,\n\t\t\t_KJUR_asn1 = _KJUR.asn1,\n\t\t\t_DERBoolean = _KJUR_asn1.DERBoolean,\n\t\t\t_DERInteger = _KJUR_asn1.DERInteger,\n\t\t\t_DERBitString = _KJUR_asn1.DERBitString,\n\t\t\t_DEROctetString = _KJUR_asn1.DEROctetString,\n\t\t\t_DERNull = _KJUR_asn1.DERNull,\n\t\t\t_DERObjectIdentifier = _KJUR_asn1.DERObjectIdentifier,\n\t\t\t_DEREnumerated = _KJUR_asn1.DEREnumerated,\n\t\t\t_DERUTF8String = _KJUR_asn1.DERUTF8String,\n\t\t\t_DERNumericString = _KJUR_asn1.DERNumericString,\n\t\t\t_DERPrintableString = _KJUR_asn1.DERPrintableString,\n\t\t\t_DERTeletexString = _KJUR_asn1.DERTeletexString,\n\t\t\t_DERIA5String = _KJUR_asn1.DERIA5String,\n\t\t\t_DERUTCTime = _KJUR_asn1.DERUTCTime,\n\t\t\t_DERGeneralizedTime = _KJUR_asn1.DERGeneralizedTime,\n\t\t\t_DERSequence = _KJUR_asn1.DERSequence,\n\t\t\t_DERSet = _KJUR_asn1.DERSet,\n\t\t\t_DERTaggedObject = _KJUR_asn1.DERTaggedObject,\n\t\t\t_newObject = _KJUR_asn1.ASN1Util.newObject\n\t\tvar keys = Object.keys(param)\n\t\tif (keys.length != 1) throw 'key of param shall be only one.'\n\t\tvar key = keys[0]\n\t\tif (\n\t\t\t':bool:int:bitstr:octstr:null:oid:enum:utf8str:numstr:prnstr:telstr:ia5str:utctime:gentime:seq:set:tag:'.indexOf(\n\t\t\t\t':' + key + ':'\n\t\t\t) == -1\n\t\t)\n\t\t\tthrow 'undefined key: ' + key\n\t\tif (key == 'bool') return new _DERBoolean(param[key])\n\t\tif (key == 'int') return new _DERInteger(param[key])\n\t\tif (key == 'bitstr') return new _DERBitString(param[key])\n\t\tif (key == 'octstr') return new _DEROctetString(param[key])\n\t\tif (key == 'null') return new _DERNull(param[key])\n\t\tif (key == 'oid') return new _DERObjectIdentifier(param[key])\n\t\tif (key == 'enum') return new _DEREnumerated(param[key])\n\t\tif (key == 'utf8str') return new _DERUTF8String(param[key])\n\t\tif (key == 'numstr') return new _DERNumericString(param[key])\n\t\tif (key == 'prnstr') return new _DERPrintableString(param[key])\n\t\tif (key == 'telstr') return new _DERTeletexString(param[key])\n\t\tif (key == 'ia5str') return new _DERIA5String(param[key])\n\t\tif (key == 'utctime') return new _DERUTCTime(param[key])\n\t\tif (key == 'gentime') return new _DERGeneralizedTime(param[key])\n\t\tif (key == 'seq') {\n\t\t\tvar paramList = param[key]\n\t\t\tvar a = []\n\t\t\tfor (var i = 0; i < paramList.length; i++) {\n\t\t\t\tvar asn1Obj = _newObject(paramList[i])\n\t\t\t\ta.push(asn1Obj)\n\t\t\t}\n\t\t\treturn new _DERSequence({ array: a })\n\t\t}\n\t\tif (key == 'set') {\n\t\t\tvar paramList = param[key]\n\t\t\tvar a = []\n\t\t\tfor (var i = 0; i < paramList.length; i++) {\n\t\t\t\tvar asn1Obj = _newObject(paramList[i])\n\t\t\t\ta.push(asn1Obj)\n\t\t\t}\n\t\t\treturn new _DERSet({ array: a })\n\t\t}\n\t\tif (key == 'tag') {\n\t\t\tvar tagParam = param[key]\n\t\t\tif (Object.prototype.toString.call(tagParam) === '[object Array]' && tagParam.length == 3) {\n\t\t\t\tvar obj = _newObject(tagParam[2])\n\t\t\t\treturn new _DERTaggedObject({ tag: tagParam[0], explicit: tagParam[1], obj: obj })\n\t\t\t} else {\n\t\t\t\tvar newParam = {}\n\t\t\t\tif (tagParam.explicit !== undefined) newParam.explicit = tagParam.explicit\n\t\t\t\tif (tagParam.tag !== undefined) newParam.tag = tagParam.tag\n\t\t\t\tif (tagParam.obj === undefined) throw \"obj shall be specified for 'tag'.\"\n\t\t\t\tnewParam.obj = _newObject(tagParam.obj)\n\t\t\t\treturn new _DERTaggedObject(newParam)\n\t\t\t}\n\t\t}\n\t}\n\t/**\n\t * get encoded hexadecimal string of ASN1Object specifed by JSON parameters\n\t * @name jsonToASN1HEX\n\t * @memberOf KJUR.asn1.ASN1Util\n\t * @function\n\t * @param {Array} param JSON parameter to generate ASN1Object\n\t * @return hexadecimal string of ASN1Object\n\t * @since asn1 1.0.4\n\t * @description\n\t * As for ASN.1 object representation of JSON object,\n\t * please see {@link newObject}.\n\t * @example\n\t * jsonToASN1HEX({'prnstr': 'aaa'});\n\t */\n\tthis.jsonToASN1HEX = function (param) {\n\t\tvar asn1Obj = this.newObject(param)\n\t\treturn asn1Obj.getEncodedHex()\n\t}\n})()\n/**\n * get dot noted oid number string from hexadecimal value of OID\n * @name oidHexToInt\n * @memberOf KJUR.asn1.ASN1Util\n * @function\n * @param {String} hex hexadecimal value of object identifier\n * @return {String} dot noted string of object identifier\n * @since jsrsasign 4.8.3 asn1 1.0.7\n * @description\n * This static method converts from hexadecimal string representation of\n * ASN.1 value of object identifier to oid number string.\n * @example\n * KJUR.asn1.ASN1Util.oidHexToInt('550406') &rarr; \"2.5.4.6\"\n */\nKJUR.asn1.ASN1Util.oidHexToInt = function (hex) {\n\tvar s = ''\n\tvar i01 = parseInt(hex.substr(0, 2), 16)\n\tvar i0 = Math.floor(i01 / 40)\n\tvar i1 = i01 % 40\n\tvar s = i0 + '.' + i1\n\tvar binbuf = ''\n\tfor (var i = 2; i < hex.length; i += 2) {\n\t\tvar value = parseInt(hex.substr(i, 2), 16)\n\t\tvar bin = ('00000000' + value.toString(2)).slice(-8)\n\t\tbinbuf = binbuf + bin.substr(1, 7)\n\t\tif (bin.substr(0, 1) == '0') {\n\t\t\tvar bi = new BigInteger(binbuf, 2)\n\t\t\ts = s + '.' + bi.toString(10)\n\t\t\tbinbuf = ''\n\t\t}\n\t}\n\treturn s\n}\n/**\n * get hexadecimal value of object identifier from dot noted oid value\n * @name oidIntToHex\n * @memberOf KJUR.asn1.ASN1Util\n * @function\n * @param {String} oidString dot noted string of object identifier\n * @return {String} hexadecimal value of object identifier\n * @since jsrsasign 4.8.3 asn1 1.0.7\n * @description\n * This static method converts from object identifier value string.\n * to hexadecimal string representation of it.\n * @example\n * KJUR.asn1.ASN1Util.oidIntToHex(\"2.5.4.6\") &rarr; \"550406\"\n */\nKJUR.asn1.ASN1Util.oidIntToHex = function (oidString) {\n\tvar itox = function (i) {\n\t\tvar h = i.toString(16)\n\t\tif (h.length == 1) h = '0' + h\n\t\treturn h\n\t}\n\tvar roidtox = function (roid) {\n\t\tvar h = ''\n\t\tvar bi = new BigInteger(roid, 10)\n\t\tvar b = bi.toString(2)\n\t\tvar padLen = 7 - (b.length % 7)\n\t\tif (padLen == 7) padLen = 0\n\t\tvar bPad = ''\n\t\tfor (var i = 0; i < padLen; i++) bPad += '0'\n\t\tb = bPad + b\n\t\tfor (var i = 0; i < b.length - 1; i += 7) {\n\t\t\tvar b8 = b.substr(i, 7)\n\t\t\tif (i != b.length - 7) b8 = '1' + b8\n\t\t\th += itox(parseInt(b8, 2))\n\t\t}\n\t\treturn h\n\t}\n\tif (!oidString.match(/^[0-9.]+$/)) {\n\t\tthrow 'malformed oid string: ' + oidString\n\t}\n\tvar h = ''\n\tvar a = oidString.split('.')\n\tvar i0 = parseInt(a[0]) * 40 + parseInt(a[1])\n\th += itox(i0)\n\ta.splice(0, 2)\n\tfor (var i = 0; i < a.length; i++) {\n\t\th += roidtox(a[i])\n\t}\n\treturn h\n}\n// ********************************************************************\n//  Abstract ASN.1 Classes\n// ********************************************************************\n// ********************************************************************\n/**\n * base class for ASN.1 DER encoder object\n * @name KJUR.asn1.ASN1Object\n * @class base class for ASN.1 DER encoder object\n * @property {Boolean} isModified flag whether internal data was changed\n * @property {String} hTLV hexadecimal string of ASN.1 TLV\n * @property {String} hT hexadecimal string of ASN.1 TLV tag(T)\n * @property {String} hL hexadecimal string of ASN.1 TLV length(L)\n * @property {String} hV hexadecimal string of ASN.1 TLV value(V)\n * @description\n */\nKJUR.asn1.ASN1Object = function () {\n\tvar isModified = true\n\tvar hTLV = null\n\tvar hT = '00'\n\tvar hL = '00'\n\tvar hV = ''\n\t/**\n\t * get hexadecimal ASN.1 TLV length(L) bytes from TLV value(V)\n\t * @name getLengthHexFromValue\n\t * @memberOf KJUR.asn1.ASN1Object#\n\t * @function\n\t * @return {String} hexadecimal string of ASN.1 TLV length(L)\n\t */\n\tthis.getLengthHexFromValue = function () {\n\t\tif (typeof this.hV == 'undefined' || this.hV == null) {\n\t\t\tthrow 'this.hV is null or undefined.'\n\t\t}\n\t\tif (this.hV.length % 2 == 1) {\n\t\t\tthrow 'value hex must be even length: n=' + hV.length + ',v=' + this.hV\n\t\t}\n\t\tvar n = this.hV.length / 2\n\t\tvar hN = n.toString(16)\n\t\tif (hN.length % 2 == 1) {\n\t\t\thN = '0' + hN\n\t\t}\n\t\tif (n < 128) {\n\t\t\treturn hN\n\t\t} else {\n\t\t\tvar hNlen = hN.length / 2\n\t\t\tif (hNlen > 15) {\n\t\t\t\tthrow 'ASN.1 length too long to represent by 8x: n = ' + n.toString(16)\n\t\t\t}\n\t\t\tvar head = 128 + hNlen\n\t\t\treturn head.toString(16) + hN\n\t\t}\n\t}\n\t/**\n\t * get hexadecimal string of ASN.1 TLV bytes\n\t * @name getEncodedHex\n\t * @memberOf KJUR.asn1.ASN1Object#\n\t * @function\n\t * @return {String} hexadecimal string of ASN.1 TLV\n\t */\n\tthis.getEncodedHex = function () {\n\t\tif (this.hTLV == null || this.isModified) {\n\t\t\tthis.hV = this.getFreshValueHex()\n\t\t\tthis.hL = this.getLengthHexFromValue()\n\t\t\tthis.hTLV = this.hT + this.hL + this.hV\n\t\t\tthis.isModified = false\n\t\t\t//alert(\"first time: \" + this.hTLV);\n\t\t}\n\t\treturn this.hTLV\n\t}\n\t/**\n\t * get hexadecimal string of ASN.1 TLV value(V) bytes\n\t * @name getValueHex\n\t * @memberOf KJUR.asn1.ASN1Object#\n\t * @function\n\t * @return {String} hexadecimal string of ASN.1 TLV value(V) bytes\n\t */\n\tthis.getValueHex = function () {\n\t\tthis.getEncodedHex()\n\t\treturn this.hV\n\t}\n\tthis.getFreshValueHex = function () {\n\t\treturn ''\n\t}\n}\n// == BEGIN DERAbstractString ================================================\n/**\n * base class for ASN.1 DER string classes\n * @name KJUR.asn1.DERAbstractString\n * @class base class for ASN.1 DER string classes\n * @param {Array} params associative array of parameters (ex. {'str': 'aaa'})\n * @property {String} s internal string of value\n * @extends KJUR.asn1.ASN1Object\n * @description\n * <br/>\n * As for argument 'params' for constructor, you can specify one of\n * following properties:\n * <ul>\n * <li>str - specify initial ASN.1 value(V) by a string</li>\n * <li>hex - specify initial ASN.1 value(V) by a hexadecimal string</li>\n * </ul>\n * NOTE: 'params' can be omitted.\n */\nKJUR.asn1.DERAbstractString = function (params) {\n\tKJUR.asn1.DERAbstractString.superclass.constructor.call(this)\n\tvar s = null\n\tvar hV = null\n\t/**\n\t * get string value of this string object\n\t * @name getString\n\t * @memberOf KJUR.asn1.DERAbstractString#\n\t * @function\n\t * @return {String} string value of this string object\n\t */\n\tthis.getString = function () {\n\t\treturn this.s\n\t}\n\t/**\n\t * set value by a string\n\t * @name setString\n\t * @memberOf KJUR.asn1.DERAbstractString#\n\t * @function\n\t * @param {String} newS value by a string to set\n\t */\n\tthis.setString = function (newS) {\n\t\tthis.hTLV = null\n\t\tthis.isModified = true\n\t\tthis.s = newS\n\t\tthis.hV = stohex(this.s)\n\t}\n\t/**\n\t * set value by a hexadecimal string\n\t * @name setStringHex\n\t * @memberOf KJUR.asn1.DERAbstractString#\n\t * @function\n\t * @param {String} newHexString value by a hexadecimal string to set\n\t */\n\tthis.setStringHex = function (newHexString) {\n\t\tthis.hTLV = null\n\t\tthis.isModified = true\n\t\tthis.s = null\n\t\tthis.hV = newHexString\n\t}\n\tthis.getFreshValueHex = function () {\n\t\treturn this.hV\n\t}\n\tif (typeof params != 'undefined') {\n\t\tif (typeof params == 'string') {\n\t\t\tthis.setString(params)\n\t\t} else if (typeof params['str'] != 'undefined') {\n\t\t\tthis.setString(params['str'])\n\t\t} else if (typeof params['hex'] != 'undefined') {\n\t\t\tthis.setStringHex(params['hex'])\n\t\t}\n\t}\n}\nYAHOO.lang.extend(KJUR.asn1.DERAbstractString, KJUR.asn1.ASN1Object)\n// == END   DERAbstractString ================================================\n// == BEGIN DERAbstractTime ==================================================\n/**\n * base class for ASN.1 DER Generalized/UTCTime class\n * @name KJUR.asn1.DERAbstractTime\n * @class base class for ASN.1 DER Generalized/UTCTime class\n * @param {Array} params associative array of parameters (ex. {'str': '130430235959Z'})\n * @extends KJUR.asn1.ASN1Object\n * @description\n * @see KJUR.asn1.ASN1Object - superclass\n */\nKJUR.asn1.DERAbstractTime = function (params) {\n\tKJUR.asn1.DERAbstractTime.superclass.constructor.call(this)\n\tvar s = null\n\tvar date = null\n\t// --- PRIVATE METHODS --------------------\n\tthis.localDateToUTC = function (d) {\n\t\tutc = d.getTime() + d.getTimezoneOffset() * 60000\n\t\tvar utcDate = new Date(utc)\n\t\treturn utcDate\n\t}\n\t/*\n\t * format date string by Data object\n\t * @name formatDate\n\t * @memberOf KJUR.asn1.AbstractTime;\n\t * @param {Date} dateObject\n\t * @param {string} type 'utc' or 'gen'\n\t * @param {boolean} withMillis flag for with millisections or not\n\t * @description\n\t * 'withMillis' flag is supported from asn1 1.0.6.\n\t */\n\tthis.formatDate = function (dateObject, type, withMillis) {\n\t\tvar pad = this.zeroPadding\n\t\tvar d = this.localDateToUTC(dateObject)\n\t\tvar year = String(d.getFullYear())\n\t\tif (type == 'utc') year = year.substr(2, 2)\n\t\tvar month = pad(String(d.getMonth() + 1), 2)\n\t\tvar day = pad(String(d.getDate()), 2)\n\t\tvar hour = pad(String(d.getHours()), 2)\n\t\tvar min = pad(String(d.getMinutes()), 2)\n\t\tvar sec = pad(String(d.getSeconds()), 2)\n\t\tvar s = year + month + day + hour + min + sec\n\t\tif (withMillis === true) {\n\t\t\tvar millis = d.getMilliseconds()\n\t\t\tif (millis != 0) {\n\t\t\t\tvar sMillis = pad(String(millis), 3)\n\t\t\t\tsMillis = sMillis.replace(/[0]+$/, '')\n\t\t\t\ts = s + '.' + sMillis\n\t\t\t}\n\t\t}\n\t\treturn s + 'Z'\n\t}\n\tthis.zeroPadding = function (s, len) {\n\t\tif (s.length >= len) return s\n\t\treturn new Array(len - s.length + 1).join('0') + s\n\t}\n\t// --- PUBLIC METHODS --------------------\n\t/**\n\t * get string value of this string object\n\t * @name getString\n\t * @memberOf KJUR.asn1.DERAbstractTime#\n\t * @function\n\t * @return {String} string value of this time object\n\t */\n\tthis.getString = function () {\n\t\treturn this.s\n\t}\n\t/**\n\t * set value by a string\n\t * @name setString\n\t * @memberOf KJUR.asn1.DERAbstractTime#\n\t * @function\n\t * @param {String} newS value by a string to set such like \"130430235959Z\"\n\t */\n\tthis.setString = function (newS) {\n\t\tthis.hTLV = null\n\t\tthis.isModified = true\n\t\tthis.s = newS\n\t\tthis.hV = stohex(newS)\n\t}\n\t/**\n\t * set value by a Date object\n\t * @name setByDateValue\n\t * @memberOf KJUR.asn1.DERAbstractTime#\n\t * @function\n\t * @param {Integer} year year of date (ex. 2013)\n\t * @param {Integer} month month of date between 1 and 12 (ex. 12)\n\t * @param {Integer} day day of month\n\t * @param {Integer} hour hours of date\n\t * @param {Integer} min minutes of date\n\t * @param {Integer} sec seconds of date\n\t */\n\tthis.setByDateValue = function (year, month, day, hour, min, sec) {\n\t\tvar dateObject = new Date(Date.UTC(year, month - 1, day, hour, min, sec, 0))\n\t\tthis.setByDate(dateObject)\n\t}\n\tthis.getFreshValueHex = function () {\n\t\treturn this.hV\n\t}\n}\nYAHOO.lang.extend(KJUR.asn1.DERAbstractTime, KJUR.asn1.ASN1Object)\n// == END   DERAbstractTime ==================================================\n// == BEGIN DERAbstractStructured ============================================\n/**\n * base class for ASN.1 DER structured class\n * @name KJUR.asn1.DERAbstractStructured\n * @class base class for ASN.1 DER structured class\n * @property {Array} asn1Array internal array of ASN1Object\n * @extends KJUR.asn1.ASN1Object\n * @description\n * @see KJUR.asn1.ASN1Object - superclass\n */\nKJUR.asn1.DERAbstractStructured = function (params) {\n\tKJUR.asn1.DERAbstractString.superclass.constructor.call(this)\n\tvar asn1Array = null\n\t/**\n\t * set value by array of ASN1Object\n\t * @name setByASN1ObjectArray\n\t * @memberOf KJUR.asn1.DERAbstractStructured#\n\t * @function\n\t * @param {array} asn1ObjectArray array of ASN1Object to set\n\t */\n\tthis.setByASN1ObjectArray = function (asn1ObjectArray) {\n\t\tthis.hTLV = null\n\t\tthis.isModified = true\n\t\tthis.asn1Array = asn1ObjectArray\n\t}\n\t/**\n\t * append an ASN1Object to internal array\n\t * @name appendASN1Object\n\t * @memberOf KJUR.asn1.DERAbstractStructured#\n\t * @function\n\t * @param {ASN1Object} asn1Object to add\n\t */\n\tthis.appendASN1Object = function (asn1Object) {\n\t\tthis.hTLV = null\n\t\tthis.isModified = true\n\t\tthis.asn1Array.push(asn1Object)\n\t}\n\tthis.asn1Array = new Array()\n\tif (typeof params != 'undefined') {\n\t\tif (typeof params['array'] != 'undefined') {\n\t\t\tthis.asn1Array = params['array']\n\t\t}\n\t}\n}\nYAHOO.lang.extend(KJUR.asn1.DERAbstractStructured, KJUR.asn1.ASN1Object)\n// ********************************************************************\n//  ASN.1 Object Classes\n// ********************************************************************\n// ********************************************************************\n/**\n * class for ASN.1 DER Boolean\n * @name KJUR.asn1.DERBoolean\n * @class class for ASN.1 DER Boolean\n * @extends KJUR.asn1.ASN1Object\n * @description\n * @see KJUR.asn1.ASN1Object - superclass\n */\nKJUR.asn1.DERBoolean = function () {\n\tKJUR.asn1.DERBoolean.superclass.constructor.call(this)\n\tthis.hT = '01'\n\tthis.hTLV = '0101ff'\n}\nYAHOO.lang.extend(KJUR.asn1.DERBoolean, KJUR.asn1.ASN1Object)\n// ********************************************************************\n/**\n * class for ASN.1 DER Integer\n * @name KJUR.asn1.DERInteger\n * @class class for ASN.1 DER Integer\n * @extends KJUR.asn1.ASN1Object\n * @description\n * <br/>\n * As for argument 'params' for constructor, you can specify one of\n * following properties:\n * <ul>\n * <li>int - specify initial ASN.1 value(V) by integer value</li>\n * <li>bigint - specify initial ASN.1 value(V) by BigInteger object</li>\n * <li>hex - specify initial ASN.1 value(V) by a hexadecimal string</li>\n * </ul>\n * NOTE: 'params' can be omitted.\n */\nKJUR.asn1.DERInteger = function (params) {\n\tKJUR.asn1.DERInteger.superclass.constructor.call(this)\n\tthis.hT = '02'\n\t/**\n\t * set value by Tom Wu's BigInteger object\n\t * @name setByBigInteger\n\t * @memberOf KJUR.asn1.DERInteger#\n\t * @function\n\t * @param {BigInteger} bigIntegerValue to set\n\t */\n\tthis.setByBigInteger = function (bigIntegerValue) {\n\t\tthis.hTLV = null\n\t\tthis.isModified = true\n\t\tthis.hV = KJUR.asn1.ASN1Util.bigIntToMinTwosComplementsHex(bigIntegerValue)\n\t}\n\t/**\n\t * set value by integer value\n\t * @name setByInteger\n\t * @memberOf KJUR.asn1.DERInteger\n\t * @function\n\t * @param {Integer} integer value to set\n\t */\n\tthis.setByInteger = function (intValue) {\n\t\tvar bi = new BigInteger(String(intValue), 10)\n\t\tthis.setByBigInteger(bi)\n\t}\n\t/**\n\t * set value by integer value\n\t * @name setValueHex\n\t * @memberOf KJUR.asn1.DERInteger#\n\t * @function\n\t * @param {String} hexadecimal string of integer value\n\t * @description\n\t * <br/>\n\t * NOTE: Value shall be represented by minimum octet length of\n\t * two's complement representation.\n\t * @example\n\t * new KJUR.asn1.DERInteger(123);\n\t * new KJUR.asn1.DERInteger({'int': 123});\n\t * new KJUR.asn1.DERInteger({'hex': '1fad'});\n\t */\n\tthis.setValueHex = function (newHexString) {\n\t\tthis.hV = newHexString\n\t}\n\tthis.getFreshValueHex = function () {\n\t\treturn this.hV\n\t}\n\tif (typeof params != 'undefined') {\n\t\tif (typeof params['bigint'] != 'undefined') {\n\t\t\tthis.setByBigInteger(params['bigint'])\n\t\t} else if (typeof params['int'] != 'undefined') {\n\t\t\tthis.setByInteger(params['int'])\n\t\t} else if (typeof params == 'number') {\n\t\t\tthis.setByInteger(params)\n\t\t} else if (typeof params['hex'] != 'undefined') {\n\t\t\tthis.setValueHex(params['hex'])\n\t\t}\n\t}\n}\nYAHOO.lang.extend(KJUR.asn1.DERInteger, KJUR.asn1.ASN1Object)\n// ********************************************************************\n/**\n * class for ASN.1 DER encoded BitString primitive\n * @name KJUR.asn1.DERBitString\n * @class class for ASN.1 DER encoded BitString primitive\n * @extends KJUR.asn1.ASN1Object\n * @description\n * <br/>\n * As for argument 'params' for constructor, you can specify one of\n * following properties:\n * <ul>\n * <li>bin - specify binary string (ex. '10111')</li>\n * <li>array - specify array of boolean (ex. [true,false,true,true])</li>\n * <li>hex - specify hexadecimal string of ASN.1 value(V) including unused bits</li>\n * <li>obj - specify {@link KJUR.asn1.ASN1Util.newObject}\n * argument for \"BitString encapsulates\" structure.</li>\n * </ul>\n * NOTE1: 'params' can be omitted.<br/>\n * NOTE2: 'obj' parameter have been supported since\n * asn1 1.0.11, jsrsasign 6.1.1 (2016-Sep-25).<br/>\n * @example\n * // default constructor\n * o = new KJUR.asn1.DERBitString();\n * // initialize with binary string\n * o = new KJUR.asn1.DERBitString({bin: \"1011\"});\n * // initialize with boolean array\n * o = new KJUR.asn1.DERBitString({array: [true,false,true,true]});\n * // initialize with hexadecimal string (04 is unused bits)\n * o = new KJUR.asn1.DEROctetString({hex: \"04bac0\"});\n * // initialize with ASN1Util.newObject argument for encapsulated\n * o = new KJUR.asn1.DERBitString({obj: {seq: [{int: 3}, {prnstr: 'aaa'}]}});\n * // above generates a ASN.1 data like this:\n * // BIT STRING, encapsulates {\n * //   SEQUENCE {\n * //     INTEGER 3\n * //     PrintableString 'aaa'\n * //     }\n * //   }\n */\nKJUR.asn1.DERBitString = function (params) {\n\tif (params !== undefined && typeof params.obj !== 'undefined') {\n\t\tvar o = KJUR.asn1.ASN1Util.newObject(params.obj)\n\t\tparams.hex = '00' + o.getEncodedHex()\n\t}\n\tKJUR.asn1.DERBitString.superclass.constructor.call(this)\n\tthis.hT = '03'\n\t/**\n\t * set ASN.1 value(V) by a hexadecimal string including unused bits\n\t * @name setHexValueIncludingUnusedBits\n\t * @memberOf KJUR.asn1.DERBitString#\n\t * @function\n\t * @param {String} newHexStringIncludingUnusedBits\n\t */\n\tthis.setHexValueIncludingUnusedBits = function (newHexStringIncludingUnusedBits) {\n\t\tthis.hTLV = null\n\t\tthis.isModified = true\n\t\tthis.hV = newHexStringIncludingUnusedBits\n\t}\n\t/**\n\t * set ASN.1 value(V) by unused bit and hexadecimal string of value\n\t * @name setUnusedBitsAndHexValue\n\t * @memberOf KJUR.asn1.DERBitString#\n\t * @function\n\t * @param {Integer} unusedBits\n\t * @param {String} hValue\n\t */\n\tthis.setUnusedBitsAndHexValue = function (unusedBits, hValue) {\n\t\tif (unusedBits < 0 || 7 < unusedBits) {\n\t\t\tthrow 'unused bits shall be from 0 to 7: u = ' + unusedBits\n\t\t}\n\t\tvar hUnusedBits = '0' + unusedBits\n\t\tthis.hTLV = null\n\t\tthis.isModified = true\n\t\tthis.hV = hUnusedBits + hValue\n\t}\n\t/**\n\t * set ASN.1 DER BitString by binary string<br/>\n\t * @name setByBinaryString\n\t * @memberOf KJUR.asn1.DERBitString#\n\t * @function\n\t * @param {String} binaryString binary value string (i.e. '10111')\n\t * @description\n\t * Its unused bits will be calculated automatically by length of\n\t * 'binaryValue'. <br/>\n\t * NOTE: Trailing zeros '0' will be ignored.\n\t * @example\n\t * o = new KJUR.asn1.DERBitString();\n\t * o.setByBooleanArray(\"01011\");\n\t */\n\tthis.setByBinaryString = function (binaryString) {\n\t\tbinaryString = binaryString.replace(/0+$/, '')\n\t\tvar unusedBits = 8 - (binaryString.length % 8)\n\t\tif (unusedBits == 8) unusedBits = 0\n\t\tfor (var i = 0; i <= unusedBits; i++) {\n\t\t\tbinaryString += '0'\n\t\t}\n\t\tvar h = ''\n\t\tfor (var i = 0; i < binaryString.length - 1; i += 8) {\n\t\t\tvar b = binaryString.substr(i, 8)\n\t\t\tvar x = parseInt(b, 2).toString(16)\n\t\t\tif (x.length == 1) x = '0' + x\n\t\t\th += x\n\t\t}\n\t\tthis.hTLV = null\n\t\tthis.isModified = true\n\t\tthis.hV = '0' + unusedBits + h\n\t}\n\t/**\n\t * set ASN.1 TLV value(V) by an array of boolean<br/>\n\t * @name setByBooleanArray\n\t * @memberOf KJUR.asn1.DERBitString#\n\t * @function\n\t * @param {array} booleanArray array of boolean (ex. [true, false, true])\n\t * @description\n\t * NOTE: Trailing falses will be ignored in the ASN.1 DER Object.\n\t * @example\n\t * o = new KJUR.asn1.DERBitString();\n\t * o.setByBooleanArray([false, true, false, true, true]);\n\t */\n\tthis.setByBooleanArray = function (booleanArray) {\n\t\tvar s = ''\n\t\tfor (var i = 0; i < booleanArray.length; i++) {\n\t\t\tif (booleanArray[i] == true) {\n\t\t\t\ts += '1'\n\t\t\t} else {\n\t\t\t\ts += '0'\n\t\t\t}\n\t\t}\n\t\tthis.setByBinaryString(s)\n\t}\n\t/**\n\t * generate an array of falses with specified length<br/>\n\t * @name newFalseArray\n\t * @memberOf KJUR.asn1.DERBitString\n\t * @function\n\t * @param {Integer} nLength length of array to generate\n\t * @return {array} array of boolean falses\n\t * @description\n\t * This static method may be useful to initialize boolean array.\n\t * @example\n\t * o = new KJUR.asn1.DERBitString();\n\t * o.newFalseArray(3) &rarr; [false, false, false]\n\t */\n\tthis.newFalseArray = function (nLength) {\n\t\tvar a = new Array(nLength)\n\t\tfor (var i = 0; i < nLength; i++) {\n\t\t\ta[i] = false\n\t\t}\n\t\treturn a\n\t}\n\tthis.getFreshValueHex = function () {\n\t\treturn this.hV\n\t}\n\tif (typeof params != 'undefined') {\n\t\tif (typeof params == 'string' && params.toLowerCase().match(/^[0-9a-f]+$/)) {\n\t\t\tthis.setHexValueIncludingUnusedBits(params)\n\t\t} else if (typeof params['hex'] != 'undefined') {\n\t\t\tthis.setHexValueIncludingUnusedBits(params['hex'])\n\t\t} else if (typeof params['bin'] != 'undefined') {\n\t\t\tthis.setByBinaryString(params['bin'])\n\t\t} else if (typeof params['array'] != 'undefined') {\n\t\t\tthis.setByBooleanArray(params['array'])\n\t\t}\n\t}\n}\nYAHOO.lang.extend(KJUR.asn1.DERBitString, KJUR.asn1.ASN1Object)\n// ********************************************************************\n/**\n * class for ASN.1 DER OctetString<br/>\n * @name KJUR.asn1.DEROctetString\n * @class class for ASN.1 DER OctetString\n * @param {Array} params associative array of parameters (ex. {'str': 'aaa'})\n * @extends KJUR.asn1.DERAbstractString\n * @description\n * This class provides ASN.1 OctetString simple type.<br/>\n * Supported \"params\" attributes are:\n * <ul>\n * <li>str - to set a string as a value</li>\n * <li>hex - to set a hexadecimal string as a value</li>\n * <li>obj - to set a encapsulated ASN.1 value by JSON object\n * which is defined in {@link KJUR.asn1.ASN1Util.newObject}</li>\n * </ul>\n * NOTE: A parameter 'obj' have been supported\n * for \"OCTET STRING, encapsulates\" structure.\n * since asn1 1.0.11, jsrsasign 6.1.1 (2016-Sep-25).\n * @see KJUR.asn1.DERAbstractString - superclass\n * @example\n * // default constructor\n * o = new KJUR.asn1.DEROctetString();\n * // initialize with string\n * o = new KJUR.asn1.DEROctetString({str: \"aaa\"});\n * // initialize with hexadecimal string\n * o = new KJUR.asn1.DEROctetString({hex: \"616161\"});\n * // initialize with ASN1Util.newObject argument\n * o = new KJUR.asn1.DEROctetString({obj: {seq: [{int: 3}, {prnstr: 'aaa'}]}});\n * // above generates a ASN.1 data like this:\n * // OCTET STRING, encapsulates {\n * //   SEQUENCE {\n * //     INTEGER 3\n * //     PrintableString 'aaa'\n * //     }\n * //   }\n */\nKJUR.asn1.DEROctetString = function (params) {\n\tif (params !== undefined && typeof params.obj !== 'undefined') {\n\t\tvar o = KJUR.asn1.ASN1Util.newObject(params.obj)\n\t\tparams.hex = o.getEncodedHex()\n\t}\n\tKJUR.asn1.DEROctetString.superclass.constructor.call(this, params)\n\tthis.hT = '04'\n}\nYAHOO.lang.extend(KJUR.asn1.DEROctetString, KJUR.asn1.DERAbstractString)\n// ********************************************************************\n/**\n * class for ASN.1 DER Null\n * @name KJUR.asn1.DERNull\n * @class class for ASN.1 DER Null\n * @extends KJUR.asn1.ASN1Object\n * @description\n * @see KJUR.asn1.ASN1Object - superclass\n */\nKJUR.asn1.DERNull = function () {\n\tKJUR.asn1.DERNull.superclass.constructor.call(this)\n\tthis.hT = '05'\n\tthis.hTLV = '0500'\n}\nYAHOO.lang.extend(KJUR.asn1.DERNull, KJUR.asn1.ASN1Object)\n// ********************************************************************\n/**\n * class for ASN.1 DER ObjectIdentifier\n * @name KJUR.asn1.DERObjectIdentifier\n * @class class for ASN.1 DER ObjectIdentifier\n * @param {Array} params associative array of parameters (ex. {'oid': '2.5.4.5'})\n * @extends KJUR.asn1.ASN1Object\n * @description\n * <br/>\n * As for argument 'params' for constructor, you can specify one of\n * following properties:\n * <ul>\n * <li>oid - specify initial ASN.1 value(V) by a oid string (ex. 2.5.4.13)</li>\n * <li>hex - specify initial ASN.1 value(V) by a hexadecimal string</li>\n * </ul>\n * NOTE: 'params' can be omitted.\n */\nKJUR.asn1.DERObjectIdentifier = function (params) {\n\tvar itox = function (i) {\n\t\tvar h = i.toString(16)\n\t\tif (h.length == 1) h = '0' + h\n\t\treturn h\n\t}\n\tvar roidtox = function (roid) {\n\t\tvar h = ''\n\t\tvar bi = new BigInteger(roid, 10)\n\t\tvar b = bi.toString(2)\n\t\tvar padLen = 7 - (b.length % 7)\n\t\tif (padLen == 7) padLen = 0\n\t\tvar bPad = ''\n\t\tfor (var i = 0; i < padLen; i++) bPad += '0'\n\t\tb = bPad + b\n\t\tfor (var i = 0; i < b.length - 1; i += 7) {\n\t\t\tvar b8 = b.substr(i, 7)\n\t\t\tif (i != b.length - 7) b8 = '1' + b8\n\t\t\th += itox(parseInt(b8, 2))\n\t\t}\n\t\treturn h\n\t}\n\tKJUR.asn1.DERObjectIdentifier.superclass.constructor.call(this)\n\tthis.hT = '06'\n\t/**\n\t * set value by a hexadecimal string\n\t * @name setValueHex\n\t * @memberOf KJUR.asn1.DERObjectIdentifier#\n\t * @function\n\t * @param {String} newHexString hexadecimal value of OID bytes\n\t */\n\tthis.setValueHex = function (newHexString) {\n\t\tthis.hTLV = null\n\t\tthis.isModified = true\n\t\tthis.s = null\n\t\tthis.hV = newHexString\n\t}\n\t/**\n\t * set value by a OID string<br/>\n\t * @name setValueOidString\n\t * @memberOf KJUR.asn1.DERObjectIdentifier#\n\t * @function\n\t * @param {String} oidString OID string (ex. 2.5.4.13)\n\t * @example\n\t * o = new KJUR.asn1.DERObjectIdentifier();\n\t * o.setValueOidString(\"2.5.4.13\");\n\t */\n\tthis.setValueOidString = function (oidString) {\n\t\tif (!oidString.match(/^[0-9.]+$/)) {\n\t\t\tthrow 'malformed oid string: ' + oidString\n\t\t}\n\t\tvar h = ''\n\t\tvar a = oidString.split('.')\n\t\tvar i0 = parseInt(a[0]) * 40 + parseInt(a[1])\n\t\th += itox(i0)\n\t\ta.splice(0, 2)\n\t\tfor (var i = 0; i < a.length; i++) {\n\t\t\th += roidtox(a[i])\n\t\t}\n\t\tthis.hTLV = null\n\t\tthis.isModified = true\n\t\tthis.s = null\n\t\tthis.hV = h\n\t}\n\t/**\n\t * set value by a OID name\n\t * @name setValueName\n\t * @memberOf KJUR.asn1.DERObjectIdentifier#\n\t * @function\n\t * @param {String} oidName OID name (ex. 'serverAuth')\n\t * @since 1.0.1\n\t * @description\n\t * OID name shall be defined in 'KJUR.asn1.x509.OID.name2oidList'.\n\t * Otherwise raise error.\n\t * @example\n\t * o = new KJUR.asn1.DERObjectIdentifier();\n\t * o.setValueName(\"serverAuth\");\n\t */\n\tthis.setValueName = function (oidName) {\n\t\tvar oid = KJUR.asn1.x509.OID.name2oid(oidName)\n\t\tif (oid !== '') {\n\t\t\tthis.setValueOidString(oid)\n\t\t} else {\n\t\t\tthrow 'DERObjectIdentifier oidName undefined: ' + oidName\n\t\t}\n\t}\n\tthis.getFreshValueHex = function () {\n\t\treturn this.hV\n\t}\n\tif (params !== undefined) {\n\t\tif (typeof params === 'string') {\n\t\t\tif (params.match(/^[0-2].[0-9.]+$/)) {\n\t\t\t\tthis.setValueOidString(params)\n\t\t\t} else {\n\t\t\t\tthis.setValueName(params)\n\t\t\t}\n\t\t} else if (params.oid !== undefined) {\n\t\t\tthis.setValueOidString(params.oid)\n\t\t} else if (params.hex !== undefined) {\n\t\t\tthis.setValueHex(params.hex)\n\t\t} else if (params.name !== undefined) {\n\t\t\tthis.setValueName(params.name)\n\t\t}\n\t}\n}\nYAHOO.lang.extend(KJUR.asn1.DERObjectIdentifier, KJUR.asn1.ASN1Object)\n// ********************************************************************\n/**\n * class for ASN.1 DER Enumerated\n * @name KJUR.asn1.DEREnumerated\n * @class class for ASN.1 DER Enumerated\n * @extends KJUR.asn1.ASN1Object\n * @description\n * <br/>\n * As for argument 'params' for constructor, you can specify one of\n * following properties:\n * <ul>\n * <li>int - specify initial ASN.1 value(V) by integer value</li>\n * <li>hex - specify initial ASN.1 value(V) by a hexadecimal string</li>\n * </ul>\n * NOTE: 'params' can be omitted.\n * @example\n * new KJUR.asn1.DEREnumerated(123);\n * new KJUR.asn1.DEREnumerated({int: 123});\n * new KJUR.asn1.DEREnumerated({hex: '1fad'});\n */\nKJUR.asn1.DEREnumerated = function (params) {\n\tKJUR.asn1.DEREnumerated.superclass.constructor.call(this)\n\tthis.hT = '0a'\n\t/**\n\t * set value by Tom Wu's BigInteger object\n\t * @name setByBigInteger\n\t * @memberOf KJUR.asn1.DEREnumerated#\n\t * @function\n\t * @param {BigInteger} bigIntegerValue to set\n\t */\n\tthis.setByBigInteger = function (bigIntegerValue) {\n\t\tthis.hTLV = null\n\t\tthis.isModified = true\n\t\tthis.hV = KJUR.asn1.ASN1Util.bigIntToMinTwosComplementsHex(bigIntegerValue)\n\t}\n\t/**\n\t * set value by integer value\n\t * @name setByInteger\n\t * @memberOf KJUR.asn1.DEREnumerated#\n\t * @function\n\t * @param {Integer} integer value to set\n\t */\n\tthis.setByInteger = function (intValue) {\n\t\tvar bi = new BigInteger(String(intValue), 10)\n\t\tthis.setByBigInteger(bi)\n\t}\n\t/**\n\t * set value by integer value\n\t * @name setValueHex\n\t * @memberOf KJUR.asn1.DEREnumerated#\n\t * @function\n\t * @param {String} hexadecimal string of integer value\n\t * @description\n\t * <br/>\n\t * NOTE: Value shall be represented by minimum octet length of\n\t * two's complement representation.\n\t */\n\tthis.setValueHex = function (newHexString) {\n\t\tthis.hV = newHexString\n\t}\n\tthis.getFreshValueHex = function () {\n\t\treturn this.hV\n\t}\n\tif (typeof params != 'undefined') {\n\t\tif (typeof params['int'] != 'undefined') {\n\t\t\tthis.setByInteger(params['int'])\n\t\t} else if (typeof params == 'number') {\n\t\t\tthis.setByInteger(params)\n\t\t} else if (typeof params['hex'] != 'undefined') {\n\t\t\tthis.setValueHex(params['hex'])\n\t\t}\n\t}\n}\nYAHOO.lang.extend(KJUR.asn1.DEREnumerated, KJUR.asn1.ASN1Object)\n// ********************************************************************\n/**\n * class for ASN.1 DER UTF8String\n * @name KJUR.asn1.DERUTF8String\n * @class class for ASN.1 DER UTF8String\n * @param {Array} params associative array of parameters (ex. {'str': 'aaa'})\n * @extends KJUR.asn1.DERAbstractString\n * @description\n * @see KJUR.asn1.DERAbstractString - superclass\n */\nKJUR.asn1.DERUTF8String = function (params) {\n\tKJUR.asn1.DERUTF8String.superclass.constructor.call(this, params)\n\tthis.hT = '0c'\n}\nYAHOO.lang.extend(KJUR.asn1.DERUTF8String, KJUR.asn1.DERAbstractString)\n// ********************************************************************\n/**\n * class for ASN.1 DER NumericString\n * @name KJUR.asn1.DERNumericString\n * @class class for ASN.1 DER NumericString\n * @param {Array} params associative array of parameters (ex. {'str': 'aaa'})\n * @extends KJUR.asn1.DERAbstractString\n * @description\n * @see KJUR.asn1.DERAbstractString - superclass\n */\nKJUR.asn1.DERNumericString = function (params) {\n\tKJUR.asn1.DERNumericString.superclass.constructor.call(this, params)\n\tthis.hT = '12'\n}\nYAHOO.lang.extend(KJUR.asn1.DERNumericString, KJUR.asn1.DERAbstractString)\n// ********************************************************************\n/**\n * class for ASN.1 DER PrintableString\n * @name KJUR.asn1.DERPrintableString\n * @class class for ASN.1 DER PrintableString\n * @param {Array} params associative array of parameters (ex. {'str': 'aaa'})\n * @extends KJUR.asn1.DERAbstractString\n * @description\n * @see KJUR.asn1.DERAbstractString - superclass\n */\nKJUR.asn1.DERPrintableString = function (params) {\n\tKJUR.asn1.DERPrintableString.superclass.constructor.call(this, params)\n\tthis.hT = '13'\n}\nYAHOO.lang.extend(KJUR.asn1.DERPrintableString, KJUR.asn1.DERAbstractString)\n// ********************************************************************\n/**\n * class for ASN.1 DER TeletexString\n * @name KJUR.asn1.DERTeletexString\n * @class class for ASN.1 DER TeletexString\n * @param {Array} params associative array of parameters (ex. {'str': 'aaa'})\n * @extends KJUR.asn1.DERAbstractString\n * @description\n * @see KJUR.asn1.DERAbstractString - superclass\n */\nKJUR.asn1.DERTeletexString = function (params) {\n\tKJUR.asn1.DERTeletexString.superclass.constructor.call(this, params)\n\tthis.hT = '14'\n}\nYAHOO.lang.extend(KJUR.asn1.DERTeletexString, KJUR.asn1.DERAbstractString)\n// ********************************************************************\n/**\n * class for ASN.1 DER IA5String\n * @name KJUR.asn1.DERIA5String\n * @class class for ASN.1 DER IA5String\n * @param {Array} params associative array of parameters (ex. {'str': 'aaa'})\n * @extends KJUR.asn1.DERAbstractString\n * @description\n * @see KJUR.asn1.DERAbstractString - superclass\n */\nKJUR.asn1.DERIA5String = function (params) {\n\tKJUR.asn1.DERIA5String.superclass.constructor.call(this, params)\n\tthis.hT = '16'\n}\nYAHOO.lang.extend(KJUR.asn1.DERIA5String, KJUR.asn1.DERAbstractString)\n// ********************************************************************\n/**\n * class for ASN.1 DER UTCTime\n * @name KJUR.asn1.DERUTCTime\n * @class class for ASN.1 DER UTCTime\n * @param {Array} params associative array of parameters (ex. {'str': '130430235959Z'})\n * @extends KJUR.asn1.DERAbstractTime\n * @description\n * <br/>\n * As for argument 'params' for constructor, you can specify one of\n * following properties:\n * <ul>\n * <li>str - specify initial ASN.1 value(V) by a string (ex.'130430235959Z')</li>\n * <li>hex - specify initial ASN.1 value(V) by a hexadecimal string</li>\n * <li>date - specify Date object.</li>\n * </ul>\n * NOTE: 'params' can be omitted.\n * <h4>EXAMPLES</h4>\n * @example\n * d1 = new KJUR.asn1.DERUTCTime();\n * d1.setString('130430125959Z');\n *\n * d2 = new KJUR.asn1.DERUTCTime({'str': '130430125959Z'});\n * d3 = new KJUR.asn1.DERUTCTime({'date': new Date(Date.UTC(2015, 0, 31, 0, 0, 0, 0))});\n * d4 = new KJUR.asn1.DERUTCTime('130430125959Z');\n */\nKJUR.asn1.DERUTCTime = function (params) {\n\tKJUR.asn1.DERUTCTime.superclass.constructor.call(this, params)\n\tthis.hT = '17'\n\t/**\n\t * set value by a Date object<br/>\n\t * @name setByDate\n\t * @memberOf KJUR.asn1.DERUTCTime#\n\t * @function\n\t * @param {Date} dateObject Date object to set ASN.1 value(V)\n\t * @example\n\t * o = new KJUR.asn1.DERUTCTime();\n\t * o.setByDate(new Date(\"2016/12/31\"));\n\t */\n\tthis.setByDate = function (dateObject) {\n\t\tthis.hTLV = null\n\t\tthis.isModified = true\n\t\tthis.date = dateObject\n\t\tthis.s = this.formatDate(this.date, 'utc')\n\t\tthis.hV = stohex(this.s)\n\t}\n\tthis.getFreshValueHex = function () {\n\t\tif (typeof this.date == 'undefined' && typeof this.s == 'undefined') {\n\t\t\tthis.date = new Date()\n\t\t\tthis.s = this.formatDate(this.date, 'utc')\n\t\t\tthis.hV = stohex(this.s)\n\t\t}\n\t\treturn this.hV\n\t}\n\tif (params !== undefined) {\n\t\tif (params.str !== undefined) {\n\t\t\tthis.setString(params.str)\n\t\t} else if (typeof params == 'string' && params.match(/^[0-9]{12}Z$/)) {\n\t\t\tthis.setString(params)\n\t\t} else if (params.hex !== undefined) {\n\t\t\tthis.setStringHex(params.hex)\n\t\t} else if (params.date !== undefined) {\n\t\t\tthis.setByDate(params.date)\n\t\t}\n\t}\n}\nYAHOO.lang.extend(KJUR.asn1.DERUTCTime, KJUR.asn1.DERAbstractTime)\n// ********************************************************************\n/**\n * class for ASN.1 DER GeneralizedTime\n * @name KJUR.asn1.DERGeneralizedTime\n * @class class for ASN.1 DER GeneralizedTime\n * @param {Array} params associative array of parameters (ex. {'str': '20130430235959Z'})\n * @property {Boolean} withMillis flag to show milliseconds or not\n * @extends KJUR.asn1.DERAbstractTime\n * @description\n * <br/>\n * As for argument 'params' for constructor, you can specify one of\n * following properties:\n * <ul>\n * <li>str - specify initial ASN.1 value(V) by a string (ex.'20130430235959Z')</li>\n * <li>hex - specify initial ASN.1 value(V) by a hexadecimal string</li>\n * <li>date - specify Date object.</li>\n * <li>millis - specify flag to show milliseconds (from 1.0.6)</li>\n * </ul>\n * NOTE1: 'params' can be omitted.\n * NOTE2: 'withMillis' property is supported from asn1 1.0.6.\n */\nKJUR.asn1.DERGeneralizedTime = function (params) {\n\tKJUR.asn1.DERGeneralizedTime.superclass.constructor.call(this, params)\n\tthis.hT = '18'\n\tthis.withMillis = false\n\t/**\n\t * set value by a Date object\n\t * @name setByDate\n\t * @memberOf KJUR.asn1.DERGeneralizedTime#\n\t * @function\n\t * @param {Date} dateObject Date object to set ASN.1 value(V)\n\t * @example\n\t * When you specify UTC time, use 'Date.UTC' method like this:<br/>\n\t * o1 = new DERUTCTime();\n\t * o1.setByDate(date);\n\t *\n\t * date = new Date(Date.UTC(2015, 0, 31, 23, 59, 59, 0)); #2015JAN31 23:59:59\n\t */\n\tthis.setByDate = function (dateObject) {\n\t\tthis.hTLV = null\n\t\tthis.isModified = true\n\t\tthis.date = dateObject\n\t\tthis.s = this.formatDate(this.date, 'gen', this.withMillis)\n\t\tthis.hV = stohex(this.s)\n\t}\n\tthis.getFreshValueHex = function () {\n\t\tif (this.date === undefined && this.s === undefined) {\n\t\t\tthis.date = new Date()\n\t\t\tthis.s = this.formatDate(this.date, 'gen', this.withMillis)\n\t\t\tthis.hV = stohex(this.s)\n\t\t}\n\t\treturn this.hV\n\t}\n\tif (params !== undefined) {\n\t\tif (params.str !== undefined) {\n\t\t\tthis.setString(params.str)\n\t\t} else if (typeof params == 'string' && params.match(/^[0-9]{14}Z$/)) {\n\t\t\tthis.setString(params)\n\t\t} else if (params.hex !== undefined) {\n\t\t\tthis.setStringHex(params.hex)\n\t\t} else if (params.date !== undefined) {\n\t\t\tthis.setByDate(params.date)\n\t\t}\n\t\tif (params.millis === true) {\n\t\t\tthis.withMillis = true\n\t\t}\n\t}\n}\nYAHOO.lang.extend(KJUR.asn1.DERGeneralizedTime, KJUR.asn1.DERAbstractTime)\n// ********************************************************************\n/**\n * class for ASN.1 DER Sequence\n * @name KJUR.asn1.DERSequence\n * @class class for ASN.1 DER Sequence\n * @extends KJUR.asn1.DERAbstractStructured\n * @description\n * <br/>\n * As for argument 'params' for constructor, you can specify one of\n * following properties:\n * <ul>\n * <li>array - specify array of ASN1Object to set elements of content</li>\n * </ul>\n * NOTE: 'params' can be omitted.\n */\nKJUR.asn1.DERSequence = function (params) {\n\tKJUR.asn1.DERSequence.superclass.constructor.call(this, params)\n\tthis.hT = '30'\n\tthis.getFreshValueHex = function () {\n\t\tvar h = ''\n\t\tfor (var i = 0; i < this.asn1Array.length; i++) {\n\t\t\tvar asn1Obj = this.asn1Array[i]\n\t\t\th += asn1Obj.getEncodedHex()\n\t\t}\n\t\tthis.hV = h\n\t\treturn this.hV\n\t}\n}\nYAHOO.lang.extend(KJUR.asn1.DERSequence, KJUR.asn1.DERAbstractStructured)\n// ********************************************************************\n/**\n * class for ASN.1 DER Set\n * @name KJUR.asn1.DERSet\n * @class class for ASN.1 DER Set\n * @extends KJUR.asn1.DERAbstractStructured\n * @description\n * <br/>\n * As for argument 'params' for constructor, you can specify one of\n * following properties:\n * <ul>\n * <li>array - specify array of ASN1Object to set elements of content</li>\n * <li>sortflag - flag for sort (default: true). ASN.1 BER is not sorted in 'SET OF'.</li>\n * </ul>\n * NOTE1: 'params' can be omitted.<br/>\n * NOTE2: sortflag is supported since 1.0.5.\n */\nKJUR.asn1.DERSet = function (params) {\n\tKJUR.asn1.DERSet.superclass.constructor.call(this, params)\n\tthis.hT = '31'\n\tthis.sortFlag = true // item shall be sorted only in ASN.1 DER\n\tthis.getFreshValueHex = function () {\n\t\tvar a = new Array()\n\t\tfor (var i = 0; i < this.asn1Array.length; i++) {\n\t\t\tvar asn1Obj = this.asn1Array[i]\n\t\t\ta.push(asn1Obj.getEncodedHex())\n\t\t}\n\t\tif (this.sortFlag == true) a.sort()\n\t\tthis.hV = a.join('')\n\t\treturn this.hV\n\t}\n\tif (typeof params != 'undefined') {\n\t\tif (typeof params.sortflag != 'undefined' && params.sortflag == false) this.sortFlag = false\n\t}\n}\nYAHOO.lang.extend(KJUR.asn1.DERSet, KJUR.asn1.DERAbstractStructured)\n// ********************************************************************\n/**\n * class for ASN.1 DER TaggedObject\n * @name KJUR.asn1.DERTaggedObject\n * @class class for ASN.1 DER TaggedObject\n * @extends KJUR.asn1.ASN1Object\n * @description\n * <br/>\n * Parameter 'tagNoNex' is ASN.1 tag(T) value for this object.\n * For example, if you find '[1]' tag in a ASN.1 dump,\n * 'tagNoHex' will be 'a1'.\n * <br/>\n * As for optional argument 'params' for constructor, you can specify *ANY* of\n * following properties:\n * <ul>\n * <li>explicit - specify true if this is explicit tag otherwise false\n *     (default is 'true').</li>\n * <li>tag - specify tag (default is 'a0' which means [0])</li>\n * <li>obj - specify ASN1Object which is tagged</li>\n * </ul>\n * @example\n * d1 = new KJUR.asn1.DERUTF8String({'str':'a'});\n * d2 = new KJUR.asn1.DERTaggedObject({'obj': d1});\n * hex = d2.getEncodedHex();\n */\nKJUR.asn1.DERTaggedObject = function (params) {\n\tKJUR.asn1.DERTaggedObject.superclass.constructor.call(this)\n\tthis.hT = 'a0'\n\tthis.hV = ''\n\tthis.isExplicit = true\n\tthis.asn1Object = null\n\t/**\n\t * set value by an ASN1Object\n\t * @name setString\n\t * @memberOf KJUR.asn1.DERTaggedObject#\n\t * @function\n\t * @param {Boolean} isExplicitFlag flag for explicit/implicit tag\n\t * @param {Integer} tagNoHex hexadecimal string of ASN.1 tag\n\t * @param {ASN1Object} asn1Object ASN.1 to encapsulate\n\t */\n\tthis.setASN1Object = function (isExplicitFlag, tagNoHex, asn1Object) {\n\t\tthis.hT = tagNoHex\n\t\tthis.isExplicit = isExplicitFlag\n\t\tthis.asn1Object = asn1Object\n\t\tif (this.isExplicit) {\n\t\t\tthis.hV = this.asn1Object.getEncodedHex()\n\t\t\tthis.hTLV = null\n\t\t\tthis.isModified = true\n\t\t} else {\n\t\t\tthis.hV = null\n\t\t\tthis.hTLV = asn1Object.getEncodedHex()\n\t\t\tthis.hTLV = this.hTLV.replace(/^../, tagNoHex)\n\t\t\tthis.isModified = false\n\t\t}\n\t}\n\tthis.getFreshValueHex = function () {\n\t\treturn this.hV\n\t}\n\tif (typeof params != 'undefined') {\n\t\tif (typeof params['tag'] != 'undefined') {\n\t\t\tthis.hT = params['tag']\n\t\t}\n\t\tif (typeof params['explicit'] != 'undefined') {\n\t\t\tthis.isExplicit = params['explicit']\n\t\t}\n\t\tif (typeof params['obj'] != 'undefined') {\n\t\t\tthis.asn1Object = params['obj']\n\t\t\tthis.setASN1Object(this.isExplicit, this.hT, this.asn1Object)\n\t\t}\n\t}\n}\nYAHOO.lang.extend(KJUR.asn1.DERTaggedObject, KJUR.asn1.ASN1Object)\n"],"names":["i","h","s"],"mappings":"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"}