sspi-token-parser.js 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", {
  3. value: true
  4. });
  5. exports.default = void 0;
  6. var _token = require("./token");
  7. function parseChallenge(buffer) {
  8. const challenge = {};
  9. challenge.magic = buffer.slice(0, 8).toString('utf8');
  10. challenge.type = buffer.readInt32LE(8);
  11. challenge.domainLen = buffer.readInt16LE(12);
  12. challenge.domainMax = buffer.readInt16LE(14);
  13. challenge.domainOffset = buffer.readInt32LE(16);
  14. challenge.flags = buffer.readInt32LE(20);
  15. challenge.nonce = buffer.slice(24, 32);
  16. challenge.zeroes = buffer.slice(32, 40);
  17. challenge.targetLen = buffer.readInt16LE(40);
  18. challenge.targetMax = buffer.readInt16LE(42);
  19. challenge.targetOffset = buffer.readInt32LE(44);
  20. challenge.oddData = buffer.slice(48, 56);
  21. challenge.domain = buffer.slice(56, 56 + challenge.domainLen).toString('ucs2');
  22. challenge.target = buffer.slice(56 + challenge.domainLen, 56 + challenge.domainLen + challenge.targetLen);
  23. return challenge;
  24. }
  25. function sspiParser(parser, _colMetadata, _options, callback) {
  26. parser.readUsVarByte(buffer => {
  27. callback(new _token.SSPIToken(parseChallenge(buffer), buffer));
  28. });
  29. }
  30. var _default = sspiParser;
  31. exports.default = _default;
  32. module.exports = sspiParser;