SolutionEnvelope.vala 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. namespace Riddle {
  2. public class SolutionEnvelope {
  3. public string identifier { get; set; }
  4. public uint8[] signed_data { get; set; }
  5. public uint8[] signed_reply_key { get; set; }
  6. public SolutionEnvelope.from_message(Message message) {
  7. identifier = message.arguments[0];
  8. signed_data = Base64.decode (message.items[0]);
  9. signed_reply_key = Base64.decode (message.items[1]);
  10. }
  11. public bool verify(uint8[] verification_key) {
  12. var d1 = Sodium.Asymmetric.Signing.verify(signed_data, verification_key);
  13. var d2 = Sodium.Asymmetric.Signing.verify(signed_reply_key, verification_key);
  14. return d1 != null && d2 != null;
  15. }
  16. public Message to_message() {
  17. return new Message(MessageType.RIDDLE,
  18. new string[] {
  19. identifier
  20. },
  21. new string[] {
  22. identifier,
  23. Base64.encode(signed_data),
  24. Base64.encode(signed_reply_key)
  25. }
  26. );
  27. }
  28. }
  29. }