use of com.google.crypto.tink.Aead in project tink by google.
the class AesEaxKeyManagerTest method testCiphertextSize.
@Test
public void testCiphertextSize() throws Exception {
AesEaxKey key = factory.createKey(createKeyFormat(32, 16));
Aead aead = manager.getPrimitive(key, Aead.class);
byte[] plaintext = "plaintext".getBytes(UTF_8);
byte[] associatedData = "associatedData".getBytes(UTF_8);
byte[] ciphertext = aead.encrypt(plaintext, associatedData);
assertEquals(16 + /* IV_SIZE */
plaintext.length + 16, /* TAG_SIZE */
ciphertext.length);
}
use of com.google.crypto.tink.Aead in project tink by google.
the class AeadThreadSafetyTest method testXChaChaPoly1305.
@Test
public void testXChaChaPoly1305() throws Exception {
byte[] key = Random.randBytes(32);
Aead cipher = new XChaCha20Poly1305(key);
testEncryptionDecryption(cipher, 5, 128, 20);
}
use of com.google.crypto.tink.Aead in project tink by google.
the class KeysetServiceImpl method readEncrypted.
@Override
public void readEncrypted(KeysetReadEncryptedRequest request, StreamObserver<KeysetReadEncryptedResponse> responseObserver) {
KeysetReadEncryptedResponse response;
try {
// get masterAead
KeysetHandle masterKeysetHandle = CleartextKeysetHandle.read(BinaryKeysetReader.withBytes(request.getMasterKeyset().toByteArray()));
Aead masterAead = masterKeysetHandle.getPrimitive(Aead.class);
// read encrypted keyset to keysetHandle
KeysetReader reader = BinaryKeysetReader.withBytes(request.getEncryptedKeyset().toByteArray());
KeysetHandle keysetHandle;
if (request.hasAssociatedData()) {
keysetHandle = KeysetHandle.readWithAssociatedData(reader, masterAead, request.getAssociatedData().getValue().toByteArray());
} else {
keysetHandle = KeysetHandle.read(reader, masterAead);
}
// get keyset from keysetHandle
Keyset keyset = CleartextKeysetHandle.getKeyset(keysetHandle);
ByteArrayOutputStream keysetStream = new ByteArrayOutputStream();
BinaryKeysetWriter.withOutputStream(keysetStream).write(keyset);
keysetStream.close();
response = KeysetReadEncryptedResponse.newBuilder().setKeyset(ByteString.copyFrom(keysetStream.toByteArray())).build();
} catch (GeneralSecurityException | InvalidProtocolBufferException e) {
response = KeysetReadEncryptedResponse.newBuilder().setErr(e.toString()).build();
} catch (IOException e) {
responseObserver.onError(Status.UNKNOWN.withDescription(e.getMessage()).asException());
return;
}
responseObserver.onNext(response);
responseObserver.onCompleted();
}
use of com.google.crypto.tink.Aead in project tink by google.
the class FakeKmsClientTest method createNewAead_success.
@Test
public void createNewAead_success() throws GeneralSecurityException {
String uri = FakeKmsClient.createFakeKeyUri();
FakeKmsClient client = new FakeKmsClient(uri);
assertThat(client.doesSupport(uri)).isTrue();
Aead aead = client.getAead(uri);
byte[] plaintext = Random.randBytes(20);
byte[] associatedData = Random.randBytes(20);
byte[] ciphertext = aead.encrypt(plaintext, associatedData);
assertArrayEquals(plaintext, aead.decrypt(ciphertext, associatedData));
}
use of com.google.crypto.tink.Aead in project tink by google.
the class AeadServiceImpl method encrypt.
/**
* Encrypts a message.
*/
@Override
public void encrypt(AeadEncryptRequest request, StreamObserver<AeadEncryptResponse> responseObserver) {
AeadEncryptResponse response;
try {
KeysetHandle keysetHandle = CleartextKeysetHandle.read(BinaryKeysetReader.withBytes(request.getKeyset().toByteArray()));
Aead aead = keysetHandle.getPrimitive(Aead.class);
byte[] ciphertext = aead.encrypt(request.getPlaintext().toByteArray(), request.getAssociatedData().toByteArray());
response = AeadEncryptResponse.newBuilder().setCiphertext(ByteString.copyFrom(ciphertext)).build();
} catch (GeneralSecurityException | InvalidProtocolBufferException e) {
response = AeadEncryptResponse.newBuilder().setErr(e.toString()).build();
} catch (IOException e) {
responseObserver.onError(Status.UNKNOWN.withDescription(e.getMessage()).asException());
return;
}
responseObserver.onNext(response);
responseObserver.onCompleted();
}
Aggregations