Class JceChaCha20Poly1305

    • Field Summary

      Fields 
      Modifier and Type Field Description
      protected javax.crypto.Cipher cipher  
      protected javax.crypto.SecretKey cipherKey  
      protected int cipherMode  
      protected javax.crypto.Mac mac  
    • Constructor Summary

      Constructors 
      Constructor Description
      JceChaCha20Poly1305​(org.bouncycastle.jcajce.util.JcaJceHelper helper, boolean isEncrypting)  
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      int doFinal​(byte[] additionalData, byte[] input, int inputOffset, int inputLength, byte[] output, int outputOffset)
      Perform the cipher encryption/decryption returning the output in output.
      int getOutputSize​(int inputLength)
      Return the maximum size of the output for input of inputLength bytes.
      void init​(byte[] nonce, int macSize)
      Initialise the parameters for the AEAD operator.
      protected void initMAC​(byte[] firstBlock)  
      protected void runCipher​(byte[] buf)  
      void setKey​(byte[] key, int keyOff, int keyLen)
      Set the key to be used by the AEAD cipher implementation supporting this service.
      protected void updateMAC​(byte[] buf, int off, int len)  
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • cipher

        protected final javax.crypto.Cipher cipher
      • mac

        protected final javax.crypto.Mac mac
      • cipherMode

        protected final int cipherMode
      • cipherKey

        protected javax.crypto.SecretKey cipherKey
    • Constructor Detail

      • JceChaCha20Poly1305

        public JceChaCha20Poly1305​(org.bouncycastle.jcajce.util.JcaJceHelper helper,
                                   boolean isEncrypting)
                            throws java.security.GeneralSecurityException
        Throws:
        java.security.GeneralSecurityException
    • Method Detail

      • doFinal

        public int doFinal​(byte[] additionalData,
                           byte[] input,
                           int inputOffset,
                           int inputLength,
                           byte[] output,
                           int outputOffset)
                    throws java.io.IOException
        Description copied from interface: TlsAEADCipherImpl
        Perform the cipher encryption/decryption returning the output in output.

        Note: we have to use doFinal() here as it is the only way to guarantee output from the underlying cipher.

        Specified by:
        doFinal in interface TlsAEADCipherImpl
        Parameters:
        additionalData - any additional data to be included in the MAC calculation.
        input - array holding input data to the cipher.
        inputOffset - offset into input array data starts at.
        inputLength - length of the input data in the array.
        output - array to hold the cipher output.
        outputOffset - offset into output array to start saving output.
        Returns:
        the amount of data written to output.
        Throws:
        java.io.IOException - in case of failure.
      • getOutputSize

        public int getOutputSize​(int inputLength)
        Description copied from interface: TlsAEADCipherImpl
        Return the maximum size of the output for input of inputLength bytes.
        Specified by:
        getOutputSize in interface TlsAEADCipherImpl
        Parameters:
        inputLength - the length (in bytes) of the proposed input.
        Returns:
        the maximum size of the output.
      • init

        public void init​(byte[] nonce,
                         int macSize)
                  throws java.io.IOException
        Description copied from interface: TlsAEADCipherImpl
        Initialise the parameters for the AEAD operator.
        Specified by:
        init in interface TlsAEADCipherImpl
        Parameters:
        nonce - the nonce.
        macSize - MAC size in bytes.
        Throws:
        java.io.IOException - if the parameters are inappropriate.
      • setKey

        public void setKey​(byte[] key,
                           int keyOff,
                           int keyLen)
                    throws java.io.IOException
        Description copied from interface: TlsAEADCipherImpl
        Set the key to be used by the AEAD cipher implementation supporting this service.
        Specified by:
        setKey in interface TlsAEADCipherImpl
        Parameters:
        key - array holding the AEAD cipher key.
        keyOff - offset into the array the key starts at.
        keyLen - length of the key in the array.
        Throws:
        java.io.IOException
      • initMAC

        protected void initMAC​(byte[] firstBlock)
                        throws java.security.InvalidKeyException
        Throws:
        java.security.InvalidKeyException
      • runCipher

        protected void runCipher​(byte[] buf)
                          throws java.security.GeneralSecurityException
        Throws:
        java.security.GeneralSecurityException
      • updateMAC

        protected void updateMAC​(byte[] buf,
                                 int off,
                                 int len)