key_usage.js 2.2 KB

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