Rework signal protocol to minimize number of exchanged initial RP 512KB keys

This commit is contained in:
riccardom
2026-07-16 17:25:34 +02:00
parent e3e8dd8cb0
commit 945f8809ee
10 changed files with 378 additions and 40 deletions
+15 -6
View File
@@ -51,10 +51,17 @@ type CredentialPayload struct {
WgListenPort int
Credential *Credential
RosenpassPubKey []byte
RosenpassAddr string
RelaySrvAddress string
RelaySrvIP netip.Addr
SessionID []byte
// RosenpassPubKeyHash is the SHA256 of the sender's own RosenpassPubKey (empty
// when Rosenpass is disabled). RosenpassPubKey may be omitted when the peer has
// already acknowledged this hash. See RosenpassConfig in the proto.
RosenpassPubKeyHash []byte
// RosenpassPubKeyAck is the SHA256 of the remote peer's key the sender holds
// cached; empty means "send me the full key".
RosenpassPubKeyAck []byte
RosenpassAddr string
RelaySrvAddress string
RelaySrvIP netip.Addr
SessionID []byte
}
// UnMarshalCredential parses the credentials from the message and returns a Credential instance
@@ -78,8 +85,10 @@ func MarshalCredential(myKey wgtypes.Key, remoteKey string, p CredentialPayload)
WgListenPort: uint32(p.WgListenPort),
NetBirdVersion: version.NetbirdVersion(),
RosenpassConfig: &proto.RosenpassConfig{
RosenpassPubKey: p.RosenpassPubKey,
RosenpassServerAddr: p.RosenpassAddr,
RosenpassPubKey: p.RosenpassPubKey,
RosenpassServerAddr: p.RosenpassAddr,
RosenpassPubKeyHash: p.RosenpassPubKeyHash,
AcknowledgedRosenpassPubKeyHash: p.RosenpassPubKeyAck,
},
SessionId: p.SessionID,
}