A self hosted chat application with end-to-end encrypted messaging.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

50 lines
1.2 KiB

  1. package org.ros.chatto.dto;
  2. import javax.validation.constraints.Max;
  3. import javax.validation.constraints.Min;
  4. import javax.validation.constraints.NotBlank;
  5. import javax.validation.constraints.Pattern;
  6. import javax.validation.constraints.Size;
  7. import com.fasterxml.jackson.annotation.JsonProperty;
  8. import lombok.Data;
  9. @Data
  10. public class MessageCipherDTO {
  11. @Pattern(regexp = "^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$") // regex for base64
  12. @NotBlank
  13. private String iv;
  14. @Max(1)
  15. @NotBlank
  16. private int v;
  17. @Max(1_000_000)
  18. @Min(1_000)
  19. @NotBlank
  20. @JsonProperty("iter")
  21. private int iterations;
  22. @Max(256)
  23. @Min(128)
  24. @JsonProperty("ks")
  25. private int keySize;
  26. @Max(256)
  27. @Min(128)
  28. @JsonProperty("ts")
  29. private int tagSize;
  30. @Pattern(regexp = "^[A-Za-z0-9]+$") // alphabetic
  31. @NotBlank
  32. private String mode;
  33. @Pattern(regexp = "^[A-Za-z0-9]+$")
  34. private String adata;
  35. @Pattern(regexp = "^[A-Za-z0-9]+$")
  36. @NotBlank
  37. private String cipher;
  38. @Pattern(regexp = "^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$")
  39. @NotBlank
  40. private String salt;
  41. @JsonProperty("ct")
  42. @Pattern(regexp = "^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$")
  43. @NotBlank
  44. @Size(max = 2000, min = 1)
  45. private String cipherText;
  46. }