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.

100 lines
1.9 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) 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. UserUsername: userRequestTo.Username,
  26. AcceptedAt: time.Now(),
  27. FriendID: base64.StdEncoding.EncodeToString(
  28. encryptWithPublicKey(
  29. []byte(userRequestFrom.ID.String()),
  30. decodedPublicKey,
  31. ),
  32. ),
  33. FriendUsername: base64.StdEncoding.EncodeToString(
  34. encryptWithPublicKey(
  35. []byte(userRequestFrom.Username),
  36. decodedPublicKey,
  37. ),
  38. ),
  39. FriendPublicAsymmetricKey: base64.StdEncoding.EncodeToString(
  40. encPublicKey,
  41. ),
  42. SymmetricKey: base64.StdEncoding.EncodeToString(
  43. encryptWithPublicKey(symKey.Key, decodedPublicKey),
  44. ),
  45. }
  46. return Database.CreateFriendRequest(&friendRequest)
  47. }
  48. func SeedFriends() {
  49. var (
  50. primaryUser Models.User
  51. secondaryUser Models.User
  52. i int
  53. err error
  54. )
  55. primaryUser, err = Database.GetUserByUsername("testUser")
  56. if err != nil {
  57. panic(err)
  58. }
  59. secondaryUser, err = Database.GetUserByUsername("ATestUser2")
  60. if err != nil {
  61. panic(err)
  62. }
  63. err = seedFriend(primaryUser, secondaryUser)
  64. if err != nil {
  65. panic(err)
  66. }
  67. err = seedFriend(secondaryUser, primaryUser)
  68. if err != nil {
  69. panic(err)
  70. }
  71. for i = 0; i <= 3; i++ {
  72. secondaryUser, err = Database.GetUserByUsername(userNames[i])
  73. if err != nil {
  74. panic(err)
  75. }
  76. err = seedFriend(primaryUser, secondaryUser)
  77. if err != nil {
  78. panic(err)
  79. }
  80. err = seedFriend(secondaryUser, primaryUser)
  81. if err != nil {
  82. panic(err)
  83. }
  84. }
  85. }