Skip to content

Commit 46c43cd

Browse files
committed
Better handle error
1 parent 44c85b9 commit 46c43cd

File tree

1 file changed

+22
-10
lines changed

1 file changed

+22
-10
lines changed

models/gpg_key.go

Lines changed: 22 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -144,26 +144,31 @@ func AddGPGKey(ownerID int64, content string) (*GPGKey, error) {
144144

145145
return key, sess.Commit()
146146
}
147-
func base64EncPubKey(pubkey *packet.PublicKey) string {
147+
func base64EncPubKey(pubkey *packet.PublicKey) (string, error) {
148148
var w bytes.Buffer
149-
if err := pubkey.Serialize(&w); err != nil {
150-
log.Warn("Failed to serialize public key content: %v", pubkey.Fingerprint)
149+
err := pubkey.Serialize(&w)
150+
if err != nil {
151+
return "", err
151152
}
152-
return base64.StdEncoding.EncodeToString(w.Bytes())
153+
return base64.StdEncoding.EncodeToString(w.Bytes()), nil
153154
}
154-
func parseSubGPGKey(ownerID int64, primaryID string, pubkey *packet.PublicKey, expiry time.Time) *GPGKey {
155+
func parseSubGPGKey(ownerID int64, primaryID string, pubkey *packet.PublicKey, expiry time.Time) (*GPGKey, error) {
156+
content, err := base64EncPubKey(pubkey)
157+
if err != nil {
158+
return nil, err
159+
}
155160
return &GPGKey{
156161
OwnerID: ownerID,
157162
KeyID: pubkey.KeyIdString(),
158163
PrimaryKeyID: primaryID,
159-
Content: base64EncPubKey(pubkey),
164+
Content: content,
160165
Created: pubkey.CreationTime,
161166
Expired: expiry,
162167
CanSign: pubkey.CanSign(),
163168
CanEncryptComms: pubkey.PubKeyAlgo.CanEncrypt(),
164169
CanEncryptStorage: pubkey.PubKeyAlgo.CanEncrypt(),
165170
CanCertify: pubkey.PubKeyAlgo.CanSign(),
166-
}
171+
}, nil
167172
}
168173
func parseGPGKey(ownerID int64, e *openpgp.Entity) (*GPGKey, error) {
169174
pubkey := e.PrimaryKey
@@ -186,7 +191,11 @@ func parseGPGKey(ownerID int64, e *openpgp.Entity) (*GPGKey, error) {
186191
//Parse Subkeys
187192
subkeys := make([]*GPGKey, len(e.Subkeys))
188193
for i, k := range e.Subkeys {
189-
subkeys[i] = parseSubGPGKey(ownerID, pubkey.KeyIdString(), k.PublicKey, expiry)
194+
subs, err := parseSubGPGKey(ownerID, pubkey.KeyIdString(), k.PublicKey, expiry)
195+
if err != nil {
196+
return nil, err
197+
}
198+
subkeys[i] = subs
190199
}
191200

192201
//Check emails
@@ -209,12 +218,15 @@ func parseGPGKey(ownerID int64, e *openpgp.Entity) (*GPGKey, error) {
209218
}
210219
n++
211220
}
212-
221+
content, err := base64EncPubKey(pubkey)
222+
if err != nil {
223+
return nil, err
224+
}
213225
return &GPGKey{
214226
OwnerID: ownerID,
215227
KeyID: pubkey.KeyIdString(),
216228
PrimaryKeyID: "",
217-
Content: base64EncPubKey(pubkey),
229+
Content: content,
218230
Created: pubkey.CreationTime,
219231
Expired: expiry,
220232
Emails: emails,

0 commit comments

Comments
 (0)