Spaces:
Runtime error
Runtime error
package peers | |
import ( | |
"crypto/rsa" | |
"crypto/x509" | |
"encoding/pem" | |
"github.com/arpinfidel/p2p-llm/config" | |
"github.com/arpinfidel/p2p-llm/db" | |
) | |
type PeerService struct { | |
cfg *config.Config | |
repo db.PeerRepository | |
} | |
func NewPeerService(cfg *config.Config, repo db.PeerRepository) *PeerService { | |
return &PeerService{ | |
cfg: cfg, | |
repo: repo, | |
} | |
} | |
func (s *PeerService) ListTrustedPeers() ([]config.Peer, error) { | |
// Get peers from config | |
peers := s.cfg.TrustedPeers | |
// Get peers from database | |
dbPeers, err := s.repo.ListTrustedPeers() | |
if err != nil { | |
return nil, err | |
} | |
// Convert database peers to config.Peer format | |
for _, dbPeer := range dbPeers { | |
block, _ := pem.Decode([]byte(dbPeer.PublicKey)) | |
if block == nil { | |
continue | |
} | |
pubKey, err := x509.ParsePKIXPublicKey(block.Bytes) | |
if err != nil { | |
continue | |
} | |
peers = append(peers, config.Peer{ | |
URL: dbPeer.URL, | |
PublicKey: pubKey.(*rsa.PublicKey), | |
}) | |
} | |
return peers, nil | |
} | |