/**
* Copyright (c) HashiCorp, Inc.
* SPDX-License-Identifier: BUSL-1.1
*/
import Component from '@glimmer/component';
import { parsedParameterKeys } from 'vault/utils/parse-pki-cert-oids';
import { ParsedCertificateData } from 'vault/vault/utils/parse-pki-cert';
/**
* @module ParsedCertificateInfoRowsComponent
* Renders attributes parsed from a PKI certificate (provided from parse-pki-cert util). It will only render rows for
* defined values that match `parsedParameterKeys` imported from the helper. It never renders common_name, even though
* the value is returned from the parse cert util, because `common_name` is important to PKI and we render it at the top.
*
* @example ```js
*
* ```
*
* @param {object} model - object of parsed attributes from parse-pki-cert util
*/
interface AttrOptions {
[key: string]: {
label?: string;
formatDate?: string;
};
}
interface Args {
model: ParsedCertificateData;
}
export default class ParsedCertificateInfoRowsComponent extends Component {
get possibleFields() {
// We show common name elsewhere on the details view, so no need to render it here
const fieldKeys = parsedParameterKeys.filter((k) => k !== 'common_name');
const attrsByKey: AttrOptions = {
other_sans: { label: 'Other SANs' },
alt_names: { label: 'Subject Alternative Names (SANs)' },
uri_sans: { label: 'URI SANs' },
ip_sans: { label: 'IP SANs' },
permitted_dns_domains: { label: 'Permitted DNS domains' },
exclude_cn_from_sans: { label: 'Exclude CN from SANs' },
use_pss: { label: 'Use PSS' },
ttl: { label: 'TTL' },
ou: { label: 'Organizational units (OU)' },
not_valid_after: { formatDate: 'MMM d yyyy HH:mm:ss a zzzz' },
not_valid_before: { formatDate: 'MMM d yyyy HH:mm:ss a zzzz' },
};
return fieldKeys.map((key) => {
return {
key,
...attrsByKey[key],
};
});
}
}