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.

52 lines
1.3 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
  12. // for
  13. // base64
  14. @NotBlank
  15. private String iv;
  16. @Max(1)
  17. @NotBlank
  18. private int v;
  19. @Max(1_000_000)
  20. @Min(1_000)
  21. @NotBlank
  22. @JsonProperty("iter")
  23. private int iterations;
  24. @Max(256)
  25. @Min(128)
  26. @JsonProperty("ks")
  27. private int keySize;
  28. @Max(256)
  29. @Min(128)
  30. @JsonProperty("ts")
  31. private int tagSize;
  32. @Pattern(regexp = "^[A-Za-z0-9]+$") // alphabetic
  33. @NotBlank
  34. private String mode;
  35. @Pattern(regexp = "^[A-Za-z0-9]+$")
  36. private String adata;
  37. @Pattern(regexp = "^[A-Za-z0-9]+$")
  38. @NotBlank
  39. private String cipher;
  40. @Pattern(regexp = "^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$")
  41. @NotBlank
  42. private String salt;
  43. @JsonProperty("ct")
  44. @Pattern(regexp = "^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$")
  45. @NotBlank
  46. @Size(max = 2000, min = 1)
  47. private String cipherText;
  48. }