forked from kjur/jsrsasign
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathx509-1.1.min.js
1 lines (1 loc) · 19.8 KB
/
x509-1.1.min.js
1
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,s=j.getInt,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}var u=a(this.hex,0,[0,0]);if(u.substr(0,2)=="a0"){var v=a(u,0,[0]);var t=s(v,0);if(t<0||2<t){throw new Error("malformed version field")}this.version=t+1;return this.version}else{this.version=1;this.foffset=-1;return 1}};this.getSerialNumberHex=function(){return k(this.hex,0,[0,0],"02")};this.getSignatureAlgorithmField=function(){var t=l(this.hex,0,[0,1]);return this.getAlgorithmIdentifierName(t)};this.getAlgorithmIdentifierName=function(t){for(var u in f){if(t===f[u]){return u}}return p(k(t,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(){var t=this.getIssuer();return t.str};this.getSubject=function(){return this.getX500Name(this.getSubjectHex())};this.getSubjectHex=function(){return a(this.hex,0,[0,5+this.foffset],"30")};this.getSubjectString=function(){var t=this.getSubject();return t.str};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 t=this.getPublicKeyIdx();return h(this.hex,t,[1,0],"30")};this.getPublicKey=function(){return KEYUTIL.getKey(this.getPublicKeyHex(),null,"pkcs8pub")};this.getSignatureAlgorithmName=function(){var t=a(this.hex,0,[1],"30");return this.getAlgorithmIdentifierName(t)};this.getSignatureValueHex=function(){return c(this.hex,0,[2],"03",true)};this.verifySignature=function(v){var w=this.getSignatureAlgorithmField();var t=this.getSignatureValueHex();var u=a(this.hex,0,[0],"30");var x=new KJUR.crypto.Signature({alg:w});x.init(v);x.updateHex(u);return x.verify(t)};this.parseExt=function(C){var v,t,x;if(C===undefined){x=this.hex;if(this.version!==3){return -1}v=h(x,0,[0,7,0],"30");t=n(x,v)}else{x=pemtohex(C);var y=h(x,0,[0,3,0,0],"06");if(g(x,y)!="2a864886f70d01090e"){this.aExtInfo=new Array();return}v=h(x,0,[0,3,0,1,0],"30");t=n(x,v);this.hex=x}this.aExtInfo=new Array();for(var w=0;w<t.length;w++){var A={};A.critical=false;var z=n(x,t[w]);var u=0;if(z.length===3){A.critical=true;u=1}A.oid=j.hextooidstr(c(x,t[w],[0],"06"));var B=h(x,t[w],[1+u]);A.vidx=i(x,B);this.aExtInfo.push(A)}};this.getExtInfo=function(v){var t=this.aExtInfo;var w=v;if(!v.match(/^[0-9.]+$/)){w=KJUR.asn1.x509.OID.name2oid(v)}if(w===""){return undefined}for(var u=0;u<t.length;u++){if(t[u].oid===w){return t[u]}}return undefined};this.getExtBasicConstraints=function(u,y){if(u===undefined&&y===undefined){var w=this.getExtInfo("basicConstraints");if(w===undefined){return undefined}u=b(this.hex,w.vidx);y=w.critical}var t={extname:"basicConstraints"};if(y){t.critical=true}if(u==="3000"){return t}if(u==="30030101ff"){t.cA=true;return t}if(u.substr(0,12)==="30060101ff02"){var x=g(u,10);var v=parseInt(x,16);t.cA=true;t.pathLen=v;return t}throw new Error("hExtV parse error: "+u)};this.getExtKeyUsage=function(u,w){if(u===undefined&&w===undefined){var v=this.getExtInfo("keyUsage");if(v===undefined){return undefined}u=b(this.hex,v.vidx);w=v.critical}var t={extname:"keyUsage"};if(w){t.critical=true}t.names=this.getExtKeyUsageString(u).split(",");return t};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(v){var w=this.getExtKeyUsageBin(v);var t=new Array();for(var u=0;u<w.length;u++){if(w.substr(u,1)=="1"){t.push(X509.KEYUSAGE_NAME[u])}}return t.join(",")};this.getExtSubjectKeyIdentifier=function(v,x){if(v===undefined&&x===undefined){var w=this.getExtInfo("subjectKeyIdentifier");if(w===undefined){return undefined}v=b(this.hex,w.vidx);x=w.critical}var t={extname:"subjectKeyIdentifier"};if(x){t.critical=true}var u=g(v,0);t.kid={hex:u};return t};this.getExtAuthorityKeyIdentifier=function(z,x){if(z===undefined&&x===undefined){var t=this.getExtInfo("authorityKeyIdentifier");if(t===undefined){return undefined}z=b(this.hex,t.vidx);x=t.critical}var A={extname:"authorityKeyIdentifier"};if(x){A.critical=true}var y=n(z,0);for(var u=0;u<y.length;u++){var B=z.substr(y[u],2);if(B==="80"){A.kid={hex:g(z,y[u])}}if(B==="a1"){var w=b(z,y[u]);var v=this.getGeneralNames(w);A.issuer=v[0]["dn"]}if(B==="82"){A.sn={hex:g(z,y[u])}}}return A};this.getExtExtKeyUsage=function(w,y){if(w===undefined&&y===undefined){var x=this.getExtInfo("extKeyUsage");if(x===undefined){return undefined}w=b(this.hex,x.vidx);y=x.critical}var t={extname:"extKeyUsage",array:[]};if(y){t.critical=true}var u=n(w,0);for(var v=0;v<u.length;v++){t.array.push(p(g(w,u[v])))}return t};this.getExtExtKeyUsageName=function(){var x=this.getExtInfo("extKeyUsage");if(x===undefined){return x}var t=new Array();var w=b(this.hex,x.vidx);if(w===""){return t}var u=n(w,0);for(var v=0;v<u.length;v++){t.push(p(g(w,u[v])))}return t};this.getExtSubjectAltName=function(u,w){if(u===undefined&&w===undefined){var v=this.getExtInfo("subjectAltName");if(v===undefined){return undefined}u=b(this.hex,v.vidx);w=v.critical}var t={extname:"subjectAltName",array:[]};if(w){t.critical=true}t.array=this.getGeneralNames(u);return t};this.getExtIssuerAltName=function(u,w){if(u===undefined&&w===undefined){var v=this.getExtInfo("issuerAltName");if(v===undefined){return undefined}u=b(this.hex,v.vidx);w=v.critical}var t={extname:"issuerAltName",array:[]};if(w){t.critical=true}t.array=this.getGeneralNames(u);return t};this.getGeneralNames=function(x){var v=n(x,0);var t=[];for(var w=0;w<v.length;w++){var u=this.getGeneralName(b(x,v[w]));if(u!==undefined){t.push(u)}}return t};this.getGeneralName=function(u){var t=u.substr(0,2);var w=g(u,0);var v=hextorstr(w);if(t=="81"){return{rfc822:v}}if(t=="82"){return{dns:v}}if(t=="86"){return{uri:v}}if(t=="87"){return{ip:hextoip(w)}}if(t=="a4"){return{dn:this.getX500Name(w)}}return undefined};this.getExtSubjectAltName2=function(){var x,A,z;var y=this.getExtInfo("subjectAltName");if(y===undefined){return y}var t=new Array();var w=b(this.hex,y.vidx);var u=n(w,0);for(var v=0;v<u.length;v++){z=w.substr(u[v],2);x=g(w,u[v]);if(z==="81"){A=hextoutf8(x);t.push(["MAIL",A])}if(z==="82"){A=hextoutf8(x);t.push(["DNS",A])}if(z==="84"){A=X509.hex2dn(x,0);t.push(["DN",A])}if(z==="86"){A=hextoutf8(x);t.push(["URI",A])}if(z==="87"){A=hextoip(x);t.push(["IP",A])}}return t};this.getExtCRLDistributionPoints=function(x,z){if(x===undefined&&z===undefined){var y=this.getExtInfo("cRLDistributionPoints");if(y===undefined){return undefined}x=b(this.hex,y.vidx);z=y.critical}var u={extname:"cRLDistributionPoints",array:[]};if(z){u.critical=true}var v=n(x,0);for(var w=0;w<v.length;w++){var t=b(x,v[w]);u.array.push(this.getDistributionPoint(t))}return u};this.getDistributionPoint=function(y){var v={};var w=n(y,0);for(var x=0;x<w.length;x++){var u=y.substr(w[x],2);var t=b(y,w[x]);if(u=="a0"){v.dpname=this.getDistributionPointName(t)}}return v};this.getDistributionPointName=function(y){var v={};var w=n(y,0);for(var x=0;x<w.length;x++){var u=y.substr(w[x],2);var t=b(y,w[x]);if(u=="a0"){v.full=this.getGeneralNames(t)}}return v};this.getExtCRLDistributionPointsURI=function(){var y=this.getExtInfo("cRLDistributionPoints");if(y===undefined){return y}var t=new Array();var u=n(this.hex,y.vidx);for(var w=0;w<u.length;w++){try{var z=c(this.hex,u[w],[0,0,0],"86");var x=hextoutf8(z);t.push(x)}catch(v){}}return t};this.getExtAIAInfo=function(){var x=this.getExtInfo("authorityInfoAccess");if(x===undefined){return x}var t={ocsp:[],caissuer:[]};var u=n(this.hex,x.vidx);for(var v=0;v<u.length;v++){var y=c(this.hex,u[v],[0],"06");var w=c(this.hex,u[v],[1],"86");if(y==="2b06010505073001"){t.ocsp.push(hextoutf8(w))}if(y==="2b06010505073002"){t.caissuer.push(hextoutf8(w))}}return t};this.getExtAuthorityInfoAccess=function(A,y){if(A===undefined&&y===undefined){var t=this.getExtInfo("authorityInfoAccess");if(t===undefined){return undefined}A=b(this.hex,t.vidx);y=t.critical}var B={extname:"authorityInfoAccess",array:[]};if(y){B.critical=true}var z=n(A,0);for(var u=0;u<z.length;u++){var x=k(A,z[u],[0],"06");var v=c(A,z[u],[1],"86");var w=hextoutf8(v);if(x=="2b06010505073001"){B.array.push({ocsp:w})}else{if(x=="2b06010505073002"){B.array.push({caissuer:w})}else{throw new Error("unknown method: "+x)}}}return B};this.getExtCertificatePolicies=function(x,A){if(x===undefined&&A===undefined){var z=this.getExtInfo("certificatePolicies");if(z===undefined){return undefined}x=b(this.hex,z.vidx);A=z.critical}var t={extname:"certificatePolicies",array:[]};if(A){t.critical=true}var u=n(x,0);for(var v=0;v<u.length;v++){var y=b(x,u[v]);var w=this.getPolicyInformation(y);t.array.push(w)}return t};this.getPolicyInformation=function(x){var t={};var z=c(x,0,[0],"06");t.policyoid=p(z);var A=e(x,0,[1],"30");if(A!=-1){t.array=[];var u=n(x,A);for(var v=0;v<u.length;v++){var y=b(x,u[v]);var w=this.getPolicyQualifierInfo(y);t.array.push(w)}}return t};this.getPolicyQualifierInfo=function(u){var t={};var v=c(u,0,[0],"06");if(v==="2b06010505070201"){var x=k(u,0,[1],"16");t.cps=hextorstr(x)}else{if(v==="2b06010505070202"){var w=a(u,0,[1],"30");t.unotice=this.getUserNotice(w)}}return t};this.getUserNotice=function(x){var u={};var v=n(x,0);for(var w=0;w<v.length;w++){var t=b(x,v[w]);if(t.substr(0,2)!="30"){u.exptext=this.getDisplayText(t)}}return u};this.getDisplayText=function(u){var v={"0c":"utf8","16":"ia5","1a":"vis","1e":"bmp"};var t={};t.type=v[u.substr(0,2)];t.str=hextorstr(g(u,0));return t};this.getExtCRLNumber=function(u,v){var t={extname:"cRLNumber"};if(v){t.critical=true}if(u.substr(0,2)=="02"){t.num={hex:g(u,0)};return t}throw new Error("hExtV parse error: "+u)};this.getExtCRLReason=function(u,v){var t={extname:"cRLReason"};if(v){t.critical=true}if(u.substr(0,2)=="0a"){t.code=parseInt(g(u,0),16);return t}throw new Error("hExtV parse error: "+u)};this.getExtOcspNonce=function(u,w){var t={extname:"ocspNonce"};if(w){t.critical=true}var v=g(u,0);t.hex=v;return t};this.getExtOcspNoCheck=function(u,v){var t={extname:"ocspNoCheck"};if(v){t.critical=true}return t};this.getExtAdobeTimeStamp=function(w,z){if(w===undefined&&z===undefined){var y=this.getExtInfo("adobeTimeStamp");if(y===undefined){return undefined}w=b(this.hex,y.vidx);z=y.critical}var t={extname:"adobeTimeStamp"};if(z){t.critical=true}var v=n(w,0);if(v.length>1){var A=b(w,v[1]);var u=this.getGeneralName(A);if(u.uri!=undefined){t.uri=u.uri}}if(v.length>2){var x=b(w,v[2]);if(x=="0101ff"){t.reqauth=true}if(x=="010100"){t.reqauth=false}}return t};this.getX500NameRule=function(t){var A=true;var E=true;var D=false;var u="";var x="";var G=null;var B=[];for(var w=0;w<t.length;w++){var y=t[w];for(var v=0;v<y.length;v++){B.push(y[v])}}for(var w=0;w<B.length;w++){var F=B[w];var H=F.ds;var C=F.value;var z=F.type;u+=":"+H;if(H!="prn"&&H!="utf8"&&H!="ia5"){return"mixed"}if(H=="ia5"){if(z!="CN"){return"mixed"}else{if(!KJUR.lang.String.isMail(C)){return"mixed"}else{continue}}}if(z=="C"){if(H=="prn"){continue}else{return"mixed"}}x+=":"+H;if(G==null){G=H}else{if(G!==H){return"mixed"}}}if(G==null){return"prn"}else{return G}};this.getX500Name=function(v){var t=this.getX500NameArray(v);var u=this.dnarraytostr(t);return{array:t,str:u}};this.getX500NameArray=function(w){var t=[];var u=n(w,0);for(var v=0;v<u.length;v++){t.push(this.getRDN(b(w,u[v])))}return t};this.getRDN=function(w){var t=[];var u=n(w,0);for(var v=0;v<u.length;v++){t.push(this.getAttrTypeAndValue(b(w,u[v])))}return t};this.getAttrTypeAndValue=function(v){var t={type:null,value:null,ds:null};var u=n(v,0);var y=c(v,u[0],[],"06");var x=c(v,u[1],[]);var w=KJUR.asn1.ASN1Util.oidHexToInt(y);t.type=KJUR.asn1.x509.OID.oid2atype(w);t.ds=this.HEX2STAG[v.substr(u[1],2)];if(t.ds!="bmp"){t.value=hextoutf8(x)}else{t.value=ucs2hextoutf8(x)}return t};this.readCertPEM=function(t){this.readCertHex(r(t))};this.readCertHex=function(t){this.hex=t;this.getVersion();try{h(this.hex,0,[0,7],"a3");this.parseExt()}catch(u){}};this.getParam=function(){var t={};t.version=this.getVersion();t.serial={hex:this.getSerialNumberHex()};t.sigalg=this.getSignatureAlgorithmField();t.issuer=this.getIssuer();t.notbefore=this.getNotBefore();t.notafter=this.getNotAfter();t.subject=this.getSubject();t.sbjpubkey=hextopem(this.getPublicKeyHex(),"PUBLIC KEY");if(this.aExtInfo.length>0){t.ext=this.getExtParamArray()}t.sighex=this.getSignatureValueHex();return t};this.getExtParamArray=function(u){if(u==undefined){var w=e(this.hex,0,[0,"[3]"]);if(w!=-1){u=l(this.hex,0,[0,"[3]",0],"30")}}var t=[];var v=n(u,0);for(var x=0;x<v.length;x++){var z=b(u,v[x]);var y=this.getExtParam(z);if(y!=null){t.push(y)}}return t};this.getExtParam=function(u){var B={};var w=n(u,0);var x=w.length;if(x!=2&&x!=3){throw new Error("wrong number elements in Extension: "+x+" "+u)}var v=m(c(u,0,[0],"06"));var z=false;if(x==3&&a(u,0,[1])=="0101ff"){z=true}var A=a(u,0,[x-1,0]);var y=undefined;if(v=="2.5.29.14"){y=this.getExtSubjectKeyIdentifier(A,z)}else{if(v=="2.5.29.15"){y=this.getExtKeyUsage(A,z)}else{if(v=="2.5.29.17"){y=this.getExtSubjectAltName(A,z)}else{if(v=="2.5.29.18"){y=this.getExtIssuerAltName(A,z)}else{if(v=="2.5.29.19"){y=this.getExtBasicConstraints(A,z)}else{if(v=="2.5.29.31"){y=this.getExtCRLDistributionPoints(A,z)}else{if(v=="2.5.29.32"){y=this.getExtCertificatePolicies(A,z)}else{if(v=="2.5.29.35"){y=this.getExtAuthorityKeyIdentifier(A,z)}else{if(v=="2.5.29.37"){y=this.getExtExtKeyUsage(A,z)}else{if(v=="1.3.6.1.5.5.7.1.1"){y=this.getExtAuthorityInfoAccess(A,z)}else{if(v=="2.5.29.20"){y=this.getExtCRLNumber(A,z)}else{if(v=="2.5.29.21"){y=this.getExtCRLReason(A,z)}else{if(v=="1.3.6.1.5.5.7.48.1.2"){y=this.getExtOcspNonce(A,z)}else{if(v=="1.3.6.1.5.5.7.48.1.5"){y=this.getExtOcspNoCheck(A,z)}else{if(v=="1.2.840.113583.1.1.9.1"){y=this.getExtAdobeTimeStamp(A,z)}}}}}}}}}}}}}}}if(y!=undefined){return y}var t={extname:v,extn:A};if(z){t.critical=true}return t};this.findExt=function(u,v){for(var t=0;t<u.length;t++){if(u[t].extname==v){return u[t]}}return null};this.updateExtCDPFullURI=function(x,t){var w=this.findExt(x,"cRLDistributionPoints");if(w==null){return}if(w.array==undefined){return}var z=w.array;for(var v=0;v<z.length;v++){if(z[v].dpname==undefined){continue}if(z[v].dpname.full==undefined){continue}var A=z[v].dpname.full;for(var u=0;u<A.length;u++){var y=A[v];if(y.uri==undefined){continue}y.uri=t}}};this.updateExtAIAOCSP=function(x,u){var w=this.findExt(x,"authorityInfoAccess");if(w==null){return}if(w.array==undefined){return}var t=w.array;for(var v=0;v<t.length;v++){if(t[v].ocsp!=undefined){t[v].ocsp=u}}};this.updateExtAIACAIssuer=function(x,u){var w=this.findExt(x,"authorityInfoAccess");if(w==null){return}if(w.array==undefined){return}var t=w.array;for(var v=0;v<t.length;v++){if(t[v].caissuer!=undefined){t[v].caissuer=u}}};this.dnarraytostr=function(v){function t(w){return w.map(function(y){return u(y).replace(/\+/,"\\+")}).join("+")}function u(w){return w.type+"="+w.value}return"/"+v.map(function(w){return t(w).replace(/\//,"\\/")}).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(e,b){if(b===undefined){b=0}var a=new X509();var c=ASN1HEX.getTLV(e,b);var d=a.getX500Name(e);return d.str};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"];