Encrypted messaging app
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.

113 lines
2.2 KiB

  1. package Seeder
  2. import (
  3. "encoding/base64"
  4. "time"
  5. "git.tovijaeschke.xyz/tovi/Envelope/Backend/Database"
  6. "git.tovijaeschke.xyz/tovi/Envelope/Backend/Models"
  7. )
  8. func seedFriend(userRequestTo, userRequestFrom Models.User, accepted bool) error {
  9. var (
  10. friendRequest Models.FriendRequest
  11. symKey aesKey
  12. encPublicKey []byte
  13. err error
  14. )
  15. symKey, err = generateAesKey()
  16. if err != nil {
  17. return err
  18. }
  19. encPublicKey, err = symKey.aesEncrypt([]byte(publicKey))
  20. if err != nil {
  21. return err
  22. }
  23. friendRequest = Models.FriendRequest{
  24. UserID: userRequestTo.ID,
  25. FriendID: base64.StdEncoding.EncodeToString(
  26. encryptWithPublicKey(
  27. []byte(userRequestFrom.ID.String()),
  28. decodedPublicKey,
  29. ),
  30. ),
  31. FriendUsername: base64.StdEncoding.EncodeToString(
  32. encryptWithPublicKey(
  33. []byte(userRequestFrom.Username),
  34. decodedPublicKey,
  35. ),
  36. ),
  37. FriendPublicAsymmetricKey: base64.StdEncoding.EncodeToString(
  38. encPublicKey,
  39. ),
  40. SymmetricKey: base64.StdEncoding.EncodeToString(
  41. encryptWithPublicKey(symKey.Key, decodedPublicKey),
  42. ),
  43. }
  44. if accepted {
  45. friendRequest.AcceptedAt.Time = time.Now()
  46. friendRequest.AcceptedAt.Valid = true
  47. }
  48. return Database.CreateFriendRequest(&friendRequest)
  49. }
  50. // SeedFriends creates dummy friends for testing/development
  51. func SeedFriends() {
  52. var (
  53. primaryUser Models.User
  54. secondaryUser Models.User
  55. accepted bool
  56. i int
  57. err error
  58. )
  59. primaryUser, err = Database.GetUserByUsername("testUser")
  60. if err != nil {
  61. panic(err)
  62. }
  63. secondaryUser, err = Database.GetUserByUsername("ATestUser2")
  64. if err != nil {
  65. panic(err)
  66. }
  67. err = seedFriend(primaryUser, secondaryUser, true)
  68. if err != nil {
  69. panic(err)
  70. }
  71. err = seedFriend(secondaryUser, primaryUser, true)
  72. if err != nil {
  73. panic(err)
  74. }
  75. accepted = false
  76. for i = 0; i <= 5; i++ {
  77. secondaryUser, err = Database.GetUserByUsername(userNames[i])
  78. if err != nil {
  79. panic(err)
  80. }
  81. if i > 3 {
  82. accepted = true
  83. }
  84. err = seedFriend(primaryUser, secondaryUser, accepted)
  85. if err != nil {
  86. panic(err)
  87. }
  88. if accepted {
  89. err = seedFriend(secondaryUser, primaryUser, accepted)
  90. if err != nil {
  91. panic(err)
  92. }
  93. }
  94. }
  95. }