code.gitea.io/gitea@v1.19.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 user_model "code.gitea.io/gitea/models/user" 8 "code.gitea.io/gitea/modules/util" 9 ) 10 11 const rsaBits = 2048 12 13 // GetKeyPair function returns a user's private and public keys 14 func GetKeyPair(user *user_model.User) (pub, priv string, err error) { 15 var settings map[string]*user_model.Setting 16 settings, err = user_model.GetSettings(user.ID, []string{user_model.UserActivityPubPrivPem, user_model.UserActivityPubPubPem}) 17 if err != nil { 18 return 19 } else if len(settings) == 0 { 20 if priv, pub, err = util.GenerateKeyPair(rsaBits); err != nil { 21 return 22 } 23 if err = user_model.SetUserSetting(user.ID, user_model.UserActivityPubPrivPem, priv); err != nil { 24 return 25 } 26 if err = user_model.SetUserSetting(user.ID, user_model.UserActivityPubPubPem, pub); err != nil { 27 return 28 } 29 return 30 } else { 31 priv = settings[user_model.UserActivityPubPrivPem].SettingValue 32 pub = settings[user_model.UserActivityPubPubPem].SettingValue 33 return 34 } 35 } 36 37 // GetPublicKey function returns a user's public key 38 func GetPublicKey(user *user_model.User) (pub string, err error) { 39 pub, _, err = GetKeyPair(user) 40 return pub, err 41 } 42 43 // GetPrivateKey function returns a user's private key 44 func GetPrivateKey(user *user_model.User) (priv string, err error) { 45 _, priv, err = GetKeyPair(user) 46 return priv, err 47 }