pad-iso10126.js 665 B

123456789101112131415161718192021222324252627282930
  1. import {
  2. WordArray,
  3. } from './core.js';
  4. /**
  5. * ISO 10126 padding strategy.
  6. */
  7. export const Iso10126 = {
  8. pad(data, blockSize) {
  9. // Shortcut
  10. const blockSizeBytes = blockSize * 4;
  11. // Count padding bytes
  12. const nPaddingBytes = blockSizeBytes - (data.sigBytes % blockSizeBytes);
  13. // Pad
  14. data
  15. .concat(WordArray.random(nPaddingBytes - 1))
  16. .concat(WordArray.create([nPaddingBytes << 24], 1));
  17. },
  18. unpad(data) {
  19. const _data = data;
  20. // Get number of padding bytes from last byte
  21. const nPaddingBytes = _data.words[(_data.sigBytes - 1) >>> 2] & 0xff;
  22. // Remove padding
  23. _data.sigBytes -= nPaddingBytes;
  24. },
  25. };