oidc-client
Version:
OpenID Connect (OIDC) & OAuth2 client library
1 lines • 20.2 kB
JavaScript
function X509(q){var j=ASN1HEX,n=j.getChildIdx,g=j.getV,b=j.getTLV,c=j.getVbyList,k=j.getVbyListEx,a=j.getTLVbyList,l=j.getTLVbyListEx,h=j.getIdxbyList,e=j.getIdxbyListEx,i=j.getVidx,p=j.oidname,m=j.hextooidstr,d=X509,r=pemtohex,f;try{f=KJUR.asn1.x509.AlgorithmIdentifier.PSSNAME2ASN1TLV}catch(o){}this.HEX2STAG={"0c":"utf8","13":"prn","16":"ia5","1a":"vis","1e":"bmp"};this.hex=null;this.version=0;this.foffset=0;this.aExtInfo=null;this.getVersion=function(){if(this.hex===null||this.version!==0){return this.version}if(a(this.hex,0,[0,0])!=="a003020102"){this.version=1;this.foffset=-1;return 1}this.version=3;return 3};this.getSerialNumberHex=function(){return k(this.hex,0,[0,0],"02")};this.getSignatureAlgorithmField=function(){var s=l(this.hex,0,[0,1]);return this.getAlgorithmIdentifierName(s)};this.getAlgorithmIdentifierName=function(s){for(var t in f){if(s===f[t]){return t}}return p(k(s,0,[0],"06"))};this.getIssuer=function(){return this.getX500Name(this.getIssuerHex())};this.getIssuerHex=function(){return a(this.hex,0,[0,3+this.foffset],"30")};this.getIssuerString=function(){return d.hex2dn(this.getIssuerHex())};this.getSubject=function(){return this.getX500Name(this.getSubjectHex())};this.getSubjectHex=function(){return a(this.hex,0,[0,5+this.foffset],"30")};this.getSubjectString=function(){return d.hex2dn(this.getSubjectHex())};this.getNotBefore=function(){var t=c(this.hex,0,[0,4+this.foffset,0]);t=t.replace(/(..)/g,"%$1");t=decodeURIComponent(t);return t};this.getNotAfter=function(){var t=c(this.hex,0,[0,4+this.foffset,1]);t=t.replace(/(..)/g,"%$1");t=decodeURIComponent(t);return t};this.getPublicKeyHex=function(){return j.getTLVbyList(this.hex,0,[0,6+this.foffset],"30")};this.getPublicKeyIdx=function(){return h(this.hex,0,[0,6+this.foffset],"30")};this.getPublicKeyContentIdx=function(){var s=this.getPublicKeyIdx();return h(this.hex,s,[1,0],"30")};this.getPublicKey=function(){return KEYUTIL.getKey(this.getPublicKeyHex(),null,"pkcs8pub")};this.getSignatureAlgorithmName=function(){var s=a(this.hex,0,[1],"30");return this.getAlgorithmIdentifierName(s)};this.getSignatureValueHex=function(){return c(this.hex,0,[2],"03",true)};this.verifySignature=function(u){var v=this.getSignatureAlgorithmField();var s=this.getSignatureValueHex();var t=a(this.hex,0,[0],"30");var w=new KJUR.crypto.Signature({alg:v});w.init(u);w.updateHex(t);return w.verify(s)};this.parseExt=function(B){var u,s,w;if(B===undefined){w=this.hex;if(this.version!==3){return -1}u=h(w,0,[0,7,0],"30");s=n(w,u)}else{w=pemtohex(B);var x=h(w,0,[0,3,0,0],"06");if(g(w,x)!="2a864886f70d01090e"){this.aExtInfo=new Array();return}u=h(w,0,[0,3,0,1,0],"30");s=n(w,u);this.hex=w}this.aExtInfo=new Array();for(var v=0;v<s.length;v++){var z={};z.critical=false;var y=n(w,s[v]);var t=0;if(y.length===3){z.critical=true;t=1}z.oid=j.hextooidstr(c(w,s[v],[0],"06"));var A=h(w,s[v],[1+t]);z.vidx=i(w,A);this.aExtInfo.push(z)}};this.getExtInfo=function(u){var s=this.aExtInfo;var v=u;if(!u.match(/^[0-9.]+$/)){v=KJUR.asn1.x509.OID.name2oid(u)}if(v===""){return undefined}for(var t=0;t<s.length;t++){if(s[t].oid===v){return s[t]}}return undefined};this.getExtBasicConstraints=function(t,x){if(t===undefined&&x===undefined){var v=this.getExtInfo("basicConstraints");if(v===undefined){return undefined}t=b(this.hex,v.vidx);x=v.critical}var s={extname:"basicConstraints"};if(x){s.critical=true}if(t==="3000"){return s}if(t==="30030101ff"){s.cA=true;return s}if(t.substr(0,12)==="30060101ff02"){var w=g(t,10);var u=parseInt(w,16);s.cA=true;s.pathLen=u;return s}throw new Error("hExtV parse error: "+t)};this.getExtKeyUsage=function(t,v){if(t===undefined&&v===undefined){var u=this.getExtInfo("keyUsage");if(u===undefined){return undefined}t=b(this.hex,u.vidx);v=u.critical}var s={extname:"keyUsage"};if(v){s.critical=true}s.names=this.getExtKeyUsageString(t).split(",");return s};this.getExtKeyUsageBin=function(u){if(u===undefined){var v=this.getExtInfo("keyUsage");if(v===undefined){return""}u=b(this.hex,v.vidx)}if(u.length!=8&&u.length!=10){throw new Error("malformed key usage value: "+u)}var t="000000000000000"+parseInt(u.substr(6),16).toString(2);if(u.length==8){t=t.slice(-8)}if(u.length==10){t=t.slice(-16)}t=t.replace(/0+$/,"");if(t==""){t="0"}return t};this.getExtKeyUsageString=function(u){var v=this.getExtKeyUsageBin(u);var s=new Array();for(var t=0;t<v.length;t++){if(v.substr(t,1)=="1"){s.push(X509.KEYUSAGE_NAME[t])}}return s.join(",")};this.getExtSubjectKeyIdentifier=function(u,w){if(u===undefined&&w===undefined){var v=this.getExtInfo("subjectKeyIdentifier");if(v===undefined){return undefined}u=b(this.hex,v.vidx);w=v.critical}var s={extname:"subjectKeyIdentifier"};if(w){s.critical=true}var t=g(u,0);s.kid={hex:t};return s};this.getExtAuthorityKeyIdentifier=function(y,w){if(y===undefined&&w===undefined){var s=this.getExtInfo("authorityKeyIdentifier");if(s===undefined){return undefined}y=b(this.hex,s.vidx);w=s.critical}var z={extname:"authorityKeyIdentifier"};if(w){z.critical=true}var x=n(y,0);for(var t=0;t<x.length;t++){var A=y.substr(x[t],2);if(A==="80"){z.kid={hex:g(y,x[t])}}if(A==="a1"){var v=b(y,x[t]);var u=this.getGeneralNames(v);z.issuer=u[0]["dn"]}if(A==="82"){z.sn={hex:g(y,x[t])}}}return z};this.getExtExtKeyUsage=function(v,x){if(v===undefined&&x===undefined){var w=this.getExtInfo("extKeyUsage");if(w===undefined){return undefined}v=b(this.hex,w.vidx);x=w.critical}var s={extname:"extKeyUsage",array:[]};if(x){s.critical=true}var t=n(v,0);for(var u=0;u<t.length;u++){s.array.push(p(g(v,t[u])))}return s};this.getExtExtKeyUsageName=function(){var w=this.getExtInfo("extKeyUsage");if(w===undefined){return w}var s=new Array();var v=b(this.hex,w.vidx);if(v===""){return s}var t=n(v,0);for(var u=0;u<t.length;u++){s.push(p(g(v,t[u])))}return s};this.getExtSubjectAltName=function(t,v){if(t===undefined&&v===undefined){var u=this.getExtInfo("subjectAltName");if(u===undefined){return undefined}t=b(this.hex,u.vidx);v=u.critical}var s={extname:"subjectAltName",array:[]};if(v){s.critical=true}s.array=this.getGeneralNames(t);return s};this.getExtIssuerAltName=function(t,v){if(t===undefined&&v===undefined){var u=this.getExtInfo("issuerAltName");if(u===undefined){return undefined}t=b(this.hex,u.vidx);v=u.critical}var s={extname:"issuerAltName",array:[]};if(v){s.critical=true}s.array=this.getGeneralNames(t);return s};this.getGeneralNames=function(w){var u=n(w,0);var s=[];for(var v=0;v<u.length;v++){var t=this.getGeneralName(b(w,u[v]));if(t!==undefined){s.push(t)}}return s};this.getGeneralName=function(t){var s=t.substr(0,2);var v=g(t,0);var u=hextorstr(v);if(s=="81"){return{rfc822:u}}if(s=="82"){return{dns:u}}if(s=="86"){return{uri:u}}if(s=="87"){return{ip:hextoip(v)}}if(s=="a4"){return{dn:this.getX500Name(v)}}return undefined};this.getExtSubjectAltName2=function(){var w,z,y;var x=this.getExtInfo("subjectAltName");if(x===undefined){return x}var s=new Array();var v=b(this.hex,x.vidx);var t=n(v,0);for(var u=0;u<t.length;u++){y=v.substr(t[u],2);w=g(v,t[u]);if(y==="81"){z=hextoutf8(w);s.push(["MAIL",z])}if(y==="82"){z=hextoutf8(w);s.push(["DNS",z])}if(y==="84"){z=X509.hex2dn(w,0);s.push(["DN",z])}if(y==="86"){z=hextoutf8(w);s.push(["URI",z])}if(y==="87"){z=hextoip(w);s.push(["IP",z])}}return s};this.getExtCRLDistributionPoints=function(w,y){if(w===undefined&&y===undefined){var x=this.getExtInfo("cRLDistributionPoints");if(x===undefined){return undefined}w=b(this.hex,x.vidx);y=x.critical}var t={extname:"cRLDistributionPoints",array:[]};if(y){t.critical=true}var u=n(w,0);for(var v=0;v<u.length;v++){var s=b(w,u[v]);t.array.push(this.getDistributionPoint(s))}return t};this.getDistributionPoint=function(x){var u={};var v=n(x,0);for(var w=0;w<v.length;w++){var t=x.substr(v[w],2);var s=b(x,v[w]);if(t=="a0"){u.dpname=this.getDistributionPointName(s)}}return u};this.getDistributionPointName=function(x){var u={};var v=n(x,0);for(var w=0;w<v.length;w++){var t=x.substr(v[w],2);var s=b(x,v[w]);if(t=="a0"){u.full=this.getGeneralNames(s)}}return u};this.getExtCRLDistributionPointsURI=function(){var x=this.getExtInfo("cRLDistributionPoints");if(x===undefined){return x}var s=new Array();var t=n(this.hex,x.vidx);for(var v=0;v<t.length;v++){try{var y=c(this.hex,t[v],[0,0,0],"86");var w=hextoutf8(y);s.push(w)}catch(u){}}return s};this.getExtAIAInfo=function(){var w=this.getExtInfo("authorityInfoAccess");if(w===undefined){return w}var s={ocsp:[],caissuer:[]};var t=n(this.hex,w.vidx);for(var u=0;u<t.length;u++){var x=c(this.hex,t[u],[0],"06");var v=c(this.hex,t[u],[1],"86");if(x==="2b06010505073001"){s.ocsp.push(hextoutf8(v))}if(x==="2b06010505073002"){s.caissuer.push(hextoutf8(v))}}return s};this.getExtAuthorityInfoAccess=function(z,x){if(z===undefined&&x===undefined){var s=this.getExtInfo("authorityInfoAccess");if(s===undefined){return undefined}z=b(this.hex,s.vidx);x=s.critical}var A={extname:"authorityInfoAccess",array:[]};if(x){A.critical=true}var y=n(z,0);for(var t=0;t<y.length;t++){var w=k(z,y[t],[0],"06");var u=c(z,y[t],[1],"86");var v=hextoutf8(u);if(w=="2b06010505073001"){A.array.push({ocsp:v})}else{if(w=="2b06010505073002"){A.array.push({caissuer:v})}else{throw new Error("unknown method: "+w)}}}return A};this.getExtCertificatePolicies=function(w,z){if(w===undefined&&z===undefined){var y=this.getExtInfo("certificatePolicies");if(y===undefined){return undefined}w=b(this.hex,y.vidx);z=y.critical}var s={extname:"certificatePolicies",array:[]};if(z){s.critical=true}var t=n(w,0);for(var u=0;u<t.length;u++){var x=b(w,t[u]);var v=this.getPolicyInformation(x);s.array.push(v)}return s};this.getPolicyInformation=function(w){var s={};var y=c(w,0,[0],"06");s.policyoid=p(y);var z=e(w,0,[1],"30");if(z!=-1){s.array=[];var t=n(w,z);for(var u=0;u<t.length;u++){var x=b(w,t[u]);var v=this.getPolicyQualifierInfo(x);s.array.push(v)}}return s};this.getPolicyQualifierInfo=function(t){var s={};var u=c(t,0,[0],"06");if(u==="2b06010505070201"){var w=k(t,0,[1],"16");s.cps=hextorstr(w)}else{if(u==="2b06010505070202"){var v=a(t,0,[1],"30");s.unotice=this.getUserNotice(v)}}return s};this.getUserNotice=function(w){var t={};var u=n(w,0);for(var v=0;v<u.length;v++){var s=b(w,u[v]);if(s.substr(0,2)!="30"){t.exptext=this.getDisplayText(s)}}return t};this.getDisplayText=function(t){var u={"0c":"utf8","16":"ia5","1a":"vis","1e":"bmp"};var s={};s.type=u[t.substr(0,2)];s.str=hextorstr(g(t,0));return s};this.getExtCRLNumber=function(t,u){var s={extname:"cRLNumber"};if(u){s.critical=true}if(t.substr(0,2)=="02"){s.num={hex:g(t,0)};return s}throw new Error("hExtV parse error: "+t)};this.getExtCRLReason=function(t,u){var s={extname:"cRLReason"};if(u){s.critical=true}if(t.substr(0,2)=="0a"){s.code=parseInt(g(t,0),16);return s}throw new Error("hExtV parse error: "+t)};this.getExtOcspNonce=function(t,v){var s={extname:"ocspNonce"};if(v){s.critical=true}var u=g(t,0);s.hex=u;return s};this.getExtOcspNoCheck=function(t,u){var s={extname:"ocspNoCheck"};if(u){s.critical=true}return s};this.getExtAdobeTimeStamp=function(v,y){if(v===undefined&&y===undefined){var x=this.getExtInfo("adobeTimeStamp");if(x===undefined){return undefined}v=b(this.hex,x.vidx);y=x.critical}var s={extname:"adobeTimeStamp"};if(y){s.critical=true}var u=n(v,0);if(u.length>1){var z=b(v,u[1]);var t=this.getGeneralName(z);if(t.uri!=undefined){s.uri=t.uri}}if(u.length>2){var w=b(v,u[2]);if(w=="0101ff"){s.reqauth=true}if(w=="010100"){s.reqauth=false}}return s};this.getX500NameRule=function(s){var z=true;var D=true;var C=false;var t="";var w="";var F=null;var A=[];for(var v=0;v<s.length;v++){var x=s[v];for(var u=0;u<x.length;u++){A.push(x[u])}}for(var v=0;v<A.length;v++){var E=A[v];var G=E.ds;var B=E.value;var y=E.type;t+=":"+G;if(G!="prn"&&G!="utf8"&&G!="ia5"){return"mixed"}if(G=="ia5"){if(y!="CN"){return"mixed"}else{if(!KJUR.lang.String.isMail(B)){return"mixed"}else{continue}}}if(y=="C"){if(G=="prn"){continue}else{return"mixed"}}w+=":"+G;if(F==null){F=G}else{if(F!==G){return"mixed"}}}if(F==null){return"prn"}else{return F}};this.getX500Name=function(v){var t=this.getX500NameArray(v);var u=this.dnarraytostr(t);return{array:t,str:u}};this.getX500NameArray=function(v){var s=[];var t=n(v,0);for(var u=0;u<t.length;u++){s.push(this.getRDN(b(v,t[u])))}return s};this.getRDN=function(v){var s=[];var t=n(v,0);for(var u=0;u<t.length;u++){s.push(this.getAttrTypeAndValue(b(v,t[u])))}return s};this.getAttrTypeAndValue=function(u){var s={type:null,value:null,ds:null};var t=n(u,0);var x=c(u,t[0],[],"06");var w=c(u,t[1],[]);var v=KJUR.asn1.ASN1Util.oidHexToInt(x);s.type=KJUR.asn1.x509.OID.oid2atype(v);s.value=hextorstr(w);s.ds=this.HEX2STAG[u.substr(t[1],2)];return s};this.readCertPEM=function(s){this.readCertHex(r(s))};this.readCertHex=function(s){this.hex=s;this.getVersion();try{h(this.hex,0,[0,7],"a3");this.parseExt()}catch(t){}};this.getParam=function(){var s={};s.version=this.getVersion();s.serial={hex:this.getSerialNumberHex()};s.sigalg=this.getSignatureAlgorithmField();s.issuer=this.getIssuer();s.notbefore=this.getNotBefore();s.notafter=this.getNotAfter();s.subject=this.getSubject();s.sbjpubkey=hextopem(this.getPublicKeyHex(),"PUBLIC KEY");if(this.aExtInfo.length>0){s.ext=this.getExtParamArray()}s.sighex=this.getSignatureValueHex();return s};this.getExtParamArray=function(t){if(t==undefined){var v=e(this.hex,0,[0,"[3]"]);if(v!=-1){t=l(this.hex,0,[0,"[3]",0],"30")}}var s=[];var u=n(t,0);for(var w=0;w<u.length;w++){var y=b(t,u[w]);var x=this.getExtParam(y);if(x!=null){s.push(x)}}return s};this.getExtParam=function(t){var A={};var v=n(t,0);var w=v.length;if(w!=2&&w!=3){throw new Error("wrong number elements in Extension: "+w+" "+t)}var u=m(c(t,0,[0],"06"));var y=false;if(w==3&&a(t,0,[1])=="0101ff"){y=true}var z=a(t,0,[w-1,0]);var x=undefined;if(u=="2.5.29.14"){x=this.getExtSubjectKeyIdentifier(z,y)}else{if(u=="2.5.29.15"){x=this.getExtKeyUsage(z,y)}else{if(u=="2.5.29.17"){x=this.getExtSubjectAltName(z,y)}else{if(u=="2.5.29.18"){x=this.getExtIssuerAltName(z,y)}else{if(u=="2.5.29.19"){x=this.getExtBasicConstraints(z,y)}else{if(u=="2.5.29.31"){x=this.getExtCRLDistributionPoints(z,y)}else{if(u=="2.5.29.32"){x=this.getExtCertificatePolicies(z,y)}else{if(u=="2.5.29.35"){x=this.getExtAuthorityKeyIdentifier(z,y)}else{if(u=="2.5.29.37"){x=this.getExtExtKeyUsage(z,y)}else{if(u=="1.3.6.1.5.5.7.1.1"){x=this.getExtAuthorityInfoAccess(z,y)}else{if(u=="2.5.29.20"){x=this.getExtCRLNumber(z,y)}else{if(u=="2.5.29.21"){x=this.getExtCRLReason(z,y)}else{if(u=="1.3.6.1.5.5.7.48.1.2"){x=this.getExtOcspNonce(z,y)}else{if(u=="1.3.6.1.5.5.7.48.1.5"){x=this.getExtOcspNoCheck(z,y)}else{if(u=="1.2.840.113583.1.1.9.1"){x=this.getExtAdobeTimeStamp(z,y)}}}}}}}}}}}}}}}if(x!=undefined){return x}var s={extname:u,extn:z};if(y){s.critical=true}return s};this.findExt=function(t,u){for(var s=0;s<t.length;s++){if(t[s].extname==u){return t[s]}}return null};this.updateExtCDPFullURI=function(w,s){var v=this.findExt(w,"cRLDistributionPoints");if(v==null){return}if(v.array==undefined){return}var y=v.array;for(var u=0;u<y.length;u++){if(y[u].dpname==undefined){continue}if(y[u].dpname.full==undefined){continue}var z=y[u].dpname.full;for(var t=0;t<z.length;t++){var x=z[u];if(x.uri==undefined){continue}x.uri=s}}};this.updateExtAIAOCSP=function(w,t){var v=this.findExt(w,"authorityInfoAccess");if(v==null){return}if(v.array==undefined){return}var s=v.array;for(var u=0;u<s.length;u++){if(s[u].ocsp!=undefined){s[u].ocsp=t}}};this.updateExtAIACAIssuer=function(w,t){var v=this.findExt(w,"authorityInfoAccess");if(v==null){return}if(v.array==undefined){return}var s=v.array;for(var u=0;u<s.length;u++){if(s[u].caissuer!=undefined){s[u].caissuer=t}}};this.dnarraytostr=function(u){function s(v){return v.map(function(w){return t(w)}).join("+")}function t(v){return v.type+"="+v.value}return"/"+u.map(function(v){return s(v)}).join("/")};this.getInfo=function(){var u=function(M){var L=JSON.stringify(M.array).replace(/[\[\]\{\}\"]/g,"");return L};var A=function(R){var P="";var L=R.array;for(var O=0;O<L.length;O++){var Q=L[O];P+=" policy oid: "+Q.policyoid+"\n";if(Q.array===undefined){continue}for(var N=0;N<Q.array.length;N++){var M=Q.array[N];if(M.cps!==undefined){P+=" cps: "+M.cps+"\n"}}}return P};var D=function(P){var O="";var L=P.array;for(var N=0;N<L.length;N++){var Q=L[N];try{if(Q.dpname.full[0].uri!==undefined){O+=" "+Q.dpname.full[0].uri+"\n"}}catch(M){}try{if(Q.dname.full[0].dn.hex!==undefined){O+=" "+X509.hex2dn(Q.dpname.full[0].dn.hex)+"\n"}}catch(M){}}return O};var B=function(P){var O="";var L=P.array;for(var M=0;M<L.length;M++){var N=L[M];if(N.caissuer!==undefined){O+=" caissuer: "+N.caissuer+"\n"}if(N.ocsp!==undefined){O+=" ocsp: "+N.ocsp+"\n"}}return O};var v=X509;var F,E,K;F="Basic Fields\n";F+=" serial number: "+this.getSerialNumberHex()+"\n";F+=" signature algorithm: "+this.getSignatureAlgorithmField()+"\n";F+=" issuer: "+this.getIssuerString()+"\n";F+=" notBefore: "+this.getNotBefore()+"\n";F+=" notAfter: "+this.getNotAfter()+"\n";F+=" subject: "+this.getSubjectString()+"\n";F+=" subject public key info: \n";E=this.getPublicKey();F+=" key algorithm: "+E.type+"\n";if(E.type==="RSA"){F+=" n="+hextoposhex(E.n.toString(16)).substr(0,16)+"...\n";F+=" e="+hextoposhex(E.e.toString(16))+"\n"}K=this.aExtInfo;if(K!==undefined&&K!==null){F+="X509v3 Extensions:\n";for(var H=0;H<K.length;H++){var J=K[H];var t=KJUR.asn1.x509.OID.oid2name(J.oid);if(t===""){t=J.oid}var G="";if(J.critical===true){G="CRITICAL"}F+=" "+t+" "+G+":\n";if(t==="basicConstraints"){var w=this.getExtBasicConstraints();if(w.cA===undefined){F+=" {}\n"}else{F+=" cA=true";if(w.pathLen!==undefined){F+=", pathLen="+w.pathLen}F+="\n"}}else{if(t==="keyUsage"){F+=" "+this.getExtKeyUsageString()+"\n"}else{if(t==="subjectKeyIdentifier"){F+=" "+this.getExtSubjectKeyIdentifier().kid.hex+"\n"}else{if(t==="authorityKeyIdentifier"){var x=this.getExtAuthorityKeyIdentifier();if(x.kid!==undefined){F+=" kid="+x.kid.hex+"\n"}}else{if(t==="extKeyUsage"){var I=this.getExtExtKeyUsage().array;F+=" "+I.join(", ")+"\n"}else{if(t==="subjectAltName"){var y=u(this.getExtSubjectAltName());F+=" "+y+"\n"}else{if(t==="cRLDistributionPoints"){var C=this.getExtCRLDistributionPoints();F+=D(C)}else{if(t==="authorityInfoAccess"){var z=this.getExtAuthorityInfoAccess();F+=B(z)}else{if(t==="certificatePolicies"){F+=A(this.getExtCertificatePolicies())}}}}}}}}}}}F+="signature algorithm: "+this.getSignatureAlgorithmName()+"\n";F+="signature: "+this.getSignatureValueHex().substr(0,16)+"...\n";return F};if(typeof q=="string"){if(q.indexOf("-----BEGIN")!=-1){this.readCertPEM(q)}else{if(KJUR.lang.String.isHex(q)){this.readCertHex(q)}}}}X509.hex2dn=function(f,b){if(b===undefined){b=0}if(f.substr(b,2)!=="30"){throw new Error("malformed DN")}var c=new Array();var d=ASN1HEX.getChildIdx(f,b);for(var e=0;e<d.length;e++){c.push(X509.hex2rdn(f,d[e]))}c=c.map(function(a){return a.replace("/","\\/")});return"/"+c.join("/")};X509.hex2rdn=function(f,b){if(b===undefined){b=0}if(f.substr(b,2)!=="31"){throw new Error("malformed RDN")}var c=new Array();var d=ASN1HEX.getChildIdx(f,b);for(var e=0;e<d.length;e++){c.push(X509.hex2attrTypeValue(f,d[e]))}c=c.map(function(a){return a.replace("+","\\+")});return c.join("+")};X509.hex2attrTypeValue=function(d,i){var j=ASN1HEX;var h=j.getV;if(i===undefined){i=0}if(d.substr(i,2)!=="30"){throw new Error("malformed attribute type and value")}var g=j.getChildIdx(d,i);if(g.length!==2||d.substr(g[0],2)!=="06"){"malformed attribute type and value"}var b=h(d,g[0]);var f=KJUR.asn1.ASN1Util.oidHexToInt(b);var e=KJUR.asn1.x509.OID.oid2atype(f);var a=h(d,g[1]);var c=hextorstr(a);return e+"="+c};X509.getPublicKeyFromCertHex=function(b){var a=new X509();a.readCertHex(b);return a.getPublicKey()};X509.getPublicKeyFromCertPEM=function(b){var a=new X509();a.readCertPEM(b);return a.getPublicKey()};X509.getPublicKeyInfoPropOfCertPEM=function(c){var e=ASN1HEX;var g=e.getVbyList;var b={};var a,f,d;b.algparam=null;a=new X509();a.readCertPEM(c);f=a.getPublicKeyHex();b.keyhex=g(f,0,[1],"03").substr(2);b.algoid=g(f,0,[0,0],"06");if(b.algoid==="2a8648ce3d0201"){b.algparam=g(f,0,[0,1],"06")}return b};X509.KEYUSAGE_NAME=["digitalSignature","nonRepudiation","keyEncipherment","dataEncipherment","keyAgreement","keyCertSign","cRLSign","encipherOnly","decipherOnly"];