All files / src/crypter/padding ISOIEC78164Padding.ts

100% Statements 7/7
100% Branches 0/0
100% Functions 2/2
100% Lines 7/7

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17    1x     141x 141x       139x 139x 694x 139x      
import type { IPadding } from './IPadding';
 
export class ISOIEC7864Padding implements IPadding {
 
    public addTo(data: Uint8Array, blockSize: number): Uint8Array {
        const paddingLength = blockSize - data.length % blockSize;
        return new Uint8Array([...data, 0x80, ...new Array<number>(paddingLength - 1).fill(0)]);
    }
 
    public removeFrom(data: Uint8Array): Uint8Array {
        let index = data.length - 1;
        while (data[index] !== 0x80)
            index -= 1;
        return data.slice(0, index);
    }
}