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  }