java_src/src/main/java/com/google/crypto/tink/subtle/ChaCha20Poly1305Base.java
/** Prepares the input to MAC, following RFC 8439, section 2.8. */
Prepares the input to MAC, following RFC 8439, section 2.8.
Prepares the input to MAC following RFC 8439 section 2 . 8 .
private static byte[] macDataRfc8439(final byte[] aad, ByteBuffer ciphertext) {
    int aadPaddedLen = (aad.length % 16 == 0) ? aad.length : (aad.length + 16 - aad.length % 16);
    int ciphertextLen = ciphertext.remaining();
    int ciphertextPaddedLen =
        (ciphertextLen % 16 == 0) ? ciphertextLen : (ciphertextLen + 16 - ciphertextLen % 16);
    ByteBuffer macData =
        ByteBuffer.allocate(aadPaddedLen + ciphertextPaddedLen + 16).order(ByteOrder.LITTLE_ENDIAN);
    macData.put(aad);
    macData.position(aadPaddedLen);
    macData.put(ciphertext);
    macData.position(aadPaddedLen + ciphertextPaddedLen);
    macData.putLong(aad.length);
    macData.putLong(ciphertextLen);
    return macData.array();
  }
private static byte [ ] macDataRfc8439 ( final byte [ ] aad , ByteBuffer ciphertext ) { int aadPaddedLen = ( aad . length % 16 == 0 ) ? aad . length : ( aad . length + 16 - aad . length % 16 ) ; int ciphertextLen = ciphertext . remaining ( ) ; int ciphertextPaddedLen = ( ciphertextLen % 16 == 0 ) ? ciphertextLen : ( ciphertextLen + 16 - ciphertextLen % 16 ) ; ByteBuffer macData = ByteBuffer . allocate ( aadPaddedLen + ciphertextPaddedLen + 16 ) . order ( ByteOrder . LITTLE_ENDIAN ) ; macData . put ( aad ) ; macData . position ( aadPaddedLen ) ; macData . put ( ciphertext ) ; macData . position ( aadPaddedLen + ciphertextPaddedLen ) ; macData . putLong ( aad . length ) ; macData . putLong ( ciphertextLen ) ; return macData . array ( ) ; }
Prepares the input to MAC, following RFC 8439, section 2.8.
Prepares the input to MAC following RFC 8439 section 2 . 8 .