diff options
Diffstat (limited to 'core/src/main/java/org/spongycastle/crypto/paddings/BlockCipherPadding.java')
-rw-r--r-- | core/src/main/java/org/spongycastle/crypto/paddings/BlockCipherPadding.java | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/core/src/main/java/org/spongycastle/crypto/paddings/BlockCipherPadding.java b/core/src/main/java/org/spongycastle/crypto/paddings/BlockCipherPadding.java new file mode 100644 index 00000000..f68915d1 --- /dev/null +++ b/core/src/main/java/org/spongycastle/crypto/paddings/BlockCipherPadding.java @@ -0,0 +1,48 @@ +package org.spongycastle.crypto.paddings; + +import java.security.SecureRandom; + +import org.spongycastle.crypto.InvalidCipherTextException; + +/** + * Block cipher padders are expected to conform to this interface + */ +public interface BlockCipherPadding +{ + /** + * Initialise the padder. + * + * @param random the source of randomness for the padding, if required. + */ + public void init(SecureRandom random) + throws IllegalArgumentException; + + /** + * Return the name of the algorithm the cipher implements. + * + * @return the name of the algorithm the cipher implements. + */ + public String getPaddingName(); + + /** + * add the pad bytes to the passed in block, returning the + * number of bytes added. + * <p> + * Note: this assumes that the last block of plain text is always + * passed to it inside in. i.e. if inOff is zero, indicating the + * entire block is to be overwritten with padding the value of in + * should be the same as the last block of plain text. The reason + * for this is that some modes such as "trailing bit compliment" + * base the padding on the last byte of plain text. + * </p> + */ + public int addPadding(byte[] in, int inOff); + + /** + * return the number of pad bytes present in the block. + * @exception InvalidCipherTextException if the padding is badly formed + * or invalid. + */ + public int padCount(byte[] in) + throws InvalidCipherTextException; +} |