| 123456789101112131415161718192021222324252627282930313233 |
- /**
- * ANSI X.923 padding strategy.
- */
- export const AnsiX923 = {
- pad(data, blockSize) {
- const _data = data;
- // Shortcuts
- const dataSigBytes = _data.sigBytes;
- const blockSizeBytes = blockSize * 4;
- // Count padding bytes
- const nPaddingBytes = blockSizeBytes - (dataSigBytes % blockSizeBytes);
- // Compute last byte position
- const lastBytePos = dataSigBytes + nPaddingBytes - 1;
- // Pad
- _data.clamp();
- _data.words[lastBytePos >>> 2] |= nPaddingBytes << (24 - (lastBytePos % 4) * 8);
- _data.sigBytes += nPaddingBytes;
- },
- unpad(data) {
- const _data = data;
- // Get number of padding bytes from last byte
- const nPaddingBytes = _data.words[(_data.sigBytes - 1) >>> 2] & 0xff;
- // Remove padding
- _data.sigBytes -= nPaddingBytes;
- },
- };
|