Package org.mozilla.jss.crypto
Class Cipher
- java.lang.Object
-
- org.mozilla.jss.crypto.Cipher
-
- Direct Known Subclasses:
PK11Cipher
public abstract class Cipher extends java.lang.Object
A context for performing symmetric encryption and decryption. First, the context must be initialized. Then, it can be updated with input through zero or more calls toupdate
. Finally,doFinal
is called to finalize the operation. Note that it is not necessary to callupdate
if all of the data is available at once. In this case, all of the input can be processed with one call todoFinal
.
-
-
Constructor Summary
Constructors Constructor Description Cipher()
-
Method Summary
All Methods Static Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description abstract byte[]
doFinal()
Completes an cipher operation.abstract byte[]
doFinal(byte[] bytes)
Completes an cipher operation.abstract byte[]
doFinal(byte[] bytes, int offset, int length)
Completes an cipher operation.abstract void
initDecrypt(SymmetricKey key)
Initializes a decryption context with a symmetric key.abstract void
initDecrypt(SymmetricKey key, java.security.spec.AlgorithmParameterSpec parameters)
Initializes a decryption context with a symmetric key and algorithm parameters.abstract void
initEncrypt(SymmetricKey key)
Initializes a encryption context with a symmetric key.abstract void
initEncrypt(SymmetricKey key, java.security.spec.AlgorithmParameterSpec parameters)
Initializes an encryption context with a symmetric key and algorithm parameters.static byte[]
pad(byte[] toBePadded, int blockSize)
Pads a byte array so that its length is a multiple of the given blocksize.static byte[]
unPad(byte[] padded)
Un-pads a byte array that is padded with PKCS padding.static byte[]
unPad(byte[] padded, int blockSize)
Un-pads a byte array that is padded with PKCS padding.abstract byte[]
update(byte[] bytes)
Updates the encryption context with additional input.abstract byte[]
update(byte[] bytes, int offset, int length)
Updates the encryption context with additional plaintext.
-
-
-
Method Detail
-
initEncrypt
public abstract void initEncrypt(SymmetricKey key) throws java.security.InvalidKeyException, java.security.InvalidAlgorithmParameterException, TokenException
Initializes a encryption context with a symmetric key.- Throws:
java.security.InvalidKeyException
java.security.InvalidAlgorithmParameterException
TokenException
-
initDecrypt
public abstract void initDecrypt(SymmetricKey key) throws java.security.InvalidKeyException, java.security.InvalidAlgorithmParameterException, TokenException
Initializes a decryption context with a symmetric key.- Throws:
java.security.InvalidKeyException
java.security.InvalidAlgorithmParameterException
TokenException
-
initEncrypt
public abstract void initEncrypt(SymmetricKey key, java.security.spec.AlgorithmParameterSpec parameters) throws java.security.InvalidKeyException, java.security.InvalidAlgorithmParameterException, TokenException
Initializes an encryption context with a symmetric key and algorithm parameters.- Throws:
java.security.InvalidKeyException
java.security.InvalidAlgorithmParameterException
TokenException
-
initDecrypt
public abstract void initDecrypt(SymmetricKey key, java.security.spec.AlgorithmParameterSpec parameters) throws java.security.InvalidKeyException, java.security.InvalidAlgorithmParameterException, TokenException
Initializes a decryption context with a symmetric key and algorithm parameters.- Throws:
java.security.InvalidKeyException
java.security.InvalidAlgorithmParameterException
TokenException
-
update
public abstract byte[] update(byte[] bytes) throws java.lang.IllegalStateException, TokenException
Updates the encryption context with additional input.- Parameters:
bytes
- Bytes of plaintext (if encrypting) or ciphertext (if decrypting).- Returns:
- Bytes of ciphertext (if encrypting) or plaintext (if decrypting).
- Throws:
java.lang.IllegalStateException
TokenException
-
update
public abstract byte[] update(byte[] bytes, int offset, int length) throws java.lang.IllegalStateException, TokenException
Updates the encryption context with additional plaintext.- Parameters:
bytes
- Bytes of plaintext (if encrypting) or ciphertext (if decrypting).offset
- The index inbytes
at which to begin reading.length
- The number of bytes frombytes
to read.- Returns:
- Bytes of ciphertext (if encrypting) or plaintext (if decrypting).
- Throws:
java.lang.IllegalStateException
TokenException
-
doFinal
public abstract byte[] doFinal(byte[] bytes) throws java.lang.IllegalStateException, IllegalBlockSizeException, javax.crypto.BadPaddingException, TokenException
Completes an cipher operation. This can be called directly after the context is initialized, orupdate
may be called any number of times before callingfinal
.- Parameters:
bytes
- Bytes of plaintext (if encrypting) or ciphertext (if decrypting).- Returns:
- The last of the output.
- Throws:
java.lang.IllegalStateException
IllegalBlockSizeException
javax.crypto.BadPaddingException
TokenException
-
doFinal
public abstract byte[] doFinal(byte[] bytes, int offset, int length) throws java.lang.IllegalStateException, IllegalBlockSizeException, javax.crypto.BadPaddingException, TokenException
Completes an cipher operation.- Parameters:
bytes
- Bytes of plaintext (if encrypting) or ciphertext (if decrypting).offset
- The index inbytes
at which to begin reading.length
- The number of bytes frombytes
to read.- Returns:
- The last of the output.
- Throws:
java.lang.IllegalStateException
IllegalBlockSizeException
javax.crypto.BadPaddingException
TokenException
-
doFinal
public abstract byte[] doFinal() throws java.lang.IllegalStateException, IllegalBlockSizeException, javax.crypto.BadPaddingException, TokenException
Completes an cipher operation.- Returns:
- The last of the output.
- Throws:
java.lang.IllegalStateException
IllegalBlockSizeException
javax.crypto.BadPaddingException
TokenException
-
pad
public static byte[] pad(byte[] toBePadded, int blockSize)
Pads a byte array so that its length is a multiple of the given blocksize. The method of padding is the one defined in the RSA PKCS standards. If M is the length of the data and B is the block size, the padding string consists of B - (M mod B) octets, each having the value B - (M mod B).- Parameters:
toBePadded
- The byte array to pad.blockSize
- The block size of the encryption algorithm. Must be greater than zero.- See Also:
unPad(byte[], int)
-
unPad
public static byte[] unPad(byte[] padded, int blockSize) throws javax.crypto.BadPaddingException
Un-pads a byte array that is padded with PKCS padding.- Parameters:
blockSize
- The block size of the encryption algorithm. This is only used for error checking: if the pad size is not between 1 and blockSize, a BadPaddingException is thrown.- Throws:
javax.crypto.BadPaddingException
- See Also:
pad(byte[], int)
-
unPad
public static byte[] unPad(byte[] padded) throws javax.crypto.BadPaddingException
Un-pads a byte array that is padded with PKCS padding. Since this version does not take block size as a parameter, it cannot error check.- Throws:
javax.crypto.BadPaddingException
- See Also:
pad(byte[], int)
-
-