@@ -16,8 +16,8 @@ const maxSkip = 10
1616
1717
1818type Doubleratchet * = object
19- dhSelf: PrivateKey
20- dhRemote: PublicKey
19+ dhSelf* : PrivateKey
20+ dhRemote* : PublicKey
2121
2222 rootKey: RootKey
2323 chainKeySend: ChainKey
@@ -73,15 +73,18 @@ func kdfChain(self: Doubleratchet, chainKey: ChainKey): (MessageKey, ChainKey) =
7373
7474 return (msgKey, chainKey)
7575
76- func dhRatchetSend (self: var Doubleratchet ) =
76+ proc dhRatchetSend (self: var Doubleratchet ) =
7777 # Perform DH Ratchet step when receiving a new peer key.
78+ info " dhRatchetSend DH Self: " , dhSelf = self.dhSelf
7879 let dhOutput : DhDerivedKey = dhExchange (self.dhSelf, self.dhRemote).get ()
7980 let (newRootKey, newChainKeySend) = kdfRoot (self, self.rootKey, dhOutput)
8081 self.rootKey = newRootKey
8182 self.chainKeySend = newChainKeySend
8283 self.msgCountSend = 0
8384
8485proc dhRatchetRecv (self: var Doubleratchet , remotePublickey: PublicKey ) =
86+ info " dh ratchet happens"
87+ info " dhRatchetRecv DH Remote: " , dhRemote = remotePublickey
8588 self.prevChainLen = self.msgCountSend
8689 self.msgCountSend = 0
8790 self.msgCountRecv = 0
@@ -96,7 +99,7 @@ proc dhRatchetRecv(self: var Doubleratchet, remotePublickey: PublicKey ) =
9699 self.dhSelf = generateKeypair ().get ()[0 ]
97100
98101 let dhOutputPost = self.dhSelf.dhExchange (self.dhRemote).get ()
99- (self.rootKey, self.chainKeyRecv ) = kdfRoot (self, self.rootKey, dhOutputPost)
102+ (self.rootKey, self.chainKeySend ) = kdfRoot (self, self.rootKey, dhOutputPost)
100103
101104
102105proc skipMessageKeys (self: var Doubleratchet , until: MsgCount ): Result [(), string ] =
@@ -138,9 +141,15 @@ proc encrypt(self: var Doubleratchet, plaintext: var seq[byte], associatedData:
138141
139142
140143proc decrypt * (self: var Doubleratchet , header: DrHeader , ciphertext: CipherText , associatedData: openArray [byte ] ) : Result [seq [byte ], NaxolotlError ] =
144+ info " double ratchet decrypt" , header = $ header
145+ info " dhRemote: " , dhRemote = self.dhRemote
146+ info " dhSelf: " , dhSelf = self.dhSelf
147+ info " dhSelf public: " , dhSelf = self.dhSelf.public
141148
142149 let peerPublic = header.dhPublic
143150
151+ info " peerPublic: " , peerPublic = peerPublic
152+
144153 var msgKey : MessageKey
145154
146155 # Check Skipped Keys
@@ -176,8 +185,12 @@ proc encrypt*(self: var Doubleratchet, plaintext: var seq[byte]) : (DrHeader, Ci
176185 encrypt (self, plaintext,@ [])
177186
178187
179- func initDoubleratchet * (sharedSecret: array [32 , byte ], dhSelf: PrivateKey , dhRemote: PublicKey , isSending: bool = true ): Doubleratchet =
188+ proc initDoubleratchet * (sharedSecret: array [32 , byte ], dhSelf: PrivateKey , dhRemote: PublicKey , isSending: bool = true ): Doubleratchet =
180189
190+ info " Initializing Double Ratchet"
191+ info " DH Self: " , dhSelf = dhSelf
192+ info " DH Self public: " , dhSelf = dhSelf.public
193+ info " DH Remote: " , dhRemote = dhRemote
181194 result = Doubleratchet (
182195 dhSelf: dhSelf,
183196 dhRemote: dhRemote,
0 commit comments