From 52d2b5528d1174d0ee7ad591cb853d37874e98dd Mon Sep 17 00:00:00 2001 From: Kenji Urushima Date: Thu, 14 Apr 2022 21:02:59 +0900 Subject: [PATCH] 10.5.17 release --- ChangeLog.txt | 12 + api/files.html | 4 +- api/symbols/global__.html | 32 +- api/symbols/src/asn1x509-1.0.js.html | 1298 ++++++++++---------- api/symbols/src/base64x-1.1.js.html | 1623 ++++++++++++++------------ bower.json | 2 +- jsrsasign-all-min.js | 6 +- jsrsasign-jwths-min.js | 4 +- jsrsasign-rsa-min.js | 4 +- min/asn1x509-1.0.min.js | 2 +- min/base64x-1.1.min.js | 2 +- npm/lib/jsrsasign-all-min.js | 6 +- npm/lib/jsrsasign-jwths-min.js | 4 +- npm/lib/jsrsasign-rsa-min.js | 4 +- npm/lib/jsrsasign.js | 6 +- npm/package.json | 2 +- src/asn1x509-1.0.js | 34 +- src/base64x-1.1.js | 157 ++- test/qunit-do-asn1x509-tbscert.html | 2 +- test/qunit-do-asn1x509.html | 121 +- test/qunit-do-base64x.html | 30 +- test/qunit-do-x509-ext.html | 32 +- 22 files changed, 1812 insertions(+), 1575 deletions(-) diff --git a/ChangeLog.txt b/ChangeLog.txt index 8eb8458a..afbe30bb 100755 --- a/ChangeLog.txt +++ b/ChangeLog.txt @@ -1,6 +1,18 @@ ChangeLog for jsrsasign +CIDR subnet mask support in iptohex and hextoip +* Changes from 10.5.16 to 10.5.17 (2022-Apr-14) + - src/asn1x509.js + - add IP address support in NameConstraints class + - bugfix in NameConstraints ip address + - wrong ASN.1 encoder in NameConstraints class bug fix (wrong explicit tag) + - src/base64x.js + - add CIDR subnet mask support in iptohex and hextoip + - iptohex, hextoip refactoring + - test/qunit-do-{x509-ext,base64x,asn1x509-tbscert,asn1x509}.html + - add some test cases and fix for above + Add NameConstraints extension and modify getEncodedHex to tohex * Changes from 10.5.15 to 10.5.16 (2022-Apr-08) - src/asn1x509.js diff --git a/api/files.html b/api/files.html index 7ac80af5..ed097d34 100644 --- a/api/files.html +++ b/api/files.html @@ -662,7 +662,7 @@

asn1x509-1.0.js

Version:
-
jsrsasign 10.5.16 asn1x509 2.1.13 (2022-Apr-08)
+
jsrsasign 10.5.17 asn1x509 2.1.14 (2022-Apr-14)
@@ -681,7 +681,7 @@

base64x-1.1.js

Version:
-
jsrsasign 10.5.12 base64x 1.1.25 (2022-Mar-13)
+
jsrsasign 10.5.17 base64x 1.1.26 (2022-Apr-14)
diff --git a/api/symbols/global__.html b/api/symbols/global__.html index 1b313663..d6fe0388 100644 --- a/api/symbols/global__.html +++ b/api/symbols/global__.html @@ -2411,6 +2411,8 @@

IPv6 address to IPv4 or IPv6 address string. If byte length is not 4 nor 16, this returns a hexadecimal string without conversion. +
+NOTE: From jsrsasign 10.5.17, CIDR subnet mask notation also supported.
Defined in: base64x-1.1.js. @@ -2420,10 +2422,11 @@

-
hextoip("c0a80101") &rarr "192.168.1.1"
+					
hextoip("c0a80101") → "192.168.1.1"
 hextoip("871020010db8000000000000000000000004") &rarr "2001:db8::4"
-hextoip("c0a801010203") &rarr "c0a801010203" // 6 bytes
-hextoip("zzz")) &rarr raise exception because of not hexadecimal
+hextoip("c0a80100ffffff00") → "192.168.1.0/24" +hextoip("c0a801010203") → "c0a801010203" // wrong 6 bytes +hextoip("zzz")) → raise exception because of not hexadecimal
@@ -2461,7 +2464,9 @@

See:
-
+
hextoipv6
+ +
iptohex
@@ -3054,6 +3059,8 @@

convert IPv4/v6 addresss to a hexadecimal string
This function converts IPv4 or IPv6 address string to a hexadecimal string of IPv4 or IPv6 address. +
+NOTE: From jsrsasign 10.5.17, CIDR net mask notation also supported.
Defined in: base64x-1.1.js. @@ -3063,9 +3070,11 @@

-
iptohex("192.168.1.1") &rarr "c0a80101"
-iptohex("2001:db8::4") &rarr "871020010db8000000000000000000000004"
-iptohex("zzz")) &rarr raise exception
+
iptohex("192.168.1.1") → "c0a80101"
+iptohex("2001:db8::4") → "871020010db8000000000000000000000004"
+iptohex("192.168.1.1/24") → "c0a80101ffffff00"
+iptohex("2001:db8::/120") → "871020010db8000000000000000000000000ffffffffffffffffffffffffffffffffff00"
+iptohex("zzz")) → raise exception
@@ -3100,6 +3109,15 @@

+
+
See:
+ +
hextoip
+ +
ipv6tohex
+ +
+
diff --git a/api/symbols/src/asn1x509-1.0.js.html b/api/symbols/src/asn1x509-1.0.js.html index 45a58ef4..baf90b26 100644 --- a/api/symbols/src/asn1x509-1.0.js.html +++ b/api/symbols/src/asn1x509-1.0.js.html @@ -5,7 +5,7 @@ .STRN {color: #393;} .REGX {color: #339;} .line {border-right: 1px dotted #666; color: #666; font-style: normal;} -
  1 /* asn1x509-2.1.13.js (c) 2013-2022 Kenji Urushima | kjur.github.io/jsrsasign/license
+	
  1 /* asn1x509-2.1.14.js (c) 2013-2022 Kenji Urushima | kjur.github.io/jsrsasign/license
   2  */
   3 /*
   4  * asn1x509.js - ASN.1 DER encoder classes for X.509 certificate
@@ -23,7 +23,7 @@
  16  * @fileOverview
  17  * @name asn1x509-1.0.js
  18  * @author Kenji Urushima kenji.urushima@gmail.com
- 19  * @version jsrsasign 10.5.16 asn1x509 2.1.13 (2022-Apr-08)
+ 19  * @version jsrsasign 10.5.17 asn1x509 2.1.14 (2022-Apr-14)
  20  * @since jsrsasign 2.1
  21  * @license <a href="https://kjur.github.io/jsrsasign/license/">MIT License</a>
  22  */
@@ -1380,7 +1380,7 @@
 1373 	    for (var i = 0; i < params.permit.length; i++) {
 1374 		aPermit.push(new _GeneralSubtree(params.permit[i]));
 1375 	    }
-1376 	    aItem.push({tag: {tage: "a0", obj: {seq: aPermit}}});
+1376 	    aItem.push({tag: {tagi: "a0", obj: {seq: aPermit}}});
 1377 	}
 1378 
 1379 	if (params.exclude != undefined &&
@@ -1389,7 +1389,7 @@
 1382 	    for (var i = 0; i < params.exclude.length; i++) {
 1383 		aExclude.push(new _GeneralSubtree(params.exclude[i]));
 1384 	    }
-1385 	    aItem.push({tag: {tage: "a1", obj: {seq: aExclude}}});
+1385 	    aItem.push({tag: {tagi: "a1", obj: {seq: aExclude}}});
 1386 	}
 1387 
 1388 	this.asn1ExtnValue = _newObject({seq: aItem});
@@ -4098,652 +4098,654 @@
 4091 	    dObj = new _DERIA5String({str: params.uri});
 4092 	} else if (params.ip !== undefined) {
 4093 	    hTag = "87";
-4094 	    var ip = params.ip;
-4095 	    var hIP;
-4096 	    var errmsg = "malformed IP address";
-4097 	    if (ip.match(/^[0-9.]+[.][0-9.]+$/)) { // ipv4
-4098 		hIP = intarystrtohex("[" + ip.split(".").join(",") + "]");
-4099 		if (hIP.length !== 8)
-4100 		    throw new _Error(errmsg);
-4101 	    } else if (ip.match(/^[0-9A-Fa-f:]+:[0-9A-Fa-f:]+$/)) { // ipv6
-4102 		hIP = ipv6tohex(ip);
-4103 	    } else if (ip.match(/^([0-9A-Fa-f][0-9A-Fa-f]){1,}$/)) { // hex
-4104 		hIP = ip;
-4105 	    } else {
-4106 		throw new _Error(errmsg);
-4107 	    }
-4108 	    dObj = new _DEROctetString({hex: hIP});
-4109 	} else {
-4110 	    throw new _Error("improper params");
-4111 	}
-4112 
-4113 	var dTag = new _DERTaggedObject({tag: hTag,
-4114 					 explicit: explicitFlag,
-4115 					 obj: dObj});
-4116 	return dTag.tohex();
-4117     };
-4118     this.getEncodedHex = function() { return this.tohex(); };
-4119 
-4120     if (params !== undefined) this.setByParam(params);
-4121 };
-4122 extendClass(KJUR.asn1.x509.GeneralName, KJUR.asn1.ASN1Object);
-4123 
-4124 /**
-4125  * GeneralNames ASN.1 structure class<br/>
-4126  * @name KJUR.asn1.x509.GeneralNames
-4127  * @class GeneralNames ASN.1 structure class
-4128  * @description
-4129  * <br/>
-4130  * <h4>EXAMPLE AND ASN.1 SYNTAX</h4>
-4131  * @example
-4132  * gns = new KJUR.asn1.x509.GeneralNames([{'uri': 'http://aaa.com/'}, {'uri': 'http://bbb.com/'}]);
-4133  *
-4134  * GeneralNames ::= SEQUENCE SIZE (1..MAX) OF GeneralName
-4135  */
-4136 KJUR.asn1.x509.GeneralNames = function(paramsArray) {
-4137     KJUR.asn1.x509.GeneralNames.superclass.constructor.call(this);
-4138     var asn1Array = null,
-4139 	_KJUR = KJUR,
-4140 	_KJUR_asn1 = _KJUR.asn1;
-4141 
-4142     /**
-4143      * set a array of {@link KJUR.asn1.x509.GeneralName} parameters<br/>
-4144      * @name setByParamArray
-4145      * @memberOf KJUR.asn1.x509.GeneralNames#
-4146      * @function
-4147      * @param {Array} paramsArray Array of {@link KJUR.asn1.x509.GeneralNames}
-4148      * @description
-4149      * <br/>
-4150      * <h4>EXAMPLES</h4>
-4151      * @example
-4152      * gns = new KJUR.asn1.x509.GeneralNames();
-4153      * gns.setByParamArray([{uri: 'http://aaa.com/'}, {uri: 'http://bbb.com/'}]);
-4154      */
-4155     this.setByParamArray = function(paramsArray) {
-4156         for (var i = 0; i < paramsArray.length; i++) {
-4157             var o = new _KJUR_asn1.x509.GeneralName(paramsArray[i]);
-4158             this.asn1Array.push(o);
-4159         }
-4160     };
-4161 
-4162     this.tohex = function() {
-4163         var o = new _KJUR_asn1.DERSequence({'array': this.asn1Array});
-4164         return o.tohex();
-4165     };
-4166     this.getEncodedHex = function() { return this.tohex(); };
-4167 
-4168     this.asn1Array = new Array();
-4169     if (typeof paramsArray != "undefined") {
-4170         this.setByParamArray(paramsArray);
-4171     }
-4172 };
-4173 extendClass(KJUR.asn1.x509.GeneralNames, KJUR.asn1.ASN1Object);
-4174 
-4175 /**
-4176  * OtherName of GeneralName ASN.1 structure class<br/>
-4177  * @name KJUR.asn1.x509.OtherName
-4178  * @class OtherName ASN.1 structure class
-4179  * @since jsrsasign 10.5.3 asn1x509 2.1.12
-4180  * @see KJUR.asn1.x509.GeneralName
-4181  * @see KJUR.asn1.ASN1Util.newObject
-4182  *
-4183  * @description
-4184  * This class is for OtherName of GeneralName ASN.1 structure.
-4185  * Constructor has two members:
-4186  * <ul>
-4187  * <li>oid - oid string (ex. "1.2.3.4")</li>
-4188  * <li>value - associative array passed to ASN1Util.newObject</li>
-4189  * </ul>
-4190  *
-4191  * <pre>
-4192  * OtherName ::= SEQUENCE {
-4193  *   type-id    OBJECT IDENTIFIER,
-4194  *   value      [0] EXPLICIT ANY DEFINED BY type-id }
-4195  * </pre>
-4196  *
-4197  * @example
-4198  * new KJUR.asn1.x509.OtherName({
-4199  *   oid: "1.2.3.4",
-4200  *   value: {prnstr: {str: "abc"}}
-4201  * })
-4202  */
-4203 KJUR.asn1.x509.OtherName = function(params) {
-4204     KJUR.asn1.x509.OtherName.superclass.constructor.call(this);
-4205 
-4206     var asn1Obj = null,
-4207 	type = null,
-4208 	_KJUR = KJUR,
-4209 	_KJUR_asn1 = _KJUR.asn1,
-4210 	_DERObjectIdentifier = _KJUR_asn1.DERObjectIdentifier,
-4211 	_DERSequence = _KJUR_asn1.DERSequence,
-4212 	_newObject = _KJUR_asn1.ASN1Util.newObject;
-4213 
-4214     this.params = null;
+4094 	    var hIP;
+4095 	    var ip = params.ip;
+4096 	    try {
+4097 		if (ip.match(/^[0-9a-f]+$/)) {
+4098 		    var len = ip.length;
+4099 		    if (len == 8 || len == 16 || len == 32 || len == 64) {
+4100 			hIP = ip;
+4101 		    } else {
+4102 			throw "err";
+4103 		    }
+4104 		} else {
+4105 		    hIP = iptohex(ip);
+4106 		}
+4107 	    } catch(ex) {
+4108 		throw new _Error("malformed IP address: " + params.ip + ":" + ex.message);
+4109 	    }
+4110 	    dObj = new _DEROctetString({hex: hIP});
+4111 	} else {
+4112 	    throw new _Error("improper params");
+4113 	}
+4114 
+4115 	var dTag = new _DERTaggedObject({tag: hTag,
+4116 					 explicit: explicitFlag,
+4117 					 obj: dObj});
+4118 	return dTag.tohex();
+4119     };
+4120     this.getEncodedHex = function() { return this.tohex(); };
+4121 
+4122     if (params !== undefined) this.setByParam(params);
+4123 };
+4124 extendClass(KJUR.asn1.x509.GeneralName, KJUR.asn1.ASN1Object);
+4125 
+4126 /**
+4127  * GeneralNames ASN.1 structure class<br/>
+4128  * @name KJUR.asn1.x509.GeneralNames
+4129  * @class GeneralNames ASN.1 structure class
+4130  * @description
+4131  * <br/>
+4132  * <h4>EXAMPLE AND ASN.1 SYNTAX</h4>
+4133  * @example
+4134  * gns = new KJUR.asn1.x509.GeneralNames([{'uri': 'http://aaa.com/'}, {'uri': 'http://bbb.com/'}]);
+4135  *
+4136  * GeneralNames ::= SEQUENCE SIZE (1..MAX) OF GeneralName
+4137  */
+4138 KJUR.asn1.x509.GeneralNames = function(paramsArray) {
+4139     KJUR.asn1.x509.GeneralNames.superclass.constructor.call(this);
+4140     var asn1Array = null,
+4141 	_KJUR = KJUR,
+4142 	_KJUR_asn1 = _KJUR.asn1;
+4143 
+4144     /**
+4145      * set a array of {@link KJUR.asn1.x509.GeneralName} parameters<br/>
+4146      * @name setByParamArray
+4147      * @memberOf KJUR.asn1.x509.GeneralNames#
+4148      * @function
+4149      * @param {Array} paramsArray Array of {@link KJUR.asn1.x509.GeneralNames}
+4150      * @description
+4151      * <br/>
+4152      * <h4>EXAMPLES</h4>
+4153      * @example
+4154      * gns = new KJUR.asn1.x509.GeneralNames();
+4155      * gns.setByParamArray([{uri: 'http://aaa.com/'}, {uri: 'http://bbb.com/'}]);
+4156      */
+4157     this.setByParamArray = function(paramsArray) {
+4158         for (var i = 0; i < paramsArray.length; i++) {
+4159             var o = new _KJUR_asn1.x509.GeneralName(paramsArray[i]);
+4160             this.asn1Array.push(o);
+4161         }
+4162     };
+4163 
+4164     this.tohex = function() {
+4165         var o = new _KJUR_asn1.DERSequence({'array': this.asn1Array});
+4166         return o.tohex();
+4167     };
+4168     this.getEncodedHex = function() { return this.tohex(); };
+4169 
+4170     this.asn1Array = new Array();
+4171     if (typeof paramsArray != "undefined") {
+4172         this.setByParamArray(paramsArray);
+4173     }
+4174 };
+4175 extendClass(KJUR.asn1.x509.GeneralNames, KJUR.asn1.ASN1Object);
+4176 
+4177 /**
+4178  * OtherName of GeneralName ASN.1 structure class<br/>
+4179  * @name KJUR.asn1.x509.OtherName
+4180  * @class OtherName ASN.1 structure class
+4181  * @since jsrsasign 10.5.3 asn1x509 2.1.12
+4182  * @see KJUR.asn1.x509.GeneralName
+4183  * @see KJUR.asn1.ASN1Util.newObject
+4184  *
+4185  * @description
+4186  * This class is for OtherName of GeneralName ASN.1 structure.
+4187  * Constructor has two members:
+4188  * <ul>
+4189  * <li>oid - oid string (ex. "1.2.3.4")</li>
+4190  * <li>value - associative array passed to ASN1Util.newObject</li>
+4191  * </ul>
+4192  *
+4193  * <pre>
+4194  * OtherName ::= SEQUENCE {
+4195  *   type-id    OBJECT IDENTIFIER,
+4196  *   value      [0] EXPLICIT ANY DEFINED BY type-id }
+4197  * </pre>
+4198  *
+4199  * @example
+4200  * new KJUR.asn1.x509.OtherName({
+4201  *   oid: "1.2.3.4",
+4202  *   value: {prnstr: {str: "abc"}}
+4203  * })
+4204  */
+4205 KJUR.asn1.x509.OtherName = function(params) {
+4206     KJUR.asn1.x509.OtherName.superclass.constructor.call(this);
+4207 
+4208     var asn1Obj = null,
+4209 	type = null,
+4210 	_KJUR = KJUR,
+4211 	_KJUR_asn1 = _KJUR.asn1,
+4212 	_DERObjectIdentifier = _KJUR_asn1.DERObjectIdentifier,
+4213 	_DERSequence = _KJUR_asn1.DERSequence,
+4214 	_newObject = _KJUR_asn1.ASN1Util.newObject;
 4215 
-4216     this.setByParam = function(params) {
-4217 	this.params = params;
-4218     };
-4219 
-4220     this.tohex = function() {
-4221 	var params = this.params;
-4222 
-4223 	if (params.oid == undefined || params.value == undefined)
-4224 	    throw new Error("oid or value not specified");
-4225 
-4226 	var dOid = new _DERObjectIdentifier({oid: params.oid});
-4227 	var dValue = _newObject({tag: {tag: "a0",
-4228 				       explicit: true,
-4229 				       obj: params.value}});
-4230 	var dSeq = new _DERSequence({array: [dOid, dValue]});
-4231 
-4232         return dSeq.tohex();
-4233     };
-4234     this.getEncodedHex = function() { return this.tohex(); };
-4235 
-4236     if (params !== undefined) this.setByParam(params);
-4237 };
-4238 extendClass(KJUR.asn1.x509.OtherName, KJUR.asn1.ASN1Object);
-4239 
-4240 /**
-4241  * static object for OID
-4242  * @name KJUR.asn1.x509.OID
-4243  * @class static object for OID
-4244  * @property {Assoc Array} atype2oidList for short attribute type name and oid (ex. 'C' and '2.5.4.6')
-4245  * @property {Assoc Array} name2oidList for oid name and oid (ex. 'keyUsage' and '2.5.29.15')
-4246  * @property {Assoc Array} objCache for caching name and DERObjectIdentifier object
-4247  *
-4248  * @description
-4249  * This class defines OID name and values.
-4250  * AttributeType names registered in OID.atype2oidList are following:
-4251  * <table style="border-width: thin; border-style: solid; witdh: 100%">
-4252  * <tr><th>short</th><th>long</th><th>OID</th></tr>
-4253  * <tr><td>CN</td>commonName<td></td><td>2.5.4.3</td></tr>
-4254  * <tr><td>L</td><td>localityName</td><td>2.5.4.7</td></tr>
-4255  * <tr><td>ST</td><td>stateOrProvinceName</td><td>2.5.4.8</td></tr>
-4256  * <tr><td>O</td><td>organizationName</td><td>2.5.4.10</td></tr>
-4257  * <tr><td>OU</td><td>organizationalUnitName</td><td>2.5.4.11</td></tr>
-4258  * <tr><td>C</td><td></td>countryName<td>2.5.4.6</td></tr>
-4259  * <tr><td>STREET</td>streetAddress<td></td><td>2.5.4.6</td></tr>
-4260  * <tr><td>DC</td><td>domainComponent</td><td>0.9.2342.19200300.100.1.25</td></tr>
-4261  * <tr><td>UID</td><td>userId</td><td>0.9.2342.19200300.100.1.1</td></tr>
-4262  * <tr><td>SN</td><td>surname</td><td>2.5.4.4</td></tr>
-4263  * <tr><td>DN</td><td>distinguishedName</td><td>2.5.4.49</td></tr>
-4264  * <tr><td>E</td><td>emailAddress</td><td>1.2.840.113549.1.9.1</td></tr>
-4265  * <tr><td></td><td>businessCategory</td><td>2.5.4.15</td></tr>
-4266  * <tr><td></td><td>postalCode</td><td>2.5.4.17</td></tr>
-4267  * <tr><td></td><td>jurisdictionOfIncorporationL</td><td>1.3.6.1.4.1.311.60.2.1.1</td></tr>
-4268  * <tr><td></td><td>jurisdictionOfIncorporationSP</td><td>1.3.6.1.4.1.311.60.2.1.2</td></tr>
-4269  * <tr><td></td><td>jurisdictionOfIncorporationC</td><td>1.3.6.1.4.1.311.60.2.1.3</td></tr>
-4270  * </table>
-4271  *
-4272  * @example
-4273  */
-4274 KJUR.asn1.x509.OID = new function() {
-4275     var _DERObjectIdentifier = KJUR.asn1.DERObjectIdentifier;
-4276 
-4277     this.name2oidList = {
-4278         'sha1':                 '1.3.14.3.2.26',
-4279         'sha256':               '2.16.840.1.101.3.4.2.1',
-4280         'sha384':               '2.16.840.1.101.3.4.2.2',
-4281         'sha512':               '2.16.840.1.101.3.4.2.3',
-4282         'sha224':               '2.16.840.1.101.3.4.2.4',
-4283         'md5':                  '1.2.840.113549.2.5',
-4284         'md2':                  '1.3.14.7.2.2.1',
-4285         'ripemd160':            '1.3.36.3.2.1',
-4286 
-4287         'MD2withRSA':           '1.2.840.113549.1.1.2',
-4288         'MD4withRSA':           '1.2.840.113549.1.1.3',
-4289         'MD5withRSA':           '1.2.840.113549.1.1.4',
-4290         'SHA1withRSA':          '1.2.840.113549.1.1.5',
-4291 	'pkcs1-MGF':		'1.2.840.113549.1.1.8',
-4292 	'rsaPSS':		'1.2.840.113549.1.1.10',
-4293         'SHA224withRSA':        '1.2.840.113549.1.1.14',
-4294         'SHA256withRSA':        '1.2.840.113549.1.1.11',
-4295         'SHA384withRSA':        '1.2.840.113549.1.1.12',
-4296         'SHA512withRSA':        '1.2.840.113549.1.1.13',
-4297 
-4298         'SHA1withECDSA':        '1.2.840.10045.4.1',
-4299         'SHA224withECDSA':      '1.2.840.10045.4.3.1',
-4300         'SHA256withECDSA':      '1.2.840.10045.4.3.2',
-4301         'SHA384withECDSA':      '1.2.840.10045.4.3.3',
-4302         'SHA512withECDSA':      '1.2.840.10045.4.3.4',
-4303 
-4304         'dsa':                  '1.2.840.10040.4.1',
-4305         'SHA1withDSA':          '1.2.840.10040.4.3',
-4306         'SHA224withDSA':        '2.16.840.1.101.3.4.3.1',
-4307         'SHA256withDSA':        '2.16.840.1.101.3.4.3.2',
-4308 
-4309         'rsaEncryption':        '1.2.840.113549.1.1.1',
+4216     this.params = null;
+4217 
+4218     this.setByParam = function(params) {
+4219 	this.params = params;
+4220     };
+4221 
+4222     this.tohex = function() {
+4223 	var params = this.params;
+4224 
+4225 	if (params.oid == undefined || params.value == undefined)
+4226 	    throw new Error("oid or value not specified");
+4227 
+4228 	var dOid = new _DERObjectIdentifier({oid: params.oid});
+4229 	var dValue = _newObject({tag: {tag: "a0",
+4230 				       explicit: true,
+4231 				       obj: params.value}});
+4232 	var dSeq = new _DERSequence({array: [dOid, dValue]});
+4233 
+4234         return dSeq.tohex();
+4235     };
+4236     this.getEncodedHex = function() { return this.tohex(); };
+4237 
+4238     if (params !== undefined) this.setByParam(params);
+4239 };
+4240 extendClass(KJUR.asn1.x509.OtherName, KJUR.asn1.ASN1Object);
+4241 
+4242 /**
+4243  * static object for OID
+4244  * @name KJUR.asn1.x509.OID
+4245  * @class static object for OID
+4246  * @property {Assoc Array} atype2oidList for short attribute type name and oid (ex. 'C' and '2.5.4.6')
+4247  * @property {Assoc Array} name2oidList for oid name and oid (ex. 'keyUsage' and '2.5.29.15')
+4248  * @property {Assoc Array} objCache for caching name and DERObjectIdentifier object
+4249  *
+4250  * @description
+4251  * This class defines OID name and values.
+4252  * AttributeType names registered in OID.atype2oidList are following:
+4253  * <table style="border-width: thin; border-style: solid; witdh: 100%">
+4254  * <tr><th>short</th><th>long</th><th>OID</th></tr>
+4255  * <tr><td>CN</td>commonName<td></td><td>2.5.4.3</td></tr>
+4256  * <tr><td>L</td><td>localityName</td><td>2.5.4.7</td></tr>
+4257  * <tr><td>ST</td><td>stateOrProvinceName</td><td>2.5.4.8</td></tr>
+4258  * <tr><td>O</td><td>organizationName</td><td>2.5.4.10</td></tr>
+4259  * <tr><td>OU</td><td>organizationalUnitName</td><td>2.5.4.11</td></tr>
+4260  * <tr><td>C</td><td></td>countryName<td>2.5.4.6</td></tr>
+4261  * <tr><td>STREET</td>streetAddress<td></td><td>2.5.4.6</td></tr>
+4262  * <tr><td>DC</td><td>domainComponent</td><td>0.9.2342.19200300.100.1.25</td></tr>
+4263  * <tr><td>UID</td><td>userId</td><td>0.9.2342.19200300.100.1.1</td></tr>
+4264  * <tr><td>SN</td><td>surname</td><td>2.5.4.4</td></tr>
+4265  * <tr><td>DN</td><td>distinguishedName</td><td>2.5.4.49</td></tr>
+4266  * <tr><td>E</td><td>emailAddress</td><td>1.2.840.113549.1.9.1</td></tr>
+4267  * <tr><td></td><td>businessCategory</td><td>2.5.4.15</td></tr>
+4268  * <tr><td></td><td>postalCode</td><td>2.5.4.17</td></tr>
+4269  * <tr><td></td><td>jurisdictionOfIncorporationL</td><td>1.3.6.1.4.1.311.60.2.1.1</td></tr>
+4270  * <tr><td></td><td>jurisdictionOfIncorporationSP</td><td>1.3.6.1.4.1.311.60.2.1.2</td></tr>
+4271  * <tr><td></td><td>jurisdictionOfIncorporationC</td><td>1.3.6.1.4.1.311.60.2.1.3</td></tr>
+4272  * </table>
+4273  *
+4274  * @example
+4275  */
+4276 KJUR.asn1.x509.OID = new function() {
+4277     var _DERObjectIdentifier = KJUR.asn1.DERObjectIdentifier;
+4278 
+4279     this.name2oidList = {
+4280         'sha1':                 '1.3.14.3.2.26',
+4281         'sha256':               '2.16.840.1.101.3.4.2.1',
+4282         'sha384':               '2.16.840.1.101.3.4.2.2',
+4283         'sha512':               '2.16.840.1.101.3.4.2.3',
+4284         'sha224':               '2.16.840.1.101.3.4.2.4',
+4285         'md5':                  '1.2.840.113549.2.5',
+4286         'md2':                  '1.3.14.7.2.2.1',
+4287         'ripemd160':            '1.3.36.3.2.1',
+4288 
+4289         'MD2withRSA':           '1.2.840.113549.1.1.2',
+4290         'MD4withRSA':           '1.2.840.113549.1.1.3',
+4291         'MD5withRSA':           '1.2.840.113549.1.1.4',
+4292         'SHA1withRSA':          '1.2.840.113549.1.1.5',
+4293 	'pkcs1-MGF':		'1.2.840.113549.1.1.8',
+4294 	'rsaPSS':		'1.2.840.113549.1.1.10',
+4295         'SHA224withRSA':        '1.2.840.113549.1.1.14',
+4296         'SHA256withRSA':        '1.2.840.113549.1.1.11',
+4297         'SHA384withRSA':        '1.2.840.113549.1.1.12',
+4298         'SHA512withRSA':        '1.2.840.113549.1.1.13',
+4299 
+4300         'SHA1withECDSA':        '1.2.840.10045.4.1',
+4301         'SHA224withECDSA':      '1.2.840.10045.4.3.1',
+4302         'SHA256withECDSA':      '1.2.840.10045.4.3.2',
+4303         'SHA384withECDSA':      '1.2.840.10045.4.3.3',
+4304         'SHA512withECDSA':      '1.2.840.10045.4.3.4',
+4305 
+4306         'dsa':                  '1.2.840.10040.4.1',
+4307         'SHA1withDSA':          '1.2.840.10040.4.3',
+4308         'SHA224withDSA':        '2.16.840.1.101.3.4.3.1',
+4309         'SHA256withDSA':        '2.16.840.1.101.3.4.3.2',
 4310 
-4311 	// X.500 AttributeType defined in RFC 4514
-4312         'commonName':			'2.5.4.3',
-4313         'countryName':			'2.5.4.6',
-4314         'localityName':			'2.5.4.7',
-4315         'stateOrProvinceName':		'2.5.4.8',
-4316         'streetAddress':		'2.5.4.9',
-4317         'organizationName':		'2.5.4.10',
-4318         'organizationalUnitName':	'2.5.4.11',
-4319         'domainComponent':		'0.9.2342.19200300.100.1.25',
-4320         'userId':			'0.9.2342.19200300.100.1.1',
-4321 	// other AttributeType name string
-4322 	'surname':			'2.5.4.4',
-4323         'givenName':                    '2.5.4.42',
-4324         'title':			'2.5.4.12',
-4325 	'distinguishedName':		'2.5.4.49',
-4326 	'emailAddress':			'1.2.840.113549.1.9.1',
-4327 	// other AttributeType name string (no short name)
-4328 	'description':			'2.5.4.13',
-4329 	'businessCategory':		'2.5.4.15',
-4330 	'postalCode':			'2.5.4.17',
-4331 	'uniqueIdentifier':		'2.5.4.45',
-4332 	'organizationIdentifier':	'2.5.4.97',
-4333 	'jurisdictionOfIncorporationL':	'1.3.6.1.4.1.311.60.2.1.1',
-4334 	'jurisdictionOfIncorporationSP':'1.3.6.1.4.1.311.60.2.1.2',
-4335 	'jurisdictionOfIncorporationC':	'1.3.6.1.4.1.311.60.2.1.3',
-4336 
-4337         'subjectDirectoryAttributes': '2.5.29.9',
-4338         'subjectKeyIdentifier': '2.5.29.14',
-4339         'keyUsage':             '2.5.29.15',
-4340         'subjectAltName':       '2.5.29.17',
-4341         'issuerAltName':        '2.5.29.18',
-4342         'basicConstraints':     '2.5.29.19',
-4343         'cRLNumber':     	'2.5.29.20',
-4344         'cRLReason':     	'2.5.29.21',
-4345         'nameConstraints':      '2.5.29.30',
-4346         'cRLDistributionPoints':'2.5.29.31',
-4347         'certificatePolicies':  '2.5.29.32',
-4348         'anyPolicy':  		'2.5.29.32.0',
-4349         'authorityKeyIdentifier':'2.5.29.35',
-4350         'policyConstraints':    '2.5.29.36',
-4351         'extKeyUsage':          '2.5.29.37',
-4352         'authorityInfoAccess':  '1.3.6.1.5.5.7.1.1',
-4353         'ocsp':                 '1.3.6.1.5.5.7.48.1',
-4354         'ocspBasic':            '1.3.6.1.5.5.7.48.1.1',
-4355         'ocspNonce':            '1.3.6.1.5.5.7.48.1.2',
-4356         'ocspNoCheck':          '1.3.6.1.5.5.7.48.1.5',
-4357         'caIssuers':            '1.3.6.1.5.5.7.48.2',
-4358 
-4359         'anyExtendedKeyUsage':  '2.5.29.37.0',
-4360         'serverAuth':           '1.3.6.1.5.5.7.3.1',
-4361         'clientAuth':           '1.3.6.1.5.5.7.3.2',
-4362         'codeSigning':          '1.3.6.1.5.5.7.3.3',
-4363         'emailProtection':      '1.3.6.1.5.5.7.3.4',
-4364         'timeStamping':         '1.3.6.1.5.5.7.3.8',
-4365         'ocspSigning':          '1.3.6.1.5.5.7.3.9',
-4366 
-4367         'dateOfBirth':          '1.3.6.1.5.5.7.9.1',
-4368         'placeOfBirth':         '1.3.6.1.5.5.7.9.2',
-4369         'gender':               '1.3.6.1.5.5.7.9.3',
-4370         'countryOfCitizenship': '1.3.6.1.5.5.7.9.4',
-4371         'countryOfResidence':   '1.3.6.1.5.5.7.9.5',
-4372 
-4373         'ecPublicKey':          '1.2.840.10045.2.1',
-4374         'P-256':                '1.2.840.10045.3.1.7',
-4375         'secp256r1':            '1.2.840.10045.3.1.7',
-4376         'secp256k1':            '1.3.132.0.10',
-4377         'secp384r1':            '1.3.132.0.34',
-4378         'secp521r1':            '1.3.132.0.35',
-4379 
-4380         'pkcs5PBES2':           '1.2.840.113549.1.5.13',
-4381         'pkcs5PBKDF2':          '1.2.840.113549.1.5.12',
-4382 
-4383         'des-EDE3-CBC':         '1.2.840.113549.3.7',
+4311         'rsaEncryption':        '1.2.840.113549.1.1.1',
+4312 
+4313 	// X.500 AttributeType defined in RFC 4514
+4314         'commonName':			'2.5.4.3',
+4315         'countryName':			'2.5.4.6',
+4316         'localityName':			'2.5.4.7',
+4317         'stateOrProvinceName':		'2.5.4.8',
+4318         'streetAddress':		'2.5.4.9',
+4319         'organizationName':		'2.5.4.10',
+4320         'organizationalUnitName':	'2.5.4.11',
+4321         'domainComponent':		'0.9.2342.19200300.100.1.25',
+4322         'userId':			'0.9.2342.19200300.100.1.1',
+4323 	// other AttributeType name string
+4324 	'surname':			'2.5.4.4',
+4325         'givenName':                    '2.5.4.42',
+4326         'title':			'2.5.4.12',
+4327 	'distinguishedName':		'2.5.4.49',
+4328 	'emailAddress':			'1.2.840.113549.1.9.1',
+4329 	// other AttributeType name string (no short name)
+4330 	'description':			'2.5.4.13',
+4331 	'businessCategory':		'2.5.4.15',
+4332 	'postalCode':			'2.5.4.17',
+4333 	'uniqueIdentifier':		'2.5.4.45',
+4334 	'organizationIdentifier':	'2.5.4.97',
+4335 	'jurisdictionOfIncorporationL':	'1.3.6.1.4.1.311.60.2.1.1',
+4336 	'jurisdictionOfIncorporationSP':'1.3.6.1.4.1.311.60.2.1.2',
+4337 	'jurisdictionOfIncorporationC':	'1.3.6.1.4.1.311.60.2.1.3',
+4338 
+4339         'subjectDirectoryAttributes': '2.5.29.9',
+4340         'subjectKeyIdentifier': '2.5.29.14',
+4341         'keyUsage':             '2.5.29.15',
+4342         'subjectAltName':       '2.5.29.17',
+4343         'issuerAltName':        '2.5.29.18',
+4344         'basicConstraints':     '2.5.29.19',
+4345         'cRLNumber':     	'2.5.29.20',
+4346         'cRLReason':     	'2.5.29.21',
+4347         'nameConstraints':      '2.5.29.30',
+4348         'cRLDistributionPoints':'2.5.29.31',
+4349         'certificatePolicies':  '2.5.29.32',
+4350         'anyPolicy':  		'2.5.29.32.0',
+4351         'authorityKeyIdentifier':'2.5.29.35',
+4352         'policyConstraints':    '2.5.29.36',
+4353         'extKeyUsage':          '2.5.29.37',
+4354         'authorityInfoAccess':  '1.3.6.1.5.5.7.1.1',
+4355         'ocsp':                 '1.3.6.1.5.5.7.48.1',
+4356         'ocspBasic':            '1.3.6.1.5.5.7.48.1.1',
+4357         'ocspNonce':            '1.3.6.1.5.5.7.48.1.2',
+4358         'ocspNoCheck':          '1.3.6.1.5.5.7.48.1.5',
+4359         'caIssuers':            '1.3.6.1.5.5.7.48.2',
+4360 
+4361         'anyExtendedKeyUsage':  '2.5.29.37.0',
+4362         'serverAuth':           '1.3.6.1.5.5.7.3.1',
+4363         'clientAuth':           '1.3.6.1.5.5.7.3.2',
+4364         'codeSigning':          '1.3.6.1.5.5.7.3.3',
+4365         'emailProtection':      '1.3.6.1.5.5.7.3.4',
+4366         'timeStamping':         '1.3.6.1.5.5.7.3.8',
+4367         'ocspSigning':          '1.3.6.1.5.5.7.3.9',
+4368 
+4369         'dateOfBirth':          '1.3.6.1.5.5.7.9.1',
+4370         'placeOfBirth':         '1.3.6.1.5.5.7.9.2',
+4371         'gender':               '1.3.6.1.5.5.7.9.3',
+4372         'countryOfCitizenship': '1.3.6.1.5.5.7.9.4',
+4373         'countryOfResidence':   '1.3.6.1.5.5.7.9.5',
+4374 
+4375         'ecPublicKey':          '1.2.840.10045.2.1',
+4376         'P-256':                '1.2.840.10045.3.1.7',
+4377         'secp256r1':            '1.2.840.10045.3.1.7',
+4378         'secp256k1':            '1.3.132.0.10',
+4379         'secp384r1':            '1.3.132.0.34',
+4380         'secp521r1':            '1.3.132.0.35',
+4381 
+4382         'pkcs5PBES2':           '1.2.840.113549.1.5.13',
+4383         'pkcs5PBKDF2':          '1.2.840.113549.1.5.12',
 4384 
-4385         'data':                 '1.2.840.113549.1.7.1', // CMS data
-4386         'signed-data':          '1.2.840.113549.1.7.2', // CMS signed-data
-4387         'enveloped-data':       '1.2.840.113549.1.7.3', // CMS enveloped-data
-4388         'digested-data':        '1.2.840.113549.1.7.5', // CMS digested-data
-4389         'encrypted-data':       '1.2.840.113549.1.7.6', // CMS encrypted-data
-4390         'authenticated-data':   '1.2.840.113549.1.9.16.1.2', // CMS authenticated-data
-4391         'tstinfo':              '1.2.840.113549.1.9.16.1.4', // RFC3161 TSTInfo
-4392 	'signingCertificate':	'1.2.840.113549.1.9.16.2.12',// SMIME
-4393 	'timeStampToken':	'1.2.840.113549.1.9.16.2.14',// sigTS
-4394 	'signaturePolicyIdentifier':	'1.2.840.113549.1.9.16.2.15',// cades
-4395 	'etsArchiveTimeStamp':	'1.2.840.113549.1.9.16.2.27',// SMIME
-4396 	'signingCertificateV2':	'1.2.840.113549.1.9.16.2.47',// SMIME
-4397 	'etsArchiveTimeStampV2':'1.2.840.113549.1.9.16.2.48',// SMIME
-4398         'extensionRequest':     '1.2.840.113549.1.9.14',// CSR extensionRequest
-4399 	'contentType':		'1.2.840.113549.1.9.3',//PKCS#9
-4400 	'messageDigest':	'1.2.840.113549.1.9.4',//PKCS#9
-4401 	'signingTime':		'1.2.840.113549.1.9.5',//PKCS#9
-4402 	'counterSignature':	'1.2.840.113549.1.9.6',//PKCS#9
-4403 	'archiveTimeStampV3':	'0.4.0.1733.2.4',//ETSI EN29319122/TS101733
-4404 	'pdfRevocationInfoArchival':'1.2.840.113583.1.1.8', //Adobe
-4405 	'adobeTimeStamp':	'1.2.840.113583.1.1.9.1', // Adobe
-4406     };
-4407 
-4408     this.atype2oidList = {
-4409 	// RFC 4514 AttributeType name string (MUST recognized)
-4410         'CN':		'2.5.4.3',
-4411         'L':		'2.5.4.7',
-4412         'ST':		'2.5.4.8',
-4413         'O':		'2.5.4.10',
-4414         'OU':		'2.5.4.11',
-4415         'C':		'2.5.4.6',
-4416         'STREET':	'2.5.4.9',
-4417         'DC':		'0.9.2342.19200300.100.1.25',
-4418         'UID':		'0.9.2342.19200300.100.1.1',
-4419 	// other AttributeType name string
-4420 	// http://blog.livedoor.jp/k_urushima/archives/656114.html
-4421         'SN':		'2.5.4.4', // surname
-4422         'T':		'2.5.4.12', // title
-4423         'DN':		'2.5.4.49', // distinguishedName
-4424         'E':		'1.2.840.113549.1.9.1', // emailAddress in MS.NET or Bouncy
-4425 	// other AttributeType name string (no short name)
-4426 	'description':			'2.5.4.13',
-4427 	'businessCategory':		'2.5.4.15',
-4428 	'postalCode':			'2.5.4.17',
-4429 	'serialNumber':			'2.5.4.5',
-4430 	'uniqueIdentifier':		'2.5.4.45',
-4431 	'organizationIdentifier':	'2.5.4.97',
-4432 	'jurisdictionOfIncorporationL':	'1.3.6.1.4.1.311.60.2.1.1',
-4433 	'jurisdictionOfIncorporationSP':'1.3.6.1.4.1.311.60.2.1.2',
-4434 	'jurisdictionOfIncorporationC':	'1.3.6.1.4.1.311.60.2.1.3'
-4435     };
-4436     
-4437     this.objCache = {};
-4438 
-4439     /**
-4440      * get DERObjectIdentifier by registered OID name
-4441      * @name name2obj
-4442      * @memberOf KJUR.asn1.x509.OID
-4443      * @function
-4444      * @param {String} name OID
-4445      * @return {Object} DERObjectIdentifier instance
-4446      * @see KJUR.asn1.DERObjectIdentifier
-4447      *
-4448      * @description
-4449      * This static method returns DERObjectIdentifier object
-4450      * for the specified OID.
-4451      *
-4452      * @example
-4453      * var asn1ObjOID = KJUR.asn1.x509.OID.name2obj('SHA1withRSA');
-4454      */
-4455     this.name2obj = function(name) {
-4456         if (typeof this.objCache[name] != "undefined")
-4457             return this.objCache[name];
-4458         if (typeof this.name2oidList[name] == "undefined")
-4459             throw "Name of ObjectIdentifier not defined: " + name;
-4460         var oid = this.name2oidList[name];
-4461         var obj = new _DERObjectIdentifier({'oid': oid});
-4462         this.objCache[name] = obj;
-4463         return obj;
-4464     };
-4465 
-4466     /**
-4467      * get DERObjectIdentifier by registered attribute type name such like 'C' or 'CN'<br/>
-4468      * @name atype2obj
-4469      * @memberOf KJUR.asn1.x509.OID
-4470      * @function
-4471      * @param {String} atype short attribute type name such like 'C', 'CN' or OID
-4472      * @return KJUR.asn1.DERObjectIdentifier instance
-4473      * @description
-4474      * @example
-4475      * KJUR.asn1.x509.OID.atype2obj('CN') → DERObjectIdentifier of 2.5.4.3
-4476      * KJUR.asn1.x509.OID.atype2obj('OU') → DERObjectIdentifier of 2.5.4.11
-4477      * KJUR.asn1.x509.OID.atype2obj('streetAddress') → DERObjectIdentifier of 2.5.4.9
-4478      * KJUR.asn1.x509.OID.atype2obj('2.5.4.9') → DERObjectIdentifier of 2.5.4.9
-4479      */
-4480     this.atype2obj = function(atype) {
-4481         if (this.objCache[atype] !== undefined)
-4482             return this.objCache[atype];
-4483 
-4484 	var oid;
+4385         'des-EDE3-CBC':         '1.2.840.113549.3.7',
+4386 
+4387         'data':                 '1.2.840.113549.1.7.1', // CMS data
+4388         'signed-data':          '1.2.840.113549.1.7.2', // CMS signed-data
+4389         'enveloped-data':       '1.2.840.113549.1.7.3', // CMS enveloped-data
+4390         'digested-data':        '1.2.840.113549.1.7.5', // CMS digested-data
+4391         'encrypted-data':       '1.2.840.113549.1.7.6', // CMS encrypted-data
+4392         'authenticated-data':   '1.2.840.113549.1.9.16.1.2', // CMS authenticated-data
+4393         'tstinfo':              '1.2.840.113549.1.9.16.1.4', // RFC3161 TSTInfo
+4394 	'signingCertificate':	'1.2.840.113549.1.9.16.2.12',// SMIME
+4395 	'timeStampToken':	'1.2.840.113549.1.9.16.2.14',// sigTS
+4396 	'signaturePolicyIdentifier':	'1.2.840.113549.1.9.16.2.15',// cades
+4397 	'etsArchiveTimeStamp':	'1.2.840.113549.1.9.16.2.27',// SMIME
+4398 	'signingCertificateV2':	'1.2.840.113549.1.9.16.2.47',// SMIME
+4399 	'etsArchiveTimeStampV2':'1.2.840.113549.1.9.16.2.48',// SMIME
+4400         'extensionRequest':     '1.2.840.113549.1.9.14',// CSR extensionRequest
+4401 	'contentType':		'1.2.840.113549.1.9.3',//PKCS#9
+4402 	'messageDigest':	'1.2.840.113549.1.9.4',//PKCS#9
+4403 	'signingTime':		'1.2.840.113549.1.9.5',//PKCS#9
+4404 	'counterSignature':	'1.2.840.113549.1.9.6',//PKCS#9
+4405 	'archiveTimeStampV3':	'0.4.0.1733.2.4',//ETSI EN29319122/TS101733
+4406 	'pdfRevocationInfoArchival':'1.2.840.113583.1.1.8', //Adobe
+4407 	'adobeTimeStamp':	'1.2.840.113583.1.1.9.1', // Adobe
+4408     };
+4409 
+4410     this.atype2oidList = {
+4411 	// RFC 4514 AttributeType name string (MUST recognized)
+4412         'CN':		'2.5.4.3',
+4413         'L':		'2.5.4.7',
+4414         'ST':		'2.5.4.8',
+4415         'O':		'2.5.4.10',
+4416         'OU':		'2.5.4.11',
+4417         'C':		'2.5.4.6',
+4418         'STREET':	'2.5.4.9',
+4419         'DC':		'0.9.2342.19200300.100.1.25',
+4420         'UID':		'0.9.2342.19200300.100.1.1',
+4421 	// other AttributeType name string
+4422 	// http://blog.livedoor.jp/k_urushima/archives/656114.html
+4423         'SN':		'2.5.4.4', // surname
+4424         'T':		'2.5.4.12', // title
+4425         'DN':		'2.5.4.49', // distinguishedName
+4426         'E':		'1.2.840.113549.1.9.1', // emailAddress in MS.NET or Bouncy
+4427 	// other AttributeType name string (no short name)
+4428 	'description':			'2.5.4.13',
+4429 	'businessCategory':		'2.5.4.15',
+4430 	'postalCode':			'2.5.4.17',
+4431 	'serialNumber':			'2.5.4.5',
+4432 	'uniqueIdentifier':		'2.5.4.45',
+4433 	'organizationIdentifier':	'2.5.4.97',
+4434 	'jurisdictionOfIncorporationL':	'1.3.6.1.4.1.311.60.2.1.1',
+4435 	'jurisdictionOfIncorporationSP':'1.3.6.1.4.1.311.60.2.1.2',
+4436 	'jurisdictionOfIncorporationC':	'1.3.6.1.4.1.311.60.2.1.3'
+4437     };
+4438     
+4439     this.objCache = {};
+4440 
+4441     /**
+4442      * get DERObjectIdentifier by registered OID name
+4443      * @name name2obj
+4444      * @memberOf KJUR.asn1.x509.OID
+4445      * @function
+4446      * @param {String} name OID
+4447      * @return {Object} DERObjectIdentifier instance
+4448      * @see KJUR.asn1.DERObjectIdentifier
+4449      *
+4450      * @description
+4451      * This static method returns DERObjectIdentifier object
+4452      * for the specified OID.
+4453      *
+4454      * @example
+4455      * var asn1ObjOID = KJUR.asn1.x509.OID.name2obj('SHA1withRSA');
+4456      */
+4457     this.name2obj = function(name) {
+4458         if (typeof this.objCache[name] != "undefined")
+4459             return this.objCache[name];
+4460         if (typeof this.name2oidList[name] == "undefined")
+4461             throw "Name of ObjectIdentifier not defined: " + name;
+4462         var oid = this.name2oidList[name];
+4463         var obj = new _DERObjectIdentifier({'oid': oid});
+4464         this.objCache[name] = obj;
+4465         return obj;
+4466     };
+4467 
+4468     /**
+4469      * get DERObjectIdentifier by registered attribute type name such like 'C' or 'CN'<br/>
+4470      * @name atype2obj
+4471      * @memberOf KJUR.asn1.x509.OID
+4472      * @function
+4473      * @param {String} atype short attribute type name such like 'C', 'CN' or OID
+4474      * @return KJUR.asn1.DERObjectIdentifier instance
+4475      * @description
+4476      * @example
+4477      * KJUR.asn1.x509.OID.atype2obj('CN') → DERObjectIdentifier of 2.5.4.3
+4478      * KJUR.asn1.x509.OID.atype2obj('OU') → DERObjectIdentifier of 2.5.4.11
+4479      * KJUR.asn1.x509.OID.atype2obj('streetAddress') → DERObjectIdentifier of 2.5.4.9
+4480      * KJUR.asn1.x509.OID.atype2obj('2.5.4.9') → DERObjectIdentifier of 2.5.4.9
+4481      */
+4482     this.atype2obj = function(atype) {
+4483         if (this.objCache[atype] !== undefined)
+4484             return this.objCache[atype];
 4485 
-4486 	if (atype.match(/^\d+\.\d+\.[0-9.]+$/)) {
-4487 	    oid = atype;
-4488 	} else if (this.atype2oidList[atype] !== undefined) {
-4489 	    oid = this.atype2oidList[atype];
-4490 	} else if (this.name2oidList[atype] !== undefined) {
-4491 	    oid = this.name2oidList[atype];
-4492     	} else {
-4493             throw new Error("AttributeType name undefined: " + atype);
-4494 	}
-4495         var obj = new _DERObjectIdentifier({'oid': oid});
-4496         this.objCache[atype] = obj;
-4497         return obj;
-4498     };
-4499 
-4500     /**
-4501      * register OID list<br/>
-4502      * @name registerOIDs
-4503      * @memberOf KJUR.asn1.x509.OID
-4504      * @function
-4505      * @param {object} oids associative array of names and oids
-4506      * @since jsrsasign 10.5.2 asn1x509 2.1.11
-4507      * @see KJUR.asn1.x509.OID.checkOIDs
-4508      * 
-4509      * @description
-4510      * This static method to register an oids to existing list
-4511      * additionally.
-4512      *
-4513      * @example
-4514      * KJUR.asn1.x509.OID.checkOIDs({
-4515      *   "test1": "4.5.7.8"
-4516      * }) // do nothing for invalid list
-4517      *
-4518      * KJUR.asn1.x509.OID.registerOIDs({
-4519      *   "test1": "1.2.3",
-4520      *   "test2": "0.2.3.4.23",
-4521      * }) // successfully registered
-4522      *
-4523      * KJUR.asn1.x509.OID.name2oid("test1") → "1.2.3"
-4524      */
-4525     this.registerOIDs = function(oids) {
-4526 	if (! this.checkOIDs(oids)) return;
-4527 	for (var name in oids) {
-4528 	    this.name2oidList[name] = oids[name];
-4529 	}
-4530     };
-4531 
-4532     /**
-4533      * check validity for OID list<br/>
-4534      * @name checkOIDs
-4535      * @memberOf KJUR.asn1.x509.OID
-4536      * @function
-4537      * @param {object} oids associative array of names and oids
-4538      * @return {boolean} return true when valid OID list otherwise false
-4539      * @since jsrsasign 10.5.2 asn1x509 2.1.11
-4540      * @see KJUR.asn1.x509.OID.registOIDs
-4541      * 
-4542      * @description
-4543      * This static method validates an associative array
-4544      * as oid list.
-4545      *
-4546      * @example
-4547      * KJUR.asn1.x509.OID.checkOIDs(*non-assoc-array*) → false
-4548      * KJUR.asn1.x509.OID.checkOIDs({}) → false
-4549      * KJUR.asn1.x509.OID.checkOIDs({"test1": "apple"}) → false
-4550      * KJUR.asn1.x509.OID.checkOIDs({
-4551      *   "test1": "1.2.3",
-4552      *   "test2": "0.2.3.4.23",
-4553      * }) → true // valid oids
-4554      * KJUR.asn1.x509.OID.checkOIDs({
-4555      *   "test1": "4.5.7.8"
-4556      * }) → false // invalid oid
-4557      */
-4558     this.checkOIDs = function(oids) {
-4559 	try {
-4560 	    var nameList = Object.keys(oids);
-4561 	    if (nameList.length == 0)
-4562 		return false;
-4563 	    nameList.map(function(value, index, array) {
-4564 		var oid = this[value];
-4565 		if (! oid.match(/^[0-2]\.[0-9.]+$/))
-4566 		    throw new Error("value is not OID");
-4567 	    }, oids);
-4568 	    return true;
-4569 	} catch(ex) {
-4570 	    return false;
-4571 	}
-4572     };
-4573 
-4574 
-4575 };
+4486 	var oid;
+4487 
+4488 	if (atype.match(/^\d+\.\d+\.[0-9.]+$/)) {
+4489 	    oid = atype;
+4490 	} else if (this.atype2oidList[atype] !== undefined) {
+4491 	    oid = this.atype2oidList[atype];
+4492 	} else if (this.name2oidList[atype] !== undefined) {
+4493 	    oid = this.name2oidList[atype];
+4494     	} else {
+4495             throw new Error("AttributeType name undefined: " + atype);
+4496 	}
+4497         var obj = new _DERObjectIdentifier({'oid': oid});
+4498         this.objCache[atype] = obj;
+4499         return obj;
+4500     };
+4501 
+4502     /**
+4503      * register OID list<br/>
+4504      * @name registerOIDs
+4505      * @memberOf KJUR.asn1.x509.OID
+4506      * @function
+4507      * @param {object} oids associative array of names and oids
+4508      * @since jsrsasign 10.5.2 asn1x509 2.1.11
+4509      * @see KJUR.asn1.x509.OID.checkOIDs
+4510      * 
+4511      * @description
+4512      * This static method to register an oids to existing list
+4513      * additionally.
+4514      *
+4515      * @example
+4516      * KJUR.asn1.x509.OID.checkOIDs({
+4517      *   "test1": "4.5.7.8"
+4518      * }) // do nothing for invalid list
+4519      *
+4520      * KJUR.asn1.x509.OID.registerOIDs({
+4521      *   "test1": "1.2.3",
+4522      *   "test2": "0.2.3.4.23",
+4523      * }) // successfully registered
+4524      *
+4525      * KJUR.asn1.x509.OID.name2oid("test1") → "1.2.3"
+4526      */
+4527     this.registerOIDs = function(oids) {
+4528 	if (! this.checkOIDs(oids)) return;
+4529 	for (var name in oids) {
+4530 	    this.name2oidList[name] = oids[name];
+4531 	}
+4532     };
+4533 
+4534     /**
+4535      * check validity for OID list<br/>
+4536      * @name checkOIDs
+4537      * @memberOf KJUR.asn1.x509.OID
+4538      * @function
+4539      * @param {object} oids associative array of names and oids
+4540      * @return {boolean} return true when valid OID list otherwise false
+4541      * @since jsrsasign 10.5.2 asn1x509 2.1.11
+4542      * @see KJUR.asn1.x509.OID.registOIDs
+4543      * 
+4544      * @description
+4545      * This static method validates an associative array
+4546      * as oid list.
+4547      *
+4548      * @example
+4549      * KJUR.asn1.x509.OID.checkOIDs(*non-assoc-array*) → false
+4550      * KJUR.asn1.x509.OID.checkOIDs({}) → false
+4551      * KJUR.asn1.x509.OID.checkOIDs({"test1": "apple"}) → false
+4552      * KJUR.asn1.x509.OID.checkOIDs({
+4553      *   "test1": "1.2.3",
+4554      *   "test2": "0.2.3.4.23",
+4555      * }) → true // valid oids
+4556      * KJUR.asn1.x509.OID.checkOIDs({
+4557      *   "test1": "4.5.7.8"
+4558      * }) → false // invalid oid
+4559      */
+4560     this.checkOIDs = function(oids) {
+4561 	try {
+4562 	    var nameList = Object.keys(oids);
+4563 	    if (nameList.length == 0)
+4564 		return false;
+4565 	    nameList.map(function(value, index, array) {
+4566 		var oid = this[value];
+4567 		if (! oid.match(/^[0-2]\.[0-9.]+$/))
+4568 		    throw new Error("value is not OID");
+4569 	    }, oids);
+4570 	    return true;
+4571 	} catch(ex) {
+4572 	    return false;
+4573 	}
+4574     };
+4575 
 4576 
-4577 /**
-4578  * convert OID to name<br/>
-4579  * @name oid2name
-4580  * @memberOf KJUR.asn1.x509.OID
-4581  * @function
-4582  * @param {String} oid dot noted Object Identifer string (ex. 1.2.3.4)
-4583  * @return {String} OID name if registered otherwise empty string
-4584  * @since asn1x509 1.0.9
-4585  * @description
-4586  * This static method converts OID string to its name.
-4587  * If OID is undefined then it returns empty string (i.e. '').
-4588  * @example
-4589  * KJUR.asn1.x509.OID.oid2name("1.3.6.1.5.5.7.1.1") → 'authorityInfoAccess'
-4590  */
-4591 KJUR.asn1.x509.OID.oid2name = function(oid) {
-4592     var list = KJUR.asn1.x509.OID.name2oidList;
-4593     for (var name in list) {
-4594         if (list[name] == oid) return name;
-4595     }
-4596     return '';
-4597 };
-4598 
-4599 /**
-4600  * convert OID to AttributeType name<br/>
-4601  * @name oid2atype
-4602  * @memberOf KJUR.asn1.x509.OID
-4603  * @function
-4604  * @param {String} oid dot noted Object Identifer string (ex. 1.2.3.4)
-4605  * @return {String} OID AttributeType name if registered otherwise oid
-4606  * @since jsrsasign 6.2.2 asn1x509 1.0.18
-4607  * @description
-4608  * This static method converts OID string to its AttributeType name.
-4609  * If OID is not defined in OID.atype2oidList associative array then it returns OID
-4610  * specified as argument.
-4611  * @example
-4612  * KJUR.asn1.x509.OID.oid2atype("2.5.4.3") → CN
-4613  * KJUR.asn1.x509.OID.oid2atype("1.3.6.1.4.1.311.60.2.1.3") → jurisdictionOfIncorporationC
-4614  * KJUR.asn1.x509.OID.oid2atype("0.1.2.3.4") → 0.1.2.3.4 // unregistered OID
-4615  */
-4616 KJUR.asn1.x509.OID.oid2atype = function(oid) {
-4617     var list = KJUR.asn1.x509.OID.atype2oidList;
-4618     for (var atype in list) {
-4619         if (list[atype] == oid) return atype;
-4620     }
-4621     return oid;
-4622 };
-4623 
-4624 /**
-4625  * convert OID name to OID value<br/>
-4626  * @name name2oid
-4627  * @memberOf KJUR.asn1.x509.OID
-4628  * @function
-4629  * @param {String} name OID name or OID (ex. "sha1" or "1.2.3.4")
-4630  * @return {String} dot noted Object Identifer string (ex. 1.2.3.4)
-4631  * @since asn1x509 1.0.11
-4632  * @description
-4633  * This static method converts from OID name to OID string.
-4634  * If OID is undefined then it returns empty string (i.e. '').
-4635  * @example
-4636  * KJUR.asn1.x509.OID.name2oid("authorityInfoAccess") → "1.3.6.1.5.5.7.1.1"
-4637  * KJUR.asn1.x509.OID.name2oid("1.2.3.4") → "1.2.3.4"
-4638  * KJUR.asn1.x509.OID.name2oid("UNKNOWN NAME") → ""
-4639  */
-4640 KJUR.asn1.x509.OID.name2oid = function(name) {
-4641     if (name.match(/^[0-9.]+$/)) return name;
-4642     var list = KJUR.asn1.x509.OID.name2oidList;
-4643     if (list[name] === undefined) return '';
-4644     return list[name];
-4645 };
-4646 
-4647 /**
-4648  * X.509 certificate and CRL utilities class<br/>
-4649  * @name KJUR.asn1.x509.X509Util
-4650  * @class X.509 certificate and CRL utilities class
-4651  */
-4652 KJUR.asn1.x509.X509Util = {};
-4653 
-4654 /**
-4655  * issue a certificate in PEM format (DEPRECATED)
-4656  * @name newCertPEM
-4657  * @memberOf KJUR.asn1.x509.X509Util
-4658  * @function
-4659  * @param {Array} param JSON object of parameter to issue a certificate
-4660  * @since asn1x509 1.0.6
-4661  * @deprecated since jsrsasign 9.0.0 asn1x509 2.0.0. please move to {@link KJUR.asn1.x509.Certificate} constructor
-4662  * @description
-4663  * This method can issue a certificate by a simple
-4664  * JSON object.
-4665  * Signature value will be provided by signing with
-4666  * private key using 'cakey' parameter or
-4667  * hexadecimal signature value by 'sighex' parameter.
-4668  * <br/>
-4669  * NOTE: Algorithm parameter of AlgorithmIdentifier will
-4670  * be set automatically by default. 
-4671  * (see {@link KJUR.asn1.x509.AlgorithmIdentifier})
-4672  * from jsrsasign 7.1.1 asn1x509 1.0.20.
-4673  * <br/>
-4674  * NOTE2: 
-4675  * RSA-PSS algorithm has been supported from jsrsasign 8.0.21.
-4676  * As for RSA-PSS signature algorithm names and signing parameters 
-4677  * such as MGF function and salt length, please see
-4678  * {@link KJUR.asn1.x509.AlgorithmIdentifier} class.
-4679  *
-4680  * @example
-4681  * var certPEM = KJUR.asn1.x509.X509Util.newCertPEM({
-4682  *   serial: {int: 4},
-4683  *   sigalg: {name: 'SHA1withECDSA'},
-4684  *   issuer: {str: '/C=US/O=a'},
-4685  *   notbefore: {'str': '130504235959Z'},
-4686  *   notafter: {'str': '140504235959Z'},
-4687  *   subject: {str: '/C=US/O=b'},
-4688  *   sbjpubkey: pubKeyObj,
-4689  *   ext: [
-4690  *     {basicConstraints: {cA: true, critical: true}},
-4691  *     {keyUsage: {bin: '11'}},
-4692  *   ],
-4693  *   cakey: prvKeyObj
-4694  * });
-4695  * // -- or --
-4696  * var certPEM = KJUR.asn1.x509.X509Util.newCertPEM({
-4697  *   serial: {int: 4},
-4698  *   sigalg: {name: 'SHA1withECDSA'},
-4699  *   issuer: {str: '/C=US/O=a'},
-4700  *   notbefore: {'str': '130504235959Z'},
-4701  *   notafter: {'str': '140504235959Z'},
-4702  *   subject: {str: '/C=US/O=b'},
-4703  *   sbjpubkey: pubKeyPEM,
-4704  *   ext: [
-4705  *     {basicConstraints: {cA: true, critical: true}},
-4706  *     {keyUsage: {bin: '11'}},
-4707  *   ],
-4708  *   cakey: [prvkey, pass]}
-4709  * );
-4710  * // -- or --
-4711  * var certPEM = KJUR.asn1.x509.X509Util.newCertPEM({
-4712  *   serial: {int: 1},
-4713  *   sigalg: {name: 'SHA1withRSA'},
-4714  *   issuer: {str: '/C=US/O=T1'},
-4715  *   notbefore: {'str': '130504235959Z'},
-4716  *   notafter: {'str': '140504235959Z'},
-4717  *   subject: {str: '/C=US/O=T1'},
-4718  *   sbjpubkey: pubKeyObj,
-4719  *   sighex: '0102030405..'
-4720  * });
-4721  * // for the issuer and subject field, another
-4722  * // representation is also available
-4723  * var certPEM = KJUR.asn1.x509.X509Util.newCertPEM({
-4724  *   serial: {int: 1},
-4725  *   sigalg: {name: 'SHA256withRSA'},
-4726  *   issuer: {C: "US", O: "T1"},
-4727  *   notbefore: {'str': '130504235959Z'},
-4728  *   notafter: {'str': '140504235959Z'},
-4729  *   subject: {C: "US", O: "T1", CN: "http://example.com/"},
-4730  *   sbjpubkey: pubKeyObj,
-4731  *   sighex: '0102030405..'
-4732  * });
-4733  */
-4734 KJUR.asn1.x509.X509Util.newCertPEM = function(param) {
-4735     var _KJUR_asn1_x509 = KJUR.asn1.x509,
-4736 	_TBSCertificate = _KJUR_asn1_x509.TBSCertificate,
-4737 	_Certificate = _KJUR_asn1_x509.Certificate;
-4738     var cert = new _Certificate(param);
-4739     return cert.getPEM();
-4740 };
-4741 
-4742 
\ No newline at end of file +4577
}; +4578 +4579 /** +4580 * convert OID to name<br/> +4581 * @name oid2name +4582 * @memberOf KJUR.asn1.x509.OID +4583 * @function +4584 * @param {String} oid dot noted Object Identifer string (ex. 1.2.3.4) +4585 * @return {String} OID name if registered otherwise empty string +4586 * @since asn1x509 1.0.9 +4587 * @description +4588 * This static method converts OID string to its name. +4589 * If OID is undefined then it returns empty string (i.e. ''). +4590 * @example +4591 * KJUR.asn1.x509.OID.oid2name("1.3.6.1.5.5.7.1.1") → 'authorityInfoAccess' +4592 */ +4593 KJUR.asn1.x509.OID.oid2name = function(oid) { +4594 var list = KJUR.asn1.x509.OID.name2oidList; +4595 for (var name in list) { +4596 if (list[name] == oid) return name; +4597 } +4598 return ''; +4599 }; +4600 +4601 /** +4602 * convert OID to AttributeType name<br/> +4603 * @name oid2atype +4604 * @memberOf KJUR.asn1.x509.OID +4605 * @function +4606 * @param {String} oid dot noted Object Identifer string (ex. 1.2.3.4) +4607 * @return {String} OID AttributeType name if registered otherwise oid +4608 * @since jsrsasign 6.2.2 asn1x509 1.0.18 +4609 * @description +4610 * This static method converts OID string to its AttributeType name. +4611 * If OID is not defined in OID.atype2oidList associative array then it returns OID +4612 * specified as argument. +4613 * @example +4614 * KJUR.asn1.x509.OID.oid2atype("2.5.4.3") → CN +4615 * KJUR.asn1.x509.OID.oid2atype("1.3.6.1.4.1.311.60.2.1.3") → jurisdictionOfIncorporationC +4616 * KJUR.asn1.x509.OID.oid2atype("0.1.2.3.4") → 0.1.2.3.4 // unregistered OID +4617 */ +4618 KJUR.asn1.x509.OID.oid2atype = function(oid) { +4619 var list = KJUR.asn1.x509.OID.atype2oidList; +4620 for (var atype in list) { +4621 if (list[atype] == oid) return atype; +4622 } +4623 return oid; +4624 }; +4625 +4626 /** +4627 * convert OID name to OID value<br/> +4628 * @name name2oid +4629 * @memberOf KJUR.asn1.x509.OID +4630 * @function +4631 * @param {String} name OID name or OID (ex. "sha1" or "1.2.3.4") +4632 * @return {String} dot noted Object Identifer string (ex. 1.2.3.4) +4633 * @since asn1x509 1.0.11 +4634 * @description +4635 * This static method converts from OID name to OID string. +4636 * If OID is undefined then it returns empty string (i.e. ''). +4637 * @example +4638 * KJUR.asn1.x509.OID.name2oid("authorityInfoAccess") → "1.3.6.1.5.5.7.1.1" +4639 * KJUR.asn1.x509.OID.name2oid("1.2.3.4") → "1.2.3.4" +4640 * KJUR.asn1.x509.OID.name2oid("UNKNOWN NAME") → "" +4641 */ +4642 KJUR.asn1.x509.OID.name2oid = function(name) { +4643 if (name.match(/^[0-9.]+$/)) return name; +4644 var list = KJUR.asn1.x509.OID.name2oidList; +4645 if (list[name] === undefined) return ''; +4646 return list[name]; +4647 }; +4648 +4649 /** +4650 * X.509 certificate and CRL utilities class<br/> +4651 * @name KJUR.asn1.x509.X509Util +4652 * @class X.509 certificate and CRL utilities class +4653 */ +4654 KJUR.asn1.x509.X509Util = {}; +4655 +4656 /** +4657 * issue a certificate in PEM format (DEPRECATED) +4658 * @name newCertPEM +4659 * @memberOf KJUR.asn1.x509.X509Util +4660 * @function +4661 * @param {Array} param JSON object of parameter to issue a certificate +4662 * @since asn1x509 1.0.6 +4663 * @deprecated since jsrsasign 9.0.0 asn1x509 2.0.0. please move to {@link KJUR.asn1.x509.Certificate} constructor +4664 * @description +4665 * This method can issue a certificate by a simple +4666 * JSON object. +4667 * Signature value will be provided by signing with +4668 * private key using 'cakey' parameter or +4669 * hexadecimal signature value by 'sighex' parameter. +4670 * <br/> +4671 * NOTE: Algorithm parameter of AlgorithmIdentifier will +4672 * be set automatically by default. +4673 * (see {@link KJUR.asn1.x509.AlgorithmIdentifier}) +4674 * from jsrsasign 7.1.1 asn1x509 1.0.20. +4675 * <br/> +4676 * NOTE2: +4677 * RSA-PSS algorithm has been supported from jsrsasign 8.0.21. +4678 * As for RSA-PSS signature algorithm names and signing parameters +4679 * such as MGF function and salt length, please see +4680 * {@link KJUR.asn1.x509.AlgorithmIdentifier} class. +4681 * +4682 * @example +4683 * var certPEM = KJUR.asn1.x509.X509Util.newCertPEM({ +4684 * serial: {int: 4}, +4685 * sigalg: {name: 'SHA1withECDSA'}, +4686 * issuer: {str: '/C=US/O=a'}, +4687 * notbefore: {'str': '130504235959Z'}, +4688 * notafter: {'str': '140504235959Z'}, +4689 * subject: {str: '/C=US/O=b'}, +4690 * sbjpubkey: pubKeyObj, +4691 * ext: [ +4692 * {basicConstraints: {cA: true, critical: true}}, +4693 * {keyUsage: {bin: '11'}}, +4694 * ], +4695 * cakey: prvKeyObj +4696 * }); +4697 * // -- or -- +4698 * var certPEM = KJUR.asn1.x509.X509Util.newCertPEM({ +4699 * serial: {int: 4}, +4700 * sigalg: {name: 'SHA1withECDSA'}, +4701 * issuer: {str: '/C=US/O=a'}, +4702 * notbefore: {'str': '130504235959Z'}, +4703 * notafter: {'str': '140504235959Z'}, +4704 * subject: {str: '/C=US/O=b'}, +4705 * sbjpubkey: pubKeyPEM, +4706 * ext: [ +4707 * {basicConstraints: {cA: true, critical: true}}, +4708 * {keyUsage: {bin: '11'}}, +4709 * ], +4710 * cakey: [prvkey, pass]} +4711 * ); +4712 * // -- or -- +4713 * var certPEM = KJUR.asn1.x509.X509Util.newCertPEM({ +4714 * serial: {int: 1}, +4715 * sigalg: {name: 'SHA1withRSA'}, +4716 * issuer: {str: '/C=US/O=T1'}, +4717 * notbefore: {'str': '130504235959Z'}, +4718 * notafter: {'str': '140504235959Z'}, +4719 * subject: {str: '/C=US/O=T1'}, +4720 * sbjpubkey: pubKeyObj, +4721 * sighex: '0102030405..' +4722 * }); +4723 * // for the issuer and subject field, another +4724 * // representation is also available +4725 * var certPEM = KJUR.asn1.x509.X509Util.newCertPEM({ +4726 * serial: {int: 1}, +4727 * sigalg: {name: 'SHA256withRSA'}, +4728 * issuer: {C: "US", O: "T1"}, +4729 * notbefore: {'str': '130504235959Z'}, +4730 * notafter: {'str': '140504235959Z'}, +4731 * subject: {C: "US", O: "T1", CN: "http://example.com/"}, +4732 * sbjpubkey: pubKeyObj, +4733 * sighex: '0102030405..' +4734 * }); +4735 */ +4736 KJUR.asn1.x509.X509Util.newCertPEM = function(param) { +4737 var _KJUR_asn1_x509 = KJUR.asn1.x509, +4738 _TBSCertificate = _KJUR_asn1_x509.TBSCertificate, +4739 _Certificate = _KJUR_asn1_x509.Certificate; +4740 var cert = new _Certificate(param); +4741 return cert.getPEM(); +4742 }; +4743 +4744
\ No newline at end of file diff --git a/api/symbols/src/base64x-1.1.js.html b/api/symbols/src/base64x-1.1.js.html index f3b8151a..e032fc2f 100644 --- a/api/symbols/src/base64x-1.1.js.html +++ b/api/symbols/src/base64x-1.1.js.html @@ -5,7 +5,7 @@ .STRN {color: #393;} .REGX {color: #339;} .line {border-right: 1px dotted #666; color: #666; font-style: normal;} -
  1 /* base64x-1.1.25 (c) 2012-2022 Kenji Urushima | kjur.github.io/jsrsasign/license
+	
  1 /* base64x-1.1.26 (c) 2012-2022 Kenji Urushima | kjur.github.io/jsrsasign/license
   2  */
   3 /*
   4  * base64x.js - Base64url and supplementary functions for Tom Wu's base64.js library
@@ -23,7 +23,7 @@
  16  * @fileOverview
  17  * @name base64x-1.1.js
  18  * @author Kenji Urushima kenji.urushima@gmail.com
- 19  * @version jsrsasign 10.5.12 base64x 1.1.25 (2022-Mar-13)
+ 19  * @version jsrsasign 10.5.17 base64x 1.1.26 (2022-Apr-14)
  20  * @since jsrsasign 2.1
  21  * @license <a href="https://kjur.github.io/jsrsasign/license/">MIT License</a>
  22  */
@@ -953,314 +953,314 @@
 946  * @param {String} s hexadecimal string of IP address
 947  * @return {String} IP address string
 948  * @since jsrsasign 8.0.10 base64x 1.1.13
-949  * @description
-950  * This function converts a hexadecimal string of IPv4 or 
-951  * IPv6 address to IPv4 or IPv6 address string.
-952  * If byte length is not 4 nor 16, this returns a
-953  * hexadecimal string without conversion.
-954  * @see {@link hextoipv6}
-955  * @example
-956  * hextoip("c0a80101") &rarr "192.168.1.1"
-957  * hextoip("871020010db8000000000000000000000004") &rarr "2001:db8::4"
-958  * hextoip("c0a801010203") &rarr "c0a801010203" // 6 bytes
-959  * hextoip("zzz")) &rarr raise exception because of not hexadecimal
-960  */
-961 function hextoip(s) {
-962   var malformedMsg = "malformed hex value";
-963   if (! s.match(/^([0-9A-Fa-f][0-9A-Fa-f]){1,}$/))
-964     throw malformedMsg;
-965   if (s.length == 8) { // ipv4
-966     var ip;
-967     try {
-968       ip = parseInt(s.substr(0, 2), 16) + "." +
-969            parseInt(s.substr(2, 2), 16) + "." +
-970            parseInt(s.substr(4, 2), 16) + "." +
-971            parseInt(s.substr(6, 2), 16);
-972       return ip;
-973     } catch (ex) {
-974       throw malformedMsg;
-975     }
-976   } else if (s.length == 32) {
-977     return hextoipv6(s);
-978   } else {
-979     return s;
-980   }
-981 }
-982 
-983 /**
-984  * convert IPv4/v6 addresss to a hexadecimal string<br/>
-985  * @name iptohex
-986  * @function
-987  * @param {String} s IPv4/v6 address string
-988  * @return {String} hexadecimal string of IP address
-989  * @since jsrsasign 8.0.12 base64x 1.1.14
-990  * @description
-991  * This function converts IPv4 or IPv6 address string to
-992  * a hexadecimal string of IPv4 or IPv6 address.
-993  * @example
-994  * iptohex("192.168.1.1") &rarr "c0a80101"
-995  * iptohex("2001:db8::4") &rarr "871020010db8000000000000000000000004"
-996  * iptohex("zzz")) &rarr raise exception
-997  */
-998 function iptohex(s) {
-999   var malformedMsg = "malformed IP address";
-1000   s = s.toLowerCase(s);
+949  * @see hextoipv6
+950  * @see iptohex
+951  *
+952  * @description
+953  * This function converts a hexadecimal string of IPv4 or 
+954  * IPv6 address to IPv4 or IPv6 address string.
+955  * If byte length is not 4 nor 16, this returns a
+956  * hexadecimal string without conversion.
+957  * <br/>
+958  * NOTE: From jsrsasign 10.5.17, CIDR subnet mask notation also supported.
+959  *
+960  * @example
+961  * hextoip("c0a80101") → "192.168.1.1"
+962  * hextoip("871020010db8000000000000000000000004") &rarr "2001:db8::4"
+963  * hextoip("c0a80100ffffff00") → "192.168.1.0/24"
+964  * hextoip("c0a801010203") → "c0a801010203" // wrong 6 bytes
+965  * hextoip("zzz")) → raise exception because of not hexadecimal
+966  */
+967 function hextoip(s) {
+968     var malformedErr = new Error("malformed hex value");
+969     if (! s.match(/^([0-9A-Fa-f][0-9A-Fa-f]){1,}$/))
+970 	throw malformedErr;
+971     if (s.length == 8) { // ipv4
+972 	var ip;
+973 	try {
+974 	    ip = parseInt(s.substr(0, 2), 16) + "." +
+975  		 parseInt(s.substr(2, 2), 16) + "." +
+976 		 parseInt(s.substr(4, 2), 16) + "." +
+977 		 parseInt(s.substr(6, 2), 16);
+978 	    return ip;
+979 	} catch (ex) {
+980 	    throw malformedErr;
+981 	}
+982   } else if (s.length == 16) {
+983       try {
+984 	  return hextoip(s.substr(0, 8)) + "/" + ipprefixlen(s.substr(8));
+985       } catch (ex) {
+986 	  throw malformedErr;
+987       }
+988   } else if (s.length == 32) {
+989       return hextoipv6(s);
+990   } else if (s.length == 64) {
+991       try {
+992 	  return hextoipv6(s.substr(0, 32)) + "/" + ipprefixlen(s.substr(32));
+993       } catch (ex) {
+994 	  throw malformedErr;
+995       }
+996       return 
+997   } else {
+998     return s;
+999   }
+1000 }
 1001 
-1002   if (s.match(/^[0-9.]+$/)) {
-1003     var a = s.split(".");
-1004     if (a.length !== 4) throw malformedMsg;
-1005     var hex = "";
-1006     try {
-1007       for (var i = 0; i < 4; i++) {
-1008         var d = parseInt(a[i]);
-1009         hex += ("0" + d.toString(16)).slice(-2);
-1010       }
-1011       return hex;
-1012     } catch(ex) {
-1013       throw malformedMsg;
-1014     }
-1015   } else if (s.match(/^[0-9a-f:]+$/) && s.indexOf(":") !== -1) {
-1016     return ipv6tohex(s);
-1017   } else {
-1018     throw malformedMsg;
-1019   }
-1020 }
-1021 
-1022 // ==== ucs2hex / utf8 ==============================
-1023 
-1024 /**
-1025  * convert UCS-2 hexadecimal stirng to UTF-8 string<br/>
-1026  * @name ucs2hextoutf8
-1027  * @function
-1028  * @param {String} s hexadecimal string of UCS-2 string (ex. "0066")
-1029  * @return {String} UTF-8 string
-1030  * @since jsrsasign 10.1.13 base64x 1.1.20
-1031  * @description
-1032  * This function converts hexadecimal value of UCS-2 string to 
-1033  * UTF-8 string.
-1034  * @example
-1035  * ucs2hextoutf8("006600fc0072") &rarr "für"
-1036  */
-1037 /*
-1038 See: http://nomenclator.la.coocan.jp/unicode/ucs_utf.htm
-1039 UCS-2 to UTF-8
-1040 UCS-2 code point | UCS-2 bytes       | UTF-8 bytes
-1041 U+0000 .. U+007F | 00000000-0xxxxxxx | 0xxxxxxx (1 byte)
-1042 U+0080 .. U+07FF | 00000xxx-xxyyyyyy | 110xxxxx 10yyyyyy (2 byte)
-1043 U+0800 .. U+FFFF | xxxxyyyy-yyzzzzzz | 1110xxxx 10yyyyyy 10zzzzzz (3 byte)
-1044  */
-1045 function ucs2hextoutf8(s) {
-1046     function _conv(s) {
-1047 	var i1 = parseInt(s.substr(0, 2), 16);
-1048 	var i2 = parseInt(s.substr(2), 16);
-1049 	if (i1 == 0 & i2 < 0x80) { // 1 byte
-1050 	    return String.fromCharCode(i2);
-1051 	}
-1052 	if (i1 < 8) { // 2 bytes
-1053 	    var u1 = 0xc0 | ((i1 & 0x07) << 3) | ((i2 & 0xc0) >> 6);
-1054 	    var u2 = 0x80 | (i2 & 0x3f);
-1055 	    return hextoutf8(u1.toString(16) + u2.toString(16));
-1056 	}
-1057 	// 3 bytes
-1058 	var u1 = 0xe0 | ((i1 & 0xf0) >> 4);
-1059 	var u2 = 0x80 | ((i1 & 0x0f) << 2) | ((i2 & 0xc0) >> 6);
-1060 	var u3 = 0x80 | (i2 & 0x3f);
-1061 	return hextoutf8(u1.toString(16) + u2.toString(16) + u3.toString(16));
-1062     }
-1063     var a = s.match(/.{4}/g);
-1064     var a2 = a.map(_conv);
-1065     return a2.join("");
-1066 }
-1067 
-1068 // ==== URIComponent ================================
-1069 /**
-1070  * convert UTFa hexadecimal string to a URLComponent string such like "%67%68".<br/>
-1071  * Note that these "<code>0-9A-Za-z!'()*-._~</code>" characters will not
-1072  * converted to "%xx" format by builtin 'encodeURIComponent()' function.
-1073  * However this 'encodeURIComponentAll()' function will convert 
-1074  * all of characters into "%xx" format.
-1075  * @name encodeURIComponentAll
-1076  * @function
-1077  * @param {String} s hexadecimal string
-1078  * @return {String} URIComponent string such like "%67%68"
-1079  * @since 1.1
-1080  */
-1081 function encodeURIComponentAll(u8) {
-1082   var s = encodeURIComponent(u8);
-1083   var s2 = "";
-1084   for (var i = 0; i < s.length; i++) {
-1085     if (s[i] == "%") {
-1086       s2 = s2 + s.substr(i, 3);
-1087       i = i + 2;
-1088     } else {
-1089       s2 = s2 + "%" + stohex(s[i]);
-1090     }
-1091   }
-1092   return s2;
-1093 }
-1094 
-1095 // ==== new lines ================================
-1096 /**
-1097  * convert all DOS new line("\r\n") to UNIX new line("\n") in 
-1098  * a String "s".
-1099  * @name newline_toUnix
-1100  * @function
-1101  * @param {String} s string 
-1102  * @return {String} converted string
-1103  */
-1104 function newline_toUnix(s) {
-1105     s = s.replace(/\r\n/mg, "\n");
-1106     return s;
-1107 }
-1108 
-1109 /**
-1110  * convert all UNIX new line("\r\n") to DOS new line("\n") in 
-1111  * a String "s".
-1112  * @name newline_toDos
-1113  * @function
-1114  * @param {String} s string 
-1115  * @return {String} converted string
-1116  */
-1117 function newline_toDos(s) {
-1118     s = s.replace(/\r\n/mg, "\n");
-1119     s = s.replace(/\n/mg, "\r\n");
-1120     return s;
-1121 }
-1122 
-1123 // ==== string type checker ===================
-1124 
-1125 /**
-1126  * check whether a string is an integer string or not<br/>
-1127  * @name isInteger
-1128  * @memberOf KJUR.lang.String
-1129  * @function
-1130  * @static
-1131  * @param {String} s input string
-1132  * @return {Boolean} true if a string "s" is an integer string otherwise false
-1133  * @since base64x 1.1.7 jsrsasign 5.0.13
-1134  * @example
-1135  * KJUR.lang.String.isInteger("12345") → true
-1136  * KJUR.lang.String.isInteger("123ab") → false
-1137  */
-1138 KJUR.lang.String.isInteger = function(s) {
-1139     if (s.match(/^[0-9]+$/)) {
-1140 	return true;
-1141     } else if (s.match(/^-[0-9]+$/)) {
-1142 	return true;
-1143     } else {
-1144 	return false;
-1145     }
-1146 };
-1147 
-1148 /**
-1149  * check whether a string is an hexadecimal string or not (DEPRECATED)<br/>
-1150  * @name isHex
-1151  * @memberOf KJUR.lang.String
-1152  * @function
-1153  * @static
-1154  * @param {String} s input string
-1155  * @return {Boolean} true if a string "s" is an hexadecimal string otherwise false
-1156  * @since base64x 1.1.7 jsrsasign 5.0.13
-1157  * @deprecated from 10.0.6. please use {@link ishex}
-1158  * @see ishex
-1159  * @example
-1160  * KJUR.lang.String.isHex("1234") → true
-1161  * KJUR.lang.String.isHex("12ab") → true
-1162  * KJUR.lang.String.isHex("12AB") → true
-1163  * KJUR.lang.String.isHex("12ZY") → false
-1164  * KJUR.lang.String.isHex("121") → false -- odd length
-1165  */
-1166 KJUR.lang.String.isHex = function(s) {
-1167     return ishex(s);
-1168 };
-1169 
-1170 /**
-1171  * check whether a string is an hexadecimal string or not<br/>
-1172  * @name ishex
-1173  * @function
-1174  * @static
-1175  * @param {String} s input string
-1176  * @return {Boolean} true if a string "s" is an hexadecimal string otherwise false
-1177  * @since base64x 1.1.7 jsrsasign 5.0.13
-1178  * @example
-1179  * ishex("1234") → true
-1180  * ishex("12ab") → true
-1181  * ishex("12AB") → true
-1182  * ishex("12ZY") → false
-1183  * ishex("121") → false -- odd length
-1184  */
-1185 function ishex(s) {
-1186     if (s.length % 2 == 0 &&
-1187 	(s.match(/^[0-9a-f]+$/) || s.match(/^[0-9A-F]+$/))) {
-1188 	return true;
-1189     } else {
-1190 	return false;
-1191     }
-1192 };
+1002 /*
+1003  * convert subnet mask hex to ip address prefix length<br/>
+1004  * @name ipprefixlen
+1005  * @param {string} hMask hexadecimal string of ipv4/6 subnet mask (ex. "ffffff00" for v4 class C)
+1006  * @return {nummber} ip address prefix length (ex. 24 for IPv4 class C)
+1007  */
+1008 function ipprefixlen(hMask) {
+1009     var malformedErr = new Error("malformed mask");
+1010     var bMask;
+1011     try {
+1012 	bMask = new BigInteger(hMask, 16).toString(2);
+1013     } catch(ex) {
+1014 	throw malformedErr;
+1015     }
+1016     if (! bMask.match(/^1*0*$/)) throw malformedErr;
+1017     return bMask.replace(/0+$/, '').length;
+1018 }
+1019 
+1020 /**
+1021  * convert IPv4/v6 addresss to a hexadecimal string<br/>
+1022  * @name iptohex
+1023  * @function
+1024  * @param {String} s IPv4/v6 address string
+1025  * @return {String} hexadecimal string of IP address
+1026  * @since jsrsasign 8.0.12 base64x 1.1.14
+1027  * @see hextoip
+1028  * @see ipv6tohex
+1029  *
+1030  * @description
+1031  * This function converts IPv4 or IPv6 address string to
+1032  * a hexadecimal string of IPv4 or IPv6 address.
+1033  * <br/>
+1034  * NOTE: From jsrsasign 10.5.17, CIDR net mask notation also supported.
+1035  *
+1036  * @example
+1037  * iptohex("192.168.1.1") → "c0a80101"
+1038  * iptohex("2001:db8::4") → "871020010db8000000000000000000000004"
+1039  * iptohex("192.168.1.1/24") → "c0a80101ffffff00"
+1040  * iptohex("2001:db8::/120") → "871020010db8000000000000000000000000ffffffffffffffffffffffffffffffffff00"
+1041  * iptohex("zzz")) → raise exception
+1042  */
+1043 function iptohex(s) {
+1044     var malformedErr = new Error("malformed IP address");
+1045     s = s.toLowerCase(s);
+1046 
+1047     if (! s.match(/^[0-9a-f.:/]+$/) ) throw malformedErr;
+1048 
+1049     if (s.match(/^[0-9.]+$/)) {
+1050 	var a = s.split(".");
+1051 	if (a.length !== 4) throw malformedErr;
+1052 	var hex = "";
+1053 	try {
+1054 	    for (var i = 0; i < 4; i++) {
+1055 		var d = parseInt(a[i]);
+1056 		hex += ("0" + d.toString(16)).slice(-2);
+1057 	    }
+1058 	    return hex;
+1059 	} catch(ex) {
+1060 	    throw malformedErr;
+1061 	}
+1062     } else if (s.match(/^[0-9.]+\/[0-9]+$/)) {
+1063 	var aItem = s.split("/");
+1064 	return iptohex(aItem[0]) + ipnetmask(parseInt(aItem[1]), 32);
+1065     } else if (s.match(/^[0-9a-f:]+$/) && s.indexOf(":") !== -1) {
+1066 	return ipv6tohex(s);
+1067     } else if (s.match(/^[0-9a-f:]+\/[0-9]+$/) && s.indexOf(":") !== -1) {
+1068 	var aItem = s.split("/");
+1069 	return ipv6tohex(aItem[0]) + ipnetmask(parseInt(aItem[1]), 128);
+1070     } else {
+1071 	throw malformedErr;
+1072     }
+1073 }
+1074 
+1075 /*
+1076  * convert ip prefix length to net mask octets<br/>
+1077  * @param {number} prefixlen ip prefix length value (ex. 24 for IPv4 class C)
+1078  * @param {number} len ip address length (ex. 32 for IPv4 and 128 for IPv6)
+1079  * @return {string} hexadecimal string of net mask octets
+1080  * @example
+1081  * ipnetmask(24, 32) → "ffffff00" 
+1082  * ipnetmask(120, 128) → "ffffffffffffffffffffffffffffff00"
+1083  */
+1084 function ipnetmask(prefixlen, len) {
+1085     if (len == 32 && prefixlen == 0) return "00000000"; // v4
+1086     if (len == 128 && prefixlen == 0) return "00000000000000000000000000000000"; // v6
+1087     var b = Array(prefixlen + 1).join("1") + Array(len - prefixlen + 1).join("0");
+1088     return new BigInteger(b, 2).toString(16);
+1089 }
+1090 
+1091 // ==== ucs2hex / utf8 ==============================
+1092 
+1093 /**
+1094  * convert UCS-2 hexadecimal stirng to UTF-8 string<br/>
+1095  * @name ucs2hextoutf8
+1096  * @function
+1097  * @param {String} s hexadecimal string of UCS-2 string (ex. "0066")
+1098  * @return {String} UTF-8 string
+1099  * @since jsrsasign 10.1.13 base64x 1.1.20
+1100  * @description
+1101  * This function converts hexadecimal value of UCS-2 string to 
+1102  * UTF-8 string.
+1103  * @example
+1104  * ucs2hextoutf8("006600fc0072") &rarr "für"
+1105  */
+1106 /*
+1107 See: http://nomenclator.la.coocan.jp/unicode/ucs_utf.htm
+1108 UCS-2 to UTF-8
+1109 UCS-2 code point | UCS-2 bytes       | UTF-8 bytes
+1110 U+0000 .. U+007F | 00000000-0xxxxxxx | 0xxxxxxx (1 byte)
+1111 U+0080 .. U+07FF | 00000xxx-xxyyyyyy | 110xxxxx 10yyyyyy (2 byte)
+1112 U+0800 .. U+FFFF | xxxxyyyy-yyzzzzzz | 1110xxxx 10yyyyyy 10zzzzzz (3 byte)
+1113  */
+1114 function ucs2hextoutf8(s) {
+1115     function _conv(s) {
+1116 	var i1 = parseInt(s.substr(0, 2), 16);
+1117 	var i2 = parseInt(s.substr(2), 16);
+1118 	if (i1 == 0 & i2 < 0x80) { // 1 byte
+1119 	    return String.fromCharCode(i2);
+1120 	}
+1121 	if (i1 < 8) { // 2 bytes
+1122 	    var u1 = 0xc0 | ((i1 & 0x07) << 3) | ((i2 & 0xc0) >> 6);
+1123 	    var u2 = 0x80 | (i2 & 0x3f);
+1124 	    return hextoutf8(u1.toString(16) + u2.toString(16));
+1125 	}
+1126 	// 3 bytes
+1127 	var u1 = 0xe0 | ((i1 & 0xf0) >> 4);
+1128 	var u2 = 0x80 | ((i1 & 0x0f) << 2) | ((i2 & 0xc0) >> 6);
+1129 	var u3 = 0x80 | (i2 & 0x3f);
+1130 	return hextoutf8(u1.toString(16) + u2.toString(16) + u3.toString(16));
+1131     }
+1132     var a = s.match(/.{4}/g);
+1133     var a2 = a.map(_conv);
+1134     return a2.join("");
+1135 }
+1136 
+1137 // ==== URIComponent ================================
+1138 /**
+1139  * convert UTFa hexadecimal string to a URLComponent string such like "%67%68".<br/>
+1140  * Note that these "<code>0-9A-Za-z!'()*-._~</code>" characters will not
+1141  * converted to "%xx" format by builtin 'encodeURIComponent()' function.
+1142  * However this 'encodeURIComponentAll()' function will convert 
+1143  * all of characters into "%xx" format.
+1144  * @name encodeURIComponentAll
+1145  * @function
+1146  * @param {String} s hexadecimal string
+1147  * @return {String} URIComponent string such like "%67%68"
+1148  * @since 1.1
+1149  */
+1150 function encodeURIComponentAll(u8) {
+1151   var s = encodeURIComponent(u8);
+1152   var s2 = "";
+1153   for (var i = 0; i < s.length; i++) {
+1154     if (s[i] == "%") {
+1155       s2 = s2 + s.substr(i, 3);
+1156       i = i + 2;
+1157     } else {
+1158       s2 = s2 + "%" + stohex(s[i]);
+1159     }
+1160   }
+1161   return s2;
+1162 }
+1163 
+1164 // ==== new lines ================================
+1165 /**
+1166  * convert all DOS new line("\r\n") to UNIX new line("\n") in 
+1167  * a String "s".
+1168  * @name newline_toUnix
+1169  * @function
+1170  * @param {String} s string 
+1171  * @return {String} converted string
+1172  */
+1173 function newline_toUnix(s) {
+1174     s = s.replace(/\r\n/mg, "\n");
+1175     return s;
+1176 }
+1177 
+1178 /**
+1179  * convert all UNIX new line("\r\n") to DOS new line("\n") in 
+1180  * a String "s".
+1181  * @name newline_toDos
+1182  * @function
+1183  * @param {String} s string 
+1184  * @return {String} converted string
+1185  */
+1186 function newline_toDos(s) {
+1187     s = s.replace(/\r\n/mg, "\n");
+1188     s = s.replace(/\n/mg, "\r\n");
+1189     return s;
+1190 }
+1191 
+1192 // ==== string type checker ===================
 1193 
 1194 /**
-1195  * check whether a string is a base64 encoded string or not<br/>
-1196  * Input string can conclude new lines or space characters.
-1197  * @name isBase64
-1198  * @memberOf KJUR.lang.String
-1199  * @function
-1200  * @static
-1201  * @param {String} s input string
-1202  * @return {Boolean} true if a string "s" is a base64 encoded string otherwise false
-1203  * @since base64x 1.1.7 jsrsasign 5.0.13
-1204  * @example
-1205  * KJUR.lang.String.isBase64("YWE=") → true
-1206  * KJUR.lang.String.isBase64("YW_=") → false
-1207  * KJUR.lang.String.isBase64("YWE") → false -- length shall be multiples of 4
-1208  */
-1209 KJUR.lang.String.isBase64 = function(s) {
-1210     s = s.replace(/\s+/g, "");
-1211     if (s.match(/^[0-9A-Za-z+\/]+={0,3}$/) && s.length % 4 == 0) {
-1212 	return true;
-1213     } else {
-1214 	return false;
-1215     }
-1216 };
-1217 
-1218 /**
-1219  * check whether a string is a base64url encoded string or not<br/>
-1220  * Input string can conclude new lines or space characters.
-1221  * @name isBase64URL
-1222  * @memberOf KJUR.lang.String
-1223  * @function
-1224  * @static
-1225  * @param {String} s input string
-1226  * @return {Boolean} true if a string "s" is a base64url encoded string otherwise false
-1227  * @since base64x 1.1.7 jsrsasign 5.0.13
+1195  * check whether a string is an integer string or not<br/>
+1196  * @name isInteger
+1197  * @memberOf KJUR.lang.String
+1198  * @function
+1199  * @static
+1200  * @param {String} s input string
+1201  * @return {Boolean} true if a string "s" is an integer string otherwise false
+1202  * @since base64x 1.1.7 jsrsasign 5.0.13
+1203  * @example
+1204  * KJUR.lang.String.isInteger("12345") → true
+1205  * KJUR.lang.String.isInteger("123ab") → false
+1206  */
+1207 KJUR.lang.String.isInteger = function(s) {
+1208     if (s.match(/^[0-9]+$/)) {
+1209 	return true;
+1210     } else if (s.match(/^-[0-9]+$/)) {
+1211 	return true;
+1212     } else {
+1213 	return false;
+1214     }
+1215 };
+1216 
+1217 /**
+1218  * check whether a string is an hexadecimal string or not (DEPRECATED)<br/>
+1219  * @name isHex
+1220  * @memberOf KJUR.lang.String
+1221  * @function
+1222  * @static
+1223  * @param {String} s input string
+1224  * @return {Boolean} true if a string "s" is an hexadecimal string otherwise false
+1225  * @since base64x 1.1.7 jsrsasign 5.0.13
+1226  * @deprecated from 10.0.6. please use {@link ishex}
+1227  * @see ishex
 1228  * @example
-1229  * KJUR.lang.String.isBase64URL("YWE") → true
-1230  * KJUR.lang.String.isBase64URL("YW-") → true
-1231  * KJUR.lang.String.isBase64URL("YW+") → false
-1232  */
-1233 KJUR.lang.String.isBase64URL = function(s) {
-1234     if (s.match(/[+/=]/)) return false;
-1235     s = b64utob64(s);
-1236     return KJUR.lang.String.isBase64(s);
+1229  * KJUR.lang.String.isHex("1234") → true
+1230  * KJUR.lang.String.isHex("12ab") → true
+1231  * KJUR.lang.String.isHex("12AB") → true
+1232  * KJUR.lang.String.isHex("12ZY") → false
+1233  * KJUR.lang.String.isHex("121") → false -- odd length
+1234  */
+1235 KJUR.lang.String.isHex = function(s) {
+1236     return ishex(s);
 1237 };
 1238 
 1239 /**
-1240  * check whether a string is a string of integer array or not<br/>
-1241  * Input string can conclude new lines or space characters.
-1242  * @name isIntegerArray
-1243  * @memberOf KJUR.lang.String
-1244  * @function
-1245  * @static
-1246  * @param {String} s input string
-1247  * @return {Boolean} true if a string "s" is a string of integer array otherwise false
-1248  * @since base64x 1.1.7 jsrsasign 5.0.13
-1249  * @example
-1250  * KJUR.lang.String.isIntegerArray("[1,2,3]") → true
-1251  * KJUR.lang.String.isIntegerArray("  [1, 2, 3  ] ") → true
-1252  * KJUR.lang.String.isIntegerArray("[a,2]") → false
+1240  * check whether a string is an hexadecimal string or not<br/>
+1241  * @name ishex
+1242  * @function
+1243  * @static
+1244  * @param {String} s input string
+1245  * @return {Boolean} true if a string "s" is an hexadecimal string otherwise false
+1246  * @since base64x 1.1.7 jsrsasign 5.0.13
+1247  * @example
+1248  * ishex("1234") → true
+1249  * ishex("12ab") → true
+1250  * ishex("12AB") → true
+1251  * ishex("12ZY") → false
+1252  * ishex("121") → false -- odd length
 1253  */
-1254 KJUR.lang.String.isIntegerArray = function(s) {
-1255     s = s.replace(/\s+/g, "");
-1256     if (s.match(/^\[[0-9,]+\]$/)) {
+1254 function ishex(s) {
+1255     if (s.length % 2 == 0 &&
+1256 	(s.match(/^[0-9a-f]+$/) || s.match(/^[0-9A-F]+$/))) {
 1257 	return true;
 1258     } else {
 1259 	return false;
@@ -1268,490 +1268,559 @@
 1261 };
 1262 
 1263 /**
-1264  * check whether a string consists of PrintableString characters<br/>
-1265  * @name isPrintable
-1266  * @memberOf KJUR.lang.String
-1267  * @function
-1268  * @static
-1269  * @param {String} s input string
-1270  * @return {Boolean} true if a string "s" consists of PrintableString characters
-1271  * @since jsrsasign 9.0.0 base64x 1.1.16
-1272  * A PrintableString consists of following characters
-1273  * <pre>
-1274  * 0-9A-Za-z '()+,-./:=?
-1275  * </pre>
-1276  * This method returns false when other characters than above.
-1277  * Otherwise it returns true.
-1278  * @example
-1279  * KJUR.lang.String.isPrintable("abc") → true
-1280  * KJUR.lang.String.isPrintable("abc@") → false
-1281  * KJUR.lang.String.isPrintable("あいう") → false
-1282  */
-1283 KJUR.lang.String.isPrintable = function(s) {
-1284     if (s.match(/^[0-9A-Za-z '()+,-./:=?]*$/) !== null) return true;
-1285     return false;
-1286 };
-1287 
-1288 /**
-1289  * check whether a string consists of IAString characters<br/>
-1290  * @name isIA5
+1264  * check whether a string is a base64 encoded string or not<br/>
+1265  * Input string can conclude new lines or space characters.
+1266  * @name isBase64
+1267  * @memberOf KJUR.lang.String
+1268  * @function
+1269  * @static
+1270  * @param {String} s input string
+1271  * @return {Boolean} true if a string "s" is a base64 encoded string otherwise false
+1272  * @since base64x 1.1.7 jsrsasign 5.0.13
+1273  * @example
+1274  * KJUR.lang.String.isBase64("YWE=") → true
+1275  * KJUR.lang.String.isBase64("YW_=") → false
+1276  * KJUR.lang.String.isBase64("YWE") → false -- length shall be multiples of 4
+1277  */
+1278 KJUR.lang.String.isBase64 = function(s) {
+1279     s = s.replace(/\s+/g, "");
+1280     if (s.match(/^[0-9A-Za-z+\/]+={0,3}$/) && s.length % 4 == 0) {
+1281 	return true;
+1282     } else {
+1283 	return false;
+1284     }
+1285 };
+1286 
+1287 /**
+1288  * check whether a string is a base64url encoded string or not<br/>
+1289  * Input string can conclude new lines or space characters.
+1290  * @name isBase64URL
 1291  * @memberOf KJUR.lang.String
 1292  * @function
 1293  * @static
 1294  * @param {String} s input string
-1295  * @return {Boolean} true if a string "s" consists of IA5String characters
-1296  * @since jsrsasign 9.0.0 base64x 1.1.16
-1297  * A IA5String consists of following characters
-1298  * <pre>
-1299  * %x00-21/%x23-7F (i.e. ASCII characters excludes double quote(%x22)
-1300  * </pre>
-1301  * This method returns false when other characters than above.
-1302  * Otherwise it returns true.
-1303  * @example
-1304  * KJUR.lang.String.isIA5("abc") → true
-1305  * KJUR.lang.String.isIA5('"abc"') → false
-1306  * KJUR.lang.String.isIA5("あいう") → false
-1307  */
-1308 KJUR.lang.String.isIA5 = function(s) {
-1309     if (s.match(/^[\x20-\x21\x23-\x7f]*$/) !== null) return true;
-1310     return false;
-1311 };
-1312 
-1313 /**
-1314  * check whether a string is RFC 822 mail address<br/>
-1315  * @name isMail
-1316  * @memberOf KJUR.lang.String
-1317  * @function
-1318  * @static
-1319  * @param {String} s input string
-1320  * @return {Boolean} true if a string "s" RFC 822 mail address
-1321  * @since jsrsasign 9.0.0 base64x 1.1.16
-1322  * This static method will check string s is RFC 822 compliant mail address.
-1323  * @example
-1324  * KJUR.lang.String.isMail("abc") → false
-1325  * KJUR.lang.String.isMail("abc@example") → false
-1326  * KJUR.lang.String.isMail("abc@example.com") → true
-1327  */
-1328 KJUR.lang.String.isMail = function(s) {
-1329     if (s.match(/^[A-Za-z0-9]{1}[A-Za-z0-9_.-]*@{1}[A-Za-z0-9_.-]{1,}\.[A-Za-z0-9]{1,}$/) !== null) return true;
-1330     return false;
-1331 };
-1332 
-1333 // ==== others ================================
-1334 
-1335 /**
-1336  * canonicalize hexadecimal string of positive integer<br/>
-1337  * @name hextoposhex
-1338  * @function
-1339  * @param {String} s hexadecimal string 
-1340  * @return {String} canonicalized hexadecimal string of positive integer
-1341  * @since base64x 1.1.10 jsrsasign 7.1.4
-1342  * @description
-1343  * This method canonicalize a hexadecimal string of positive integer
-1344  * for two's complement representation.
-1345  * Canonicalized hexadecimal string of positive integer will be:
-1346  * <ul>
-1347  * <li>Its length is always even.</li>
-1348  * <li>If odd length it will be padded with leading zero.<li>
-1349  * <li>If it is even length and its first character is "8" or greater,
-1350  * it will be padded with "00" to make it positive integer.</li>
-1351  * </ul>
-1352  * @example
-1353  * hextoposhex("abcd") → "00abcd"
-1354  * hextoposhex("1234") → "1234"
-1355  * hextoposhex("12345") → "012345"
-1356  */
-1357 function hextoposhex(s) {
-1358     if (s.length % 2 == 1) return "0" + s;
-1359     if (s.substr(0, 1) > "7") return "00" + s;
-1360     return s;
-1361 }
-1362 
-1363 /**
-1364  * convert string of integer array to hexadecimal string.<br/>
-1365  * @name intarystrtohex
-1366  * @function
-1367  * @param {String} s string of integer array
-1368  * @return {String} hexadecimal string
-1369  * @since base64x 1.1.6 jsrsasign 5.0.2
-1370  * @throws "malformed integer array string: *" for wrong input
-1371  * @description
-1372  * This function converts a string of JavaScript integer array to
-1373  * a hexadecimal string. Each integer value shall be in a range 
-1374  * from 0 to 255 otherwise it raise exception. Input string can
-1375  * have extra space or newline string so that they will be ignored.
-1376  * 
-1377  * @example
-1378  * intarystrtohex(" [123, 34, 101, 34, 58] ")
-1379  * → 7b2265223a (i.e. '{"e":' as string)
-1380  */
-1381 function intarystrtohex(s) {
-1382   s = s.replace(/^\s*\[\s*/, '');
-1383   s = s.replace(/\s*\]\s*$/, '');
-1384   s = s.replace(/\s*/g, '');
-1385   try {
-1386     var hex = s.split(/,/).map(function(element, index, array) {
-1387       var i = parseInt(element);
-1388       if (i < 0 || 255 < i) throw "integer not in range 0-255";
-1389       var hI = ("00" + i.toString(16)).slice(-2);
-1390       return hI;
-1391     }).join('');
-1392     return hex;
-1393   } catch(ex) {
-1394     throw "malformed integer array string: " + ex;
-1395   }
-1396 }
-1397 
-1398 /**
-1399  * find index of string where two string differs
-1400  * @name strdiffidx
-1401  * @function
-1402  * @param {String} s1 string to compare
-1403  * @param {String} s2 string to compare
-1404  * @return {Number} string index of where character differs. Return -1 if same.
-1405  * @since jsrsasign 4.9.0 base64x 1.1.5
-1406  * @example
-1407  * strdiffidx("abcdefg", "abcd4fg") -> 4
-1408  * strdiffidx("abcdefg", "abcdefg") -> -1
-1409  * strdiffidx("abcdefg", "abcdef") -> 6
-1410  * strdiffidx("abcdefgh", "abcdef") -> 6
-1411  */
-1412 var strdiffidx = function(s1, s2) {
-1413     var n = s1.length;
-1414     if (s1.length > s2.length) n = s2.length;
-1415     for (var i = 0; i < n; i++) {
-1416 	if (s1.charCodeAt(i) != s2.charCodeAt(i)) return i;
-1417     }
-1418     if (s1.length != s2.length) return n;
-1419     return -1; // same
-1420 };
-1421 
-1422 // ==== hex / oid =================================
-1423 
-1424 /**
-1425  * get hexadecimal value of object identifier from dot noted oid value
-1426  * @name oidtohex
-1427  * @function
-1428  * @param {String} oidString dot noted string of object identifier
-1429  * @return {String} hexadecimal value of object identifier
-1430  * @since jsrsasign 10.1.0 base64x 1.1.18
-1431  * @see hextooid
-1432  * @see ASN1HEX.hextooidstr
-1433  * @see KJUR.asn1.ASN1Util.oidIntToHex
-1434  * @description
-1435  * This static method converts from object identifier value string.
-1436  * to hexadecimal string representation of it.
-1437  * {@link hextooid} is a reverse function of this.
-1438  * @example
-1439  * oidtohex("2.5.4.6") → "550406"
-1440  */
-1441 function oidtohex(oidString) {
-1442     var itox = function(i) {
-1443         var h = i.toString(16);
-1444         if (h.length == 1) h = '0' + h;
-1445         return h;
-1446     };
-1447 
-1448     var roidtox = function(roid) {
-1449         var h = '';
-1450         var bi = parseInt(roid, 10);
-1451         var b = bi.toString(2);
-1452 
-1453         var padLen = 7 - b.length % 7;
-1454         if (padLen == 7) padLen = 0;
-1455         var bPad = '';
-1456         for (var i = 0; i < padLen; i++) bPad += '0';
-1457         b = bPad + b;
-1458         for (var i = 0; i < b.length - 1; i += 7) {
-1459             var b8 = b.substr(i, 7);
-1460             if (i != b.length - 7) b8 = '1' + b8;
-1461             h += itox(parseInt(b8, 2));
-1462         }
-1463         return h;
-1464     };
-1465     
-1466     try {
-1467 	if (! oidString.match(/^[0-9.]+$/)) return null;
-1468     
-1469 	var h = '';
-1470 	var a = oidString.split('.');
-1471 	var i0 = parseInt(a[0], 10) * 40 + parseInt(a[1], 10);
-1472 	h += itox(i0);
-1473 	a.splice(0, 2);
-1474 	for (var i = 0; i < a.length; i++) {
-1475             h += roidtox(a[i]);
-1476 	}
-1477 	return h;
-1478     } catch(ex) {
-1479 	return null;
-1480     }
-1481 };
-1482 
-1483 /**
-1484  * get oid string from hexadecimal value of object identifier<br/>
-1485  * @name hextooid
-1486  * @function
-1487  * @param {String} h hexadecimal value of object identifier
-1488  * @return {String} dot noted string of object identifier (ex. "1.2.3.4")
-1489  * @since jsrsasign 10.1.0 base64x 1.1.18
-1490  * @see oidtohex
-1491  * @see ASN1HEX.hextooidstr
-1492  * @see KJUR.asn1.ASN1Util.oidIntToHex
-1493  * @description
-1494  * This static method converts from hexadecimal object identifier value 
-1495  * to dot noted OID value (ex. "1.2.3.4").
-1496  * {@link oidtohex} is a reverse function of this.
-1497  * @example
-1498  * hextooid("550406") → "2.5.4.6"
-1499  */
-1500 function hextooid(h) {
-1501     if (! ishex(h)) return null;
-1502     try {
-1503 	var a = [];
-1504 
-1505 	// a[0], a[1]
-1506 	var hex0 = h.substr(0, 2);
-1507 	var i0 = parseInt(hex0, 16);
-1508 	a[0] = new String(Math.floor(i0 / 40));
-1509 	a[1] = new String(i0 % 40);
-1510 
-1511 	// a[2]..a[n]
-1512 	var hex1 = h.substr(2);
-1513 	var b = [];
-1514 	for (var i = 0; i < hex1.length / 2; i++) {
-1515 	    b.push(parseInt(hex1.substr(i * 2, 2), 16));
-1516 	}
-1517 	var c = [];
-1518 	var cbin = "";
-1519 	for (var i = 0; i < b.length; i++) {
-1520             if (b[i] & 0x80) {
-1521 		cbin = cbin + strpad((b[i] & 0x7f).toString(2), 7);
-1522             } else {
-1523 		cbin = cbin + strpad((b[i] & 0x7f).toString(2), 7);
-1524 		c.push(new String(parseInt(cbin, 2)));
-1525 		cbin = "";
-1526             }
-1527 	}
-1528 
-1529 	var s = a.join(".");
-1530 	if (c.length > 0) s = s + "." + c.join(".");
-1531 	return s;
-1532     } catch(ex) {
-1533 	return null;
-1534     }
-1535 };
-1536 
-1537 /**
-1538  * string padding<br/>
-1539  * @name strpad
-1540  * @function
-1541  * @param {String} s input string
-1542  * @param {Number} len output string length
-1543  * @param {String} padchar padding character (default is "0")
-1544  * @return {String} padded string
-1545  * @since jsrsasign 10.1.0 base64x 1.1.18
-1546  * @example
-1547  * strpad("1234", 10, "0") → "0000001234"
-1548  * strpad("1234", 10, " ") → "      1234"
-1549  * strpad("1234", 10)      → "0000001234"
-1550  */
-1551 var strpad = function(s, len, padchar) {
-1552     if (padchar == undefined) padchar = "0";
-1553     if (s.length >= len) return s;
-1554     return new Array(len - s.length + 1).join(padchar) + s;
-1555 };
-1556 
-1557 // ==== bitstr hex / int =================================
-1558 
-1559 /**
-1560  * convert from hexadecimal string of ASN.1 BitString value with unused bit to integer value<br/>
-1561  * @name bitstrtoint
-1562  * @function
-1563  * @param {String} h hexadecimal string of ASN.1 BitString value with unused bit
-1564  * @return {Number} positive integer value of the BitString
-1565  * @since jsrsasign 10.1.3 base64x 1.1.19
-1566  * @see inttobitstr
-1567  * @see KJUR.asn1.DERBitString
-1568  * @see ASN1HEX.getInt
-1569  * 
-1570  * @description
-1571  * This function converts from hexadecimal string of ASN.1 BitString
-1572  * value with unused bit to its integer value. <br/>
-1573  * When an improper hexadecimal string of BitString value
-1574  * is applied, this returns -1.
-1575  * 
-1576  * @example
-1577  * // "03c8" → 0xc8 unusedbit=03 → 11001000b unusedbit=03 → 11001b → 25
-1578  * bitstrtoint("03c8") → 25
-1579  * // "02fff8" → 0xfff8 unusedbit=02 → 1111111111111000b unusedbit=02
-1580  * //   11111111111110b → 16382
-1581  * bitstrtoint("02fff8") → 16382
-1582  * bitstrtoint("05a0") → 5 (=101b)
-1583  * bitstrtoint("ff00") → -1 // for improper BitString value
-1584  * bitstrtoint("05a0").toString(2) → "101"
-1585  * bitstrtoint("07a080").toString(2) → "101000001"
-1586  */
-1587 function bitstrtoint(h) {
-1588     if (h.length % 2 != 0) return -1; 
-1589     h = h.toLowerCase();
-1590     if (h.match(/^[0-9a-f]+$/) == null) return -1;
-1591     try {
-1592 	var hUnusedbit = h.substr(0, 2);
-1593 	if (hUnusedbit == "00")
-1594 	    return parseInt(h.substr(2), 16);
-1595 	var iUnusedbit = parseInt(hUnusedbit, 16);
-1596 	if (iUnusedbit > 7) return -1;
-1597 	var hValue = h.substr(2);
-1598 	var bValue = parseInt(hValue, 16).toString(2);
-1599 	if (bValue == "0") bValue = "00000000";
-1600 	bValue = bValue.slice(0, 0 - iUnusedbit);
-1601 	var iValue = parseInt(bValue, 2);
-1602 	if (iValue == NaN) return -1;
-1603 	return iValue;
-1604     } catch(ex) {
-1605 	return -1;
-1606     }
-1607 };
-1608 
-1609 /**
-1610  * convert from integer value to hexadecimal string of ASN.1 BitString value with unused bit<br/>
-1611  * @name inttobitstr
-1612  * @function
-1613  * @param {Number} n integer value of ASN.1 BitString
-1614  * @return {String} hexadecimal string of ASN.1 BitString value with unused bit
-1615  * @since jsrsasign 10.1.3 base64x 1.1.19
-1616  * @see bitstrtoint
-1617  * @see KJUR.asn1.DERBitString
-1618  * @see ASN1HEX.getInt
-1619  * 
-1620  * @description
-1621  * This function converts from an integer value to 
-1622  * hexadecimal string of ASN.1 BitString value
-1623  * with unused bit. <br/>
-1624  * When "n" is not non-negative number, this returns null
-1625  * 
-1626  * @example
-1627  * // 25 → 11001b → 11001000b unusedbit=03 → 0xc8 unusedbit=03 → "03c8"
-1628  * inttobitstr(25) → "03c8"
-1629  * inttobitstr(-3) → null
-1630  * inttobitstr("abc") → null
-1631  * inttobitstr(parseInt("11001", 2)) → "03c8"
-1632  * inttobitstr(parseInt("101", 2)) → "05a0"
-1633  * inttobitstr(parseInt("101000001", 2)) → "07a080"
-1634  */
-1635 function inttobitstr(n) {
-1636     if (typeof n != "number") return null;
-1637     if (n < 0) return null;
-1638     var bValue = Number(n).toString(2);
-1639     var iUnusedbit = 8 - bValue.length % 8;
-1640     if (iUnusedbit == 8) iUnusedbit = 0;
-1641     bValue = bValue + strpad("", iUnusedbit, "0");
-1642     var hValue = parseInt(bValue, 2).toString(16);
-1643     if (hValue.length % 2 == 1) hValue = "0" + hValue;
-1644     var hUnusedbit = "0" + iUnusedbit;
-1645     return hUnusedbit + hValue;
-1646 };
-1647 
-1648 // ==== bitstr hex / binary string =======================
-1649 
-1650 /**
-1651  * convert from hexadecimal string of ASN.1 BitString value with unused bit to binary string<br/>
-1652  * @name bitstrtobinstr
-1653  * @function
-1654  * @param {string} h hexadecimal string of ASN.1 BitString value with unused bit
-1655  * @return {string} binary string
-1656  * @since jsrsasign 10.5.4 base64x 1.1.21
-1657  * @see binstrtobitstr
-1658  * @see inttobitstr
-1659  * 
-1660  * @description
-1661  * This function converts from hexadecimal string of ASN.1 BitString
-1662  * value with unused bit to its integer value. <br/>
-1663  * When an improper hexadecimal string of BitString value
-1664  * is applied, this returns null.
-1665  * 
-1666  * @example
-1667  * bitstrtobinstr("05a0") → "101"
-1668  * bitstrtobinstr("07a080") → "101000001"
-1669  * bitstrtoint(502) → null // non ASN.1 BitString value
-1670  * bitstrtoint("ff00") → -1 // for improper BitString value
-1671  */
-1672 function bitstrtobinstr(h) {
-1673     var n = bitstrtoint(h);
-1674     if (n == -1) return null;
-1675     return n.toString(2);
-1676 }
+1295  * @return {Boolean} true if a string "s" is a base64url encoded string otherwise false
+1296  * @since base64x 1.1.7 jsrsasign 5.0.13
+1297  * @example
+1298  * KJUR.lang.String.isBase64URL("YWE") → true
+1299  * KJUR.lang.String.isBase64URL("YW-") → true
+1300  * KJUR.lang.String.isBase64URL("YW+") → false
+1301  */
+1302 KJUR.lang.String.isBase64URL = function(s) {
+1303     if (s.match(/[+/=]/)) return false;
+1304     s = b64utob64(s);
+1305     return KJUR.lang.String.isBase64(s);
+1306 };
+1307 
+1308 /**
+1309  * check whether a string is a string of integer array or not<br/>
+1310  * Input string can conclude new lines or space characters.
+1311  * @name isIntegerArray
+1312  * @memberOf KJUR.lang.String
+1313  * @function
+1314  * @static
+1315  * @param {String} s input string
+1316  * @return {Boolean} true if a string "s" is a string of integer array otherwise false
+1317  * @since base64x 1.1.7 jsrsasign 5.0.13
+1318  * @example
+1319  * KJUR.lang.String.isIntegerArray("[1,2,3]") → true
+1320  * KJUR.lang.String.isIntegerArray("  [1, 2, 3  ] ") → true
+1321  * KJUR.lang.String.isIntegerArray("[a,2]") → false
+1322  */
+1323 KJUR.lang.String.isIntegerArray = function(s) {
+1324     s = s.replace(/\s+/g, "");
+1325     if (s.match(/^\[[0-9,]+\]$/)) {
+1326 	return true;
+1327     } else {
+1328 	return false;
+1329     }
+1330 };
+1331 
+1332 /**
+1333  * check whether a string consists of PrintableString characters<br/>
+1334  * @name isPrintable
+1335  * @memberOf KJUR.lang.String
+1336  * @function
+1337  * @static
+1338  * @param {String} s input string
+1339  * @return {Boolean} true if a string "s" consists of PrintableString characters
+1340  * @since jsrsasign 9.0.0 base64x 1.1.16
+1341  * A PrintableString consists of following characters
+1342  * <pre>
+1343  * 0-9A-Za-z '()+,-./:=?
+1344  * </pre>
+1345  * This method returns false when other characters than above.
+1346  * Otherwise it returns true.
+1347  * @example
+1348  * KJUR.lang.String.isPrintable("abc") → true
+1349  * KJUR.lang.String.isPrintable("abc@") → false
+1350  * KJUR.lang.String.isPrintable("あいう") → false
+1351  */
+1352 KJUR.lang.String.isPrintable = function(s) {
+1353     if (s.match(/^[0-9A-Za-z '()+,-./:=?]*$/) !== null) return true;
+1354     return false;
+1355 };
+1356 
+1357 /**
+1358  * check whether a string consists of IAString characters<br/>
+1359  * @name isIA5
+1360  * @memberOf KJUR.lang.String
+1361  * @function
+1362  * @static
+1363  * @param {String} s input string
+1364  * @return {Boolean} true if a string "s" consists of IA5String characters
+1365  * @since jsrsasign 9.0.0 base64x 1.1.16
+1366  * A IA5String consists of following characters
+1367  * <pre>
+1368  * %x00-21/%x23-7F (i.e. ASCII characters excludes double quote(%x22)
+1369  * </pre>
+1370  * This method returns false when other characters than above.
+1371  * Otherwise it returns true.
+1372  * @example
+1373  * KJUR.lang.String.isIA5("abc") → true
+1374  * KJUR.lang.String.isIA5('"abc"') → false
+1375  * KJUR.lang.String.isIA5("あいう") → false
+1376  */
+1377 KJUR.lang.String.isIA5 = function(s) {
+1378     if (s.match(/^[\x20-\x21\x23-\x7f]*$/) !== null) return true;
+1379     return false;
+1380 };
+1381 
+1382 /**
+1383  * check whether a string is RFC 822 mail address<br/>
+1384  * @name isMail
+1385  * @memberOf KJUR.lang.String
+1386  * @function
+1387  * @static
+1388  * @param {String} s input string
+1389  * @return {Boolean} true if a string "s" RFC 822 mail address
+1390  * @since jsrsasign 9.0.0 base64x 1.1.16
+1391  * This static method will check string s is RFC 822 compliant mail address.
+1392  * @example
+1393  * KJUR.lang.String.isMail("abc") → false
+1394  * KJUR.lang.String.isMail("abc@example") → false
+1395  * KJUR.lang.String.isMail("abc@example.com") → true
+1396  */
+1397 KJUR.lang.String.isMail = function(s) {
+1398     if (s.match(/^[A-Za-z0-9]{1}[A-Za-z0-9_.-]*@{1}[A-Za-z0-9_.-]{1,}\.[A-Za-z0-9]{1,}$/) !== null) return true;
+1399     return false;
+1400 };
+1401 
+1402 // ==== others ================================
+1403 
+1404 /**
+1405  * canonicalize hexadecimal string of positive integer<br/>
+1406  * @name hextoposhex
+1407  * @function
+1408  * @param {String} s hexadecimal string 
+1409  * @return {String} canonicalized hexadecimal string of positive integer
+1410  * @since base64x 1.1.10 jsrsasign 7.1.4
+1411  * @description
+1412  * This method canonicalize a hexadecimal string of positive integer
+1413  * for two's complement representation.
+1414  * Canonicalized hexadecimal string of positive integer will be:
+1415  * <ul>
+1416  * <li>Its length is always even.</li>
+1417  * <li>If odd length it will be padded with leading zero.<li>
+1418  * <li>If it is even length and its first character is "8" or greater,
+1419  * it will be padded with "00" to make it positive integer.</li>
+1420  * </ul>
+1421  * @example
+1422  * hextoposhex("abcd") → "00abcd"
+1423  * hextoposhex("1234") → "1234"
+1424  * hextoposhex("12345") → "012345"
+1425  */
+1426 function hextoposhex(s) {
+1427     if (s.length % 2 == 1) return "0" + s;
+1428     if (s.substr(0, 1) > "7") return "00" + s;
+1429     return s;
+1430 }
+1431 
+1432 /**
+1433  * convert string of integer array to hexadecimal string.<br/>
+1434  * @name intarystrtohex
+1435  * @function
+1436  * @param {String} s string of integer array
+1437  * @return {String} hexadecimal string
+1438  * @since base64x 1.1.6 jsrsasign 5.0.2
+1439  * @throws "malformed integer array string: *" for wrong input
+1440  * @description
+1441  * This function converts a string of JavaScript integer array to
+1442  * a hexadecimal string. Each integer value shall be in a range 
+1443  * from 0 to 255 otherwise it raise exception. Input string can
+1444  * have extra space or newline string so that they will be ignored.
+1445  * 
+1446  * @example
+1447  * intarystrtohex(" [123, 34, 101, 34, 58] ")
+1448  * → 7b2265223a (i.e. '{"e":' as string)
+1449  */
+1450 function intarystrtohex(s) {
+1451   s = s.replace(/^\s*\[\s*/, '');
+1452   s = s.replace(/\s*\]\s*$/, '');
+1453   s = s.replace(/\s*/g, '');
+1454   try {
+1455     var hex = s.split(/,/).map(function(element, index, array) {
+1456       var i = parseInt(element);
+1457       if (i < 0 || 255 < i) throw "integer not in range 0-255";
+1458       var hI = ("00" + i.toString(16)).slice(-2);
+1459       return hI;
+1460     }).join('');
+1461     return hex;
+1462   } catch(ex) {
+1463     throw "malformed integer array string: " + ex;
+1464   }
+1465 }
+1466 
+1467 /**
+1468  * find index of string where two string differs
+1469  * @name strdiffidx
+1470  * @function
+1471  * @param {String} s1 string to compare
+1472  * @param {String} s2 string to compare
+1473  * @return {Number} string index of where character differs. Return -1 if same.
+1474  * @since jsrsasign 4.9.0 base64x 1.1.5
+1475  * @example
+1476  * strdiffidx("abcdefg", "abcd4fg") -> 4
+1477  * strdiffidx("abcdefg", "abcdefg") -> -1
+1478  * strdiffidx("abcdefg", "abcdef") -> 6
+1479  * strdiffidx("abcdefgh", "abcdef") -> 6
+1480  */
+1481 var strdiffidx = function(s1, s2) {
+1482     var n = s1.length;
+1483     if (s1.length > s2.length) n = s2.length;
+1484     for (var i = 0; i < n; i++) {
+1485 	if (s1.charCodeAt(i) != s2.charCodeAt(i)) return i;
+1486     }
+1487     if (s1.length != s2.length) return n;
+1488     return -1; // same
+1489 };
+1490 
+1491 // ==== hex / oid =================================
+1492 
+1493 /**
+1494  * get hexadecimal value of object identifier from dot noted oid value
+1495  * @name oidtohex
+1496  * @function
+1497  * @param {String} oidString dot noted string of object identifier
+1498  * @return {String} hexadecimal value of object identifier
+1499  * @since jsrsasign 10.1.0 base64x 1.1.18
+1500  * @see hextooid
+1501  * @see ASN1HEX.hextooidstr
+1502  * @see KJUR.asn1.ASN1Util.oidIntToHex
+1503  * @description
+1504  * This static method converts from object identifier value string.
+1505  * to hexadecimal string representation of it.
+1506  * {@link hextooid} is a reverse function of this.
+1507  * @example
+1508  * oidtohex("2.5.4.6") → "550406"
+1509  */
+1510 function oidtohex(oidString) {
+1511     var itox = function(i) {
+1512         var h = i.toString(16);
+1513         if (h.length == 1) h = '0' + h;
+1514         return h;
+1515     };
+1516 
+1517     var roidtox = function(roid) {
+1518         var h = '';
+1519         var bi = parseInt(roid, 10);
+1520         var b = bi.toString(2);
+1521 
+1522         var padLen = 7 - b.length % 7;
+1523         if (padLen == 7) padLen = 0;
+1524         var bPad = '';
+1525         for (var i = 0; i < padLen; i++) bPad += '0';
+1526         b = bPad + b;
+1527         for (var i = 0; i < b.length - 1; i += 7) {
+1528             var b8 = b.substr(i, 7);
+1529             if (i != b.length - 7) b8 = '1' + b8;
+1530             h += itox(parseInt(b8, 2));
+1531         }
+1532         return h;
+1533     };
+1534     
+1535     try {
+1536 	if (! oidString.match(/^[0-9.]+$/)) return null;
+1537     
+1538 	var h = '';
+1539 	var a = oidString.split('.');
+1540 	var i0 = parseInt(a[0], 10) * 40 + parseInt(a[1], 10);
+1541 	h += itox(i0);
+1542 	a.splice(0, 2);
+1543 	for (var i = 0; i < a.length; i++) {
+1544             h += roidtox(a[i]);
+1545 	}
+1546 	return h;
+1547     } catch(ex) {
+1548 	return null;
+1549     }
+1550 };
+1551 
+1552 /**
+1553  * get oid string from hexadecimal value of object identifier<br/>
+1554  * @name hextooid
+1555  * @function
+1556  * @param {String} h hexadecimal value of object identifier
+1557  * @return {String} dot noted string of object identifier (ex. "1.2.3.4")
+1558  * @since jsrsasign 10.1.0 base64x 1.1.18
+1559  * @see oidtohex
+1560  * @see ASN1HEX.hextooidstr
+1561  * @see KJUR.asn1.ASN1Util.oidIntToHex
+1562  * @description
+1563  * This static method converts from hexadecimal object identifier value 
+1564  * to dot noted OID value (ex. "1.2.3.4").
+1565  * {@link oidtohex} is a reverse function of this.
+1566  * @example
+1567  * hextooid("550406") → "2.5.4.6"
+1568  */
+1569 function hextooid(h) {
+1570     if (! ishex(h)) return null;
+1571     try {
+1572 	var a = [];
+1573 
+1574 	// a[0], a[1]
+1575 	var hex0 = h.substr(0, 2);
+1576 	var i0 = parseInt(hex0, 16);
+1577 	a[0] = new String(Math.floor(i0 / 40));
+1578 	a[1] = new String(i0 % 40);
+1579 
+1580 	// a[2]..a[n]
+1581 	var hex1 = h.substr(2);
+1582 	var b = [];
+1583 	for (var i = 0; i < hex1.length / 2; i++) {
+1584 	    b.push(parseInt(hex1.substr(i * 2, 2), 16));
+1585 	}
+1586 	var c = [];
+1587 	var cbin = "";
+1588 	for (var i = 0; i < b.length; i++) {
+1589             if (b[i] & 0x80) {
+1590 		cbin = cbin + strpad((b[i] & 0x7f).toString(2), 7);
+1591             } else {
+1592 		cbin = cbin + strpad((b[i] & 0x7f).toString(2), 7);
+1593 		c.push(new String(parseInt(cbin, 2)));
+1594 		cbin = "";
+1595             }
+1596 	}
+1597 
+1598 	var s = a.join(".");
+1599 	if (c.length > 0) s = s + "." + c.join(".");
+1600 	return s;
+1601     } catch(ex) {
+1602 	return null;
+1603     }
+1604 };
+1605 
+1606 /**
+1607  * string padding<br/>
+1608  * @name strpad
+1609  * @function
+1610  * @param {String} s input string
+1611  * @param {Number} len output string length
+1612  * @param {String} padchar padding character (default is "0")
+1613  * @return {String} padded string
+1614  * @since jsrsasign 10.1.0 base64x 1.1.18
+1615  * @example
+1616  * strpad("1234", 10, "0") → "0000001234"
+1617  * strpad("1234", 10, " ") → "      1234"
+1618  * strpad("1234", 10)      → "0000001234"
+1619  */
+1620 var strpad = function(s, len, padchar) {
+1621     if (padchar == undefined) padchar = "0";
+1622     if (s.length >= len) return s;
+1623     return new Array(len - s.length + 1).join(padchar) + s;
+1624 };
+1625 
+1626 // ==== bitstr hex / int =================================
+1627 
+1628 /**
+1629  * convert from hexadecimal string of ASN.1 BitString value with unused bit to integer value<br/>
+1630  * @name bitstrtoint
+1631  * @function
+1632  * @param {String} h hexadecimal string of ASN.1 BitString value with unused bit
+1633  * @return {Number} positive integer value of the BitString
+1634  * @since jsrsasign 10.1.3 base64x 1.1.19
+1635  * @see inttobitstr
+1636  * @see KJUR.asn1.DERBitString
+1637  * @see ASN1HEX.getInt
+1638  * 
+1639  * @description
+1640  * This function converts from hexadecimal string of ASN.1 BitString
+1641  * value with unused bit to its integer value. <br/>
+1642  * When an improper hexadecimal string of BitString value
+1643  * is applied, this returns -1.
+1644  * 
+1645  * @example
+1646  * // "03c8" → 0xc8 unusedbit=03 → 11001000b unusedbit=03 → 11001b → 25
+1647  * bitstrtoint("03c8") → 25
+1648  * // "02fff8" → 0xfff8 unusedbit=02 → 1111111111111000b unusedbit=02
+1649  * //   11111111111110b → 16382
+1650  * bitstrtoint("02fff8") → 16382
+1651  * bitstrtoint("05a0") → 5 (=101b)
+1652  * bitstrtoint("ff00") → -1 // for improper BitString value
+1653  * bitstrtoint("05a0").toString(2) → "101"
+1654  * bitstrtoint("07a080").toString(2) → "101000001"
+1655  */
+1656 function bitstrtoint(h) {
+1657     if (h.length % 2 != 0) return -1; 
+1658     h = h.toLowerCase();
+1659     if (h.match(/^[0-9a-f]+$/) == null) return -1;
+1660     try {
+1661 	var hUnusedbit = h.substr(0, 2);
+1662 	if (hUnusedbit == "00")
+1663 	    return parseInt(h.substr(2), 16);
+1664 	var iUnusedbit = parseInt(hUnusedbit, 16);
+1665 	if (iUnusedbit > 7) return -1;
+1666 	var hValue = h.substr(2);
+1667 	var bValue = parseInt(hValue, 16).toString(2);
+1668 	if (bValue == "0") bValue = "00000000";
+1669 	bValue = bValue.slice(0, 0 - iUnusedbit);
+1670 	var iValue = parseInt(bValue, 2);
+1671 	if (iValue == NaN) return -1;
+1672 	return iValue;
+1673     } catch(ex) {
+1674 	return -1;
+1675     }
+1676 };
 1677 
 1678 /**
-1679  * convert from binary string to hexadecimal string of ASN.1 BitString value with unused bit<br/>
-1680  * @name binstrtobitstr
+1679  * convert from integer value to hexadecimal string of ASN.1 BitString value with unused bit<br/>
+1680  * @name inttobitstr
 1681  * @function
-1682  * @param {string} s binary string (ex. "101")
-1683  * @return {string} hexadecimal string of ASN.1 BitString value with unused bit
-1684  * @since jsrsasign 10.5.4 base64x 1.1.21
-1685  * @see bitstrtobinstr
-1686  * @see inttobitstr
-1687  * @see KJUR.asn1.DERBitString
+1682  * @param {Number} n integer value of ASN.1 BitString
+1683  * @return {String} hexadecimal string of ASN.1 BitString value with unused bit
+1684  * @since jsrsasign 10.1.3 base64x 1.1.19
+1685  * @see bitstrtoint
+1686  * @see KJUR.asn1.DERBitString
+1687  * @see ASN1HEX.getInt
 1688  * 
 1689  * @description
-1690  * This function converts from an binary string (ex. "101") to 
+1690  * This function converts from an integer value to 
 1691  * hexadecimal string of ASN.1 BitString value
-1692  * with unused bit (ex. "05a0"). <br/>
-1693  * When "s" is not binary string, this returns null.
+1692  * with unused bit. <br/>
+1693  * When "n" is not non-negative number, this returns null
 1694  * 
 1695  * @example
-1696  * binstrtobitstr("101") → "05a0"
-1697  * binstrtobitstr("11001") → "03c8"
-1698  * binstrtobitstr("101000001") → "07a080"
-1699  * binstrtobitstr(101) → null // not number
-1700  * binstrtobitstr("xyz") → null // not binary string
-1701  */
-1702 function binstrtobitstr(s) {
-1703     if (typeof s != "string") return null;
-1704     if (s.match(/^[01]+$/) == null) return null;
-1705     try {
-1706 	var n = parseInt(s, 2);
-1707 	return inttobitstr(n);
-1708     } catch(ex) {
-1709 	return null;
-1710     }
-1711 }
-1712 
-1713 // =======================================================
-1714 /**
-1715  * set class inheritance<br/>
-1716  * @name extendClass
-1717  * @function
-1718  * @param {Function} subClass sub class to set inheritance
-1719  * @param {Function} superClass super class to inherit
-1720  * @since jsrsasign 10.3.0 base64x 1.1.21
-1721  *
-1722  * @description
-1723  * This function extends a class and set an inheritance
-1724  * for member variables and methods.
-1725  *
-1726  * @example
-1727  * var Animal = function() {
-1728  *   this.hello = function(){console.log("Hello")};
-1729  *   this.name="Ani";
-1730  * };
-1731  * var Dog = function() {
-1732  *   Dog.superclass.constructor.call(this);
-1733  *   this.vow = function(){console.log("Vow wow")};
-1734  *   this.tail=true;
-1735  * };
-1736  * extendClass(Dog, Animal);
-1737  */
-1738 function extendClass(subClass, superClass) {
-1739     var F = function() {};
-1740     F.prototype = superClass.prototype;
-1741     subClass.prototype = new F();
-1742     subClass.prototype.constructor = subClass;
-1743     subClass.superclass = superClass.prototype;
-1744      
-1745     if (superClass.prototype.constructor == Object.prototype.constructor) {
-1746         superClass.prototype.constructor = superClass;
-1747     }
-1748 };
-1749 
-1750 
\ No newline at end of file +1696 * // 25 → 11001b → 11001000b unusedbit=03 → 0xc8 unusedbit=03 → "03c8" +1697 * inttobitstr(25) → "03c8" +1698 * inttobitstr(-3) → null +1699 * inttobitstr("abc") → null +1700 * inttobitstr(parseInt("11001", 2)) → "03c8" +1701 * inttobitstr(parseInt("101", 2)) → "05a0" +1702 * inttobitstr(parseInt("101000001", 2)) → "07a080" +1703 */
+1704 function inttobitstr(n) { +1705 if (typeof n != "number") return null; +1706 if (n < 0) return null; +1707 var bValue = Number(n).toString(2); +1708 var iUnusedbit = 8 - bValue.length % 8; +1709 if (iUnusedbit == 8) iUnusedbit = 0; +1710 bValue = bValue + strpad("", iUnusedbit, "0"); +1711 var hValue = parseInt(bValue, 2).toString(16); +1712 if (hValue.length % 2 == 1) hValue = "0" + hValue; +1713 var hUnusedbit = "0" + iUnusedbit; +1714 return hUnusedbit + hValue; +1715 }; +1716 +1717 // ==== bitstr hex / binary string ======================= +1718 +1719 /** +1720 * convert from hexadecimal string of ASN.1 BitString value with unused bit to binary string<br/> +1721 * @name bitstrtobinstr +1722 * @function +1723 * @param {string} h hexadecimal string of ASN.1 BitString value with unused bit +1724 * @return {string} binary string +1725 * @since jsrsasign 10.5.4 base64x 1.1.21 +1726 * @see binstrtobitstr +1727 * @see inttobitstr +1728 * +1729 * @description +1730 * This function converts from hexadecimal string of ASN.1 BitString +1731 * value with unused bit to its integer value. <br/> +1732 * When an improper hexadecimal string of BitString value +1733 * is applied, this returns null. +1734 * +1735 * @example +1736 * bitstrtobinstr("05a0") → "101" +1737 * bitstrtobinstr("07a080") → "101000001" +1738 * bitstrtoint(502) → null // non ASN.1 BitString value +1739 * bitstrtoint("ff00") → -1 // for improper BitString value +1740 */ +1741 function bitstrtobinstr(h) { +1742 var n = bitstrtoint(h); +1743 if (n == -1) return null; +1744 return n.toString(2); +1745 } +1746 +1747 /** +1748 * convert from binary string to hexadecimal string of ASN.1 BitString value with unused bit<br/> +1749 * @name binstrtobitstr +1750 * @function +1751 * @param {string} s binary string (ex. "101") +1752 * @return {string} hexadecimal string of ASN.1 BitString value with unused bit +1753 * @since jsrsasign 10.5.4 base64x 1.1.21 +1754 * @see bitstrtobinstr +1755 * @see inttobitstr +1756 * @see KJUR.asn1.DERBitString +1757 * +1758 * @description +1759 * This function converts from an binary string (ex. "101") to +1760 * hexadecimal string of ASN.1 BitString value +1761 * with unused bit (ex. "05a0"). <br/> +1762 * When "s" is not binary string, this returns null. +1763 * +1764 * @example +1765 * binstrtobitstr("101") → "05a0" +1766 * binstrtobitstr("11001") → "03c8" +1767 * binstrtobitstr("101000001") → "07a080" +1768 * binstrtobitstr(101) → null // not number +1769 * binstrtobitstr("xyz") → null // not binary string +1770 */ +1771 function binstrtobitstr(s) { +1772 if (typeof s != "string") return null; +1773 if (s.match(/^[01]+$/) == null) return null; +1774 try { +1775 var n = parseInt(s, 2); +1776 return inttobitstr(n); +1777 } catch(ex) { +1778 return null; +1779 } +1780 } +1781 +1782 // ======================================================= +1783 /** +1784 * set class inheritance<br/> +1785 * @name extendClass +1786 * @function +1787 * @param {Function} subClass sub class to set inheritance +1788 * @param {Function} superClass super class to inherit +1789 * @since jsrsasign 10.3.0 base64x 1.1.21 +1790 * +1791 * @description +1792 * This function extends a class and set an inheritance +1793 * for member variables and methods. +1794 * +1795 * @example +1796 * var Animal = function() { +1797 * this.hello = function(){console.log("Hello")}; +1798 * this.name="Ani"; +1799 * }; +1800 * var Dog = function() { +1801 * Dog.superclass.constructor.call(this); +1802 * this.vow = function(){console.log("Vow wow")}; +1803 * this.tail=true; +1804 * }; +1805 * extendClass(Dog, Animal); +1806 */ +1807 function extendClass(subClass, superClass) { +1808 var F = function() {}; +1809 F.prototype = superClass.prototype; +1810 subClass.prototype = new F(); +1811 subClass.prototype.constructor = subClass; +1812 subClass.superclass = superClass.prototype; +1813 +1814 if (superClass.prototype.constructor == Object.prototype.constructor) { +1815 superClass.prototype.constructor = superClass; +1816 } +1817 }; +1818 +1819
\ No newline at end of file diff --git a/bower.json b/bower.json index d9e34369..220d5e98 100644 --- a/bower.json +++ b/bower.json @@ -1,6 +1,6 @@ { "name": "kjur-jsrsasign", - "version": "10.5.16", + "version": "10.5.17", "main": "jsrsasign-all-min.js", "description": "The 'jsrsasign' (RSA-Sign JavaScript Library) is an opensource free cryptography library supporting RSA/RSAPSS/ECDSA/DSA signing/validation, ASN.1, PKCS#1/5/8 private/public key, X.509 certificate, CRL, OCSP, CMS SignedData, TimeStamp, CAdES, JWS and JWT in pure JavaScript.", "license": "MIT", diff --git a/jsrsasign-all-min.js b/jsrsasign-all-min.js index dfbf12f0..a4455cc0 100644 --- a/jsrsasign-all-min.js +++ b/jsrsasign-all-min.js @@ -1,5 +1,5 @@ /* - * jsrsasign(all) 10.5.16 (2022-04-08) (c) 2010-2021 Kenji Urushima | kjur.github.io/jsrsasign/license + * jsrsasign(all) 10.5.17 (2022-04-14) (c) 2010-2021 Kenji Urushima | kjur.github.io/jsrsasign/license */ /*! CryptoJS v3.1.2 core-fix.js @@ -219,13 +219,13 @@ ECFieldElementFp.prototype.getByteLength=function(){return Math.floor((this.toBi var jsonParse=(function(){var e="(?:-?\\b(?:0|[1-9][0-9]*)(?:\\.[0-9]+)?(?:[eE][+-]?[0-9]+)?\\b)";var j='(?:[^\\0-\\x08\\x0a-\\x1f"\\\\]|\\\\(?:["/\\\\bfnrt]|u[0-9A-Fa-f]{4}))';var i='(?:"'+j+'*")';var d=new RegExp("(?:false|true|null|[\\{\\}\\[\\]]|"+e+"|"+i+")","g");var k=new RegExp("\\\\(?:([^u])|u(.{4}))","g");var g={'"':'"',"/":"/","\\":"\\",b:"\b",f:"\f",n:"\n",r:"\r",t:"\t"};function h(l,m,n){return m?g[m]:String.fromCharCode(parseInt(n,16))}var c=new String("");var a="\\";var f={"{":Object,"[":Array};var b=Object.hasOwnProperty;return function(u,q){var p=u.match(d);var x;var v=p[0];var l=false;if("{"===v){x={}}else{if("["===v){x=[]}else{x=[];l=true}}var t;var r=[x];for(var o=1-l,m=p.length;o=0;){delete D[n[A]]}}}return q.call(C,B,D)};x=s({"":x},"")}return x}})(); if(typeof KJUR=="undefined"||!KJUR){KJUR={}}if(typeof KJUR.asn1=="undefined"||!KJUR.asn1){KJUR.asn1={}}KJUR.asn1.ASN1Util=new function(){this.integerToByteHex=function(a){var b=a.toString(16);if((b.length%2)==1){b="0"+b}return b};this.bigIntToMinTwosComplementsHex=function(j){var f=j.toString(16);if(f.substr(0,1)!="-"){if(f.length%2==1){f="0"+f}else{if(!f.match(/^[0-7]/)){f="00"+f}}}else{var a=f.substr(1);var e=a.length;if(e%2==1){e+=1}else{if(!f.match(/^[0-7]/)){e+=2}}var g="";for(var d=0;d15){throw new Error("ASN.1 length too long to represent by 8x: n = "+j.toString(16))}var g=128+h;return g.toString(16)+i}};this.tohex=function(){if(this.hTLV==null||this.isModified){this.hV=this.getFreshValueHex();this.hL=this.getLengthHexFromValue();this.hTLV=this.hT+this.hL+this.hV;this.isModified=false}return this.hTLV};this.getEncodedHex=function(){return this.tohex()};this.getValueHex=function(){this.tohex();return this.hV};this.getFreshValueHex=function(){return""};this.setByParam=function(g){this.params=g};if(e!=undefined){if(e.tlv!=undefined){this.hTLV=e.tlv;this.isModified=false}}};KJUR.asn1.DERAbstractString=function(c){KJUR.asn1.DERAbstractString.superclass.constructor.call(this);var b=null;var a=null;this.getString=function(){return this.s};this.setString=function(d){this.hTLV=null;this.isModified=true;this.s=d;this.hV=utf8tohex(this.s).toLowerCase()};this.setStringHex=function(d){this.hTLV=null;this.isModified=true;this.s=null;this.hV=d};this.getFreshValueHex=function(){return this.hV};if(typeof c!="undefined"){if(typeof c=="string"){this.setString(c)}else{if(typeof c.str!="undefined"){this.setString(c.str)}else{if(typeof c.hex!="undefined"){this.setStringHex(c.hex)}}}}};extendClass(KJUR.asn1.DERAbstractString,KJUR.asn1.ASN1Object);KJUR.asn1.DERAbstractTime=function(c){KJUR.asn1.DERAbstractTime.superclass.constructor.call(this);var b=null;var a=null;this.localDateToUTC=function(g){var e=g.getTime()+(g.getTimezoneOffset()*60000);var f=new Date(e);return f};this.formatDate=function(m,o,e){var g=this.zeroPadding;var n=this.localDateToUTC(m);var p=String(n.getFullYear());if(o=="utc"){p=p.substr(2,2)}var l=g(String(n.getMonth()+1),2);var q=g(String(n.getDate()),2);var h=g(String(n.getHours()),2);var i=g(String(n.getMinutes()),2);var j=g(String(n.getSeconds()),2);var r=p+l+q+h+i+j;if(e===true){var f=n.getMilliseconds();if(f!=0){var k=g(String(f),3);k=k.replace(/[0]+$/,"");r=r+"."+k}}return r+"Z"};this.zeroPadding=function(e,d){if(e.length>=d){return e}return new Array(d-e.length+1).join("0")+e};this.setByParam=function(d){this.hV=null;this.hTLV=null;this.params=d};this.getString=function(){return undefined};this.setString=function(d){this.hTLV=null;this.isModified=true;if(this.params==undefined){this.params={}}this.params.str=d};this.setByDate=function(d){this.hTLV=null;this.isModified=true;if(this.params==undefined){this.params={}}this.params.date=d};this.setByDateValue=function(h,j,e,d,f,g){var i=new Date(Date.UTC(h,j-1,e,d,f,g,0));this.setByDate(i)};this.getFreshValueHex=function(){return this.hV}};extendClass(KJUR.asn1.DERAbstractTime,KJUR.asn1.ASN1Object);KJUR.asn1.DERAbstractStructured=function(b){KJUR.asn1.DERAbstractString.superclass.constructor.call(this);var a=null;this.setByASN1ObjectArray=function(c){this.hTLV=null;this.isModified=true;this.asn1Array=c};this.appendASN1Object=function(c){this.hTLV=null;this.isModified=true;this.asn1Array.push(c)};this.asn1Array=new Array();if(typeof b!="undefined"){if(typeof b.array!="undefined"){this.asn1Array=b.array}}};extendClass(KJUR.asn1.DERAbstractStructured,KJUR.asn1.ASN1Object);KJUR.asn1.DERBoolean=function(a){KJUR.asn1.DERBoolean.superclass.constructor.call(this);this.hT="01";if(a==false){this.hTLV="010100"}else{this.hTLV="0101ff"}};extendClass(KJUR.asn1.DERBoolean,KJUR.asn1.ASN1Object);KJUR.asn1.DERInteger=function(a){KJUR.asn1.DERInteger.superclass.constructor.call(this);this.hT="02";this.setByBigInteger=function(b){this.hTLV=null;this.isModified=true;this.hV=KJUR.asn1.ASN1Util.bigIntToMinTwosComplementsHex(b)};this.setByInteger=function(c){var b=new BigInteger(String(c),10);this.setByBigInteger(b)};this.setValueHex=function(b){this.hV=b};this.getFreshValueHex=function(){return this.hV};if(typeof a!="undefined"){if(typeof a.bigint!="undefined"){this.setByBigInteger(a.bigint)}else{if(typeof a["int"]!="undefined"){this.setByInteger(a["int"])}else{if(typeof a=="number"){this.setByInteger(a)}else{if(typeof a.hex!="undefined"){this.setValueHex(a.hex)}}}}}};extendClass(KJUR.asn1.DERInteger,KJUR.asn1.ASN1Object);KJUR.asn1.DERBitString=function(b){if(b!==undefined&&typeof b.obj!=="undefined"){var a=KJUR.asn1.ASN1Util.newObject(b.obj);b.hex="00"+a.tohex()}KJUR.asn1.DERBitString.superclass.constructor.call(this);this.hT="03";this.setHexValueIncludingUnusedBits=function(c){this.hTLV=null;this.isModified=true;this.hV=c};this.setUnusedBitsAndHexValue=function(c,e){if(c<0||7=f){break}}return j};ASN1HEX.getNthChildIdx=function(d,b,e){var c=ASN1HEX.getChildIdx(d,b);return c[e]};ASN1HEX.getIdxbyList=function(e,d,c,i){var g=ASN1HEX;var f,b;if(c.length==0){if(i!==undefined){if(e.substr(d,2)!==i){return -1}}return d}f=c.shift();b=g.getChildIdx(e,d);if(f>=b.length){return -1}return g.getIdxbyList(e,b[f],c,i)};ASN1HEX.getIdxbyListEx=function(f,k,b,g){var m=ASN1HEX;var d,l;if(b.length==0){if(g!==undefined){if(f.substr(k,2)!==g){return -1}}return k}d=b.shift();l=m.getChildIdx(f,k);var j=0;for(var e=0;e=d.length){return null}return e.getTLV(d,a)};ASN1HEX.getTLVbyListEx=function(d,c,b,f){var e=ASN1HEX;var a=e.getIdxbyListEx(d,c,b,f);if(a==-1){return null}return e.getTLV(d,a)};ASN1HEX.getVbyList=function(e,c,b,g,i){var f=ASN1HEX;var a,d;a=f.getIdxbyList(e,c,b,g);if(a==-1){return null}if(a>=e.length){return null}d=f.getV(e,a);if(i===true){d=d.substr(2)}return d};ASN1HEX.getVbyListEx=function(b,e,a,d,f){var j=ASN1HEX;var g,c,i;g=j.getIdxbyListEx(b,e,a,d);if(g==-1){return null}i=j.getV(b,g);if(b.substr(g,2)=="03"&&f!==false){i=i.substr(2)}return i};ASN1HEX.getInt=function(e,b,f){if(f==undefined){f=-1}try{var c=e.substr(b,2);if(c!="02"&&c!="03"){return f}var a=ASN1HEX.getV(e,b);if(c=="02"){return parseInt(a,16)}else{return bitstrtoint(a)}}catch(d){return f}};ASN1HEX.getOID=function(c,a,d){if(d==undefined){d=null}try{if(c.substr(a,2)!="06"){return d}var e=ASN1HEX.getV(c,a);return hextooid(e)}catch(b){return d}};ASN1HEX.getOIDName=function(d,a,f){if(f==undefined){f=null}try{var e=ASN1HEX.getOID(d,a,f);if(e==f){return f}var b=KJUR.asn1.x509.OID.oid2name(e);if(b==""){return e}return b}catch(c){return f}};ASN1HEX.getString=function(d,b,e){if(e==undefined){e=null}try{var a=ASN1HEX.getV(d,b);return hextorstr(a)}catch(c){return e}};ASN1HEX.hextooidstr=function(e){var h=function(b,a){if(b.length>=a){return b}return new Array(a-b.length+1).join("0")+b};var l=[];var o=e.substr(0,2);var f=parseInt(o,16);l[0]=new String(Math.floor(f/40));l[1]=new String(f%40);var m=e.substr(2);var k=[];for(var g=0;g0){n=n+"."+j.join(".")}return n};ASN1HEX.dump=function(t,c,l,g){var p=ASN1HEX;var j=p.getV;var y=p.dump;var w=p.getChildIdx;var e=t;if(t instanceof KJUR.asn1.ASN1Object){e=t.tohex()}var q=function(A,i){if(A.length<=i*2){return A}else{var v=A.substr(0,i)+"..(total "+A.length/2+"bytes).."+A.substr(A.length-i,i);return v}};if(c===undefined){c={ommit_long_octet:32}}if(l===undefined){l=0}if(g===undefined){g=""}var x=c.ommit_long_octet;var z=e.substr(l,2);if(z=="01"){var h=j(e,l);if(h=="00"){return g+"BOOLEAN FALSE\n"}else{return g+"BOOLEAN TRUE\n"}}if(z=="02"){var h=j(e,l);return g+"INTEGER "+q(h,x)+"\n"}if(z=="03"){var h=j(e,l);if(p.isASN1HEX(h.substr(2))){var k=g+"BITSTRING, encapsulates\n";k=k+y(h.substr(2),c,0,g+" ");return k}else{return g+"BITSTRING "+q(h,x)+"\n"}}if(z=="04"){var h=j(e,l);if(p.isASN1HEX(h)){var k=g+"OCTETSTRING, encapsulates\n";k=k+y(h,c,0,g+" ");return k}else{return g+"OCTETSTRING "+q(h,x)+"\n"}}if(z=="05"){return g+"NULL\n"}if(z=="06"){var m=j(e,l);var b=KJUR.asn1.ASN1Util.oidHexToInt(m);var o=KJUR.asn1.x509.OID.oid2name(b);var a=b.replace(/\./g," ");if(o!=""){return g+"ObjectIdentifier "+o+" ("+a+")\n"}else{return g+"ObjectIdentifier ("+a+")\n"}}if(z=="0a"){return g+"ENUMERATED "+parseInt(j(e,l))+"\n"}if(z=="0c"){return g+"UTF8String '"+hextoutf8(j(e,l))+"'\n"}if(z=="13"){return g+"PrintableString '"+hextoutf8(j(e,l))+"'\n"}if(z=="14"){return g+"TeletexString '"+hextoutf8(j(e,l))+"'\n"}if(z=="16"){return g+"IA5String '"+hextoutf8(j(e,l))+"'\n"}if(z=="17"){return g+"UTCTime "+hextoutf8(j(e,l))+"\n"}if(z=="18"){return g+"GeneralizedTime "+hextoutf8(j(e,l))+"\n"}if(z=="1a"){return g+"VisualString '"+hextoutf8(j(e,l))+"'\n"}if(z=="1e"){return g+"BMPString '"+ucs2hextoutf8(j(e,l))+"'\n"}if(z=="30"){if(e.substr(l,4)=="3000"){return g+"SEQUENCE {}\n"}var k=g+"SEQUENCE\n";var d=w(e,l);var f=c;if((d.length==2||d.length==3)&&e.substr(d[0],2)=="06"&&e.substr(d[d.length-1],2)=="04"){var o=p.oidname(j(e,d[0]));var r=JSON.parse(JSON.stringify(c));r.x509ExtName=o;f=r}for(var u=0;u4){return{"enum":{hex:p}}}else{return{"enum":parseInt(p,16)}}}else{if(C=="30"||C=="31"){j[c[C]]=u(x);return j}else{if(C=="14"){var o=q(p);j[c[C]]={str:o};return j}else{if(C=="1e"){var o=n(p);j[c[C]]={str:o};return j}else{if(":0c:12:13:16:17:18:1a:".indexOf(C)!=-1){var o=k(p);j[c[C]]={str:o};return j}else{if(C.match(/^8[0-9]$/)){var o=k(p);if(o==null|o==""){return{tag:{tag:C,explicit:false,hex:p}}}else{if(o.match(/[\x00-\x1F\x7F-\x9F]/)!=null||o.match(/[\u0000-\u001F\u0080–\u009F]/)!=null){return{tag:{tag:C,explicit:false,hex:p}}}else{return{tag:{tag:C,explicit:false,str:o}}}}}else{if(C.match(/^a[0-9]$/)){try{if(!a(p)){throw new Error("not encap")}return{tag:{tag:C,explicit:true,obj:f(p)}}}catch(z){return{tag:{tag:C,explicit:true,hex:p}}}}else{var A=new KJUR.asn1.ASN1Object();A.hV=p;var w=A.getLengthHexFromValue();return{asn1:{tlv:C+w+p}}}}}}}}}}}}}}}};ASN1HEX.isContextTag=function(c,b){c=c.toLowerCase();var f,e;try{f=parseInt(c,16)}catch(d){return -1}if(b===undefined){if((f&192)==128){return true}else{return false}}try{var a=b.match(/^\[[0-9]+\]$/);if(a==null){return false}e=parseInt(b.substr(1,b.length-1),10);if(e>31){return false}if(((f&192)==128)&&((f&31)==e)){return true}return false}catch(d){return false}};ASN1HEX.isASN1HEX=function(e){var d=ASN1HEX;if(e.length%2==1){return false}var c=d.getVblen(e,0);var b=e.substr(0,2);var f=d.getL(e,0);var a=e.length-b.length-f.length;if(a==c*2){return true}return false};ASN1HEX.checkStrictDER=function(g,o,d,c,r){var s=ASN1HEX;if(d===undefined){if(typeof g!="string"){throw new Error("not hex string")}g=g.toLowerCase();if(!KJUR.lang.String.isHex(g)){throw new Error("not hex string")}d=g.length;c=g.length/2;if(c<128){r=1}else{r=Math.ceil(c.toString(16))+1}}var k=s.getL(g,o);if(k.length>r*2){throw new Error("L of TLV too long: idx="+o)}var n=s.getVblen(g,o);if(n>c){throw new Error("value of L too long than hex: idx="+o)}var q=s.getTLV(g,o);var f=q.length-2-s.getL(g,o).length;if(f!==(n*2)){throw new Error("V string length and L's value not the same:"+f+"/"+(n*2))}if(o===0){if(g.length!=q.length){throw new Error("total length and TLV length unmatch:"+g.length+"!="+q.length)}}var b=g.substr(o,2);if(b==="02"){var a=s.getVidx(g,o);if(g.substr(a,2)=="00"&&g.charCodeAt(a+2)<56){throw new Error("not least zeros for DER INTEGER")}}if(parseInt(b,16)&32){var p=s.getVblen(g,o);var m=0;var l=s.getChildIdx(g,o);for(var e=0;e0){n.push(new c({tag:"a3",obj:new j(q.ext)}))}var o=new KJUR.asn1.DERSequence({array:n});return o.tohex()};this.getEncodedHex=function(){return this.tohex()};if(f!==undefined){this.setByParam(f)}};extendClass(KJUR.asn1.x509.TBSCertificate,KJUR.asn1.ASN1Object);KJUR.asn1.x509.Extensions=function(d){KJUR.asn1.x509.Extensions.superclass.constructor.call(this);var c=KJUR,b=c.asn1,a=b.DERSequence,e=b.x509;this.aParam=[];this.setByParam=function(f){this.aParam=f};this.tohex=function(){var f=[];for(var h=0;h-1){i.push(new f({"int":this.pathLen}))}var h=new b({array:i});this.asn1ExtnValue=h;return this.asn1ExtnValue.tohex()};this.oid="2.5.29.19";this.cA=false;this.pathLen=-1;if(g!==undefined){if(g.cA!==undefined){this.cA=g.cA}if(g.pathLen!==undefined){this.pathLen=g.pathLen}}};extendClass(KJUR.asn1.x509.BasicConstraints,KJUR.asn1.x509.Extension);KJUR.asn1.x509.CRLDistributionPoints=function(d){KJUR.asn1.x509.CRLDistributionPoints.superclass.constructor.call(this,d);var b=KJUR,a=b.asn1,c=a.x509;this.getExtnValueHex=function(){return this.asn1ExtnValue.tohex()};this.setByDPArray=function(e){var f=[];for(var g=0;g0){f.push(new b({array:j}))}}var g=new b({array:f});return g.tohex()};this.getEncodedHex=function(){return this.tohex()};if(d!==undefined){this.params=d}};extendClass(KJUR.asn1.x509.PolicyInformation,KJUR.asn1.ASN1Object);KJUR.asn1.x509.PolicyQualifierInfo=function(e){KJUR.asn1.x509.PolicyQualifierInfo.superclass.constructor.call(this,e);var c=KJUR.asn1,b=c.DERSequence,d=c.DERIA5String,f=c.DERObjectIdentifier,a=c.x509.UserNotice;this.params=null;this.tohex=function(){if(this.params.cps!==undefined){var g=new b({array:[new f({oid:"1.3.6.1.5.5.7.2.1"}),new d({str:this.params.cps})]});return g.tohex()}if(this.params.unotice!=undefined){var g=new b({array:[new f({oid:"1.3.6.1.5.5.7.2.2"}),new a(this.params.unotice)]});return g.tohex()}};this.getEncodedHex=function(){return this.tohex()};if(e!==undefined){this.params=e}};extendClass(KJUR.asn1.x509.PolicyQualifierInfo,KJUR.asn1.ASN1Object);KJUR.asn1.x509.UserNotice=function(e){KJUR.asn1.x509.UserNotice.superclass.constructor.call(this,e);var a=KJUR.asn1.DERSequence,d=KJUR.asn1.DERInteger,c=KJUR.asn1.x509.DisplayText,b=KJUR.asn1.x509.NoticeReference;this.params=null;this.tohex=function(){var f=[];if(this.params.noticeref!==undefined){f.push(new b(this.params.noticeref))}if(this.params.exptext!==undefined){f.push(new c(this.params.exptext))}var g=new a({array:f});return g.tohex()};this.getEncodedHex=function(){return this.tohex()};if(e!==undefined){this.params=e}};extendClass(KJUR.asn1.x509.UserNotice,KJUR.asn1.ASN1Object);KJUR.asn1.x509.NoticeReference=function(d){KJUR.asn1.x509.NoticeReference.superclass.constructor.call(this,d);var a=KJUR.asn1.DERSequence,c=KJUR.asn1.DERInteger,b=KJUR.asn1.x509.DisplayText;this.params=null;this.tohex=function(){var f=[];if(this.params.org!==undefined){f.push(new b(this.params.org))}if(this.params.noticenum!==undefined){var h=[];var e=this.params.noticenum;for(var j=0;j0){for(var g=0;g0;f++){var h=c.shift();if(e===true){var d=b.pop();var j=(d+","+h).replace(/\\,/g,",");b.push(j);e=false}else{b.push(h)}if(h.substr(-1,1)==="\\"){e=true}}b=b.map(function(a){return a.replace("/","\\/")});b.reverse();return"/"+b.join("/")};KJUR.asn1.x509.X500Name.ldapToOneline=function(a){return KJUR.asn1.x509.X500Name.ldapToCompat(a)};KJUR.asn1.x509.RDN=function(b){KJUR.asn1.x509.RDN.superclass.constructor.call(this);this.asn1Array=[];this.paramArray=[];this.sRule="utf8";var a=KJUR.asn1.x509.AttributeTypeAndValue;this.setByParam=function(c){if(c.rule!==undefined){this.sRule=c.rule}if(c.str!==undefined){this.addByMultiValuedString(c.str)}if(c.array!==undefined){this.paramArray=c.array}};this.addByString=function(c){this.asn1Array.push(new KJUR.asn1.x509.AttributeTypeAndValue({str:c,rule:this.sRule}))};this.addByMultiValuedString=function(e){var c=KJUR.asn1.x509.RDN.parseString(e);for(var d=0;d0){for(var d=0;d0;g++){var k=j.shift();if(h===true){var f=c.pop();var d=(f+"+"+k).replace(/\\\+/g,"+");c.push(d);h=false}else{c.push(k)}if(k.substr(-1,1)==="\\"){h=true}}var l=false;var b=[];for(var g=0;c.length>0;g++){var k=c.shift();if(l===true){var e=b.pop();if(k.match(/"$/)){var d=(e+"+"+k).replace(/^([^=]+)="(.*)"$/,"$1=$2");b.push(d);l=false}else{b.push(e+"+"+k)}}else{b.push(k)}if(k.match(/^[^=]+="/)){l=true}}return b};KJUR.asn1.x509.AttributeTypeAndValue=function(c){KJUR.asn1.x509.AttributeTypeAndValue.superclass.constructor.call(this);this.sRule="utf8";this.sType=null;this.sValue=null;this.dsType=null;var a=KJUR,g=a.asn1,d=g.DERSequence,l=g.DERUTF8String,i=g.DERPrintableString,h=g.DERTeletexString,b=g.DERIA5String,e=g.DERVisibleString,k=g.DERBMPString,f=a.lang.String.isMail,j=a.lang.String.isPrintable;this.setByParam=function(o){if(o.rule!==undefined){this.sRule=o.rule}if(o.ds!==undefined){this.dsType=o.ds}if(o.value===undefined&&o.str!==undefined){var n=o.str;var m=n.match(/^([^=]+)=(.+)$/);if(m){this.sType=m[1];this.sValue=m[2]}else{throw new Error("malformed attrTypeAndValueStr: "+attrTypeAndValueStr)}}else{this.sType=o.type;this.sValue=o.value}};this.setByString=function(n,o){if(o!==undefined){this.sRule=o}var m=n.match(/^([^=]+)=(.+)$/);if(m){this.setByAttrTypeAndValueStr(m[1],m[2])}else{throw new Error("malformed attrTypeAndValueStr: "+attrTypeAndValueStr)}};this._getDsType=function(){var o=this.sType;var n=this.sValue;var m=this.sRule;if(m==="prn"){if(o=="CN"&&f(n)){return"ia5"}if(j(n)){return"prn"}return"utf8"}else{if(m==="utf8"){if(o=="CN"&&f(n)){return"ia5"}if(o=="C"){return"prn"}return"utf8"}}return"utf8"};this.setByAttrTypeAndValueStr=function(o,n,m){if(m!==undefined){this.sRule=m}this.sType=o;this.sValue=n};this.getValueObj=function(n,m){if(n=="utf8"){return new l({str:m})}if(n=="prn"){return new i({str:m})}if(n=="tel"){return new h({str:m})}if(n=="ia5"){return new b({str:m})}if(n=="vis"){return new e({str:m})}if(n=="bmp"){return new k({str:m})}throw new Error("unsupported directory string type: type="+n+" value="+m)};this.tohex=function(){if(this.dsType==null){this.dsType=this._getDsType()}var n=KJUR.asn1.x509.OID.atype2obj(this.sType);var m=this.getValueObj(this.dsType,this.sValue);var p=new d({array:[n,m]});this.TLV=p.tohex();return this.TLV};this.getEncodedHex=function(){return this.tohex()};if(c!==undefined){this.setByParam(c)}};extendClass(KJUR.asn1.x509.AttributeTypeAndValue,KJUR.asn1.ASN1Object);KJUR.asn1.x509.SubjectPublicKeyInfo=function(f){KJUR.asn1.x509.SubjectPublicKeyInfo.superclass.constructor.call(this);var l=null,k=null,a=KJUR,j=a.asn1,i=j.DERInteger,b=j.DERBitString,m=j.DERObjectIdentifier,e=j.DERSequence,h=j.ASN1Util.newObject,d=j.x509,o=d.AlgorithmIdentifier,g=a.crypto,n=g.ECDSA,c=g.DSA;this.getASN1Object=function(){if(this.asn1AlgId==null||this.asn1SubjPKey==null){throw"algId and/or subjPubKey not set"}var p=new e({array:[this.asn1AlgId,this.asn1SubjPKey]});return p};this.tohex=function(){var p=this.getASN1Object();this.hTLV=p.tohex();return this.hTLV};this.getEncodedHex=function(){return this.tohex()};this.setPubKey=function(q){try{if(q instanceof RSAKey){var u=h({seq:[{"int":{bigint:q.n}},{"int":{"int":q.e}}]});var s=u.tohex();this.asn1AlgId=new o({name:"rsaEncryption"});this.asn1SubjPKey=new b({hex:"00"+s})}}catch(p){}try{if(q instanceof KJUR.crypto.ECDSA){var r=new m({name:q.curveName});this.asn1AlgId=new o({name:"ecPublicKey",asn1params:r});this.asn1SubjPKey=new b({hex:"00"+q.pubKeyHex})}}catch(p){}try{if(q instanceof KJUR.crypto.DSA){var r=new h({seq:[{"int":{bigint:q.p}},{"int":{bigint:q.q}},{"int":{bigint:q.g}}]});this.asn1AlgId=new o({name:"dsa",asn1params:r});var t=new i({bigint:q.y});this.asn1SubjPKey=new b({hex:"00"+t.tohex()})}}catch(p){}};if(f!==undefined){this.setPubKey(f)}};extendClass(KJUR.asn1.x509.SubjectPublicKeyInfo,KJUR.asn1.ASN1Object);KJUR.asn1.x509.Time=function(f){KJUR.asn1.x509.Time.superclass.constructor.call(this);var e=null,a=null,d=KJUR,c=d.asn1,b=c.DERUTCTime,g=c.DERGeneralizedTime;this.params=null;this.type=null;this.setTimeParams=function(h){this.timeParams=h};this.setByParam=function(h){this.params=h};this.getType=function(h){if(h.match(/^[0-9]{12}Z$/)){return"utc"}if(h.match(/^[0-9]{14}Z$/)){return"gen"}if(h.match(/^[0-9]{12}\.[0-9]+Z$/)){return"utc"}if(h.match(/^[0-9]{14}\.[0-9]+Z$/)){return"gen"}return null};this.tohex=function(){var i=this.params;var h=null;if(typeof i=="string"){i={str:i}}if(i!=null&&i.str&&(i.type==null||i.type==undefined)){i.type=this.getType(i.str)}if(i!=null&&i.str){if(i.type=="utc"){h=new b(i.str)}if(i.type=="gen"){h=new g(i.str)}}else{if(this.type=="gen"){h=new g()}else{h=new b()}}if(h==null){throw new Error("wrong setting for Time")}this.TLV=h.tohex();return this.TLV};this.getEncodedHex=function(){return this.tohex()};if(f!=undefined){this.setByParam(f)}};KJUR.asn1.x509.Time_bak=function(f){KJUR.asn1.x509.Time_bak.superclass.constructor.call(this);var e=null,a=null,d=KJUR,c=d.asn1,b=c.DERUTCTime,g=c.DERGeneralizedTime;this.setTimeParams=function(h){this.timeParams=h};this.tohex=function(){var h=null;if(this.timeParams!=null){if(this.type=="utc"){h=new b(this.timeParams)}else{h=new g(this.timeParams)}}else{if(this.type=="utc"){h=new b()}else{h=new g()}}this.TLV=h.tohex();return this.TLV};this.getEncodedHex=function(){return this.tohex()};this.type="utc";if(f!==undefined){if(f.type!==undefined){this.type=f.type}else{if(f.str!==undefined){if(f.str.match(/^[0-9]{12}Z$/)){this.type="utc"}if(f.str.match(/^[0-9]{14}Z$/)){this.type="gen"}}}this.timeParams=f}};extendClass(KJUR.asn1.x509.Time,KJUR.asn1.ASN1Object);KJUR.asn1.x509.AlgorithmIdentifier=function(e){KJUR.asn1.x509.AlgorithmIdentifier.superclass.constructor.call(this);this.nameAlg=null;this.asn1Alg=null;this.asn1Params=null;this.paramEmpty=false;var b=KJUR,a=b.asn1,c=a.x509.AlgorithmIdentifier.PSSNAME2ASN1TLV;this.tohex=function(){if(this.nameAlg===null&&this.asn1Alg===null){throw new Error("algorithm not specified")}if(this.nameAlg!==null){var f=null;for(var h in c){if(h===this.nameAlg){f=c[h]}}if(f!==null){this.hTLV=f;return this.hTLV}}if(this.nameAlg!==null&&this.asn1Alg===null){this.asn1Alg=a.x509.OID.name2obj(this.nameAlg)}var g=[this.asn1Alg];if(this.asn1Params!==null){g.push(this.asn1Params)}var i=new a.DERSequence({array:g});this.hTLV=i.tohex();return this.hTLV};this.getEncodedHex=function(){return this.tohex()};if(e!==undefined){if(e.name!==undefined){this.nameAlg=e.name}if(e.asn1params!==undefined){this.asn1Params=e.asn1params}if(e.paramempty!==undefined){this.paramEmpty=e.paramempty}}if(this.asn1Params===null&&this.paramEmpty===false&&this.nameAlg!==null){if(this.nameAlg.name!==undefined){this.nameAlg=this.nameAlg.name}var d=this.nameAlg.toLowerCase();if(d.substr(-7,7)!=="withdsa"&&d.substr(-9,9)!=="withecdsa"){this.asn1Params=new a.DERNull()}}};extendClass(KJUR.asn1.x509.AlgorithmIdentifier,KJUR.asn1.ASN1Object);KJUR.asn1.x509.AlgorithmIdentifier.PSSNAME2ASN1TLV={SHAwithRSAandMGF1:"300d06092a864886f70d01010a3000",SHA256withRSAandMGF1:"303d06092a864886f70d01010a3030a00d300b0609608648016503040201a11a301806092a864886f70d010108300b0609608648016503040201a203020120",SHA384withRSAandMGF1:"303d06092a864886f70d01010a3030a00d300b0609608648016503040202a11a301806092a864886f70d010108300b0609608648016503040202a203020130",SHA512withRSAandMGF1:"303d06092a864886f70d01010a3030a00d300b0609608648016503040203a11a301806092a864886f70d010108300b0609608648016503040203a203020140"};KJUR.asn1.x509.GeneralName=function(f){KJUR.asn1.x509.GeneralName.superclass.constructor.call(this);var l={rfc822:"81",dns:"82",dn:"a4",uri:"86",ip:"87",otherName:"a0"},b=KJUR,h=b.asn1,d=h.x509,a=d.X500Name,g=d.OtherName,e=h.DERIA5String,i=h.DERPrintableString,k=h.DEROctetString,c=h.DERTaggedObject,m=h.ASN1Object,j=Error;this.params=null;this.setByParam=function(n){this.params=n};this.tohex=function(){var p=this.params;var z,w,q;var w=false;if(p.other!==undefined){z="a0",q=new g(p.other)}else{if(p.rfc822!==undefined){z="81";q=new e({str:p.rfc822})}else{if(p.dns!==undefined){z="82";q=new e({str:p.dns})}else{if(p.dn!==undefined){z="a4";w=true;if(typeof p.dn==="string"){q=new a({str:p.dn})}else{if(p.dn instanceof KJUR.asn1.x509.X500Name){q=p.dn}else{q=new a(p.dn)}}}else{if(p.ldapdn!==undefined){z="a4";w=true;q=new a({ldapstr:p.ldapdn})}else{if(p.certissuer!==undefined||p.certsubj!==undefined){z="a4";w=true;var n,o;var y=null;if(p.certsubj!==undefined){n=false;o=p.certsubj}else{n=true;o=p.certissuer}if(o.match(/^[0-9A-Fa-f]+$/)){y==o}if(o.indexOf("-----BEGIN ")!=-1){y=pemtohex(o)}if(y==null){throw new Error("certsubj/certissuer not cert")}var v=new X509();v.hex=y;var s;if(n){s=v.getIssuerHex()}else{s=v.getSubjectHex()}q=new m();q.hTLV=s}else{if(p.uri!==undefined){z="86";q=new e({str:p.uri})}else{if(p.ip!==undefined){z="87";var t=p.ip;var u;var r="malformed IP address";if(t.match(/^[0-9.]+[.][0-9.]+$/)){u=intarystrtohex("["+t.split(".").join(",")+"]");if(u.length!==8){throw new j(r)}}else{if(t.match(/^[0-9A-Fa-f:]+:[0-9A-Fa-f:]+$/)){u=ipv6tohex(t)}else{if(t.match(/^([0-9A-Fa-f][0-9A-Fa-f]){1,}$/)){u=t}else{throw new j(r)}}}q=new k({hex:u})}else{throw new j("improper params")}}}}}}}}var A=new c({tag:z,explicit:w,obj:q});return A.tohex()};this.getEncodedHex=function(){return this.tohex()};if(f!==undefined){this.setByParam(f)}};extendClass(KJUR.asn1.x509.GeneralName,KJUR.asn1.ASN1Object);KJUR.asn1.x509.GeneralNames=function(d){KJUR.asn1.x509.GeneralNames.superclass.constructor.call(this);var a=null,c=KJUR,b=c.asn1;this.setByParamArray=function(g){for(var e=0;e0){n.push(new c({tag:"a3",obj:new j(q.ext)}))}var o=new KJUR.asn1.DERSequence({array:n});return o.tohex()};this.getEncodedHex=function(){return this.tohex()};if(f!==undefined){this.setByParam(f)}};extendClass(KJUR.asn1.x509.TBSCertificate,KJUR.asn1.ASN1Object);KJUR.asn1.x509.Extensions=function(d){KJUR.asn1.x509.Extensions.superclass.constructor.call(this);var c=KJUR,b=c.asn1,a=b.DERSequence,e=b.x509;this.aParam=[];this.setByParam=function(f){this.aParam=f};this.tohex=function(){var f=[];for(var h=0;h-1){i.push(new f({"int":this.pathLen}))}var h=new b({array:i});this.asn1ExtnValue=h;return this.asn1ExtnValue.tohex()};this.oid="2.5.29.19";this.cA=false;this.pathLen=-1;if(g!==undefined){if(g.cA!==undefined){this.cA=g.cA}if(g.pathLen!==undefined){this.pathLen=g.pathLen}}};extendClass(KJUR.asn1.x509.BasicConstraints,KJUR.asn1.x509.Extension);KJUR.asn1.x509.CRLDistributionPoints=function(d){KJUR.asn1.x509.CRLDistributionPoints.superclass.constructor.call(this,d);var b=KJUR,a=b.asn1,c=a.x509;this.getExtnValueHex=function(){return this.asn1ExtnValue.tohex()};this.setByDPArray=function(e){var f=[];for(var g=0;g0){f.push(new b({array:j}))}}var g=new b({array:f});return g.tohex()};this.getEncodedHex=function(){return this.tohex()};if(d!==undefined){this.params=d}};extendClass(KJUR.asn1.x509.PolicyInformation,KJUR.asn1.ASN1Object);KJUR.asn1.x509.PolicyQualifierInfo=function(e){KJUR.asn1.x509.PolicyQualifierInfo.superclass.constructor.call(this,e);var c=KJUR.asn1,b=c.DERSequence,d=c.DERIA5String,f=c.DERObjectIdentifier,a=c.x509.UserNotice;this.params=null;this.tohex=function(){if(this.params.cps!==undefined){var g=new b({array:[new f({oid:"1.3.6.1.5.5.7.2.1"}),new d({str:this.params.cps})]});return g.tohex()}if(this.params.unotice!=undefined){var g=new b({array:[new f({oid:"1.3.6.1.5.5.7.2.2"}),new a(this.params.unotice)]});return g.tohex()}};this.getEncodedHex=function(){return this.tohex()};if(e!==undefined){this.params=e}};extendClass(KJUR.asn1.x509.PolicyQualifierInfo,KJUR.asn1.ASN1Object);KJUR.asn1.x509.UserNotice=function(e){KJUR.asn1.x509.UserNotice.superclass.constructor.call(this,e);var a=KJUR.asn1.DERSequence,d=KJUR.asn1.DERInteger,c=KJUR.asn1.x509.DisplayText,b=KJUR.asn1.x509.NoticeReference;this.params=null;this.tohex=function(){var f=[];if(this.params.noticeref!==undefined){f.push(new b(this.params.noticeref))}if(this.params.exptext!==undefined){f.push(new c(this.params.exptext))}var g=new a({array:f});return g.tohex()};this.getEncodedHex=function(){return this.tohex()};if(e!==undefined){this.params=e}};extendClass(KJUR.asn1.x509.UserNotice,KJUR.asn1.ASN1Object);KJUR.asn1.x509.NoticeReference=function(d){KJUR.asn1.x509.NoticeReference.superclass.constructor.call(this,d);var a=KJUR.asn1.DERSequence,c=KJUR.asn1.DERInteger,b=KJUR.asn1.x509.DisplayText;this.params=null;this.tohex=function(){var f=[];if(this.params.org!==undefined){f.push(new b(this.params.org))}if(this.params.noticenum!==undefined){var h=[];var e=this.params.noticenum;for(var j=0;j0){for(var g=0;g0;f++){var h=c.shift();if(e===true){var d=b.pop();var j=(d+","+h).replace(/\\,/g,",");b.push(j);e=false}else{b.push(h)}if(h.substr(-1,1)==="\\"){e=true}}b=b.map(function(a){return a.replace("/","\\/")});b.reverse();return"/"+b.join("/")};KJUR.asn1.x509.X500Name.ldapToOneline=function(a){return KJUR.asn1.x509.X500Name.ldapToCompat(a)};KJUR.asn1.x509.RDN=function(b){KJUR.asn1.x509.RDN.superclass.constructor.call(this);this.asn1Array=[];this.paramArray=[];this.sRule="utf8";var a=KJUR.asn1.x509.AttributeTypeAndValue;this.setByParam=function(c){if(c.rule!==undefined){this.sRule=c.rule}if(c.str!==undefined){this.addByMultiValuedString(c.str)}if(c.array!==undefined){this.paramArray=c.array}};this.addByString=function(c){this.asn1Array.push(new KJUR.asn1.x509.AttributeTypeAndValue({str:c,rule:this.sRule}))};this.addByMultiValuedString=function(e){var c=KJUR.asn1.x509.RDN.parseString(e);for(var d=0;d0){for(var d=0;d0;g++){var k=j.shift();if(h===true){var f=c.pop();var d=(f+"+"+k).replace(/\\\+/g,"+");c.push(d);h=false}else{c.push(k)}if(k.substr(-1,1)==="\\"){h=true}}var l=false;var b=[];for(var g=0;c.length>0;g++){var k=c.shift();if(l===true){var e=b.pop();if(k.match(/"$/)){var d=(e+"+"+k).replace(/^([^=]+)="(.*)"$/,"$1=$2");b.push(d);l=false}else{b.push(e+"+"+k)}}else{b.push(k)}if(k.match(/^[^=]+="/)){l=true}}return b};KJUR.asn1.x509.AttributeTypeAndValue=function(c){KJUR.asn1.x509.AttributeTypeAndValue.superclass.constructor.call(this);this.sRule="utf8";this.sType=null;this.sValue=null;this.dsType=null;var a=KJUR,g=a.asn1,d=g.DERSequence,l=g.DERUTF8String,i=g.DERPrintableString,h=g.DERTeletexString,b=g.DERIA5String,e=g.DERVisibleString,k=g.DERBMPString,f=a.lang.String.isMail,j=a.lang.String.isPrintable;this.setByParam=function(o){if(o.rule!==undefined){this.sRule=o.rule}if(o.ds!==undefined){this.dsType=o.ds}if(o.value===undefined&&o.str!==undefined){var n=o.str;var m=n.match(/^([^=]+)=(.+)$/);if(m){this.sType=m[1];this.sValue=m[2]}else{throw new Error("malformed attrTypeAndValueStr: "+attrTypeAndValueStr)}}else{this.sType=o.type;this.sValue=o.value}};this.setByString=function(n,o){if(o!==undefined){this.sRule=o}var m=n.match(/^([^=]+)=(.+)$/);if(m){this.setByAttrTypeAndValueStr(m[1],m[2])}else{throw new Error("malformed attrTypeAndValueStr: "+attrTypeAndValueStr)}};this._getDsType=function(){var o=this.sType;var n=this.sValue;var m=this.sRule;if(m==="prn"){if(o=="CN"&&f(n)){return"ia5"}if(j(n)){return"prn"}return"utf8"}else{if(m==="utf8"){if(o=="CN"&&f(n)){return"ia5"}if(o=="C"){return"prn"}return"utf8"}}return"utf8"};this.setByAttrTypeAndValueStr=function(o,n,m){if(m!==undefined){this.sRule=m}this.sType=o;this.sValue=n};this.getValueObj=function(n,m){if(n=="utf8"){return new l({str:m})}if(n=="prn"){return new i({str:m})}if(n=="tel"){return new h({str:m})}if(n=="ia5"){return new b({str:m})}if(n=="vis"){return new e({str:m})}if(n=="bmp"){return new k({str:m})}throw new Error("unsupported directory string type: type="+n+" value="+m)};this.tohex=function(){if(this.dsType==null){this.dsType=this._getDsType()}var n=KJUR.asn1.x509.OID.atype2obj(this.sType);var m=this.getValueObj(this.dsType,this.sValue);var p=new d({array:[n,m]});this.TLV=p.tohex();return this.TLV};this.getEncodedHex=function(){return this.tohex()};if(c!==undefined){this.setByParam(c)}};extendClass(KJUR.asn1.x509.AttributeTypeAndValue,KJUR.asn1.ASN1Object);KJUR.asn1.x509.SubjectPublicKeyInfo=function(f){KJUR.asn1.x509.SubjectPublicKeyInfo.superclass.constructor.call(this);var l=null,k=null,a=KJUR,j=a.asn1,i=j.DERInteger,b=j.DERBitString,m=j.DERObjectIdentifier,e=j.DERSequence,h=j.ASN1Util.newObject,d=j.x509,o=d.AlgorithmIdentifier,g=a.crypto,n=g.ECDSA,c=g.DSA;this.getASN1Object=function(){if(this.asn1AlgId==null||this.asn1SubjPKey==null){throw"algId and/or subjPubKey not set"}var p=new e({array:[this.asn1AlgId,this.asn1SubjPKey]});return p};this.tohex=function(){var p=this.getASN1Object();this.hTLV=p.tohex();return this.hTLV};this.getEncodedHex=function(){return this.tohex()};this.setPubKey=function(q){try{if(q instanceof RSAKey){var u=h({seq:[{"int":{bigint:q.n}},{"int":{"int":q.e}}]});var s=u.tohex();this.asn1AlgId=new o({name:"rsaEncryption"});this.asn1SubjPKey=new b({hex:"00"+s})}}catch(p){}try{if(q instanceof KJUR.crypto.ECDSA){var r=new m({name:q.curveName});this.asn1AlgId=new o({name:"ecPublicKey",asn1params:r});this.asn1SubjPKey=new b({hex:"00"+q.pubKeyHex})}}catch(p){}try{if(q instanceof KJUR.crypto.DSA){var r=new h({seq:[{"int":{bigint:q.p}},{"int":{bigint:q.q}},{"int":{bigint:q.g}}]});this.asn1AlgId=new o({name:"dsa",asn1params:r});var t=new i({bigint:q.y});this.asn1SubjPKey=new b({hex:"00"+t.tohex()})}}catch(p){}};if(f!==undefined){this.setPubKey(f)}};extendClass(KJUR.asn1.x509.SubjectPublicKeyInfo,KJUR.asn1.ASN1Object);KJUR.asn1.x509.Time=function(f){KJUR.asn1.x509.Time.superclass.constructor.call(this);var e=null,a=null,d=KJUR,c=d.asn1,b=c.DERUTCTime,g=c.DERGeneralizedTime;this.params=null;this.type=null;this.setTimeParams=function(h){this.timeParams=h};this.setByParam=function(h){this.params=h};this.getType=function(h){if(h.match(/^[0-9]{12}Z$/)){return"utc"}if(h.match(/^[0-9]{14}Z$/)){return"gen"}if(h.match(/^[0-9]{12}\.[0-9]+Z$/)){return"utc"}if(h.match(/^[0-9]{14}\.[0-9]+Z$/)){return"gen"}return null};this.tohex=function(){var i=this.params;var h=null;if(typeof i=="string"){i={str:i}}if(i!=null&&i.str&&(i.type==null||i.type==undefined)){i.type=this.getType(i.str)}if(i!=null&&i.str){if(i.type=="utc"){h=new b(i.str)}if(i.type=="gen"){h=new g(i.str)}}else{if(this.type=="gen"){h=new g()}else{h=new b()}}if(h==null){throw new Error("wrong setting for Time")}this.TLV=h.tohex();return this.TLV};this.getEncodedHex=function(){return this.tohex()};if(f!=undefined){this.setByParam(f)}};KJUR.asn1.x509.Time_bak=function(f){KJUR.asn1.x509.Time_bak.superclass.constructor.call(this);var e=null,a=null,d=KJUR,c=d.asn1,b=c.DERUTCTime,g=c.DERGeneralizedTime;this.setTimeParams=function(h){this.timeParams=h};this.tohex=function(){var h=null;if(this.timeParams!=null){if(this.type=="utc"){h=new b(this.timeParams)}else{h=new g(this.timeParams)}}else{if(this.type=="utc"){h=new b()}else{h=new g()}}this.TLV=h.tohex();return this.TLV};this.getEncodedHex=function(){return this.tohex()};this.type="utc";if(f!==undefined){if(f.type!==undefined){this.type=f.type}else{if(f.str!==undefined){if(f.str.match(/^[0-9]{12}Z$/)){this.type="utc"}if(f.str.match(/^[0-9]{14}Z$/)){this.type="gen"}}}this.timeParams=f}};extendClass(KJUR.asn1.x509.Time,KJUR.asn1.ASN1Object);KJUR.asn1.x509.AlgorithmIdentifier=function(e){KJUR.asn1.x509.AlgorithmIdentifier.superclass.constructor.call(this);this.nameAlg=null;this.asn1Alg=null;this.asn1Params=null;this.paramEmpty=false;var b=KJUR,a=b.asn1,c=a.x509.AlgorithmIdentifier.PSSNAME2ASN1TLV;this.tohex=function(){if(this.nameAlg===null&&this.asn1Alg===null){throw new Error("algorithm not specified")}if(this.nameAlg!==null){var f=null;for(var h in c){if(h===this.nameAlg){f=c[h]}}if(f!==null){this.hTLV=f;return this.hTLV}}if(this.nameAlg!==null&&this.asn1Alg===null){this.asn1Alg=a.x509.OID.name2obj(this.nameAlg)}var g=[this.asn1Alg];if(this.asn1Params!==null){g.push(this.asn1Params)}var i=new a.DERSequence({array:g});this.hTLV=i.tohex();return this.hTLV};this.getEncodedHex=function(){return this.tohex()};if(e!==undefined){if(e.name!==undefined){this.nameAlg=e.name}if(e.asn1params!==undefined){this.asn1Params=e.asn1params}if(e.paramempty!==undefined){this.paramEmpty=e.paramempty}}if(this.asn1Params===null&&this.paramEmpty===false&&this.nameAlg!==null){if(this.nameAlg.name!==undefined){this.nameAlg=this.nameAlg.name}var d=this.nameAlg.toLowerCase();if(d.substr(-7,7)!=="withdsa"&&d.substr(-9,9)!=="withecdsa"){this.asn1Params=new a.DERNull()}}};extendClass(KJUR.asn1.x509.AlgorithmIdentifier,KJUR.asn1.ASN1Object);KJUR.asn1.x509.AlgorithmIdentifier.PSSNAME2ASN1TLV={SHAwithRSAandMGF1:"300d06092a864886f70d01010a3000",SHA256withRSAandMGF1:"303d06092a864886f70d01010a3030a00d300b0609608648016503040201a11a301806092a864886f70d010108300b0609608648016503040201a203020120",SHA384withRSAandMGF1:"303d06092a864886f70d01010a3030a00d300b0609608648016503040202a11a301806092a864886f70d010108300b0609608648016503040202a203020130",SHA512withRSAandMGF1:"303d06092a864886f70d01010a3030a00d300b0609608648016503040203a11a301806092a864886f70d010108300b0609608648016503040203a203020140"};KJUR.asn1.x509.GeneralName=function(f){KJUR.asn1.x509.GeneralName.superclass.constructor.call(this);var l={rfc822:"81",dns:"82",dn:"a4",uri:"86",ip:"87",otherName:"a0"},b=KJUR,h=b.asn1,d=h.x509,a=d.X500Name,g=d.OtherName,e=h.DERIA5String,i=h.DERPrintableString,k=h.DEROctetString,c=h.DERTaggedObject,m=h.ASN1Object,j=Error;this.params=null;this.setByParam=function(n){this.params=n};this.tohex=function(){var p=this.params;var A,y,q;var y=false;if(p.other!==undefined){A="a0",q=new g(p.other)}else{if(p.rfc822!==undefined){A="81";q=new e({str:p.rfc822})}else{if(p.dns!==undefined){A="82";q=new e({str:p.dns})}else{if(p.dn!==undefined){A="a4";y=true;if(typeof p.dn==="string"){q=new a({str:p.dn})}else{if(p.dn instanceof KJUR.asn1.x509.X500Name){q=p.dn}else{q=new a(p.dn)}}}else{if(p.ldapdn!==undefined){A="a4";y=true;q=new a({ldapstr:p.ldapdn})}else{if(p.certissuer!==undefined||p.certsubj!==undefined){A="a4";y=true;var n,o;var z=null;if(p.certsubj!==undefined){n=false;o=p.certsubj}else{n=true;o=p.certissuer}if(o.match(/^[0-9A-Fa-f]+$/)){z==o}if(o.indexOf("-----BEGIN ")!=-1){z=pemtohex(o)}if(z==null){throw new Error("certsubj/certissuer not cert")}var w=new X509();w.hex=z;var s;if(n){s=w.getIssuerHex()}else{s=w.getSubjectHex()}q=new m();q.hTLV=s}else{if(p.uri!==undefined){A="86";q=new e({str:p.uri})}else{if(p.ip!==undefined){A="87";var v;var t=p.ip;try{if(t.match(/^[0-9a-f]+$/)){var r=t.length;if(r==8||r==16||r==32||r==64){v=t}else{throw"err"}}else{v=iptohex(t)}}catch(u){throw new j("malformed IP address: "+p.ip+":"+u.message)}q=new k({hex:v})}else{throw new j("improper params")}}}}}}}}var B=new c({tag:A,explicit:y,obj:q});return B.tohex()};this.getEncodedHex=function(){return this.tohex()};if(f!==undefined){this.setByParam(f)}};extendClass(KJUR.asn1.x509.GeneralName,KJUR.asn1.ASN1Object);KJUR.asn1.x509.GeneralNames=function(d){KJUR.asn1.x509.GeneralNames.superclass.constructor.call(this);var a=null,c=KJUR,b=c.asn1;this.setByParamArray=function(g){for(var e=0;e0){var m=b(n.valhex,q[0]);var p=j(m,0);var t=[];for(var o=0;o1){var r=b(n.valhex,q[1]);n.polhex=r}delete n.valhex};this.setSignaturePolicyIdentifier=function(s){var q=j(s.valhex,0);if(q.length>0){var r=l.getOID(s.valhex,q[0]);s.oid=r}if(q.length>1){var m=new a();var t=j(s.valhex,q[1]);var p=b(s.valhex,t[0]);var o=m.getAlgorithmIdentifierName(p);s.alg=o;var n=i(s.valhex,t[1]);s.hash=n}delete s.valhex};this.setSigningCertificateV2=function(o){var s=j(o.valhex,0);if(s.length>0){var n=b(o.valhex,s[0]);var r=j(n,0);var u=[];for(var q=0;q1){var t=b(o.valhex,s[1]);o.polhex=t}delete o.valhex};this.getESSCertID=function(o){var p={};var n=j(o,0);if(n.length>0){var q=i(o,n[0]);p.hash=q}if(n.length>1){var m=b(o,n[1]);var r=this.getIssuerSerial(m);if(r.serial!=undefined){p.serial=r.serial}if(r.issuer!=undefined){p.issuer=r.issuer}}return p};this.getESSCertIDv2=function(q){var s={};var p=j(q,0);if(p.length<1||3r+1){var m=b(q,p[r+1]);var t=this.getIssuerSerial(m);s.issuer=t.issuer;s.serial=t.serial}return s};this.getIssuerSerial=function(q){var r={};var n=j(q,0);var m=b(q,n[0]);var p=h.getGeneralNames(m);var o=p[0].dn;r.issuer=o;var s=i(q,n[1]);r.serial={hex:s};return r};this.getCertificateSet=function(p){var n=j(p,0);var m=[];for(var o=0;o1){var o=this.getPKIStatusInfo(b(n,l[0]));var m=b(n,l[1]);var p=this.getToken(m);p.statusinfo=o;return p}}};this.getToken=function(m){var l=new KJUR.asn1.cms.CMSParser;var n=l.getCMSSignedData(m);this.setTSTInfo(n);return n};this.setTSTInfo=function(l){var o=l.econtent;if(o.type=="tstinfo"){var n=o.content.hex;var m=this.getTSTInfo(n);o.content=m}};this.getTSTInfo=function(r){var x={};var s=i(r,0);var p=g(r,s[1]);x.policy=hextooid(p);var o=b(r,s[2]);x.messageImprint=this.getMessageImprint(o);var u=g(r,s[3]);x.serial={hex:u};var y=g(r,s[4]);x.genTime={str:hextoutf8(y)};var q=0;if(s.length>5&&r.substr(s[5],2)=="30"){var v=b(r,s[5]);x.accuracy=this.getAccuracy(v);q++}if(s.length>5+q&&r.substr(s[5+q],2)=="01"){var z=g(r,s[5+q]);if(z=="ff"){x.ordering=true}q++}if(s.length>5+q&&r.substr(s[5+q],2)=="02"){var n=g(r,s[5+q]);x.nonce={hex:n};q++}if(s.length>5+q&&r.substr(s[5+q],2)=="a0"){var m=b(r,s[5+q]);m="30"+m.substr(2);pGeneralNames=f.getGeneralNames(m);var t=pGeneralNames[0].dn;x.tsa=t;q++}if(s.length>5+q&&r.substr(s[5+q],2)=="a1"){var l=b(r,s[5+q]);l="30"+l.substr(2);var w=f.getExtParamArray(l);x.ext=w;q++}return x};this.getAccuracy=function(q){var r={};var o=i(q,0);for(var p=0;p1&&o.substr(r[1],2)=="30"){var m=b(o,r[1]);t.statusstr=this.getPKIFreeText(m);n++}if(r.length>n&&o.substr(r[1+n],2)=="03"){var q=b(o,r[1+n]);t.failinfo=this.getPKIFailureInfo(q)}return t};this.getPKIFreeText=function(n){var o=[];var l=i(n,0);for(var m=0;m>6);var i=128|(a&63);return hextoutf8(j.toString(16)+i.toString(16))}var j=224|((h&240)>>4);var i=128|((h&15)<<2)|((a&192)>>6);var g=128|(a&63);return hextoutf8(j.toString(16)+i.toString(16)+g.toString(16))}var c=d.match(/.{4}/g);var b=c.map(e);return b.join("")}function encodeURIComponentAll(a){var d=encodeURIComponent(a);var b="";for(var c=0;c"7"){return"00"+a}return a}function intarystrtohex(b){b=b.replace(/^\s*\[\s*/,"");b=b.replace(/\s*\]\s*$/,"");b=b.replace(/\s*/g,"");try{var c=b.split(/,/).map(function(g,e,h){var f=parseInt(g);if(f<0||255a.length){d=a.length}for(var b=0;b0){o=o+"."+k.join(".")}return o}catch(j){return null}}var strpad=function(c,b,a){if(a==undefined){a="0"}if(c.length>=b){return c}return new Array(b-c.length+1).join(a)+c};function bitstrtoint(e){if(e.length%2!=0){return -1}e=e.toLowerCase();if(e.match(/^[0-9a-f]+$/)==null){return -1}try{var a=e.substr(0,2);if(a=="00"){return parseInt(e.substr(2),16)}var b=parseInt(a,16);if(b>7){return -1}var g=e.substr(2);var d=parseInt(g,16).toString(2);if(d=="0"){d="00000000"}d=d.slice(0,0-b);var f=parseInt(d,2);if(f==NaN){return -1}return f}catch(c){return -1}}function inttobitstr(e){if(typeof e!="number"){return null}if(e<0){return null}var c=Number(e).toString(2);var b=8-c.length%8;if(b==8){b=0}c=c+strpad("",b,"0");var d=parseInt(c,2).toString(16);if(d.length%2==1){d="0"+d}var a="0"+b;return a+d}function bitstrtobinstr(a){var b=bitstrtoint(a);if(b==-1){return null}return b.toString(2)}function binstrtobitstr(b){if(typeof b!="string"){return null}if(b.match(/^[01]+$/)==null){return null}try{var c=parseInt(b,2);return inttobitstr(c)}catch(a){return null}}function extendClass(c,a){var b=function(){};b.prototype=a.prototype;c.prototype=new b();c.prototype.constructor=c;c.superclass=a.prototype;if(a.prototype.constructor==Object.prototype.constructor){a.prototype.constructor=a}}; +var KJUR;if(typeof KJUR=="undefined"||!KJUR){KJUR={}}if(typeof KJUR.lang=="undefined"||!KJUR.lang){KJUR.lang={}}KJUR.lang.String=function(){};function Base64x(){}function stoBA(d){var b=new Array();for(var c=0;c>6);var i=128|(a&63);return hextoutf8(j.toString(16)+i.toString(16))}var j=224|((h&240)>>4);var i=128|((h&15)<<2)|((a&192)>>6);var g=128|(a&63);return hextoutf8(j.toString(16)+i.toString(16)+g.toString(16))}var c=d.match(/.{4}/g);var b=c.map(e);return b.join("")}function encodeURIComponentAll(a){var d=encodeURIComponent(a);var b="";for(var c=0;c"7"){return"00"+a}return a}function intarystrtohex(b){b=b.replace(/^\s*\[\s*/,"");b=b.replace(/\s*\]\s*$/,"");b=b.replace(/\s*/g,"");try{var c=b.split(/,/).map(function(g,e,h){var f=parseInt(g);if(f<0||255a.length){d=a.length}for(var b=0;b0){o=o+"."+k.join(".")}return o}catch(j){return null}}var strpad=function(c,b,a){if(a==undefined){a="0"}if(c.length>=b){return c}return new Array(b-c.length+1).join(a)+c};function bitstrtoint(e){if(e.length%2!=0){return -1}e=e.toLowerCase();if(e.match(/^[0-9a-f]+$/)==null){return -1}try{var a=e.substr(0,2);if(a=="00"){return parseInt(e.substr(2),16)}var b=parseInt(a,16);if(b>7){return -1}var g=e.substr(2);var d=parseInt(g,16).toString(2);if(d=="0"){d="00000000"}d=d.slice(0,0-b);var f=parseInt(d,2);if(f==NaN){return -1}return f}catch(c){return -1}}function inttobitstr(e){if(typeof e!="number"){return null}if(e<0){return null}var c=Number(e).toString(2);var b=8-c.length%8;if(b==8){b=0}c=c+strpad("",b,"0");var d=parseInt(c,2).toString(16);if(d.length%2==1){d="0"+d}var a="0"+b;return a+d}function bitstrtobinstr(a){var b=bitstrtoint(a);if(b==-1){return null}return b.toString(2)}function binstrtobitstr(b){if(typeof b!="string"){return null}if(b.match(/^[01]+$/)==null){return null}try{var c=parseInt(b,2);return inttobitstr(c)}catch(a){return null}}function extendClass(c,a){var b=function(){};b.prototype=a.prototype;c.prototype=new b();c.prototype.constructor=c;c.superclass=a.prototype;if(a.prototype.constructor==Object.prototype.constructor){a.prototype.constructor=a}}; if(typeof KJUR=="undefined"||!KJUR){KJUR={}}if(typeof KJUR.crypto=="undefined"||!KJUR.crypto){KJUR.crypto={}}KJUR.crypto.Util=new function(){this.DIGESTINFOHEAD={sha1:"3021300906052b0e03021a05000414",sha224:"302d300d06096086480165030402040500041c",sha256:"3031300d060960864801650304020105000420",sha384:"3041300d060960864801650304020205000430",sha512:"3051300d060960864801650304020305000440",md2:"3020300c06082a864886f70d020205000410",md5:"3020300c06082a864886f70d020505000410",ripemd160:"3021300906052b2403020105000414",};this.DEFAULTPROVIDER={md5:"cryptojs",sha1:"cryptojs",sha224:"cryptojs",sha256:"cryptojs",sha384:"cryptojs",sha512:"cryptojs",ripemd160:"cryptojs",hmacmd5:"cryptojs",hmacsha1:"cryptojs",hmacsha224:"cryptojs",hmacsha256:"cryptojs",hmacsha384:"cryptojs",hmacsha512:"cryptojs",hmacripemd160:"cryptojs",MD5withRSA:"cryptojs/jsrsa",SHA1withRSA:"cryptojs/jsrsa",SHA224withRSA:"cryptojs/jsrsa",SHA256withRSA:"cryptojs/jsrsa",SHA384withRSA:"cryptojs/jsrsa",SHA512withRSA:"cryptojs/jsrsa",RIPEMD160withRSA:"cryptojs/jsrsa",MD5withECDSA:"cryptojs/jsrsa",SHA1withECDSA:"cryptojs/jsrsa",SHA224withECDSA:"cryptojs/jsrsa",SHA256withECDSA:"cryptojs/jsrsa",SHA384withECDSA:"cryptojs/jsrsa",SHA512withECDSA:"cryptojs/jsrsa",RIPEMD160withECDSA:"cryptojs/jsrsa",SHA1withDSA:"cryptojs/jsrsa",SHA224withDSA:"cryptojs/jsrsa",SHA256withDSA:"cryptojs/jsrsa",MD5withRSAandMGF1:"cryptojs/jsrsa",SHAwithRSAandMGF1:"cryptojs/jsrsa",SHA1withRSAandMGF1:"cryptojs/jsrsa",SHA224withRSAandMGF1:"cryptojs/jsrsa",SHA256withRSAandMGF1:"cryptojs/jsrsa",SHA384withRSAandMGF1:"cryptojs/jsrsa",SHA512withRSAandMGF1:"cryptojs/jsrsa",RIPEMD160withRSAandMGF1:"cryptojs/jsrsa",};this.CRYPTOJSMESSAGEDIGESTNAME={md5:CryptoJS.algo.MD5,sha1:CryptoJS.algo.SHA1,sha224:CryptoJS.algo.SHA224,sha256:CryptoJS.algo.SHA256,sha384:CryptoJS.algo.SHA384,sha512:CryptoJS.algo.SHA512,ripemd160:CryptoJS.algo.RIPEMD160};this.getDigestInfoHex=function(a,b){if(typeof this.DIGESTINFOHEAD[b]=="undefined"){throw"alg not supported in Util.DIGESTINFOHEAD: "+b}return this.DIGESTINFOHEAD[b]+a};this.getPaddedDigestInfoHex=function(h,a,j){var c=this.getDigestInfoHex(h,a);var d=j/4;if(c.length+22>d){throw"key is too short for SigAlg: keylen="+j+","+a}var b="0001";var k="00"+c;var g="";var l=d-b.length-k.length;for(var f=0;f=0;--u){v=v.twice2D();v.z=f.ONE;if(t.testBit(u)){if(s.testBit(u)){v=v.add2D(y)}else{v=v.add2D(x)}}else{if(s.testBit(u)){v=v.add2D(w)}}}return v}this.getBigRandom=function(r){return new f(r.bitLength(),a).mod(r.subtract(f.ONE)).add(f.ONE)};this.setNamedCurve=function(r){this.ecparams=c.getByName(r);this.prvKeyHex=null;this.pubKeyHex=null;this.curveName=r};this.setPrivateKeyHex=function(r){this.isPrivate=true;this.prvKeyHex=r};this.setPublicKeyHex=function(r){this.isPublic=true;this.pubKeyHex=r};this.getPublicKeyXYHex=function(){var t=this.pubKeyHex;if(t.substr(0,2)!=="04"){throw"this method supports uncompressed format(04) only"}var s=this.ecparams.keycharlen;if(t.length!==2+s*2){throw"malformed public key hex length"}var r={};r.x=t.substr(2,s);r.y=t.substr(2+s);return r};this.getShortNISTPCurveName=function(){var r=this.curveName;if(r==="secp256r1"||r==="NIST P-256"||r==="P-256"||r==="prime256v1"){return"P-256"}if(r==="secp384r1"||r==="NIST P-384"||r==="P-384"){return"P-384"}if(r==="secp521r1"||r==="NIST P-521"||r==="P-521"){return"P-521"}return null};this.generateKeyPairHex=function(){var s=this.ecparams.n;var u=this.getBigRandom(s);var r=this.ecparams.keycharlen;var t=("0000000000"+u.toString(16)).slice(-r);this.setPrivateKeyHex(t);var v=this.generatePublicKeyHex();return{ecprvhex:t,ecpubhex:v}};this.generatePublicKeyHex=function(){var u=new f(this.prvKeyHex,16);var w=this.ecparams.G.multiply(u);var t=w.getX().toBigInteger();var s=w.getY().toBigInteger();var r=this.ecparams.keycharlen;var y=("0000000000"+t.toString(16)).slice(-r);var v=("0000000000"+s.toString(16)).slice(-r);var x="04"+y+v;this.setPublicKeyHex(x);return x};this.signWithMessageHash=function(r){return this.signHex(r,this.prvKeyHex)};this.signHex=function(x,u){var A=new f(u,16);var v=this.ecparams.n;var z=new f(x.substring(0,this.ecparams.keycharlen),16);do{var w=this.getBigRandom(v);var B=this.ecparams.G;var y=B.multiply(w);var t=y.getX().toBigInteger().mod(v)}while(t.compareTo(f.ZERO)<=0);var C=w.modInverse(v).multiply(z.add(A.multiply(t))).mod(v);return m.biRSSigToASN1Sig(t,C)};this.sign=function(w,B){var z=B;var u=this.ecparams.n;var y=f.fromByteArrayUnsigned(w);do{var v=this.getBigRandom(u);var A=this.ecparams.G;var x=A.multiply(v);var t=x.getX().toBigInteger().mod(u)}while(t.compareTo(BigInteger.ZERO)<=0);var C=v.modInverse(u).multiply(y.add(z.multiply(t))).mod(u);return this.serializeSig(t,C)};this.verifyWithMessageHash=function(s,r){return this.verifyHex(s,r,this.pubKeyHex)};this.verifyHex=function(v,y,u){try{var t,B;var w=m.parseSigHex(y);t=w.r;B=w.s;var x=h.decodeFromHex(this.ecparams.curve,u);var z=new f(v.substring(0,this.ecparams.keycharlen),16);return this.verifyRaw(z,t,B,x)}catch(A){return false}};this.verify=function(z,A,u){var w,t;if(Bitcoin.Util.isArray(A)){var y=this.parseSig(A);w=y.r;t=y.s}else{if("object"===typeof A&&A.r&&A.s){w=A.r;t=A.s}else{throw"Invalid value for signature"}}var v;if(u instanceof ECPointFp){v=u}else{if(Bitcoin.Util.isArray(u)){v=h.decodeFrom(this.ecparams.curve,u)}else{throw"Invalid format for pubkey value, must be byte array or ECPointFp"}}var x=f.fromByteArrayUnsigned(z);return this.verifyRaw(x,w,t,v)};this.verifyRaw=function(z,t,E,y){var x=this.ecparams.n;var D=this.ecparams.G;if(t.compareTo(f.ONE)<0||t.compareTo(x)>=0){return false}if(E.compareTo(f.ONE)<0||E.compareTo(x)>=0){return false}var A=E.modInverse(x);var w=z.multiply(A).mod(x);var u=t.multiply(A).mod(x);var B=D.multiply(w).add(y.multiply(u));var C=B.getX().toBigInteger().mod(x);return C.equals(t)};this.serializeSig=function(v,u){var w=v.toByteArraySigned();var t=u.toByteArraySigned();var x=[];x.push(2);x.push(w.length);x=x.concat(w);x.push(2);x.push(t.length);x=x.concat(t);x.unshift(x.length);x.unshift(48);return x};this.parseSig=function(y){var x;if(y[0]!=48){throw new Error("Signature not a valid DERSequence")}x=2;if(y[x]!=2){throw new Error("First element in signature must be a DERInteger")}var w=y.slice(x+2,x+2+y[x+1]);x+=2+y[x+1];if(y[x]!=2){throw new Error("Second element in signature must be a DERInteger")}var t=y.slice(x+2,x+2+y[x+1]);x+=2+y[x+1];var v=f.fromByteArrayUnsigned(w);var u=f.fromByteArrayUnsigned(t);return{r:v,s:u}};this.parseSigCompact=function(w){if(w.length!==65){throw"Signature has the wrong length"}var t=w[0]-27;if(t<0||t>7){throw"Invalid signature type"}var x=this.ecparams.n;var v=f.fromByteArrayUnsigned(w.slice(1,33)).mod(x);var u=f.fromByteArrayUnsigned(w.slice(33,65)).mod(x);return{r:v,s:u,i:t}};this.readPKCS5PrvKeyHex=function(u){if(k(u)===false){throw new Error("not ASN.1 hex string")}var r,t,v;try{r=n(u,0,["[0]",0],"06");t=n(u,0,[1],"04");try{v=n(u,0,["[1]",0],"03")}catch(s){}}catch(s){throw new Error("malformed PKCS#1/5 plain ECC private key")}this.curveName=d(r);if(this.curveName===undefined){throw"unsupported curve name"}this.setNamedCurve(this.curveName);this.setPublicKeyHex(v);this.setPrivateKeyHex(t);this.isPublic=false};this.readPKCS8PrvKeyHex=function(v){if(k(v)===false){throw new j("not ASN.1 hex string")}var t,r,u,w;try{t=n(v,0,[1,0],"06");r=n(v,0,[1,1],"06");u=n(v,0,[2,0,1],"04");try{w=n(v,0,[2,0,"[1]",0],"03")}catch(s){}}catch(s){throw new j("malformed PKCS#8 plain ECC private key")}this.curveName=d(r);if(this.curveName===undefined){throw new j("unsupported curve name")}this.setNamedCurve(this.curveName);this.setPublicKeyHex(w);this.setPrivateKeyHex(u);this.isPublic=false};this.readPKCS8PubKeyHex=function(u){if(k(u)===false){throw new j("not ASN.1 hex string")}var t,r,v;try{t=n(u,0,[0,0],"06");r=n(u,0,[0,1],"06");v=n(u,0,[1],"03")}catch(s){throw new j("malformed PKCS#8 ECC public key")}this.curveName=d(r);if(this.curveName===null){throw new j("unsupported curve name")}this.setNamedCurve(this.curveName);this.setPublicKeyHex(v)};this.readCertPubKeyHex=function(t,v){if(k(t)===false){throw new j("not ASN.1 hex string")}var r,u;try{r=n(t,0,[0,5,0,1],"06");u=n(t,0,[0,5,1],"03")}catch(s){throw new j("malformed X.509 certificate ECC public key")}this.curveName=d(r);if(this.curveName===null){throw new j("unsupported curve name")}this.setNamedCurve(this.curveName);this.setPublicKeyHex(u)};if(e!==undefined){if(e.curve!==undefined){this.curveName=e.curve}}if(this.curveName===undefined){this.curveName=g}this.setNamedCurve(this.curveName);if(e!==undefined){if(e.prv!==undefined){this.setPrivateKeyHex(e.prv)}if(e.pub!==undefined){this.setPublicKeyHex(e.pub)}}};KJUR.crypto.ECDSA.parseSigHex=function(a){var b=KJUR.crypto.ECDSA.parseSigHexInHexRS(a);var d=new BigInteger(b.r,16);var c=new BigInteger(b.s,16);return{r:d,s:c}};KJUR.crypto.ECDSA.parseSigHexInHexRS=function(f){var j=ASN1HEX,i=j.getChildIdx,g=j.getV;j.checkStrictDER(f,0);if(f.substr(0,2)!="30"){throw new Error("signature is not a ASN.1 sequence")}var h=i(f,0);if(h.length!=2){throw new Error("signature shall have two elements")}var e=h[0];var d=h[1];if(f.substr(e,2)!="02"){throw new Error("1st item not ASN.1 integer")}if(f.substr(d,2)!="02"){throw new Error("2nd item not ASN.1 integer")}var c=g(f,e);var b=g(f,d);return{r:c,s:b}};KJUR.crypto.ECDSA.asn1SigToConcatSig=function(d){var e=KJUR.crypto.ECDSA.parseSigHexInHexRS(d);var b=e.r;var a=e.s;if(b.length>=130&&b.length<=134){if(b.length%2!=0){throw Error("unknown ECDSA sig r length error")}if(a.length%2!=0){throw Error("unknown ECDSA sig s length error")}if(b.substr(0,2)=="00"){b=b.substr(2)}if(a.substr(0,2)=="00"){a=a.substr(2)}var c=Math.max(b.length,a.length);b=("000000"+b).slice(-c);a=("000000"+a).slice(-c);return b+a}if(b.substr(0,2)=="00"&&(b.length%32)==2){b=b.substr(2)}if(a.substr(0,2)=="00"&&(a.length%32)==2){a=a.substr(2)}if((b.length%32)==30){b="00"+b}if((a.length%32)==30){a="00"+a}if(b.length%32!=0){throw Error("unknown ECDSA sig r length error")}if(a.length%32!=0){throw Error("unknown ECDSA sig s length error")}return b+a};KJUR.crypto.ECDSA.concatSigToASN1Sig=function(a){if(a.length%4!=0){throw Error("unknown ECDSA concatinated r-s sig length error")}var c=a.substr(0,a.length/2);var b=a.substr(a.length/2);return KJUR.crypto.ECDSA.hexRSSigToASN1Sig(c,b)};KJUR.crypto.ECDSA.hexRSSigToASN1Sig=function(b,a){var d=new BigInteger(b,16);var c=new BigInteger(a,16);return KJUR.crypto.ECDSA.biRSSigToASN1Sig(d,c)};KJUR.crypto.ECDSA.biRSSigToASN1Sig=function(f,d){var c=KJUR.asn1;var b=new c.DERInteger({bigint:f});var a=new c.DERInteger({bigint:d});var e=new c.DERSequence({array:[b,a]});return e.tohex()};KJUR.crypto.ECDSA.getName=function(a){if(a==="2b8104001f"){return"secp192k1"}if(a==="2a8648ce3d030107"){return"secp256r1"}if(a==="2b8104000a"){return"secp256k1"}if(a==="2b81040021"){return"secp224r1"}if(a==="2b81040022"){return"secp384r1"}if(a==="2b81040023"){return"secp521r1"}if("|secp256r1|NIST P-256|P-256|prime256v1|".indexOf(a)!==-1){return"secp256r1"}if("|secp256k1|".indexOf(a)!==-1){return"secp256k1"}if("|secp224r1|NIST P-224|P-224|".indexOf(a)!==-1){return"secp224r1"}if("|secp384r1|NIST P-384|P-384|".indexOf(a)!==-1){return"secp384r1"}if("|secp521r1|NIST P-521|P-521|".indexOf(a)!==-1){return"secp521r1"}return null}; if(typeof KJUR=="undefined"||!KJUR){KJUR={}}if(typeof KJUR.crypto=="undefined"||!KJUR.crypto){KJUR.crypto={}}KJUR.crypto.ECParameterDB=new function(){var b={};var c={};function a(d){return new BigInteger(d,16)}this.getByName=function(e){var d=e;if(typeof c[d]!="undefined"){d=c[e]}if(typeof b[d]!="undefined"){return b[d]}throw"unregistered EC curve name: "+d};this.regist=function(A,l,o,g,m,e,j,f,k,u,d,x){b[A]={};var s=a(o);var z=a(g);var y=a(m);var t=a(e);var w=a(j);var r=new ECCurveFp(s,z,y);var q=r.decodePointHex("04"+f+k);b[A]["name"]=A;b[A]["keylen"]=l;b[A]["keycharlen"]=Math.ceil(l/8)*2;b[A]["curve"]=r;b[A]["G"]=q;b[A]["n"]=t;b[A]["h"]=w;b[A]["oid"]=d;b[A]["info"]=x;for(var v=0;v=0;){delete D[n[A]]}}}return q.call(C,B,D)};x=s({"":x},"")}return x}})(); -var KJUR;if(typeof KJUR=="undefined"||!KJUR){KJUR={}}if(typeof KJUR.lang=="undefined"||!KJUR.lang){KJUR.lang={}}KJUR.lang.String=function(){};function Base64x(){}function stoBA(d){var b=new Array();for(var c=0;c>6);var i=128|(a&63);return hextoutf8(j.toString(16)+i.toString(16))}var j=224|((h&240)>>4);var i=128|((h&15)<<2)|((a&192)>>6);var g=128|(a&63);return hextoutf8(j.toString(16)+i.toString(16)+g.toString(16))}var c=d.match(/.{4}/g);var b=c.map(e);return b.join("")}function encodeURIComponentAll(a){var d=encodeURIComponent(a);var b="";for(var c=0;c"7"){return"00"+a}return a}function intarystrtohex(b){b=b.replace(/^\s*\[\s*/,"");b=b.replace(/\s*\]\s*$/,"");b=b.replace(/\s*/g,"");try{var c=b.split(/,/).map(function(g,e,h){var f=parseInt(g);if(f<0||255a.length){d=a.length}for(var b=0;b0){o=o+"."+k.join(".")}return o}catch(j){return null}}var strpad=function(c,b,a){if(a==undefined){a="0"}if(c.length>=b){return c}return new Array(b-c.length+1).join(a)+c};function bitstrtoint(e){if(e.length%2!=0){return -1}e=e.toLowerCase();if(e.match(/^[0-9a-f]+$/)==null){return -1}try{var a=e.substr(0,2);if(a=="00"){return parseInt(e.substr(2),16)}var b=parseInt(a,16);if(b>7){return -1}var g=e.substr(2);var d=parseInt(g,16).toString(2);if(d=="0"){d="00000000"}d=d.slice(0,0-b);var f=parseInt(d,2);if(f==NaN){return -1}return f}catch(c){return -1}}function inttobitstr(e){if(typeof e!="number"){return null}if(e<0){return null}var c=Number(e).toString(2);var b=8-c.length%8;if(b==8){b=0}c=c+strpad("",b,"0");var d=parseInt(c,2).toString(16);if(d.length%2==1){d="0"+d}var a="0"+b;return a+d}function bitstrtobinstr(a){var b=bitstrtoint(a);if(b==-1){return null}return b.toString(2)}function binstrtobitstr(b){if(typeof b!="string"){return null}if(b.match(/^[01]+$/)==null){return null}try{var c=parseInt(b,2);return inttobitstr(c)}catch(a){return null}}function extendClass(c,a){var b=function(){};b.prototype=a.prototype;c.prototype=new b();c.prototype.constructor=c;c.superclass=a.prototype;if(a.prototype.constructor==Object.prototype.constructor){a.prototype.constructor=a}}; +var KJUR;if(typeof KJUR=="undefined"||!KJUR){KJUR={}}if(typeof KJUR.lang=="undefined"||!KJUR.lang){KJUR.lang={}}KJUR.lang.String=function(){};function Base64x(){}function stoBA(d){var b=new Array();for(var c=0;c>6);var i=128|(a&63);return hextoutf8(j.toString(16)+i.toString(16))}var j=224|((h&240)>>4);var i=128|((h&15)<<2)|((a&192)>>6);var g=128|(a&63);return hextoutf8(j.toString(16)+i.toString(16)+g.toString(16))}var c=d.match(/.{4}/g);var b=c.map(e);return b.join("")}function encodeURIComponentAll(a){var d=encodeURIComponent(a);var b="";for(var c=0;c"7"){return"00"+a}return a}function intarystrtohex(b){b=b.replace(/^\s*\[\s*/,"");b=b.replace(/\s*\]\s*$/,"");b=b.replace(/\s*/g,"");try{var c=b.split(/,/).map(function(g,e,h){var f=parseInt(g);if(f<0||255a.length){d=a.length}for(var b=0;b0){o=o+"."+k.join(".")}return o}catch(j){return null}}var strpad=function(c,b,a){if(a==undefined){a="0"}if(c.length>=b){return c}return new Array(b-c.length+1).join(a)+c};function bitstrtoint(e){if(e.length%2!=0){return -1}e=e.toLowerCase();if(e.match(/^[0-9a-f]+$/)==null){return -1}try{var a=e.substr(0,2);if(a=="00"){return parseInt(e.substr(2),16)}var b=parseInt(a,16);if(b>7){return -1}var g=e.substr(2);var d=parseInt(g,16).toString(2);if(d=="0"){d="00000000"}d=d.slice(0,0-b);var f=parseInt(d,2);if(f==NaN){return -1}return f}catch(c){return -1}}function inttobitstr(e){if(typeof e!="number"){return null}if(e<0){return null}var c=Number(e).toString(2);var b=8-c.length%8;if(b==8){b=0}c=c+strpad("",b,"0");var d=parseInt(c,2).toString(16);if(d.length%2==1){d="0"+d}var a="0"+b;return a+d}function bitstrtobinstr(a){var b=bitstrtoint(a);if(b==-1){return null}return b.toString(2)}function binstrtobitstr(b){if(typeof b!="string"){return null}if(b.match(/^[01]+$/)==null){return null}try{var c=parseInt(b,2);return inttobitstr(c)}catch(a){return null}}function extendClass(c,a){var b=function(){};b.prototype=a.prototype;c.prototype=new b();c.prototype.constructor=c;c.superclass=a.prototype;if(a.prototype.constructor==Object.prototype.constructor){a.prototype.constructor=a}}; if(typeof KJUR=="undefined"||!KJUR){KJUR={}}if(typeof KJUR.crypto=="undefined"||!KJUR.crypto){KJUR.crypto={}}KJUR.crypto.Util=new function(){this.DIGESTINFOHEAD={sha1:"3021300906052b0e03021a05000414",sha224:"302d300d06096086480165030402040500041c",sha256:"3031300d060960864801650304020105000420",sha384:"3041300d060960864801650304020205000430",sha512:"3051300d060960864801650304020305000440",md2:"3020300c06082a864886f70d020205000410",md5:"3020300c06082a864886f70d020505000410",ripemd160:"3021300906052b2403020105000414",};this.DEFAULTPROVIDER={md5:"cryptojs",sha1:"cryptojs",sha224:"cryptojs",sha256:"cryptojs",sha384:"cryptojs",sha512:"cryptojs",ripemd160:"cryptojs",hmacmd5:"cryptojs",hmacsha1:"cryptojs",hmacsha224:"cryptojs",hmacsha256:"cryptojs",hmacsha384:"cryptojs",hmacsha512:"cryptojs",hmacripemd160:"cryptojs",MD5withRSA:"cryptojs/jsrsa",SHA1withRSA:"cryptojs/jsrsa",SHA224withRSA:"cryptojs/jsrsa",SHA256withRSA:"cryptojs/jsrsa",SHA384withRSA:"cryptojs/jsrsa",SHA512withRSA:"cryptojs/jsrsa",RIPEMD160withRSA:"cryptojs/jsrsa",MD5withECDSA:"cryptojs/jsrsa",SHA1withECDSA:"cryptojs/jsrsa",SHA224withECDSA:"cryptojs/jsrsa",SHA256withECDSA:"cryptojs/jsrsa",SHA384withECDSA:"cryptojs/jsrsa",SHA512withECDSA:"cryptojs/jsrsa",RIPEMD160withECDSA:"cryptojs/jsrsa",SHA1withDSA:"cryptojs/jsrsa",SHA224withDSA:"cryptojs/jsrsa",SHA256withDSA:"cryptojs/jsrsa",MD5withRSAandMGF1:"cryptojs/jsrsa",SHAwithRSAandMGF1:"cryptojs/jsrsa",SHA1withRSAandMGF1:"cryptojs/jsrsa",SHA224withRSAandMGF1:"cryptojs/jsrsa",SHA256withRSAandMGF1:"cryptojs/jsrsa",SHA384withRSAandMGF1:"cryptojs/jsrsa",SHA512withRSAandMGF1:"cryptojs/jsrsa",RIPEMD160withRSAandMGF1:"cryptojs/jsrsa",};this.CRYPTOJSMESSAGEDIGESTNAME={md5:CryptoJS.algo.MD5,sha1:CryptoJS.algo.SHA1,sha224:CryptoJS.algo.SHA224,sha256:CryptoJS.algo.SHA256,sha384:CryptoJS.algo.SHA384,sha512:CryptoJS.algo.SHA512,ripemd160:CryptoJS.algo.RIPEMD160};this.getDigestInfoHex=function(a,b){if(typeof this.DIGESTINFOHEAD[b]=="undefined"){throw"alg not supported in Util.DIGESTINFOHEAD: "+b}return this.DIGESTINFOHEAD[b]+a};this.getPaddedDigestInfoHex=function(h,a,j){var c=this.getDigestInfoHex(h,a);var d=j/4;if(c.length+22>d){throw"key is too short for SigAlg: keylen="+j+","+a}var b="0001";var k="00"+c;var g="";var l=d-b.length-k.length;for(var f=0;f0){var b=":"+n.join(":")+":";if(b.indexOf(":"+k+":")==-1){throw"algorithm '"+k+"' not accepted in the list"}}if(k!="none"&&B===null){throw"key shall be specified to verify."}if(typeof B=="string"&&B.indexOf("-----BEGIN ")!=-1){B=KEYUTIL.getKey(B)}if(z=="RS"||z=="PS"){if(!(B instanceof m)){throw"key shall be a RSAKey obj for RS* and PS* algs"}}if(z=="ES"){if(!(B instanceof p)){throw"key shall be a ECDSA obj for ES* algs"}}if(k=="none"){}var u=null;if(t.jwsalg2sigalg[l.alg]===undefined){throw"unsupported alg name: "+k}else{u=t.jwsalg2sigalg[k]}if(u=="none"){throw"not supported"}else{if(u.substr(0,4)=="Hmac"){var o=null;if(B===undefined){throw"hexadecimal key shall be specified for HMAC"}var j=new s({alg:u,pass:B});j.updateString(c);o=j.doFinal();return A==o}else{if(u.indexOf("withECDSA")!=-1){var h=null;try{h=p.concatSigToASN1Sig(A)}catch(v){return false}var g=new d({alg:u});g.init(B);g.updateString(c);return g.verify(h)}else{var g=new d({alg:u});g.init(B);g.updateString(c);return g.verify(A)}}}};KJUR.jws.JWS.parse=function(g){var c=g.split(".");var b={};var f,e,d;if(c.length!=2&&c.length!=3){throw"malformed sJWS: wrong number of '.' splitted elements"}f=c[0];e=c[1];if(c.length==3){d=c[2]}b.headerObj=KJUR.jws.JWS.readSafeJSONString(b64utoutf8(f));b.payloadObj=KJUR.jws.JWS.readSafeJSONString(b64utoutf8(e));b.headerPP=JSON.stringify(b.headerObj,null," ");if(b.payloadObj==null){b.payloadPP=b64utoutf8(e)}else{b.payloadPP=JSON.stringify(b.payloadObj,null," ")}if(d!==undefined){b.sigHex=b64utohex(d)}return b};KJUR.jws.JWS.verifyJWT=function(e,l,r){var d=KJUR,j=d.jws,o=j.JWS,n=o.readSafeJSONString,p=o.inArray,f=o.includedArray;var k=e.split(".");var c=k[0];var i=k[1];var q=c+"."+i;var m=b64utohex(k[2]);var h=n(b64utoutf8(c));var g=n(b64utoutf8(i));if(h.alg===undefined){return false}if(r.alg===undefined){throw"acceptField.alg shall be specified"}if(!p(h.alg,r.alg)){return false}if(g.iss!==undefined&&typeof r.iss==="object"){if(!p(g.iss,r.iss)){return false}}if(g.sub!==undefined&&typeof r.sub==="object"){if(!p(g.sub,r.sub)){return false}}if(g.aud!==undefined&&typeof r.aud==="object"){if(typeof g.aud=="string"){if(!p(g.aud,r.aud)){return false}}else{if(typeof g.aud=="object"){if(!f(g.aud,r.aud)){return false}}}}var b=j.IntDate.getNow();if(r.verifyAt!==undefined&&typeof r.verifyAt==="number"){b=r.verifyAt}if(r.gracePeriod===undefined||typeof r.gracePeriod!=="number"){r.gracePeriod=0}if(g.exp!==undefined&&typeof g.exp=="number"){if(g.exp+r.gracePeriod=a.length){return null}}var e="";while(++f191)&&(h<224)){e+=String.fromCharCode(((h&31)<<6)|(a[f+1]&63));++f}else{e+=String.fromCharCode(((h&15)<<12)|((a[f+1]&63)<<6)|(a[f+2]&63));f+=2}}}return e}function oaep_mgf1_str(c,a,e){var b="",d=0;while(b.length>24,(d&16711680)>>16,(d&65280)>>8,d&255]));d+=1}return b}function oaep_unpad(o,b,g,p){var e=KJUR.crypto.MessageDigest;var r=KJUR.crypto.Util;var c=null;if(!g){g="sha1"}if(typeof g==="string"){c=e.getCanonicalAlgName(g);p=e.getHashLength(c);g=function(d){return hextorstr(r.hashHex(rstrtohex(d),c))}}o=o.toByteArray();var h;for(h=0;h0&&a.length>0){this.n=parseBigInt(c,16);this.e=parseInt(a,16);this.d=parseBigInt(b,16)}else{throw"Invalid RSA private key"}}}function RSASetPrivateEx(g,d,e,c,b,a,h,f){this.isPrivate=true;this.isPublic=false;if(g==null){throw"RSASetPrivateEx N == null"}if(d==null){throw"RSASetPrivateEx E == null"}if(g.length==0){throw"RSASetPrivateEx N.length == 0"}if(d.length==0){throw"RSASetPrivateEx E.length == 0"}if(g!=null&&d!=null&&g.length>0&&d.length>0){this.n=parseBigInt(g,16);this.e=parseInt(d,16);this.d=parseBigInt(e,16);this.p=parseBigInt(c,16);this.q=parseBigInt(b,16);this.dmp1=parseBigInt(a,16);this.dmq1=parseBigInt(h,16);this.coeff=parseBigInt(f,16)}else{throw"Invalid RSA private key in RSASetPrivateEx"}}function RSAGenerate(b,l){var a=new SecureRandom();var g=b>>1;this.e=parseInt(l,16);var c=new BigInteger(l,16);var d=(b/2)-100;var k=BigInteger.ONE.shiftLeft(d);for(;;){for(;;){this.p=new BigInteger(b-g,1,a);if(this.p.subtract(BigInteger.ONE).gcd(c).compareTo(BigInteger.ONE)==0&&this.p.isProbablePrime(10)){break}}for(;;){this.q=new BigInteger(g,1,a);if(this.q.subtract(BigInteger.ONE).gcd(c).compareTo(BigInteger.ONE)==0&&this.q.isProbablePrime(10)){break}}if(this.p.compareTo(this.q)<=0){var j=this.p;this.p=this.q;this.q=j}var h=this.q.subtract(this.p).abs();if(h.bitLength()>3)}function RSADecryptOAEP(e,d,b){if(e.length!=Math.ceil(this.n.bitLength()/4)){throw new Error("wrong ctext length")}var f=parseBigInt(e,16);var a=this.doPrivate(f);if(a==null){return null}return oaep_unpad(a,(this.n.bitLength()+7)>>3,d,b)}RSAKey.prototype.doPrivate=RSADoPrivate;RSAKey.prototype.setPrivate=RSASetPrivate;RSAKey.prototype.setPrivateEx=RSASetPrivateEx;RSAKey.prototype.generate=RSAGenerate;RSAKey.prototype.decrypt=RSADecrypt;RSAKey.prototype.decryptOAEP=RSADecryptOAEP; if(typeof KJUR=="undefined"||!KJUR){KJUR={}}if(typeof KJUR.asn1=="undefined"||!KJUR.asn1){KJUR.asn1={}}KJUR.asn1.ASN1Util=new function(){this.integerToByteHex=function(a){var b=a.toString(16);if((b.length%2)==1){b="0"+b}return b};this.bigIntToMinTwosComplementsHex=function(j){var f=j.toString(16);if(f.substr(0,1)!="-"){if(f.length%2==1){f="0"+f}else{if(!f.match(/^[0-7]/)){f="00"+f}}}else{var a=f.substr(1);var e=a.length;if(e%2==1){e+=1}else{if(!f.match(/^[0-7]/)){e+=2}}var g="";for(var d=0;d15){throw new Error("ASN.1 length too long to represent by 8x: n = "+j.toString(16))}var g=128+h;return g.toString(16)+i}};this.tohex=function(){if(this.hTLV==null||this.isModified){this.hV=this.getFreshValueHex();this.hL=this.getLengthHexFromValue();this.hTLV=this.hT+this.hL+this.hV;this.isModified=false}return this.hTLV};this.getEncodedHex=function(){return this.tohex()};this.getValueHex=function(){this.tohex();return this.hV};this.getFreshValueHex=function(){return""};this.setByParam=function(g){this.params=g};if(e!=undefined){if(e.tlv!=undefined){this.hTLV=e.tlv;this.isModified=false}}};KJUR.asn1.DERAbstractString=function(c){KJUR.asn1.DERAbstractString.superclass.constructor.call(this);var b=null;var a=null;this.getString=function(){return this.s};this.setString=function(d){this.hTLV=null;this.isModified=true;this.s=d;this.hV=utf8tohex(this.s).toLowerCase()};this.setStringHex=function(d){this.hTLV=null;this.isModified=true;this.s=null;this.hV=d};this.getFreshValueHex=function(){return this.hV};if(typeof c!="undefined"){if(typeof c=="string"){this.setString(c)}else{if(typeof c.str!="undefined"){this.setString(c.str)}else{if(typeof c.hex!="undefined"){this.setStringHex(c.hex)}}}}};extendClass(KJUR.asn1.DERAbstractString,KJUR.asn1.ASN1Object);KJUR.asn1.DERAbstractTime=function(c){KJUR.asn1.DERAbstractTime.superclass.constructor.call(this);var b=null;var a=null;this.localDateToUTC=function(g){var e=g.getTime()+(g.getTimezoneOffset()*60000);var f=new Date(e);return f};this.formatDate=function(m,o,e){var g=this.zeroPadding;var n=this.localDateToUTC(m);var p=String(n.getFullYear());if(o=="utc"){p=p.substr(2,2)}var l=g(String(n.getMonth()+1),2);var q=g(String(n.getDate()),2);var h=g(String(n.getHours()),2);var i=g(String(n.getMinutes()),2);var j=g(String(n.getSeconds()),2);var r=p+l+q+h+i+j;if(e===true){var f=n.getMilliseconds();if(f!=0){var k=g(String(f),3);k=k.replace(/[0]+$/,"");r=r+"."+k}}return r+"Z"};this.zeroPadding=function(e,d){if(e.length>=d){return e}return new Array(d-e.length+1).join("0")+e};this.setByParam=function(d){this.hV=null;this.hTLV=null;this.params=d};this.getString=function(){return undefined};this.setString=function(d){this.hTLV=null;this.isModified=true;if(this.params==undefined){this.params={}}this.params.str=d};this.setByDate=function(d){this.hTLV=null;this.isModified=true;if(this.params==undefined){this.params={}}this.params.date=d};this.setByDateValue=function(h,j,e,d,f,g){var i=new Date(Date.UTC(h,j-1,e,d,f,g,0));this.setByDate(i)};this.getFreshValueHex=function(){return this.hV}};extendClass(KJUR.asn1.DERAbstractTime,KJUR.asn1.ASN1Object);KJUR.asn1.DERAbstractStructured=function(b){KJUR.asn1.DERAbstractString.superclass.constructor.call(this);var a=null;this.setByASN1ObjectArray=function(c){this.hTLV=null;this.isModified=true;this.asn1Array=c};this.appendASN1Object=function(c){this.hTLV=null;this.isModified=true;this.asn1Array.push(c)};this.asn1Array=new Array();if(typeof b!="undefined"){if(typeof b.array!="undefined"){this.asn1Array=b.array}}};extendClass(KJUR.asn1.DERAbstractStructured,KJUR.asn1.ASN1Object);KJUR.asn1.DERBoolean=function(a){KJUR.asn1.DERBoolean.superclass.constructor.call(this);this.hT="01";if(a==false){this.hTLV="010100"}else{this.hTLV="0101ff"}};extendClass(KJUR.asn1.DERBoolean,KJUR.asn1.ASN1Object);KJUR.asn1.DERInteger=function(a){KJUR.asn1.DERInteger.superclass.constructor.call(this);this.hT="02";this.setByBigInteger=function(b){this.hTLV=null;this.isModified=true;this.hV=KJUR.asn1.ASN1Util.bigIntToMinTwosComplementsHex(b)};this.setByInteger=function(c){var b=new BigInteger(String(c),10);this.setByBigInteger(b)};this.setValueHex=function(b){this.hV=b};this.getFreshValueHex=function(){return this.hV};if(typeof a!="undefined"){if(typeof a.bigint!="undefined"){this.setByBigInteger(a.bigint)}else{if(typeof a["int"]!="undefined"){this.setByInteger(a["int"])}else{if(typeof a=="number"){this.setByInteger(a)}else{if(typeof a.hex!="undefined"){this.setValueHex(a.hex)}}}}}};extendClass(KJUR.asn1.DERInteger,KJUR.asn1.ASN1Object);KJUR.asn1.DERBitString=function(b){if(b!==undefined&&typeof b.obj!=="undefined"){var a=KJUR.asn1.ASN1Util.newObject(b.obj);b.hex="00"+a.tohex()}KJUR.asn1.DERBitString.superclass.constructor.call(this);this.hT="03";this.setHexValueIncludingUnusedBits=function(c){this.hTLV=null;this.isModified=true;this.hV=c};this.setUnusedBitsAndHexValue=function(c,e){if(c<0||7=f){break}}return j};ASN1HEX.getNthChildIdx=function(d,b,e){var c=ASN1HEX.getChildIdx(d,b);return c[e]};ASN1HEX.getIdxbyList=function(e,d,c,i){var g=ASN1HEX;var f,b;if(c.length==0){if(i!==undefined){if(e.substr(d,2)!==i){return -1}}return d}f=c.shift();b=g.getChildIdx(e,d);if(f>=b.length){return -1}return g.getIdxbyList(e,b[f],c,i)};ASN1HEX.getIdxbyListEx=function(f,k,b,g){var m=ASN1HEX;var d,l;if(b.length==0){if(g!==undefined){if(f.substr(k,2)!==g){return -1}}return k}d=b.shift();l=m.getChildIdx(f,k);var j=0;for(var e=0;e=d.length){return null}return e.getTLV(d,a)};ASN1HEX.getTLVbyListEx=function(d,c,b,f){var e=ASN1HEX;var a=e.getIdxbyListEx(d,c,b,f);if(a==-1){return null}return e.getTLV(d,a)};ASN1HEX.getVbyList=function(e,c,b,g,i){var f=ASN1HEX;var a,d;a=f.getIdxbyList(e,c,b,g);if(a==-1){return null}if(a>=e.length){return null}d=f.getV(e,a);if(i===true){d=d.substr(2)}return d};ASN1HEX.getVbyListEx=function(b,e,a,d,f){var j=ASN1HEX;var g,c,i;g=j.getIdxbyListEx(b,e,a,d);if(g==-1){return null}i=j.getV(b,g);if(b.substr(g,2)=="03"&&f!==false){i=i.substr(2)}return i};ASN1HEX.getInt=function(e,b,f){if(f==undefined){f=-1}try{var c=e.substr(b,2);if(c!="02"&&c!="03"){return f}var a=ASN1HEX.getV(e,b);if(c=="02"){return parseInt(a,16)}else{return bitstrtoint(a)}}catch(d){return f}};ASN1HEX.getOID=function(c,a,d){if(d==undefined){d=null}try{if(c.substr(a,2)!="06"){return d}var e=ASN1HEX.getV(c,a);return hextooid(e)}catch(b){return d}};ASN1HEX.getOIDName=function(d,a,f){if(f==undefined){f=null}try{var e=ASN1HEX.getOID(d,a,f);if(e==f){return f}var b=KJUR.asn1.x509.OID.oid2name(e);if(b==""){return e}return b}catch(c){return f}};ASN1HEX.getString=function(d,b,e){if(e==undefined){e=null}try{var a=ASN1HEX.getV(d,b);return hextorstr(a)}catch(c){return e}};ASN1HEX.hextooidstr=function(e){var h=function(b,a){if(b.length>=a){return b}return new Array(a-b.length+1).join("0")+b};var l=[];var o=e.substr(0,2);var f=parseInt(o,16);l[0]=new String(Math.floor(f/40));l[1]=new String(f%40);var m=e.substr(2);var k=[];for(var g=0;g0){n=n+"."+j.join(".")}return n};ASN1HEX.dump=function(t,c,l,g){var p=ASN1HEX;var j=p.getV;var y=p.dump;var w=p.getChildIdx;var e=t;if(t instanceof KJUR.asn1.ASN1Object){e=t.tohex()}var q=function(A,i){if(A.length<=i*2){return A}else{var v=A.substr(0,i)+"..(total "+A.length/2+"bytes).."+A.substr(A.length-i,i);return v}};if(c===undefined){c={ommit_long_octet:32}}if(l===undefined){l=0}if(g===undefined){g=""}var x=c.ommit_long_octet;var z=e.substr(l,2);if(z=="01"){var h=j(e,l);if(h=="00"){return g+"BOOLEAN FALSE\n"}else{return g+"BOOLEAN TRUE\n"}}if(z=="02"){var h=j(e,l);return g+"INTEGER "+q(h,x)+"\n"}if(z=="03"){var h=j(e,l);if(p.isASN1HEX(h.substr(2))){var k=g+"BITSTRING, encapsulates\n";k=k+y(h.substr(2),c,0,g+" ");return k}else{return g+"BITSTRING "+q(h,x)+"\n"}}if(z=="04"){var h=j(e,l);if(p.isASN1HEX(h)){var k=g+"OCTETSTRING, encapsulates\n";k=k+y(h,c,0,g+" ");return k}else{return g+"OCTETSTRING "+q(h,x)+"\n"}}if(z=="05"){return g+"NULL\n"}if(z=="06"){var m=j(e,l);var b=KJUR.asn1.ASN1Util.oidHexToInt(m);var o=KJUR.asn1.x509.OID.oid2name(b);var a=b.replace(/\./g," ");if(o!=""){return g+"ObjectIdentifier "+o+" ("+a+")\n"}else{return g+"ObjectIdentifier ("+a+")\n"}}if(z=="0a"){return g+"ENUMERATED "+parseInt(j(e,l))+"\n"}if(z=="0c"){return g+"UTF8String '"+hextoutf8(j(e,l))+"'\n"}if(z=="13"){return g+"PrintableString '"+hextoutf8(j(e,l))+"'\n"}if(z=="14"){return g+"TeletexString '"+hextoutf8(j(e,l))+"'\n"}if(z=="16"){return g+"IA5String '"+hextoutf8(j(e,l))+"'\n"}if(z=="17"){return g+"UTCTime "+hextoutf8(j(e,l))+"\n"}if(z=="18"){return g+"GeneralizedTime "+hextoutf8(j(e,l))+"\n"}if(z=="1a"){return g+"VisualString '"+hextoutf8(j(e,l))+"'\n"}if(z=="1e"){return g+"BMPString '"+ucs2hextoutf8(j(e,l))+"'\n"}if(z=="30"){if(e.substr(l,4)=="3000"){return g+"SEQUENCE {}\n"}var k=g+"SEQUENCE\n";var d=w(e,l);var f=c;if((d.length==2||d.length==3)&&e.substr(d[0],2)=="06"&&e.substr(d[d.length-1],2)=="04"){var o=p.oidname(j(e,d[0]));var r=JSON.parse(JSON.stringify(c));r.x509ExtName=o;f=r}for(var u=0;u4){return{"enum":{hex:p}}}else{return{"enum":parseInt(p,16)}}}else{if(C=="30"||C=="31"){j[c[C]]=u(x);return j}else{if(C=="14"){var o=q(p);j[c[C]]={str:o};return j}else{if(C=="1e"){var o=n(p);j[c[C]]={str:o};return j}else{if(":0c:12:13:16:17:18:1a:".indexOf(C)!=-1){var o=k(p);j[c[C]]={str:o};return j}else{if(C.match(/^8[0-9]$/)){var o=k(p);if(o==null|o==""){return{tag:{tag:C,explicit:false,hex:p}}}else{if(o.match(/[\x00-\x1F\x7F-\x9F]/)!=null||o.match(/[\u0000-\u001F\u0080–\u009F]/)!=null){return{tag:{tag:C,explicit:false,hex:p}}}else{return{tag:{tag:C,explicit:false,str:o}}}}}else{if(C.match(/^a[0-9]$/)){try{if(!a(p)){throw new Error("not encap")}return{tag:{tag:C,explicit:true,obj:f(p)}}}catch(z){return{tag:{tag:C,explicit:true,hex:p}}}}else{var A=new KJUR.asn1.ASN1Object();A.hV=p;var w=A.getLengthHexFromValue();return{asn1:{tlv:C+w+p}}}}}}}}}}}}}}}};ASN1HEX.isContextTag=function(c,b){c=c.toLowerCase();var f,e;try{f=parseInt(c,16)}catch(d){return -1}if(b===undefined){if((f&192)==128){return true}else{return false}}try{var a=b.match(/^\[[0-9]+\]$/);if(a==null){return false}e=parseInt(b.substr(1,b.length-1),10);if(e>31){return false}if(((f&192)==128)&&((f&31)==e)){return true}return false}catch(d){return false}};ASN1HEX.isASN1HEX=function(e){var d=ASN1HEX;if(e.length%2==1){return false}var c=d.getVblen(e,0);var b=e.substr(0,2);var f=d.getL(e,0);var a=e.length-b.length-f.length;if(a==c*2){return true}return false};ASN1HEX.checkStrictDER=function(g,o,d,c,r){var s=ASN1HEX;if(d===undefined){if(typeof g!="string"){throw new Error("not hex string")}g=g.toLowerCase();if(!KJUR.lang.String.isHex(g)){throw new Error("not hex string")}d=g.length;c=g.length/2;if(c<128){r=1}else{r=Math.ceil(c.toString(16))+1}}var k=s.getL(g,o);if(k.length>r*2){throw new Error("L of TLV too long: idx="+o)}var n=s.getVblen(g,o);if(n>c){throw new Error("value of L too long than hex: idx="+o)}var q=s.getTLV(g,o);var f=q.length-2-s.getL(g,o).length;if(f!==(n*2)){throw new Error("V string length and L's value not the same:"+f+"/"+(n*2))}if(o===0){if(g.length!=q.length){throw new Error("total length and TLV length unmatch:"+g.length+"!="+q.length)}}var b=g.substr(o,2);if(b==="02"){var a=s.getVidx(g,o);if(g.substr(a,2)=="00"&&g.charCodeAt(a+2)<56){throw new Error("not least zeros for DER INTEGER")}}if(parseInt(b,16)&32){var p=s.getVblen(g,o);var m=0;var l=s.getChildIdx(g,o);for(var e=0;e>6);var i=128|(a&63);return hextoutf8(j.toString(16)+i.toString(16))}var j=224|((h&240)>>4);var i=128|((h&15)<<2)|((a&192)>>6);var g=128|(a&63);return hextoutf8(j.toString(16)+i.toString(16)+g.toString(16))}var c=d.match(/.{4}/g);var b=c.map(e);return b.join("")}function encodeURIComponentAll(a){var d=encodeURIComponent(a);var b="";for(var c=0;c"7"){return"00"+a}return a}function intarystrtohex(b){b=b.replace(/^\s*\[\s*/,"");b=b.replace(/\s*\]\s*$/,"");b=b.replace(/\s*/g,"");try{var c=b.split(/,/).map(function(g,e,h){var f=parseInt(g);if(f<0||255a.length){d=a.length}for(var b=0;b0){o=o+"."+k.join(".")}return o}catch(j){return null}}var strpad=function(c,b,a){if(a==undefined){a="0"}if(c.length>=b){return c}return new Array(b-c.length+1).join(a)+c};function bitstrtoint(e){if(e.length%2!=0){return -1}e=e.toLowerCase();if(e.match(/^[0-9a-f]+$/)==null){return -1}try{var a=e.substr(0,2);if(a=="00"){return parseInt(e.substr(2),16)}var b=parseInt(a,16);if(b>7){return -1}var g=e.substr(2);var d=parseInt(g,16).toString(2);if(d=="0"){d="00000000"}d=d.slice(0,0-b);var f=parseInt(d,2);if(f==NaN){return -1}return f}catch(c){return -1}}function inttobitstr(e){if(typeof e!="number"){return null}if(e<0){return null}var c=Number(e).toString(2);var b=8-c.length%8;if(b==8){b=0}c=c+strpad("",b,"0");var d=parseInt(c,2).toString(16);if(d.length%2==1){d="0"+d}var a="0"+b;return a+d}function bitstrtobinstr(a){var b=bitstrtoint(a);if(b==-1){return null}return b.toString(2)}function binstrtobitstr(b){if(typeof b!="string"){return null}if(b.match(/^[01]+$/)==null){return null}try{var c=parseInt(b,2);return inttobitstr(c)}catch(a){return null}}function extendClass(c,a){var b=function(){};b.prototype=a.prototype;c.prototype=new b();c.prototype.constructor=c;c.superclass=a.prototype;if(a.prototype.constructor==Object.prototype.constructor){a.prototype.constructor=a}}; +var KJUR;if(typeof KJUR=="undefined"||!KJUR){KJUR={}}if(typeof KJUR.lang=="undefined"||!KJUR.lang){KJUR.lang={}}KJUR.lang.String=function(){};function Base64x(){}function stoBA(d){var b=new Array();for(var c=0;c>6);var i=128|(a&63);return hextoutf8(j.toString(16)+i.toString(16))}var j=224|((h&240)>>4);var i=128|((h&15)<<2)|((a&192)>>6);var g=128|(a&63);return hextoutf8(j.toString(16)+i.toString(16)+g.toString(16))}var c=d.match(/.{4}/g);var b=c.map(e);return b.join("")}function encodeURIComponentAll(a){var d=encodeURIComponent(a);var b="";for(var c=0;c"7"){return"00"+a}return a}function intarystrtohex(b){b=b.replace(/^\s*\[\s*/,"");b=b.replace(/\s*\]\s*$/,"");b=b.replace(/\s*/g,"");try{var c=b.split(/,/).map(function(g,e,h){var f=parseInt(g);if(f<0||255a.length){d=a.length}for(var b=0;b0){o=o+"."+k.join(".")}return o}catch(j){return null}}var strpad=function(c,b,a){if(a==undefined){a="0"}if(c.length>=b){return c}return new Array(b-c.length+1).join(a)+c};function bitstrtoint(e){if(e.length%2!=0){return -1}e=e.toLowerCase();if(e.match(/^[0-9a-f]+$/)==null){return -1}try{var a=e.substr(0,2);if(a=="00"){return parseInt(e.substr(2),16)}var b=parseInt(a,16);if(b>7){return -1}var g=e.substr(2);var d=parseInt(g,16).toString(2);if(d=="0"){d="00000000"}d=d.slice(0,0-b);var f=parseInt(d,2);if(f==NaN){return -1}return f}catch(c){return -1}}function inttobitstr(e){if(typeof e!="number"){return null}if(e<0){return null}var c=Number(e).toString(2);var b=8-c.length%8;if(b==8){b=0}c=c+strpad("",b,"0");var d=parseInt(c,2).toString(16);if(d.length%2==1){d="0"+d}var a="0"+b;return a+d}function bitstrtobinstr(a){var b=bitstrtoint(a);if(b==-1){return null}return b.toString(2)}function binstrtobitstr(b){if(typeof b!="string"){return null}if(b.match(/^[01]+$/)==null){return null}try{var c=parseInt(b,2);return inttobitstr(c)}catch(a){return null}}function extendClass(c,a){var b=function(){};b.prototype=a.prototype;c.prototype=new b();c.prototype.constructor=c;c.superclass=a.prototype;if(a.prototype.constructor==Object.prototype.constructor){a.prototype.constructor=a}}; if(typeof KJUR=="undefined"||!KJUR){KJUR={}}if(typeof KJUR.crypto=="undefined"||!KJUR.crypto){KJUR.crypto={}}KJUR.crypto.Util=new function(){this.DIGESTINFOHEAD={sha1:"3021300906052b0e03021a05000414",sha224:"302d300d06096086480165030402040500041c",sha256:"3031300d060960864801650304020105000420",sha384:"3041300d060960864801650304020205000430",sha512:"3051300d060960864801650304020305000440",md2:"3020300c06082a864886f70d020205000410",md5:"3020300c06082a864886f70d020505000410",ripemd160:"3021300906052b2403020105000414",};this.DEFAULTPROVIDER={md5:"cryptojs",sha1:"cryptojs",sha224:"cryptojs",sha256:"cryptojs",sha384:"cryptojs",sha512:"cryptojs",ripemd160:"cryptojs",hmacmd5:"cryptojs",hmacsha1:"cryptojs",hmacsha224:"cryptojs",hmacsha256:"cryptojs",hmacsha384:"cryptojs",hmacsha512:"cryptojs",hmacripemd160:"cryptojs",MD5withRSA:"cryptojs/jsrsa",SHA1withRSA:"cryptojs/jsrsa",SHA224withRSA:"cryptojs/jsrsa",SHA256withRSA:"cryptojs/jsrsa",SHA384withRSA:"cryptojs/jsrsa",SHA512withRSA:"cryptojs/jsrsa",RIPEMD160withRSA:"cryptojs/jsrsa",MD5withECDSA:"cryptojs/jsrsa",SHA1withECDSA:"cryptojs/jsrsa",SHA224withECDSA:"cryptojs/jsrsa",SHA256withECDSA:"cryptojs/jsrsa",SHA384withECDSA:"cryptojs/jsrsa",SHA512withECDSA:"cryptojs/jsrsa",RIPEMD160withECDSA:"cryptojs/jsrsa",SHA1withDSA:"cryptojs/jsrsa",SHA224withDSA:"cryptojs/jsrsa",SHA256withDSA:"cryptojs/jsrsa",MD5withRSAandMGF1:"cryptojs/jsrsa",SHAwithRSAandMGF1:"cryptojs/jsrsa",SHA1withRSAandMGF1:"cryptojs/jsrsa",SHA224withRSAandMGF1:"cryptojs/jsrsa",SHA256withRSAandMGF1:"cryptojs/jsrsa",SHA384withRSAandMGF1:"cryptojs/jsrsa",SHA512withRSAandMGF1:"cryptojs/jsrsa",RIPEMD160withRSAandMGF1:"cryptojs/jsrsa",};this.CRYPTOJSMESSAGEDIGESTNAME={md5:CryptoJS.algo.MD5,sha1:CryptoJS.algo.SHA1,sha224:CryptoJS.algo.SHA224,sha256:CryptoJS.algo.SHA256,sha384:CryptoJS.algo.SHA384,sha512:CryptoJS.algo.SHA512,ripemd160:CryptoJS.algo.RIPEMD160};this.getDigestInfoHex=function(a,b){if(typeof this.DIGESTINFOHEAD[b]=="undefined"){throw"alg not supported in Util.DIGESTINFOHEAD: "+b}return this.DIGESTINFOHEAD[b]+a};this.getPaddedDigestInfoHex=function(h,a,j){var c=this.getDigestInfoHex(h,a);var d=j/4;if(c.length+22>d){throw"key is too short for SigAlg: keylen="+j+","+a}var b="0001";var k="00"+c;var g="";var l=d-b.length-k.length;for(var f=0;f>24,(d&16711680)>>16,(d&65280)>>8,d&255]))));d+=1}return b}RSAKey.prototype.signPSS=function(e,a,d){var c=function(f){return KJUR.crypto.Util.hashHex(f,a)};var b=c(rstrtohex(e));if(d===undefined){d=-1}return this.signWithMessageHashPSS(b,a,d)};RSAKey.prototype.signWithMessageHashPSS=function(l,a,k){var b=hextorstr(l);var g=b.length;var m=this.n.bitLength()-1;var c=Math.ceil(m/8);var d;var o=function(i){return KJUR.crypto.Util.hashHex(i,a)};if(k===-1||k===undefined){k=g}else{if(k===-2){k=c-g-2}else{if(k<-2){throw new Error("invalid salt length")}}}if(c<(g+k+2)){throw new Error("data too long")}var f="";if(k>0){f=new Array(k);new SecureRandom().nextBytes(f);f=String.fromCharCode.apply(String,f)}var n=hextorstr(o(rstrtohex("\x00\x00\x00\x00\x00\x00\x00\x00"+b+f)));var j=[];for(d=0;d>(8*c-m))&255;q[0]&=~p;for(d=0;dk){return false}var j=this.doPublic(b);var i=j.toString(16);if(i.length+3!=k/4){return false}var e=i.replace(/^1f+00/,"");var g=_rsasign_getAlgNameAndHashFromHexDisgestInfo(e);if(g.length==0){return false}var d=g[0];var h=g[1];var a=function(m){return KJUR.crypto.Util.hashString(m,d)};var c=a(f);return(h==c)};RSAKey.prototype.verifyWithMessageHash=function(e,a){if(a.length!=Math.ceil(this.n.bitLength()/4)){return false}var b=parseBigInt(a,16);if(b.bitLength()>this.n.bitLength()){return 0}var h=this.doPublic(b);var g=h.toString(16).replace(/^1f+00/,"");var c=_rsasign_getAlgNameAndHashFromHexDisgestInfo(g);if(c.length==0){return false}var d=c[0];var f=c[1];return(f==e)};RSAKey.prototype.verifyPSS=function(c,b,a,f){var e=function(g){return KJUR.crypto.Util.hashHex(g,a)};var d=e(rstrtohex(c));if(f===undefined){f=-1}return this.verifyWithMessageHashPSS(d,b,a,f)};RSAKey.prototype.verifyWithMessageHashPSS=function(f,s,l,c){if(s.length!=Math.ceil(this.n.bitLength()/4)){return false}var k=new BigInteger(s,16);var r=function(i){return KJUR.crypto.Util.hashHex(i,l)};var j=hextorstr(f);var h=j.length;var g=this.n.bitLength()-1;var m=Math.ceil(g/8);var q;if(c===-1||c===undefined){c=h}else{if(c===-2){c=m-h-2}else{if(c<-2){throw new Error("invalid salt length")}}}if(m<(h+c+2)){throw new Error("data too long")}var a=this.doPublic(k).toByteArray();for(q=0;q>(8*m-g))&255;if((d.charCodeAt(0)&p)!==0){throw new Error("bits beyond keysize not zero")}var n=pss_mgf1_str(e,d.length,r);var o=[];for(q=0;q0){n.push(new c({tag:"a3",obj:new j(q.ext)}))}var o=new KJUR.asn1.DERSequence({array:n});return o.tohex()};this.getEncodedHex=function(){return this.tohex()};if(f!==undefined){this.setByParam(f)}};extendClass(KJUR.asn1.x509.TBSCertificate,KJUR.asn1.ASN1Object);KJUR.asn1.x509.Extensions=function(d){KJUR.asn1.x509.Extensions.superclass.constructor.call(this);var c=KJUR,b=c.asn1,a=b.DERSequence,e=b.x509;this.aParam=[];this.setByParam=function(f){this.aParam=f};this.tohex=function(){var f=[];for(var h=0;h-1){i.push(new f({"int":this.pathLen}))}var h=new b({array:i});this.asn1ExtnValue=h;return this.asn1ExtnValue.tohex()};this.oid="2.5.29.19";this.cA=false;this.pathLen=-1;if(g!==undefined){if(g.cA!==undefined){this.cA=g.cA}if(g.pathLen!==undefined){this.pathLen=g.pathLen}}};extendClass(KJUR.asn1.x509.BasicConstraints,KJUR.asn1.x509.Extension);KJUR.asn1.x509.CRLDistributionPoints=function(d){KJUR.asn1.x509.CRLDistributionPoints.superclass.constructor.call(this,d);var b=KJUR,a=b.asn1,c=a.x509;this.getExtnValueHex=function(){return this.asn1ExtnValue.tohex()};this.setByDPArray=function(e){var f=[];for(var g=0;g0){f.push(new b({array:j}))}}var g=new b({array:f});return g.tohex()};this.getEncodedHex=function(){return this.tohex()};if(d!==undefined){this.params=d}};extendClass(KJUR.asn1.x509.PolicyInformation,KJUR.asn1.ASN1Object);KJUR.asn1.x509.PolicyQualifierInfo=function(e){KJUR.asn1.x509.PolicyQualifierInfo.superclass.constructor.call(this,e);var c=KJUR.asn1,b=c.DERSequence,d=c.DERIA5String,f=c.DERObjectIdentifier,a=c.x509.UserNotice;this.params=null;this.tohex=function(){if(this.params.cps!==undefined){var g=new b({array:[new f({oid:"1.3.6.1.5.5.7.2.1"}),new d({str:this.params.cps})]});return g.tohex()}if(this.params.unotice!=undefined){var g=new b({array:[new f({oid:"1.3.6.1.5.5.7.2.2"}),new a(this.params.unotice)]});return g.tohex()}};this.getEncodedHex=function(){return this.tohex()};if(e!==undefined){this.params=e}};extendClass(KJUR.asn1.x509.PolicyQualifierInfo,KJUR.asn1.ASN1Object);KJUR.asn1.x509.UserNotice=function(e){KJUR.asn1.x509.UserNotice.superclass.constructor.call(this,e);var a=KJUR.asn1.DERSequence,d=KJUR.asn1.DERInteger,c=KJUR.asn1.x509.DisplayText,b=KJUR.asn1.x509.NoticeReference;this.params=null;this.tohex=function(){var f=[];if(this.params.noticeref!==undefined){f.push(new b(this.params.noticeref))}if(this.params.exptext!==undefined){f.push(new c(this.params.exptext))}var g=new a({array:f});return g.tohex()};this.getEncodedHex=function(){return this.tohex()};if(e!==undefined){this.params=e}};extendClass(KJUR.asn1.x509.UserNotice,KJUR.asn1.ASN1Object);KJUR.asn1.x509.NoticeReference=function(d){KJUR.asn1.x509.NoticeReference.superclass.constructor.call(this,d);var a=KJUR.asn1.DERSequence,c=KJUR.asn1.DERInteger,b=KJUR.asn1.x509.DisplayText;this.params=null;this.tohex=function(){var f=[];if(this.params.org!==undefined){f.push(new b(this.params.org))}if(this.params.noticenum!==undefined){var h=[];var e=this.params.noticenum;for(var j=0;j0){for(var g=0;g0;f++){var h=c.shift();if(e===true){var d=b.pop();var j=(d+","+h).replace(/\\,/g,",");b.push(j);e=false}else{b.push(h)}if(h.substr(-1,1)==="\\"){e=true}}b=b.map(function(a){return a.replace("/","\\/")});b.reverse();return"/"+b.join("/")};KJUR.asn1.x509.X500Name.ldapToOneline=function(a){return KJUR.asn1.x509.X500Name.ldapToCompat(a)};KJUR.asn1.x509.RDN=function(b){KJUR.asn1.x509.RDN.superclass.constructor.call(this);this.asn1Array=[];this.paramArray=[];this.sRule="utf8";var a=KJUR.asn1.x509.AttributeTypeAndValue;this.setByParam=function(c){if(c.rule!==undefined){this.sRule=c.rule}if(c.str!==undefined){this.addByMultiValuedString(c.str)}if(c.array!==undefined){this.paramArray=c.array}};this.addByString=function(c){this.asn1Array.push(new KJUR.asn1.x509.AttributeTypeAndValue({str:c,rule:this.sRule}))};this.addByMultiValuedString=function(e){var c=KJUR.asn1.x509.RDN.parseString(e);for(var d=0;d0){for(var d=0;d0;g++){var k=j.shift();if(h===true){var f=c.pop();var d=(f+"+"+k).replace(/\\\+/g,"+");c.push(d);h=false}else{c.push(k)}if(k.substr(-1,1)==="\\"){h=true}}var l=false;var b=[];for(var g=0;c.length>0;g++){var k=c.shift();if(l===true){var e=b.pop();if(k.match(/"$/)){var d=(e+"+"+k).replace(/^([^=]+)="(.*)"$/,"$1=$2");b.push(d);l=false}else{b.push(e+"+"+k)}}else{b.push(k)}if(k.match(/^[^=]+="/)){l=true}}return b};KJUR.asn1.x509.AttributeTypeAndValue=function(c){KJUR.asn1.x509.AttributeTypeAndValue.superclass.constructor.call(this);this.sRule="utf8";this.sType=null;this.sValue=null;this.dsType=null;var a=KJUR,g=a.asn1,d=g.DERSequence,l=g.DERUTF8String,i=g.DERPrintableString,h=g.DERTeletexString,b=g.DERIA5String,e=g.DERVisibleString,k=g.DERBMPString,f=a.lang.String.isMail,j=a.lang.String.isPrintable;this.setByParam=function(o){if(o.rule!==undefined){this.sRule=o.rule}if(o.ds!==undefined){this.dsType=o.ds}if(o.value===undefined&&o.str!==undefined){var n=o.str;var m=n.match(/^([^=]+)=(.+)$/);if(m){this.sType=m[1];this.sValue=m[2]}else{throw new Error("malformed attrTypeAndValueStr: "+attrTypeAndValueStr)}}else{this.sType=o.type;this.sValue=o.value}};this.setByString=function(n,o){if(o!==undefined){this.sRule=o}var m=n.match(/^([^=]+)=(.+)$/);if(m){this.setByAttrTypeAndValueStr(m[1],m[2])}else{throw new Error("malformed attrTypeAndValueStr: "+attrTypeAndValueStr)}};this._getDsType=function(){var o=this.sType;var n=this.sValue;var m=this.sRule;if(m==="prn"){if(o=="CN"&&f(n)){return"ia5"}if(j(n)){return"prn"}return"utf8"}else{if(m==="utf8"){if(o=="CN"&&f(n)){return"ia5"}if(o=="C"){return"prn"}return"utf8"}}return"utf8"};this.setByAttrTypeAndValueStr=function(o,n,m){if(m!==undefined){this.sRule=m}this.sType=o;this.sValue=n};this.getValueObj=function(n,m){if(n=="utf8"){return new l({str:m})}if(n=="prn"){return new i({str:m})}if(n=="tel"){return new h({str:m})}if(n=="ia5"){return new b({str:m})}if(n=="vis"){return new e({str:m})}if(n=="bmp"){return new k({str:m})}throw new Error("unsupported directory string type: type="+n+" value="+m)};this.tohex=function(){if(this.dsType==null){this.dsType=this._getDsType()}var n=KJUR.asn1.x509.OID.atype2obj(this.sType);var m=this.getValueObj(this.dsType,this.sValue);var p=new d({array:[n,m]});this.TLV=p.tohex();return this.TLV};this.getEncodedHex=function(){return this.tohex()};if(c!==undefined){this.setByParam(c)}};extendClass(KJUR.asn1.x509.AttributeTypeAndValue,KJUR.asn1.ASN1Object);KJUR.asn1.x509.SubjectPublicKeyInfo=function(f){KJUR.asn1.x509.SubjectPublicKeyInfo.superclass.constructor.call(this);var l=null,k=null,a=KJUR,j=a.asn1,i=j.DERInteger,b=j.DERBitString,m=j.DERObjectIdentifier,e=j.DERSequence,h=j.ASN1Util.newObject,d=j.x509,o=d.AlgorithmIdentifier,g=a.crypto,n=g.ECDSA,c=g.DSA;this.getASN1Object=function(){if(this.asn1AlgId==null||this.asn1SubjPKey==null){throw"algId and/or subjPubKey not set"}var p=new e({array:[this.asn1AlgId,this.asn1SubjPKey]});return p};this.tohex=function(){var p=this.getASN1Object();this.hTLV=p.tohex();return this.hTLV};this.getEncodedHex=function(){return this.tohex()};this.setPubKey=function(q){try{if(q instanceof RSAKey){var u=h({seq:[{"int":{bigint:q.n}},{"int":{"int":q.e}}]});var s=u.tohex();this.asn1AlgId=new o({name:"rsaEncryption"});this.asn1SubjPKey=new b({hex:"00"+s})}}catch(p){}try{if(q instanceof KJUR.crypto.ECDSA){var r=new m({name:q.curveName});this.asn1AlgId=new o({name:"ecPublicKey",asn1params:r});this.asn1SubjPKey=new b({hex:"00"+q.pubKeyHex})}}catch(p){}try{if(q instanceof KJUR.crypto.DSA){var r=new h({seq:[{"int":{bigint:q.p}},{"int":{bigint:q.q}},{"int":{bigint:q.g}}]});this.asn1AlgId=new o({name:"dsa",asn1params:r});var t=new i({bigint:q.y});this.asn1SubjPKey=new b({hex:"00"+t.tohex()})}}catch(p){}};if(f!==undefined){this.setPubKey(f)}};extendClass(KJUR.asn1.x509.SubjectPublicKeyInfo,KJUR.asn1.ASN1Object);KJUR.asn1.x509.Time=function(f){KJUR.asn1.x509.Time.superclass.constructor.call(this);var e=null,a=null,d=KJUR,c=d.asn1,b=c.DERUTCTime,g=c.DERGeneralizedTime;this.params=null;this.type=null;this.setTimeParams=function(h){this.timeParams=h};this.setByParam=function(h){this.params=h};this.getType=function(h){if(h.match(/^[0-9]{12}Z$/)){return"utc"}if(h.match(/^[0-9]{14}Z$/)){return"gen"}if(h.match(/^[0-9]{12}\.[0-9]+Z$/)){return"utc"}if(h.match(/^[0-9]{14}\.[0-9]+Z$/)){return"gen"}return null};this.tohex=function(){var i=this.params;var h=null;if(typeof i=="string"){i={str:i}}if(i!=null&&i.str&&(i.type==null||i.type==undefined)){i.type=this.getType(i.str)}if(i!=null&&i.str){if(i.type=="utc"){h=new b(i.str)}if(i.type=="gen"){h=new g(i.str)}}else{if(this.type=="gen"){h=new g()}else{h=new b()}}if(h==null){throw new Error("wrong setting for Time")}this.TLV=h.tohex();return this.TLV};this.getEncodedHex=function(){return this.tohex()};if(f!=undefined){this.setByParam(f)}};KJUR.asn1.x509.Time_bak=function(f){KJUR.asn1.x509.Time_bak.superclass.constructor.call(this);var e=null,a=null,d=KJUR,c=d.asn1,b=c.DERUTCTime,g=c.DERGeneralizedTime;this.setTimeParams=function(h){this.timeParams=h};this.tohex=function(){var h=null;if(this.timeParams!=null){if(this.type=="utc"){h=new b(this.timeParams)}else{h=new g(this.timeParams)}}else{if(this.type=="utc"){h=new b()}else{h=new g()}}this.TLV=h.tohex();return this.TLV};this.getEncodedHex=function(){return this.tohex()};this.type="utc";if(f!==undefined){if(f.type!==undefined){this.type=f.type}else{if(f.str!==undefined){if(f.str.match(/^[0-9]{12}Z$/)){this.type="utc"}if(f.str.match(/^[0-9]{14}Z$/)){this.type="gen"}}}this.timeParams=f}};extendClass(KJUR.asn1.x509.Time,KJUR.asn1.ASN1Object);KJUR.asn1.x509.AlgorithmIdentifier=function(e){KJUR.asn1.x509.AlgorithmIdentifier.superclass.constructor.call(this);this.nameAlg=null;this.asn1Alg=null;this.asn1Params=null;this.paramEmpty=false;var b=KJUR,a=b.asn1,c=a.x509.AlgorithmIdentifier.PSSNAME2ASN1TLV;this.tohex=function(){if(this.nameAlg===null&&this.asn1Alg===null){throw new Error("algorithm not specified")}if(this.nameAlg!==null){var f=null;for(var h in c){if(h===this.nameAlg){f=c[h]}}if(f!==null){this.hTLV=f;return this.hTLV}}if(this.nameAlg!==null&&this.asn1Alg===null){this.asn1Alg=a.x509.OID.name2obj(this.nameAlg)}var g=[this.asn1Alg];if(this.asn1Params!==null){g.push(this.asn1Params)}var i=new a.DERSequence({array:g});this.hTLV=i.tohex();return this.hTLV};this.getEncodedHex=function(){return this.tohex()};if(e!==undefined){if(e.name!==undefined){this.nameAlg=e.name}if(e.asn1params!==undefined){this.asn1Params=e.asn1params}if(e.paramempty!==undefined){this.paramEmpty=e.paramempty}}if(this.asn1Params===null&&this.paramEmpty===false&&this.nameAlg!==null){if(this.nameAlg.name!==undefined){this.nameAlg=this.nameAlg.name}var d=this.nameAlg.toLowerCase();if(d.substr(-7,7)!=="withdsa"&&d.substr(-9,9)!=="withecdsa"){this.asn1Params=new a.DERNull()}}};extendClass(KJUR.asn1.x509.AlgorithmIdentifier,KJUR.asn1.ASN1Object);KJUR.asn1.x509.AlgorithmIdentifier.PSSNAME2ASN1TLV={SHAwithRSAandMGF1:"300d06092a864886f70d01010a3000",SHA256withRSAandMGF1:"303d06092a864886f70d01010a3030a00d300b0609608648016503040201a11a301806092a864886f70d010108300b0609608648016503040201a203020120",SHA384withRSAandMGF1:"303d06092a864886f70d01010a3030a00d300b0609608648016503040202a11a301806092a864886f70d010108300b0609608648016503040202a203020130",SHA512withRSAandMGF1:"303d06092a864886f70d01010a3030a00d300b0609608648016503040203a11a301806092a864886f70d010108300b0609608648016503040203a203020140"};KJUR.asn1.x509.GeneralName=function(f){KJUR.asn1.x509.GeneralName.superclass.constructor.call(this);var l={rfc822:"81",dns:"82",dn:"a4",uri:"86",ip:"87",otherName:"a0"},b=KJUR,h=b.asn1,d=h.x509,a=d.X500Name,g=d.OtherName,e=h.DERIA5String,i=h.DERPrintableString,k=h.DEROctetString,c=h.DERTaggedObject,m=h.ASN1Object,j=Error;this.params=null;this.setByParam=function(n){this.params=n};this.tohex=function(){var p=this.params;var z,w,q;var w=false;if(p.other!==undefined){z="a0",q=new g(p.other)}else{if(p.rfc822!==undefined){z="81";q=new e({str:p.rfc822})}else{if(p.dns!==undefined){z="82";q=new e({str:p.dns})}else{if(p.dn!==undefined){z="a4";w=true;if(typeof p.dn==="string"){q=new a({str:p.dn})}else{if(p.dn instanceof KJUR.asn1.x509.X500Name){q=p.dn}else{q=new a(p.dn)}}}else{if(p.ldapdn!==undefined){z="a4";w=true;q=new a({ldapstr:p.ldapdn})}else{if(p.certissuer!==undefined||p.certsubj!==undefined){z="a4";w=true;var n,o;var y=null;if(p.certsubj!==undefined){n=false;o=p.certsubj}else{n=true;o=p.certissuer}if(o.match(/^[0-9A-Fa-f]+$/)){y==o}if(o.indexOf("-----BEGIN ")!=-1){y=pemtohex(o)}if(y==null){throw new Error("certsubj/certissuer not cert")}var v=new X509();v.hex=y;var s;if(n){s=v.getIssuerHex()}else{s=v.getSubjectHex()}q=new m();q.hTLV=s}else{if(p.uri!==undefined){z="86";q=new e({str:p.uri})}else{if(p.ip!==undefined){z="87";var t=p.ip;var u;var r="malformed IP address";if(t.match(/^[0-9.]+[.][0-9.]+$/)){u=intarystrtohex("["+t.split(".").join(",")+"]");if(u.length!==8){throw new j(r)}}else{if(t.match(/^[0-9A-Fa-f:]+:[0-9A-Fa-f:]+$/)){u=ipv6tohex(t)}else{if(t.match(/^([0-9A-Fa-f][0-9A-Fa-f]){1,}$/)){u=t}else{throw new j(r)}}}q=new k({hex:u})}else{throw new j("improper params")}}}}}}}}var A=new c({tag:z,explicit:w,obj:q});return A.tohex()};this.getEncodedHex=function(){return this.tohex()};if(f!==undefined){this.setByParam(f)}};extendClass(KJUR.asn1.x509.GeneralName,KJUR.asn1.ASN1Object);KJUR.asn1.x509.GeneralNames=function(d){KJUR.asn1.x509.GeneralNames.superclass.constructor.call(this);var a=null,c=KJUR,b=c.asn1;this.setByParamArray=function(g){for(var e=0;e0){n.push(new c({tag:"a3",obj:new j(q.ext)}))}var o=new KJUR.asn1.DERSequence({array:n});return o.tohex()};this.getEncodedHex=function(){return this.tohex()};if(f!==undefined){this.setByParam(f)}};extendClass(KJUR.asn1.x509.TBSCertificate,KJUR.asn1.ASN1Object);KJUR.asn1.x509.Extensions=function(d){KJUR.asn1.x509.Extensions.superclass.constructor.call(this);var c=KJUR,b=c.asn1,a=b.DERSequence,e=b.x509;this.aParam=[];this.setByParam=function(f){this.aParam=f};this.tohex=function(){var f=[];for(var h=0;h-1){i.push(new f({"int":this.pathLen}))}var h=new b({array:i});this.asn1ExtnValue=h;return this.asn1ExtnValue.tohex()};this.oid="2.5.29.19";this.cA=false;this.pathLen=-1;if(g!==undefined){if(g.cA!==undefined){this.cA=g.cA}if(g.pathLen!==undefined){this.pathLen=g.pathLen}}};extendClass(KJUR.asn1.x509.BasicConstraints,KJUR.asn1.x509.Extension);KJUR.asn1.x509.CRLDistributionPoints=function(d){KJUR.asn1.x509.CRLDistributionPoints.superclass.constructor.call(this,d);var b=KJUR,a=b.asn1,c=a.x509;this.getExtnValueHex=function(){return this.asn1ExtnValue.tohex()};this.setByDPArray=function(e){var f=[];for(var g=0;g0){f.push(new b({array:j}))}}var g=new b({array:f});return g.tohex()};this.getEncodedHex=function(){return this.tohex()};if(d!==undefined){this.params=d}};extendClass(KJUR.asn1.x509.PolicyInformation,KJUR.asn1.ASN1Object);KJUR.asn1.x509.PolicyQualifierInfo=function(e){KJUR.asn1.x509.PolicyQualifierInfo.superclass.constructor.call(this,e);var c=KJUR.asn1,b=c.DERSequence,d=c.DERIA5String,f=c.DERObjectIdentifier,a=c.x509.UserNotice;this.params=null;this.tohex=function(){if(this.params.cps!==undefined){var g=new b({array:[new f({oid:"1.3.6.1.5.5.7.2.1"}),new d({str:this.params.cps})]});return g.tohex()}if(this.params.unotice!=undefined){var g=new b({array:[new f({oid:"1.3.6.1.5.5.7.2.2"}),new a(this.params.unotice)]});return g.tohex()}};this.getEncodedHex=function(){return this.tohex()};if(e!==undefined){this.params=e}};extendClass(KJUR.asn1.x509.PolicyQualifierInfo,KJUR.asn1.ASN1Object);KJUR.asn1.x509.UserNotice=function(e){KJUR.asn1.x509.UserNotice.superclass.constructor.call(this,e);var a=KJUR.asn1.DERSequence,d=KJUR.asn1.DERInteger,c=KJUR.asn1.x509.DisplayText,b=KJUR.asn1.x509.NoticeReference;this.params=null;this.tohex=function(){var f=[];if(this.params.noticeref!==undefined){f.push(new b(this.params.noticeref))}if(this.params.exptext!==undefined){f.push(new c(this.params.exptext))}var g=new a({array:f});return g.tohex()};this.getEncodedHex=function(){return this.tohex()};if(e!==undefined){this.params=e}};extendClass(KJUR.asn1.x509.UserNotice,KJUR.asn1.ASN1Object);KJUR.asn1.x509.NoticeReference=function(d){KJUR.asn1.x509.NoticeReference.superclass.constructor.call(this,d);var a=KJUR.asn1.DERSequence,c=KJUR.asn1.DERInteger,b=KJUR.asn1.x509.DisplayText;this.params=null;this.tohex=function(){var f=[];if(this.params.org!==undefined){f.push(new b(this.params.org))}if(this.params.noticenum!==undefined){var h=[];var e=this.params.noticenum;for(var j=0;j0){for(var g=0;g0;f++){var h=c.shift();if(e===true){var d=b.pop();var j=(d+","+h).replace(/\\,/g,",");b.push(j);e=false}else{b.push(h)}if(h.substr(-1,1)==="\\"){e=true}}b=b.map(function(a){return a.replace("/","\\/")});b.reverse();return"/"+b.join("/")};KJUR.asn1.x509.X500Name.ldapToOneline=function(a){return KJUR.asn1.x509.X500Name.ldapToCompat(a)};KJUR.asn1.x509.RDN=function(b){KJUR.asn1.x509.RDN.superclass.constructor.call(this);this.asn1Array=[];this.paramArray=[];this.sRule="utf8";var a=KJUR.asn1.x509.AttributeTypeAndValue;this.setByParam=function(c){if(c.rule!==undefined){this.sRule=c.rule}if(c.str!==undefined){this.addByMultiValuedString(c.str)}if(c.array!==undefined){this.paramArray=c.array}};this.addByString=function(c){this.asn1Array.push(new KJUR.asn1.x509.AttributeTypeAndValue({str:c,rule:this.sRule}))};this.addByMultiValuedString=function(e){var c=KJUR.asn1.x509.RDN.parseString(e);for(var d=0;d0){for(var d=0;d0;g++){var k=j.shift();if(h===true){var f=c.pop();var d=(f+"+"+k).replace(/\\\+/g,"+");c.push(d);h=false}else{c.push(k)}if(k.substr(-1,1)==="\\"){h=true}}var l=false;var b=[];for(var g=0;c.length>0;g++){var k=c.shift();if(l===true){var e=b.pop();if(k.match(/"$/)){var d=(e+"+"+k).replace(/^([^=]+)="(.*)"$/,"$1=$2");b.push(d);l=false}else{b.push(e+"+"+k)}}else{b.push(k)}if(k.match(/^[^=]+="/)){l=true}}return b};KJUR.asn1.x509.AttributeTypeAndValue=function(c){KJUR.asn1.x509.AttributeTypeAndValue.superclass.constructor.call(this);this.sRule="utf8";this.sType=null;this.sValue=null;this.dsType=null;var a=KJUR,g=a.asn1,d=g.DERSequence,l=g.DERUTF8String,i=g.DERPrintableString,h=g.DERTeletexString,b=g.DERIA5String,e=g.DERVisibleString,k=g.DERBMPString,f=a.lang.String.isMail,j=a.lang.String.isPrintable;this.setByParam=function(o){if(o.rule!==undefined){this.sRule=o.rule}if(o.ds!==undefined){this.dsType=o.ds}if(o.value===undefined&&o.str!==undefined){var n=o.str;var m=n.match(/^([^=]+)=(.+)$/);if(m){this.sType=m[1];this.sValue=m[2]}else{throw new Error("malformed attrTypeAndValueStr: "+attrTypeAndValueStr)}}else{this.sType=o.type;this.sValue=o.value}};this.setByString=function(n,o){if(o!==undefined){this.sRule=o}var m=n.match(/^([^=]+)=(.+)$/);if(m){this.setByAttrTypeAndValueStr(m[1],m[2])}else{throw new Error("malformed attrTypeAndValueStr: "+attrTypeAndValueStr)}};this._getDsType=function(){var o=this.sType;var n=this.sValue;var m=this.sRule;if(m==="prn"){if(o=="CN"&&f(n)){return"ia5"}if(j(n)){return"prn"}return"utf8"}else{if(m==="utf8"){if(o=="CN"&&f(n)){return"ia5"}if(o=="C"){return"prn"}return"utf8"}}return"utf8"};this.setByAttrTypeAndValueStr=function(o,n,m){if(m!==undefined){this.sRule=m}this.sType=o;this.sValue=n};this.getValueObj=function(n,m){if(n=="utf8"){return new l({str:m})}if(n=="prn"){return new i({str:m})}if(n=="tel"){return new h({str:m})}if(n=="ia5"){return new b({str:m})}if(n=="vis"){return new e({str:m})}if(n=="bmp"){return new k({str:m})}throw new Error("unsupported directory string type: type="+n+" value="+m)};this.tohex=function(){if(this.dsType==null){this.dsType=this._getDsType()}var n=KJUR.asn1.x509.OID.atype2obj(this.sType);var m=this.getValueObj(this.dsType,this.sValue);var p=new d({array:[n,m]});this.TLV=p.tohex();return this.TLV};this.getEncodedHex=function(){return this.tohex()};if(c!==undefined){this.setByParam(c)}};extendClass(KJUR.asn1.x509.AttributeTypeAndValue,KJUR.asn1.ASN1Object);KJUR.asn1.x509.SubjectPublicKeyInfo=function(f){KJUR.asn1.x509.SubjectPublicKeyInfo.superclass.constructor.call(this);var l=null,k=null,a=KJUR,j=a.asn1,i=j.DERInteger,b=j.DERBitString,m=j.DERObjectIdentifier,e=j.DERSequence,h=j.ASN1Util.newObject,d=j.x509,o=d.AlgorithmIdentifier,g=a.crypto,n=g.ECDSA,c=g.DSA;this.getASN1Object=function(){if(this.asn1AlgId==null||this.asn1SubjPKey==null){throw"algId and/or subjPubKey not set"}var p=new e({array:[this.asn1AlgId,this.asn1SubjPKey]});return p};this.tohex=function(){var p=this.getASN1Object();this.hTLV=p.tohex();return this.hTLV};this.getEncodedHex=function(){return this.tohex()};this.setPubKey=function(q){try{if(q instanceof RSAKey){var u=h({seq:[{"int":{bigint:q.n}},{"int":{"int":q.e}}]});var s=u.tohex();this.asn1AlgId=new o({name:"rsaEncryption"});this.asn1SubjPKey=new b({hex:"00"+s})}}catch(p){}try{if(q instanceof KJUR.crypto.ECDSA){var r=new m({name:q.curveName});this.asn1AlgId=new o({name:"ecPublicKey",asn1params:r});this.asn1SubjPKey=new b({hex:"00"+q.pubKeyHex})}}catch(p){}try{if(q instanceof KJUR.crypto.DSA){var r=new h({seq:[{"int":{bigint:q.p}},{"int":{bigint:q.q}},{"int":{bigint:q.g}}]});this.asn1AlgId=new o({name:"dsa",asn1params:r});var t=new i({bigint:q.y});this.asn1SubjPKey=new b({hex:"00"+t.tohex()})}}catch(p){}};if(f!==undefined){this.setPubKey(f)}};extendClass(KJUR.asn1.x509.SubjectPublicKeyInfo,KJUR.asn1.ASN1Object);KJUR.asn1.x509.Time=function(f){KJUR.asn1.x509.Time.superclass.constructor.call(this);var e=null,a=null,d=KJUR,c=d.asn1,b=c.DERUTCTime,g=c.DERGeneralizedTime;this.params=null;this.type=null;this.setTimeParams=function(h){this.timeParams=h};this.setByParam=function(h){this.params=h};this.getType=function(h){if(h.match(/^[0-9]{12}Z$/)){return"utc"}if(h.match(/^[0-9]{14}Z$/)){return"gen"}if(h.match(/^[0-9]{12}\.[0-9]+Z$/)){return"utc"}if(h.match(/^[0-9]{14}\.[0-9]+Z$/)){return"gen"}return null};this.tohex=function(){var i=this.params;var h=null;if(typeof i=="string"){i={str:i}}if(i!=null&&i.str&&(i.type==null||i.type==undefined)){i.type=this.getType(i.str)}if(i!=null&&i.str){if(i.type=="utc"){h=new b(i.str)}if(i.type=="gen"){h=new g(i.str)}}else{if(this.type=="gen"){h=new g()}else{h=new b()}}if(h==null){throw new Error("wrong setting for Time")}this.TLV=h.tohex();return this.TLV};this.getEncodedHex=function(){return this.tohex()};if(f!=undefined){this.setByParam(f)}};KJUR.asn1.x509.Time_bak=function(f){KJUR.asn1.x509.Time_bak.superclass.constructor.call(this);var e=null,a=null,d=KJUR,c=d.asn1,b=c.DERUTCTime,g=c.DERGeneralizedTime;this.setTimeParams=function(h){this.timeParams=h};this.tohex=function(){var h=null;if(this.timeParams!=null){if(this.type=="utc"){h=new b(this.timeParams)}else{h=new g(this.timeParams)}}else{if(this.type=="utc"){h=new b()}else{h=new g()}}this.TLV=h.tohex();return this.TLV};this.getEncodedHex=function(){return this.tohex()};this.type="utc";if(f!==undefined){if(f.type!==undefined){this.type=f.type}else{if(f.str!==undefined){if(f.str.match(/^[0-9]{12}Z$/)){this.type="utc"}if(f.str.match(/^[0-9]{14}Z$/)){this.type="gen"}}}this.timeParams=f}};extendClass(KJUR.asn1.x509.Time,KJUR.asn1.ASN1Object);KJUR.asn1.x509.AlgorithmIdentifier=function(e){KJUR.asn1.x509.AlgorithmIdentifier.superclass.constructor.call(this);this.nameAlg=null;this.asn1Alg=null;this.asn1Params=null;this.paramEmpty=false;var b=KJUR,a=b.asn1,c=a.x509.AlgorithmIdentifier.PSSNAME2ASN1TLV;this.tohex=function(){if(this.nameAlg===null&&this.asn1Alg===null){throw new Error("algorithm not specified")}if(this.nameAlg!==null){var f=null;for(var h in c){if(h===this.nameAlg){f=c[h]}}if(f!==null){this.hTLV=f;return this.hTLV}}if(this.nameAlg!==null&&this.asn1Alg===null){this.asn1Alg=a.x509.OID.name2obj(this.nameAlg)}var g=[this.asn1Alg];if(this.asn1Params!==null){g.push(this.asn1Params)}var i=new a.DERSequence({array:g});this.hTLV=i.tohex();return this.hTLV};this.getEncodedHex=function(){return this.tohex()};if(e!==undefined){if(e.name!==undefined){this.nameAlg=e.name}if(e.asn1params!==undefined){this.asn1Params=e.asn1params}if(e.paramempty!==undefined){this.paramEmpty=e.paramempty}}if(this.asn1Params===null&&this.paramEmpty===false&&this.nameAlg!==null){if(this.nameAlg.name!==undefined){this.nameAlg=this.nameAlg.name}var d=this.nameAlg.toLowerCase();if(d.substr(-7,7)!=="withdsa"&&d.substr(-9,9)!=="withecdsa"){this.asn1Params=new a.DERNull()}}};extendClass(KJUR.asn1.x509.AlgorithmIdentifier,KJUR.asn1.ASN1Object);KJUR.asn1.x509.AlgorithmIdentifier.PSSNAME2ASN1TLV={SHAwithRSAandMGF1:"300d06092a864886f70d01010a3000",SHA256withRSAandMGF1:"303d06092a864886f70d01010a3030a00d300b0609608648016503040201a11a301806092a864886f70d010108300b0609608648016503040201a203020120",SHA384withRSAandMGF1:"303d06092a864886f70d01010a3030a00d300b0609608648016503040202a11a301806092a864886f70d010108300b0609608648016503040202a203020130",SHA512withRSAandMGF1:"303d06092a864886f70d01010a3030a00d300b0609608648016503040203a11a301806092a864886f70d010108300b0609608648016503040203a203020140"};KJUR.asn1.x509.GeneralName=function(f){KJUR.asn1.x509.GeneralName.superclass.constructor.call(this);var l={rfc822:"81",dns:"82",dn:"a4",uri:"86",ip:"87",otherName:"a0"},b=KJUR,h=b.asn1,d=h.x509,a=d.X500Name,g=d.OtherName,e=h.DERIA5String,i=h.DERPrintableString,k=h.DEROctetString,c=h.DERTaggedObject,m=h.ASN1Object,j=Error;this.params=null;this.setByParam=function(n){this.params=n};this.tohex=function(){var p=this.params;var A,y,q;var y=false;if(p.other!==undefined){A="a0",q=new g(p.other)}else{if(p.rfc822!==undefined){A="81";q=new e({str:p.rfc822})}else{if(p.dns!==undefined){A="82";q=new e({str:p.dns})}else{if(p.dn!==undefined){A="a4";y=true;if(typeof p.dn==="string"){q=new a({str:p.dn})}else{if(p.dn instanceof KJUR.asn1.x509.X500Name){q=p.dn}else{q=new a(p.dn)}}}else{if(p.ldapdn!==undefined){A="a4";y=true;q=new a({ldapstr:p.ldapdn})}else{if(p.certissuer!==undefined||p.certsubj!==undefined){A="a4";y=true;var n,o;var z=null;if(p.certsubj!==undefined){n=false;o=p.certsubj}else{n=true;o=p.certissuer}if(o.match(/^[0-9A-Fa-f]+$/)){z==o}if(o.indexOf("-----BEGIN ")!=-1){z=pemtohex(o)}if(z==null){throw new Error("certsubj/certissuer not cert")}var w=new X509();w.hex=z;var s;if(n){s=w.getIssuerHex()}else{s=w.getSubjectHex()}q=new m();q.hTLV=s}else{if(p.uri!==undefined){A="86";q=new e({str:p.uri})}else{if(p.ip!==undefined){A="87";var v;var t=p.ip;try{if(t.match(/^[0-9a-f]+$/)){var r=t.length;if(r==8||r==16||r==32||r==64){v=t}else{throw"err"}}else{v=iptohex(t)}}catch(u){throw new j("malformed IP address: "+p.ip+":"+u.message)}q=new k({hex:v})}else{throw new j("improper params")}}}}}}}}var B=new c({tag:A,explicit:y,obj:q});return B.tohex()};this.getEncodedHex=function(){return this.tohex()};if(f!==undefined){this.setByParam(f)}};extendClass(KJUR.asn1.x509.GeneralName,KJUR.asn1.ASN1Object);KJUR.asn1.x509.GeneralNames=function(d){KJUR.asn1.x509.GeneralNames.superclass.constructor.call(this);var a=null,c=KJUR,b=c.asn1;this.setByParamArray=function(g){for(var e=0;e>6);var i=128|(a&63);return hextoutf8(j.toString(16)+i.toString(16))}var j=224|((h&240)>>4);var i=128|((h&15)<<2)|((a&192)>>6);var g=128|(a&63);return hextoutf8(j.toString(16)+i.toString(16)+g.toString(16))}var c=d.match(/.{4}/g);var b=c.map(e);return b.join("")}function encodeURIComponentAll(a){var d=encodeURIComponent(a);var b="";for(var c=0;c"7"){return"00"+a}return a}function intarystrtohex(b){b=b.replace(/^\s*\[\s*/,"");b=b.replace(/\s*\]\s*$/,"");b=b.replace(/\s*/g,"");try{var c=b.split(/,/).map(function(g,e,h){var f=parseInt(g);if(f<0||255a.length){d=a.length}for(var b=0;b0){o=o+"."+k.join(".")}return o}catch(j){return null}}var strpad=function(c,b,a){if(a==undefined){a="0"}if(c.length>=b){return c}return new Array(b-c.length+1).join(a)+c};function bitstrtoint(e){if(e.length%2!=0){return -1}e=e.toLowerCase();if(e.match(/^[0-9a-f]+$/)==null){return -1}try{var a=e.substr(0,2);if(a=="00"){return parseInt(e.substr(2),16)}var b=parseInt(a,16);if(b>7){return -1}var g=e.substr(2);var d=parseInt(g,16).toString(2);if(d=="0"){d="00000000"}d=d.slice(0,0-b);var f=parseInt(d,2);if(f==NaN){return -1}return f}catch(c){return -1}}function inttobitstr(e){if(typeof e!="number"){return null}if(e<0){return null}var c=Number(e).toString(2);var b=8-c.length%8;if(b==8){b=0}c=c+strpad("",b,"0");var d=parseInt(c,2).toString(16);if(d.length%2==1){d="0"+d}var a="0"+b;return a+d}function bitstrtobinstr(a){var b=bitstrtoint(a);if(b==-1){return null}return b.toString(2)}function binstrtobitstr(b){if(typeof b!="string"){return null}if(b.match(/^[01]+$/)==null){return null}try{var c=parseInt(b,2);return inttobitstr(c)}catch(a){return null}}function extendClass(c,a){var b=function(){};b.prototype=a.prototype;c.prototype=new b();c.prototype.constructor=c;c.superclass=a.prototype;if(a.prototype.constructor==Object.prototype.constructor){a.prototype.constructor=a}}; \ No newline at end of file +var KJUR;if(typeof KJUR=="undefined"||!KJUR){KJUR={}}if(typeof KJUR.lang=="undefined"||!KJUR.lang){KJUR.lang={}}KJUR.lang.String=function(){};function Base64x(){}function stoBA(d){var b=new Array();for(var c=0;c>6);var i=128|(a&63);return hextoutf8(j.toString(16)+i.toString(16))}var j=224|((h&240)>>4);var i=128|((h&15)<<2)|((a&192)>>6);var g=128|(a&63);return hextoutf8(j.toString(16)+i.toString(16)+g.toString(16))}var c=d.match(/.{4}/g);var b=c.map(e);return b.join("")}function encodeURIComponentAll(a){var d=encodeURIComponent(a);var b="";for(var c=0;c"7"){return"00"+a}return a}function intarystrtohex(b){b=b.replace(/^\s*\[\s*/,"");b=b.replace(/\s*\]\s*$/,"");b=b.replace(/\s*/g,"");try{var c=b.split(/,/).map(function(g,e,h){var f=parseInt(g);if(f<0||255a.length){d=a.length}for(var b=0;b0){o=o+"."+k.join(".")}return o}catch(j){return null}}var strpad=function(c,b,a){if(a==undefined){a="0"}if(c.length>=b){return c}return new Array(b-c.length+1).join(a)+c};function bitstrtoint(e){if(e.length%2!=0){return -1}e=e.toLowerCase();if(e.match(/^[0-9a-f]+$/)==null){return -1}try{var a=e.substr(0,2);if(a=="00"){return parseInt(e.substr(2),16)}var b=parseInt(a,16);if(b>7){return -1}var g=e.substr(2);var d=parseInt(g,16).toString(2);if(d=="0"){d="00000000"}d=d.slice(0,0-b);var f=parseInt(d,2);if(f==NaN){return -1}return f}catch(c){return -1}}function inttobitstr(e){if(typeof e!="number"){return null}if(e<0){return null}var c=Number(e).toString(2);var b=8-c.length%8;if(b==8){b=0}c=c+strpad("",b,"0");var d=parseInt(c,2).toString(16);if(d.length%2==1){d="0"+d}var a="0"+b;return a+d}function bitstrtobinstr(a){var b=bitstrtoint(a);if(b==-1){return null}return b.toString(2)}function binstrtobitstr(b){if(typeof b!="string"){return null}if(b.match(/^[01]+$/)==null){return null}try{var c=parseInt(b,2);return inttobitstr(c)}catch(a){return null}}function extendClass(c,a){var b=function(){};b.prototype=a.prototype;c.prototype=new b();c.prototype.constructor=c;c.superclass=a.prototype;if(a.prototype.constructor==Object.prototype.constructor){a.prototype.constructor=a}}; \ No newline at end of file diff --git a/npm/lib/jsrsasign-all-min.js b/npm/lib/jsrsasign-all-min.js index dfbf12f0..a4455cc0 100644 --- a/npm/lib/jsrsasign-all-min.js +++ b/npm/lib/jsrsasign-all-min.js @@ -1,5 +1,5 @@ /* - * jsrsasign(all) 10.5.16 (2022-04-08) (c) 2010-2021 Kenji Urushima | kjur.github.io/jsrsasign/license + * jsrsasign(all) 10.5.17 (2022-04-14) (c) 2010-2021 Kenji Urushima | kjur.github.io/jsrsasign/license */ /*! CryptoJS v3.1.2 core-fix.js @@ -219,13 +219,13 @@ ECFieldElementFp.prototype.getByteLength=function(){return Math.floor((this.toBi var jsonParse=(function(){var e="(?:-?\\b(?:0|[1-9][0-9]*)(?:\\.[0-9]+)?(?:[eE][+-]?[0-9]+)?\\b)";var j='(?:[^\\0-\\x08\\x0a-\\x1f"\\\\]|\\\\(?:["/\\\\bfnrt]|u[0-9A-Fa-f]{4}))';var i='(?:"'+j+'*")';var d=new RegExp("(?:false|true|null|[\\{\\}\\[\\]]|"+e+"|"+i+")","g");var k=new RegExp("\\\\(?:([^u])|u(.{4}))","g");var g={'"':'"',"/":"/","\\":"\\",b:"\b",f:"\f",n:"\n",r:"\r",t:"\t"};function h(l,m,n){return m?g[m]:String.fromCharCode(parseInt(n,16))}var c=new String("");var a="\\";var f={"{":Object,"[":Array};var b=Object.hasOwnProperty;return function(u,q){var p=u.match(d);var x;var v=p[0];var l=false;if("{"===v){x={}}else{if("["===v){x=[]}else{x=[];l=true}}var t;var r=[x];for(var o=1-l,m=p.length;o=0;){delete D[n[A]]}}}return q.call(C,B,D)};x=s({"":x},"")}return x}})(); if(typeof KJUR=="undefined"||!KJUR){KJUR={}}if(typeof KJUR.asn1=="undefined"||!KJUR.asn1){KJUR.asn1={}}KJUR.asn1.ASN1Util=new function(){this.integerToByteHex=function(a){var b=a.toString(16);if((b.length%2)==1){b="0"+b}return b};this.bigIntToMinTwosComplementsHex=function(j){var f=j.toString(16);if(f.substr(0,1)!="-"){if(f.length%2==1){f="0"+f}else{if(!f.match(/^[0-7]/)){f="00"+f}}}else{var a=f.substr(1);var e=a.length;if(e%2==1){e+=1}else{if(!f.match(/^[0-7]/)){e+=2}}var g="";for(var d=0;d15){throw new Error("ASN.1 length too long to represent by 8x: n = "+j.toString(16))}var g=128+h;return g.toString(16)+i}};this.tohex=function(){if(this.hTLV==null||this.isModified){this.hV=this.getFreshValueHex();this.hL=this.getLengthHexFromValue();this.hTLV=this.hT+this.hL+this.hV;this.isModified=false}return this.hTLV};this.getEncodedHex=function(){return this.tohex()};this.getValueHex=function(){this.tohex();return this.hV};this.getFreshValueHex=function(){return""};this.setByParam=function(g){this.params=g};if(e!=undefined){if(e.tlv!=undefined){this.hTLV=e.tlv;this.isModified=false}}};KJUR.asn1.DERAbstractString=function(c){KJUR.asn1.DERAbstractString.superclass.constructor.call(this);var b=null;var a=null;this.getString=function(){return this.s};this.setString=function(d){this.hTLV=null;this.isModified=true;this.s=d;this.hV=utf8tohex(this.s).toLowerCase()};this.setStringHex=function(d){this.hTLV=null;this.isModified=true;this.s=null;this.hV=d};this.getFreshValueHex=function(){return this.hV};if(typeof c!="undefined"){if(typeof c=="string"){this.setString(c)}else{if(typeof c.str!="undefined"){this.setString(c.str)}else{if(typeof c.hex!="undefined"){this.setStringHex(c.hex)}}}}};extendClass(KJUR.asn1.DERAbstractString,KJUR.asn1.ASN1Object);KJUR.asn1.DERAbstractTime=function(c){KJUR.asn1.DERAbstractTime.superclass.constructor.call(this);var b=null;var a=null;this.localDateToUTC=function(g){var e=g.getTime()+(g.getTimezoneOffset()*60000);var f=new Date(e);return f};this.formatDate=function(m,o,e){var g=this.zeroPadding;var n=this.localDateToUTC(m);var p=String(n.getFullYear());if(o=="utc"){p=p.substr(2,2)}var l=g(String(n.getMonth()+1),2);var q=g(String(n.getDate()),2);var h=g(String(n.getHours()),2);var i=g(String(n.getMinutes()),2);var j=g(String(n.getSeconds()),2);var r=p+l+q+h+i+j;if(e===true){var f=n.getMilliseconds();if(f!=0){var k=g(String(f),3);k=k.replace(/[0]+$/,"");r=r+"."+k}}return r+"Z"};this.zeroPadding=function(e,d){if(e.length>=d){return e}return new Array(d-e.length+1).join("0")+e};this.setByParam=function(d){this.hV=null;this.hTLV=null;this.params=d};this.getString=function(){return undefined};this.setString=function(d){this.hTLV=null;this.isModified=true;if(this.params==undefined){this.params={}}this.params.str=d};this.setByDate=function(d){this.hTLV=null;this.isModified=true;if(this.params==undefined){this.params={}}this.params.date=d};this.setByDateValue=function(h,j,e,d,f,g){var i=new Date(Date.UTC(h,j-1,e,d,f,g,0));this.setByDate(i)};this.getFreshValueHex=function(){return this.hV}};extendClass(KJUR.asn1.DERAbstractTime,KJUR.asn1.ASN1Object);KJUR.asn1.DERAbstractStructured=function(b){KJUR.asn1.DERAbstractString.superclass.constructor.call(this);var a=null;this.setByASN1ObjectArray=function(c){this.hTLV=null;this.isModified=true;this.asn1Array=c};this.appendASN1Object=function(c){this.hTLV=null;this.isModified=true;this.asn1Array.push(c)};this.asn1Array=new Array();if(typeof b!="undefined"){if(typeof b.array!="undefined"){this.asn1Array=b.array}}};extendClass(KJUR.asn1.DERAbstractStructured,KJUR.asn1.ASN1Object);KJUR.asn1.DERBoolean=function(a){KJUR.asn1.DERBoolean.superclass.constructor.call(this);this.hT="01";if(a==false){this.hTLV="010100"}else{this.hTLV="0101ff"}};extendClass(KJUR.asn1.DERBoolean,KJUR.asn1.ASN1Object);KJUR.asn1.DERInteger=function(a){KJUR.asn1.DERInteger.superclass.constructor.call(this);this.hT="02";this.setByBigInteger=function(b){this.hTLV=null;this.isModified=true;this.hV=KJUR.asn1.ASN1Util.bigIntToMinTwosComplementsHex(b)};this.setByInteger=function(c){var b=new BigInteger(String(c),10);this.setByBigInteger(b)};this.setValueHex=function(b){this.hV=b};this.getFreshValueHex=function(){return this.hV};if(typeof a!="undefined"){if(typeof a.bigint!="undefined"){this.setByBigInteger(a.bigint)}else{if(typeof a["int"]!="undefined"){this.setByInteger(a["int"])}else{if(typeof a=="number"){this.setByInteger(a)}else{if(typeof a.hex!="undefined"){this.setValueHex(a.hex)}}}}}};extendClass(KJUR.asn1.DERInteger,KJUR.asn1.ASN1Object);KJUR.asn1.DERBitString=function(b){if(b!==undefined&&typeof b.obj!=="undefined"){var a=KJUR.asn1.ASN1Util.newObject(b.obj);b.hex="00"+a.tohex()}KJUR.asn1.DERBitString.superclass.constructor.call(this);this.hT="03";this.setHexValueIncludingUnusedBits=function(c){this.hTLV=null;this.isModified=true;this.hV=c};this.setUnusedBitsAndHexValue=function(c,e){if(c<0||7=f){break}}return j};ASN1HEX.getNthChildIdx=function(d,b,e){var c=ASN1HEX.getChildIdx(d,b);return c[e]};ASN1HEX.getIdxbyList=function(e,d,c,i){var g=ASN1HEX;var f,b;if(c.length==0){if(i!==undefined){if(e.substr(d,2)!==i){return -1}}return d}f=c.shift();b=g.getChildIdx(e,d);if(f>=b.length){return -1}return g.getIdxbyList(e,b[f],c,i)};ASN1HEX.getIdxbyListEx=function(f,k,b,g){var m=ASN1HEX;var d,l;if(b.length==0){if(g!==undefined){if(f.substr(k,2)!==g){return -1}}return k}d=b.shift();l=m.getChildIdx(f,k);var j=0;for(var e=0;e=d.length){return null}return e.getTLV(d,a)};ASN1HEX.getTLVbyListEx=function(d,c,b,f){var e=ASN1HEX;var a=e.getIdxbyListEx(d,c,b,f);if(a==-1){return null}return e.getTLV(d,a)};ASN1HEX.getVbyList=function(e,c,b,g,i){var f=ASN1HEX;var a,d;a=f.getIdxbyList(e,c,b,g);if(a==-1){return null}if(a>=e.length){return null}d=f.getV(e,a);if(i===true){d=d.substr(2)}return d};ASN1HEX.getVbyListEx=function(b,e,a,d,f){var j=ASN1HEX;var g,c,i;g=j.getIdxbyListEx(b,e,a,d);if(g==-1){return null}i=j.getV(b,g);if(b.substr(g,2)=="03"&&f!==false){i=i.substr(2)}return i};ASN1HEX.getInt=function(e,b,f){if(f==undefined){f=-1}try{var c=e.substr(b,2);if(c!="02"&&c!="03"){return f}var a=ASN1HEX.getV(e,b);if(c=="02"){return parseInt(a,16)}else{return bitstrtoint(a)}}catch(d){return f}};ASN1HEX.getOID=function(c,a,d){if(d==undefined){d=null}try{if(c.substr(a,2)!="06"){return d}var e=ASN1HEX.getV(c,a);return hextooid(e)}catch(b){return d}};ASN1HEX.getOIDName=function(d,a,f){if(f==undefined){f=null}try{var e=ASN1HEX.getOID(d,a,f);if(e==f){return f}var b=KJUR.asn1.x509.OID.oid2name(e);if(b==""){return e}return b}catch(c){return f}};ASN1HEX.getString=function(d,b,e){if(e==undefined){e=null}try{var a=ASN1HEX.getV(d,b);return hextorstr(a)}catch(c){return e}};ASN1HEX.hextooidstr=function(e){var h=function(b,a){if(b.length>=a){return b}return new Array(a-b.length+1).join("0")+b};var l=[];var o=e.substr(0,2);var f=parseInt(o,16);l[0]=new String(Math.floor(f/40));l[1]=new String(f%40);var m=e.substr(2);var k=[];for(var g=0;g0){n=n+"."+j.join(".")}return n};ASN1HEX.dump=function(t,c,l,g){var p=ASN1HEX;var j=p.getV;var y=p.dump;var w=p.getChildIdx;var e=t;if(t instanceof KJUR.asn1.ASN1Object){e=t.tohex()}var q=function(A,i){if(A.length<=i*2){return A}else{var v=A.substr(0,i)+"..(total "+A.length/2+"bytes).."+A.substr(A.length-i,i);return v}};if(c===undefined){c={ommit_long_octet:32}}if(l===undefined){l=0}if(g===undefined){g=""}var x=c.ommit_long_octet;var z=e.substr(l,2);if(z=="01"){var h=j(e,l);if(h=="00"){return g+"BOOLEAN FALSE\n"}else{return g+"BOOLEAN TRUE\n"}}if(z=="02"){var h=j(e,l);return g+"INTEGER "+q(h,x)+"\n"}if(z=="03"){var h=j(e,l);if(p.isASN1HEX(h.substr(2))){var k=g+"BITSTRING, encapsulates\n";k=k+y(h.substr(2),c,0,g+" ");return k}else{return g+"BITSTRING "+q(h,x)+"\n"}}if(z=="04"){var h=j(e,l);if(p.isASN1HEX(h)){var k=g+"OCTETSTRING, encapsulates\n";k=k+y(h,c,0,g+" ");return k}else{return g+"OCTETSTRING "+q(h,x)+"\n"}}if(z=="05"){return g+"NULL\n"}if(z=="06"){var m=j(e,l);var b=KJUR.asn1.ASN1Util.oidHexToInt(m);var o=KJUR.asn1.x509.OID.oid2name(b);var a=b.replace(/\./g," ");if(o!=""){return g+"ObjectIdentifier "+o+" ("+a+")\n"}else{return g+"ObjectIdentifier ("+a+")\n"}}if(z=="0a"){return g+"ENUMERATED "+parseInt(j(e,l))+"\n"}if(z=="0c"){return g+"UTF8String '"+hextoutf8(j(e,l))+"'\n"}if(z=="13"){return g+"PrintableString '"+hextoutf8(j(e,l))+"'\n"}if(z=="14"){return g+"TeletexString '"+hextoutf8(j(e,l))+"'\n"}if(z=="16"){return g+"IA5String '"+hextoutf8(j(e,l))+"'\n"}if(z=="17"){return g+"UTCTime "+hextoutf8(j(e,l))+"\n"}if(z=="18"){return g+"GeneralizedTime "+hextoutf8(j(e,l))+"\n"}if(z=="1a"){return g+"VisualString '"+hextoutf8(j(e,l))+"'\n"}if(z=="1e"){return g+"BMPString '"+ucs2hextoutf8(j(e,l))+"'\n"}if(z=="30"){if(e.substr(l,4)=="3000"){return g+"SEQUENCE {}\n"}var k=g+"SEQUENCE\n";var d=w(e,l);var f=c;if((d.length==2||d.length==3)&&e.substr(d[0],2)=="06"&&e.substr(d[d.length-1],2)=="04"){var o=p.oidname(j(e,d[0]));var r=JSON.parse(JSON.stringify(c));r.x509ExtName=o;f=r}for(var u=0;u4){return{"enum":{hex:p}}}else{return{"enum":parseInt(p,16)}}}else{if(C=="30"||C=="31"){j[c[C]]=u(x);return j}else{if(C=="14"){var o=q(p);j[c[C]]={str:o};return j}else{if(C=="1e"){var o=n(p);j[c[C]]={str:o};return j}else{if(":0c:12:13:16:17:18:1a:".indexOf(C)!=-1){var o=k(p);j[c[C]]={str:o};return j}else{if(C.match(/^8[0-9]$/)){var o=k(p);if(o==null|o==""){return{tag:{tag:C,explicit:false,hex:p}}}else{if(o.match(/[\x00-\x1F\x7F-\x9F]/)!=null||o.match(/[\u0000-\u001F\u0080–\u009F]/)!=null){return{tag:{tag:C,explicit:false,hex:p}}}else{return{tag:{tag:C,explicit:false,str:o}}}}}else{if(C.match(/^a[0-9]$/)){try{if(!a(p)){throw new Error("not encap")}return{tag:{tag:C,explicit:true,obj:f(p)}}}catch(z){return{tag:{tag:C,explicit:true,hex:p}}}}else{var A=new KJUR.asn1.ASN1Object();A.hV=p;var w=A.getLengthHexFromValue();return{asn1:{tlv:C+w+p}}}}}}}}}}}}}}}};ASN1HEX.isContextTag=function(c,b){c=c.toLowerCase();var f,e;try{f=parseInt(c,16)}catch(d){return -1}if(b===undefined){if((f&192)==128){return true}else{return false}}try{var a=b.match(/^\[[0-9]+\]$/);if(a==null){return false}e=parseInt(b.substr(1,b.length-1),10);if(e>31){return false}if(((f&192)==128)&&((f&31)==e)){return true}return false}catch(d){return false}};ASN1HEX.isASN1HEX=function(e){var d=ASN1HEX;if(e.length%2==1){return false}var c=d.getVblen(e,0);var b=e.substr(0,2);var f=d.getL(e,0);var a=e.length-b.length-f.length;if(a==c*2){return true}return false};ASN1HEX.checkStrictDER=function(g,o,d,c,r){var s=ASN1HEX;if(d===undefined){if(typeof g!="string"){throw new Error("not hex string")}g=g.toLowerCase();if(!KJUR.lang.String.isHex(g)){throw new Error("not hex string")}d=g.length;c=g.length/2;if(c<128){r=1}else{r=Math.ceil(c.toString(16))+1}}var k=s.getL(g,o);if(k.length>r*2){throw new Error("L of TLV too long: idx="+o)}var n=s.getVblen(g,o);if(n>c){throw new Error("value of L too long than hex: idx="+o)}var q=s.getTLV(g,o);var f=q.length-2-s.getL(g,o).length;if(f!==(n*2)){throw new Error("V string length and L's value not the same:"+f+"/"+(n*2))}if(o===0){if(g.length!=q.length){throw new Error("total length and TLV length unmatch:"+g.length+"!="+q.length)}}var b=g.substr(o,2);if(b==="02"){var a=s.getVidx(g,o);if(g.substr(a,2)=="00"&&g.charCodeAt(a+2)<56){throw new Error("not least zeros for DER INTEGER")}}if(parseInt(b,16)&32){var p=s.getVblen(g,o);var m=0;var l=s.getChildIdx(g,o);for(var e=0;e0){n.push(new c({tag:"a3",obj:new j(q.ext)}))}var o=new KJUR.asn1.DERSequence({array:n});return o.tohex()};this.getEncodedHex=function(){return this.tohex()};if(f!==undefined){this.setByParam(f)}};extendClass(KJUR.asn1.x509.TBSCertificate,KJUR.asn1.ASN1Object);KJUR.asn1.x509.Extensions=function(d){KJUR.asn1.x509.Extensions.superclass.constructor.call(this);var c=KJUR,b=c.asn1,a=b.DERSequence,e=b.x509;this.aParam=[];this.setByParam=function(f){this.aParam=f};this.tohex=function(){var f=[];for(var h=0;h-1){i.push(new f({"int":this.pathLen}))}var h=new b({array:i});this.asn1ExtnValue=h;return this.asn1ExtnValue.tohex()};this.oid="2.5.29.19";this.cA=false;this.pathLen=-1;if(g!==undefined){if(g.cA!==undefined){this.cA=g.cA}if(g.pathLen!==undefined){this.pathLen=g.pathLen}}};extendClass(KJUR.asn1.x509.BasicConstraints,KJUR.asn1.x509.Extension);KJUR.asn1.x509.CRLDistributionPoints=function(d){KJUR.asn1.x509.CRLDistributionPoints.superclass.constructor.call(this,d);var b=KJUR,a=b.asn1,c=a.x509;this.getExtnValueHex=function(){return this.asn1ExtnValue.tohex()};this.setByDPArray=function(e){var f=[];for(var g=0;g0){f.push(new b({array:j}))}}var g=new b({array:f});return g.tohex()};this.getEncodedHex=function(){return this.tohex()};if(d!==undefined){this.params=d}};extendClass(KJUR.asn1.x509.PolicyInformation,KJUR.asn1.ASN1Object);KJUR.asn1.x509.PolicyQualifierInfo=function(e){KJUR.asn1.x509.PolicyQualifierInfo.superclass.constructor.call(this,e);var c=KJUR.asn1,b=c.DERSequence,d=c.DERIA5String,f=c.DERObjectIdentifier,a=c.x509.UserNotice;this.params=null;this.tohex=function(){if(this.params.cps!==undefined){var g=new b({array:[new f({oid:"1.3.6.1.5.5.7.2.1"}),new d({str:this.params.cps})]});return g.tohex()}if(this.params.unotice!=undefined){var g=new b({array:[new f({oid:"1.3.6.1.5.5.7.2.2"}),new a(this.params.unotice)]});return g.tohex()}};this.getEncodedHex=function(){return this.tohex()};if(e!==undefined){this.params=e}};extendClass(KJUR.asn1.x509.PolicyQualifierInfo,KJUR.asn1.ASN1Object);KJUR.asn1.x509.UserNotice=function(e){KJUR.asn1.x509.UserNotice.superclass.constructor.call(this,e);var a=KJUR.asn1.DERSequence,d=KJUR.asn1.DERInteger,c=KJUR.asn1.x509.DisplayText,b=KJUR.asn1.x509.NoticeReference;this.params=null;this.tohex=function(){var f=[];if(this.params.noticeref!==undefined){f.push(new b(this.params.noticeref))}if(this.params.exptext!==undefined){f.push(new c(this.params.exptext))}var g=new a({array:f});return g.tohex()};this.getEncodedHex=function(){return this.tohex()};if(e!==undefined){this.params=e}};extendClass(KJUR.asn1.x509.UserNotice,KJUR.asn1.ASN1Object);KJUR.asn1.x509.NoticeReference=function(d){KJUR.asn1.x509.NoticeReference.superclass.constructor.call(this,d);var a=KJUR.asn1.DERSequence,c=KJUR.asn1.DERInteger,b=KJUR.asn1.x509.DisplayText;this.params=null;this.tohex=function(){var f=[];if(this.params.org!==undefined){f.push(new b(this.params.org))}if(this.params.noticenum!==undefined){var h=[];var e=this.params.noticenum;for(var j=0;j0){for(var g=0;g0;f++){var h=c.shift();if(e===true){var d=b.pop();var j=(d+","+h).replace(/\\,/g,",");b.push(j);e=false}else{b.push(h)}if(h.substr(-1,1)==="\\"){e=true}}b=b.map(function(a){return a.replace("/","\\/")});b.reverse();return"/"+b.join("/")};KJUR.asn1.x509.X500Name.ldapToOneline=function(a){return KJUR.asn1.x509.X500Name.ldapToCompat(a)};KJUR.asn1.x509.RDN=function(b){KJUR.asn1.x509.RDN.superclass.constructor.call(this);this.asn1Array=[];this.paramArray=[];this.sRule="utf8";var a=KJUR.asn1.x509.AttributeTypeAndValue;this.setByParam=function(c){if(c.rule!==undefined){this.sRule=c.rule}if(c.str!==undefined){this.addByMultiValuedString(c.str)}if(c.array!==undefined){this.paramArray=c.array}};this.addByString=function(c){this.asn1Array.push(new KJUR.asn1.x509.AttributeTypeAndValue({str:c,rule:this.sRule}))};this.addByMultiValuedString=function(e){var c=KJUR.asn1.x509.RDN.parseString(e);for(var d=0;d0){for(var d=0;d0;g++){var k=j.shift();if(h===true){var f=c.pop();var d=(f+"+"+k).replace(/\\\+/g,"+");c.push(d);h=false}else{c.push(k)}if(k.substr(-1,1)==="\\"){h=true}}var l=false;var b=[];for(var g=0;c.length>0;g++){var k=c.shift();if(l===true){var e=b.pop();if(k.match(/"$/)){var d=(e+"+"+k).replace(/^([^=]+)="(.*)"$/,"$1=$2");b.push(d);l=false}else{b.push(e+"+"+k)}}else{b.push(k)}if(k.match(/^[^=]+="/)){l=true}}return b};KJUR.asn1.x509.AttributeTypeAndValue=function(c){KJUR.asn1.x509.AttributeTypeAndValue.superclass.constructor.call(this);this.sRule="utf8";this.sType=null;this.sValue=null;this.dsType=null;var a=KJUR,g=a.asn1,d=g.DERSequence,l=g.DERUTF8String,i=g.DERPrintableString,h=g.DERTeletexString,b=g.DERIA5String,e=g.DERVisibleString,k=g.DERBMPString,f=a.lang.String.isMail,j=a.lang.String.isPrintable;this.setByParam=function(o){if(o.rule!==undefined){this.sRule=o.rule}if(o.ds!==undefined){this.dsType=o.ds}if(o.value===undefined&&o.str!==undefined){var n=o.str;var m=n.match(/^([^=]+)=(.+)$/);if(m){this.sType=m[1];this.sValue=m[2]}else{throw new Error("malformed attrTypeAndValueStr: "+attrTypeAndValueStr)}}else{this.sType=o.type;this.sValue=o.value}};this.setByString=function(n,o){if(o!==undefined){this.sRule=o}var m=n.match(/^([^=]+)=(.+)$/);if(m){this.setByAttrTypeAndValueStr(m[1],m[2])}else{throw new Error("malformed attrTypeAndValueStr: "+attrTypeAndValueStr)}};this._getDsType=function(){var o=this.sType;var n=this.sValue;var m=this.sRule;if(m==="prn"){if(o=="CN"&&f(n)){return"ia5"}if(j(n)){return"prn"}return"utf8"}else{if(m==="utf8"){if(o=="CN"&&f(n)){return"ia5"}if(o=="C"){return"prn"}return"utf8"}}return"utf8"};this.setByAttrTypeAndValueStr=function(o,n,m){if(m!==undefined){this.sRule=m}this.sType=o;this.sValue=n};this.getValueObj=function(n,m){if(n=="utf8"){return new l({str:m})}if(n=="prn"){return new i({str:m})}if(n=="tel"){return new h({str:m})}if(n=="ia5"){return new b({str:m})}if(n=="vis"){return new e({str:m})}if(n=="bmp"){return new k({str:m})}throw new Error("unsupported directory string type: type="+n+" value="+m)};this.tohex=function(){if(this.dsType==null){this.dsType=this._getDsType()}var n=KJUR.asn1.x509.OID.atype2obj(this.sType);var m=this.getValueObj(this.dsType,this.sValue);var p=new d({array:[n,m]});this.TLV=p.tohex();return this.TLV};this.getEncodedHex=function(){return this.tohex()};if(c!==undefined){this.setByParam(c)}};extendClass(KJUR.asn1.x509.AttributeTypeAndValue,KJUR.asn1.ASN1Object);KJUR.asn1.x509.SubjectPublicKeyInfo=function(f){KJUR.asn1.x509.SubjectPublicKeyInfo.superclass.constructor.call(this);var l=null,k=null,a=KJUR,j=a.asn1,i=j.DERInteger,b=j.DERBitString,m=j.DERObjectIdentifier,e=j.DERSequence,h=j.ASN1Util.newObject,d=j.x509,o=d.AlgorithmIdentifier,g=a.crypto,n=g.ECDSA,c=g.DSA;this.getASN1Object=function(){if(this.asn1AlgId==null||this.asn1SubjPKey==null){throw"algId and/or subjPubKey not set"}var p=new e({array:[this.asn1AlgId,this.asn1SubjPKey]});return p};this.tohex=function(){var p=this.getASN1Object();this.hTLV=p.tohex();return this.hTLV};this.getEncodedHex=function(){return this.tohex()};this.setPubKey=function(q){try{if(q instanceof RSAKey){var u=h({seq:[{"int":{bigint:q.n}},{"int":{"int":q.e}}]});var s=u.tohex();this.asn1AlgId=new o({name:"rsaEncryption"});this.asn1SubjPKey=new b({hex:"00"+s})}}catch(p){}try{if(q instanceof KJUR.crypto.ECDSA){var r=new m({name:q.curveName});this.asn1AlgId=new o({name:"ecPublicKey",asn1params:r});this.asn1SubjPKey=new b({hex:"00"+q.pubKeyHex})}}catch(p){}try{if(q instanceof KJUR.crypto.DSA){var r=new h({seq:[{"int":{bigint:q.p}},{"int":{bigint:q.q}},{"int":{bigint:q.g}}]});this.asn1AlgId=new o({name:"dsa",asn1params:r});var t=new i({bigint:q.y});this.asn1SubjPKey=new b({hex:"00"+t.tohex()})}}catch(p){}};if(f!==undefined){this.setPubKey(f)}};extendClass(KJUR.asn1.x509.SubjectPublicKeyInfo,KJUR.asn1.ASN1Object);KJUR.asn1.x509.Time=function(f){KJUR.asn1.x509.Time.superclass.constructor.call(this);var e=null,a=null,d=KJUR,c=d.asn1,b=c.DERUTCTime,g=c.DERGeneralizedTime;this.params=null;this.type=null;this.setTimeParams=function(h){this.timeParams=h};this.setByParam=function(h){this.params=h};this.getType=function(h){if(h.match(/^[0-9]{12}Z$/)){return"utc"}if(h.match(/^[0-9]{14}Z$/)){return"gen"}if(h.match(/^[0-9]{12}\.[0-9]+Z$/)){return"utc"}if(h.match(/^[0-9]{14}\.[0-9]+Z$/)){return"gen"}return null};this.tohex=function(){var i=this.params;var h=null;if(typeof i=="string"){i={str:i}}if(i!=null&&i.str&&(i.type==null||i.type==undefined)){i.type=this.getType(i.str)}if(i!=null&&i.str){if(i.type=="utc"){h=new b(i.str)}if(i.type=="gen"){h=new g(i.str)}}else{if(this.type=="gen"){h=new g()}else{h=new b()}}if(h==null){throw new Error("wrong setting for Time")}this.TLV=h.tohex();return this.TLV};this.getEncodedHex=function(){return this.tohex()};if(f!=undefined){this.setByParam(f)}};KJUR.asn1.x509.Time_bak=function(f){KJUR.asn1.x509.Time_bak.superclass.constructor.call(this);var e=null,a=null,d=KJUR,c=d.asn1,b=c.DERUTCTime,g=c.DERGeneralizedTime;this.setTimeParams=function(h){this.timeParams=h};this.tohex=function(){var h=null;if(this.timeParams!=null){if(this.type=="utc"){h=new b(this.timeParams)}else{h=new g(this.timeParams)}}else{if(this.type=="utc"){h=new b()}else{h=new g()}}this.TLV=h.tohex();return this.TLV};this.getEncodedHex=function(){return this.tohex()};this.type="utc";if(f!==undefined){if(f.type!==undefined){this.type=f.type}else{if(f.str!==undefined){if(f.str.match(/^[0-9]{12}Z$/)){this.type="utc"}if(f.str.match(/^[0-9]{14}Z$/)){this.type="gen"}}}this.timeParams=f}};extendClass(KJUR.asn1.x509.Time,KJUR.asn1.ASN1Object);KJUR.asn1.x509.AlgorithmIdentifier=function(e){KJUR.asn1.x509.AlgorithmIdentifier.superclass.constructor.call(this);this.nameAlg=null;this.asn1Alg=null;this.asn1Params=null;this.paramEmpty=false;var b=KJUR,a=b.asn1,c=a.x509.AlgorithmIdentifier.PSSNAME2ASN1TLV;this.tohex=function(){if(this.nameAlg===null&&this.asn1Alg===null){throw new Error("algorithm not specified")}if(this.nameAlg!==null){var f=null;for(var h in c){if(h===this.nameAlg){f=c[h]}}if(f!==null){this.hTLV=f;return this.hTLV}}if(this.nameAlg!==null&&this.asn1Alg===null){this.asn1Alg=a.x509.OID.name2obj(this.nameAlg)}var g=[this.asn1Alg];if(this.asn1Params!==null){g.push(this.asn1Params)}var i=new a.DERSequence({array:g});this.hTLV=i.tohex();return this.hTLV};this.getEncodedHex=function(){return this.tohex()};if(e!==undefined){if(e.name!==undefined){this.nameAlg=e.name}if(e.asn1params!==undefined){this.asn1Params=e.asn1params}if(e.paramempty!==undefined){this.paramEmpty=e.paramempty}}if(this.asn1Params===null&&this.paramEmpty===false&&this.nameAlg!==null){if(this.nameAlg.name!==undefined){this.nameAlg=this.nameAlg.name}var d=this.nameAlg.toLowerCase();if(d.substr(-7,7)!=="withdsa"&&d.substr(-9,9)!=="withecdsa"){this.asn1Params=new a.DERNull()}}};extendClass(KJUR.asn1.x509.AlgorithmIdentifier,KJUR.asn1.ASN1Object);KJUR.asn1.x509.AlgorithmIdentifier.PSSNAME2ASN1TLV={SHAwithRSAandMGF1:"300d06092a864886f70d01010a3000",SHA256withRSAandMGF1:"303d06092a864886f70d01010a3030a00d300b0609608648016503040201a11a301806092a864886f70d010108300b0609608648016503040201a203020120",SHA384withRSAandMGF1:"303d06092a864886f70d01010a3030a00d300b0609608648016503040202a11a301806092a864886f70d010108300b0609608648016503040202a203020130",SHA512withRSAandMGF1:"303d06092a864886f70d01010a3030a00d300b0609608648016503040203a11a301806092a864886f70d010108300b0609608648016503040203a203020140"};KJUR.asn1.x509.GeneralName=function(f){KJUR.asn1.x509.GeneralName.superclass.constructor.call(this);var l={rfc822:"81",dns:"82",dn:"a4",uri:"86",ip:"87",otherName:"a0"},b=KJUR,h=b.asn1,d=h.x509,a=d.X500Name,g=d.OtherName,e=h.DERIA5String,i=h.DERPrintableString,k=h.DEROctetString,c=h.DERTaggedObject,m=h.ASN1Object,j=Error;this.params=null;this.setByParam=function(n){this.params=n};this.tohex=function(){var p=this.params;var z,w,q;var w=false;if(p.other!==undefined){z="a0",q=new g(p.other)}else{if(p.rfc822!==undefined){z="81";q=new e({str:p.rfc822})}else{if(p.dns!==undefined){z="82";q=new e({str:p.dns})}else{if(p.dn!==undefined){z="a4";w=true;if(typeof p.dn==="string"){q=new a({str:p.dn})}else{if(p.dn instanceof KJUR.asn1.x509.X500Name){q=p.dn}else{q=new a(p.dn)}}}else{if(p.ldapdn!==undefined){z="a4";w=true;q=new a({ldapstr:p.ldapdn})}else{if(p.certissuer!==undefined||p.certsubj!==undefined){z="a4";w=true;var n,o;var y=null;if(p.certsubj!==undefined){n=false;o=p.certsubj}else{n=true;o=p.certissuer}if(o.match(/^[0-9A-Fa-f]+$/)){y==o}if(o.indexOf("-----BEGIN ")!=-1){y=pemtohex(o)}if(y==null){throw new Error("certsubj/certissuer not cert")}var v=new X509();v.hex=y;var s;if(n){s=v.getIssuerHex()}else{s=v.getSubjectHex()}q=new m();q.hTLV=s}else{if(p.uri!==undefined){z="86";q=new e({str:p.uri})}else{if(p.ip!==undefined){z="87";var t=p.ip;var u;var r="malformed IP address";if(t.match(/^[0-9.]+[.][0-9.]+$/)){u=intarystrtohex("["+t.split(".").join(",")+"]");if(u.length!==8){throw new j(r)}}else{if(t.match(/^[0-9A-Fa-f:]+:[0-9A-Fa-f:]+$/)){u=ipv6tohex(t)}else{if(t.match(/^([0-9A-Fa-f][0-9A-Fa-f]){1,}$/)){u=t}else{throw new j(r)}}}q=new k({hex:u})}else{throw new j("improper params")}}}}}}}}var A=new c({tag:z,explicit:w,obj:q});return A.tohex()};this.getEncodedHex=function(){return this.tohex()};if(f!==undefined){this.setByParam(f)}};extendClass(KJUR.asn1.x509.GeneralName,KJUR.asn1.ASN1Object);KJUR.asn1.x509.GeneralNames=function(d){KJUR.asn1.x509.GeneralNames.superclass.constructor.call(this);var a=null,c=KJUR,b=c.asn1;this.setByParamArray=function(g){for(var e=0;e0){n.push(new c({tag:"a3",obj:new j(q.ext)}))}var o=new KJUR.asn1.DERSequence({array:n});return o.tohex()};this.getEncodedHex=function(){return this.tohex()};if(f!==undefined){this.setByParam(f)}};extendClass(KJUR.asn1.x509.TBSCertificate,KJUR.asn1.ASN1Object);KJUR.asn1.x509.Extensions=function(d){KJUR.asn1.x509.Extensions.superclass.constructor.call(this);var c=KJUR,b=c.asn1,a=b.DERSequence,e=b.x509;this.aParam=[];this.setByParam=function(f){this.aParam=f};this.tohex=function(){var f=[];for(var h=0;h-1){i.push(new f({"int":this.pathLen}))}var h=new b({array:i});this.asn1ExtnValue=h;return this.asn1ExtnValue.tohex()};this.oid="2.5.29.19";this.cA=false;this.pathLen=-1;if(g!==undefined){if(g.cA!==undefined){this.cA=g.cA}if(g.pathLen!==undefined){this.pathLen=g.pathLen}}};extendClass(KJUR.asn1.x509.BasicConstraints,KJUR.asn1.x509.Extension);KJUR.asn1.x509.CRLDistributionPoints=function(d){KJUR.asn1.x509.CRLDistributionPoints.superclass.constructor.call(this,d);var b=KJUR,a=b.asn1,c=a.x509;this.getExtnValueHex=function(){return this.asn1ExtnValue.tohex()};this.setByDPArray=function(e){var f=[];for(var g=0;g0){f.push(new b({array:j}))}}var g=new b({array:f});return g.tohex()};this.getEncodedHex=function(){return this.tohex()};if(d!==undefined){this.params=d}};extendClass(KJUR.asn1.x509.PolicyInformation,KJUR.asn1.ASN1Object);KJUR.asn1.x509.PolicyQualifierInfo=function(e){KJUR.asn1.x509.PolicyQualifierInfo.superclass.constructor.call(this,e);var c=KJUR.asn1,b=c.DERSequence,d=c.DERIA5String,f=c.DERObjectIdentifier,a=c.x509.UserNotice;this.params=null;this.tohex=function(){if(this.params.cps!==undefined){var g=new b({array:[new f({oid:"1.3.6.1.5.5.7.2.1"}),new d({str:this.params.cps})]});return g.tohex()}if(this.params.unotice!=undefined){var g=new b({array:[new f({oid:"1.3.6.1.5.5.7.2.2"}),new a(this.params.unotice)]});return g.tohex()}};this.getEncodedHex=function(){return this.tohex()};if(e!==undefined){this.params=e}};extendClass(KJUR.asn1.x509.PolicyQualifierInfo,KJUR.asn1.ASN1Object);KJUR.asn1.x509.UserNotice=function(e){KJUR.asn1.x509.UserNotice.superclass.constructor.call(this,e);var a=KJUR.asn1.DERSequence,d=KJUR.asn1.DERInteger,c=KJUR.asn1.x509.DisplayText,b=KJUR.asn1.x509.NoticeReference;this.params=null;this.tohex=function(){var f=[];if(this.params.noticeref!==undefined){f.push(new b(this.params.noticeref))}if(this.params.exptext!==undefined){f.push(new c(this.params.exptext))}var g=new a({array:f});return g.tohex()};this.getEncodedHex=function(){return this.tohex()};if(e!==undefined){this.params=e}};extendClass(KJUR.asn1.x509.UserNotice,KJUR.asn1.ASN1Object);KJUR.asn1.x509.NoticeReference=function(d){KJUR.asn1.x509.NoticeReference.superclass.constructor.call(this,d);var a=KJUR.asn1.DERSequence,c=KJUR.asn1.DERInteger,b=KJUR.asn1.x509.DisplayText;this.params=null;this.tohex=function(){var f=[];if(this.params.org!==undefined){f.push(new b(this.params.org))}if(this.params.noticenum!==undefined){var h=[];var e=this.params.noticenum;for(var j=0;j0){for(var g=0;g0;f++){var h=c.shift();if(e===true){var d=b.pop();var j=(d+","+h).replace(/\\,/g,",");b.push(j);e=false}else{b.push(h)}if(h.substr(-1,1)==="\\"){e=true}}b=b.map(function(a){return a.replace("/","\\/")});b.reverse();return"/"+b.join("/")};KJUR.asn1.x509.X500Name.ldapToOneline=function(a){return KJUR.asn1.x509.X500Name.ldapToCompat(a)};KJUR.asn1.x509.RDN=function(b){KJUR.asn1.x509.RDN.superclass.constructor.call(this);this.asn1Array=[];this.paramArray=[];this.sRule="utf8";var a=KJUR.asn1.x509.AttributeTypeAndValue;this.setByParam=function(c){if(c.rule!==undefined){this.sRule=c.rule}if(c.str!==undefined){this.addByMultiValuedString(c.str)}if(c.array!==undefined){this.paramArray=c.array}};this.addByString=function(c){this.asn1Array.push(new KJUR.asn1.x509.AttributeTypeAndValue({str:c,rule:this.sRule}))};this.addByMultiValuedString=function(e){var c=KJUR.asn1.x509.RDN.parseString(e);for(var d=0;d0){for(var d=0;d0;g++){var k=j.shift();if(h===true){var f=c.pop();var d=(f+"+"+k).replace(/\\\+/g,"+");c.push(d);h=false}else{c.push(k)}if(k.substr(-1,1)==="\\"){h=true}}var l=false;var b=[];for(var g=0;c.length>0;g++){var k=c.shift();if(l===true){var e=b.pop();if(k.match(/"$/)){var d=(e+"+"+k).replace(/^([^=]+)="(.*)"$/,"$1=$2");b.push(d);l=false}else{b.push(e+"+"+k)}}else{b.push(k)}if(k.match(/^[^=]+="/)){l=true}}return b};KJUR.asn1.x509.AttributeTypeAndValue=function(c){KJUR.asn1.x509.AttributeTypeAndValue.superclass.constructor.call(this);this.sRule="utf8";this.sType=null;this.sValue=null;this.dsType=null;var a=KJUR,g=a.asn1,d=g.DERSequence,l=g.DERUTF8String,i=g.DERPrintableString,h=g.DERTeletexString,b=g.DERIA5String,e=g.DERVisibleString,k=g.DERBMPString,f=a.lang.String.isMail,j=a.lang.String.isPrintable;this.setByParam=function(o){if(o.rule!==undefined){this.sRule=o.rule}if(o.ds!==undefined){this.dsType=o.ds}if(o.value===undefined&&o.str!==undefined){var n=o.str;var m=n.match(/^([^=]+)=(.+)$/);if(m){this.sType=m[1];this.sValue=m[2]}else{throw new Error("malformed attrTypeAndValueStr: "+attrTypeAndValueStr)}}else{this.sType=o.type;this.sValue=o.value}};this.setByString=function(n,o){if(o!==undefined){this.sRule=o}var m=n.match(/^([^=]+)=(.+)$/);if(m){this.setByAttrTypeAndValueStr(m[1],m[2])}else{throw new Error("malformed attrTypeAndValueStr: "+attrTypeAndValueStr)}};this._getDsType=function(){var o=this.sType;var n=this.sValue;var m=this.sRule;if(m==="prn"){if(o=="CN"&&f(n)){return"ia5"}if(j(n)){return"prn"}return"utf8"}else{if(m==="utf8"){if(o=="CN"&&f(n)){return"ia5"}if(o=="C"){return"prn"}return"utf8"}}return"utf8"};this.setByAttrTypeAndValueStr=function(o,n,m){if(m!==undefined){this.sRule=m}this.sType=o;this.sValue=n};this.getValueObj=function(n,m){if(n=="utf8"){return new l({str:m})}if(n=="prn"){return new i({str:m})}if(n=="tel"){return new h({str:m})}if(n=="ia5"){return new b({str:m})}if(n=="vis"){return new e({str:m})}if(n=="bmp"){return new k({str:m})}throw new Error("unsupported directory string type: type="+n+" value="+m)};this.tohex=function(){if(this.dsType==null){this.dsType=this._getDsType()}var n=KJUR.asn1.x509.OID.atype2obj(this.sType);var m=this.getValueObj(this.dsType,this.sValue);var p=new d({array:[n,m]});this.TLV=p.tohex();return this.TLV};this.getEncodedHex=function(){return this.tohex()};if(c!==undefined){this.setByParam(c)}};extendClass(KJUR.asn1.x509.AttributeTypeAndValue,KJUR.asn1.ASN1Object);KJUR.asn1.x509.SubjectPublicKeyInfo=function(f){KJUR.asn1.x509.SubjectPublicKeyInfo.superclass.constructor.call(this);var l=null,k=null,a=KJUR,j=a.asn1,i=j.DERInteger,b=j.DERBitString,m=j.DERObjectIdentifier,e=j.DERSequence,h=j.ASN1Util.newObject,d=j.x509,o=d.AlgorithmIdentifier,g=a.crypto,n=g.ECDSA,c=g.DSA;this.getASN1Object=function(){if(this.asn1AlgId==null||this.asn1SubjPKey==null){throw"algId and/or subjPubKey not set"}var p=new e({array:[this.asn1AlgId,this.asn1SubjPKey]});return p};this.tohex=function(){var p=this.getASN1Object();this.hTLV=p.tohex();return this.hTLV};this.getEncodedHex=function(){return this.tohex()};this.setPubKey=function(q){try{if(q instanceof RSAKey){var u=h({seq:[{"int":{bigint:q.n}},{"int":{"int":q.e}}]});var s=u.tohex();this.asn1AlgId=new o({name:"rsaEncryption"});this.asn1SubjPKey=new b({hex:"00"+s})}}catch(p){}try{if(q instanceof KJUR.crypto.ECDSA){var r=new m({name:q.curveName});this.asn1AlgId=new o({name:"ecPublicKey",asn1params:r});this.asn1SubjPKey=new b({hex:"00"+q.pubKeyHex})}}catch(p){}try{if(q instanceof KJUR.crypto.DSA){var r=new h({seq:[{"int":{bigint:q.p}},{"int":{bigint:q.q}},{"int":{bigint:q.g}}]});this.asn1AlgId=new o({name:"dsa",asn1params:r});var t=new i({bigint:q.y});this.asn1SubjPKey=new b({hex:"00"+t.tohex()})}}catch(p){}};if(f!==undefined){this.setPubKey(f)}};extendClass(KJUR.asn1.x509.SubjectPublicKeyInfo,KJUR.asn1.ASN1Object);KJUR.asn1.x509.Time=function(f){KJUR.asn1.x509.Time.superclass.constructor.call(this);var e=null,a=null,d=KJUR,c=d.asn1,b=c.DERUTCTime,g=c.DERGeneralizedTime;this.params=null;this.type=null;this.setTimeParams=function(h){this.timeParams=h};this.setByParam=function(h){this.params=h};this.getType=function(h){if(h.match(/^[0-9]{12}Z$/)){return"utc"}if(h.match(/^[0-9]{14}Z$/)){return"gen"}if(h.match(/^[0-9]{12}\.[0-9]+Z$/)){return"utc"}if(h.match(/^[0-9]{14}\.[0-9]+Z$/)){return"gen"}return null};this.tohex=function(){var i=this.params;var h=null;if(typeof i=="string"){i={str:i}}if(i!=null&&i.str&&(i.type==null||i.type==undefined)){i.type=this.getType(i.str)}if(i!=null&&i.str){if(i.type=="utc"){h=new b(i.str)}if(i.type=="gen"){h=new g(i.str)}}else{if(this.type=="gen"){h=new g()}else{h=new b()}}if(h==null){throw new Error("wrong setting for Time")}this.TLV=h.tohex();return this.TLV};this.getEncodedHex=function(){return this.tohex()};if(f!=undefined){this.setByParam(f)}};KJUR.asn1.x509.Time_bak=function(f){KJUR.asn1.x509.Time_bak.superclass.constructor.call(this);var e=null,a=null,d=KJUR,c=d.asn1,b=c.DERUTCTime,g=c.DERGeneralizedTime;this.setTimeParams=function(h){this.timeParams=h};this.tohex=function(){var h=null;if(this.timeParams!=null){if(this.type=="utc"){h=new b(this.timeParams)}else{h=new g(this.timeParams)}}else{if(this.type=="utc"){h=new b()}else{h=new g()}}this.TLV=h.tohex();return this.TLV};this.getEncodedHex=function(){return this.tohex()};this.type="utc";if(f!==undefined){if(f.type!==undefined){this.type=f.type}else{if(f.str!==undefined){if(f.str.match(/^[0-9]{12}Z$/)){this.type="utc"}if(f.str.match(/^[0-9]{14}Z$/)){this.type="gen"}}}this.timeParams=f}};extendClass(KJUR.asn1.x509.Time,KJUR.asn1.ASN1Object);KJUR.asn1.x509.AlgorithmIdentifier=function(e){KJUR.asn1.x509.AlgorithmIdentifier.superclass.constructor.call(this);this.nameAlg=null;this.asn1Alg=null;this.asn1Params=null;this.paramEmpty=false;var b=KJUR,a=b.asn1,c=a.x509.AlgorithmIdentifier.PSSNAME2ASN1TLV;this.tohex=function(){if(this.nameAlg===null&&this.asn1Alg===null){throw new Error("algorithm not specified")}if(this.nameAlg!==null){var f=null;for(var h in c){if(h===this.nameAlg){f=c[h]}}if(f!==null){this.hTLV=f;return this.hTLV}}if(this.nameAlg!==null&&this.asn1Alg===null){this.asn1Alg=a.x509.OID.name2obj(this.nameAlg)}var g=[this.asn1Alg];if(this.asn1Params!==null){g.push(this.asn1Params)}var i=new a.DERSequence({array:g});this.hTLV=i.tohex();return this.hTLV};this.getEncodedHex=function(){return this.tohex()};if(e!==undefined){if(e.name!==undefined){this.nameAlg=e.name}if(e.asn1params!==undefined){this.asn1Params=e.asn1params}if(e.paramempty!==undefined){this.paramEmpty=e.paramempty}}if(this.asn1Params===null&&this.paramEmpty===false&&this.nameAlg!==null){if(this.nameAlg.name!==undefined){this.nameAlg=this.nameAlg.name}var d=this.nameAlg.toLowerCase();if(d.substr(-7,7)!=="withdsa"&&d.substr(-9,9)!=="withecdsa"){this.asn1Params=new a.DERNull()}}};extendClass(KJUR.asn1.x509.AlgorithmIdentifier,KJUR.asn1.ASN1Object);KJUR.asn1.x509.AlgorithmIdentifier.PSSNAME2ASN1TLV={SHAwithRSAandMGF1:"300d06092a864886f70d01010a3000",SHA256withRSAandMGF1:"303d06092a864886f70d01010a3030a00d300b0609608648016503040201a11a301806092a864886f70d010108300b0609608648016503040201a203020120",SHA384withRSAandMGF1:"303d06092a864886f70d01010a3030a00d300b0609608648016503040202a11a301806092a864886f70d010108300b0609608648016503040202a203020130",SHA512withRSAandMGF1:"303d06092a864886f70d01010a3030a00d300b0609608648016503040203a11a301806092a864886f70d010108300b0609608648016503040203a203020140"};KJUR.asn1.x509.GeneralName=function(f){KJUR.asn1.x509.GeneralName.superclass.constructor.call(this);var l={rfc822:"81",dns:"82",dn:"a4",uri:"86",ip:"87",otherName:"a0"},b=KJUR,h=b.asn1,d=h.x509,a=d.X500Name,g=d.OtherName,e=h.DERIA5String,i=h.DERPrintableString,k=h.DEROctetString,c=h.DERTaggedObject,m=h.ASN1Object,j=Error;this.params=null;this.setByParam=function(n){this.params=n};this.tohex=function(){var p=this.params;var A,y,q;var y=false;if(p.other!==undefined){A="a0",q=new g(p.other)}else{if(p.rfc822!==undefined){A="81";q=new e({str:p.rfc822})}else{if(p.dns!==undefined){A="82";q=new e({str:p.dns})}else{if(p.dn!==undefined){A="a4";y=true;if(typeof p.dn==="string"){q=new a({str:p.dn})}else{if(p.dn instanceof KJUR.asn1.x509.X500Name){q=p.dn}else{q=new a(p.dn)}}}else{if(p.ldapdn!==undefined){A="a4";y=true;q=new a({ldapstr:p.ldapdn})}else{if(p.certissuer!==undefined||p.certsubj!==undefined){A="a4";y=true;var n,o;var z=null;if(p.certsubj!==undefined){n=false;o=p.certsubj}else{n=true;o=p.certissuer}if(o.match(/^[0-9A-Fa-f]+$/)){z==o}if(o.indexOf("-----BEGIN ")!=-1){z=pemtohex(o)}if(z==null){throw new Error("certsubj/certissuer not cert")}var w=new X509();w.hex=z;var s;if(n){s=w.getIssuerHex()}else{s=w.getSubjectHex()}q=new m();q.hTLV=s}else{if(p.uri!==undefined){A="86";q=new e({str:p.uri})}else{if(p.ip!==undefined){A="87";var v;var t=p.ip;try{if(t.match(/^[0-9a-f]+$/)){var r=t.length;if(r==8||r==16||r==32||r==64){v=t}else{throw"err"}}else{v=iptohex(t)}}catch(u){throw new j("malformed IP address: "+p.ip+":"+u.message)}q=new k({hex:v})}else{throw new j("improper params")}}}}}}}}var B=new c({tag:A,explicit:y,obj:q});return B.tohex()};this.getEncodedHex=function(){return this.tohex()};if(f!==undefined){this.setByParam(f)}};extendClass(KJUR.asn1.x509.GeneralName,KJUR.asn1.ASN1Object);KJUR.asn1.x509.GeneralNames=function(d){KJUR.asn1.x509.GeneralNames.superclass.constructor.call(this);var a=null,c=KJUR,b=c.asn1;this.setByParamArray=function(g){for(var e=0;e0){var m=b(n.valhex,q[0]);var p=j(m,0);var t=[];for(var o=0;o1){var r=b(n.valhex,q[1]);n.polhex=r}delete n.valhex};this.setSignaturePolicyIdentifier=function(s){var q=j(s.valhex,0);if(q.length>0){var r=l.getOID(s.valhex,q[0]);s.oid=r}if(q.length>1){var m=new a();var t=j(s.valhex,q[1]);var p=b(s.valhex,t[0]);var o=m.getAlgorithmIdentifierName(p);s.alg=o;var n=i(s.valhex,t[1]);s.hash=n}delete s.valhex};this.setSigningCertificateV2=function(o){var s=j(o.valhex,0);if(s.length>0){var n=b(o.valhex,s[0]);var r=j(n,0);var u=[];for(var q=0;q1){var t=b(o.valhex,s[1]);o.polhex=t}delete o.valhex};this.getESSCertID=function(o){var p={};var n=j(o,0);if(n.length>0){var q=i(o,n[0]);p.hash=q}if(n.length>1){var m=b(o,n[1]);var r=this.getIssuerSerial(m);if(r.serial!=undefined){p.serial=r.serial}if(r.issuer!=undefined){p.issuer=r.issuer}}return p};this.getESSCertIDv2=function(q){var s={};var p=j(q,0);if(p.length<1||3r+1){var m=b(q,p[r+1]);var t=this.getIssuerSerial(m);s.issuer=t.issuer;s.serial=t.serial}return s};this.getIssuerSerial=function(q){var r={};var n=j(q,0);var m=b(q,n[0]);var p=h.getGeneralNames(m);var o=p[0].dn;r.issuer=o;var s=i(q,n[1]);r.serial={hex:s};return r};this.getCertificateSet=function(p){var n=j(p,0);var m=[];for(var o=0;o1){var o=this.getPKIStatusInfo(b(n,l[0]));var m=b(n,l[1]);var p=this.getToken(m);p.statusinfo=o;return p}}};this.getToken=function(m){var l=new KJUR.asn1.cms.CMSParser;var n=l.getCMSSignedData(m);this.setTSTInfo(n);return n};this.setTSTInfo=function(l){var o=l.econtent;if(o.type=="tstinfo"){var n=o.content.hex;var m=this.getTSTInfo(n);o.content=m}};this.getTSTInfo=function(r){var x={};var s=i(r,0);var p=g(r,s[1]);x.policy=hextooid(p);var o=b(r,s[2]);x.messageImprint=this.getMessageImprint(o);var u=g(r,s[3]);x.serial={hex:u};var y=g(r,s[4]);x.genTime={str:hextoutf8(y)};var q=0;if(s.length>5&&r.substr(s[5],2)=="30"){var v=b(r,s[5]);x.accuracy=this.getAccuracy(v);q++}if(s.length>5+q&&r.substr(s[5+q],2)=="01"){var z=g(r,s[5+q]);if(z=="ff"){x.ordering=true}q++}if(s.length>5+q&&r.substr(s[5+q],2)=="02"){var n=g(r,s[5+q]);x.nonce={hex:n};q++}if(s.length>5+q&&r.substr(s[5+q],2)=="a0"){var m=b(r,s[5+q]);m="30"+m.substr(2);pGeneralNames=f.getGeneralNames(m);var t=pGeneralNames[0].dn;x.tsa=t;q++}if(s.length>5+q&&r.substr(s[5+q],2)=="a1"){var l=b(r,s[5+q]);l="30"+l.substr(2);var w=f.getExtParamArray(l);x.ext=w;q++}return x};this.getAccuracy=function(q){var r={};var o=i(q,0);for(var p=0;p1&&o.substr(r[1],2)=="30"){var m=b(o,r[1]);t.statusstr=this.getPKIFreeText(m);n++}if(r.length>n&&o.substr(r[1+n],2)=="03"){var q=b(o,r[1+n]);t.failinfo=this.getPKIFailureInfo(q)}return t};this.getPKIFreeText=function(n){var o=[];var l=i(n,0);for(var m=0;m>6);var i=128|(a&63);return hextoutf8(j.toString(16)+i.toString(16))}var j=224|((h&240)>>4);var i=128|((h&15)<<2)|((a&192)>>6);var g=128|(a&63);return hextoutf8(j.toString(16)+i.toString(16)+g.toString(16))}var c=d.match(/.{4}/g);var b=c.map(e);return b.join("")}function encodeURIComponentAll(a){var d=encodeURIComponent(a);var b="";for(var c=0;c"7"){return"00"+a}return a}function intarystrtohex(b){b=b.replace(/^\s*\[\s*/,"");b=b.replace(/\s*\]\s*$/,"");b=b.replace(/\s*/g,"");try{var c=b.split(/,/).map(function(g,e,h){var f=parseInt(g);if(f<0||255a.length){d=a.length}for(var b=0;b0){o=o+"."+k.join(".")}return o}catch(j){return null}}var strpad=function(c,b,a){if(a==undefined){a="0"}if(c.length>=b){return c}return new Array(b-c.length+1).join(a)+c};function bitstrtoint(e){if(e.length%2!=0){return -1}e=e.toLowerCase();if(e.match(/^[0-9a-f]+$/)==null){return -1}try{var a=e.substr(0,2);if(a=="00"){return parseInt(e.substr(2),16)}var b=parseInt(a,16);if(b>7){return -1}var g=e.substr(2);var d=parseInt(g,16).toString(2);if(d=="0"){d="00000000"}d=d.slice(0,0-b);var f=parseInt(d,2);if(f==NaN){return -1}return f}catch(c){return -1}}function inttobitstr(e){if(typeof e!="number"){return null}if(e<0){return null}var c=Number(e).toString(2);var b=8-c.length%8;if(b==8){b=0}c=c+strpad("",b,"0");var d=parseInt(c,2).toString(16);if(d.length%2==1){d="0"+d}var a="0"+b;return a+d}function bitstrtobinstr(a){var b=bitstrtoint(a);if(b==-1){return null}return b.toString(2)}function binstrtobitstr(b){if(typeof b!="string"){return null}if(b.match(/^[01]+$/)==null){return null}try{var c=parseInt(b,2);return inttobitstr(c)}catch(a){return null}}function extendClass(c,a){var b=function(){};b.prototype=a.prototype;c.prototype=new b();c.prototype.constructor=c;c.superclass=a.prototype;if(a.prototype.constructor==Object.prototype.constructor){a.prototype.constructor=a}}; +var KJUR;if(typeof KJUR=="undefined"||!KJUR){KJUR={}}if(typeof KJUR.lang=="undefined"||!KJUR.lang){KJUR.lang={}}KJUR.lang.String=function(){};function Base64x(){}function stoBA(d){var b=new Array();for(var c=0;c>6);var i=128|(a&63);return hextoutf8(j.toString(16)+i.toString(16))}var j=224|((h&240)>>4);var i=128|((h&15)<<2)|((a&192)>>6);var g=128|(a&63);return hextoutf8(j.toString(16)+i.toString(16)+g.toString(16))}var c=d.match(/.{4}/g);var b=c.map(e);return b.join("")}function encodeURIComponentAll(a){var d=encodeURIComponent(a);var b="";for(var c=0;c"7"){return"00"+a}return a}function intarystrtohex(b){b=b.replace(/^\s*\[\s*/,"");b=b.replace(/\s*\]\s*$/,"");b=b.replace(/\s*/g,"");try{var c=b.split(/,/).map(function(g,e,h){var f=parseInt(g);if(f<0||255a.length){d=a.length}for(var b=0;b0){o=o+"."+k.join(".")}return o}catch(j){return null}}var strpad=function(c,b,a){if(a==undefined){a="0"}if(c.length>=b){return c}return new Array(b-c.length+1).join(a)+c};function bitstrtoint(e){if(e.length%2!=0){return -1}e=e.toLowerCase();if(e.match(/^[0-9a-f]+$/)==null){return -1}try{var a=e.substr(0,2);if(a=="00"){return parseInt(e.substr(2),16)}var b=parseInt(a,16);if(b>7){return -1}var g=e.substr(2);var d=parseInt(g,16).toString(2);if(d=="0"){d="00000000"}d=d.slice(0,0-b);var f=parseInt(d,2);if(f==NaN){return -1}return f}catch(c){return -1}}function inttobitstr(e){if(typeof e!="number"){return null}if(e<0){return null}var c=Number(e).toString(2);var b=8-c.length%8;if(b==8){b=0}c=c+strpad("",b,"0");var d=parseInt(c,2).toString(16);if(d.length%2==1){d="0"+d}var a="0"+b;return a+d}function bitstrtobinstr(a){var b=bitstrtoint(a);if(b==-1){return null}return b.toString(2)}function binstrtobitstr(b){if(typeof b!="string"){return null}if(b.match(/^[01]+$/)==null){return null}try{var c=parseInt(b,2);return inttobitstr(c)}catch(a){return null}}function extendClass(c,a){var b=function(){};b.prototype=a.prototype;c.prototype=new b();c.prototype.constructor=c;c.superclass=a.prototype;if(a.prototype.constructor==Object.prototype.constructor){a.prototype.constructor=a}}; if(typeof KJUR=="undefined"||!KJUR){KJUR={}}if(typeof KJUR.crypto=="undefined"||!KJUR.crypto){KJUR.crypto={}}KJUR.crypto.Util=new function(){this.DIGESTINFOHEAD={sha1:"3021300906052b0e03021a05000414",sha224:"302d300d06096086480165030402040500041c",sha256:"3031300d060960864801650304020105000420",sha384:"3041300d060960864801650304020205000430",sha512:"3051300d060960864801650304020305000440",md2:"3020300c06082a864886f70d020205000410",md5:"3020300c06082a864886f70d020505000410",ripemd160:"3021300906052b2403020105000414",};this.DEFAULTPROVIDER={md5:"cryptojs",sha1:"cryptojs",sha224:"cryptojs",sha256:"cryptojs",sha384:"cryptojs",sha512:"cryptojs",ripemd160:"cryptojs",hmacmd5:"cryptojs",hmacsha1:"cryptojs",hmacsha224:"cryptojs",hmacsha256:"cryptojs",hmacsha384:"cryptojs",hmacsha512:"cryptojs",hmacripemd160:"cryptojs",MD5withRSA:"cryptojs/jsrsa",SHA1withRSA:"cryptojs/jsrsa",SHA224withRSA:"cryptojs/jsrsa",SHA256withRSA:"cryptojs/jsrsa",SHA384withRSA:"cryptojs/jsrsa",SHA512withRSA:"cryptojs/jsrsa",RIPEMD160withRSA:"cryptojs/jsrsa",MD5withECDSA:"cryptojs/jsrsa",SHA1withECDSA:"cryptojs/jsrsa",SHA224withECDSA:"cryptojs/jsrsa",SHA256withECDSA:"cryptojs/jsrsa",SHA384withECDSA:"cryptojs/jsrsa",SHA512withECDSA:"cryptojs/jsrsa",RIPEMD160withECDSA:"cryptojs/jsrsa",SHA1withDSA:"cryptojs/jsrsa",SHA224withDSA:"cryptojs/jsrsa",SHA256withDSA:"cryptojs/jsrsa",MD5withRSAandMGF1:"cryptojs/jsrsa",SHAwithRSAandMGF1:"cryptojs/jsrsa",SHA1withRSAandMGF1:"cryptojs/jsrsa",SHA224withRSAandMGF1:"cryptojs/jsrsa",SHA256withRSAandMGF1:"cryptojs/jsrsa",SHA384withRSAandMGF1:"cryptojs/jsrsa",SHA512withRSAandMGF1:"cryptojs/jsrsa",RIPEMD160withRSAandMGF1:"cryptojs/jsrsa",};this.CRYPTOJSMESSAGEDIGESTNAME={md5:CryptoJS.algo.MD5,sha1:CryptoJS.algo.SHA1,sha224:CryptoJS.algo.SHA224,sha256:CryptoJS.algo.SHA256,sha384:CryptoJS.algo.SHA384,sha512:CryptoJS.algo.SHA512,ripemd160:CryptoJS.algo.RIPEMD160};this.getDigestInfoHex=function(a,b){if(typeof this.DIGESTINFOHEAD[b]=="undefined"){throw"alg not supported in Util.DIGESTINFOHEAD: "+b}return this.DIGESTINFOHEAD[b]+a};this.getPaddedDigestInfoHex=function(h,a,j){var c=this.getDigestInfoHex(h,a);var d=j/4;if(c.length+22>d){throw"key is too short for SigAlg: keylen="+j+","+a}var b="0001";var k="00"+c;var g="";var l=d-b.length-k.length;for(var f=0;f=0;--u){v=v.twice2D();v.z=f.ONE;if(t.testBit(u)){if(s.testBit(u)){v=v.add2D(y)}else{v=v.add2D(x)}}else{if(s.testBit(u)){v=v.add2D(w)}}}return v}this.getBigRandom=function(r){return new f(r.bitLength(),a).mod(r.subtract(f.ONE)).add(f.ONE)};this.setNamedCurve=function(r){this.ecparams=c.getByName(r);this.prvKeyHex=null;this.pubKeyHex=null;this.curveName=r};this.setPrivateKeyHex=function(r){this.isPrivate=true;this.prvKeyHex=r};this.setPublicKeyHex=function(r){this.isPublic=true;this.pubKeyHex=r};this.getPublicKeyXYHex=function(){var t=this.pubKeyHex;if(t.substr(0,2)!=="04"){throw"this method supports uncompressed format(04) only"}var s=this.ecparams.keycharlen;if(t.length!==2+s*2){throw"malformed public key hex length"}var r={};r.x=t.substr(2,s);r.y=t.substr(2+s);return r};this.getShortNISTPCurveName=function(){var r=this.curveName;if(r==="secp256r1"||r==="NIST P-256"||r==="P-256"||r==="prime256v1"){return"P-256"}if(r==="secp384r1"||r==="NIST P-384"||r==="P-384"){return"P-384"}if(r==="secp521r1"||r==="NIST P-521"||r==="P-521"){return"P-521"}return null};this.generateKeyPairHex=function(){var s=this.ecparams.n;var u=this.getBigRandom(s);var r=this.ecparams.keycharlen;var t=("0000000000"+u.toString(16)).slice(-r);this.setPrivateKeyHex(t);var v=this.generatePublicKeyHex();return{ecprvhex:t,ecpubhex:v}};this.generatePublicKeyHex=function(){var u=new f(this.prvKeyHex,16);var w=this.ecparams.G.multiply(u);var t=w.getX().toBigInteger();var s=w.getY().toBigInteger();var r=this.ecparams.keycharlen;var y=("0000000000"+t.toString(16)).slice(-r);var v=("0000000000"+s.toString(16)).slice(-r);var x="04"+y+v;this.setPublicKeyHex(x);return x};this.signWithMessageHash=function(r){return this.signHex(r,this.prvKeyHex)};this.signHex=function(x,u){var A=new f(u,16);var v=this.ecparams.n;var z=new f(x.substring(0,this.ecparams.keycharlen),16);do{var w=this.getBigRandom(v);var B=this.ecparams.G;var y=B.multiply(w);var t=y.getX().toBigInteger().mod(v)}while(t.compareTo(f.ZERO)<=0);var C=w.modInverse(v).multiply(z.add(A.multiply(t))).mod(v);return m.biRSSigToASN1Sig(t,C)};this.sign=function(w,B){var z=B;var u=this.ecparams.n;var y=f.fromByteArrayUnsigned(w);do{var v=this.getBigRandom(u);var A=this.ecparams.G;var x=A.multiply(v);var t=x.getX().toBigInteger().mod(u)}while(t.compareTo(BigInteger.ZERO)<=0);var C=v.modInverse(u).multiply(y.add(z.multiply(t))).mod(u);return this.serializeSig(t,C)};this.verifyWithMessageHash=function(s,r){return this.verifyHex(s,r,this.pubKeyHex)};this.verifyHex=function(v,y,u){try{var t,B;var w=m.parseSigHex(y);t=w.r;B=w.s;var x=h.decodeFromHex(this.ecparams.curve,u);var z=new f(v.substring(0,this.ecparams.keycharlen),16);return this.verifyRaw(z,t,B,x)}catch(A){return false}};this.verify=function(z,A,u){var w,t;if(Bitcoin.Util.isArray(A)){var y=this.parseSig(A);w=y.r;t=y.s}else{if("object"===typeof A&&A.r&&A.s){w=A.r;t=A.s}else{throw"Invalid value for signature"}}var v;if(u instanceof ECPointFp){v=u}else{if(Bitcoin.Util.isArray(u)){v=h.decodeFrom(this.ecparams.curve,u)}else{throw"Invalid format for pubkey value, must be byte array or ECPointFp"}}var x=f.fromByteArrayUnsigned(z);return this.verifyRaw(x,w,t,v)};this.verifyRaw=function(z,t,E,y){var x=this.ecparams.n;var D=this.ecparams.G;if(t.compareTo(f.ONE)<0||t.compareTo(x)>=0){return false}if(E.compareTo(f.ONE)<0||E.compareTo(x)>=0){return false}var A=E.modInverse(x);var w=z.multiply(A).mod(x);var u=t.multiply(A).mod(x);var B=D.multiply(w).add(y.multiply(u));var C=B.getX().toBigInteger().mod(x);return C.equals(t)};this.serializeSig=function(v,u){var w=v.toByteArraySigned();var t=u.toByteArraySigned();var x=[];x.push(2);x.push(w.length);x=x.concat(w);x.push(2);x.push(t.length);x=x.concat(t);x.unshift(x.length);x.unshift(48);return x};this.parseSig=function(y){var x;if(y[0]!=48){throw new Error("Signature not a valid DERSequence")}x=2;if(y[x]!=2){throw new Error("First element in signature must be a DERInteger")}var w=y.slice(x+2,x+2+y[x+1]);x+=2+y[x+1];if(y[x]!=2){throw new Error("Second element in signature must be a DERInteger")}var t=y.slice(x+2,x+2+y[x+1]);x+=2+y[x+1];var v=f.fromByteArrayUnsigned(w);var u=f.fromByteArrayUnsigned(t);return{r:v,s:u}};this.parseSigCompact=function(w){if(w.length!==65){throw"Signature has the wrong length"}var t=w[0]-27;if(t<0||t>7){throw"Invalid signature type"}var x=this.ecparams.n;var v=f.fromByteArrayUnsigned(w.slice(1,33)).mod(x);var u=f.fromByteArrayUnsigned(w.slice(33,65)).mod(x);return{r:v,s:u,i:t}};this.readPKCS5PrvKeyHex=function(u){if(k(u)===false){throw new Error("not ASN.1 hex string")}var r,t,v;try{r=n(u,0,["[0]",0],"06");t=n(u,0,[1],"04");try{v=n(u,0,["[1]",0],"03")}catch(s){}}catch(s){throw new Error("malformed PKCS#1/5 plain ECC private key")}this.curveName=d(r);if(this.curveName===undefined){throw"unsupported curve name"}this.setNamedCurve(this.curveName);this.setPublicKeyHex(v);this.setPrivateKeyHex(t);this.isPublic=false};this.readPKCS8PrvKeyHex=function(v){if(k(v)===false){throw new j("not ASN.1 hex string")}var t,r,u,w;try{t=n(v,0,[1,0],"06");r=n(v,0,[1,1],"06");u=n(v,0,[2,0,1],"04");try{w=n(v,0,[2,0,"[1]",0],"03")}catch(s){}}catch(s){throw new j("malformed PKCS#8 plain ECC private key")}this.curveName=d(r);if(this.curveName===undefined){throw new j("unsupported curve name")}this.setNamedCurve(this.curveName);this.setPublicKeyHex(w);this.setPrivateKeyHex(u);this.isPublic=false};this.readPKCS8PubKeyHex=function(u){if(k(u)===false){throw new j("not ASN.1 hex string")}var t,r,v;try{t=n(u,0,[0,0],"06");r=n(u,0,[0,1],"06");v=n(u,0,[1],"03")}catch(s){throw new j("malformed PKCS#8 ECC public key")}this.curveName=d(r);if(this.curveName===null){throw new j("unsupported curve name")}this.setNamedCurve(this.curveName);this.setPublicKeyHex(v)};this.readCertPubKeyHex=function(t,v){if(k(t)===false){throw new j("not ASN.1 hex string")}var r,u;try{r=n(t,0,[0,5,0,1],"06");u=n(t,0,[0,5,1],"03")}catch(s){throw new j("malformed X.509 certificate ECC public key")}this.curveName=d(r);if(this.curveName===null){throw new j("unsupported curve name")}this.setNamedCurve(this.curveName);this.setPublicKeyHex(u)};if(e!==undefined){if(e.curve!==undefined){this.curveName=e.curve}}if(this.curveName===undefined){this.curveName=g}this.setNamedCurve(this.curveName);if(e!==undefined){if(e.prv!==undefined){this.setPrivateKeyHex(e.prv)}if(e.pub!==undefined){this.setPublicKeyHex(e.pub)}}};KJUR.crypto.ECDSA.parseSigHex=function(a){var b=KJUR.crypto.ECDSA.parseSigHexInHexRS(a);var d=new BigInteger(b.r,16);var c=new BigInteger(b.s,16);return{r:d,s:c}};KJUR.crypto.ECDSA.parseSigHexInHexRS=function(f){var j=ASN1HEX,i=j.getChildIdx,g=j.getV;j.checkStrictDER(f,0);if(f.substr(0,2)!="30"){throw new Error("signature is not a ASN.1 sequence")}var h=i(f,0);if(h.length!=2){throw new Error("signature shall have two elements")}var e=h[0];var d=h[1];if(f.substr(e,2)!="02"){throw new Error("1st item not ASN.1 integer")}if(f.substr(d,2)!="02"){throw new Error("2nd item not ASN.1 integer")}var c=g(f,e);var b=g(f,d);return{r:c,s:b}};KJUR.crypto.ECDSA.asn1SigToConcatSig=function(d){var e=KJUR.crypto.ECDSA.parseSigHexInHexRS(d);var b=e.r;var a=e.s;if(b.length>=130&&b.length<=134){if(b.length%2!=0){throw Error("unknown ECDSA sig r length error")}if(a.length%2!=0){throw Error("unknown ECDSA sig s length error")}if(b.substr(0,2)=="00"){b=b.substr(2)}if(a.substr(0,2)=="00"){a=a.substr(2)}var c=Math.max(b.length,a.length);b=("000000"+b).slice(-c);a=("000000"+a).slice(-c);return b+a}if(b.substr(0,2)=="00"&&(b.length%32)==2){b=b.substr(2)}if(a.substr(0,2)=="00"&&(a.length%32)==2){a=a.substr(2)}if((b.length%32)==30){b="00"+b}if((a.length%32)==30){a="00"+a}if(b.length%32!=0){throw Error("unknown ECDSA sig r length error")}if(a.length%32!=0){throw Error("unknown ECDSA sig s length error")}return b+a};KJUR.crypto.ECDSA.concatSigToASN1Sig=function(a){if(a.length%4!=0){throw Error("unknown ECDSA concatinated r-s sig length error")}var c=a.substr(0,a.length/2);var b=a.substr(a.length/2);return KJUR.crypto.ECDSA.hexRSSigToASN1Sig(c,b)};KJUR.crypto.ECDSA.hexRSSigToASN1Sig=function(b,a){var d=new BigInteger(b,16);var c=new BigInteger(a,16);return KJUR.crypto.ECDSA.biRSSigToASN1Sig(d,c)};KJUR.crypto.ECDSA.biRSSigToASN1Sig=function(f,d){var c=KJUR.asn1;var b=new c.DERInteger({bigint:f});var a=new c.DERInteger({bigint:d});var e=new c.DERSequence({array:[b,a]});return e.tohex()};KJUR.crypto.ECDSA.getName=function(a){if(a==="2b8104001f"){return"secp192k1"}if(a==="2a8648ce3d030107"){return"secp256r1"}if(a==="2b8104000a"){return"secp256k1"}if(a==="2b81040021"){return"secp224r1"}if(a==="2b81040022"){return"secp384r1"}if(a==="2b81040023"){return"secp521r1"}if("|secp256r1|NIST P-256|P-256|prime256v1|".indexOf(a)!==-1){return"secp256r1"}if("|secp256k1|".indexOf(a)!==-1){return"secp256k1"}if("|secp224r1|NIST P-224|P-224|".indexOf(a)!==-1){return"secp224r1"}if("|secp384r1|NIST P-384|P-384|".indexOf(a)!==-1){return"secp384r1"}if("|secp521r1|NIST P-521|P-521|".indexOf(a)!==-1){return"secp521r1"}return null}; if(typeof KJUR=="undefined"||!KJUR){KJUR={}}if(typeof KJUR.crypto=="undefined"||!KJUR.crypto){KJUR.crypto={}}KJUR.crypto.ECParameterDB=new function(){var b={};var c={};function a(d){return new BigInteger(d,16)}this.getByName=function(e){var d=e;if(typeof c[d]!="undefined"){d=c[e]}if(typeof b[d]!="undefined"){return b[d]}throw"unregistered EC curve name: "+d};this.regist=function(A,l,o,g,m,e,j,f,k,u,d,x){b[A]={};var s=a(o);var z=a(g);var y=a(m);var t=a(e);var w=a(j);var r=new ECCurveFp(s,z,y);var q=r.decodePointHex("04"+f+k);b[A]["name"]=A;b[A]["keylen"]=l;b[A]["keycharlen"]=Math.ceil(l/8)*2;b[A]["curve"]=r;b[A]["G"]=q;b[A]["n"]=t;b[A]["h"]=w;b[A]["oid"]=d;b[A]["info"]=x;for(var v=0;v=0;){delete D[n[A]]}}}return q.call(C,B,D)};x=s({"":x},"")}return x}})(); -var KJUR;if(typeof KJUR=="undefined"||!KJUR){KJUR={}}if(typeof KJUR.lang=="undefined"||!KJUR.lang){KJUR.lang={}}KJUR.lang.String=function(){};function Base64x(){}function stoBA(d){var b=new Array();for(var c=0;c>6);var i=128|(a&63);return hextoutf8(j.toString(16)+i.toString(16))}var j=224|((h&240)>>4);var i=128|((h&15)<<2)|((a&192)>>6);var g=128|(a&63);return hextoutf8(j.toString(16)+i.toString(16)+g.toString(16))}var c=d.match(/.{4}/g);var b=c.map(e);return b.join("")}function encodeURIComponentAll(a){var d=encodeURIComponent(a);var b="";for(var c=0;c"7"){return"00"+a}return a}function intarystrtohex(b){b=b.replace(/^\s*\[\s*/,"");b=b.replace(/\s*\]\s*$/,"");b=b.replace(/\s*/g,"");try{var c=b.split(/,/).map(function(g,e,h){var f=parseInt(g);if(f<0||255a.length){d=a.length}for(var b=0;b0){o=o+"."+k.join(".")}return o}catch(j){return null}}var strpad=function(c,b,a){if(a==undefined){a="0"}if(c.length>=b){return c}return new Array(b-c.length+1).join(a)+c};function bitstrtoint(e){if(e.length%2!=0){return -1}e=e.toLowerCase();if(e.match(/^[0-9a-f]+$/)==null){return -1}try{var a=e.substr(0,2);if(a=="00"){return parseInt(e.substr(2),16)}var b=parseInt(a,16);if(b>7){return -1}var g=e.substr(2);var d=parseInt(g,16).toString(2);if(d=="0"){d="00000000"}d=d.slice(0,0-b);var f=parseInt(d,2);if(f==NaN){return -1}return f}catch(c){return -1}}function inttobitstr(e){if(typeof e!="number"){return null}if(e<0){return null}var c=Number(e).toString(2);var b=8-c.length%8;if(b==8){b=0}c=c+strpad("",b,"0");var d=parseInt(c,2).toString(16);if(d.length%2==1){d="0"+d}var a="0"+b;return a+d}function bitstrtobinstr(a){var b=bitstrtoint(a);if(b==-1){return null}return b.toString(2)}function binstrtobitstr(b){if(typeof b!="string"){return null}if(b.match(/^[01]+$/)==null){return null}try{var c=parseInt(b,2);return inttobitstr(c)}catch(a){return null}}function extendClass(c,a){var b=function(){};b.prototype=a.prototype;c.prototype=new b();c.prototype.constructor=c;c.superclass=a.prototype;if(a.prototype.constructor==Object.prototype.constructor){a.prototype.constructor=a}}; +var KJUR;if(typeof KJUR=="undefined"||!KJUR){KJUR={}}if(typeof KJUR.lang=="undefined"||!KJUR.lang){KJUR.lang={}}KJUR.lang.String=function(){};function Base64x(){}function stoBA(d){var b=new Array();for(var c=0;c>6);var i=128|(a&63);return hextoutf8(j.toString(16)+i.toString(16))}var j=224|((h&240)>>4);var i=128|((h&15)<<2)|((a&192)>>6);var g=128|(a&63);return hextoutf8(j.toString(16)+i.toString(16)+g.toString(16))}var c=d.match(/.{4}/g);var b=c.map(e);return b.join("")}function encodeURIComponentAll(a){var d=encodeURIComponent(a);var b="";for(var c=0;c"7"){return"00"+a}return a}function intarystrtohex(b){b=b.replace(/^\s*\[\s*/,"");b=b.replace(/\s*\]\s*$/,"");b=b.replace(/\s*/g,"");try{var c=b.split(/,/).map(function(g,e,h){var f=parseInt(g);if(f<0||255a.length){d=a.length}for(var b=0;b0){o=o+"."+k.join(".")}return o}catch(j){return null}}var strpad=function(c,b,a){if(a==undefined){a="0"}if(c.length>=b){return c}return new Array(b-c.length+1).join(a)+c};function bitstrtoint(e){if(e.length%2!=0){return -1}e=e.toLowerCase();if(e.match(/^[0-9a-f]+$/)==null){return -1}try{var a=e.substr(0,2);if(a=="00"){return parseInt(e.substr(2),16)}var b=parseInt(a,16);if(b>7){return -1}var g=e.substr(2);var d=parseInt(g,16).toString(2);if(d=="0"){d="00000000"}d=d.slice(0,0-b);var f=parseInt(d,2);if(f==NaN){return -1}return f}catch(c){return -1}}function inttobitstr(e){if(typeof e!="number"){return null}if(e<0){return null}var c=Number(e).toString(2);var b=8-c.length%8;if(b==8){b=0}c=c+strpad("",b,"0");var d=parseInt(c,2).toString(16);if(d.length%2==1){d="0"+d}var a="0"+b;return a+d}function bitstrtobinstr(a){var b=bitstrtoint(a);if(b==-1){return null}return b.toString(2)}function binstrtobitstr(b){if(typeof b!="string"){return null}if(b.match(/^[01]+$/)==null){return null}try{var c=parseInt(b,2);return inttobitstr(c)}catch(a){return null}}function extendClass(c,a){var b=function(){};b.prototype=a.prototype;c.prototype=new b();c.prototype.constructor=c;c.superclass=a.prototype;if(a.prototype.constructor==Object.prototype.constructor){a.prototype.constructor=a}}; if(typeof KJUR=="undefined"||!KJUR){KJUR={}}if(typeof KJUR.crypto=="undefined"||!KJUR.crypto){KJUR.crypto={}}KJUR.crypto.Util=new function(){this.DIGESTINFOHEAD={sha1:"3021300906052b0e03021a05000414",sha224:"302d300d06096086480165030402040500041c",sha256:"3031300d060960864801650304020105000420",sha384:"3041300d060960864801650304020205000430",sha512:"3051300d060960864801650304020305000440",md2:"3020300c06082a864886f70d020205000410",md5:"3020300c06082a864886f70d020505000410",ripemd160:"3021300906052b2403020105000414",};this.DEFAULTPROVIDER={md5:"cryptojs",sha1:"cryptojs",sha224:"cryptojs",sha256:"cryptojs",sha384:"cryptojs",sha512:"cryptojs",ripemd160:"cryptojs",hmacmd5:"cryptojs",hmacsha1:"cryptojs",hmacsha224:"cryptojs",hmacsha256:"cryptojs",hmacsha384:"cryptojs",hmacsha512:"cryptojs",hmacripemd160:"cryptojs",MD5withRSA:"cryptojs/jsrsa",SHA1withRSA:"cryptojs/jsrsa",SHA224withRSA:"cryptojs/jsrsa",SHA256withRSA:"cryptojs/jsrsa",SHA384withRSA:"cryptojs/jsrsa",SHA512withRSA:"cryptojs/jsrsa",RIPEMD160withRSA:"cryptojs/jsrsa",MD5withECDSA:"cryptojs/jsrsa",SHA1withECDSA:"cryptojs/jsrsa",SHA224withECDSA:"cryptojs/jsrsa",SHA256withECDSA:"cryptojs/jsrsa",SHA384withECDSA:"cryptojs/jsrsa",SHA512withECDSA:"cryptojs/jsrsa",RIPEMD160withECDSA:"cryptojs/jsrsa",SHA1withDSA:"cryptojs/jsrsa",SHA224withDSA:"cryptojs/jsrsa",SHA256withDSA:"cryptojs/jsrsa",MD5withRSAandMGF1:"cryptojs/jsrsa",SHAwithRSAandMGF1:"cryptojs/jsrsa",SHA1withRSAandMGF1:"cryptojs/jsrsa",SHA224withRSAandMGF1:"cryptojs/jsrsa",SHA256withRSAandMGF1:"cryptojs/jsrsa",SHA384withRSAandMGF1:"cryptojs/jsrsa",SHA512withRSAandMGF1:"cryptojs/jsrsa",RIPEMD160withRSAandMGF1:"cryptojs/jsrsa",};this.CRYPTOJSMESSAGEDIGESTNAME={md5:CryptoJS.algo.MD5,sha1:CryptoJS.algo.SHA1,sha224:CryptoJS.algo.SHA224,sha256:CryptoJS.algo.SHA256,sha384:CryptoJS.algo.SHA384,sha512:CryptoJS.algo.SHA512,ripemd160:CryptoJS.algo.RIPEMD160};this.getDigestInfoHex=function(a,b){if(typeof this.DIGESTINFOHEAD[b]=="undefined"){throw"alg not supported in Util.DIGESTINFOHEAD: "+b}return this.DIGESTINFOHEAD[b]+a};this.getPaddedDigestInfoHex=function(h,a,j){var c=this.getDigestInfoHex(h,a);var d=j/4;if(c.length+22>d){throw"key is too short for SigAlg: keylen="+j+","+a}var b="0001";var k="00"+c;var g="";var l=d-b.length-k.length;for(var f=0;f0){var b=":"+n.join(":")+":";if(b.indexOf(":"+k+":")==-1){throw"algorithm '"+k+"' not accepted in the list"}}if(k!="none"&&B===null){throw"key shall be specified to verify."}if(typeof B=="string"&&B.indexOf("-----BEGIN ")!=-1){B=KEYUTIL.getKey(B)}if(z=="RS"||z=="PS"){if(!(B instanceof m)){throw"key shall be a RSAKey obj for RS* and PS* algs"}}if(z=="ES"){if(!(B instanceof p)){throw"key shall be a ECDSA obj for ES* algs"}}if(k=="none"){}var u=null;if(t.jwsalg2sigalg[l.alg]===undefined){throw"unsupported alg name: "+k}else{u=t.jwsalg2sigalg[k]}if(u=="none"){throw"not supported"}else{if(u.substr(0,4)=="Hmac"){var o=null;if(B===undefined){throw"hexadecimal key shall be specified for HMAC"}var j=new s({alg:u,pass:B});j.updateString(c);o=j.doFinal();return A==o}else{if(u.indexOf("withECDSA")!=-1){var h=null;try{h=p.concatSigToASN1Sig(A)}catch(v){return false}var g=new d({alg:u});g.init(B);g.updateString(c);return g.verify(h)}else{var g=new d({alg:u});g.init(B);g.updateString(c);return g.verify(A)}}}};KJUR.jws.JWS.parse=function(g){var c=g.split(".");var b={};var f,e,d;if(c.length!=2&&c.length!=3){throw"malformed sJWS: wrong number of '.' splitted elements"}f=c[0];e=c[1];if(c.length==3){d=c[2]}b.headerObj=KJUR.jws.JWS.readSafeJSONString(b64utoutf8(f));b.payloadObj=KJUR.jws.JWS.readSafeJSONString(b64utoutf8(e));b.headerPP=JSON.stringify(b.headerObj,null," ");if(b.payloadObj==null){b.payloadPP=b64utoutf8(e)}else{b.payloadPP=JSON.stringify(b.payloadObj,null," ")}if(d!==undefined){b.sigHex=b64utohex(d)}return b};KJUR.jws.JWS.verifyJWT=function(e,l,r){var d=KJUR,j=d.jws,o=j.JWS,n=o.readSafeJSONString,p=o.inArray,f=o.includedArray;var k=e.split(".");var c=k[0];var i=k[1];var q=c+"."+i;var m=b64utohex(k[2]);var h=n(b64utoutf8(c));var g=n(b64utoutf8(i));if(h.alg===undefined){return false}if(r.alg===undefined){throw"acceptField.alg shall be specified"}if(!p(h.alg,r.alg)){return false}if(g.iss!==undefined&&typeof r.iss==="object"){if(!p(g.iss,r.iss)){return false}}if(g.sub!==undefined&&typeof r.sub==="object"){if(!p(g.sub,r.sub)){return false}}if(g.aud!==undefined&&typeof r.aud==="object"){if(typeof g.aud=="string"){if(!p(g.aud,r.aud)){return false}}else{if(typeof g.aud=="object"){if(!f(g.aud,r.aud)){return false}}}}var b=j.IntDate.getNow();if(r.verifyAt!==undefined&&typeof r.verifyAt==="number"){b=r.verifyAt}if(r.gracePeriod===undefined||typeof r.gracePeriod!=="number"){r.gracePeriod=0}if(g.exp!==undefined&&typeof g.exp=="number"){if(g.exp+r.gracePeriod=a.length){return null}}var e="";while(++f191)&&(h<224)){e+=String.fromCharCode(((h&31)<<6)|(a[f+1]&63));++f}else{e+=String.fromCharCode(((h&15)<<12)|((a[f+1]&63)<<6)|(a[f+2]&63));f+=2}}}return e}function oaep_mgf1_str(c,a,e){var b="",d=0;while(b.length>24,(d&16711680)>>16,(d&65280)>>8,d&255]));d+=1}return b}function oaep_unpad(o,b,g,p){var e=KJUR.crypto.MessageDigest;var r=KJUR.crypto.Util;var c=null;if(!g){g="sha1"}if(typeof g==="string"){c=e.getCanonicalAlgName(g);p=e.getHashLength(c);g=function(d){return hextorstr(r.hashHex(rstrtohex(d),c))}}o=o.toByteArray();var h;for(h=0;h0&&a.length>0){this.n=parseBigInt(c,16);this.e=parseInt(a,16);this.d=parseBigInt(b,16)}else{throw"Invalid RSA private key"}}}function RSASetPrivateEx(g,d,e,c,b,a,h,f){this.isPrivate=true;this.isPublic=false;if(g==null){throw"RSASetPrivateEx N == null"}if(d==null){throw"RSASetPrivateEx E == null"}if(g.length==0){throw"RSASetPrivateEx N.length == 0"}if(d.length==0){throw"RSASetPrivateEx E.length == 0"}if(g!=null&&d!=null&&g.length>0&&d.length>0){this.n=parseBigInt(g,16);this.e=parseInt(d,16);this.d=parseBigInt(e,16);this.p=parseBigInt(c,16);this.q=parseBigInt(b,16);this.dmp1=parseBigInt(a,16);this.dmq1=parseBigInt(h,16);this.coeff=parseBigInt(f,16)}else{throw"Invalid RSA private key in RSASetPrivateEx"}}function RSAGenerate(b,l){var a=new SecureRandom();var g=b>>1;this.e=parseInt(l,16);var c=new BigInteger(l,16);var d=(b/2)-100;var k=BigInteger.ONE.shiftLeft(d);for(;;){for(;;){this.p=new BigInteger(b-g,1,a);if(this.p.subtract(BigInteger.ONE).gcd(c).compareTo(BigInteger.ONE)==0&&this.p.isProbablePrime(10)){break}}for(;;){this.q=new BigInteger(g,1,a);if(this.q.subtract(BigInteger.ONE).gcd(c).compareTo(BigInteger.ONE)==0&&this.q.isProbablePrime(10)){break}}if(this.p.compareTo(this.q)<=0){var j=this.p;this.p=this.q;this.q=j}var h=this.q.subtract(this.p).abs();if(h.bitLength()>3)}function RSADecryptOAEP(e,d,b){if(e.length!=Math.ceil(this.n.bitLength()/4)){throw new Error("wrong ctext length")}var f=parseBigInt(e,16);var a=this.doPrivate(f);if(a==null){return null}return oaep_unpad(a,(this.n.bitLength()+7)>>3,d,b)}RSAKey.prototype.doPrivate=RSADoPrivate;RSAKey.prototype.setPrivate=RSASetPrivate;RSAKey.prototype.setPrivateEx=RSASetPrivateEx;RSAKey.prototype.generate=RSAGenerate;RSAKey.prototype.decrypt=RSADecrypt;RSAKey.prototype.decryptOAEP=RSADecryptOAEP; if(typeof KJUR=="undefined"||!KJUR){KJUR={}}if(typeof KJUR.asn1=="undefined"||!KJUR.asn1){KJUR.asn1={}}KJUR.asn1.ASN1Util=new function(){this.integerToByteHex=function(a){var b=a.toString(16);if((b.length%2)==1){b="0"+b}return b};this.bigIntToMinTwosComplementsHex=function(j){var f=j.toString(16);if(f.substr(0,1)!="-"){if(f.length%2==1){f="0"+f}else{if(!f.match(/^[0-7]/)){f="00"+f}}}else{var a=f.substr(1);var e=a.length;if(e%2==1){e+=1}else{if(!f.match(/^[0-7]/)){e+=2}}var g="";for(var d=0;d15){throw new Error("ASN.1 length too long to represent by 8x: n = "+j.toString(16))}var g=128+h;return g.toString(16)+i}};this.tohex=function(){if(this.hTLV==null||this.isModified){this.hV=this.getFreshValueHex();this.hL=this.getLengthHexFromValue();this.hTLV=this.hT+this.hL+this.hV;this.isModified=false}return this.hTLV};this.getEncodedHex=function(){return this.tohex()};this.getValueHex=function(){this.tohex();return this.hV};this.getFreshValueHex=function(){return""};this.setByParam=function(g){this.params=g};if(e!=undefined){if(e.tlv!=undefined){this.hTLV=e.tlv;this.isModified=false}}};KJUR.asn1.DERAbstractString=function(c){KJUR.asn1.DERAbstractString.superclass.constructor.call(this);var b=null;var a=null;this.getString=function(){return this.s};this.setString=function(d){this.hTLV=null;this.isModified=true;this.s=d;this.hV=utf8tohex(this.s).toLowerCase()};this.setStringHex=function(d){this.hTLV=null;this.isModified=true;this.s=null;this.hV=d};this.getFreshValueHex=function(){return this.hV};if(typeof c!="undefined"){if(typeof c=="string"){this.setString(c)}else{if(typeof c.str!="undefined"){this.setString(c.str)}else{if(typeof c.hex!="undefined"){this.setStringHex(c.hex)}}}}};extendClass(KJUR.asn1.DERAbstractString,KJUR.asn1.ASN1Object);KJUR.asn1.DERAbstractTime=function(c){KJUR.asn1.DERAbstractTime.superclass.constructor.call(this);var b=null;var a=null;this.localDateToUTC=function(g){var e=g.getTime()+(g.getTimezoneOffset()*60000);var f=new Date(e);return f};this.formatDate=function(m,o,e){var g=this.zeroPadding;var n=this.localDateToUTC(m);var p=String(n.getFullYear());if(o=="utc"){p=p.substr(2,2)}var l=g(String(n.getMonth()+1),2);var q=g(String(n.getDate()),2);var h=g(String(n.getHours()),2);var i=g(String(n.getMinutes()),2);var j=g(String(n.getSeconds()),2);var r=p+l+q+h+i+j;if(e===true){var f=n.getMilliseconds();if(f!=0){var k=g(String(f),3);k=k.replace(/[0]+$/,"");r=r+"."+k}}return r+"Z"};this.zeroPadding=function(e,d){if(e.length>=d){return e}return new Array(d-e.length+1).join("0")+e};this.setByParam=function(d){this.hV=null;this.hTLV=null;this.params=d};this.getString=function(){return undefined};this.setString=function(d){this.hTLV=null;this.isModified=true;if(this.params==undefined){this.params={}}this.params.str=d};this.setByDate=function(d){this.hTLV=null;this.isModified=true;if(this.params==undefined){this.params={}}this.params.date=d};this.setByDateValue=function(h,j,e,d,f,g){var i=new Date(Date.UTC(h,j-1,e,d,f,g,0));this.setByDate(i)};this.getFreshValueHex=function(){return this.hV}};extendClass(KJUR.asn1.DERAbstractTime,KJUR.asn1.ASN1Object);KJUR.asn1.DERAbstractStructured=function(b){KJUR.asn1.DERAbstractString.superclass.constructor.call(this);var a=null;this.setByASN1ObjectArray=function(c){this.hTLV=null;this.isModified=true;this.asn1Array=c};this.appendASN1Object=function(c){this.hTLV=null;this.isModified=true;this.asn1Array.push(c)};this.asn1Array=new Array();if(typeof b!="undefined"){if(typeof b.array!="undefined"){this.asn1Array=b.array}}};extendClass(KJUR.asn1.DERAbstractStructured,KJUR.asn1.ASN1Object);KJUR.asn1.DERBoolean=function(a){KJUR.asn1.DERBoolean.superclass.constructor.call(this);this.hT="01";if(a==false){this.hTLV="010100"}else{this.hTLV="0101ff"}};extendClass(KJUR.asn1.DERBoolean,KJUR.asn1.ASN1Object);KJUR.asn1.DERInteger=function(a){KJUR.asn1.DERInteger.superclass.constructor.call(this);this.hT="02";this.setByBigInteger=function(b){this.hTLV=null;this.isModified=true;this.hV=KJUR.asn1.ASN1Util.bigIntToMinTwosComplementsHex(b)};this.setByInteger=function(c){var b=new BigInteger(String(c),10);this.setByBigInteger(b)};this.setValueHex=function(b){this.hV=b};this.getFreshValueHex=function(){return this.hV};if(typeof a!="undefined"){if(typeof a.bigint!="undefined"){this.setByBigInteger(a.bigint)}else{if(typeof a["int"]!="undefined"){this.setByInteger(a["int"])}else{if(typeof a=="number"){this.setByInteger(a)}else{if(typeof a.hex!="undefined"){this.setValueHex(a.hex)}}}}}};extendClass(KJUR.asn1.DERInteger,KJUR.asn1.ASN1Object);KJUR.asn1.DERBitString=function(b){if(b!==undefined&&typeof b.obj!=="undefined"){var a=KJUR.asn1.ASN1Util.newObject(b.obj);b.hex="00"+a.tohex()}KJUR.asn1.DERBitString.superclass.constructor.call(this);this.hT="03";this.setHexValueIncludingUnusedBits=function(c){this.hTLV=null;this.isModified=true;this.hV=c};this.setUnusedBitsAndHexValue=function(c,e){if(c<0||7=f){break}}return j};ASN1HEX.getNthChildIdx=function(d,b,e){var c=ASN1HEX.getChildIdx(d,b);return c[e]};ASN1HEX.getIdxbyList=function(e,d,c,i){var g=ASN1HEX;var f,b;if(c.length==0){if(i!==undefined){if(e.substr(d,2)!==i){return -1}}return d}f=c.shift();b=g.getChildIdx(e,d);if(f>=b.length){return -1}return g.getIdxbyList(e,b[f],c,i)};ASN1HEX.getIdxbyListEx=function(f,k,b,g){var m=ASN1HEX;var d,l;if(b.length==0){if(g!==undefined){if(f.substr(k,2)!==g){return -1}}return k}d=b.shift();l=m.getChildIdx(f,k);var j=0;for(var e=0;e=d.length){return null}return e.getTLV(d,a)};ASN1HEX.getTLVbyListEx=function(d,c,b,f){var e=ASN1HEX;var a=e.getIdxbyListEx(d,c,b,f);if(a==-1){return null}return e.getTLV(d,a)};ASN1HEX.getVbyList=function(e,c,b,g,i){var f=ASN1HEX;var a,d;a=f.getIdxbyList(e,c,b,g);if(a==-1){return null}if(a>=e.length){return null}d=f.getV(e,a);if(i===true){d=d.substr(2)}return d};ASN1HEX.getVbyListEx=function(b,e,a,d,f){var j=ASN1HEX;var g,c,i;g=j.getIdxbyListEx(b,e,a,d);if(g==-1){return null}i=j.getV(b,g);if(b.substr(g,2)=="03"&&f!==false){i=i.substr(2)}return i};ASN1HEX.getInt=function(e,b,f){if(f==undefined){f=-1}try{var c=e.substr(b,2);if(c!="02"&&c!="03"){return f}var a=ASN1HEX.getV(e,b);if(c=="02"){return parseInt(a,16)}else{return bitstrtoint(a)}}catch(d){return f}};ASN1HEX.getOID=function(c,a,d){if(d==undefined){d=null}try{if(c.substr(a,2)!="06"){return d}var e=ASN1HEX.getV(c,a);return hextooid(e)}catch(b){return d}};ASN1HEX.getOIDName=function(d,a,f){if(f==undefined){f=null}try{var e=ASN1HEX.getOID(d,a,f);if(e==f){return f}var b=KJUR.asn1.x509.OID.oid2name(e);if(b==""){return e}return b}catch(c){return f}};ASN1HEX.getString=function(d,b,e){if(e==undefined){e=null}try{var a=ASN1HEX.getV(d,b);return hextorstr(a)}catch(c){return e}};ASN1HEX.hextooidstr=function(e){var h=function(b,a){if(b.length>=a){return b}return new Array(a-b.length+1).join("0")+b};var l=[];var o=e.substr(0,2);var f=parseInt(o,16);l[0]=new String(Math.floor(f/40));l[1]=new String(f%40);var m=e.substr(2);var k=[];for(var g=0;g0){n=n+"."+j.join(".")}return n};ASN1HEX.dump=function(t,c,l,g){var p=ASN1HEX;var j=p.getV;var y=p.dump;var w=p.getChildIdx;var e=t;if(t instanceof KJUR.asn1.ASN1Object){e=t.tohex()}var q=function(A,i){if(A.length<=i*2){return A}else{var v=A.substr(0,i)+"..(total "+A.length/2+"bytes).."+A.substr(A.length-i,i);return v}};if(c===undefined){c={ommit_long_octet:32}}if(l===undefined){l=0}if(g===undefined){g=""}var x=c.ommit_long_octet;var z=e.substr(l,2);if(z=="01"){var h=j(e,l);if(h=="00"){return g+"BOOLEAN FALSE\n"}else{return g+"BOOLEAN TRUE\n"}}if(z=="02"){var h=j(e,l);return g+"INTEGER "+q(h,x)+"\n"}if(z=="03"){var h=j(e,l);if(p.isASN1HEX(h.substr(2))){var k=g+"BITSTRING, encapsulates\n";k=k+y(h.substr(2),c,0,g+" ");return k}else{return g+"BITSTRING "+q(h,x)+"\n"}}if(z=="04"){var h=j(e,l);if(p.isASN1HEX(h)){var k=g+"OCTETSTRING, encapsulates\n";k=k+y(h,c,0,g+" ");return k}else{return g+"OCTETSTRING "+q(h,x)+"\n"}}if(z=="05"){return g+"NULL\n"}if(z=="06"){var m=j(e,l);var b=KJUR.asn1.ASN1Util.oidHexToInt(m);var o=KJUR.asn1.x509.OID.oid2name(b);var a=b.replace(/\./g," ");if(o!=""){return g+"ObjectIdentifier "+o+" ("+a+")\n"}else{return g+"ObjectIdentifier ("+a+")\n"}}if(z=="0a"){return g+"ENUMERATED "+parseInt(j(e,l))+"\n"}if(z=="0c"){return g+"UTF8String '"+hextoutf8(j(e,l))+"'\n"}if(z=="13"){return g+"PrintableString '"+hextoutf8(j(e,l))+"'\n"}if(z=="14"){return g+"TeletexString '"+hextoutf8(j(e,l))+"'\n"}if(z=="16"){return g+"IA5String '"+hextoutf8(j(e,l))+"'\n"}if(z=="17"){return g+"UTCTime "+hextoutf8(j(e,l))+"\n"}if(z=="18"){return g+"GeneralizedTime "+hextoutf8(j(e,l))+"\n"}if(z=="1a"){return g+"VisualString '"+hextoutf8(j(e,l))+"'\n"}if(z=="1e"){return g+"BMPString '"+ucs2hextoutf8(j(e,l))+"'\n"}if(z=="30"){if(e.substr(l,4)=="3000"){return g+"SEQUENCE {}\n"}var k=g+"SEQUENCE\n";var d=w(e,l);var f=c;if((d.length==2||d.length==3)&&e.substr(d[0],2)=="06"&&e.substr(d[d.length-1],2)=="04"){var o=p.oidname(j(e,d[0]));var r=JSON.parse(JSON.stringify(c));r.x509ExtName=o;f=r}for(var u=0;u4){return{"enum":{hex:p}}}else{return{"enum":parseInt(p,16)}}}else{if(C=="30"||C=="31"){j[c[C]]=u(x);return j}else{if(C=="14"){var o=q(p);j[c[C]]={str:o};return j}else{if(C=="1e"){var o=n(p);j[c[C]]={str:o};return j}else{if(":0c:12:13:16:17:18:1a:".indexOf(C)!=-1){var o=k(p);j[c[C]]={str:o};return j}else{if(C.match(/^8[0-9]$/)){var o=k(p);if(o==null|o==""){return{tag:{tag:C,explicit:false,hex:p}}}else{if(o.match(/[\x00-\x1F\x7F-\x9F]/)!=null||o.match(/[\u0000-\u001F\u0080–\u009F]/)!=null){return{tag:{tag:C,explicit:false,hex:p}}}else{return{tag:{tag:C,explicit:false,str:o}}}}}else{if(C.match(/^a[0-9]$/)){try{if(!a(p)){throw new Error("not encap")}return{tag:{tag:C,explicit:true,obj:f(p)}}}catch(z){return{tag:{tag:C,explicit:true,hex:p}}}}else{var A=new KJUR.asn1.ASN1Object();A.hV=p;var w=A.getLengthHexFromValue();return{asn1:{tlv:C+w+p}}}}}}}}}}}}}}}};ASN1HEX.isContextTag=function(c,b){c=c.toLowerCase();var f,e;try{f=parseInt(c,16)}catch(d){return -1}if(b===undefined){if((f&192)==128){return true}else{return false}}try{var a=b.match(/^\[[0-9]+\]$/);if(a==null){return false}e=parseInt(b.substr(1,b.length-1),10);if(e>31){return false}if(((f&192)==128)&&((f&31)==e)){return true}return false}catch(d){return false}};ASN1HEX.isASN1HEX=function(e){var d=ASN1HEX;if(e.length%2==1){return false}var c=d.getVblen(e,0);var b=e.substr(0,2);var f=d.getL(e,0);var a=e.length-b.length-f.length;if(a==c*2){return true}return false};ASN1HEX.checkStrictDER=function(g,o,d,c,r){var s=ASN1HEX;if(d===undefined){if(typeof g!="string"){throw new Error("not hex string")}g=g.toLowerCase();if(!KJUR.lang.String.isHex(g)){throw new Error("not hex string")}d=g.length;c=g.length/2;if(c<128){r=1}else{r=Math.ceil(c.toString(16))+1}}var k=s.getL(g,o);if(k.length>r*2){throw new Error("L of TLV too long: idx="+o)}var n=s.getVblen(g,o);if(n>c){throw new Error("value of L too long than hex: idx="+o)}var q=s.getTLV(g,o);var f=q.length-2-s.getL(g,o).length;if(f!==(n*2)){throw new Error("V string length and L's value not the same:"+f+"/"+(n*2))}if(o===0){if(g.length!=q.length){throw new Error("total length and TLV length unmatch:"+g.length+"!="+q.length)}}var b=g.substr(o,2);if(b==="02"){var a=s.getVidx(g,o);if(g.substr(a,2)=="00"&&g.charCodeAt(a+2)<56){throw new Error("not least zeros for DER INTEGER")}}if(parseInt(b,16)&32){var p=s.getVblen(g,o);var m=0;var l=s.getChildIdx(g,o);for(var e=0;e>6);var i=128|(a&63);return hextoutf8(j.toString(16)+i.toString(16))}var j=224|((h&240)>>4);var i=128|((h&15)<<2)|((a&192)>>6);var g=128|(a&63);return hextoutf8(j.toString(16)+i.toString(16)+g.toString(16))}var c=d.match(/.{4}/g);var b=c.map(e);return b.join("")}function encodeURIComponentAll(a){var d=encodeURIComponent(a);var b="";for(var c=0;c"7"){return"00"+a}return a}function intarystrtohex(b){b=b.replace(/^\s*\[\s*/,"");b=b.replace(/\s*\]\s*$/,"");b=b.replace(/\s*/g,"");try{var c=b.split(/,/).map(function(g,e,h){var f=parseInt(g);if(f<0||255a.length){d=a.length}for(var b=0;b0){o=o+"."+k.join(".")}return o}catch(j){return null}}var strpad=function(c,b,a){if(a==undefined){a="0"}if(c.length>=b){return c}return new Array(b-c.length+1).join(a)+c};function bitstrtoint(e){if(e.length%2!=0){return -1}e=e.toLowerCase();if(e.match(/^[0-9a-f]+$/)==null){return -1}try{var a=e.substr(0,2);if(a=="00"){return parseInt(e.substr(2),16)}var b=parseInt(a,16);if(b>7){return -1}var g=e.substr(2);var d=parseInt(g,16).toString(2);if(d=="0"){d="00000000"}d=d.slice(0,0-b);var f=parseInt(d,2);if(f==NaN){return -1}return f}catch(c){return -1}}function inttobitstr(e){if(typeof e!="number"){return null}if(e<0){return null}var c=Number(e).toString(2);var b=8-c.length%8;if(b==8){b=0}c=c+strpad("",b,"0");var d=parseInt(c,2).toString(16);if(d.length%2==1){d="0"+d}var a="0"+b;return a+d}function bitstrtobinstr(a){var b=bitstrtoint(a);if(b==-1){return null}return b.toString(2)}function binstrtobitstr(b){if(typeof b!="string"){return null}if(b.match(/^[01]+$/)==null){return null}try{var c=parseInt(b,2);return inttobitstr(c)}catch(a){return null}}function extendClass(c,a){var b=function(){};b.prototype=a.prototype;c.prototype=new b();c.prototype.constructor=c;c.superclass=a.prototype;if(a.prototype.constructor==Object.prototype.constructor){a.prototype.constructor=a}}; +var KJUR;if(typeof KJUR=="undefined"||!KJUR){KJUR={}}if(typeof KJUR.lang=="undefined"||!KJUR.lang){KJUR.lang={}}KJUR.lang.String=function(){};function Base64x(){}function stoBA(d){var b=new Array();for(var c=0;c>6);var i=128|(a&63);return hextoutf8(j.toString(16)+i.toString(16))}var j=224|((h&240)>>4);var i=128|((h&15)<<2)|((a&192)>>6);var g=128|(a&63);return hextoutf8(j.toString(16)+i.toString(16)+g.toString(16))}var c=d.match(/.{4}/g);var b=c.map(e);return b.join("")}function encodeURIComponentAll(a){var d=encodeURIComponent(a);var b="";for(var c=0;c"7"){return"00"+a}return a}function intarystrtohex(b){b=b.replace(/^\s*\[\s*/,"");b=b.replace(/\s*\]\s*$/,"");b=b.replace(/\s*/g,"");try{var c=b.split(/,/).map(function(g,e,h){var f=parseInt(g);if(f<0||255a.length){d=a.length}for(var b=0;b0){o=o+"."+k.join(".")}return o}catch(j){return null}}var strpad=function(c,b,a){if(a==undefined){a="0"}if(c.length>=b){return c}return new Array(b-c.length+1).join(a)+c};function bitstrtoint(e){if(e.length%2!=0){return -1}e=e.toLowerCase();if(e.match(/^[0-9a-f]+$/)==null){return -1}try{var a=e.substr(0,2);if(a=="00"){return parseInt(e.substr(2),16)}var b=parseInt(a,16);if(b>7){return -1}var g=e.substr(2);var d=parseInt(g,16).toString(2);if(d=="0"){d="00000000"}d=d.slice(0,0-b);var f=parseInt(d,2);if(f==NaN){return -1}return f}catch(c){return -1}}function inttobitstr(e){if(typeof e!="number"){return null}if(e<0){return null}var c=Number(e).toString(2);var b=8-c.length%8;if(b==8){b=0}c=c+strpad("",b,"0");var d=parseInt(c,2).toString(16);if(d.length%2==1){d="0"+d}var a="0"+b;return a+d}function bitstrtobinstr(a){var b=bitstrtoint(a);if(b==-1){return null}return b.toString(2)}function binstrtobitstr(b){if(typeof b!="string"){return null}if(b.match(/^[01]+$/)==null){return null}try{var c=parseInt(b,2);return inttobitstr(c)}catch(a){return null}}function extendClass(c,a){var b=function(){};b.prototype=a.prototype;c.prototype=new b();c.prototype.constructor=c;c.superclass=a.prototype;if(a.prototype.constructor==Object.prototype.constructor){a.prototype.constructor=a}}; if(typeof KJUR=="undefined"||!KJUR){KJUR={}}if(typeof KJUR.crypto=="undefined"||!KJUR.crypto){KJUR.crypto={}}KJUR.crypto.Util=new function(){this.DIGESTINFOHEAD={sha1:"3021300906052b0e03021a05000414",sha224:"302d300d06096086480165030402040500041c",sha256:"3031300d060960864801650304020105000420",sha384:"3041300d060960864801650304020205000430",sha512:"3051300d060960864801650304020305000440",md2:"3020300c06082a864886f70d020205000410",md5:"3020300c06082a864886f70d020505000410",ripemd160:"3021300906052b2403020105000414",};this.DEFAULTPROVIDER={md5:"cryptojs",sha1:"cryptojs",sha224:"cryptojs",sha256:"cryptojs",sha384:"cryptojs",sha512:"cryptojs",ripemd160:"cryptojs",hmacmd5:"cryptojs",hmacsha1:"cryptojs",hmacsha224:"cryptojs",hmacsha256:"cryptojs",hmacsha384:"cryptojs",hmacsha512:"cryptojs",hmacripemd160:"cryptojs",MD5withRSA:"cryptojs/jsrsa",SHA1withRSA:"cryptojs/jsrsa",SHA224withRSA:"cryptojs/jsrsa",SHA256withRSA:"cryptojs/jsrsa",SHA384withRSA:"cryptojs/jsrsa",SHA512withRSA:"cryptojs/jsrsa",RIPEMD160withRSA:"cryptojs/jsrsa",MD5withECDSA:"cryptojs/jsrsa",SHA1withECDSA:"cryptojs/jsrsa",SHA224withECDSA:"cryptojs/jsrsa",SHA256withECDSA:"cryptojs/jsrsa",SHA384withECDSA:"cryptojs/jsrsa",SHA512withECDSA:"cryptojs/jsrsa",RIPEMD160withECDSA:"cryptojs/jsrsa",SHA1withDSA:"cryptojs/jsrsa",SHA224withDSA:"cryptojs/jsrsa",SHA256withDSA:"cryptojs/jsrsa",MD5withRSAandMGF1:"cryptojs/jsrsa",SHAwithRSAandMGF1:"cryptojs/jsrsa",SHA1withRSAandMGF1:"cryptojs/jsrsa",SHA224withRSAandMGF1:"cryptojs/jsrsa",SHA256withRSAandMGF1:"cryptojs/jsrsa",SHA384withRSAandMGF1:"cryptojs/jsrsa",SHA512withRSAandMGF1:"cryptojs/jsrsa",RIPEMD160withRSAandMGF1:"cryptojs/jsrsa",};this.CRYPTOJSMESSAGEDIGESTNAME={md5:CryptoJS.algo.MD5,sha1:CryptoJS.algo.SHA1,sha224:CryptoJS.algo.SHA224,sha256:CryptoJS.algo.SHA256,sha384:CryptoJS.algo.SHA384,sha512:CryptoJS.algo.SHA512,ripemd160:CryptoJS.algo.RIPEMD160};this.getDigestInfoHex=function(a,b){if(typeof this.DIGESTINFOHEAD[b]=="undefined"){throw"alg not supported in Util.DIGESTINFOHEAD: "+b}return this.DIGESTINFOHEAD[b]+a};this.getPaddedDigestInfoHex=function(h,a,j){var c=this.getDigestInfoHex(h,a);var d=j/4;if(c.length+22>d){throw"key is too short for SigAlg: keylen="+j+","+a}var b="0001";var k="00"+c;var g="";var l=d-b.length-k.length;for(var f=0;f>24,(d&16711680)>>16,(d&65280)>>8,d&255]))));d+=1}return b}RSAKey.prototype.signPSS=function(e,a,d){var c=function(f){return KJUR.crypto.Util.hashHex(f,a)};var b=c(rstrtohex(e));if(d===undefined){d=-1}return this.signWithMessageHashPSS(b,a,d)};RSAKey.prototype.signWithMessageHashPSS=function(l,a,k){var b=hextorstr(l);var g=b.length;var m=this.n.bitLength()-1;var c=Math.ceil(m/8);var d;var o=function(i){return KJUR.crypto.Util.hashHex(i,a)};if(k===-1||k===undefined){k=g}else{if(k===-2){k=c-g-2}else{if(k<-2){throw new Error("invalid salt length")}}}if(c<(g+k+2)){throw new Error("data too long")}var f="";if(k>0){f=new Array(k);new SecureRandom().nextBytes(f);f=String.fromCharCode.apply(String,f)}var n=hextorstr(o(rstrtohex("\x00\x00\x00\x00\x00\x00\x00\x00"+b+f)));var j=[];for(d=0;d>(8*c-m))&255;q[0]&=~p;for(d=0;dk){return false}var j=this.doPublic(b);var i=j.toString(16);if(i.length+3!=k/4){return false}var e=i.replace(/^1f+00/,"");var g=_rsasign_getAlgNameAndHashFromHexDisgestInfo(e);if(g.length==0){return false}var d=g[0];var h=g[1];var a=function(m){return KJUR.crypto.Util.hashString(m,d)};var c=a(f);return(h==c)};RSAKey.prototype.verifyWithMessageHash=function(e,a){if(a.length!=Math.ceil(this.n.bitLength()/4)){return false}var b=parseBigInt(a,16);if(b.bitLength()>this.n.bitLength()){return 0}var h=this.doPublic(b);var g=h.toString(16).replace(/^1f+00/,"");var c=_rsasign_getAlgNameAndHashFromHexDisgestInfo(g);if(c.length==0){return false}var d=c[0];var f=c[1];return(f==e)};RSAKey.prototype.verifyPSS=function(c,b,a,f){var e=function(g){return KJUR.crypto.Util.hashHex(g,a)};var d=e(rstrtohex(c));if(f===undefined){f=-1}return this.verifyWithMessageHashPSS(d,b,a,f)};RSAKey.prototype.verifyWithMessageHashPSS=function(f,s,l,c){if(s.length!=Math.ceil(this.n.bitLength()/4)){return false}var k=new BigInteger(s,16);var r=function(i){return KJUR.crypto.Util.hashHex(i,l)};var j=hextorstr(f);var h=j.length;var g=this.n.bitLength()-1;var m=Math.ceil(g/8);var q;if(c===-1||c===undefined){c=h}else{if(c===-2){c=m-h-2}else{if(c<-2){throw new Error("invalid salt length")}}}if(m<(h+c+2)){throw new Error("data too long")}var a=this.doPublic(k).toByteArray();for(q=0;q>(8*m-g))&255;if((d.charCodeAt(0)&p)!==0){throw new Error("bits beyond keysize not zero")}var n=pss_mgf1_str(e,d.length,r);var o=[];for(q=0;q=0;){delete D[n[A]]}}}return q.call(C,B,D)};x=s({"":x},"")}return x}})(); if(typeof KJUR=="undefined"||!KJUR){KJUR={}}if(typeof KJUR.asn1=="undefined"||!KJUR.asn1){KJUR.asn1={}}KJUR.asn1.ASN1Util=new function(){this.integerToByteHex=function(a){var b=a.toString(16);if((b.length%2)==1){b="0"+b}return b};this.bigIntToMinTwosComplementsHex=function(j){var f=j.toString(16);if(f.substr(0,1)!="-"){if(f.length%2==1){f="0"+f}else{if(!f.match(/^[0-7]/)){f="00"+f}}}else{var a=f.substr(1);var e=a.length;if(e%2==1){e+=1}else{if(!f.match(/^[0-7]/)){e+=2}}var g="";for(var d=0;d15){throw new Error("ASN.1 length too long to represent by 8x: n = "+j.toString(16))}var g=128+h;return g.toString(16)+i}};this.tohex=function(){if(this.hTLV==null||this.isModified){this.hV=this.getFreshValueHex();this.hL=this.getLengthHexFromValue();this.hTLV=this.hT+this.hL+this.hV;this.isModified=false}return this.hTLV};this.getEncodedHex=function(){return this.tohex()};this.getValueHex=function(){this.tohex();return this.hV};this.getFreshValueHex=function(){return""};this.setByParam=function(g){this.params=g};if(e!=undefined){if(e.tlv!=undefined){this.hTLV=e.tlv;this.isModified=false}}};KJUR.asn1.DERAbstractString=function(c){KJUR.asn1.DERAbstractString.superclass.constructor.call(this);var b=null;var a=null;this.getString=function(){return this.s};this.setString=function(d){this.hTLV=null;this.isModified=true;this.s=d;this.hV=utf8tohex(this.s).toLowerCase()};this.setStringHex=function(d){this.hTLV=null;this.isModified=true;this.s=null;this.hV=d};this.getFreshValueHex=function(){return this.hV};if(typeof c!="undefined"){if(typeof c=="string"){this.setString(c)}else{if(typeof c.str!="undefined"){this.setString(c.str)}else{if(typeof c.hex!="undefined"){this.setStringHex(c.hex)}}}}};extendClass(KJUR.asn1.DERAbstractString,KJUR.asn1.ASN1Object);KJUR.asn1.DERAbstractTime=function(c){KJUR.asn1.DERAbstractTime.superclass.constructor.call(this);var b=null;var a=null;this.localDateToUTC=function(g){var e=g.getTime()+(g.getTimezoneOffset()*60000);var f=new Date(e);return f};this.formatDate=function(m,o,e){var g=this.zeroPadding;var n=this.localDateToUTC(m);var p=String(n.getFullYear());if(o=="utc"){p=p.substr(2,2)}var l=g(String(n.getMonth()+1),2);var q=g(String(n.getDate()),2);var h=g(String(n.getHours()),2);var i=g(String(n.getMinutes()),2);var j=g(String(n.getSeconds()),2);var r=p+l+q+h+i+j;if(e===true){var f=n.getMilliseconds();if(f!=0){var k=g(String(f),3);k=k.replace(/[0]+$/,"");r=r+"."+k}}return r+"Z"};this.zeroPadding=function(e,d){if(e.length>=d){return e}return new Array(d-e.length+1).join("0")+e};this.setByParam=function(d){this.hV=null;this.hTLV=null;this.params=d};this.getString=function(){return undefined};this.setString=function(d){this.hTLV=null;this.isModified=true;if(this.params==undefined){this.params={}}this.params.str=d};this.setByDate=function(d){this.hTLV=null;this.isModified=true;if(this.params==undefined){this.params={}}this.params.date=d};this.setByDateValue=function(h,j,e,d,f,g){var i=new Date(Date.UTC(h,j-1,e,d,f,g,0));this.setByDate(i)};this.getFreshValueHex=function(){return this.hV}};extendClass(KJUR.asn1.DERAbstractTime,KJUR.asn1.ASN1Object);KJUR.asn1.DERAbstractStructured=function(b){KJUR.asn1.DERAbstractString.superclass.constructor.call(this);var a=null;this.setByASN1ObjectArray=function(c){this.hTLV=null;this.isModified=true;this.asn1Array=c};this.appendASN1Object=function(c){this.hTLV=null;this.isModified=true;this.asn1Array.push(c)};this.asn1Array=new Array();if(typeof b!="undefined"){if(typeof b.array!="undefined"){this.asn1Array=b.array}}};extendClass(KJUR.asn1.DERAbstractStructured,KJUR.asn1.ASN1Object);KJUR.asn1.DERBoolean=function(a){KJUR.asn1.DERBoolean.superclass.constructor.call(this);this.hT="01";if(a==false){this.hTLV="010100"}else{this.hTLV="0101ff"}};extendClass(KJUR.asn1.DERBoolean,KJUR.asn1.ASN1Object);KJUR.asn1.DERInteger=function(a){KJUR.asn1.DERInteger.superclass.constructor.call(this);this.hT="02";this.setByBigInteger=function(b){this.hTLV=null;this.isModified=true;this.hV=KJUR.asn1.ASN1Util.bigIntToMinTwosComplementsHex(b)};this.setByInteger=function(c){var b=new BigInteger(String(c),10);this.setByBigInteger(b)};this.setValueHex=function(b){this.hV=b};this.getFreshValueHex=function(){return this.hV};if(typeof a!="undefined"){if(typeof a.bigint!="undefined"){this.setByBigInteger(a.bigint)}else{if(typeof a["int"]!="undefined"){this.setByInteger(a["int"])}else{if(typeof a=="number"){this.setByInteger(a)}else{if(typeof a.hex!="undefined"){this.setValueHex(a.hex)}}}}}};extendClass(KJUR.asn1.DERInteger,KJUR.asn1.ASN1Object);KJUR.asn1.DERBitString=function(b){if(b!==undefined&&typeof b.obj!=="undefined"){var a=KJUR.asn1.ASN1Util.newObject(b.obj);b.hex="00"+a.tohex()}KJUR.asn1.DERBitString.superclass.constructor.call(this);this.hT="03";this.setHexValueIncludingUnusedBits=function(c){this.hTLV=null;this.isModified=true;this.hV=c};this.setUnusedBitsAndHexValue=function(c,e){if(c<0||7=f){break}}return j};ASN1HEX.getNthChildIdx=function(d,b,e){var c=ASN1HEX.getChildIdx(d,b);return c[e]};ASN1HEX.getIdxbyList=function(e,d,c,i){var g=ASN1HEX;var f,b;if(c.length==0){if(i!==undefined){if(e.substr(d,2)!==i){return -1}}return d}f=c.shift();b=g.getChildIdx(e,d);if(f>=b.length){return -1}return g.getIdxbyList(e,b[f],c,i)};ASN1HEX.getIdxbyListEx=function(f,k,b,g){var m=ASN1HEX;var d,l;if(b.length==0){if(g!==undefined){if(f.substr(k,2)!==g){return -1}}return k}d=b.shift();l=m.getChildIdx(f,k);var j=0;for(var e=0;e=d.length){return null}return e.getTLV(d,a)};ASN1HEX.getTLVbyListEx=function(d,c,b,f){var e=ASN1HEX;var a=e.getIdxbyListEx(d,c,b,f);if(a==-1){return null}return e.getTLV(d,a)};ASN1HEX.getVbyList=function(e,c,b,g,i){var f=ASN1HEX;var a,d;a=f.getIdxbyList(e,c,b,g);if(a==-1){return null}if(a>=e.length){return null}d=f.getV(e,a);if(i===true){d=d.substr(2)}return d};ASN1HEX.getVbyListEx=function(b,e,a,d,f){var j=ASN1HEX;var g,c,i;g=j.getIdxbyListEx(b,e,a,d);if(g==-1){return null}i=j.getV(b,g);if(b.substr(g,2)=="03"&&f!==false){i=i.substr(2)}return i};ASN1HEX.getInt=function(e,b,f){if(f==undefined){f=-1}try{var c=e.substr(b,2);if(c!="02"&&c!="03"){return f}var a=ASN1HEX.getV(e,b);if(c=="02"){return parseInt(a,16)}else{return bitstrtoint(a)}}catch(d){return f}};ASN1HEX.getOID=function(c,a,d){if(d==undefined){d=null}try{if(c.substr(a,2)!="06"){return d}var e=ASN1HEX.getV(c,a);return hextooid(e)}catch(b){return d}};ASN1HEX.getOIDName=function(d,a,f){if(f==undefined){f=null}try{var e=ASN1HEX.getOID(d,a,f);if(e==f){return f}var b=KJUR.asn1.x509.OID.oid2name(e);if(b==""){return e}return b}catch(c){return f}};ASN1HEX.getString=function(d,b,e){if(e==undefined){e=null}try{var a=ASN1HEX.getV(d,b);return hextorstr(a)}catch(c){return e}};ASN1HEX.hextooidstr=function(e){var h=function(b,a){if(b.length>=a){return b}return new Array(a-b.length+1).join("0")+b};var l=[];var o=e.substr(0,2);var f=parseInt(o,16);l[0]=new String(Math.floor(f/40));l[1]=new String(f%40);var m=e.substr(2);var k=[];for(var g=0;g0){n=n+"."+j.join(".")}return n};ASN1HEX.dump=function(t,c,l,g){var p=ASN1HEX;var j=p.getV;var y=p.dump;var w=p.getChildIdx;var e=t;if(t instanceof KJUR.asn1.ASN1Object){e=t.tohex()}var q=function(A,i){if(A.length<=i*2){return A}else{var v=A.substr(0,i)+"..(total "+A.length/2+"bytes).."+A.substr(A.length-i,i);return v}};if(c===undefined){c={ommit_long_octet:32}}if(l===undefined){l=0}if(g===undefined){g=""}var x=c.ommit_long_octet;var z=e.substr(l,2);if(z=="01"){var h=j(e,l);if(h=="00"){return g+"BOOLEAN FALSE\n"}else{return g+"BOOLEAN TRUE\n"}}if(z=="02"){var h=j(e,l);return g+"INTEGER "+q(h,x)+"\n"}if(z=="03"){var h=j(e,l);if(p.isASN1HEX(h.substr(2))){var k=g+"BITSTRING, encapsulates\n";k=k+y(h.substr(2),c,0,g+" ");return k}else{return g+"BITSTRING "+q(h,x)+"\n"}}if(z=="04"){var h=j(e,l);if(p.isASN1HEX(h)){var k=g+"OCTETSTRING, encapsulates\n";k=k+y(h,c,0,g+" ");return k}else{return g+"OCTETSTRING "+q(h,x)+"\n"}}if(z=="05"){return g+"NULL\n"}if(z=="06"){var m=j(e,l);var b=KJUR.asn1.ASN1Util.oidHexToInt(m);var o=KJUR.asn1.x509.OID.oid2name(b);var a=b.replace(/\./g," ");if(o!=""){return g+"ObjectIdentifier "+o+" ("+a+")\n"}else{return g+"ObjectIdentifier ("+a+")\n"}}if(z=="0a"){return g+"ENUMERATED "+parseInt(j(e,l))+"\n"}if(z=="0c"){return g+"UTF8String '"+hextoutf8(j(e,l))+"'\n"}if(z=="13"){return g+"PrintableString '"+hextoutf8(j(e,l))+"'\n"}if(z=="14"){return g+"TeletexString '"+hextoutf8(j(e,l))+"'\n"}if(z=="16"){return g+"IA5String '"+hextoutf8(j(e,l))+"'\n"}if(z=="17"){return g+"UTCTime "+hextoutf8(j(e,l))+"\n"}if(z=="18"){return g+"GeneralizedTime "+hextoutf8(j(e,l))+"\n"}if(z=="1a"){return g+"VisualString '"+hextoutf8(j(e,l))+"'\n"}if(z=="1e"){return g+"BMPString '"+ucs2hextoutf8(j(e,l))+"'\n"}if(z=="30"){if(e.substr(l,4)=="3000"){return g+"SEQUENCE {}\n"}var k=g+"SEQUENCE\n";var d=w(e,l);var f=c;if((d.length==2||d.length==3)&&e.substr(d[0],2)=="06"&&e.substr(d[d.length-1],2)=="04"){var o=p.oidname(j(e,d[0]));var r=JSON.parse(JSON.stringify(c));r.x509ExtName=o;f=r}for(var u=0;u4){return{"enum":{hex:p}}}else{return{"enum":parseInt(p,16)}}}else{if(C=="30"||C=="31"){j[c[C]]=u(x);return j}else{if(C=="14"){var o=q(p);j[c[C]]={str:o};return j}else{if(C=="1e"){var o=n(p);j[c[C]]={str:o};return j}else{if(":0c:12:13:16:17:18:1a:".indexOf(C)!=-1){var o=k(p);j[c[C]]={str:o};return j}else{if(C.match(/^8[0-9]$/)){var o=k(p);if(o==null|o==""){return{tag:{tag:C,explicit:false,hex:p}}}else{if(o.match(/[\x00-\x1F\x7F-\x9F]/)!=null||o.match(/[\u0000-\u001F\u0080–\u009F]/)!=null){return{tag:{tag:C,explicit:false,hex:p}}}else{return{tag:{tag:C,explicit:false,str:o}}}}}else{if(C.match(/^a[0-9]$/)){try{if(!a(p)){throw new Error("not encap")}return{tag:{tag:C,explicit:true,obj:f(p)}}}catch(z){return{tag:{tag:C,explicit:true,hex:p}}}}else{var A=new KJUR.asn1.ASN1Object();A.hV=p;var w=A.getLengthHexFromValue();return{asn1:{tlv:C+w+p}}}}}}}}}}}}}}}};ASN1HEX.isContextTag=function(c,b){c=c.toLowerCase();var f,e;try{f=parseInt(c,16)}catch(d){return -1}if(b===undefined){if((f&192)==128){return true}else{return false}}try{var a=b.match(/^\[[0-9]+\]$/);if(a==null){return false}e=parseInt(b.substr(1,b.length-1),10);if(e>31){return false}if(((f&192)==128)&&((f&31)==e)){return true}return false}catch(d){return false}};ASN1HEX.isASN1HEX=function(e){var d=ASN1HEX;if(e.length%2==1){return false}var c=d.getVblen(e,0);var b=e.substr(0,2);var f=d.getL(e,0);var a=e.length-b.length-f.length;if(a==c*2){return true}return false};ASN1HEX.checkStrictDER=function(g,o,d,c,r){var s=ASN1HEX;if(d===undefined){if(typeof g!="string"){throw new Error("not hex string")}g=g.toLowerCase();if(!KJUR.lang.String.isHex(g)){throw new Error("not hex string")}d=g.length;c=g.length/2;if(c<128){r=1}else{r=Math.ceil(c.toString(16))+1}}var k=s.getL(g,o);if(k.length>r*2){throw new Error("L of TLV too long: idx="+o)}var n=s.getVblen(g,o);if(n>c){throw new Error("value of L too long than hex: idx="+o)}var q=s.getTLV(g,o);var f=q.length-2-s.getL(g,o).length;if(f!==(n*2)){throw new Error("V string length and L's value not the same:"+f+"/"+(n*2))}if(o===0){if(g.length!=q.length){throw new Error("total length and TLV length unmatch:"+g.length+"!="+q.length)}}var b=g.substr(o,2);if(b==="02"){var a=s.getVidx(g,o);if(g.substr(a,2)=="00"&&g.charCodeAt(a+2)<56){throw new Error("not least zeros for DER INTEGER")}}if(parseInt(b,16)&32){var p=s.getVblen(g,o);var m=0;var l=s.getChildIdx(g,o);for(var e=0;e0){n.push(new c({tag:"a3",obj:new j(q.ext)}))}var o=new KJUR.asn1.DERSequence({array:n});return o.tohex()};this.getEncodedHex=function(){return this.tohex()};if(f!==undefined){this.setByParam(f)}};extendClass(KJUR.asn1.x509.TBSCertificate,KJUR.asn1.ASN1Object);KJUR.asn1.x509.Extensions=function(d){KJUR.asn1.x509.Extensions.superclass.constructor.call(this);var c=KJUR,b=c.asn1,a=b.DERSequence,e=b.x509;this.aParam=[];this.setByParam=function(f){this.aParam=f};this.tohex=function(){var f=[];for(var h=0;h-1){i.push(new f({"int":this.pathLen}))}var h=new b({array:i});this.asn1ExtnValue=h;return this.asn1ExtnValue.tohex()};this.oid="2.5.29.19";this.cA=false;this.pathLen=-1;if(g!==undefined){if(g.cA!==undefined){this.cA=g.cA}if(g.pathLen!==undefined){this.pathLen=g.pathLen}}};extendClass(KJUR.asn1.x509.BasicConstraints,KJUR.asn1.x509.Extension);KJUR.asn1.x509.CRLDistributionPoints=function(d){KJUR.asn1.x509.CRLDistributionPoints.superclass.constructor.call(this,d);var b=KJUR,a=b.asn1,c=a.x509;this.getExtnValueHex=function(){return this.asn1ExtnValue.tohex()};this.setByDPArray=function(e){var f=[];for(var g=0;g0){f.push(new b({array:j}))}}var g=new b({array:f});return g.tohex()};this.getEncodedHex=function(){return this.tohex()};if(d!==undefined){this.params=d}};extendClass(KJUR.asn1.x509.PolicyInformation,KJUR.asn1.ASN1Object);KJUR.asn1.x509.PolicyQualifierInfo=function(e){KJUR.asn1.x509.PolicyQualifierInfo.superclass.constructor.call(this,e);var c=KJUR.asn1,b=c.DERSequence,d=c.DERIA5String,f=c.DERObjectIdentifier,a=c.x509.UserNotice;this.params=null;this.tohex=function(){if(this.params.cps!==undefined){var g=new b({array:[new f({oid:"1.3.6.1.5.5.7.2.1"}),new d({str:this.params.cps})]});return g.tohex()}if(this.params.unotice!=undefined){var g=new b({array:[new f({oid:"1.3.6.1.5.5.7.2.2"}),new a(this.params.unotice)]});return g.tohex()}};this.getEncodedHex=function(){return this.tohex()};if(e!==undefined){this.params=e}};extendClass(KJUR.asn1.x509.PolicyQualifierInfo,KJUR.asn1.ASN1Object);KJUR.asn1.x509.UserNotice=function(e){KJUR.asn1.x509.UserNotice.superclass.constructor.call(this,e);var a=KJUR.asn1.DERSequence,d=KJUR.asn1.DERInteger,c=KJUR.asn1.x509.DisplayText,b=KJUR.asn1.x509.NoticeReference;this.params=null;this.tohex=function(){var f=[];if(this.params.noticeref!==undefined){f.push(new b(this.params.noticeref))}if(this.params.exptext!==undefined){f.push(new c(this.params.exptext))}var g=new a({array:f});return g.tohex()};this.getEncodedHex=function(){return this.tohex()};if(e!==undefined){this.params=e}};extendClass(KJUR.asn1.x509.UserNotice,KJUR.asn1.ASN1Object);KJUR.asn1.x509.NoticeReference=function(d){KJUR.asn1.x509.NoticeReference.superclass.constructor.call(this,d);var a=KJUR.asn1.DERSequence,c=KJUR.asn1.DERInteger,b=KJUR.asn1.x509.DisplayText;this.params=null;this.tohex=function(){var f=[];if(this.params.org!==undefined){f.push(new b(this.params.org))}if(this.params.noticenum!==undefined){var h=[];var e=this.params.noticenum;for(var j=0;j0){for(var g=0;g0;f++){var h=c.shift();if(e===true){var d=b.pop();var j=(d+","+h).replace(/\\,/g,",");b.push(j);e=false}else{b.push(h)}if(h.substr(-1,1)==="\\"){e=true}}b=b.map(function(a){return a.replace("/","\\/")});b.reverse();return"/"+b.join("/")};KJUR.asn1.x509.X500Name.ldapToOneline=function(a){return KJUR.asn1.x509.X500Name.ldapToCompat(a)};KJUR.asn1.x509.RDN=function(b){KJUR.asn1.x509.RDN.superclass.constructor.call(this);this.asn1Array=[];this.paramArray=[];this.sRule="utf8";var a=KJUR.asn1.x509.AttributeTypeAndValue;this.setByParam=function(c){if(c.rule!==undefined){this.sRule=c.rule}if(c.str!==undefined){this.addByMultiValuedString(c.str)}if(c.array!==undefined){this.paramArray=c.array}};this.addByString=function(c){this.asn1Array.push(new KJUR.asn1.x509.AttributeTypeAndValue({str:c,rule:this.sRule}))};this.addByMultiValuedString=function(e){var c=KJUR.asn1.x509.RDN.parseString(e);for(var d=0;d0){for(var d=0;d0;g++){var k=j.shift();if(h===true){var f=c.pop();var d=(f+"+"+k).replace(/\\\+/g,"+");c.push(d);h=false}else{c.push(k)}if(k.substr(-1,1)==="\\"){h=true}}var l=false;var b=[];for(var g=0;c.length>0;g++){var k=c.shift();if(l===true){var e=b.pop();if(k.match(/"$/)){var d=(e+"+"+k).replace(/^([^=]+)="(.*)"$/,"$1=$2");b.push(d);l=false}else{b.push(e+"+"+k)}}else{b.push(k)}if(k.match(/^[^=]+="/)){l=true}}return b};KJUR.asn1.x509.AttributeTypeAndValue=function(c){KJUR.asn1.x509.AttributeTypeAndValue.superclass.constructor.call(this);this.sRule="utf8";this.sType=null;this.sValue=null;this.dsType=null;var a=KJUR,g=a.asn1,d=g.DERSequence,l=g.DERUTF8String,i=g.DERPrintableString,h=g.DERTeletexString,b=g.DERIA5String,e=g.DERVisibleString,k=g.DERBMPString,f=a.lang.String.isMail,j=a.lang.String.isPrintable;this.setByParam=function(o){if(o.rule!==undefined){this.sRule=o.rule}if(o.ds!==undefined){this.dsType=o.ds}if(o.value===undefined&&o.str!==undefined){var n=o.str;var m=n.match(/^([^=]+)=(.+)$/);if(m){this.sType=m[1];this.sValue=m[2]}else{throw new Error("malformed attrTypeAndValueStr: "+attrTypeAndValueStr)}}else{this.sType=o.type;this.sValue=o.value}};this.setByString=function(n,o){if(o!==undefined){this.sRule=o}var m=n.match(/^([^=]+)=(.+)$/);if(m){this.setByAttrTypeAndValueStr(m[1],m[2])}else{throw new Error("malformed attrTypeAndValueStr: "+attrTypeAndValueStr)}};this._getDsType=function(){var o=this.sType;var n=this.sValue;var m=this.sRule;if(m==="prn"){if(o=="CN"&&f(n)){return"ia5"}if(j(n)){return"prn"}return"utf8"}else{if(m==="utf8"){if(o=="CN"&&f(n)){return"ia5"}if(o=="C"){return"prn"}return"utf8"}}return"utf8"};this.setByAttrTypeAndValueStr=function(o,n,m){if(m!==undefined){this.sRule=m}this.sType=o;this.sValue=n};this.getValueObj=function(n,m){if(n=="utf8"){return new l({str:m})}if(n=="prn"){return new i({str:m})}if(n=="tel"){return new h({str:m})}if(n=="ia5"){return new b({str:m})}if(n=="vis"){return new e({str:m})}if(n=="bmp"){return new k({str:m})}throw new Error("unsupported directory string type: type="+n+" value="+m)};this.tohex=function(){if(this.dsType==null){this.dsType=this._getDsType()}var n=KJUR.asn1.x509.OID.atype2obj(this.sType);var m=this.getValueObj(this.dsType,this.sValue);var p=new d({array:[n,m]});this.TLV=p.tohex();return this.TLV};this.getEncodedHex=function(){return this.tohex()};if(c!==undefined){this.setByParam(c)}};extendClass(KJUR.asn1.x509.AttributeTypeAndValue,KJUR.asn1.ASN1Object);KJUR.asn1.x509.SubjectPublicKeyInfo=function(f){KJUR.asn1.x509.SubjectPublicKeyInfo.superclass.constructor.call(this);var l=null,k=null,a=KJUR,j=a.asn1,i=j.DERInteger,b=j.DERBitString,m=j.DERObjectIdentifier,e=j.DERSequence,h=j.ASN1Util.newObject,d=j.x509,o=d.AlgorithmIdentifier,g=a.crypto,n=g.ECDSA,c=g.DSA;this.getASN1Object=function(){if(this.asn1AlgId==null||this.asn1SubjPKey==null){throw"algId and/or subjPubKey not set"}var p=new e({array:[this.asn1AlgId,this.asn1SubjPKey]});return p};this.tohex=function(){var p=this.getASN1Object();this.hTLV=p.tohex();return this.hTLV};this.getEncodedHex=function(){return this.tohex()};this.setPubKey=function(q){try{if(q instanceof RSAKey){var u=h({seq:[{"int":{bigint:q.n}},{"int":{"int":q.e}}]});var s=u.tohex();this.asn1AlgId=new o({name:"rsaEncryption"});this.asn1SubjPKey=new b({hex:"00"+s})}}catch(p){}try{if(q instanceof KJUR.crypto.ECDSA){var r=new m({name:q.curveName});this.asn1AlgId=new o({name:"ecPublicKey",asn1params:r});this.asn1SubjPKey=new b({hex:"00"+q.pubKeyHex})}}catch(p){}try{if(q instanceof KJUR.crypto.DSA){var r=new h({seq:[{"int":{bigint:q.p}},{"int":{bigint:q.q}},{"int":{bigint:q.g}}]});this.asn1AlgId=new o({name:"dsa",asn1params:r});var t=new i({bigint:q.y});this.asn1SubjPKey=new b({hex:"00"+t.tohex()})}}catch(p){}};if(f!==undefined){this.setPubKey(f)}};extendClass(KJUR.asn1.x509.SubjectPublicKeyInfo,KJUR.asn1.ASN1Object);KJUR.asn1.x509.Time=function(f){KJUR.asn1.x509.Time.superclass.constructor.call(this);var e=null,a=null,d=KJUR,c=d.asn1,b=c.DERUTCTime,g=c.DERGeneralizedTime;this.params=null;this.type=null;this.setTimeParams=function(h){this.timeParams=h};this.setByParam=function(h){this.params=h};this.getType=function(h){if(h.match(/^[0-9]{12}Z$/)){return"utc"}if(h.match(/^[0-9]{14}Z$/)){return"gen"}if(h.match(/^[0-9]{12}\.[0-9]+Z$/)){return"utc"}if(h.match(/^[0-9]{14}\.[0-9]+Z$/)){return"gen"}return null};this.tohex=function(){var i=this.params;var h=null;if(typeof i=="string"){i={str:i}}if(i!=null&&i.str&&(i.type==null||i.type==undefined)){i.type=this.getType(i.str)}if(i!=null&&i.str){if(i.type=="utc"){h=new b(i.str)}if(i.type=="gen"){h=new g(i.str)}}else{if(this.type=="gen"){h=new g()}else{h=new b()}}if(h==null){throw new Error("wrong setting for Time")}this.TLV=h.tohex();return this.TLV};this.getEncodedHex=function(){return this.tohex()};if(f!=undefined){this.setByParam(f)}};KJUR.asn1.x509.Time_bak=function(f){KJUR.asn1.x509.Time_bak.superclass.constructor.call(this);var e=null,a=null,d=KJUR,c=d.asn1,b=c.DERUTCTime,g=c.DERGeneralizedTime;this.setTimeParams=function(h){this.timeParams=h};this.tohex=function(){var h=null;if(this.timeParams!=null){if(this.type=="utc"){h=new b(this.timeParams)}else{h=new g(this.timeParams)}}else{if(this.type=="utc"){h=new b()}else{h=new g()}}this.TLV=h.tohex();return this.TLV};this.getEncodedHex=function(){return this.tohex()};this.type="utc";if(f!==undefined){if(f.type!==undefined){this.type=f.type}else{if(f.str!==undefined){if(f.str.match(/^[0-9]{12}Z$/)){this.type="utc"}if(f.str.match(/^[0-9]{14}Z$/)){this.type="gen"}}}this.timeParams=f}};extendClass(KJUR.asn1.x509.Time,KJUR.asn1.ASN1Object);KJUR.asn1.x509.AlgorithmIdentifier=function(e){KJUR.asn1.x509.AlgorithmIdentifier.superclass.constructor.call(this);this.nameAlg=null;this.asn1Alg=null;this.asn1Params=null;this.paramEmpty=false;var b=KJUR,a=b.asn1,c=a.x509.AlgorithmIdentifier.PSSNAME2ASN1TLV;this.tohex=function(){if(this.nameAlg===null&&this.asn1Alg===null){throw new Error("algorithm not specified")}if(this.nameAlg!==null){var f=null;for(var h in c){if(h===this.nameAlg){f=c[h]}}if(f!==null){this.hTLV=f;return this.hTLV}}if(this.nameAlg!==null&&this.asn1Alg===null){this.asn1Alg=a.x509.OID.name2obj(this.nameAlg)}var g=[this.asn1Alg];if(this.asn1Params!==null){g.push(this.asn1Params)}var i=new a.DERSequence({array:g});this.hTLV=i.tohex();return this.hTLV};this.getEncodedHex=function(){return this.tohex()};if(e!==undefined){if(e.name!==undefined){this.nameAlg=e.name}if(e.asn1params!==undefined){this.asn1Params=e.asn1params}if(e.paramempty!==undefined){this.paramEmpty=e.paramempty}}if(this.asn1Params===null&&this.paramEmpty===false&&this.nameAlg!==null){if(this.nameAlg.name!==undefined){this.nameAlg=this.nameAlg.name}var d=this.nameAlg.toLowerCase();if(d.substr(-7,7)!=="withdsa"&&d.substr(-9,9)!=="withecdsa"){this.asn1Params=new a.DERNull()}}};extendClass(KJUR.asn1.x509.AlgorithmIdentifier,KJUR.asn1.ASN1Object);KJUR.asn1.x509.AlgorithmIdentifier.PSSNAME2ASN1TLV={SHAwithRSAandMGF1:"300d06092a864886f70d01010a3000",SHA256withRSAandMGF1:"303d06092a864886f70d01010a3030a00d300b0609608648016503040201a11a301806092a864886f70d010108300b0609608648016503040201a203020120",SHA384withRSAandMGF1:"303d06092a864886f70d01010a3030a00d300b0609608648016503040202a11a301806092a864886f70d010108300b0609608648016503040202a203020130",SHA512withRSAandMGF1:"303d06092a864886f70d01010a3030a00d300b0609608648016503040203a11a301806092a864886f70d010108300b0609608648016503040203a203020140"};KJUR.asn1.x509.GeneralName=function(f){KJUR.asn1.x509.GeneralName.superclass.constructor.call(this);var l={rfc822:"81",dns:"82",dn:"a4",uri:"86",ip:"87",otherName:"a0"},b=KJUR,h=b.asn1,d=h.x509,a=d.X500Name,g=d.OtherName,e=h.DERIA5String,i=h.DERPrintableString,k=h.DEROctetString,c=h.DERTaggedObject,m=h.ASN1Object,j=Error;this.params=null;this.setByParam=function(n){this.params=n};this.tohex=function(){var p=this.params;var z,w,q;var w=false;if(p.other!==undefined){z="a0",q=new g(p.other)}else{if(p.rfc822!==undefined){z="81";q=new e({str:p.rfc822})}else{if(p.dns!==undefined){z="82";q=new e({str:p.dns})}else{if(p.dn!==undefined){z="a4";w=true;if(typeof p.dn==="string"){q=new a({str:p.dn})}else{if(p.dn instanceof KJUR.asn1.x509.X500Name){q=p.dn}else{q=new a(p.dn)}}}else{if(p.ldapdn!==undefined){z="a4";w=true;q=new a({ldapstr:p.ldapdn})}else{if(p.certissuer!==undefined||p.certsubj!==undefined){z="a4";w=true;var n,o;var y=null;if(p.certsubj!==undefined){n=false;o=p.certsubj}else{n=true;o=p.certissuer}if(o.match(/^[0-9A-Fa-f]+$/)){y==o}if(o.indexOf("-----BEGIN ")!=-1){y=pemtohex(o)}if(y==null){throw new Error("certsubj/certissuer not cert")}var v=new X509();v.hex=y;var s;if(n){s=v.getIssuerHex()}else{s=v.getSubjectHex()}q=new m();q.hTLV=s}else{if(p.uri!==undefined){z="86";q=new e({str:p.uri})}else{if(p.ip!==undefined){z="87";var t=p.ip;var u;var r="malformed IP address";if(t.match(/^[0-9.]+[.][0-9.]+$/)){u=intarystrtohex("["+t.split(".").join(",")+"]");if(u.length!==8){throw new j(r)}}else{if(t.match(/^[0-9A-Fa-f:]+:[0-9A-Fa-f:]+$/)){u=ipv6tohex(t)}else{if(t.match(/^([0-9A-Fa-f][0-9A-Fa-f]){1,}$/)){u=t}else{throw new j(r)}}}q=new k({hex:u})}else{throw new j("improper params")}}}}}}}}var A=new c({tag:z,explicit:w,obj:q});return A.tohex()};this.getEncodedHex=function(){return this.tohex()};if(f!==undefined){this.setByParam(f)}};extendClass(KJUR.asn1.x509.GeneralName,KJUR.asn1.ASN1Object);KJUR.asn1.x509.GeneralNames=function(d){KJUR.asn1.x509.GeneralNames.superclass.constructor.call(this);var a=null,c=KJUR,b=c.asn1;this.setByParamArray=function(g){for(var e=0;e0){n.push(new c({tag:"a3",obj:new j(q.ext)}))}var o=new KJUR.asn1.DERSequence({array:n});return o.tohex()};this.getEncodedHex=function(){return this.tohex()};if(f!==undefined){this.setByParam(f)}};extendClass(KJUR.asn1.x509.TBSCertificate,KJUR.asn1.ASN1Object);KJUR.asn1.x509.Extensions=function(d){KJUR.asn1.x509.Extensions.superclass.constructor.call(this);var c=KJUR,b=c.asn1,a=b.DERSequence,e=b.x509;this.aParam=[];this.setByParam=function(f){this.aParam=f};this.tohex=function(){var f=[];for(var h=0;h-1){i.push(new f({"int":this.pathLen}))}var h=new b({array:i});this.asn1ExtnValue=h;return this.asn1ExtnValue.tohex()};this.oid="2.5.29.19";this.cA=false;this.pathLen=-1;if(g!==undefined){if(g.cA!==undefined){this.cA=g.cA}if(g.pathLen!==undefined){this.pathLen=g.pathLen}}};extendClass(KJUR.asn1.x509.BasicConstraints,KJUR.asn1.x509.Extension);KJUR.asn1.x509.CRLDistributionPoints=function(d){KJUR.asn1.x509.CRLDistributionPoints.superclass.constructor.call(this,d);var b=KJUR,a=b.asn1,c=a.x509;this.getExtnValueHex=function(){return this.asn1ExtnValue.tohex()};this.setByDPArray=function(e){var f=[];for(var g=0;g0){f.push(new b({array:j}))}}var g=new b({array:f});return g.tohex()};this.getEncodedHex=function(){return this.tohex()};if(d!==undefined){this.params=d}};extendClass(KJUR.asn1.x509.PolicyInformation,KJUR.asn1.ASN1Object);KJUR.asn1.x509.PolicyQualifierInfo=function(e){KJUR.asn1.x509.PolicyQualifierInfo.superclass.constructor.call(this,e);var c=KJUR.asn1,b=c.DERSequence,d=c.DERIA5String,f=c.DERObjectIdentifier,a=c.x509.UserNotice;this.params=null;this.tohex=function(){if(this.params.cps!==undefined){var g=new b({array:[new f({oid:"1.3.6.1.5.5.7.2.1"}),new d({str:this.params.cps})]});return g.tohex()}if(this.params.unotice!=undefined){var g=new b({array:[new f({oid:"1.3.6.1.5.5.7.2.2"}),new a(this.params.unotice)]});return g.tohex()}};this.getEncodedHex=function(){return this.tohex()};if(e!==undefined){this.params=e}};extendClass(KJUR.asn1.x509.PolicyQualifierInfo,KJUR.asn1.ASN1Object);KJUR.asn1.x509.UserNotice=function(e){KJUR.asn1.x509.UserNotice.superclass.constructor.call(this,e);var a=KJUR.asn1.DERSequence,d=KJUR.asn1.DERInteger,c=KJUR.asn1.x509.DisplayText,b=KJUR.asn1.x509.NoticeReference;this.params=null;this.tohex=function(){var f=[];if(this.params.noticeref!==undefined){f.push(new b(this.params.noticeref))}if(this.params.exptext!==undefined){f.push(new c(this.params.exptext))}var g=new a({array:f});return g.tohex()};this.getEncodedHex=function(){return this.tohex()};if(e!==undefined){this.params=e}};extendClass(KJUR.asn1.x509.UserNotice,KJUR.asn1.ASN1Object);KJUR.asn1.x509.NoticeReference=function(d){KJUR.asn1.x509.NoticeReference.superclass.constructor.call(this,d);var a=KJUR.asn1.DERSequence,c=KJUR.asn1.DERInteger,b=KJUR.asn1.x509.DisplayText;this.params=null;this.tohex=function(){var f=[];if(this.params.org!==undefined){f.push(new b(this.params.org))}if(this.params.noticenum!==undefined){var h=[];var e=this.params.noticenum;for(var j=0;j0){for(var g=0;g0;f++){var h=c.shift();if(e===true){var d=b.pop();var j=(d+","+h).replace(/\\,/g,",");b.push(j);e=false}else{b.push(h)}if(h.substr(-1,1)==="\\"){e=true}}b=b.map(function(a){return a.replace("/","\\/")});b.reverse();return"/"+b.join("/")};KJUR.asn1.x509.X500Name.ldapToOneline=function(a){return KJUR.asn1.x509.X500Name.ldapToCompat(a)};KJUR.asn1.x509.RDN=function(b){KJUR.asn1.x509.RDN.superclass.constructor.call(this);this.asn1Array=[];this.paramArray=[];this.sRule="utf8";var a=KJUR.asn1.x509.AttributeTypeAndValue;this.setByParam=function(c){if(c.rule!==undefined){this.sRule=c.rule}if(c.str!==undefined){this.addByMultiValuedString(c.str)}if(c.array!==undefined){this.paramArray=c.array}};this.addByString=function(c){this.asn1Array.push(new KJUR.asn1.x509.AttributeTypeAndValue({str:c,rule:this.sRule}))};this.addByMultiValuedString=function(e){var c=KJUR.asn1.x509.RDN.parseString(e);for(var d=0;d0){for(var d=0;d0;g++){var k=j.shift();if(h===true){var f=c.pop();var d=(f+"+"+k).replace(/\\\+/g,"+");c.push(d);h=false}else{c.push(k)}if(k.substr(-1,1)==="\\"){h=true}}var l=false;var b=[];for(var g=0;c.length>0;g++){var k=c.shift();if(l===true){var e=b.pop();if(k.match(/"$/)){var d=(e+"+"+k).replace(/^([^=]+)="(.*)"$/,"$1=$2");b.push(d);l=false}else{b.push(e+"+"+k)}}else{b.push(k)}if(k.match(/^[^=]+="/)){l=true}}return b};KJUR.asn1.x509.AttributeTypeAndValue=function(c){KJUR.asn1.x509.AttributeTypeAndValue.superclass.constructor.call(this);this.sRule="utf8";this.sType=null;this.sValue=null;this.dsType=null;var a=KJUR,g=a.asn1,d=g.DERSequence,l=g.DERUTF8String,i=g.DERPrintableString,h=g.DERTeletexString,b=g.DERIA5String,e=g.DERVisibleString,k=g.DERBMPString,f=a.lang.String.isMail,j=a.lang.String.isPrintable;this.setByParam=function(o){if(o.rule!==undefined){this.sRule=o.rule}if(o.ds!==undefined){this.dsType=o.ds}if(o.value===undefined&&o.str!==undefined){var n=o.str;var m=n.match(/^([^=]+)=(.+)$/);if(m){this.sType=m[1];this.sValue=m[2]}else{throw new Error("malformed attrTypeAndValueStr: "+attrTypeAndValueStr)}}else{this.sType=o.type;this.sValue=o.value}};this.setByString=function(n,o){if(o!==undefined){this.sRule=o}var m=n.match(/^([^=]+)=(.+)$/);if(m){this.setByAttrTypeAndValueStr(m[1],m[2])}else{throw new Error("malformed attrTypeAndValueStr: "+attrTypeAndValueStr)}};this._getDsType=function(){var o=this.sType;var n=this.sValue;var m=this.sRule;if(m==="prn"){if(o=="CN"&&f(n)){return"ia5"}if(j(n)){return"prn"}return"utf8"}else{if(m==="utf8"){if(o=="CN"&&f(n)){return"ia5"}if(o=="C"){return"prn"}return"utf8"}}return"utf8"};this.setByAttrTypeAndValueStr=function(o,n,m){if(m!==undefined){this.sRule=m}this.sType=o;this.sValue=n};this.getValueObj=function(n,m){if(n=="utf8"){return new l({str:m})}if(n=="prn"){return new i({str:m})}if(n=="tel"){return new h({str:m})}if(n=="ia5"){return new b({str:m})}if(n=="vis"){return new e({str:m})}if(n=="bmp"){return new k({str:m})}throw new Error("unsupported directory string type: type="+n+" value="+m)};this.tohex=function(){if(this.dsType==null){this.dsType=this._getDsType()}var n=KJUR.asn1.x509.OID.atype2obj(this.sType);var m=this.getValueObj(this.dsType,this.sValue);var p=new d({array:[n,m]});this.TLV=p.tohex();return this.TLV};this.getEncodedHex=function(){return this.tohex()};if(c!==undefined){this.setByParam(c)}};extendClass(KJUR.asn1.x509.AttributeTypeAndValue,KJUR.asn1.ASN1Object);KJUR.asn1.x509.SubjectPublicKeyInfo=function(f){KJUR.asn1.x509.SubjectPublicKeyInfo.superclass.constructor.call(this);var l=null,k=null,a=KJUR,j=a.asn1,i=j.DERInteger,b=j.DERBitString,m=j.DERObjectIdentifier,e=j.DERSequence,h=j.ASN1Util.newObject,d=j.x509,o=d.AlgorithmIdentifier,g=a.crypto,n=g.ECDSA,c=g.DSA;this.getASN1Object=function(){if(this.asn1AlgId==null||this.asn1SubjPKey==null){throw"algId and/or subjPubKey not set"}var p=new e({array:[this.asn1AlgId,this.asn1SubjPKey]});return p};this.tohex=function(){var p=this.getASN1Object();this.hTLV=p.tohex();return this.hTLV};this.getEncodedHex=function(){return this.tohex()};this.setPubKey=function(q){try{if(q instanceof RSAKey){var u=h({seq:[{"int":{bigint:q.n}},{"int":{"int":q.e}}]});var s=u.tohex();this.asn1AlgId=new o({name:"rsaEncryption"});this.asn1SubjPKey=new b({hex:"00"+s})}}catch(p){}try{if(q instanceof KJUR.crypto.ECDSA){var r=new m({name:q.curveName});this.asn1AlgId=new o({name:"ecPublicKey",asn1params:r});this.asn1SubjPKey=new b({hex:"00"+q.pubKeyHex})}}catch(p){}try{if(q instanceof KJUR.crypto.DSA){var r=new h({seq:[{"int":{bigint:q.p}},{"int":{bigint:q.q}},{"int":{bigint:q.g}}]});this.asn1AlgId=new o({name:"dsa",asn1params:r});var t=new i({bigint:q.y});this.asn1SubjPKey=new b({hex:"00"+t.tohex()})}}catch(p){}};if(f!==undefined){this.setPubKey(f)}};extendClass(KJUR.asn1.x509.SubjectPublicKeyInfo,KJUR.asn1.ASN1Object);KJUR.asn1.x509.Time=function(f){KJUR.asn1.x509.Time.superclass.constructor.call(this);var e=null,a=null,d=KJUR,c=d.asn1,b=c.DERUTCTime,g=c.DERGeneralizedTime;this.params=null;this.type=null;this.setTimeParams=function(h){this.timeParams=h};this.setByParam=function(h){this.params=h};this.getType=function(h){if(h.match(/^[0-9]{12}Z$/)){return"utc"}if(h.match(/^[0-9]{14}Z$/)){return"gen"}if(h.match(/^[0-9]{12}\.[0-9]+Z$/)){return"utc"}if(h.match(/^[0-9]{14}\.[0-9]+Z$/)){return"gen"}return null};this.tohex=function(){var i=this.params;var h=null;if(typeof i=="string"){i={str:i}}if(i!=null&&i.str&&(i.type==null||i.type==undefined)){i.type=this.getType(i.str)}if(i!=null&&i.str){if(i.type=="utc"){h=new b(i.str)}if(i.type=="gen"){h=new g(i.str)}}else{if(this.type=="gen"){h=new g()}else{h=new b()}}if(h==null){throw new Error("wrong setting for Time")}this.TLV=h.tohex();return this.TLV};this.getEncodedHex=function(){return this.tohex()};if(f!=undefined){this.setByParam(f)}};KJUR.asn1.x509.Time_bak=function(f){KJUR.asn1.x509.Time_bak.superclass.constructor.call(this);var e=null,a=null,d=KJUR,c=d.asn1,b=c.DERUTCTime,g=c.DERGeneralizedTime;this.setTimeParams=function(h){this.timeParams=h};this.tohex=function(){var h=null;if(this.timeParams!=null){if(this.type=="utc"){h=new b(this.timeParams)}else{h=new g(this.timeParams)}}else{if(this.type=="utc"){h=new b()}else{h=new g()}}this.TLV=h.tohex();return this.TLV};this.getEncodedHex=function(){return this.tohex()};this.type="utc";if(f!==undefined){if(f.type!==undefined){this.type=f.type}else{if(f.str!==undefined){if(f.str.match(/^[0-9]{12}Z$/)){this.type="utc"}if(f.str.match(/^[0-9]{14}Z$/)){this.type="gen"}}}this.timeParams=f}};extendClass(KJUR.asn1.x509.Time,KJUR.asn1.ASN1Object);KJUR.asn1.x509.AlgorithmIdentifier=function(e){KJUR.asn1.x509.AlgorithmIdentifier.superclass.constructor.call(this);this.nameAlg=null;this.asn1Alg=null;this.asn1Params=null;this.paramEmpty=false;var b=KJUR,a=b.asn1,c=a.x509.AlgorithmIdentifier.PSSNAME2ASN1TLV;this.tohex=function(){if(this.nameAlg===null&&this.asn1Alg===null){throw new Error("algorithm not specified")}if(this.nameAlg!==null){var f=null;for(var h in c){if(h===this.nameAlg){f=c[h]}}if(f!==null){this.hTLV=f;return this.hTLV}}if(this.nameAlg!==null&&this.asn1Alg===null){this.asn1Alg=a.x509.OID.name2obj(this.nameAlg)}var g=[this.asn1Alg];if(this.asn1Params!==null){g.push(this.asn1Params)}var i=new a.DERSequence({array:g});this.hTLV=i.tohex();return this.hTLV};this.getEncodedHex=function(){return this.tohex()};if(e!==undefined){if(e.name!==undefined){this.nameAlg=e.name}if(e.asn1params!==undefined){this.asn1Params=e.asn1params}if(e.paramempty!==undefined){this.paramEmpty=e.paramempty}}if(this.asn1Params===null&&this.paramEmpty===false&&this.nameAlg!==null){if(this.nameAlg.name!==undefined){this.nameAlg=this.nameAlg.name}var d=this.nameAlg.toLowerCase();if(d.substr(-7,7)!=="withdsa"&&d.substr(-9,9)!=="withecdsa"){this.asn1Params=new a.DERNull()}}};extendClass(KJUR.asn1.x509.AlgorithmIdentifier,KJUR.asn1.ASN1Object);KJUR.asn1.x509.AlgorithmIdentifier.PSSNAME2ASN1TLV={SHAwithRSAandMGF1:"300d06092a864886f70d01010a3000",SHA256withRSAandMGF1:"303d06092a864886f70d01010a3030a00d300b0609608648016503040201a11a301806092a864886f70d010108300b0609608648016503040201a203020120",SHA384withRSAandMGF1:"303d06092a864886f70d01010a3030a00d300b0609608648016503040202a11a301806092a864886f70d010108300b0609608648016503040202a203020130",SHA512withRSAandMGF1:"303d06092a864886f70d01010a3030a00d300b0609608648016503040203a11a301806092a864886f70d010108300b0609608648016503040203a203020140"};KJUR.asn1.x509.GeneralName=function(f){KJUR.asn1.x509.GeneralName.superclass.constructor.call(this);var l={rfc822:"81",dns:"82",dn:"a4",uri:"86",ip:"87",otherName:"a0"},b=KJUR,h=b.asn1,d=h.x509,a=d.X500Name,g=d.OtherName,e=h.DERIA5String,i=h.DERPrintableString,k=h.DEROctetString,c=h.DERTaggedObject,m=h.ASN1Object,j=Error;this.params=null;this.setByParam=function(n){this.params=n};this.tohex=function(){var p=this.params;var A,y,q;var y=false;if(p.other!==undefined){A="a0",q=new g(p.other)}else{if(p.rfc822!==undefined){A="81";q=new e({str:p.rfc822})}else{if(p.dns!==undefined){A="82";q=new e({str:p.dns})}else{if(p.dn!==undefined){A="a4";y=true;if(typeof p.dn==="string"){q=new a({str:p.dn})}else{if(p.dn instanceof KJUR.asn1.x509.X500Name){q=p.dn}else{q=new a(p.dn)}}}else{if(p.ldapdn!==undefined){A="a4";y=true;q=new a({ldapstr:p.ldapdn})}else{if(p.certissuer!==undefined||p.certsubj!==undefined){A="a4";y=true;var n,o;var z=null;if(p.certsubj!==undefined){n=false;o=p.certsubj}else{n=true;o=p.certissuer}if(o.match(/^[0-9A-Fa-f]+$/)){z==o}if(o.indexOf("-----BEGIN ")!=-1){z=pemtohex(o)}if(z==null){throw new Error("certsubj/certissuer not cert")}var w=new X509();w.hex=z;var s;if(n){s=w.getIssuerHex()}else{s=w.getSubjectHex()}q=new m();q.hTLV=s}else{if(p.uri!==undefined){A="86";q=new e({str:p.uri})}else{if(p.ip!==undefined){A="87";var v;var t=p.ip;try{if(t.match(/^[0-9a-f]+$/)){var r=t.length;if(r==8||r==16||r==32||r==64){v=t}else{throw"err"}}else{v=iptohex(t)}}catch(u){throw new j("malformed IP address: "+p.ip+":"+u.message)}q=new k({hex:v})}else{throw new j("improper params")}}}}}}}}var B=new c({tag:A,explicit:y,obj:q});return B.tohex()};this.getEncodedHex=function(){return this.tohex()};if(f!==undefined){this.setByParam(f)}};extendClass(KJUR.asn1.x509.GeneralName,KJUR.asn1.ASN1Object);KJUR.asn1.x509.GeneralNames=function(d){KJUR.asn1.x509.GeneralNames.superclass.constructor.call(this);var a=null,c=KJUR,b=c.asn1;this.setByParamArray=function(g){for(var e=0;e0){var m=b(n.valhex,q[0]);var p=j(m,0);var t=[];for(var o=0;o1){var r=b(n.valhex,q[1]);n.polhex=r}delete n.valhex};this.setSignaturePolicyIdentifier=function(s){var q=j(s.valhex,0);if(q.length>0){var r=l.getOID(s.valhex,q[0]);s.oid=r}if(q.length>1){var m=new a();var t=j(s.valhex,q[1]);var p=b(s.valhex,t[0]);var o=m.getAlgorithmIdentifierName(p);s.alg=o;var n=i(s.valhex,t[1]);s.hash=n}delete s.valhex};this.setSigningCertificateV2=function(o){var s=j(o.valhex,0);if(s.length>0){var n=b(o.valhex,s[0]);var r=j(n,0);var u=[];for(var q=0;q1){var t=b(o.valhex,s[1]);o.polhex=t}delete o.valhex};this.getESSCertID=function(o){var p={};var n=j(o,0);if(n.length>0){var q=i(o,n[0]);p.hash=q}if(n.length>1){var m=b(o,n[1]);var r=this.getIssuerSerial(m);if(r.serial!=undefined){p.serial=r.serial}if(r.issuer!=undefined){p.issuer=r.issuer}}return p};this.getESSCertIDv2=function(q){var s={};var p=j(q,0);if(p.length<1||3r+1){var m=b(q,p[r+1]);var t=this.getIssuerSerial(m);s.issuer=t.issuer;s.serial=t.serial}return s};this.getIssuerSerial=function(q){var r={};var n=j(q,0);var m=b(q,n[0]);var p=h.getGeneralNames(m);var o=p[0].dn;r.issuer=o;var s=i(q,n[1]);r.serial={hex:s};return r};this.getCertificateSet=function(p){var n=j(p,0);var m=[];for(var o=0;o1){var o=this.getPKIStatusInfo(b(n,l[0]));var m=b(n,l[1]);var p=this.getToken(m);p.statusinfo=o;return p}}};this.getToken=function(m){var l=new KJUR.asn1.cms.CMSParser;var n=l.getCMSSignedData(m);this.setTSTInfo(n);return n};this.setTSTInfo=function(l){var o=l.econtent;if(o.type=="tstinfo"){var n=o.content.hex;var m=this.getTSTInfo(n);o.content=m}};this.getTSTInfo=function(r){var x={};var s=i(r,0);var p=g(r,s[1]);x.policy=hextooid(p);var o=b(r,s[2]);x.messageImprint=this.getMessageImprint(o);var u=g(r,s[3]);x.serial={hex:u};var y=g(r,s[4]);x.genTime={str:hextoutf8(y)};var q=0;if(s.length>5&&r.substr(s[5],2)=="30"){var v=b(r,s[5]);x.accuracy=this.getAccuracy(v);q++}if(s.length>5+q&&r.substr(s[5+q],2)=="01"){var z=g(r,s[5+q]);if(z=="ff"){x.ordering=true}q++}if(s.length>5+q&&r.substr(s[5+q],2)=="02"){var n=g(r,s[5+q]);x.nonce={hex:n};q++}if(s.length>5+q&&r.substr(s[5+q],2)=="a0"){var m=b(r,s[5+q]);m="30"+m.substr(2);pGeneralNames=f.getGeneralNames(m);var t=pGeneralNames[0].dn;x.tsa=t;q++}if(s.length>5+q&&r.substr(s[5+q],2)=="a1"){var l=b(r,s[5+q]);l="30"+l.substr(2);var w=f.getExtParamArray(l);x.ext=w;q++}return x};this.getAccuracy=function(q){var r={};var o=i(q,0);for(var p=0;p1&&o.substr(r[1],2)=="30"){var m=b(o,r[1]);t.statusstr=this.getPKIFreeText(m);n++}if(r.length>n&&o.substr(r[1+n],2)=="03"){var q=b(o,r[1+n]);t.failinfo=this.getPKIFailureInfo(q)}return t};this.getPKIFreeText=function(n){var o=[];var l=i(n,0);for(var m=0;m>6);var i=128|(a&63);return hextoutf8(j.toString(16)+i.toString(16))}var j=224|((h&240)>>4);var i=128|((h&15)<<2)|((a&192)>>6);var g=128|(a&63);return hextoutf8(j.toString(16)+i.toString(16)+g.toString(16))}var c=d.match(/.{4}/g);var b=c.map(e);return b.join("")}function encodeURIComponentAll(a){var d=encodeURIComponent(a);var b="";for(var c=0;c"7"){return"00"+a}return a}function intarystrtohex(b){b=b.replace(/^\s*\[\s*/,"");b=b.replace(/\s*\]\s*$/,"");b=b.replace(/\s*/g,"");try{var c=b.split(/,/).map(function(g,e,h){var f=parseInt(g);if(f<0||255a.length){d=a.length}for(var b=0;b0){o=o+"."+k.join(".")}return o}catch(j){return null}}var strpad=function(c,b,a){if(a==undefined){a="0"}if(c.length>=b){return c}return new Array(b-c.length+1).join(a)+c};function bitstrtoint(e){if(e.length%2!=0){return -1}e=e.toLowerCase();if(e.match(/^[0-9a-f]+$/)==null){return -1}try{var a=e.substr(0,2);if(a=="00"){return parseInt(e.substr(2),16)}var b=parseInt(a,16);if(b>7){return -1}var g=e.substr(2);var d=parseInt(g,16).toString(2);if(d=="0"){d="00000000"}d=d.slice(0,0-b);var f=parseInt(d,2);if(f==NaN){return -1}return f}catch(c){return -1}}function inttobitstr(e){if(typeof e!="number"){return null}if(e<0){return null}var c=Number(e).toString(2);var b=8-c.length%8;if(b==8){b=0}c=c+strpad("",b,"0");var d=parseInt(c,2).toString(16);if(d.length%2==1){d="0"+d}var a="0"+b;return a+d}function bitstrtobinstr(a){var b=bitstrtoint(a);if(b==-1){return null}return b.toString(2)}function binstrtobitstr(b){if(typeof b!="string"){return null}if(b.match(/^[01]+$/)==null){return null}try{var c=parseInt(b,2);return inttobitstr(c)}catch(a){return null}}function extendClass(c,a){var b=function(){};b.prototype=a.prototype;c.prototype=new b();c.prototype.constructor=c;c.superclass=a.prototype;if(a.prototype.constructor==Object.prototype.constructor){a.prototype.constructor=a}}; +var KJUR;if(typeof KJUR=="undefined"||!KJUR){KJUR={}}if(typeof KJUR.lang=="undefined"||!KJUR.lang){KJUR.lang={}}KJUR.lang.String=function(){};function Base64x(){}function stoBA(d){var b=new Array();for(var c=0;c>6);var i=128|(a&63);return hextoutf8(j.toString(16)+i.toString(16))}var j=224|((h&240)>>4);var i=128|((h&15)<<2)|((a&192)>>6);var g=128|(a&63);return hextoutf8(j.toString(16)+i.toString(16)+g.toString(16))}var c=d.match(/.{4}/g);var b=c.map(e);return b.join("")}function encodeURIComponentAll(a){var d=encodeURIComponent(a);var b="";for(var c=0;c"7"){return"00"+a}return a}function intarystrtohex(b){b=b.replace(/^\s*\[\s*/,"");b=b.replace(/\s*\]\s*$/,"");b=b.replace(/\s*/g,"");try{var c=b.split(/,/).map(function(g,e,h){var f=parseInt(g);if(f<0||255a.length){d=a.length}for(var b=0;b0){o=o+"."+k.join(".")}return o}catch(j){return null}}var strpad=function(c,b,a){if(a==undefined){a="0"}if(c.length>=b){return c}return new Array(b-c.length+1).join(a)+c};function bitstrtoint(e){if(e.length%2!=0){return -1}e=e.toLowerCase();if(e.match(/^[0-9a-f]+$/)==null){return -1}try{var a=e.substr(0,2);if(a=="00"){return parseInt(e.substr(2),16)}var b=parseInt(a,16);if(b>7){return -1}var g=e.substr(2);var d=parseInt(g,16).toString(2);if(d=="0"){d="00000000"}d=d.slice(0,0-b);var f=parseInt(d,2);if(f==NaN){return -1}return f}catch(c){return -1}}function inttobitstr(e){if(typeof e!="number"){return null}if(e<0){return null}var c=Number(e).toString(2);var b=8-c.length%8;if(b==8){b=0}c=c+strpad("",b,"0");var d=parseInt(c,2).toString(16);if(d.length%2==1){d="0"+d}var a="0"+b;return a+d}function bitstrtobinstr(a){var b=bitstrtoint(a);if(b==-1){return null}return b.toString(2)}function binstrtobitstr(b){if(typeof b!="string"){return null}if(b.match(/^[01]+$/)==null){return null}try{var c=parseInt(b,2);return inttobitstr(c)}catch(a){return null}}function extendClass(c,a){var b=function(){};b.prototype=a.prototype;c.prototype=new b();c.prototype.constructor=c;c.superclass=a.prototype;if(a.prototype.constructor==Object.prototype.constructor){a.prototype.constructor=a}}; if(typeof KJUR=="undefined"||!KJUR){KJUR={}}if(typeof KJUR.crypto=="undefined"||!KJUR.crypto){KJUR.crypto={}}KJUR.crypto.Util=new function(){this.DIGESTINFOHEAD={sha1:"3021300906052b0e03021a05000414",sha224:"302d300d06096086480165030402040500041c",sha256:"3031300d060960864801650304020105000420",sha384:"3041300d060960864801650304020205000430",sha512:"3051300d060960864801650304020305000440",md2:"3020300c06082a864886f70d020205000410",md5:"3020300c06082a864886f70d020505000410",ripemd160:"3021300906052b2403020105000414",};this.DEFAULTPROVIDER={md5:"cryptojs",sha1:"cryptojs",sha224:"cryptojs",sha256:"cryptojs",sha384:"cryptojs",sha512:"cryptojs",ripemd160:"cryptojs",hmacmd5:"cryptojs",hmacsha1:"cryptojs",hmacsha224:"cryptojs",hmacsha256:"cryptojs",hmacsha384:"cryptojs",hmacsha512:"cryptojs",hmacripemd160:"cryptojs",MD5withRSA:"cryptojs/jsrsa",SHA1withRSA:"cryptojs/jsrsa",SHA224withRSA:"cryptojs/jsrsa",SHA256withRSA:"cryptojs/jsrsa",SHA384withRSA:"cryptojs/jsrsa",SHA512withRSA:"cryptojs/jsrsa",RIPEMD160withRSA:"cryptojs/jsrsa",MD5withECDSA:"cryptojs/jsrsa",SHA1withECDSA:"cryptojs/jsrsa",SHA224withECDSA:"cryptojs/jsrsa",SHA256withECDSA:"cryptojs/jsrsa",SHA384withECDSA:"cryptojs/jsrsa",SHA512withECDSA:"cryptojs/jsrsa",RIPEMD160withECDSA:"cryptojs/jsrsa",SHA1withDSA:"cryptojs/jsrsa",SHA224withDSA:"cryptojs/jsrsa",SHA256withDSA:"cryptojs/jsrsa",MD5withRSAandMGF1:"cryptojs/jsrsa",SHAwithRSAandMGF1:"cryptojs/jsrsa",SHA1withRSAandMGF1:"cryptojs/jsrsa",SHA224withRSAandMGF1:"cryptojs/jsrsa",SHA256withRSAandMGF1:"cryptojs/jsrsa",SHA384withRSAandMGF1:"cryptojs/jsrsa",SHA512withRSAandMGF1:"cryptojs/jsrsa",RIPEMD160withRSAandMGF1:"cryptojs/jsrsa",};this.CRYPTOJSMESSAGEDIGESTNAME={md5:CryptoJS.algo.MD5,sha1:CryptoJS.algo.SHA1,sha224:CryptoJS.algo.SHA224,sha256:CryptoJS.algo.SHA256,sha384:CryptoJS.algo.SHA384,sha512:CryptoJS.algo.SHA512,ripemd160:CryptoJS.algo.RIPEMD160};this.getDigestInfoHex=function(a,b){if(typeof this.DIGESTINFOHEAD[b]=="undefined"){throw"alg not supported in Util.DIGESTINFOHEAD: "+b}return this.DIGESTINFOHEAD[b]+a};this.getPaddedDigestInfoHex=function(h,a,j){var c=this.getDigestInfoHex(h,a);var d=j/4;if(c.length+22>d){throw"key is too short for SigAlg: keylen="+j+","+a}var b="0001";var k="00"+c;var g="";var l=d-b.length-k.length;for(var f=0;f=0;--u){v=v.twice2D();v.z=f.ONE;if(t.testBit(u)){if(s.testBit(u)){v=v.add2D(y)}else{v=v.add2D(x)}}else{if(s.testBit(u)){v=v.add2D(w)}}}return v}this.getBigRandom=function(r){return new f(r.bitLength(),a).mod(r.subtract(f.ONE)).add(f.ONE)};this.setNamedCurve=function(r){this.ecparams=c.getByName(r);this.prvKeyHex=null;this.pubKeyHex=null;this.curveName=r};this.setPrivateKeyHex=function(r){this.isPrivate=true;this.prvKeyHex=r};this.setPublicKeyHex=function(r){this.isPublic=true;this.pubKeyHex=r};this.getPublicKeyXYHex=function(){var t=this.pubKeyHex;if(t.substr(0,2)!=="04"){throw"this method supports uncompressed format(04) only"}var s=this.ecparams.keycharlen;if(t.length!==2+s*2){throw"malformed public key hex length"}var r={};r.x=t.substr(2,s);r.y=t.substr(2+s);return r};this.getShortNISTPCurveName=function(){var r=this.curveName;if(r==="secp256r1"||r==="NIST P-256"||r==="P-256"||r==="prime256v1"){return"P-256"}if(r==="secp384r1"||r==="NIST P-384"||r==="P-384"){return"P-384"}if(r==="secp521r1"||r==="NIST P-521"||r==="P-521"){return"P-521"}return null};this.generateKeyPairHex=function(){var s=this.ecparams.n;var u=this.getBigRandom(s);var r=this.ecparams.keycharlen;var t=("0000000000"+u.toString(16)).slice(-r);this.setPrivateKeyHex(t);var v=this.generatePublicKeyHex();return{ecprvhex:t,ecpubhex:v}};this.generatePublicKeyHex=function(){var u=new f(this.prvKeyHex,16);var w=this.ecparams.G.multiply(u);var t=w.getX().toBigInteger();var s=w.getY().toBigInteger();var r=this.ecparams.keycharlen;var y=("0000000000"+t.toString(16)).slice(-r);var v=("0000000000"+s.toString(16)).slice(-r);var x="04"+y+v;this.setPublicKeyHex(x);return x};this.signWithMessageHash=function(r){return this.signHex(r,this.prvKeyHex)};this.signHex=function(x,u){var A=new f(u,16);var v=this.ecparams.n;var z=new f(x.substring(0,this.ecparams.keycharlen),16);do{var w=this.getBigRandom(v);var B=this.ecparams.G;var y=B.multiply(w);var t=y.getX().toBigInteger().mod(v)}while(t.compareTo(f.ZERO)<=0);var C=w.modInverse(v).multiply(z.add(A.multiply(t))).mod(v);return m.biRSSigToASN1Sig(t,C)};this.sign=function(w,B){var z=B;var u=this.ecparams.n;var y=f.fromByteArrayUnsigned(w);do{var v=this.getBigRandom(u);var A=this.ecparams.G;var x=A.multiply(v);var t=x.getX().toBigInteger().mod(u)}while(t.compareTo(BigInteger.ZERO)<=0);var C=v.modInverse(u).multiply(y.add(z.multiply(t))).mod(u);return this.serializeSig(t,C)};this.verifyWithMessageHash=function(s,r){return this.verifyHex(s,r,this.pubKeyHex)};this.verifyHex=function(v,y,u){try{var t,B;var w=m.parseSigHex(y);t=w.r;B=w.s;var x=h.decodeFromHex(this.ecparams.curve,u);var z=new f(v.substring(0,this.ecparams.keycharlen),16);return this.verifyRaw(z,t,B,x)}catch(A){return false}};this.verify=function(z,A,u){var w,t;if(Bitcoin.Util.isArray(A)){var y=this.parseSig(A);w=y.r;t=y.s}else{if("object"===typeof A&&A.r&&A.s){w=A.r;t=A.s}else{throw"Invalid value for signature"}}var v;if(u instanceof ECPointFp){v=u}else{if(Bitcoin.Util.isArray(u)){v=h.decodeFrom(this.ecparams.curve,u)}else{throw"Invalid format for pubkey value, must be byte array or ECPointFp"}}var x=f.fromByteArrayUnsigned(z);return this.verifyRaw(x,w,t,v)};this.verifyRaw=function(z,t,E,y){var x=this.ecparams.n;var D=this.ecparams.G;if(t.compareTo(f.ONE)<0||t.compareTo(x)>=0){return false}if(E.compareTo(f.ONE)<0||E.compareTo(x)>=0){return false}var A=E.modInverse(x);var w=z.multiply(A).mod(x);var u=t.multiply(A).mod(x);var B=D.multiply(w).add(y.multiply(u));var C=B.getX().toBigInteger().mod(x);return C.equals(t)};this.serializeSig=function(v,u){var w=v.toByteArraySigned();var t=u.toByteArraySigned();var x=[];x.push(2);x.push(w.length);x=x.concat(w);x.push(2);x.push(t.length);x=x.concat(t);x.unshift(x.length);x.unshift(48);return x};this.parseSig=function(y){var x;if(y[0]!=48){throw new Error("Signature not a valid DERSequence")}x=2;if(y[x]!=2){throw new Error("First element in signature must be a DERInteger")}var w=y.slice(x+2,x+2+y[x+1]);x+=2+y[x+1];if(y[x]!=2){throw new Error("Second element in signature must be a DERInteger")}var t=y.slice(x+2,x+2+y[x+1]);x+=2+y[x+1];var v=f.fromByteArrayUnsigned(w);var u=f.fromByteArrayUnsigned(t);return{r:v,s:u}};this.parseSigCompact=function(w){if(w.length!==65){throw"Signature has the wrong length"}var t=w[0]-27;if(t<0||t>7){throw"Invalid signature type"}var x=this.ecparams.n;var v=f.fromByteArrayUnsigned(w.slice(1,33)).mod(x);var u=f.fromByteArrayUnsigned(w.slice(33,65)).mod(x);return{r:v,s:u,i:t}};this.readPKCS5PrvKeyHex=function(u){if(k(u)===false){throw new Error("not ASN.1 hex string")}var r,t,v;try{r=n(u,0,["[0]",0],"06");t=n(u,0,[1],"04");try{v=n(u,0,["[1]",0],"03")}catch(s){}}catch(s){throw new Error("malformed PKCS#1/5 plain ECC private key")}this.curveName=d(r);if(this.curveName===undefined){throw"unsupported curve name"}this.setNamedCurve(this.curveName);this.setPublicKeyHex(v);this.setPrivateKeyHex(t);this.isPublic=false};this.readPKCS8PrvKeyHex=function(v){if(k(v)===false){throw new j("not ASN.1 hex string")}var t,r,u,w;try{t=n(v,0,[1,0],"06");r=n(v,0,[1,1],"06");u=n(v,0,[2,0,1],"04");try{w=n(v,0,[2,0,"[1]",0],"03")}catch(s){}}catch(s){throw new j("malformed PKCS#8 plain ECC private key")}this.curveName=d(r);if(this.curveName===undefined){throw new j("unsupported curve name")}this.setNamedCurve(this.curveName);this.setPublicKeyHex(w);this.setPrivateKeyHex(u);this.isPublic=false};this.readPKCS8PubKeyHex=function(u){if(k(u)===false){throw new j("not ASN.1 hex string")}var t,r,v;try{t=n(u,0,[0,0],"06");r=n(u,0,[0,1],"06");v=n(u,0,[1],"03")}catch(s){throw new j("malformed PKCS#8 ECC public key")}this.curveName=d(r);if(this.curveName===null){throw new j("unsupported curve name")}this.setNamedCurve(this.curveName);this.setPublicKeyHex(v)};this.readCertPubKeyHex=function(t,v){if(k(t)===false){throw new j("not ASN.1 hex string")}var r,u;try{r=n(t,0,[0,5,0,1],"06");u=n(t,0,[0,5,1],"03")}catch(s){throw new j("malformed X.509 certificate ECC public key")}this.curveName=d(r);if(this.curveName===null){throw new j("unsupported curve name")}this.setNamedCurve(this.curveName);this.setPublicKeyHex(u)};if(e!==undefined){if(e.curve!==undefined){this.curveName=e.curve}}if(this.curveName===undefined){this.curveName=g}this.setNamedCurve(this.curveName);if(e!==undefined){if(e.prv!==undefined){this.setPrivateKeyHex(e.prv)}if(e.pub!==undefined){this.setPublicKeyHex(e.pub)}}};KJUR.crypto.ECDSA.parseSigHex=function(a){var b=KJUR.crypto.ECDSA.parseSigHexInHexRS(a);var d=new BigInteger(b.r,16);var c=new BigInteger(b.s,16);return{r:d,s:c}};KJUR.crypto.ECDSA.parseSigHexInHexRS=function(f){var j=ASN1HEX,i=j.getChildIdx,g=j.getV;j.checkStrictDER(f,0);if(f.substr(0,2)!="30"){throw new Error("signature is not a ASN.1 sequence")}var h=i(f,0);if(h.length!=2){throw new Error("signature shall have two elements")}var e=h[0];var d=h[1];if(f.substr(e,2)!="02"){throw new Error("1st item not ASN.1 integer")}if(f.substr(d,2)!="02"){throw new Error("2nd item not ASN.1 integer")}var c=g(f,e);var b=g(f,d);return{r:c,s:b}};KJUR.crypto.ECDSA.asn1SigToConcatSig=function(d){var e=KJUR.crypto.ECDSA.parseSigHexInHexRS(d);var b=e.r;var a=e.s;if(b.length>=130&&b.length<=134){if(b.length%2!=0){throw Error("unknown ECDSA sig r length error")}if(a.length%2!=0){throw Error("unknown ECDSA sig s length error")}if(b.substr(0,2)=="00"){b=b.substr(2)}if(a.substr(0,2)=="00"){a=a.substr(2)}var c=Math.max(b.length,a.length);b=("000000"+b).slice(-c);a=("000000"+a).slice(-c);return b+a}if(b.substr(0,2)=="00"&&(b.length%32)==2){b=b.substr(2)}if(a.substr(0,2)=="00"&&(a.length%32)==2){a=a.substr(2)}if((b.length%32)==30){b="00"+b}if((a.length%32)==30){a="00"+a}if(b.length%32!=0){throw Error("unknown ECDSA sig r length error")}if(a.length%32!=0){throw Error("unknown ECDSA sig s length error")}return b+a};KJUR.crypto.ECDSA.concatSigToASN1Sig=function(a){if(a.length%4!=0){throw Error("unknown ECDSA concatinated r-s sig length error")}var c=a.substr(0,a.length/2);var b=a.substr(a.length/2);return KJUR.crypto.ECDSA.hexRSSigToASN1Sig(c,b)};KJUR.crypto.ECDSA.hexRSSigToASN1Sig=function(b,a){var d=new BigInteger(b,16);var c=new BigInteger(a,16);return KJUR.crypto.ECDSA.biRSSigToASN1Sig(d,c)};KJUR.crypto.ECDSA.biRSSigToASN1Sig=function(f,d){var c=KJUR.asn1;var b=new c.DERInteger({bigint:f});var a=new c.DERInteger({bigint:d});var e=new c.DERSequence({array:[b,a]});return e.tohex()};KJUR.crypto.ECDSA.getName=function(a){if(a==="2b8104001f"){return"secp192k1"}if(a==="2a8648ce3d030107"){return"secp256r1"}if(a==="2b8104000a"){return"secp256k1"}if(a==="2b81040021"){return"secp224r1"}if(a==="2b81040022"){return"secp384r1"}if(a==="2b81040023"){return"secp521r1"}if("|secp256r1|NIST P-256|P-256|prime256v1|".indexOf(a)!==-1){return"secp256r1"}if("|secp256k1|".indexOf(a)!==-1){return"secp256k1"}if("|secp224r1|NIST P-224|P-224|".indexOf(a)!==-1){return"secp224r1"}if("|secp384r1|NIST P-384|P-384|".indexOf(a)!==-1){return"secp384r1"}if("|secp521r1|NIST P-521|P-521|".indexOf(a)!==-1){return"secp521r1"}return null}; if(typeof KJUR=="undefined"||!KJUR){KJUR={}}if(typeof KJUR.crypto=="undefined"||!KJUR.crypto){KJUR.crypto={}}KJUR.crypto.ECParameterDB=new function(){var b={};var c={};function a(d){return new BigInteger(d,16)}this.getByName=function(e){var d=e;if(typeof c[d]!="undefined"){d=c[e]}if(typeof b[d]!="undefined"){return b[d]}throw"unregistered EC curve name: "+d};this.regist=function(A,l,o,g,m,e,j,f,k,u,d,x){b[A]={};var s=a(o);var z=a(g);var y=a(m);var t=a(e);var w=a(j);var r=new ECCurveFp(s,z,y);var q=r.decodePointHex("04"+f+k);b[A]["name"]=A;b[A]["keylen"]=l;b[A]["keycharlen"]=Math.ceil(l/8)*2;b[A]["curve"]=r;b[A]["G"]=q;b[A]["n"]=t;b[A]["h"]=w;b[A]["oid"]=d;b[A]["info"]=x;for(var v=0;vMIT License */ @@ -1373,7 +1373,7 @@ KJUR.asn1.x509.NameConstraints = function(params) { for (var i = 0; i < params.permit.length; i++) { aPermit.push(new _GeneralSubtree(params.permit[i])); } - aItem.push({tag: {tage: "a0", obj: {seq: aPermit}}}); + aItem.push({tag: {tagi: "a0", obj: {seq: aPermit}}}); } if (params.exclude != undefined && @@ -1382,7 +1382,7 @@ KJUR.asn1.x509.NameConstraints = function(params) { for (var i = 0; i < params.exclude.length; i++) { aExclude.push(new _GeneralSubtree(params.exclude[i])); } - aItem.push({tag: {tage: "a1", obj: {seq: aExclude}}}); + aItem.push({tag: {tagi: "a1", obj: {seq: aExclude}}}); } this.asn1ExtnValue = _newObject({seq: aItem}); @@ -4091,19 +4091,21 @@ KJUR.asn1.x509.GeneralName = function(params) { dObj = new _DERIA5String({str: params.uri}); } else if (params.ip !== undefined) { hTag = "87"; - var ip = params.ip; var hIP; - var errmsg = "malformed IP address"; - if (ip.match(/^[0-9.]+[.][0-9.]+$/)) { // ipv4 - hIP = intarystrtohex("[" + ip.split(".").join(",") + "]"); - if (hIP.length !== 8) - throw new _Error(errmsg); - } else if (ip.match(/^[0-9A-Fa-f:]+:[0-9A-Fa-f:]+$/)) { // ipv6 - hIP = ipv6tohex(ip); - } else if (ip.match(/^([0-9A-Fa-f][0-9A-Fa-f]){1,}$/)) { // hex - hIP = ip; - } else { - throw new _Error(errmsg); + var ip = params.ip; + try { + if (ip.match(/^[0-9a-f]+$/)) { + var len = ip.length; + if (len == 8 || len == 16 || len == 32 || len == 64) { + hIP = ip; + } else { + throw "err"; + } + } else { + hIP = iptohex(ip); + } + } catch(ex) { + throw new _Error("malformed IP address: " + params.ip + ":" + ex.message); } dObj = new _DEROctetString({hex: hIP}); } else { diff --git a/src/base64x-1.1.js b/src/base64x-1.1.js index 86466ac5..fedbf8a9 100644 --- a/src/base64x-1.1.js +++ b/src/base64x-1.1.js @@ -1,4 +1,4 @@ -/* base64x-1.1.25 (c) 2012-2022 Kenji Urushima | kjur.github.io/jsrsasign/license +/* base64x-1.1.26 (c) 2012-2022 Kenji Urushima | kjur.github.io/jsrsasign/license */ /* * base64x.js - Base64url and supplementary functions for Tom Wu's base64.js library @@ -16,7 +16,7 @@ * @fileOverview * @name base64x-1.1.js * @author Kenji Urushima kenji.urushima@gmail.com - * @version jsrsasign 10.5.12 base64x 1.1.25 (2022-Mar-13) + * @version jsrsasign 10.5.17 base64x 1.1.26 (2022-Apr-14) * @since jsrsasign 2.1 * @license MIT License */ @@ -946,40 +946,77 @@ function hextoipv6(s) { * @param {String} s hexadecimal string of IP address * @return {String} IP address string * @since jsrsasign 8.0.10 base64x 1.1.13 + * @see hextoipv6 + * @see iptohex + * * @description * This function converts a hexadecimal string of IPv4 or * IPv6 address to IPv4 or IPv6 address string. * If byte length is not 4 nor 16, this returns a * hexadecimal string without conversion. - * @see {@link hextoipv6} + *
+ * NOTE: From jsrsasign 10.5.17, CIDR subnet mask notation also supported. + * * @example - * hextoip("c0a80101") &rarr "192.168.1.1" + * hextoip("c0a80101") → "192.168.1.1" * hextoip("871020010db8000000000000000000000004") &rarr "2001:db8::4" - * hextoip("c0a801010203") &rarr "c0a801010203" // 6 bytes - * hextoip("zzz")) &rarr raise exception because of not hexadecimal + * hextoip("c0a80100ffffff00") → "192.168.1.0/24" + * hextoip("c0a801010203") → "c0a801010203" // wrong 6 bytes + * hextoip("zzz")) → raise exception because of not hexadecimal */ function hextoip(s) { - var malformedMsg = "malformed hex value"; - if (! s.match(/^([0-9A-Fa-f][0-9A-Fa-f]){1,}$/)) - throw malformedMsg; - if (s.length == 8) { // ipv4 - var ip; - try { - ip = parseInt(s.substr(0, 2), 16) + "." + - parseInt(s.substr(2, 2), 16) + "." + - parseInt(s.substr(4, 2), 16) + "." + - parseInt(s.substr(6, 2), 16); - return ip; - } catch (ex) { - throw malformedMsg; - } + var malformedErr = new Error("malformed hex value"); + if (! s.match(/^([0-9A-Fa-f][0-9A-Fa-f]){1,}$/)) + throw malformedErr; + if (s.length == 8) { // ipv4 + var ip; + try { + ip = parseInt(s.substr(0, 2), 16) + "." + + parseInt(s.substr(2, 2), 16) + "." + + parseInt(s.substr(4, 2), 16) + "." + + parseInt(s.substr(6, 2), 16); + return ip; + } catch (ex) { + throw malformedErr; + } + } else if (s.length == 16) { + try { + return hextoip(s.substr(0, 8)) + "/" + ipprefixlen(s.substr(8)); + } catch (ex) { + throw malformedErr; + } } else if (s.length == 32) { - return hextoipv6(s); + return hextoipv6(s); + } else if (s.length == 64) { + try { + return hextoipv6(s.substr(0, 32)) + "/" + ipprefixlen(s.substr(32)); + } catch (ex) { + throw malformedErr; + } + return } else { return s; } } +/* + * convert subnet mask hex to ip address prefix length
+ * @name ipprefixlen + * @param {string} hMask hexadecimal string of ipv4/6 subnet mask (ex. "ffffff00" for v4 class C) + * @return {nummber} ip address prefix length (ex. 24 for IPv4 class C) + */ +function ipprefixlen(hMask) { + var malformedErr = new Error("malformed mask"); + var bMask; + try { + bMask = new BigInteger(hMask, 16).toString(2); + } catch(ex) { + throw malformedErr; + } + if (! bMask.match(/^1*0*$/)) throw malformedErr; + return bMask.replace(/0+$/, '').length; +} + /** * convert IPv4/v6 addresss to a hexadecimal string
* @name iptohex @@ -987,36 +1024,68 @@ function hextoip(s) { * @param {String} s IPv4/v6 address string * @return {String} hexadecimal string of IP address * @since jsrsasign 8.0.12 base64x 1.1.14 + * @see hextoip + * @see ipv6tohex + * * @description * This function converts IPv4 or IPv6 address string to * a hexadecimal string of IPv4 or IPv6 address. + *
+ * NOTE: From jsrsasign 10.5.17, CIDR net mask notation also supported. + * * @example - * iptohex("192.168.1.1") &rarr "c0a80101" - * iptohex("2001:db8::4") &rarr "871020010db8000000000000000000000004" - * iptohex("zzz")) &rarr raise exception + * iptohex("192.168.1.1") → "c0a80101" + * iptohex("2001:db8::4") → "871020010db8000000000000000000000004" + * iptohex("192.168.1.1/24") → "c0a80101ffffff00" + * iptohex("2001:db8::/120") → "871020010db8000000000000000000000000ffffffffffffffffffffffffffffffffff00" + * iptohex("zzz")) → raise exception */ function iptohex(s) { - var malformedMsg = "malformed IP address"; - s = s.toLowerCase(s); - - if (s.match(/^[0-9.]+$/)) { - var a = s.split("."); - if (a.length !== 4) throw malformedMsg; - var hex = ""; - try { - for (var i = 0; i < 4; i++) { - var d = parseInt(a[i]); - hex += ("0" + d.toString(16)).slice(-2); - } - return hex; - } catch(ex) { - throw malformedMsg; + var malformedErr = new Error("malformed IP address"); + s = s.toLowerCase(s); + + if (! s.match(/^[0-9a-f.:/]+$/) ) throw malformedErr; + + if (s.match(/^[0-9.]+$/)) { + var a = s.split("."); + if (a.length !== 4) throw malformedErr; + var hex = ""; + try { + for (var i = 0; i < 4; i++) { + var d = parseInt(a[i]); + hex += ("0" + d.toString(16)).slice(-2); + } + return hex; + } catch(ex) { + throw malformedErr; + } + } else if (s.match(/^[0-9.]+\/[0-9]+$/)) { + var aItem = s.split("/"); + return iptohex(aItem[0]) + ipnetmask(parseInt(aItem[1]), 32); + } else if (s.match(/^[0-9a-f:]+$/) && s.indexOf(":") !== -1) { + return ipv6tohex(s); + } else if (s.match(/^[0-9a-f:]+\/[0-9]+$/) && s.indexOf(":") !== -1) { + var aItem = s.split("/"); + return ipv6tohex(aItem[0]) + ipnetmask(parseInt(aItem[1]), 128); + } else { + throw malformedErr; } - } else if (s.match(/^[0-9a-f:]+$/) && s.indexOf(":") !== -1) { - return ipv6tohex(s); - } else { - throw malformedMsg; - } +} + +/* + * convert ip prefix length to net mask octets
+ * @param {number} prefixlen ip prefix length value (ex. 24 for IPv4 class C) + * @param {number} len ip address length (ex. 32 for IPv4 and 128 for IPv6) + * @return {string} hexadecimal string of net mask octets + * @example + * ipnetmask(24, 32) → "ffffff00" + * ipnetmask(120, 128) → "ffffffffffffffffffffffffffffff00" + */ +function ipnetmask(prefixlen, len) { + if (len == 32 && prefixlen == 0) return "00000000"; // v4 + if (len == 128 && prefixlen == 0) return "00000000000000000000000000000000"; // v6 + var b = Array(prefixlen + 1).join("1") + Array(len - prefixlen + 1).join("0"); + return new BigInteger(b, 2).toString(16); } // ==== ucs2hex / utf8 ============================== diff --git a/test/qunit-do-asn1x509-tbscert.html b/test/qunit-do-asn1x509-tbscert.html index 68bd44ac..8638e773 100755 --- a/test/qunit-do-asn1x509-tbscert.html +++ b/test/qunit-do-asn1x509-tbscert.html @@ -300,7 +300,7 @@ critical: true, permit: [{dns: "a.com"}] }]; -hExpect = "301b30190603551d1e0101ff040f300da00b300930078205612e636f6d"; +hExpect = "301930170603551d1e0101ff040d300ba00930078205612e636f6d"; dIn = new _Extensions(aIn); equal(dIn.tohex(), hExpect, "nameConstraints hex"); }); diff --git a/test/qunit-do-asn1x509.html b/test/qunit-do-asn1x509.html index f2ac219e..5265f0cb 100755 --- a/test/qunit-do-asn1x509.html +++ b/test/qunit-do-asn1x509.html @@ -230,51 +230,68 @@ }); test("GeneralName class test", function() { - var o; - o = new KJUR.asn1.x509.GeneralName({'rfc822':'u1@foo.com'}); - equal(o.getEncodedHex(), "810a753140666f6f2e636f6d", "constructor rfc822 u1@foo.com"); +var _GeneralName = KJUR.asn1.x509.GeneralName; +var o; + +o = new _GeneralName({'rfc822':'u1@foo.com'}); +equal(o.tohex(), "810a753140666f6f2e636f6d", "constructor rfc822 u1@foo.com"); + +o = new _GeneralName({'dns':'foo.com'}); +equal(o.tohex(), "8207666f6f2e636f6d", "constructor dns foo.com"); + +o = new _GeneralName({'uri':'http://aaa.com/'}); +equal(o.tohex(), "860f687474703a2f2f6161612e636f6d2f", "constructor uri http://aaa.com/"); - o = new KJUR.asn1.x509.GeneralName({'dns':'foo.com'}); - equal(o.getEncodedHex(), "8207666f6f2e636f6d", "constructor dns foo.com"); +o = new _GeneralName({certissuer: z4TSACERT}); +equal(o.tohex(), "a41d301b310b3009060355040613025553310c300a060355040a0c03434131", "constructor certissuer cert1"); - o = new KJUR.asn1.x509.GeneralName({'uri':'http://aaa.com/'}); - equal(o.getEncodedHex(), "860f687474703a2f2f6161612e636f6d2f", "constructor uri http://aaa.com/"); +o = new _GeneralName({certsubj: z4TSACERT}); +equal(o.tohex(), "a41e301c310b3009060355040613025553310d300b06035504030c0454534131", "constructor certsubj cert1"); - o = new KJUR.asn1.x509.GeneralName({certissuer: z4TSACERT}); - equal(o.getEncodedHex(), "a41d301b310b3009060355040613025553310c300a060355040a0c03434131", "constructor certissuer cert1"); +o = new _GeneralName({dn: '/C=US/O=Test'}); +equal(o.tohex(), "a41e301c310b3009060355040613025553310d300b060355040a0c0454657374", "dn /C=US/O=Test out=" + o.tohex()); - o = new KJUR.asn1.x509.GeneralName({certsubj: z4TSACERT}); - equal(o.getEncodedHex(), "a41e301c310b3009060355040613025553310d300b06035504030c0454534131", "constructor certsubj cert1"); +o = new _GeneralName({dn: {str: '/C=US/O=Test'}}); +equal(o.tohex(), "a41e301c310b3009060355040613025553310d300b060355040a0c0454657374", "dn str /C=US/O=Test"); - o = new KJUR.asn1.x509.GeneralName({dn: '/C=US/O=Test'}); - equal(o.getEncodedHex(), "a41e301c310b3009060355040613025553310d300b060355040a0c0454657374", "dn /C=US/O=Test out=" + o.getEncodedHex()); +o = new _GeneralName({dn: {ldapstr: 'O=Test,C=US'}}); +equal(o.tohex(), "a41e301c310b3009060355040613025553310d300b060355040a0c0454657374", "dn ldapstr O=Test,C=US"); - o = new KJUR.asn1.x509.GeneralName({dn: {str: '/C=US/O=Test'}}); - equal(o.getEncodedHex(), "a41e301c310b3009060355040613025553310d300b060355040a0c0454657374", "dn str /C=US/O=Test"); +o = new _GeneralName({dn: {certsubject: CERTEE1}}); +equal(o.tohex(), "a41d301b310b3009060355040613025553310c300a060355040a0c03454531", "dn certsubject=EE1 out=" + o.tohex()); - o = new KJUR.asn1.x509.GeneralName({dn: {ldapstr: 'O=Test,C=US'}}); - equal(o.getEncodedHex(), "a41e301c310b3009060355040613025553310d300b060355040a0c0454657374", "dn ldapstr O=Test,C=US"); +o = new _GeneralName({dn: {certissuer: CERTEE1}}); +equal(o.tohex(), "a41d301b310b3009060355040613025553310c300a060355040a0c03434131", "dn certissuer=CA1 out=" + o.tohex()); - o = new KJUR.asn1.x509.GeneralName({dn: {certsubject: CERTEE1}}); - equal(o.getEncodedHex(), "a41d301b310b3009060355040613025553310c300a060355040a0c03454531", "dn certsubject=EE1 out=" + o.getEncodedHex()); +o = new _GeneralName({ldapdn: 'O=Test,C=US'}); +equal(o.tohex(), "a41e301c310b3009060355040613025553310d300b060355040a0c0454657374", "ldapdn O=Test,C=US"); - o = new KJUR.asn1.x509.GeneralName({dn: {certissuer: CERTEE1}}); - equal(o.getEncodedHex(), "a41d301b310b3009060355040613025553310c300a060355040a0c03434131", "dn certissuer=CA1 out=" + o.getEncodedHex()); +o = new _GeneralName({ip: '192.168.1.1'}); +equal(o.tohex(), "8704c0a80101", "ip: 192.168.1.1"); - o = new KJUR.asn1.x509.GeneralName({ldapdn: 'O=Test,C=US'}); - equal(o.getEncodedHex(), "a41e301c310b3009060355040613025553310d300b060355040a0c0454657374", "ldapdn O=Test,C=US"); +o = new _GeneralName({ip: '2001:db8::4'}); +equal(o.tohex(), "871020010db8000000000000000000000004", "ip: 2001:db8::4"); - o = new KJUR.asn1.x509.GeneralName({ip: '192.168.1.1'}); - equal(o.getEncodedHex(), "8704c0a80101", "ip: 192.168.1.1"); +o = new _GeneralName({ip: '2001:db8::'}); +equal(o.tohex(), "871020010db8000000000000000000000000", "ip: 2001:db8::"); - o = new KJUR.asn1.x509.GeneralName({ip: '2001:db8::4'}); - equal(o.getEncodedHex(), "871020010db8000000000000000000000004", "ip: 2001:db8::4"); +o = new _GeneralName({ip: '2606:4700:4700::1111'}); +equal(o.tohex(), "871026064700470000000000000000001111", "ip: 2606:4700:4700::1111"); - o = new KJUR.asn1.x509.GeneralName({ip: '2606:4700:4700::1111'}); - equal(o.getEncodedHex(), "871026064700470000000000000000001111", "ip: 2606:4700:4700::1111"); +o = new _GeneralName({ip: 'c0a80101'}); +equal(o.tohex(), "8704c0a80101", "ip: c0a80101"); - o = new KJUR.asn1.x509.GeneralName({ip: 'c0a80101'}); - equal(o.getEncodedHex(), "8704c0a80101", "ip: c0a80101"); +o = new _GeneralName({ip: '192.168.1.1/24'}); +equal(o.tohex(), "8708c0a80101ffffff00", "ip: 192.168.1.1/24"); + +o = new _GeneralName({ip: '192.168.1.1/32'}); +equal(o.tohex(), "8708c0a80101ffffffff", "ip: 192.168.1.1/32"); + +o = new _GeneralName({ip: '2001:db8::/120'}); +equal(o.tohex(), "872020010db8000000000000000000000000ffffffffffffffffffffffffffffff00", "ip: 2001:db8::/120"); + +o = new _GeneralName({ip: '2001:db8::/128'}); // ?? +equal(o.tohex(), "872020010db8000000000000000000000000ffffffffffffffffffffffffffffffff", "ip: 2001:db8::/128"); }); test("GeneralName OtherName test", function() { @@ -583,12 +600,20 @@ var pIn, hExpect; pIn = {extname: "nameConstraints", critical: true, permit: [{dns: "a.com"}]}; -hExpect = "30190603551d1e0101ff040f300da00b300930078205612e636f6d"; -equal(new _NameConstraints(pIn).getEncodedHex(), hExpect, "permit [{dns: a.com}]"); +hExpect = "30170603551d1e0101ff040d300ba00930078205612e636f6d"; +equal(new _NameConstraints(pIn).tohex(), hExpect, "permit [{dns: a.com}]"); pIn = {extname: "nameConstraints", critical: true, exclude: [{uri: ".a.com"}]}; -hExpect = "301a0603551d1e0101ff0410300ea10c300a300886062e612e636f6d"; -equal(new _NameConstraints(pIn).getEncodedHex(), hExpect, "exclude [{uri: .a.com}]"); +hExpect = "30180603551d1e0101ff040e300ca10a300886062e612e636f6d"; +equal(new _NameConstraints(pIn).tohex(), hExpect, "exclude [{uri: .a.com}]"); + +pIn = {extname: "nameConstraints", critical: true, exclude: [{ip: "192.168.1.1/24"}]}; +hExpect = "301a0603551d1e0101ff0410300ea10c300a8708c0a80101ffffff00"; +equal(new _NameConstraints(pIn).tohex(), hExpect, "exclude [{ip: 192.168.1.1/24}]"); + +pIn = {extname: "nameConstraints", critical: true, exclude: [{ip: "192.168.1.1/24"},{dns: "a.jp"}]}; +hExpect = "30220603551d1e0101ff04183016a114300a8708c0a80101ffffff0030068204612e6a70"; +equal(new _NameConstraints(pIn).tohex(), hExpect, "exclude [{ip: 192.168.1.1/24},{dns: a.jp}]"); pIn = { extname: "nameConstraints", @@ -596,8 +621,8 @@ permit: [{dns: ".a.com"}], exclude: [{uri: ".b.com"}] }; -hExpect = "30280603551d1e0101ff041e301ca00c300a300882062e612e636f6da10c300a300886062e622e636f6d"; -equal(new _NameConstraints(pIn).getEncodedHex(), hExpect, +hExpect = "30240603551d1e0101ff041a3018a00a300882062e612e636f6da10a300886062e622e636f6d"; +equal(new _NameConstraints(pIn).tohex(), hExpect, "permit: [{dns: .a.com}], exclude [{uri: .a.com}]"); pIn = { @@ -605,16 +630,16 @@ critical: true, permit: [{dns: ".a.com"},{uri: ".b.com"}] }; -hExpect = "30240603551d1e0101ff041a3018a0163014300882062e612e636f6d300886062e622e636f6d"; -equal(new _NameConstraints(pIn).getEncodedHex(), hExpect, "permit: [{dns:.a.com},{uri:.b.com}]"); +hExpect = "30220603551d1e0101ff04183016a014300882062e612e636f6d300886062e622e636f6d"; +equal(new _NameConstraints(pIn).tohex(), hExpect, "permit: [{dns:.a.com},{uri:.b.com}]"); pIn = { extname: "nameConstraints", critical: true, permit: [{dn: "/C=JP/O=T1"}] }; -hExpect = "30300603551d1e0101ff04263024a0223020301ea41c301a310b3009060355040613024a50310b3009060355040a0c025431"; -equal(new _NameConstraints(pIn).getEncodedHex(), hExpect, "permit: [{dn: /C=JP/O=T1}]"); +hExpect = "302e0603551d1e0101ff04243022a020301ea41c301a310b3009060355040613024a50310b3009060355040a0c025431"; +equal(new _NameConstraints(pIn).tohex(), hExpect, "permit: [{dn: /C=JP/O=T1}]"); }); test("GeneralSubtree class test", function() { @@ -623,23 +648,27 @@ pIn = {dns: "a.com"}; hExpect = "30078205612e636f6d"; -equal(new _GeneralSubtree(pIn).getEncodedHex(), hExpect, "{dns:a.com}") +equal(new _GeneralSubtree(pIn).tohex(), hExpect, "{dns:a.com}") pIn = {uri: "a.com"}; hExpect = "30078605612e636f6d"; -equal(new _GeneralSubtree(pIn).getEncodedHex(), hExpect, "{uri:a.com}"); +equal(new _GeneralSubtree(pIn).tohex(), hExpect, "{uri:a.com}"); + +pIn = {ip: "192.168.1.1/24"}; +hExpect = "300a8708c0a80101ffffff00"; +equal(new _GeneralSubtree(pIn).tohex(), hExpect, "{ip: 192.168.1.1/24}"); pIn = {dn: "/C=JP/O=T1"}; hExpect = "301ea41c301a310b3009060355040613024a50310b3009060355040a0c025431"; -equal(new _GeneralSubtree(pIn).getEncodedHex(), hExpect, "{dn:/C=JP/O=T1}"); +equal(new _GeneralSubtree(pIn).tohex(), hExpect, "{dn:/C=JP/O=T1}"); pIn = {dn: "/C=JP/O=T1", min: 2}; hExpect = "3021a41c301a310b3009060355040613024a50310b3009060355040a0c025431800102"; -equal(new _GeneralSubtree(pIn).getEncodedHex(), hExpect, "{dn:/C=JP/O=T1,min:2}"); +equal(new _GeneralSubtree(pIn).tohex(), hExpect, "{dn:/C=JP/O=T1,min:2}"); pIn = {dn: "/C=JP/O=T1", min: 2, max: 4}; hExpect = "3024a41c301a310b3009060355040613024a50310b3009060355040a0c025431800102810104"; -equal(new _GeneralSubtree(pIn).getEncodedHex(), hExpect, "{dn:/C=JP/O=T1,min:2,max:4}"); +equal(new _GeneralSubtree(pIn).tohex(), hExpect, "{dn:/C=JP/O=T1,min:2,max:4}"); }); // KeyUsage diff --git a/test/qunit-do-base64x.html b/test/qunit-do-base64x.html index 2c50969a..97f4a48f 100755 --- a/test/qunit-do-base64x.html +++ b/test/qunit-do-base64x.html @@ -321,14 +321,34 @@ equal(hextoip('123456abcd'), '123456abcd', '123456abcd'); + +equal(hextoip("c0a80101ffffff00"), "192.168.1.1/24", "c0a80101ffffff00 > 192.168.1.1/24"); +equal(hextoip("c0a80101ffffffff"), "192.168.1.1/32", "c0a80101ffffffff > 192.168.1.1/32"); +equal(hextoip("20010db80000000000000000abcdef12ffffffffffffffffffffffffffffff00"), + "2001:db8::abcd:ef12/120", "2001:db8::abcd:ef12/120"); +equal(hextoip("20010db80000000000000000abcdef12ffffffffffffffffffffffffffffffff"), + "2001:db8::abcd:ef12/128", "2001:db8::abcd:ef12/128"); }); test("iptohex", function() { - equal(iptohex('192.168.1.1'), 'c0a80101', 'c0a80101=192.168.1.1'); - equal(iptohex('192.168.1.10'), 'c0a8010a', 'c0a8010a=192.168.1.10'); - equal(iptohex('2001:db8::abcd:ef12'), - '20010db80000000000000000abcdef12', - '2001:db8::abcd:ef12'); +equal(iptohex('192.168.1.1'), 'c0a80101', 'c0a80101=192.168.1.1'); +equal(iptohex('192.168.1.10'), 'c0a8010a', 'c0a8010a=192.168.1.10'); +equal(iptohex('2001:db8::abcd:ef12'), + '20010db80000000000000000abcdef12', + '2001:db8::abcd:ef12'); +equal(iptohex("192.168.1.1/32"), 'c0a80101ffffffff', "192.168.1.1/32"); +equal(iptohex("192.168.1.1/24"), 'c0a80101ffffff00', "192.168.1.1/24"); +equal(iptohex("2001:db8::abcd:ef12/120"), + "20010db80000000000000000abcdef12ffffffffffffffffffffffffffffff00", + "2001:db8::abcd:ef12/120"); +equal(iptohex("2001:db8::abcd:ef12/128"), + "20010db80000000000000000abcdef12ffffffffffffffffffffffffffffffff", + "2001:db8::abcd:ef12/128"); + +//equal(ipnetmask(24, 32), "ffffff00", "24,32 > ffffff00"); +//equal(ipnetmask(32, 32), "ffffffff", "32,32 > ffffffff"); +//equal(ipnetmask(120, 128), "ffffffffffffffffffffffffffffff00", "120,128 > ffffffffffffffffffffffffffffff00"); +//equal(ipnetmask(128, 128), "ffffffffffffffffffffffffffffffff", "128,128 > ffffffffffffffffffffffffffffffff"); }); test("ucs2hextoutf8", function() { diff --git a/test/qunit-do-x509-ext.html b/test/qunit-do-x509-ext.html index 5d4856d6..f5032784 100755 --- a/test/qunit-do-x509-ext.html +++ b/test/qunit-do-x509-ext.html @@ -875,13 +875,18 @@ test("getGeneralName test" , function() { var x = new X509(); +var hIn, pExpect; + +hIn = "860f687474703a2f2f6161612e636f6d2f"; +pExpect = {uri: "http://aaa.com/"}; +deepEqual(x.getGeneralName(hIn), pExpect, "uri"); -var hIn1 = "860f687474703a2f2f6161612e636f6d2f"; -var pExpect1 = {uri: "http://aaa.com/"}; -deepEqual(x.getGeneralName(hIn1), pExpect1, "uri"); +hIn = "8708c0a80101ffffff00"; +pExpect = {ip: '192.168.1.1/24'}; +deepEqual(x.getGeneralName(hIn), pExpect, "ip 192.168.1.1/24"); -var hIn2 = "a41c301a310b3009060355040613024a50310b3009060355040a0c025431"; -var pExpect2 = { +hIn = "a41c301a310b3009060355040613024a50310b3009060355040a0c025431"; +pExpect = { dn: { array: [ [{type:"C", value:"JP", ds:"prn"}], @@ -890,8 +895,7 @@ str: "/C=JP/O=T1" } }; -deepEqual(x.getGeneralName(hIn2), pExpect2, "dn"); - +deepEqual(x.getGeneralName(hIn), pExpect, "dn"); }); test("getGeneralName OtherName test" , function() { @@ -1059,6 +1063,14 @@ }; deepEqual(x.getExtNameConstraints(hIn, true), pExpect, "permit [{uri: .testcertificates.gov}]"); +hIn = "300ea10c300a8708c0a80101ffffff00"; +pExpect = { + extname: "nameConstraints", + critical: true, + exclude: [{ip: '192.168.1.1/24'}] +}; +deepEqual(x.getExtNameConstraints(hIn, true), pExpect, "permit [{ip: 192.168.1.1/24}]"); + //hIn = "a44c304a310b3009060355040613025553311f301d060355040a131654657374204365727469666963617465732032303131311a3018060355040b13117065726d69747465645375627472656531"; //pExpect = {}; //deepEqual(x.getGeneralName(hIn), pExpect, "dn1"); // PASS @@ -1087,6 +1099,10 @@ pExpect = {dns: 'testcertificates.gov'}; deepEqual(x.getGeneralSubtree(hIn), pExpect, "{dns: testcertificates.gov}"); +hIn = "300a8708c0a80101ffffff00"; +pExpect = {ip: "192.168.1.1/24"}; +deepEqual(x.getGeneralSubtree(hIn), pExpect, "{ip: 192.168.1.1/24}"); + hIn = "304ea44c304a310b3009060355040613025553311f301d060355040a131654657374204365727469666963617465732032303131311a3018060355040b13117065726d69747465645375627472656531"; pExpect = {dn: { array: [ @@ -1095,7 +1111,7 @@ [{ds:"prn",type:"OU",value:"permittedSubtree1"}]], str: "/C=US/O=Test Certificates 2011/OU=permittedSubtree1" }}; -deepEqual(x.getGeneralSubtree(hIn), pExpect, "{dn: testcertificates.gov}"); +deepEqual(x.getGeneralSubtree(hIn), pExpect, "{dn: /C=US/O=...}"); });