org.bouncycastle.crypto.StreamBlockCipher Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of bcprov-ext-jdk15on Show documentation
Show all versions of bcprov-ext-jdk15on Show documentation
The Bouncy Castle Crypto package is a Java implementation of cryptographic algorithms. This jar contains JCE provider and lightweight API for the Bouncy Castle Cryptography APIs for JDK 1.5 to JDK 1.8. Note: this package includes the NTRU encryption algorithms.
The newest version!
package org.bouncycastle.crypto;
/**
* A parent class for block cipher modes that do not require block aligned data to be processed, but can function in
* a streaming mode.
*/
public abstract class StreamBlockCipher
implements BlockCipher, StreamCipher
{
private final BlockCipher cipher;
protected StreamBlockCipher(BlockCipher cipher)
{
this.cipher = cipher;
}
/**
* return the underlying block cipher that we are wrapping.
*
* @return the underlying block cipher that we are wrapping.
*/
public BlockCipher getUnderlyingCipher()
{
return cipher;
}
public final byte returnByte(byte in)
{
return calculateByte(in);
}
public int processBytes(byte[] in, int inOff, int len, byte[] out, int outOff)
throws DataLengthException
{
if (outOff + len > out.length)
{
throw new DataLengthException("output buffer too short");
}
if (inOff + len > in.length)
{
throw new DataLengthException("input buffer too small");
}
int inStart = inOff;
int inEnd = inOff + len;
int outStart = outOff;
while (inStart < inEnd)
{
out[outStart++] = calculateByte(in[inStart++]);
}
return len;
}
protected abstract byte calculateByte(byte b);
}