@Override public MessageLite newKey(ByteString unused) throws GeneralSecurityException { return newKey(); }
@Override public Aead getPrimitive(ByteString serialized) throws GeneralSecurityException { try { ChaCha20Poly1305Key keyProto = ChaCha20Poly1305Key.parseFrom(serialized); return getPrimitive(keyProto); } catch (InvalidProtocolBufferException e) { throw new GeneralSecurityException("invalid ChaCha20Poly1305 key", e); } }
@Override public Aead getPrimitive(MessageLite key) throws GeneralSecurityException { if (!(key instanceof ChaCha20Poly1305Key)) { throw new GeneralSecurityException("expected ChaCha20Poly1305Key proto"); } ChaCha20Poly1305Key keyProto = (ChaCha20Poly1305Key) key; validate(keyProto); return new ChaCha20Poly1305(keyProto.getKeyValue().toByteArray()); }
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)); } } }
@Override public MessageLite newKey(MessageLite unused) throws GeneralSecurityException { return newKey(); }
@Override public KeyData newKeyData(ByteString unused) throws GeneralSecurityException { ChaCha20Poly1305Key key = newKey(); return KeyData.newBuilder() .setTypeUrl(TYPE_URL) .setValue(key.toByteString()) .setKeyMaterialType(KeyData.KeyMaterialType.SYMMETRIC) .build(); }