diff --git a/net/secureservice/credential.go b/net/secureservice/credential.go index b4c9bcc8..5a5ac7d9 100644 --- a/net/secureservice/credential.go +++ b/net/secureservice/credential.go @@ -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,16 +37,18 @@ 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, - account: account, + protoVersion: protoVersion, + clientVersion: clientVersion, + account: account, } } type peerSignVerifier struct { - protoVersion uint32 - account *accountdata.AccountKeys + protoVersion uint32 + clientVersion string + account *accountdata.AccountKeys } func (p *peerSignVerifier) MakeCredentials(remotePeerId string) *handshakeproto.Credentials { @@ -58,9 +64,10 @@ func (p *peerSignVerifier) MakeCredentials(remotePeerId string) *handshakeproto. } payload, _ := msg.Marshal() return &handshakeproto.Credentials{ - Type: handshakeproto.CredentialsType_SignedPeerIds, - Payload: payload, - Version: p.protoVersion, + Type: handshakeproto.CredentialsType_SignedPeerIds, + Payload: payload, + Version: p.protoVersion, + ClientVersion: p.clientVersion, } } diff --git a/net/secureservice/credential_test.go b/net/secureservice/credential_test.go index 067cb86d..78222c87 100644 --- a/net/secureservice/credential_test.go +++ b/net/secureservice/credential_test.go @@ -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 diff --git a/net/secureservice/secureservice.go b/net/secureservice/secureservice.go index 842b04a7..f5a1aa78 100644 --- a/net/secureservice/secureservice.go +++ b/net/secureservice/secureservice.go @@ -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)