/*
 * Copyright (c) 2015. Ncomz. All Rights Reserved
 */

package com.ntels.onecable.admin.common.security;

/**
 * <pre>
 * 1. Interface Name    :   CryptoPaddingSvc
 * 2. FileName          :   CryptoPaddingSvc.java
 * 3. Package           :   com.ntels.onecable.admin.common.security
 * 4. Date              :   2016-12-06
 * 5. Author            :   aaron
 * 6. Comment           :   암호화에서 블럭 사이즈를 맞추기 위해 사용되는 Padding을 추상화 한 Interface
 * </pre>
 */
public interface CryptoPaddingSvc {

    /**
     * 요청한 Block Size를 맞추기 위해 Padding을 추가한다.
     *
     * @param source    byte[] 패딩을 추가할 bytes
     * @param blockSize int block size
     * @return byte[] 패딩이 추가 된 결과 bytes
     */
    public byte[] addPadding(byte[] source, int blockSize);

    /**
     * 요청한 Block Size를 맞추기 위해 추가 된 Padding을 제거한다.
     *
     * @param source    byte[] 패딩을 제거할 bytes
     * @param blockSize int block size
     * @return byte[] 패딩이 제거 된 결과 bytes
     */
    public byte[] removePadding(byte[] source, int blockSize);

}
