key_usage.js 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. import { BitString } from "@peculiar/asn1-schema";
  2. import { id_ce } from "../object_identifiers";
  3. export const id_ce_keyUsage = `${id_ce}.15`;
  4. export var KeyUsageFlags;
  5. (function (KeyUsageFlags) {
  6. KeyUsageFlags[KeyUsageFlags["digitalSignature"] = 1] = "digitalSignature";
  7. KeyUsageFlags[KeyUsageFlags["nonRepudiation"] = 2] = "nonRepudiation";
  8. KeyUsageFlags[KeyUsageFlags["keyEncipherment"] = 4] = "keyEncipherment";
  9. KeyUsageFlags[KeyUsageFlags["dataEncipherment"] = 8] = "dataEncipherment";
  10. KeyUsageFlags[KeyUsageFlags["keyAgreement"] = 16] = "keyAgreement";
  11. KeyUsageFlags[KeyUsageFlags["keyCertSign"] = 32] = "keyCertSign";
  12. KeyUsageFlags[KeyUsageFlags["cRLSign"] = 64] = "cRLSign";
  13. KeyUsageFlags[KeyUsageFlags["encipherOnly"] = 128] = "encipherOnly";
  14. KeyUsageFlags[KeyUsageFlags["decipherOnly"] = 256] = "decipherOnly";
  15. })(KeyUsageFlags || (KeyUsageFlags = {}));
  16. export class KeyUsage extends BitString {
  17. toJSON() {
  18. const flag = this.toNumber();
  19. const res = [];
  20. if (flag & KeyUsageFlags.cRLSign) {
  21. res.push("crlSign");
  22. }
  23. if (flag & KeyUsageFlags.dataEncipherment) {
  24. res.push("dataEncipherment");
  25. }
  26. if (flag & KeyUsageFlags.decipherOnly) {
  27. res.push("decipherOnly");
  28. }
  29. if (flag & KeyUsageFlags.digitalSignature) {
  30. res.push("digitalSignature");
  31. }
  32. if (flag & KeyUsageFlags.encipherOnly) {
  33. res.push("encipherOnly");
  34. }
  35. if (flag & KeyUsageFlags.keyAgreement) {
  36. res.push("keyAgreement");
  37. }
  38. if (flag & KeyUsageFlags.keyCertSign) {
  39. res.push("keyCertSign");
  40. }
  41. if (flag & KeyUsageFlags.keyEncipherment) {
  42. res.push("keyEncipherment");
  43. }
  44. if (flag & KeyUsageFlags.nonRepudiation) {
  45. res.push("nonRepudiation");
  46. }
  47. return res;
  48. }
  49. toString() {
  50. return `[${this.toJSON().join(", ")}]`;
  51. }
  52. }