/** @param serializedKey serialized {@code KmsEnvelopeAeadKey} proto */ @Override public Aead getPrimitive(ByteString serializedKey) throws GeneralSecurityException { try { KmsEnvelopeAeadKey keyProto = KmsEnvelopeAeadKey.parseFrom(serializedKey); return getPrimitive(keyProto); } catch (InvalidProtocolBufferException e) { throw new GeneralSecurityException("expected serialized KmSEnvelopeAeadKey proto", e); } }
/** * @param serializedKeyFormat serialized {@code KmsEnvelopeAeadKeyFormat} proto * @return new {@code KmsEnvelopeAeadKey} proto */ @Override public MessageLite newKey(ByteString serializedKeyFormat) throws GeneralSecurityException { try { KmsEnvelopeAeadKeyFormat format = KmsEnvelopeAeadKeyFormat.parseFrom(serializedKeyFormat); return newKey(format); } catch (InvalidProtocolBufferException e) { throw new GeneralSecurityException("expected serialized KmsEnvelopeAeadKeyFormat proto", e); } }
private KeyManager<Aead> aeadKeyManager(String typeUrl) throws GeneralSecurityException { switch (typeUrl) { case AesCtrHmacAeadKeyManager.TYPE_URL: return new AesCtrHmacAeadKeyManager(); case AesEaxKeyManager.TYPE_URL: return new AesEaxKeyManager(); case AesGcmKeyManager.TYPE_URL: return new AesGcmKeyManager(); case ChaCha20Poly1305KeyManager.TYPE_URL: return new ChaCha20Poly1305KeyManager(); case KmsAeadKeyManager.TYPE_URL: return new KmsAeadKeyManager(); case KmsEnvelopeAeadKeyManager.TYPE_URL: return new KmsEnvelopeAeadKeyManager(); default: throw new GeneralSecurityException( String.format("No support for primitive 'Aead' with key type '%s'.", typeUrl)); } } }
/** @param key {@code KmsEnvelopeAeadKey} proto */ @Override public Aead getPrimitive(MessageLite key) throws GeneralSecurityException { if (!(key instanceof KmsEnvelopeAeadKey)) { throw new GeneralSecurityException("expected KmsEnvelopeAeadKey proto"); } KmsEnvelopeAeadKey keyProto = (KmsEnvelopeAeadKey) key; validate(keyProto); String keyUri = keyProto.getParams().getKekUri(); KmsClient kmsClient = KmsClients.get(keyUri); Aead remote = kmsClient.getAead(keyUri); return new KmsEnvelopeAead(keyProto.getParams().getDekTemplate(), remote); }
/** * @param serializedKeyFormat serialized {@code KmsEnvelopeAeadKeyFormat} proto * @return {@code KeyData} with a new {@code KmsEnvelopeAeadKey} proto */ @Override public KeyData newKeyData(ByteString serializedKeyFormat) throws GeneralSecurityException { KmsEnvelopeAeadKey key = (KmsEnvelopeAeadKey) newKey(serializedKeyFormat); return KeyData.newBuilder() .setTypeUrl(TYPE_URL) .setValue(key.toByteString()) .setKeyMaterialType(KeyData.KeyMaterialType.REMOTE) .build(); }