/** * @param serializedKey serialized {@code KmsAeadKey} proto */ @Override public Aead getPrimitive(ByteString serializedKey) throws GeneralSecurityException { try { KmsAeadKey keyProto = KmsAeadKey.parseFrom(serializedKey); return getPrimitive(keyProto); } catch (InvalidProtocolBufferException e) { throw new GeneralSecurityException("expected KmsAeadKey proto", e); } }
/** * @param serializedKeyFormat serialized {@code KmsAeadKeyFormat} proto * @return new {@code KmsAeadKey} proto */ @Override public MessageLite newKey(ByteString serializedKeyFormat) throws GeneralSecurityException { try { KmsAeadKeyFormat format = KmsAeadKeyFormat.parseFrom(serializedKeyFormat); return newKey(format); } catch (InvalidProtocolBufferException e) { throw new GeneralSecurityException("expected serialized KmsAeadKeyFormat proto", e); } }
/** * @param key {@code KmsAeadKey} proto */ @Override public Aead getPrimitive(MessageLite key) throws GeneralSecurityException { if (!(key instanceof KmsAeadKey)) { throw new GeneralSecurityException("expected KmsAeadKey proto"); } KmsAeadKey keyProto = (KmsAeadKey) key; validate(keyProto); String keyUri = keyProto.getParams().getKeyUri(); KmsClient kmsClient = KmsClients.get(keyUri); return kmsClient.getAead(keyUri); }
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 serializedKeyFormat serialized {@code KmsAeadKeyFormat} proto * @return {@code KeyData} with a new {@code KmsAeadKey} proto */ @Override public KeyData newKeyData(ByteString serializedKeyFormat) throws GeneralSecurityException { KmsAeadKey key = (KmsAeadKey) newKey(serializedKeyFormat); return KeyData.newBuilder() .setTypeUrl(TYPE_URL) .setValue(key.toByteString()) .setKeyMaterialType(KeyData.KeyMaterialType.REMOTE) .build(); }