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.6KB

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