gitea源码

gpg_key_list.go 840B

123456789101112131415161718192021222324252627282930313233343536373839
  1. // Copyright 2023 The Gitea Authors. All rights reserved.
  2. // SPDX-License-Identifier: MIT
  3. package asymkey
  4. import (
  5. "context"
  6. "code.gitea.io/gitea/models/db"
  7. )
  8. type GPGKeyList []*GPGKey
  9. func (keys GPGKeyList) keyIDs() []string {
  10. ids := make([]string, len(keys))
  11. for i, key := range keys {
  12. ids[i] = key.KeyID
  13. }
  14. return ids
  15. }
  16. func (keys GPGKeyList) LoadSubKeys(ctx context.Context) error {
  17. subKeys := make([]*GPGKey, 0, len(keys))
  18. if err := db.GetEngine(ctx).In("primary_key_id", keys.keyIDs()).Find(&subKeys); err != nil {
  19. return err
  20. }
  21. subKeysMap := make(map[string][]*GPGKey, len(subKeys))
  22. for _, key := range subKeys {
  23. subKeysMap[key.PrimaryKeyID] = append(subKeysMap[key.PrimaryKeyID], key)
  24. }
  25. for _, key := range keys {
  26. if subKeys, ok := subKeysMap[key.KeyID]; ok {
  27. key.SubsKey = subKeys
  28. }
  29. }
  30. return nil
  31. }