All files / src/crypter/padding ANSIX923Padding.ts

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

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    1x     141x 141x       140x 140x      
import type { IPadding } from './IPadding';
 
export class ASNIX923Padding implements IPadding {
 
    public addTo(data: Uint8Array, blockSize: number): Uint8Array {
        const paddingLength = blockSize - data.length % blockSize;
        return new Uint8Array([...data, ...new Array<number>(paddingLength - 1).fill(0), paddingLength]);
    }
 
    public removeFrom(data: Uint8Array): Uint8Array {
        const paddingLength = data[data.length - 1];
        return data.slice(0, data.length - paddingLength);
    }
}