provide client version in secureservice

This commit is contained in:
Sergey Cherepanov 2023-06-13 15:39:22 +02:00
parent 38090ee68f
commit be58956bec
No known key found for this signature in database
GPG Key ID: 87F8EDE8FBDF637C
3 changed files with 23 additions and 16 deletions

View File

@ -8,9 +8,13 @@ import (
"go.uber.org/zap"
)
func newNoVerifyChecker(protoVersion uint32) handshake.CredentialChecker {
func newNoVerifyChecker(protoVersion uint32, clientVersion string) handshake.CredentialChecker {
return &noVerifyChecker{
cred: &handshakeproto.Credentials{Type: handshakeproto.CredentialsType_SkipVerify, Version: protoVersion},
cred: &handshakeproto.Credentials{
Type: handshakeproto.CredentialsType_SkipVerify,
Version: protoVersion,
ClientVersion: clientVersion,
},
}
}
@ -33,15 +37,17 @@ func (n noVerifyChecker) CheckCredential(remotePeerId string, cred *handshakepro
}, nil
}
func newPeerSignVerifier(protoVersion uint32, account *accountdata.AccountKeys) handshake.CredentialChecker {
func newPeerSignVerifier(protoVersion uint32, clientVersion string, account *accountdata.AccountKeys) handshake.CredentialChecker {
return &peerSignVerifier{
protoVersion: protoVersion,
clientVersion: clientVersion,
account: account,
}
}
type peerSignVerifier struct {
protoVersion uint32
clientVersion string
account *accountdata.AccountKeys
}
@ -61,6 +67,7 @@ func (p *peerSignVerifier) MakeCredentials(remotePeerId string) *handshakeproto.
Type: handshakeproto.CredentialsType_SignedPeerIds,
Payload: payload,
Version: p.protoVersion,
ClientVersion: p.clientVersion,
}
}

View File

@ -15,8 +15,8 @@ func TestPeerSignVerifier_CheckCredential(t *testing.T) {
identity1, _ := a1.SignKey.GetPublic().Marshall()
identity2, _ := a2.SignKey.GetPublic().Marshall()
cc1 := newPeerSignVerifier(0, a1)
cc2 := newPeerSignVerifier(0, a2)
cc1 := newPeerSignVerifier(0, "test:v1", a1)
cc2 := newPeerSignVerifier(0, "test:v1", a2)
c1 := a2.PeerId
c2 := a1.PeerId
@ -40,8 +40,8 @@ func TestIncompatibleVersion(t *testing.T) {
a2 := newTestAccData(t)
_, _ = a1.SignKey.GetPublic().Marshall()
cc1 := newPeerSignVerifier(0, a1)
cc2 := newPeerSignVerifier(1, a2)
cc1 := newPeerSignVerifier(0, "test:v1", a1)
cc2 := newPeerSignVerifier(1, "test:v1", a2)
c1 := a2.PeerId
c2 := a1.PeerId

View File

@ -64,8 +64,8 @@ func (s *secureService) Init(a *app.App) (err error) {
if s.key, err = crypto.UnmarshalEd25519PrivateKey(peerKey); err != nil {
return
}
s.noVerifyChecker = newNoVerifyChecker(s.protoVersion)
s.peerSignVerifier = newPeerSignVerifier(s.protoVersion, account.Account())
s.noVerifyChecker = newNoVerifyChecker(s.protoVersion, a.VersionName())
s.peerSignVerifier = newPeerSignVerifier(s.protoVersion, a.VersionName(), account.Account())
s.nodeconf = a.MustComponent(nodeconf.CName).(nodeconf.Service)