use of com.google.crypto.tink.KeysetHandle in project tink by google.
the class AesGcmKeyManagerTest method testBasic.
@Test
public void testBasic() throws Exception {
byte[] keyValue = Random.randBytes(AES_KEY_SIZE);
KeysetHandle keysetHandle = TestUtil.createKeysetHandle(TestUtil.createKeyset(TestUtil.createKey(TestUtil.createAesGcmKeyData(keyValue), 42, KeyStatusType.ENABLED, OutputPrefixType.TINK)));
TestUtil.runBasicAeadFactoryTests(keysetHandle);
}
use of com.google.crypto.tink.KeysetHandle in project tink by google.
the class StreamingAeadFactoryTest method testBasicAesGcmHkdfStreamingAead.
@Test
public void testBasicAesGcmHkdfStreamingAead() throws Exception {
byte[] keyValue = Random.randBytes(AES_KEY_SIZE);
int derivedKeySize = AES_KEY_SIZE;
int ciphertextSegmentSize = 128;
KeysetHandle keysetHandle = TestUtil.createKeysetHandle(TestUtil.createKeyset(TestUtil.createKey(TestUtil.createAesGcmHkdfStreamingKeyData(keyValue, derivedKeySize, ciphertextSegmentSize), 42, KeyStatusType.ENABLED, OutputPrefixType.RAW)));
StreamingAead streamingAead = StreamingAeadFactory.getPrimitive(keysetHandle);
StreamingTestUtil.testEncryptionAndDecryption(streamingAead);
}
use of com.google.crypto.tink.KeysetHandle in project tink by google.
the class StreamingAeadFactoryTest method testMultipleKeys.
@Test
public void testMultipleKeys() throws Exception {
byte[] primaryKeyValue = Random.randBytes(AES_KEY_SIZE);
byte[] otherKeyValue = Random.randBytes(AES_KEY_SIZE);
byte[] anotherKeyValue = Random.randBytes(AES_KEY_SIZE);
int derivedKeySize = AES_KEY_SIZE;
int ciphertextSegmentSize = 128;
Key primaryKey = TestUtil.createKey(TestUtil.createAesGcmHkdfStreamingKeyData(primaryKeyValue, derivedKeySize, ciphertextSegmentSize), 42, KeyStatusType.ENABLED, OutputPrefixType.RAW);
Key otherKey = TestUtil.createKey(TestUtil.createAesCtrHmacStreamingKeyData(otherKeyValue, derivedKeySize, ciphertextSegmentSize), 43, KeyStatusType.ENABLED, OutputPrefixType.RAW);
Key anotherKey = TestUtil.createKey(TestUtil.createAesGcmHkdfStreamingKeyData(anotherKeyValue, derivedKeySize, ciphertextSegmentSize), 72, KeyStatusType.ENABLED, OutputPrefixType.RAW);
KeysetHandle keysetHandle = TestUtil.createKeysetHandle(TestUtil.createKeyset(primaryKey, otherKey, anotherKey));
StreamingAead streamingAead = StreamingAeadFactory.getPrimitive(keysetHandle);
StreamingAead primaryAead = StreamingAeadFactory.getPrimitive(TestUtil.createKeysetHandle(TestUtil.createKeyset(primaryKey)));
StreamingAead otherAead = StreamingAeadFactory.getPrimitive(TestUtil.createKeysetHandle(TestUtil.createKeyset(otherKey)));
StreamingAead anotherAead = StreamingAeadFactory.getPrimitive(TestUtil.createKeysetHandle(TestUtil.createKeyset(anotherKey)));
StreamingTestUtil.testEncryptionAndDecryption(streamingAead, streamingAead);
StreamingTestUtil.testEncryptionAndDecryption(streamingAead, primaryAead);
StreamingTestUtil.testEncryptionAndDecryption(primaryAead, streamingAead);
StreamingTestUtil.testEncryptionAndDecryption(otherAead, streamingAead);
StreamingTestUtil.testEncryptionAndDecryption(anotherAead, streamingAead);
StreamingTestUtil.testEncryptionAndDecryption(primaryAead, primaryAead);
StreamingTestUtil.testEncryptionAndDecryption(otherAead, otherAead);
StreamingTestUtil.testEncryptionAndDecryption(anotherAead, anotherAead);
try {
StreamingTestUtil.testEncryptionAndDecryption(otherAead, primaryAead);
fail("No matching key, should have thrown an exception");
} catch (IOException expected) {
assertExceptionContains(expected, "No matching key");
}
try {
StreamingTestUtil.testEncryptionAndDecryption(anotherAead, primaryAead);
fail("No matching key, should have thrown an exception");
} catch (IOException expected) {
assertExceptionContains(expected, "No matching key");
}
}
use of com.google.crypto.tink.KeysetHandle in project tink by google.
the class DeterministicAeadFactoryTest method testEncrytDecrypt.
@Test
public void testEncrytDecrypt() throws Exception {
KeysetHandle keysetHandle = KeysetHandle.generateNew(DeterministicAeadKeyTemplates.AES256_SIV);
DeterministicAead aead = DeterministicAeadFactory.getPrimitive(keysetHandle);
byte[] plaintext = Random.randBytes(20);
byte[] associatedData = Random.randBytes(20);
byte[] ciphertext = aead.encryptDeterministically(plaintext, associatedData);
byte[] ciphertext2 = aead.encryptDeterministically(plaintext, associatedData);
byte[] decrypted = aead.decryptDeterministically(ciphertext, associatedData);
byte[] decrypted2 = aead.decryptDeterministically(ciphertext2, associatedData);
assertArrayEquals(ciphertext, ciphertext2);
assertArrayEquals(plaintext, decrypted);
assertArrayEquals(plaintext, decrypted2);
}
use of com.google.crypto.tink.KeysetHandle in project tink by google.
the class DeterministicAeadFactoryTest method testSmallPlaintextWithRawKey.
private static void testSmallPlaintextWithRawKey(int keySize) throws Exception {
Key primary = TestUtil.createKey(TestUtil.createAesSivKeyData(keySize), 42, KeyStatusType.ENABLED, OutputPrefixType.RAW);
KeysetHandle keysetHandle = TestUtil.createKeysetHandle(TestUtil.createKeyset(primary));
DeterministicAead daead = DeterministicAeadFactory.getPrimitive(keysetHandle);
byte[] plaintext = Random.randBytes(1);
byte[] associatedData = Random.randBytes(20);
byte[] ciphertext = daead.encryptDeterministically(plaintext, associatedData);
assertArrayEquals(plaintext, daead.decryptDeterministically(ciphertext, associatedData));
assertEquals(CryptoFormat.RAW_PREFIX_SIZE + plaintext.length + 16, ciphertext.length);
}
Aggregations