import * as asn1js from "asn1js"; import * as pvutils from "pvutils"; import { EMPTY_STRING } from "./constants"; import { AsnError } from "./errors"; import { OtherKeyAttribute, OtherKeyAttributeJson, OtherKeyAttributeSchema } from "./OtherKeyAttribute"; import { PkiObject, PkiObjectParameters } from "./PkiObject"; import * as Schema from "./Schema";
const SUBJECT_KEY_IDENTIFIER = "subjectKeyIdentifier"; const DATE = "date"; const OTHER = "other"; const CLEAR_PROPS = [
SUBJECT_KEY_IDENTIFIER,
DATE,
OTHER,
];
/** * Represents the RecipientKeyIdentifier structure described in [RFC5652](https://datatracker.ietf.org/doc/html/rfc5652)
*/
export class RecipientKeyIdentifier extends PkiObject implements IRecipientKeyIdentifier {
public subjectKeyIdentifier!: asn1js.OctetString; public date?: asn1js.GeneralizedTime; public other?: OtherKeyAttribute;
/** * Initializes a new instance of the {@link RecipientKeyIdentifier} class * @param parameters Initialization parameters
*/
constructor(parameters: RecipientKeyIdentifierParameters = {}) { super();
this.subjectKeyIdentifier = pvutils.getParametersValue(parameters, SUBJECT_KEY_IDENTIFIER, RecipientKeyIdentifier.defaultValues(SUBJECT_KEY_IDENTIFIER)); if (DATE in parameters) { this.date = pvutils.getParametersValue(parameters, DATE, RecipientKeyIdentifier.defaultValues(DATE));
} if (OTHER in parameters) { this.other = pvutils.getParametersValue(parameters, OTHER, RecipientKeyIdentifier.defaultValues(OTHER));
}
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 SUBJECT_KEY_IDENTIFIER): asn1js.OctetString; publicstatic override defaultValues(memberName: typeof DATE): asn1js.GeneralizedTime; publicstatic override defaultValues(memberName: typeof OTHER): OtherKeyAttribute; publicstatic override defaultValues(memberName: string): any { switch (memberName) { case SUBJECT_KEY_IDENTIFIER: returnnew asn1js.OctetString(); case DATE: returnnew asn1js.GeneralizedTime(); case OTHER: returnnew OtherKeyAttribute(); 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 SUBJECT_KEY_IDENTIFIER: return (memberValue.isEqual(RecipientKeyIdentifier.defaultValues(SUBJECT_KEY_IDENTIFIER))); case DATE: return ((memberValue.year === 0) &&
(memberValue.month === 0) &&
(memberValue.day === 0) &&
(memberValue.hour === 0) &&
(memberValue.minute === 0) &&
(memberValue.second === 0) &&
(memberValue.millisecond === 0)); case OTHER: return ((memberValue.keyAttrId === EMPTY_STRING) && (("keyAttr" in memberValue) === false)); default: returnsuper.defaultValues(memberName);
}
}
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.