@Test public void testMultipleKeys() throws Exception { byte[] aesCtrKeyValue = Random.randBytes(AES_KEY_SIZE); byte[] hmacKeyValue = Random.randBytes(HMAC_KEY_SIZE); int ivSize = 12; int tagSize = 16; Key primary = TestUtil.createKey( TestUtil.createAesCtrHmacAeadKeyData(aesCtrKeyValue, ivSize, hmacKeyValue, tagSize), 42, KeyStatusType.ENABLED, OutputPrefixType.TINK); Key raw = TestUtil.createKey( TestUtil.createAesCtrHmacAeadKeyData(aesCtrKeyValue, ivSize, hmacKeyValue, tagSize), 43, KeyStatusType.ENABLED, OutputPrefixType.RAW); Key legacy = TestUtil.createKey( TestUtil.createAesCtrHmacAeadKeyData(aesCtrKeyValue, ivSize, hmacKeyValue, tagSize), 44, KeyStatusType.ENABLED, OutputPrefixType.LEGACY); Key tink = TestUtil.createKey( TestUtil.createAesCtrHmacAeadKeyData(aesCtrKeyValue, ivSize, hmacKeyValue, tagSize), 45, KeyStatusType.ENABLED, OutputPrefixType.TINK); KeysetHandle keysetHandle = TestUtil.createKeysetHandle(TestUtil.createKeyset(primary, raw, legacy, tink)); Aead aead = keysetHandle.getPrimitive(Aead.class); byte[] plaintext = Random.randBytes(20); byte[] associatedData = Random.randBytes(20); byte[] ciphertext = aead.encrypt(plaintext, associatedData); byte[] prefix = Arrays.copyOfRange(ciphertext, 0, CryptoFormat.NON_RAW_PREFIX_SIZE); assertArrayEquals(prefix, CryptoFormat.getOutputPrefix(primary)); assertArrayEquals(plaintext, aead.decrypt(ciphertext, associatedData)); assertEquals( CryptoFormat.NON_RAW_PREFIX_SIZE + plaintext.length + ivSize + tagSize, ciphertext.length); KeysetHandle keysetHandle2 = TestUtil.createKeysetHandle(TestUtil.createKeyset(raw, legacy, tink)); Aead aead2 = keysetHandle2.getPrimitive(Aead.class); ciphertext = aead2.encrypt(plaintext, associatedData); assertArrayEquals(plaintext, aead.decrypt(ciphertext, associatedData)); byte[] aesCtrKeyValue2 = Random.randBytes(AES_KEY_SIZE); byte[] hmacKeyValue2 = Random.randBytes(HMAC_KEY_SIZE); Key random = TestUtil.createKey( TestUtil.createAesCtrHmacAeadKeyData(aesCtrKeyValue2, ivSize, hmacKeyValue2, tagSize), 44, KeyStatusType.ENABLED, OutputPrefixType.TINK); keysetHandle2 = TestUtil.createKeysetHandle(TestUtil.createKeyset(random)); aead2 = keysetHandle2.getPrimitive(Aead.class); ciphertext = aead2.encrypt(plaintext, associatedData); try { aead.decrypt(ciphertext, associatedData); fail("Expected GeneralSecurityException"); } catch (GeneralSecurityException e) { assertExceptionContains(e, "decryption failed"); } }
@Deprecated public static Aead getPrimitive(KeysetHandle keysetHandle) throws GeneralSecurityException { return getPrimitive(keysetHandle, null); }
AeadFactory { @Deprecated public static Aead getPrimitive(KeysetHandle keysetHandle) throws GeneralSecurityException { return getPrimitive(keysetHandle, null); } }
AeadFactory { @Deprecated public static Aead getPrimitive(KeysetHandle keysetHandle) throws GeneralSecurityException { return getPrimitive(keysetHandle, null); }  }
AeadFactory { @Deprecated public static Aead getPrimitive(KeysetHandle keysetHandle) throws GeneralSecurityException { return getPrimitive(keysetHandle, null); }  @Deprecated static Aead getPrimitive(KeysetHandle keysetHandle); @Deprecated static Aead getPrimitive(KeysetHandle keysetHandle, final KeyManager<Aead> keyManager); }
AeadFactory { @Deprecated public static Aead getPrimitive(KeysetHandle keysetHandle) throws GeneralSecurityException { return getPrimitive(keysetHandle, null); }  @Deprecated static Aead getPrimitive(KeysetHandle keysetHandle); @Deprecated static Aead getPrimitive(KeysetHandle keysetHandle, final KeyManager<Aead> keyManager);  }