(function(){"use strict";varX509=window.X509={};varASN1=window.ASN1;varEnc=window.Encoding;varOBJ_ID_EC="06 08 2A8648CE3D030107".replace(/\s+/g,"").toLowerCase();varOBJ_ID_EC_384="06 05 2B81040022".replace(/\s+/g,"").toLowerCase();X509.parsePkcs1=functionparseRsaPkcs1(asn1,jwk){if(!jwk){jwk={}}if(asn1.byteLength){asn1=ASN1.parse({der:asn1,verbose:true,json:false})}if(!asn1.children.every(function(el){return2===el.type})){thrownewError("not an RSA PKCS#1 public or private key (not all ints)")}if(2===asn1.children.length){jwk.n=Enc.bufToUrlBase64(asn1.children[0].value);jwk.e=Enc.bufToUrlBase64(asn1.children[1].value);jwk.kty="RSA"}elseif(asn1.children.length>=9){jwk.n=Enc.bufToUrlBase64(asn1.children[1].value);jwk.e=Enc.bufToUrlBase64(asn1.children[2].value);jwk.d=Enc.bufToUrlBase64(asn1.children[3].value);jwk.p=Enc.bufToUrlBase64(asn1.children[4].value);jwk.q=Enc.bufToUrlBase64(asn1.children[5].value);jwk.dp=Enc.bufToUrlBase64(asn1.children[6].value);jwk.dq=Enc.bufToUrlBase64(asn1.children[7].value);jwk.qi=Enc.bufToUrlBase64(asn1.children[8].value);jwk.kty="RSA"}else{thrownewError("not an RSA PKCS#1 public or private key (wrong number of ints)")}returnjwk};X509.parseSec1=functionparseEcOnlyPrivkey(u8,jwk){varindex=7;varlen=32;varolen=OBJ_ID_EC.length/2;if("P-384"===jwk.crv){olen=OBJ_ID_EC_384.length/2;index=8;len=48}if(len!==u8[index-1]){thrownewError("Unexpected bitlength "+len)}vard=u8.slice(index,index+len);varci=index+len+2+olen+2+3;varc=u8[ci];varx,y;if(4===c){y=u8.slice(ci+1+len,ci+1+len+len)}elseif(2!==c){thrownewError("not a supported EC private key")}x=u8.slice(ci+1,ci+1+len);return{kty:jwk.kty||"EC",crv:jwk.crv||"P-256",d:Enc.bufToUrlBase64(d),x:Enc.bufToUrlBase64(x),y:Enc.bufToUrlBase64(y)}};X509.parsePkcs8=function(u8,jwk){try{returnX509.parseRsaPkcs8(u8,jwk)}catch(e){returnX509.parseEcPkcs8(u8,jwk)}};X509.parseEcPkcs8=functionparseEcPkcs8(u8,jwk){varindex=24+OBJ_ID_EC.length/2;varlen=32;if("P-384"===jwk.crv){index=24+OBJ_ID_EC_384.length/2+2;len=48}if(4!==u8[index]){thrownewError("privkey not found")}vard=u8.slice(index+2,index+2+len);varci=index+2+len+5;varxi=ci+1;varx=u8.slice(xi,xi+len);varyi=xi+len;vary;if(4===u8[ci]){y=u8.slice(yi,yi+len)}elseif(2!==u8[ci]){thrownewError("invalid compression bit (expected 0x04 or 0x02)")}return{kty:jwk.kty||"EC",crv:jwk.crv||"P-256",d:Enc.bufToUrlBase64(d),x:Enc.bufToUrlBase64(x),y:Enc.bufToUrlBase64(y)}};X509.parseRsaPkcs8=functionparseRsaPkcs8(asn1,jwk){if(!jwk){jwk={}}if(asn1.byteLength){asn1=ASN1.parse({der:asn1,verbose:true,json:false})}if(2===asn1.children.length&&3===asn1.children[1].type){asn1=asn1.children[1].children[0];jwk.n=Enc.bufToUrlBase64(asn1.children[0].value);jwk.e=Enc.bufToUrlBase64(asn1.children[1].value);jwk.kty="RSA"}elseif(3===asn1.children.length&&4===asn1.children[2].type&&48===asn1.children[2].children[0].type&&2===asn1.children[2].children[0].children[0].type){asn1=asn1.children[2].children[0];jwk.n=Enc.bufToUrlBase64(asn1.children[1].value);jwk.e=Enc.bufToUrlBase64(asn1.children[2].value);jwk.d=Enc.bufToUrlBase64(asn1.children[3].value);jwk.p=Enc.bufToUrlBase64(asn1.children[4].value);jwk.q=Enc.bufToUrlBase64(asn1.children[5].value);jwk.dp=Enc.bufToUrlBase64(asn1.children[6].value);jwk.dq=Enc.bufToUrlBase64(asn1.children[7].value);jwk.qi=Enc.bufToUrlBase64(asn1.children[8].value);jwk.kty="RSA"}else{thrownewError("not an RSA PKCS#8 public or private key (wrong format)")}returnjwk};X509.parseSpki=function(buf,jwk){try{returnX509.parseRsaPkcs8(buf,jwk)}catch(e){returnX509.parseEcSpki(buf,jwk)}};X509.parseEcSpki=function(u8,jwk){varci=16+OBJ_ID_EC.length/2;varlen=32;if("P-384"===jwk.crv){ci=16+OBJ_ID_EC_384.length/2;len=48}varc=u8[ci];varxi=ci+1;varx=u8.slice(xi,xi+len);varyi=xi+len;vary;if(4===c){y=u8.slice(yi,yi+len)}elseif(2!==c){thrownewError("not a supported EC private key")}return{kty:jwk.kty||"EC",crv:jwk.crv||"P-256",x:Enc.bufToUrlBase64(x),y:Enc.bufToUrlBase64(y)}};X509.parsePkix=X509.parseSpki;X509._parseRsa=function(asn1){if(asn1.byteLength){asn1=ASN1.parse({der:asn1,verbose: