Package org.mozilla.jss.crypto
Class Cipher
java.lang.Object
org.mozilla.jss.crypto.Cipher
- Direct Known Subclasses:
PK11Cipher
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 to
update
. Finally,
doFinal
is called to finalize the operation. Note that
it is not necessary to call update
if all of the data is
available at once. In this case, all of the input can be processed with one
call to doFinal
.-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionabstract 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, 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, 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.
-
Constructor Details
-
Cipher
public Cipher()
-
-
Method Details
-
initEncrypt
public abstract void initEncrypt(SymmetricKey key) throws InvalidKeyException, InvalidAlgorithmParameterException, TokenException Initializes a encryption context with a symmetric key. -
initDecrypt
public abstract void initDecrypt(SymmetricKey key) throws InvalidKeyException, InvalidAlgorithmParameterException, TokenException Initializes a decryption context with a symmetric key. -
initEncrypt
public abstract void initEncrypt(SymmetricKey key, AlgorithmParameterSpec parameters) throws InvalidKeyException, InvalidAlgorithmParameterException, TokenException Initializes an encryption context with a symmetric key and algorithm parameters. -
initDecrypt
public abstract void initDecrypt(SymmetricKey key, AlgorithmParameterSpec parameters) throws InvalidKeyException, InvalidAlgorithmParameterException, TokenException Initializes a decryption context with a symmetric key and algorithm parameters. -
update
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:
IllegalStateException
TokenException
-
update
public abstract byte[] update(byte[] bytes, int offset, int length) throws 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:
IllegalStateException
TokenException
-
doFinal
public abstract byte[] doFinal(byte[] bytes) throws IllegalStateException, IllegalBlockSizeException, 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:
IllegalStateException
IllegalBlockSizeException
BadPaddingException
TokenException
-
doFinal
public abstract byte[] doFinal(byte[] bytes, int offset, int length) throws IllegalStateException, IllegalBlockSizeException, 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:
IllegalStateException
IllegalBlockSizeException
BadPaddingException
TokenException
-
doFinal
public abstract byte[] doFinal() throws IllegalStateException, IllegalBlockSizeException, BadPaddingException, TokenExceptionCompletes an cipher operation.- Returns:
- The last of the output.
- Throws:
IllegalStateException
IllegalBlockSizeException
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
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:
BadPaddingException
- See Also:
-
unPad
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:
BadPaddingException
- See Also:
-