@wildboar/pc
Version:
Trusted Computing Group Platform Certificate ASN.1 data structures in TypeScript
253 lines (252 loc) • 12.1 kB
JavaScript
/* 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 */