UNPKG

@peculiar/fortify-webcomponents

Version:

Web-components for creating CSR or Certificate and viewing certificates list using Fortify

1,076 lines (1,060 loc) 504 kB
/*! * © Peculiar Ventures https://peculiarventures.com/ - BSD 3-Clause License */ var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; var dayjs_min = {exports: {}}; (function (module, exports) { !function(t,e){module.exports=e();}(commonjsGlobal,(function(){var t=1e3,e=6e4,n=36e5,r="millisecond",i="second",s="minute",u="hour",a="day",o="week",c="month",f="quarter",h="year",d="date",l="Invalid Date",$=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,y=/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,M={name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),ordinal:function(t){var e=["th","st","nd","rd"],n=t%100;return "["+t+(e[(n-20)%10]||e[n]||e[0])+"]"}},m=function(t,e,n){var r=String(t);return !r||r.length>=e?t:""+Array(e+1-r.length).join(n)+t},v={s:m,z:function(t){var e=-t.utcOffset(),n=Math.abs(e),r=Math.floor(n/60),i=n%60;return (e<=0?"+":"-")+m(r,2,"0")+":"+m(i,2,"0")},m:function t(e,n){if(e.date()<n.date())return -t(n,e);var r=12*(n.year()-e.year())+(n.month()-e.month()),i=e.clone().add(r,c),s=n-i<0,u=e.clone().add(r+(s?-1:1),c);return +(-(r+(n-i)/(s?i-u:u-i))||0)},a:function(t){return t<0?Math.ceil(t)||0:Math.floor(t)},p:function(t){return {M:c,y:h,w:o,d:a,D:d,h:u,m:s,s:i,ms:r,Q:f}[t]||String(t||"").toLowerCase().replace(/s$/,"")},u:function(t){return void 0===t}},g="en",D={};D[g]=M;var p="$isDayjsObject",S=function(t){return t instanceof _||!(!t||!t[p])},w=function t(e,n,r){var i;if(!e)return g;if("string"==typeof e){var s=e.toLowerCase();D[s]&&(i=s),n&&(D[s]=n,i=s);var u=e.split("-");if(!i&&u.length>1)return t(u[0])}else {var a=e.name;D[a]=e,i=a;}return !r&&i&&(g=i),i||!r&&g},O=function(t,e){if(S(t))return t.clone();var n="object"==typeof e?e:{};return n.date=t,n.args=arguments,new _(n)},b=v;b.l=w,b.i=S,b.w=function(t,e){return O(t,{locale:e.$L,utc:e.$u,x:e.$x,$offset:e.$offset})};var _=function(){function M(t){this.$L=w(t.locale,null,!0),this.parse(t),this.$x=this.$x||t.x||{},this[p]=!0;}var m=M.prototype;return m.parse=function(t){this.$d=function(t){var e=t.date,n=t.utc;if(null===e)return new Date(NaN);if(b.u(e))return new Date;if(e instanceof Date)return new Date(e);if("string"==typeof e&&!/Z$/i.test(e)){var r=e.match($);if(r){var i=r[2]-1||0,s=(r[7]||"0").substring(0,3);return n?new Date(Date.UTC(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)):new Date(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)}}return new Date(e)}(t),this.init();},m.init=function(){var t=this.$d;this.$y=t.getFullYear(),this.$M=t.getMonth(),this.$D=t.getDate(),this.$W=t.getDay(),this.$H=t.getHours(),this.$m=t.getMinutes(),this.$s=t.getSeconds(),this.$ms=t.getMilliseconds();},m.$utils=function(){return b},m.isValid=function(){return !(this.$d.toString()===l)},m.isSame=function(t,e){var n=O(t);return this.startOf(e)<=n&&n<=this.endOf(e)},m.isAfter=function(t,e){return O(t)<this.startOf(e)},m.isBefore=function(t,e){return this.endOf(e)<O(t)},m.$g=function(t,e,n){return b.u(t)?this[e]:this.set(n,t)},m.unix=function(){return Math.floor(this.valueOf()/1e3)},m.valueOf=function(){return this.$d.getTime()},m.startOf=function(t,e){var n=this,r=!!b.u(e)||e,f=b.p(t),l=function(t,e){var i=b.w(n.$u?Date.UTC(n.$y,e,t):new Date(n.$y,e,t),n);return r?i:i.endOf(a)},$=function(t,e){return b.w(n.toDate()[t].apply(n.toDate("s"),(r?[0,0,0,0]:[23,59,59,999]).slice(e)),n)},y=this.$W,M=this.$M,m=this.$D,v="set"+(this.$u?"UTC":"");switch(f){case h:return r?l(1,0):l(31,11);case c:return r?l(1,M):l(0,M+1);case o:var g=this.$locale().weekStart||0,D=(y<g?y+7:y)-g;return l(r?m-D:m+(6-D),M);case a:case d:return $(v+"Hours",0);case u:return $(v+"Minutes",1);case s:return $(v+"Seconds",2);case i:return $(v+"Milliseconds",3);default:return this.clone()}},m.endOf=function(t){return this.startOf(t,!1)},m.$set=function(t,e){var n,o=b.p(t),f="set"+(this.$u?"UTC":""),l=(n={},n[a]=f+"Date",n[d]=f+"Date",n[c]=f+"Month",n[h]=f+"FullYear",n[u]=f+"Hours",n[s]=f+"Minutes",n[i]=f+"Seconds",n[r]=f+"Milliseconds",n)[o],$=o===a?this.$D+(e-this.$W):e;if(o===c||o===h){var y=this.clone().set(d,1);y.$d[l]($),y.init(),this.$d=y.set(d,Math.min(this.$D,y.daysInMonth())).$d;}else l&&this.$d[l]($);return this.init(),this},m.set=function(t,e){return this.clone().$set(t,e)},m.get=function(t){return this[b.p(t)]()},m.add=function(r,f){var d,l=this;r=Number(r);var $=b.p(f),y=function(t){var e=O(l);return b.w(e.date(e.date()+Math.round(t*r)),l)};if($===c)return this.set(c,this.$M+r);if($===h)return this.set(h,this.$y+r);if($===a)return y(1);if($===o)return y(7);var M=(d={},d[s]=e,d[u]=n,d[i]=t,d)[$]||1,m=this.$d.getTime()+r*M;return b.w(m,this)},m.subtract=function(t,e){return this.add(-1*t,e)},m.format=function(t){var e=this,n=this.$locale();if(!this.isValid())return n.invalidDate||l;var r=t||"YYYY-MM-DDTHH:mm:ssZ",i=b.z(this),s=this.$H,u=this.$m,a=this.$M,o=n.weekdays,c=n.months,f=n.meridiem,h=function(t,n,i,s){return t&&(t[n]||t(e,r))||i[n].slice(0,s)},d=function(t){return b.s(s%12||12,t,"0")},$=f||function(t,e,n){var r=t<12?"AM":"PM";return n?r.toLowerCase():r};return r.replace(y,(function(t,r){return r||function(t){switch(t){case"YY":return String(e.$y).slice(-2);case"YYYY":return b.s(e.$y,4,"0");case"M":return a+1;case"MM":return b.s(a+1,2,"0");case"MMM":return h(n.monthsShort,a,c,3);case"MMMM":return h(c,a);case"D":return e.$D;case"DD":return b.s(e.$D,2,"0");case"d":return String(e.$W);case"dd":return h(n.weekdaysMin,e.$W,o,2);case"ddd":return h(n.weekdaysShort,e.$W,o,3);case"dddd":return o[e.$W];case"H":return String(s);case"HH":return b.s(s,2,"0");case"h":return d(1);case"hh":return d(2);case"a":return $(s,u,!0);case"A":return $(s,u,!1);case"m":return String(u);case"mm":return b.s(u,2,"0");case"s":return String(e.$s);case"ss":return b.s(e.$s,2,"0");case"SSS":return b.s(e.$ms,3,"0");case"Z":return i}return null}(t)||i.replace(":","")}))},m.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},m.diff=function(r,d,l){var $,y=this,M=b.p(d),m=O(r),v=(m.utcOffset()-this.utcOffset())*e,g=this-m,D=function(){return b.m(y,m)};switch(M){case h:$=D()/12;break;case c:$=D();break;case f:$=D()/3;break;case o:$=(g-v)/6048e5;break;case a:$=(g-v)/864e5;break;case u:$=g/n;break;case s:$=g/e;break;case i:$=g/t;break;default:$=g;}return l?$:b.a($)},m.daysInMonth=function(){return this.endOf(c).$D},m.$locale=function(){return D[this.$L]},m.locale=function(t,e){if(!t)return this.$L;var n=this.clone(),r=w(t,e,!0);return r&&(n.$L=r),n},m.clone=function(){return b.w(this.$d,this)},m.toDate=function(){return new Date(this.valueOf())},m.toJSON=function(){return this.isValid()?this.toISOString():null},m.toISOString=function(){return this.$d.toISOString()},m.toString=function(){return this.$d.toUTCString()},M}(),k=_.prototype;return O.prototype=k,[["$ms",r],["$s",i],["$m",s],["$H",u],["$W",a],["$M",c],["$y",h],["$D",d]].forEach((function(t){k[t[1]]=function(e){return this.$g(e,t[0],t[1])};})),O.extend=function(t,e){return t.$i||(t(e,_,O),t.$i=!0),O},O.locale=w,O.isDayjs=S,O.unix=function(t){return O(1e3*t)},O.en=D[g],O.Ls=D,O.p={},O})); }(dayjs_min)); const dayjs = dayjs_min.exports; var relativeTime$1 = {exports: {}}; (function (module, exports) { !function(r,e){module.exports=e();}(commonjsGlobal,(function(){return function(r,e,t){r=r||{};var n=e.prototype,o={future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"};function i(r,e,t,o){return n.fromToBase(r,e,t,o)}t.en.relativeTime=o,n.fromToBase=function(e,n,i,d,u){for(var f,a,s,l=i.$locale().relativeTime||o,h=r.thresholds||[{l:"s",r:44,d:"second"},{l:"m",r:89},{l:"mm",r:44,d:"minute"},{l:"h",r:89},{l:"hh",r:21,d:"hour"},{l:"d",r:35},{l:"dd",r:25,d:"day"},{l:"M",r:45},{l:"MM",r:10,d:"month"},{l:"y",r:17},{l:"yy",d:"year"}],m=h.length,c=0;c<m;c+=1){var y=h[c];y.d&&(f=d?t(e).diff(i,y.d,!0):i.diff(e,y.d,!0));var p=(r.rounding||Math.round)(Math.abs(f));if(s=f>0,p<=y.r||!y.r){p<=1&&c>0&&(y=h[c-1]);var v=l[y.l];u&&(p=u(""+p)),a="string"==typeof v?v.replace("%d",p):v(p,n,y.l,s);break}}if(n)return a;var M=s?l.future:l.past;return "function"==typeof M?M(a):M.replace("%s",a)},n.to=function(r,e){return i(r,e,this,!0)},n.from=function(r,e){return i(r,e,this)};var d=function(r){return r.$u?t.utc():t()};n.toNow=function(r){return this.to(d(this),r)},n.fromNow=function(r){return this.from(d(this),r)};}})); }(relativeTime$1)); const relativeTime = relativeTime$1.exports; /*! * © Peculiar Ventures https://peculiarventures.com/ - MIT License */ dayjs.extend(relativeTime); const dateShort = (date) => (new Date(date).toUTCString()); const dateDiff = (dateStart, dateEnd) => { if (!dateStart || !dateEnd) { return ''; } const start = dayjs(dateStart); const end = dayjs(dateEnd); return start.to(end, true); }; const basicInformation = "Basic Information"; const subjectName = "Subject Name"; const issuerName = "Issuer Name"; const publicKeyInfo = "Public Key Info"; const signature = "Signature"; const extensions = "Extensions"; const miscellaneous = "Miscellaneous"; const download = "Download"; const serialNumber = "Serial Number"; const version = "Version"; const validity = "Validity"; const issued = "Issued"; const expired = "Expired"; const lastUpdate = "Last Update"; const nextUpdate = "Next Update"; const algorithm = "Algorithm"; const namedCurve = "Named Curve"; const exponent = "Exponent"; const modulus = "Modulus"; const value = "Value"; const valid = "Valid"; const revoked = "Revoked"; const issuer = "Issuer"; const name = "Name"; const publicKey = "Public Key"; const fingerprint = "Fingerprint"; const fingerprints = "Fingerprints"; const testURLs = "Test URLs"; const certificateDetails = "Certificate Details"; const holder = "Holder"; const digestInfo = "Digest Info"; const type = "Type"; const revokedCertificates = "Revoked Certificates"; const revocationDate = "Revocation Date"; const yes = "Yes"; const no = "No"; const onlyUserCertificates = "Only User Certificates"; const onlyAttributeCertificates = "Only Attribute Certificates"; const onlyCACertificates = "Only CA Certificates"; const indirectCRL = "Indirect CRL"; const onlyReasons = "Only Reasons"; const crlEntryExtensions = "CRL Entry Extensions"; const previewCertificate = "Preview certificate"; const viewDetails = "View details"; const downloadOptions = "Download options"; const en = { basicInformation: basicInformation, subjectName: subjectName, issuerName: issuerName, publicKeyInfo: publicKeyInfo, signature: signature, extensions: extensions, miscellaneous: miscellaneous, download: download, "download.pem": "Download PEM", "download.der": "Download DER", serialNumber: serialNumber, version: version, validity: validity, issued: issued, expired: expired, lastUpdate: lastUpdate, nextUpdate: nextUpdate, algorithm: algorithm, namedCurve: namedCurve, exponent: exponent, modulus: modulus, value: value, valid: valid, revoked: revoked, issuer: issuer, name: name, publicKey: publicKey, fingerprint: fingerprint, fingerprints: fingerprints, testURLs: testURLs, certificateDetails: certificateDetails, holder: holder, digestInfo: digestInfo, type: type, revokedCertificates: revokedCertificates, revocationDate: revocationDate, yes: yes, no: no, onlyUserCertificates: onlyUserCertificates, onlyAttributeCertificates: onlyAttributeCertificates, onlyCACertificates: onlyCACertificates, indirectCRL: indirectCRL, onlyReasons: onlyReasons, crlEntryExtensions: crlEntryExtensions, previewCertificate: previewCertificate, viewDetails: viewDetails, downloadOptions: downloadOptions }; /*! * © Peculiar Ventures https://peculiarventures.com/ - MIT License */ const MESSAGES_ALL = { en, }; class Localization { constructor() { this.setLocale = (locale) => { this.locale = locale && MESSAGES_ALL[locale] ? locale : 'en'; }; this.getLocale = () => this.locale; const language = window.navigator.language.slice(0, 2).toLowerCase(); this.setLocale(language); } getString(id, replacer) { const value = MESSAGES_ALL[this.locale][id]; if (!value) { return ''; } if (!replacer) { return value; } const splitted = value.split(replacer.pattern); if (splitted.length > 1) { return [ splitted[0], replacer.replacer, splitted[1], ]; } return value; } } const l10n = new Localization(); /*! * MIT License * * Copyright (c) 2017-2024 Peculiar Ventures, LLC * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. * */ const ARRAY_BUFFER_NAME = "[object ArrayBuffer]"; class BufferSourceConverter { static isArrayBuffer(data) { return Object.prototype.toString.call(data) === ARRAY_BUFFER_NAME; } static toArrayBuffer(data) { if (this.isArrayBuffer(data)) { return data; } if (data.byteLength === data.buffer.byteLength) { return data.buffer; } if (data.byteOffset === 0 && data.byteLength === data.buffer.byteLength) { return data.buffer; } return this.toUint8Array(data.buffer) .slice(data.byteOffset, data.byteOffset + data.byteLength) .buffer; } static toUint8Array(data) { return this.toView(data, Uint8Array); } static toView(data, type) { if (data.constructor === type) { return data; } if (this.isArrayBuffer(data)) { return new type(data); } if (this.isArrayBufferView(data)) { return new type(data.buffer, data.byteOffset, data.byteLength); } throw new TypeError("The provided value is not of type '(ArrayBuffer or ArrayBufferView)'"); } static isBufferSource(data) { return this.isArrayBufferView(data) || this.isArrayBuffer(data); } static isArrayBufferView(data) { return ArrayBuffer.isView(data) || (data && this.isArrayBuffer(data.buffer)); } static isEqual(a, b) { const aView = BufferSourceConverter.toUint8Array(a); const bView = BufferSourceConverter.toUint8Array(b); if (aView.length !== bView.byteLength) { return false; } for (let i = 0; i < aView.length; i++) { if (aView[i] !== bView[i]) { return false; } } return true; } static concat(...args) { let buffers; if (Array.isArray(args[0]) && !(args[1] instanceof Function)) { buffers = args[0]; } else if (Array.isArray(args[0]) && args[1] instanceof Function) { buffers = args[0]; } else { if (args[args.length - 1] instanceof Function) { buffers = args.slice(0, args.length - 1); } else { buffers = args; } } let size = 0; for (const buffer of buffers) { size += buffer.byteLength; } const res = new Uint8Array(size); let offset = 0; for (const buffer of buffers) { const view = this.toUint8Array(buffer); res.set(view, offset); offset += view.length; } if (args[args.length - 1] instanceof Function) { return this.toView(res, args[args.length - 1]); } return res.buffer; } } const STRING_TYPE = "string"; const HEX_REGEX = /^[0-9a-f\s]+$/i; const BASE64_REGEX = /^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/; const BASE64URL_REGEX = /^[a-zA-Z0-9-_]+$/; class Utf8Converter { static fromString(text) { const s = unescape(encodeURIComponent(text)); const uintArray = new Uint8Array(s.length); for (let i = 0; i < s.length; i++) { uintArray[i] = s.charCodeAt(i); } return uintArray.buffer; } static toString(buffer) { const buf = BufferSourceConverter.toUint8Array(buffer); let encodedString = ""; for (let i = 0; i < buf.length; i++) { encodedString += String.fromCharCode(buf[i]); } const decodedString = decodeURIComponent(escape(encodedString)); return decodedString; } } class Utf16Converter { static toString(buffer, littleEndian = false) { const arrayBuffer = BufferSourceConverter.toArrayBuffer(buffer); const dataView = new DataView(arrayBuffer); let res = ""; for (let i = 0; i < arrayBuffer.byteLength; i += 2) { const code = dataView.getUint16(i, littleEndian); res += String.fromCharCode(code); } return res; } static fromString(text, littleEndian = false) { const res = new ArrayBuffer(text.length * 2); const dataView = new DataView(res); for (let i = 0; i < text.length; i++) { dataView.setUint16(i * 2, text.charCodeAt(i), littleEndian); } return res; } } class Convert { static isHex(data) { return typeof data === STRING_TYPE && HEX_REGEX.test(data); } static isBase64(data) { return typeof data === STRING_TYPE && BASE64_REGEX.test(data); } static isBase64Url(data) { return typeof data === STRING_TYPE && BASE64URL_REGEX.test(data); } static ToString(buffer, enc = "utf8") { const buf = BufferSourceConverter.toUint8Array(buffer); switch (enc.toLowerCase()) { case "utf8": return this.ToUtf8String(buf); case "binary": return this.ToBinary(buf); case "hex": return this.ToHex(buf); case "base64": return this.ToBase64(buf); case "base64url": return this.ToBase64Url(buf); case "utf16le": return Utf16Converter.toString(buf, true); case "utf16": case "utf16be": return Utf16Converter.toString(buf); default: throw new Error(`Unknown type of encoding '${enc}'`); } } static FromString(str, enc = "utf8") { if (!str) { return new ArrayBuffer(0); } switch (enc.toLowerCase()) { case "utf8": return this.FromUtf8String(str); case "binary": return this.FromBinary(str); case "hex": return this.FromHex(str); case "base64": return this.FromBase64(str); case "base64url": return this.FromBase64Url(str); case "utf16le": return Utf16Converter.fromString(str, true); case "utf16": case "utf16be": return Utf16Converter.fromString(str); default: throw new Error(`Unknown type of encoding '${enc}'`); } } static ToBase64(buffer) { const buf = BufferSourceConverter.toUint8Array(buffer); if (typeof btoa !== "undefined") { const binary = this.ToString(buf, "binary"); return btoa(binary); } else { return Buffer.from(buf).toString("base64"); } } static FromBase64(base64) { const formatted = this.formatString(base64); if (!formatted) { return new ArrayBuffer(0); } if (!Convert.isBase64(formatted)) { throw new TypeError("Argument 'base64Text' is not Base64 encoded"); } if (typeof atob !== "undefined") { return this.FromBinary(atob(formatted)); } else { return new Uint8Array(Buffer.from(formatted, "base64")).buffer; } } static FromBase64Url(base64url) { const formatted = this.formatString(base64url); if (!formatted) { return new ArrayBuffer(0); } if (!Convert.isBase64Url(formatted)) { throw new TypeError("Argument 'base64url' is not Base64Url encoded"); } return this.FromBase64(this.Base64Padding(formatted.replace(/\-/g, "+").replace(/\_/g, "/"))); } static ToBase64Url(data) { return this.ToBase64(data).replace(/\+/g, "-").replace(/\//g, "_").replace(/\=/g, ""); } static FromUtf8String(text, encoding = Convert.DEFAULT_UTF8_ENCODING) { switch (encoding) { case "ascii": return this.FromBinary(text); case "utf8": return Utf8Converter.fromString(text); case "utf16": case "utf16be": return Utf16Converter.fromString(text); case "utf16le": case "usc2": return Utf16Converter.fromString(text, true); default: throw new Error(`Unknown type of encoding '${encoding}'`); } } static ToUtf8String(buffer, encoding = Convert.DEFAULT_UTF8_ENCODING) { switch (encoding) { case "ascii": return this.ToBinary(buffer); case "utf8": return Utf8Converter.toString(buffer); case "utf16": case "utf16be": return Utf16Converter.toString(buffer); case "utf16le": case "usc2": return Utf16Converter.toString(buffer, true); default: throw new Error(`Unknown type of encoding '${encoding}'`); } } static FromBinary(text) { const stringLength = text.length; const resultView = new Uint8Array(stringLength); for (let i = 0; i < stringLength; i++) { resultView[i] = text.charCodeAt(i); } return resultView.buffer; } static ToBinary(buffer) { const buf = BufferSourceConverter.toUint8Array(buffer); let res = ""; for (let i = 0; i < buf.length; i++) { res += String.fromCharCode(buf[i]); } return res; } static ToHex(buffer) { const buf = BufferSourceConverter.toUint8Array(buffer); let result = ""; const len = buf.length; for (let i = 0; i < len; i++) { const byte = buf[i]; if (byte < 16) { result += "0"; } result += byte.toString(16); } return result; } static FromHex(hexString) { let formatted = this.formatString(hexString); if (!formatted) { return new ArrayBuffer(0); } if (!Convert.isHex(formatted)) { throw new TypeError("Argument 'hexString' is not HEX encoded"); } if (formatted.length % 2) { formatted = `0${formatted}`; } const res = new Uint8Array(formatted.length / 2); for (let i = 0; i < formatted.length; i = i + 2) { const c = formatted.slice(i, i + 2); res[i / 2] = parseInt(c, 16); } return res.buffer; } static ToUtf16String(buffer, littleEndian = false) { return Utf16Converter.toString(buffer, littleEndian); } static FromUtf16String(text, littleEndian = false) { return Utf16Converter.fromString(text, littleEndian); } static Base64Padding(base64) { const padCount = 4 - (base64.length % 4); if (padCount < 4) { for (let i = 0; i < padCount; i++) { base64 += "="; } } return base64; } static formatString(data) { return (data === null || data === void 0 ? void 0 : data.replace(/[\n\r\t ]/g, "")) || ""; } } Convert.DEFAULT_UTF8_ENCODING = "utf8"; function combine(...buf) { const totalByteLength = buf.map((item) => item.byteLength).reduce((prev, cur) => prev + cur); const res = new Uint8Array(totalByteLength); let currentPos = 0; buf.map((item) => new Uint8Array(item)).forEach((arr) => { for (const item2 of arr) { res[currentPos++] = item2; } }); return res.buffer; } function isEqual(bytes1, bytes2) { if (!(bytes1 && bytes2)) { return false; } if (bytes1.byteLength !== bytes2.byteLength) { return false; } const b1 = new Uint8Array(bytes1); const b2 = new Uint8Array(bytes2); for (let i = 0; i < bytes1.byteLength; i++) { if (b1[i] !== b2[i]) { return false; } } return true; } var BufferSourceConverter_1 = BufferSourceConverter; var Convert_1 = Convert; var combine_1 = combine; var isEqual_1 = isEqual; /*! * © Peculiar Ventures https://peculiarventures.com/ - MIT License */ /** * @license * Copyright (c) Peculiar Ventures, LLC. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */ /** * Download from buffer * * @example * ```js * import { downloadFromBuffer } from './utils'; * * downloadFromBuffer(arrayBufferValue, 'myFile', 'pdf', 'applciation/pdf'); * ``` */ function downloadFromBuffer(value, name, extension, mime = 'application/octet-stream') { const blob = new Blob([value], { type: mime }); // @ts-ignore if (navigator.msSaveBlob) { // IE10+ : (has Blob, but not a[download] or URL) // @ts-ignore navigator.msSaveBlob(blob, `${name}.${extension}`); return new Promise((resolve) => { setTimeout(resolve, 100); }); } const blobURL = window.URL.createObjectURL(blob); const link = document.createElement('a'); const frame = document.createElement('iframe'); link.style.display = 'none'; frame.style.display = 'none'; frame.name = blobURL; document.body.appendChild(frame); link.href = blobURL; link.target = blobURL; link.download = `${name}.${extension}`; document.body.appendChild(link); link.dispatchEvent(new MouseEvent('click')); document.body.removeChild(link); return new Promise((resolve) => { setTimeout(() => { document.body.removeChild(frame); resolve(); }, 100); }); } /*! * © Peculiar Ventures https://peculiarventures.com/ - MIT License */ class Download { } Download.cert = { asPEM: (pem, name) => { downloadFromBuffer(Convert_1.FromString(pem), name, 'cer', 'application/pkix-cert'); }, asDER: (raw, name) => { downloadFromBuffer(raw, name, 'cer', 'application/pkix-cert'); }, }; Download.attrCert = { asPEM: (pem, name) => { downloadFromBuffer(Convert_1.FromString(pem), name, 'cer', 'application/pkix-attr-cert'); }, asDER: (raw, name) => { downloadFromBuffer(raw, name, 'cer', 'application/pkix-attr-cert'); }, }; Download.csr = { asPEM: (pem, name) => { downloadFromBuffer(Convert_1.FromString(pem), name, 'csr', 'application/pkcs10'); }, asDER: (raw, name) => { downloadFromBuffer(raw, name, 'csr', 'application/pkcs10'); }, }; Download.crl = { asPEM: (pem, name) => { downloadFromBuffer(Convert_1.FromString(pem), name, 'crl', 'application/pkix-crl'); }, asDER: (raw, name) => { downloadFromBuffer(raw, name, 'crl', 'application/pkix-crl'); }, }; /*! * © Peculiar Ventures https://peculiarventures.com/ - MIT License */ /** * @license * Copyright (c) Peculiar Ventures, LLC. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */ const OIDsShort = { '2.5.4.3': 'CN', '2.5.4.6': 'C', '0.9.2342.19200300.100.1.25': 'DC', '1.2.840.113549.1.9.1': 'E', '2.5.4.42': 'G', '2.5.4.43': 'I', '2.5.4.7': 'L', '2.5.4.10': 'O', '2.5.4.11': 'OU', '2.5.4.8': 'ST', '2.5.4.4': 'SN', '2.5.4.12': 'T', '2.5.4.15': 'businessCategory', '1.3.6.1.4.1.311.60.2.1.3': 'jurisdictionCountry', '2.5.4.5': 'serialNumber', '2.5.4.97': 'OI', }; const OIDs = { '0.2.262.1.10': 'Telesec', '0.2.262.1.10.0': 'Extension', '0.2.262.1.10.1': 'Mechanism', '0.2.262.1.10.1.0': 'Authentication', '0.2.262.1.10.1.0.1': 'Password Authentication', '0.2.262.1.10.1.0.2': 'Protected Password Authentication', '0.2.262.1.10.1.0.3': 'One Way x509 Authentication', '0.2.262.1.10.1.0.4': 'Two Way x509 Authentication', '0.2.262.1.10.1.0.5': 'Three Way x509 Authentication', '0.2.262.1.10.1.0.6': 'One Way IS O9798 Authentication', '0.2.262.1.10.1.0.7': 'Two Way IS O9798 Authentication', '0.2.262.1.10.1.0.8': 'Telekom Authentication', '0.2.262.1.10.1.1': 'Signature', '0.2.262.1.10.1.1.1': 'MD4 with RSA And IS O9697', '0.2.262.1.10.1.1.2': 'MD4 with RSA And Telesec Signature Standard', '0.2.262.1.10.1.1.3': 'MD5 with RSA And IS O9697', '0.2.262.1.10.1.1.4': 'MD5 with RSA And Telesec Signature Standard', '0.2.262.1.10.1.1.5': 'Ripemd160 with RSA And Telekom Signature Standard', '0.2.262.1.10.1.1.9': 'HBCI RSA Signature', '0.2.262.1.10.1.2': 'Encryption', '0.2.262.1.10.1.2.0': 'None', '0.2.262.1.10.1.2.1': 'RSA Telesec', '0.2.262.1.10.1.2.2': 'DES', '0.2.262.1.10.1.2.2.1': 'DES ECB', '0.2.262.1.10.1.2.2.2': 'DES CBC', '0.2.262.1.10.1.2.2.3': 'DES OFB', '0.2.262.1.10.1.2.2.4': 'DES CFB8', '0.2.262.1.10.1.2.2.5': 'DES CFB64', '0.2.262.1.10.1.2.3': 'DES3', '0.2.262.1.10.1.2.3.1': 'DES3 ECB', '0.2.262.1.10.1.2.3.2': 'DES3 CBC', '0.2.262.1.10.1.2.3.3': 'DES3 OFB', '0.2.262.1.10.1.2.3.4': 'DES3 CFB8', '0.2.262.1.10.1.2.3.5': 'DES3 CFB64', '0.2.262.1.10.1.2.4': 'Magenta', '0.2.262.1.10.1.2.5': 'Idea', '0.2.262.1.10.1.2.5.1': 'Idea ECB', '0.2.262.1.10.1.2.5.2': 'Idea CBC', '0.2.262.1.10.1.2.5.3': 'Idea OFB', '0.2.262.1.10.1.2.5.4': 'Idea CFB8', '0.2.262.1.10.1.2.5.5': 'Idea CFB64', '0.2.262.1.10.1.3': 'One Way Function', '0.2.262.1.10.1.3.1': 'MD4', '0.2.262.1.10.1.3.2': 'MD5', '0.2.262.1.10.1.3.3': 'SQ ModNx509', '0.2.262.1.10.1.3.4': 'SQ ModNISO', '0.2.262.1.10.1.3.5': 'Ripemd128', '0.2.262.1.10.1.3.6': 'Hash Using Block Cipher', '0.2.262.1.10.1.3.7': 'Mac', '0.2.262.1.10.1.3.8': 'Ripemd160', '0.2.262.1.10.1.4': 'Fec Function', '0.2.262.1.10.1.4.1': 'Reed Solomon', '0.2.262.1.10.2': 'Module', '0.2.262.1.10.2.0': 'Algorithms', '0.2.262.1.10.2.1': 'Attribute Types', '0.2.262.1.10.2.2': 'Certificate Types', '0.2.262.1.10.2.3': 'Message Types', '0.2.262.1.10.2.4': 'Pl Protocol', '0.2.262.1.10.2.5': 'Sme And Components Of Sme', '0.2.262.1.10.2.6': 'Fec', '0.2.262.1.10.2.7': 'Useful Definitions', '0.2.262.1.10.2.8': 'Stefiles', '0.2.262.1.10.2.9': 'Sadmib', '0.2.262.1.10.2.10': 'Electronic Order', '0.2.262.1.10.2.11': 'Telesec Ttp Asymmetric Application', '0.2.262.1.10.2.12': 'Telesec Ttp Basis Application', '0.2.262.1.10.2.13': 'Telesec Ttp Messages', '0.2.262.1.10.2.14': 'Telesec Ttp Time Stamp Application', '0.2.262.1.10.3': 'Object Class', '0.2.262.1.10.3.0': 'Telesec Other Name', '0.2.262.1.10.3.1': 'Directory', '0.2.262.1.10.3.2': 'Directory Type', '0.2.262.1.10.3.3': 'Directory Group', '0.2.262.1.10.3.4': 'Directory User', '0.2.262.1.10.3.5': 'Symmetric Key Entry', '0.2.262.1.10.4': 'Package', '0.2.262.1.10.5': 'Parameter', '0.2.262.1.10.6': 'Name Binding', '0.2.262.1.10.7': 'Attribute', '0.2.262.1.10.7.0': 'Application Group Identifier', '0.2.262.1.10.7.1': 'Certificate Type', '0.2.262.1.10.7.2': 'Telesec Certificate', '0.2.262.1.10.7.3': 'Certificate Number', '0.2.262.1.10.7.4': 'Certificate Revocation List', '0.2.262.1.10.7.5': 'Creation Date', '0.2.262.1.10.7.6': 'Issuer', '0.2.262.1.10.7.7': 'Naming Authority', '0.2.262.1.10.7.8': 'Public Key Directory', '0.2.262.1.10.7.9': 'Security Domain', '0.2.262.1.10.7.10': 'Subject', '0.2.262.1.10.7.11': 'Time Of Revocation', '0.2.262.1.10.7.12': 'User Group Reference', '0.2.262.1.10.7.13': 'alidity', '0.2.262.1.10.7.14': 'Zert93', '0.2.262.1.10.7.15': 'Security Mess Env', '0.2.262.1.10.7.16': 'Anonymized Public Key Directory', '0.2.262.1.10.7.17': 'Telesec Given Name', '0.2.262.1.10.7.18': 'Name Additions', '0.2.262.1.10.7.19': 'Telesec Postal Code', '0.2.262.1.10.7.20': 'Name Distinguisher', '0.2.262.1.10.7.21': 'Telesec Certificate List', '0.2.262.1.10.7.22': 'Teletrust Certificate List', '0.2.262.1.10.7.23': 'x509 Certificate List', '0.2.262.1.10.7.24': 'Time Of Issue', '0.2.262.1.10.7.25': 'Physical Card Number', '0.2.262.1.10.7.26': 'File Type', '0.2.262.1.10.7.27': 'Ctl File Is Archive', '0.2.262.1.10.7.28': 'Email Address', '0.2.262.1.10.7.29': 'Certificate Template List', '0.2.262.1.10.7.30': 'Directory Name', '0.2.262.1.10.7.31': 'Directory Type Name', '0.2.262.1.10.7.32': 'Directory Group Name', '0.2.262.1.10.7.33': 'Directory User Name', '0.2.262.1.10.7.34': 'Revocation Flag', '0.2.262.1.10.7.35': 'Symmetric Key Entry Name', '0.2.262.1.10.7.36': 'Gl Number', '0.2.262.1.10.7.37': 'Go Number', '0.2.262.1.10.7.38': 'G Key Data', '0.2.262.1.10.7.39': 'Z Key Data', '0.2.262.1.10.7.40': 'Kt Key Data', '0.2.262.1.10.7.41': 'Kt Key Number', '0.2.262.1.10.7.51': 'Time Of Revocation Gen', '0.2.262.1.10.7.52': 'Liability Text', '0.2.262.1.10.8': 'Attribute Group', '0.2.262.1.10.9': 'Action', '0.2.262.1.10.10': 'Notification', '0.2.262.1.10.11': 'Snmp-mibs', '0.2.262.1.10.11.1': 'Security Application', '0.2.262.1.10.12': 'Cert And Crl Extension Definitions', '0.2.262.1.10.12.0': 'Liability Limitation Flag', '0.2.262.1.10.12.1': 'Telesec Cert Id Ext', '0.2.262.1.10.12.2': 'Telesec policy Identifier', '0.2.262.1.10.12.3': 'Telesec Policy Qualifier I D', '0.2.262.1.10.12.4': 'Telesec CRL Filtered Ext', '0.2.262.1.10.12.5': 'Telesec CRL Filter Ext', '0.2.262.1.10.12.6': 'Telesec Naming Authority Ext', '0.4.0.127.0.7': 'Bsi', '0.4.0.127.0.7.1': 'Bsi Ecc', '0.4.0.127.0.7.1.1': 'Bsifield Type', '0.4.0.127.0.7.1.1.1': 'Bsi Prime Field', '0.4.0.127.0.7.1.1.2': 'Bsi Characteristic Two Field', '0.4.0.127.0.7.1.1.2.2': 'Bsi ECTLV Key Format', '0.4.0.127.0.7.1.1.2.2.1': 'Bsi ECTLV Public Key', '0.4.0.127.0.7.1.1.2.3': 'Bsi Characteristic Two Basis', '0.4.0.127.0.7.1.1.2.3.1': 'Bsi Gn Basis', '0.4.0.127.0.7.1.1.2.3.2': 'Bsi Tp Basis', '0.4.0.127.0.7.1.1.2.3.3': 'Bsi Pp Basis', '0.4.0.127.0.7.1.1.4.1': 'Bsi Ecdsa Signatures', '0.4.0.127.0.7.1.1.4.1.1': 'Bsi Ecdsa with SHA1', '0.4.0.127.0.7.1.1.4.1.2': 'Bsi Ecdsa with SHA224', '0.4.0.127.0.7.1.1.4.1.3': 'Bsi Ecdsa with SHA256', '0.4.0.127.0.7.1.1.4.1.4': 'Bsi Ecdsa with SHA384', '0.4.0.127.0.7.1.1.4.1.5': 'Bsi Ecdsa with SHA512', '0.4.0.127.0.7.1.1.4.1.6': 'Bsi Ecdsa with RIPEMD160', '0.4.0.127.0.7.1.1.5.1.1': 'Bsi Ecka Eg x963KDF', '0.4.0.127.0.7.1.1.5.1.1.1': 'Bsi Ecka Eg x963KDF with SHA1', '0.4.0.127.0.7.1.1.5.1.1.2': 'Bsi Ecka Eg x963KDF with SHA224', '0.4.0.127.0.7.1.1.5.1.1.3': 'Bsi Ecka Eg x963KDF with SHA256', '0.4.0.127.0.7.1.1.5.1.1.4': 'Bsi Ecka Eg x963KDF with SHA384', '0.4.0.127.0.7.1.1.5.1.1.5': 'Bsi Ecka Eg x963KDF with SHA512', '0.4.0.127.0.7.1.1.5.1.1.6': 'Bsi Ecka Eg x963KDF with RIPEMD160', '0.4.0.127.0.7.1.1.5.1.2': 'Bsi Ecka Eg Session KDF', '0.4.0.127.0.7.1.1.5.1.2.1': 'Bsi Ecka Eg Session KDF With3DES', '0.4.0.127.0.7.1.1.5.1.2.2': 'Bsi Ecka Eg Session KDF with AES128', '0.4.0.127.0.7.1.1.5.1.2.3': 'Bsi Ecka Eg Session KDF with AES192', '0.4.0.127.0.7.1.1.5.1.2.4': 'Bsi Ecka Eg Session KDF with AES256', '0.4.0.127.0.7.1.1.5.2': 'Bsi Ecka DH', '0.4.0.127.0.7.1.1.5.2.1': 'Bsi Ecka DH x963KDF', '0.4.0.127.0.7.1.1.5.2.1.1': 'Bsi Ecka DHx963KDF with SHA1', '0.4.0.127.0.7.1.1.5.2.1.2': 'Bsi Ecka DHx963KDF with SHA224', '0.4.0.127.0.7.1.1.5.2.1.3': 'Bsi Ecka DHx963KDF with SHA256', '0.4.0.127.0.7.1.1.5.2.1.4': 'Bsi Ecka DHx963KDF with SHA384', '0.4.0.127.0.7.1.1.5.2.1.5': 'Bsi Ecka DHx963KDF with SHA512', '0.4.0.127.0.7.1.1.5.2.1.6': 'Bsi Ecka DHx963KDF with RIPEMD160', '0.4.0.127.0.7.1.1.5.2.2': 'Bsi Ecka DHSessionKDF', '0.4.0.127.0.7.1.1.5.2.2.1': 'Bsi Ecka DH Session KDF With3 DES', '0.4.0.127.0.7.1.1.5.2.2.2': 'Bsi Ecka DH Session KDF with AES128', '0.4.0.127.0.7.1.1.5.2.2.3': 'Bsi Ecka DH Session KDF with AES192', '0.4.0.127.0.7.1.1.5.2.2.4': 'Bsi Ecka DH Session KDF with AES256', '0.4.0.127.0.7.1.2': 'Bsi Ec Key Type', '0.4.0.127.0.7.1.2.1': 'Bsi Ec Public Key', '0.4.0.127.0.7.1.5.1': 'Bsi Kaeg', '0.4.0.127.0.7.1.5.1.1': 'Bsi Kaeg with x963KDF', '0.4.0.127.0.7.1.5.1.2': 'Bsi Kaeg with 3DESKDF', '0.4.0.127.0.7.2.2.1': 'Bsi PK', '0.4.0.127.0.7.2.2.1.1': 'Bsi PK_DH', '0.4.0.127.0.7.2.2.1.2': 'Bsi PK_ECDH', '0.4.0.127.0.7.2.2.2': 'Bsi TA', '0.4.0.127.0.7.2.2.2.1': 'Bsi TA_RSA', '0.4.0.127.0.7.2.2.2.1.1': 'Bsi TA_RSAv1_5_SHA1', '0.4.0.127.0.7.2.2.2.1.2': 'Bsi TA_RSAv1_5_SHA256', '0.4.0.127.0.7.2.2.2.1.3': 'Bsi TA_RSAPSS_SHA1', '0.4.0.127.0.7.2.2.2.1.4': 'Bsi TA_RSAPSS_SHA256', '0.4.0.127.0.7.2.2.2.1.5': 'Bsi TA_RSAv1_5_SHA512', '0.4.0.127.0.7.2.2.2.1.6': 'Bsi TA_RSAPSS_SHA512', '0.4.0.127.0.7.2.2.2.2': 'Bsi TA_ECDSA', '0.4.0.127.0.7.2.2.2.2.1': 'Bsi TA_ECDSA_SHA1', '0.4.0.127.0.7.2.2.2.2.2': 'Bsi TA_ECDSA_SHA224', '0.4.0.127.0.7.2.2.2.2.3': 'Bsi TA_ECDSA_SHA256', '0.4.0.127.0.7.2.2.2.2.4': 'Bsi TA_ECDSA_SHA384', '0.4.0.127.0.7.2.2.2.2.5': 'Bsi TA_ECDSA_SHA512', '0.4.0.127.0.7.2.2.3': 'Bsi CA', '0.4.0.127.0.7.2.2.3.1': 'Bsi CA_DH', '0.4.0.127.0.7.2.2.3.1.1': 'Bsi CA_DH_3DES_CBC_CBC', '0.4.0.127.0.7.2.2.3.1.2': 'Bsi CA_DH_AES_CBC_CMAC_128', '0.4.0.127.0.7.2.2.3.1.3': 'Bsi CA_DH_AES_CBC_CMAC_192', '0.4.0.127.0.7.2.2.3.1.4': 'Bsi CA_DH_AES_CBC_CMAC_256', '0.4.0.127.0.7.2.2.3.2': 'Bsi CA_ECDH', '0.4.0.127.0.7.2.2.3.2.1': 'Bsi CA_ECDH_3DES_CBC_CBC', '0.4.0.127.0.7.2.2.3.2.2': 'Bsi CA_ECDH_AES_CBC_CMAC_128', '0.4.0.127.0.7.2.2.3.2.3': 'Bsi CA_ECDH_AES_CBC_CMAC_192', '0.4.0.127.0.7.2.2.3.2.4': 'Bsi CA_ECDH_AES_CBC_CMAC_256', '0.4.0.127.0.7.2.2.4': 'Bsi PACE', '0.4.0.127.0.7.2.2.4.1': 'Bsi PACE_DH_GM', '0.4.0.127.0.7.2.2.4.1.1': 'Bsi PACE_DH_GM_3DES_CBC_CBC', '0.4.0.127.0.7.2.2.4.1.2': 'Bsi PACE_DH_GM_AES_CBC_CMAC_128', '0.4.0.127.0.7.2.2.4.1.3': 'Bsi PACE_DH_GM_AES_CBC_CMAC_192', '0.4.0.127.0.7.2.2.4.1.4': 'Bsi PACE_DH_GM_AES_CBC_CMAC_256', '0.4.0.127.0.7.2.2.4.2': 'Bsi PACE_ECDH_GM', '0.4.0.127.0.7.2.2.4.2.1': 'Bsi PACE_ECDH_GM_3DES_CBC_CBC', '0.4.0.127.0.7.2.2.4.2.2': 'Bsi PACE_ECDH_GM_AES_CBC_CMAC_128', '0.4.0.127.0.7.2.2.4.2.3': 'Bsi PACE_ECDH_GM_AES_CBC_CMAC_192', '0.4.0.127.0.7.2.2.4.2.4': 'Bsi PACE_ECDH_GM_AES_CBC_CMAC_256', '0.4.0.127.0.7.2.2.4.3': 'Bsi PACE_DH_IM', '0.4.0.127.0.7.2.2.4.3.1': 'Bsi PACE_DH_IM_3DES_CBC_CBC', '0.4.0.127.0.7.2.2.4.3.2': 'Bsi PACE_DH_IM_AES_CBC_CMAC_128', '0.4.0.127.0.7.2.2.4.3.3': 'Bsi PACE_DH_IM_AES_CBC_CMAC_192', '0.4.0.127.0.7.2.2.4.3.4': 'Bsi PACE_DH_IM_AES_CBC_CMAC_256', '0.4.0.127.0.7.2.2.4.4': 'Bsi PACE_ECDH_IM', '0.4.0.127.0.7.2.2.4.4.1': 'Bsi PACE_ECDH_IM_3DES_CBC_CBC', '0.4.0.127.0.7.2.2.4.4.2': 'Bsi PACE_ECDH_IM_AES_CBC_CMAC_128', '0.4.0.127.0.7.2.2.4.4.3': 'Bsi PACE_ECDH_IM_AES_CBC_CMAC_192', '0.4.0.127.0.7.2.2.4.4.4': 'Bsi PACE_ECDH_IM_AES_CBC_CMAC_256', '0.4.0.127.0.7.2.2.5': 'Bsi RI', '0.4.0.127.0.7.2.2.5.1': 'Bsi RI_DH', '0.4.0.127.0.7.2.2.5.1.1': 'Bsi RI_DH_SHA1', '0.4.0.127.0.7.2.2.5.1.2': 'Bsi RI_DH_SHA224', '0.4.0.127.0.7.2.2.5.1.3': 'Bsi RI_DH_SHA256', '0.4.0.127.0.7.2.2.5.1.4': 'Bsi RI_DH_SHA384', '0.4.0.127.0.7.2.2.5.1.5': 'Bsi RI_DH_SHA512', '0.4.0.127.0.7.2.2.5.2': 'Bsi RI_ECDH', '0.4.0.127.0.7.2.2.5.2.1': 'Bsi RI_ECDH_SHA1', '0.4.0.127.0.7.2.2.5.2.2': 'Bsi RI_ECDH_SHA224', '0.4.0.127.0.7.2.2.5.2.3': 'Bsi RI_ECDH_SHA256', '0.4.0.127.0.7.2.2.5.2.4': 'Bsi RI_ECDH_SHA384', '0.4.0.127.0.7.2.2.5.2.5': 'Bsi RI_ECDH_SHA512', '0.4.0.127.0.7.2.2.6': 'Bsi Card Info', '0.4.0.127.0.7.2.2.7': 'Bsi Eid Security', '0.4.0.127.0.7.2.2.8': 'Bsi PT', '0.4.0.127.0.7.3.1.2': 'Bsi EAC Roles', '0.4.0.127.0.7.3.1.2.1': 'Bsi EAC Roles IS', '0.4.0.127.0.7.3.1.2.2': 'Bsi EAC Roles AT', '0.4.0.127.0.7.3.1.2.3': 'Bsi EAC Roles ST', '0.4.0.127.0.7.3.1.3': 'Bsi TAv2ce', '0.4.0.127.0.7.3.1.3.1': 'Bsi TAv2ce Description', '0.4.0.127.0.7.3.1.3.1.1': 'Bsi TAv2ce Description Plain Text', '0.4.0.127.0.7.3.1.3.1.2': 'Bsi TAv2ce Description IA5 String', '0.4.0.127.0.7.3.1.3.1.3': 'Bsi TAv2ce Description Octet String', '0.4.0.127.0.7.3.1.3.2': 'Bsi TAv2ce Terminal Sector', '0.4.0.127.0.7.3.1.4': 'Bsi Aux Data', '0.4.0.127.0.7.3.1.4.1': 'Bsi Aux Data Birthday', '0.4.0.127.0.7.3.1.4.2': 'Bsi Aux Data Expire Date', '0.4.0.127.0.7.3.1.4.3': 'Bsi Aux Data Community ID', '0.4.0.127.0.7.3.1.5': 'Bsi Defect List', '0.4.0.127.0.7.3.1.5.1': 'Bsi Defect Auth Defect', '0.4.0.127.0.7.3.1.5.1.1': 'Bsi Defect Cert Revoked', '0.4.0.127.0.7.3.1.5.1.2': 'Bsi Defect Cert Replaced', '0.4.0.127.0.7.3.1.5.1.3': 'Bsi Defect Chip Auth Key Revoked', '0.4.0.127.0.7.3.1.5.1.4': 'Bsi Defect Active Auth Key Revoked', '0.4.0.127.0.7.3.1.5.2': 'Bsi Defect EPassport Defect', '0.4.0.127.0.7.3.1.5.2.1': 'Bsi Defect EPassport DG Malformed', '0.4.0.127.0.7.3.1.5.2.2': 'Bsi Defect SOD Invalid', '0.4.0.127.0.7.3.1.5.3': 'Bsi Defect EID Defect', '0.4.0.127.0.7.3.1.5.3.1': 'Bsi Defect EIDDG Malformed', '0.4.0.127.0.7.3.1.5.3.2': 'Bsi Defect EID Integrity', '0.4.0.127.0.7.3.1.5.4': 'Bsi Defect Document Defect', '0.4.0.127.0.7.3.1.5.4.1': 'Bsi Defect Card Security Malformed', '0.4.0.127.0.7.3.1.5.4.2': 'Bsi Defect Chip Security Malformed', '0.4.0.127.0.7.3.1.5.4.3': 'Bsi Defect Power Down Req', '0.4.0.127.0.7.3.1.6': 'Bsi List Content Description', '0.4.0.127.0.7.3.2.1': 'Bsi Security Object', '0.4.0.127.0.7.3.2.2': 'Bsi Black List', '0.4.0.1862': 'ETSI QCS Profile', '0.4.0.1862.1': 'ETSI QCS', '0.4.0.1862.1.1': 'ETSI QCS Compliance', '0.4.0.1862.1.2': 'ETSI QCS Limit Value', '0.4.0.1862.1.3': 'ETSI QCS Retention Period', '0.4.0.1862.1.4': 'ETSI QCS SSCD', '0.4.0.1862.1.5': 'ETSI QCS PDS', '0.4.0.1862.1.6': 'ETSI QC Type', '0.4.0.1862.1.6.1': 'ETSI QC Type eSign', '0.4.0.1862.1.6.2': 'ETSI QC Type eSeal', '0.4.0.1862.1.6.3': 'ETSI QC Type Web', '0.4.0.194121.1.2': 'ETSI QCS Semantics ID Legal', '0.4.0.194112.1.0': 'QCP Natural Person', '0.4.0.194112.1.1': 'QCP Legal Person', '0.4.0.194112.1.2': 'QCP Natural QSCD', '0.4.0.194112.1.3': 'QCP Legal QSCD', '0.4.0.194112.1.4': 'QCP Web', '0.9.2342.19200300.100.1.1': 'User ID', '0.9.2342.19200300.100.1.3': 'Rfc822 Mailbox', '0.9.2342.19200300.100.1.25': 'Domain Component', '1.0.10118.3.0.49': 'Ripemd160', '1.0.10118.3.0.50': 'Ripemd128', '1.0.10118.3.0.55': 'Whirlpool', '1.2.36.1.3.1.1.1': 'Qgpki', '1.2.36.1.3.1.1.1.1': 'Qgpki Policies', '1.2.36.1.3.1.1.1.1.1': 'Qgpki Med Intermed CA', '1.2.36.1.3.1.1.1.1.1.1': 'Qgpki Med Intermed Individual', '1.2.36.1.3.1.1.1.1.1.2': 'Qgpki Med Intermed Device Control', '1.2.36.1.3.1.1.1.1.1.3': 'Qgpki Med Intermed Device', '1.2.36.1.3.1.1.1.1.1.4': 'Qgpki Med Intermed Authorised Party', '1.2.36.1.3.1.1.1.1.1.5': 'Qgpki Med Intermed Device System', '1.2.36.1.3.1.1.1.1.2': 'Qgpki Med Issuing CA', '1.2.36.1.3.1.1.1.1.2.1': 'Qgpki Med Issuing Individual', '1.2.36.1.3.1.1.1.1.2.2': 'Qgpki Med Issuing Device Control', '1.2.36.1.3.1.1.1.1.2.3': 'Qgpki Med Issuing Device', '1.2.36.1.3.1.1.1.1.2.4': 'Qgpki Med Issuing Authorised Party', '1.2.36.1.3.1.1.1.1.2.5': 'Qgpki Med Issuing Client Auth', '1.2.36.1.3.1.1.1.1.2.6': 'Qgpki Med Issuing Server Auth', '1.2.36.1.3.1.1.1.1.2.7': 'Qgpki Med Issuing Data Prot', '1.2.36.1.3.1.1.1.1.2.8': 'Qgpki Med Issuing Token Auth', '1.2.36.1.3.1.1.1.1.3': 'Qgpki Basic Intermed CA', '1.2.36.1.3.1.1.1.1.3.1': 'Qgpki Basic Intermed Device System', '1.2.36.1.3.1.1.1.1.4': 'Qgpki Basic Issuing CA', '1.2.36.1.3.1.1.1.1.4.1': 'Qgpki Basic Issuing Client Auth', '1.2.36.1.3.1.1.1.1.4.2': 'Qgpki Basic Issuing Server Auth', '1.2.36.1.3.1.1.1.1.4.3': 'Qgpki Basic Issuing Data Signing', '1.2.36.1.3.1.1.1.2': 'Qgpki Assurance Level', '1.2.36.1.3.1.1.1.2.1': 'Qgpki Assurance Rudimentary', '1.2.36.1.3.1.1.1.2.2': 'Qgpki Assurance Basic', '1.2.36.1.3.1.1.1.2.3': 'Qgpki Assurance Medium', '1.2.36.1.3.1.1.1.2.4': 'Qgpki Assurance High', '1.2.36.1.3.1.1.1.3': 'Qgpki Cert Function', '1.2.36.1.3.1.1.1.3.1': 'Qgpki Function Individual', '1.2.36.1.3.1.1.1.3.2': 'Qgpki Function Device', '1.2.36.1.3.1.1.1.3.3': 'Qgpki Function Authorised Party', '1.2.36.1.3.1.1.1.3.4': 'Qgpki Function Device Control', '1.2.36.1.3.1.2': 'Qpspki', '1.2.36.1.3.1.2.1': 'Qpspki Policies', '1.2.36.1.3.1.2.1.2': 'Qpspki Policy Basic', '1.2.36.1.3.1.2.1.3': 'Qpspki Policy Medium', '1.2.36.1.3.1.2.1.4': 'Qpspki Policy High', '1.2.36.1.3.1.3.2': 'Qtmrpki', '1.2.36.1.3.1.3.2.1': 'Qtmrpki Policies', '1.2.36.1.3.1.3.2.2': 'Qtmrpki Purpose', '1.2.36.1.3.1.3.2.2.1': 'Qtmrpki Individual', '1.2.36.1.3.1.3.2.2.2': 'Qtmrpki Device Control', '1.2.36.1.3.1.3.2.2.3': 'Qtmrpki Device', '1.2.36.1.3.1.3.2.2.4': 'Qtmrpki Authorised Party', '1.2.36.1.3.1.3.2.2.5': 'Qtmrpki Device System', '1.2.36.1.3.1.3.2.3': 'Qtmrpki Device', '1.2.36.1.3.1.3.2.3.1': 'Qtmrpki Driver License', '1.2.36.1.3.1.3.2.3.2': 'Qtmrpki Industry Authority', '1.2.36.1.3.1.3.2.3.3': 'Qtmrpki Marine License', '1.2.36.1.3.1.3.2.3.4': 'Qtmrpki Adult Proof Of Age', '1.2.36.1.3.1.3.2.3.5': 'Qtmrpki Sam', '1.2.36.1.3.1.3.2.4': 'Qtmrpki Authorised Party', '1.2.36.1.3.1.3.2.4.1': 'Qtmrpki Transport Inspector', '1.2.36.1.3.1.3.2.4.2': 'Qtmrpki Police Officer', '1.2.36.1.3.1.3.2.4.3': 'Qtmrpki System', '1.2.36.1.3.1.3.2.4.4': 'Qtmrpki Liquor Licensing Inspector', '1.2.36.1.3.1.3.2.4.5': 'Qtmrpki Marine Enforcement Officer', '1.2.36.1.333.1': 'Australian Business Number', '1.2.36.68980861.1.1.2': 'Signet Personal', '1.2.36.68980861.1.1.3': 'Signet Business', '1.2.36.68980861.1.1.4': 'Signet Legal', '1.2.36.68980861.1.1.10': 'Signet Pilot', '1.2.36.68980861.1.1.11': 'Signet Intra Net', '1.2.36.68980861.1.1.20': 'Signet Policy', '1.2.36.75878867.1.100.1.1': 'Certificates Australia Policy', '1.2.40.0.17.1.22': 'A-Trust EV policy', '1.2.392.200011.61.1.1.1': 'Mitsubishi Security Algorithm', '1.2.392.200011.61.1.1.1.1': 'Misty1-cbc', '1.2.392.200091.100.721.1': 'Security Communication (SECOM) EV policy', '1.2.410.200004.1': 'Kisa Algorithm', '1.2.410.200004.1.1': 'Kcdsa', '1.2.410.200004.1.2': 'Has160', '1.2.410.200004.1.3': 'Seed ECB', '1.2.410.200004.1.4': 'Seed CBC', '1.2.410.200004.1.5': 'Seed OFB', '1.2.410.200004.1.6': 'Seed CFB', '1.2.410.200004.1.7': 'Seed MAC', '1.2.410.200004.1.8': 'Kcdsa with HAS160', '1.2.410.200004.1.9': 'Kcdsa with SHA1', '1.2.410.200004.1.10': 'PBE with HAS160 And SEED-ECB', '1.2.410.200004.1.11': 'PBE with HAS160 And SEED-CBC', '1.2.410.200004.1.12': 'PBE with HAS160 And SEED-CFB', '1.2.410.200004.1.13': 'PBE with HAS160 And SEED-OFB', '1.2.410.200004.1.14': 'PBE with SHA1 And SEED-ECB', '1.2.410.200004.1.15': 'PBE with SHA1 And SEED-CBC', '1.2.410.200004.1.16': 'PBE with SHA1 And SEED-CFB', '1.2.410.200004.1.17': 'PBE with SHA1 And SEED-OFB', '1.2.410.200004.1.20': 'RSA with HAS160', '1.2.410.200004.1.21': 'Kcdsa1', '1.2.410.200004.2': 'Npki CP', '1.2.410.200004.2.1': 'Npki Signature Policy', '1.2.410.200004.3': 'Npki KP', '1.2.410.200004.4': 'Npki AT', '1.2.410.200004.5': 'Npki LCA', '1.2.410.200004.5.1': 'Npki Sign Korea', '1.2.410.200004.5.2': 'Npki Sign Gate', '1.2.410.200004.5.3': 'Npki Nca Sign', '1.2.410.200004.6': 'Npki ON', '1.2.410.200004.7': 'Npki APP', '1