@@ -11,25 +11,31 @@ import (
1111 "github.com/pkg/errors"
1212)
1313
14- type kpUser struct {}
14+ type keyspub struct {}
1515
1616// KeysPub uses keys.pub user cache instead of the service directly.
17- var KeysPub = & kpUser {}
17+ var KeysPub = & keyspub {}
1818
19- func (s * kpUser ) Request (ctx context.Context , client http.Client , usr * user.User ) (user.Status , []byte , error ) {
19+ func (s * keyspub ) Request (ctx context.Context , client http.Client , usr * user.User ) (user.Status , []byte , error ) {
2020 url := fmt .Sprintf ("https://keys.pub/user/%s@%s" , usr .Name , usr .Service )
2121 return Request (ctx , client , url , nil )
2222}
2323
24- func (s * kpUser ) Verify (ctx context.Context , b []byte , usr * user.User ) (user.Status , string , error ) {
25- msg , err := s .checkContent (usr , b )
24+ func (s * keyspub ) Verify (ctx context.Context , b []byte , usr * user.User ) (user.Status , * Verified , error ) {
25+ userStatus , err := s .checkContent (usr , b )
2626 if err != nil {
27- return user .StatusContentInvalid , "" , err
27+ return user .StatusContentInvalid , nil , err
2828 }
29- return user .FindVerify (usr , msg , false )
29+ status , statement , err := user .FindVerify (usr , []byte (userStatus .Statement ), false )
30+ if err != nil {
31+ return status , nil , err
32+ }
33+
34+ verified := & Verified {Statement : statement , Timestamp : userStatus .VerifiedAt , Proxied : true }
35+ return status , verified , nil
3036}
3137
32- func (s * kpUser ) checkContent (usr * user.User , b []byte ) ([] byte , error ) {
38+ func (s * keyspub ) checkContent (usr * user.User , b []byte ) (* userStatus , error ) {
3339 var status struct {
3440 User userStatus `json:"user"`
3541 }
@@ -61,7 +67,7 @@ func (s *kpUser) checkContent(usr *user.User, b []byte) ([]byte, error) {
6167 return nil , errors .Errorf ("invalid user url" )
6268 }
6369
64- return [] byte ( us . Statement ) , nil
70+ return & us , nil
6571}
6672
6773type userStatus struct {
0 commit comments