UNPKG

@wildboar/pc

Version:

Trusted Computing Group Platform Certificate ASN.1 data structures in TypeScript

253 lines (252 loc) 12.1 kB
/* eslint-disable */ import { ASN1TagClass as _TagClass, } from "@wildboar/asn1"; import * as $ from "@wildboar/asn1/functional"; import { _decode_ComponentClass, _encode_ComponentClass } from "../PlatformCertificateProfile/ComponentClass.ta.mjs"; import { _decode_PrivateEnterpriseNumber, _encode_PrivateEnterpriseNumber } from "../PlatformCertificateProfile/PrivateEnterpriseNumber.ta.mjs"; import { _decode_ComponentAddress, _encode_ComponentAddress } from "../PlatformCertificateProfile/ComponentAddress.ta.mjs"; import { _decode_CertificateIdentifier, _encode_CertificateIdentifier } from "../PlatformCertificateProfile/CertificateIdentifier.ta.mjs"; import { _decode_URIReference, _encode_URIReference } from "../PlatformCertificateProfile/URIReference.ta.mjs"; import { _enum_for_AttributeStatus, _decode_AttributeStatus, _encode_AttributeStatus } from "../PlatformCertificateProfile/AttributeStatus.ta.mjs"; /** * @summary ComponentIdentifier * @description * * ### ASN.1 Definition: * * ```asn1 * ComponentIdentifier ::= SEQUENCE { * componentClass ComponentClass, * componentManufacturer UTF8String (SIZE (1..strmax)), * componentModel UTF8String (SIZE (1..strmax)), * componentSerial [0] IMPLICIT UTF8String (SIZE (1..strmax)) OPTIONAL, * componentRevision [1] IMPLICIT UTF8String (SIZE (1..strmax)) OPTIONAL, * componentManufacturerId [2] IMPLICIT PrivateEnterpriseNumber OPTIONAL, * fieldReplaceable [3] IMPLICIT BOOLEAN OPTIONAL, * componentAddresses [4] IMPLICIT SEQUENCE (SIZE(1..MAX)) OF ComponentAddress OPTIONAL, * componentPlatformCert [5] IMPLICIT CertificateIdentifier OPTIONAL, * componentPlatformCertUri [6] IMPLICIT URIReference OPTIONAL, * status [7] IMPLICIT AttributeStatus OPTIONAL } * ``` * */ export class ComponentIdentifier { componentClass; componentManufacturer; componentModel; componentSerial; componentRevision; componentManufacturerId; fieldReplaceable; componentAddresses; componentPlatformCert; componentPlatformCertUri; status; constructor( /** * @summary `componentClass`. * @public * @readonly */ componentClass, /** * @summary `componentManufacturer`. * @public * @readonly */ componentManufacturer, /** * @summary `componentModel`. * @public * @readonly */ componentModel, /** * @summary `componentSerial`. * @public * @readonly */ componentSerial, /** * @summary `componentRevision`. * @public * @readonly */ componentRevision, /** * @summary `componentManufacturerId`. * @public * @readonly */ componentManufacturerId, /** * @summary `fieldReplaceable`. * @public * @readonly */ fieldReplaceable, /** * @summary `componentAddresses`. * @public * @readonly */ componentAddresses, /** * @summary `componentPlatformCert`. * @public * @readonly */ componentPlatformCert, /** * @summary `componentPlatformCertUri`. * @public * @readonly */ componentPlatformCertUri, /** * @summary `status`. * @public * @readonly */ status) { this.componentClass = componentClass; this.componentManufacturer = componentManufacturer; this.componentModel = componentModel; this.componentSerial = componentSerial; this.componentRevision = componentRevision; this.componentManufacturerId = componentManufacturerId; this.fieldReplaceable = fieldReplaceable; this.componentAddresses = componentAddresses; this.componentPlatformCert = componentPlatformCert; this.componentPlatformCertUri = componentPlatformCertUri; this.status = status; } /** * @summary Restructures an object into a ComponentIdentifier * @description * * This takes an `object` and converts it to a `ComponentIdentifier`. * * @public * @static * @method * @param {Object} _o An object having all of the keys and values of a `ComponentIdentifier`. * @returns {ComponentIdentifier} */ static _from_object(_o) { return new ComponentIdentifier(_o.componentClass, _o.componentManufacturer, _o.componentModel, _o.componentSerial, _o.componentRevision, _o.componentManufacturerId, _o.fieldReplaceable, _o.componentAddresses, _o.componentPlatformCert, _o.componentPlatformCertUri, _o.status); } /** * @summary The enum used as the type of the component `status` * @public * @static */ static _enum_for_status = _enum_for_AttributeStatus; } /** * @summary The Leading Root Component Types of ComponentIdentifier * @description * * This is an array of `ComponentSpec`s that define how to decode the leading root component type list of a SET or SEQUENCE. * * @constant */ export const _root_component_type_list_1_spec_for_ComponentIdentifier = [ new $.ComponentSpec("componentClass", false, $.hasTag(_TagClass.universal, 16)), new $.ComponentSpec("componentManufacturer", false, $.hasTag(_TagClass.universal, 12)), new $.ComponentSpec("componentModel", false, $.hasTag(_TagClass.universal, 12)), new $.ComponentSpec("componentSerial", true, $.hasTag(_TagClass.context, 0)), new $.ComponentSpec("componentRevision", true, $.hasTag(_TagClass.context, 1)), new $.ComponentSpec("componentManufacturerId", true, $.hasTag(_TagClass.context, 2)), new $.ComponentSpec("fieldReplaceable", true, $.hasTag(_TagClass.context, 3)), new $.ComponentSpec("componentAddresses", true, $.hasTag(_TagClass.context, 4)), new $.ComponentSpec("componentPlatformCert", true, $.hasTag(_TagClass.context, 5)), new $.ComponentSpec("componentPlatformCertUri", true, $.hasTag(_TagClass.context, 6)), new $.ComponentSpec("status", true, $.hasTag(_TagClass.context, 7)) ]; /** * @summary The Trailing Root Component Types of ComponentIdentifier * @description * * This is an array of `ComponentSpec`s that define how to decode the trailing root component type list of a SET or SEQUENCE. * * @constant */ export const _root_component_type_list_2_spec_for_ComponentIdentifier = []; /** * @summary The Extension Addition Component Types of ComponentIdentifier * @description * * This is an array of `ComponentSpec`s that define how to decode the extension addition component type list of a SET or SEQUENCE. * * @constant */ export const _extension_additions_list_spec_for_ComponentIdentifier = []; let _cached_decoder_for_ComponentIdentifier = null; /** * @summary Decodes an ASN.1 element into a(n) ComponentIdentifier * @function * @param {_Element} el The element being decoded. * @returns {ComponentIdentifier} The decoded data structure. */ export function _decode_ComponentIdentifier(el) { if (!_cached_decoder_for_ComponentIdentifier) { _cached_decoder_for_ComponentIdentifier = function (el) { let componentClass; let componentManufacturer; let componentModel; let componentSerial; let componentRevision; let componentManufacturerId; let fieldReplaceable; let componentAddresses; let componentPlatformCert; let componentPlatformCertUri; let status; const callbacks = { "componentClass": (_el) => { componentClass = _decode_ComponentClass(_el); }, "componentManufacturer": (_el) => { componentManufacturer = $._decodeUTF8String(_el); }, "componentModel": (_el) => { componentModel = $._decodeUTF8String(_el); }, "componentSerial": (_el) => { componentSerial = $._decode_implicit(() => $._decodeUTF8String)(_el); }, "componentRevision": (_el) => { componentRevision = $._decode_implicit(() => $._decodeUTF8String)(_el); }, "componentManufacturerId": (_el) => { componentManufacturerId = $._decode_implicit(() => _decode_PrivateEnterpriseNumber)(_el); }, "fieldReplaceable": (_el) => { fieldReplaceable = $._decode_implicit(() => $._decodeBoolean)(_el); }, "componentAddresses": (_el) => { componentAddresses = $._decode_implicit(() => $._decodeSequenceOf(() => _decode_ComponentAddress))(_el); }, "componentPlatformCert": (_el) => { componentPlatformCert = $._decode_implicit(() => _decode_CertificateIdentifier)(_el); }, "componentPlatformCertUri": (_el) => { componentPlatformCertUri = $._decode_implicit(() => _decode_URIReference)(_el); }, "status": (_el) => { status = $._decode_implicit(() => _decode_AttributeStatus)(_el); } }; $._parse_sequence(el, callbacks, _root_component_type_list_1_spec_for_ComponentIdentifier, _extension_additions_list_spec_for_ComponentIdentifier, _root_component_type_list_2_spec_for_ComponentIdentifier, undefined); return new ComponentIdentifier(componentClass, componentManufacturer, componentModel, componentSerial, componentRevision, componentManufacturerId, fieldReplaceable, componentAddresses, componentPlatformCert, componentPlatformCertUri, status); }; } return _cached_decoder_for_ComponentIdentifier(el); } let _cached_encoder_for_ComponentIdentifier = null; /** * @summary Encodes a(n) ComponentIdentifier into an ASN.1 Element. * @function * @param value The element being encoded. * @param elGetter A function that can be used to get new ASN.1 elements. * @returns {_Element} The ComponentIdentifier, encoded as an ASN.1 Element. */ export function _encode_ComponentIdentifier(value, elGetter) { if (!_cached_encoder_for_ComponentIdentifier) { _cached_encoder_for_ComponentIdentifier = function (value) { return $._encodeSequence([].concat([ /* REQUIRED */ _encode_ComponentClass(value.componentClass, $.DER), /* REQUIRED */ $._encodeUTF8String(value.componentManufacturer, $.DER), /* REQUIRED */ $._encodeUTF8String(value.componentModel, $.DER), /* IF_ABSENT */ ((value.componentSerial === undefined) ? undefined : $._encode_implicit(_TagClass.context, 0, () => $._encodeUTF8String, $.DER)(value.componentSerial, $.DER)), /* IF_ABSENT */ ((value.componentRevision === undefined) ? undefined : $._encode_implicit(_TagClass.context, 1, () => $._encodeUTF8String, $.DER)(value.componentRevision, $.DER)), /* IF_ABSENT */ ((value.componentManufacturerId === undefined) ? undefined : $._encode_implicit(_TagClass.context, 2, () => _encode_PrivateEnterpriseNumber, $.DER)(value.componentManufacturerId, $.DER)), /* IF_ABSENT */ ((value.fieldReplaceable === undefined) ? undefined : $._encode_implicit(_TagClass.context, 3, () => $._encodeBoolean, $.DER)(value.fieldReplaceable, $.DER)), /* IF_ABSENT */ ((value.componentAddresses === undefined) ? undefined : $._encode_implicit(_TagClass.context, 4, () => $._encodeSequenceOf(() => _encode_ComponentAddress, $.DER), $.DER)(value.componentAddresses, $.DER)), /* IF_ABSENT */ ((value.componentPlatformCert === undefined) ? undefined : $._encode_implicit(_TagClass.context, 5, () => _encode_CertificateIdentifier, $.DER)(value.componentPlatformCert, $.DER)), /* IF_ABSENT */ ((value.componentPlatformCertUri === undefined) ? undefined : $._encode_implicit(_TagClass.context, 6, () => _encode_URIReference, $.DER)(value.componentPlatformCertUri, $.DER)), /* IF_ABSENT */ ((value.status === undefined) ? undefined : $._encode_implicit(_TagClass.context, 7, () => _encode_AttributeStatus, $.DER)(value.status, $.DER)) ]).filter((c) => (!!c)), $.DER); }; } return _cached_encoder_for_ComponentIdentifier(value, elGetter); } /* eslint-enable */