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.

102 lines
2.0 KiB

  1. package Seeder
  2. import (
  3. "encoding/base64"
  4. "git.tovijaeschke.xyz/tovi/Envelope/Backend/Api/Auth"
  5. "git.tovijaeschke.xyz/tovi/Envelope/Backend/Database"
  6. "git.tovijaeschke.xyz/tovi/Envelope/Backend/Models"
  7. )
  8. var userNames = []string{
  9. "assuredcoot",
  10. "quotesteeve",
  11. "blueberriessiemens",
  12. "eliteexaggerate",
  13. "twotrice",
  14. "moderagged",
  15. "duleelderly",
  16. "stringdetailed",
  17. "nodesanymore",
  18. "sacredpolitical",
  19. "pajamasenergy",
  20. }
  21. func createUser(username string) (Models.User, error) {
  22. var (
  23. userData Models.User
  24. key aesKey
  25. publicUserData Models.Friend
  26. password string
  27. usernameCiphertext []byte
  28. err error
  29. )
  30. password, err = Auth.HashPassword("password")
  31. if err != nil {
  32. return Models.User{}, err
  33. }
  34. key, err = generateAesKey()
  35. if err != nil {
  36. return Models.User{}, err
  37. }
  38. usernameCiphertext, err = key.aesEncrypt([]byte(username))
  39. if err != nil {
  40. return Models.User{}, err
  41. }
  42. publicUserData = Models.Friend{
  43. Username: base64.StdEncoding.EncodeToString(usernameCiphertext),
  44. AsymmetricPublicKey: publicKey,
  45. }
  46. err = Database.CreateFriend(&publicUserData)
  47. if err != nil {
  48. return userData, err
  49. }
  50. userData = Models.User{
  51. Username: username,
  52. Password: password,
  53. AsymmetricPrivateKey: encryptedPrivateKey,
  54. AsymmetricPublicKey: publicKey,
  55. FriendID: base64.StdEncoding.EncodeToString(
  56. encryptWithPublicKey(
  57. []byte(publicUserData.ID.String()),
  58. decodedPublicKey,
  59. ),
  60. ),
  61. FriendSymmetricKey: base64.StdEncoding.EncodeToString(
  62. encryptWithPublicKey(key.Key, decodedPublicKey),
  63. ),
  64. }
  65. err = Database.CreateUser(&userData)
  66. return userData, err
  67. }
  68. func SeedUsers() {
  69. var (
  70. i int
  71. err error
  72. )
  73. // Seed users used for conversation seeding
  74. _, err = createUser("testUser")
  75. if err != nil {
  76. panic(err)
  77. }
  78. _, err = createUser("testUser2")
  79. if err != nil {
  80. panic(err)
  81. }
  82. for i = 0; i <= 10; i++ {
  83. _, err = createUser(userNames[i])
  84. if err != nil {
  85. panic(err)
  86. }
  87. }
  88. }