crypto_callbacks.js 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", { value: true });
  3. exports.hmacSha256Hook = exports.hmacSha512Hook = exports.aes256CtrDecryptHook = exports.aes256CtrEncryptHook = exports.aes256CbcDecryptHook = exports.aes256CbcEncryptHook = exports.signRsaSha256Hook = exports.makeHmacHook = exports.sha256Hook = exports.randomHook = exports.makeAES256Hook = void 0;
  4. const crypto = require("crypto");
  5. function makeAES256Hook(method, mode) {
  6. return function (key, iv, input, output) {
  7. let result;
  8. try {
  9. const cipher = crypto[method](mode, key, iv);
  10. cipher.setAutoPadding(false);
  11. result = cipher.update(input);
  12. const final = cipher.final();
  13. if (final.length > 0) {
  14. result = Buffer.concat([result, final]);
  15. }
  16. }
  17. catch (e) {
  18. return e;
  19. }
  20. result.copy(output);
  21. return result.length;
  22. };
  23. }
  24. exports.makeAES256Hook = makeAES256Hook;
  25. function randomHook(buffer, count) {
  26. try {
  27. crypto.randomFillSync(buffer, 0, count);
  28. }
  29. catch (e) {
  30. return e;
  31. }
  32. return count;
  33. }
  34. exports.randomHook = randomHook;
  35. function sha256Hook(input, output) {
  36. let result;
  37. try {
  38. result = crypto.createHash('sha256').update(input).digest();
  39. }
  40. catch (e) {
  41. return e;
  42. }
  43. result.copy(output);
  44. return result.length;
  45. }
  46. exports.sha256Hook = sha256Hook;
  47. function makeHmacHook(algorithm) {
  48. return (key, input, output) => {
  49. let result;
  50. try {
  51. result = crypto.createHmac(algorithm, key).update(input).digest();
  52. }
  53. catch (e) {
  54. return e;
  55. }
  56. result.copy(output);
  57. return result.length;
  58. };
  59. }
  60. exports.makeHmacHook = makeHmacHook;
  61. function signRsaSha256Hook(key, input, output) {
  62. let result;
  63. try {
  64. const signer = crypto.createSign('sha256WithRSAEncryption');
  65. const privateKey = Buffer.from(`-----BEGIN PRIVATE KEY-----\n${key.toString('base64')}\n-----END PRIVATE KEY-----\n`);
  66. result = signer.update(input).end().sign(privateKey);
  67. }
  68. catch (e) {
  69. return e;
  70. }
  71. result.copy(output);
  72. return result.length;
  73. }
  74. exports.signRsaSha256Hook = signRsaSha256Hook;
  75. exports.aes256CbcEncryptHook = makeAES256Hook('createCipheriv', 'aes-256-cbc');
  76. exports.aes256CbcDecryptHook = makeAES256Hook('createDecipheriv', 'aes-256-cbc');
  77. exports.aes256CtrEncryptHook = makeAES256Hook('createCipheriv', 'aes-256-ctr');
  78. exports.aes256CtrDecryptHook = makeAES256Hook('createDecipheriv', 'aes-256-ctr');
  79. exports.hmacSha512Hook = makeHmacHook('sha512');
  80. exports.hmacSha256Hook = makeHmacHook('sha256');
  81. //# sourceMappingURL=crypto_callbacks.js.map