import * as asn1js from "asn1js"; import * as pvutils from "pvutils"; import { CertID, CertIDJson, CertIDSchema } from "./CertID"; import { EMPTY_STRING } from "./constants"; import { AsnError } from "./errors"; import { Extension, ExtensionJson } from "./Extension"; import { Extensions, ExtensionsSchema } from "./Extensions"; import { PkiObject, PkiObjectParameters } from "./PkiObject"; import * as Schema from "./Schema";
/** * Initializes a new instance of the {@link SingleResponse} class * @param parameters Initialization parameters
*/
constructor(parameters: SingleResponseParameters = {}) { super();
this.certID = pvutils.getParametersValue(parameters, CERT_ID, SingleResponse.defaultValues(CERT_ID)); this.certStatus = pvutils.getParametersValue(parameters, CERT_STATUS, SingleResponse.defaultValues(CERT_STATUS)); this.thisUpdate = pvutils.getParametersValue(parameters, THIS_UPDATE, SingleResponse.defaultValues(THIS_UPDATE)); if (NEXT_UPDATE in parameters) { this.nextUpdate = pvutils.getParametersValue(parameters, NEXT_UPDATE, SingleResponse.defaultValues(NEXT_UPDATE));
} if (SINGLE_EXTENSIONS in parameters) { this.singleExtensions = pvutils.getParametersValue(parameters, SINGLE_EXTENSIONS, SingleResponse.defaultValues(SINGLE_EXTENSIONS));
}
if (parameters.schema) { this.fromSchema(parameters.schema);
}
}
/** * Returns default values for all class members * @param memberName String name for a class member * @returns Default value
*/ publicstatic override defaultValues(memberName: typeof CERT_ID): CertID; publicstatic override defaultValues(memberName: typeof CERT_STATUS): any; publicstatic override defaultValues(memberName: typeof THIS_UPDATE): Date; publicstatic override defaultValues(memberName: typeof NEXT_UPDATE): Date; publicstatic override defaultValues(memberName: typeof SINGLE_EXTENSIONS): Extension[]; publicstatic override defaultValues(memberName: string): any { switch (memberName) { case CERT_ID: returnnew CertID(); case CERT_STATUS: return {}; case THIS_UPDATE: case NEXT_UPDATE: returnnew Date(0, 0, 0); case SINGLE_EXTENSIONS: return []; default: returnsuper.defaultValues(memberName);
}
}
/** * Compare values with default values for all class members * @param memberName String name for a class member * @param memberValue Value to compare with default value
*/ publicstatic compareWithDefault(memberName: string, memberValue: any): boolean { switch (memberName) { case CERT_ID: return ((CertID.compareWithDefault("hashAlgorithm", memberValue.hashAlgorithm)) &&
(CertID.compareWithDefault("issuerNameHash", memberValue.issuerNameHash)) &&
(CertID.compareWithDefault("issuerKeyHash", memberValue.issuerKeyHash)) &&
(CertID.compareWithDefault("serialNumber", memberValue.serialNumber))); case CERT_STATUS: return (Object.keys(memberValue).length === 0); case THIS_UPDATE: case NEXT_UPDATE: return (memberValue === SingleResponse.defaultValues(memberName as typeof NEXT_UPDATE)); default: returnsuper.defaultValues(memberName);
}
}
// Get internal properties from parsed schema this.certID = new CertID({ schema: asn1.result.certID }); this.certStatus = asn1.result.certStatus; this.thisUpdate = asn1.result.thisUpdate.toDate(); if (NEXT_UPDATE in asn1.result) this.nextUpdate = asn1.result.nextUpdate.toDate(); if (SINGLE_EXTENSIONS in asn1.result) this.singleExtensions = Array.from(asn1.result.singleExtensions.valueBlock.value, element => new Extension({ schema: element }));
}
public toSchema(): asn1js.Sequence { // Create value array for output sequence const outputArray = [];
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.