home / connvers / src / main / java / avividi / connvers / crypto / EncryptedMessageEncoder.java

EncryptedMessageEncoder.java



package avividi.connvers.crypto;

import avividi.connvers.protocol.BasicMessageEncoder;
import avividi.connvers.protocol.Message;
import avividi.connvers.protocol.MessageEncoder;
import avividi.connvers.protocol.ValidationException;

public class EncryptedMessageEncoder implements MessageEncoder {

  private final Encrypter encrypter;
  private final BasicMessageEncoder encoder = new BasicMessageEncoder();

  public EncryptedMessageEncoder(String key) {
    encrypter = new Encrypter();
    encrypter.setKey(key);
  }

  public EncryptedMessageEncoder() {
    encrypter = new Encrypter();
    encrypter.generateKey();
  }

  @Override
  public String encode(Message message) {
    return "connvenc1-" + encrypter.encrypt(encoder.encode(message));
  }

  @Override
  public Message decode(String raw) throws ValidationException {
    String portion = raw.substring("connvenc1-".length());
    return encoder.decode(encrypter.decrypt(portion));
  }
}