Skip to content
Snippets Groups Projects
Commit ab865948 authored by David Stainton's avatar David Stainton
Browse files

WIP

parent 436fc20f
No related branches found
No related tags found
6 merge requests!510Release,!419rewrote the health tracker to both consider if there are waiting rounds and...,!371[Channel RSAtoPrivate] Implement Reverse Asymmetric in Client/Broadcast,!354Channels impl,!340Project/channels,!338Xx 4055/channel identity tracking
...@@ -186,6 +186,8 @@ func newclientIDTracker(comms channelLeaseComms, host *connect.Host, username st ...@@ -186,6 +186,8 @@ func newclientIDTracker(comms channelLeaseComms, host *connect.Host, username st
} }
return &clientIDTracker{ return &clientIDTracker{
kv: kv,
rngSource: rngSource,
registrationDisk: &reg, registrationDisk: &reg,
receptionIdentity: &receptionIdentity, receptionIdentity: &receptionIdentity,
username: username, username: username,
...@@ -271,6 +273,7 @@ func (c *clientIDTracker) requestChannelLease() (int64, []byte, error) { ...@@ -271,6 +273,7 @@ func (c *clientIDTracker) requestChannelLease() (int64, []byte, error) {
if err != nil { if err != nil {
return 0, nil, err return 0, nil, err
} }
rng := c.rngSource.GetStream() rng := c.rngSource.GetStream()
userPubKey := c.registrationDisk.GetPublicKey() userPubKey := c.registrationDisk.GetPublicKey()
fSig, err := channel.SignChannelIdentityRequest(userPubKey, time.Unix(0, ts), privKey, rng) fSig, err := channel.SignChannelIdentityRequest(userPubKey, time.Unix(0, ts), privKey, rng)
......
...@@ -22,6 +22,8 @@ import ( ...@@ -22,6 +22,8 @@ import (
func TestChannelIDTracking(t *testing.T) { func TestChannelIDTracking(t *testing.T) {
rngGen := fastRNG.NewStreamGenerator(1000, 10, csprng.NewSystemRNG) rngGen := fastRNG.NewStreamGenerator(1000, 10, csprng.NewSystemRNG)
t.Logf("rngGen: %v", rngGen)
// AddHost // AddHost
stream := rngGen.GetStream() stream := rngGen.GetStream()
privKey, err := rsa.GenerateKey(stream, 1024) privKey, err := rsa.GenerateKey(stream, 1024)
...@@ -61,38 +63,28 @@ func TestChannelIDTracking(t *testing.T) { ...@@ -61,38 +63,28 @@ func TestChannelIDTracking(t *testing.T) {
kv := versioned.NewKV(ekv.MakeMemstore()) kv := versioned.NewKV(ekv.MakeMemstore())
comms := new(mockComms) comms := new(mockComms)
username := "Alice" username := "Alice"
// doesn't work:
//username, err := m.store.GetUsername()
//require.NoError(t, err)
udPubKeyBytes := m.user.GetCmix().GetInstance(). udPubKeyBytes := m.user.GetCmix().GetInstance().
GetPartialNdf().Get().UDB.DhPubKey GetPartialNdf().Get().UDB.DhPubKey
myTestClientIDTracker := newclientIDTracker(comms, host, username, myTestClientIDTracker := newclientIDTracker(
kv, m.user.GetReceptionIdentity(), ed25519.PublicKey(udPubKeyBytes), rngGen) comms, host, username,
kv, m.user.GetReceptionIdentity(),
//stopper, err := myTestClientIDTracker.Start() ed25519.PublicKey(udPubKeyBytes), rngGen)
//require.NoError(t, err)
err = myTestClientIDTracker.register() rsaPrivKey, err := myTestClientIDTracker.receptionIdentity.GetRSAPrivateKey()
require.NoError(t, err) require.NoError(t, err)
require.Equal(t, myTestClientIDTracker.GetUsername(), username) comms.SetUserRSAPubKey(rsaPrivKey.GetPublic())
comms.SetUserEd25519PubKey(myTestClientIDTracker.registrationDisk.GetPublicKey())
signature, lease := myTestClientIDTracker.GetChannelValidationSignature() //sig, _ := myTestClientIDTracker.registrationDisk.GetLeaseSignature()
t.Logf("signature %x lease %v", signature, lease) // XXX bad signature
sig := make([]byte, 64)
stream.Read(sig)
chanPubKey := myTestClientIDTracker.GetChannelPubkey() comms.SetLeaseSignature(sig)
t.Logf("channel public key: %x", chanPubKey)
message := []byte("hello world") err = myTestClientIDTracker.register()
signature2, err := myTestClientIDTracker.SignChannelMessage(message)
require.NoError(t, err) require.NoError(t, err)
t.Logf("signature2: %x", signature2)
//_ = myTestClientIDTracker.ValidateChannelMessage(username, lease, pubKey, authorIDSignature)
//err = stopper.Close()
//require.NoError(t, err)
} }
package ud package ud
import ( import (
pb "gitlab.com/elixxir/comms/mixmessages" "crypto/ed25519"
"fmt"
"time"
"gitlab.com/xx_network/comms/connect" "gitlab.com/xx_network/comms/connect"
"gitlab.com/xx_network/comms/messages" "gitlab.com/xx_network/comms/messages"
"gitlab.com/xx_network/crypto/signature/rsa"
"gitlab.com/xx_network/primitives/id" "gitlab.com/xx_network/primitives/id"
pb "gitlab.com/elixxir/comms/mixmessages"
"gitlab.com/elixxir/crypto/channel"
) )
type mockComms struct { type mockComms struct {
udHost *connect.Host udHost *connect.Host
userRsaPub *rsa.PublicKey
userEd25519PubKey []byte
udLeaseEd25519Signature []byte
} }
func (m mockComms) SendRegisterUser(host *connect.Host, message *pb.UDBUserRegistration) (*messages.Ack, error) { func (m mockComms) SendRegisterUser(host *connect.Host, message *pb.UDBUserRegistration) (*messages.Ack, error) {
...@@ -45,6 +55,39 @@ func (m mockComms) GetHost(hostId *id.ID) (*connect.Host, bool) { ...@@ -45,6 +55,39 @@ func (m mockComms) GetHost(hostId *id.ID) (*connect.Host, bool) {
return m.udHost, true return m.udHost, true
} }
func (m *mockComms) SetUserRSAPubKey(userRsaPub *rsa.PublicKey) {
m.userRsaPub = userRsaPub
}
func (m *mockComms) SetUserEd25519PubKey(key ed25519.PublicKey) {
m.userEd25519PubKey = []byte(key)
}
func (m *mockComms) SetLeaseSignature(signature []byte) {
m.udLeaseEd25519Signature = signature
}
func (m mockComms) SendChannelLeaseRequest(host *connect.Host, message *pb.ChannelLeaseRequest) (*pb.ChannelLeaseResponse, error) { func (m mockComms) SendChannelLeaseRequest(host *connect.Host, message *pb.ChannelLeaseRequest) (*pb.ChannelLeaseResponse, error) {
return nil, nil
fmt.Printf("message sig: %x\n", message.UserPubKeyRSASignature)
fmt.Printf("rsa pub key: %v\n", m.userRsaPub)
err := channel.VerifyChannelIdentityRequest(message.UserPubKeyRSASignature,
message.UserEd25519PubKey,
time.Now(),
time.Unix(0, message.Timestamp),
m.userRsaPub)
if err != nil {
panic(err)
}
d, _ := time.ParseDuration("4h30m")
response := &pb.ChannelLeaseResponse{
Lease: time.Now().Add(d).UnixNano(),
UserEd25519PubKey: m.userEd25519PubKey,
UDLeaseEd25519Signature: m.udLeaseEd25519Signature,
}
return response, nil
} }
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment