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.

user_settings.go 1.4KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. // Copyright 2022 The Gitea Authors. All rights reserved.
  2. // SPDX-License-Identifier: MIT
  3. package activitypub
  4. import (
  5. user_model "code.gitea.io/gitea/models/user"
  6. "code.gitea.io/gitea/modules/util"
  7. )
  8. const rsaBits = 2048
  9. // GetKeyPair function returns a user's private and public keys
  10. func GetKeyPair(user *user_model.User) (pub, priv string, err error) {
  11. var settings map[string]*user_model.Setting
  12. settings, err = user_model.GetSettings(user.ID, []string{user_model.UserActivityPubPrivPem, user_model.UserActivityPubPubPem})
  13. if err != nil {
  14. return
  15. } else if len(settings) == 0 {
  16. if priv, pub, err = util.GenerateKeyPair(rsaBits); err != nil {
  17. return
  18. }
  19. if err = user_model.SetUserSetting(user.ID, user_model.UserActivityPubPrivPem, priv); err != nil {
  20. return
  21. }
  22. if err = user_model.SetUserSetting(user.ID, user_model.UserActivityPubPubPem, pub); err != nil {
  23. return
  24. }
  25. return
  26. } else {
  27. priv = settings[user_model.UserActivityPubPrivPem].SettingValue
  28. pub = settings[user_model.UserActivityPubPubPem].SettingValue
  29. return
  30. }
  31. }
  32. // GetPublicKey function returns a user's public key
  33. func GetPublicKey(user *user_model.User) (pub string, err error) {
  34. pub, _, err = GetKeyPair(user)
  35. return pub, err
  36. }
  37. // GetPrivateKey function returns a user's private key
  38. func GetPrivateKey(user *user_model.User) (priv string, err error) {
  39. _, priv, err = GetKeyPair(user)
  40. return priv, err
  41. }