@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
JavaScript
/*!
* © 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