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