MCPcopy Create free account
hub / github.com/Mister-leo/fssh / Sign

Method Sign

internal/agent/secure_agent.go:97–142  ·  view source on GitHub ↗
(pubkey ssh.PublicKey, data []byte)

Source from the content-addressed store, hash-verified

95}
96
97func (a *secureAgent) Sign(pubkey ssh.PublicKey, data []byte) (*ssh.Signature, error) {
98 fp := ssh.FingerprintSHA256(pubkey)
99
100 // 动态加载最新的密钥列表
101 metas, err := a.loadMetas()
102 if err != nil {
103 return nil, err
104 }
105
106 var alias string
107 for _, m := range metas {
108 if m.Fingerprint == fp {
109 alias = m.Alias
110 break
111 }
112 }
113 if alias == "" {
114 return nil, errors.New("key not found")
115 }
116
117 // 使用 AuthProvider 解锁 master key
118 mk, err := a.authProvider.UnlockMasterKey()
119 if err != nil {
120 return nil, fmt.Errorf("认证失败: %w", err)
121 }
122
123 rec, err := store.LoadDecryptedRecord(alias, mk)
124 if err != nil {
125 return nil, err
126 }
127 priv, err := x509.ParsePKCS8PrivateKey(rec.PKCS8DER)
128 if err != nil {
129 return nil, err
130 }
131 signer, err := ssh.NewSignerFromKey(priv)
132 if err != nil {
133 return nil, err
134 }
135
136 log.Debug("SSH 签名", map[string]interface{}{
137 "fingerprint": fp,
138 "key_type": signer.PublicKey().Type(),
139 })
140
141 return signer.Sign(nil, data)
142}
143
144// Support RSA-SHA2 algorithms when requested by the client.
145func (a *secureAgent) SignWithFlags(pubkey ssh.PublicKey, data []byte, flags xagent.SignatureFlags) (*ssh.Signature, error) {

Callers 1

SignWithFlagsMethod · 0.80

Calls 4

loadMetasMethod · 0.95
LoadDecryptedRecordFunction · 0.92
DebugFunction · 0.92
UnlockMasterKeyMethod · 0.65

Tested by

no test coverage detected