From f1ad7e64e3d6f0959b605de2fe1b21148d20634f Mon Sep 17 00:00:00 2001 From: kaichaosun Date: Thu, 27 Nov 2025 15:44:14 +0800 Subject: [PATCH] chore: log the encrypt key --- examples/pingpong.nim | 17 +++++++++++------ src/chat_sdk/client.nim | 4 ++-- src/chat_sdk/inbox.nim | 2 +- src/naxolotl/naxolotl.nim | 4 ++++ 4 files changed, 18 insertions(+), 9 deletions(-) diff --git a/examples/pingpong.nim b/examples/pingpong.nim index 464b1df..3277d4b 100644 --- a/examples/pingpong.nim +++ b/examples/pingpong.nim @@ -41,8 +41,8 @@ proc main() {.async.} = # Wire Callbacks saro.onNewMessage(proc(convo: Conversation, msg: ReceivedMessage) {.async.} = echo " Saro <------ :: " & getContent(msg.content) - await sleepAsync(5000) - discard await convo.sendMessage(saro.ds, initTextFrame("Ping").toContentFrame()) + # await sleepAsync(5000) + # discard await convo.sendMessage(saro.ds, initTextFrame("Ping").toContentFrame()) ) @@ -55,23 +55,28 @@ proc main() {.async.} = raya.onNewMessage(proc(convo: Conversation,msg: ReceivedMessage) {.async.} = echo fmt" ------> Raya :: from:{msg.sender} " & getContent(msg.content) - await sleepAsync(500) - discard await convo.sendMessage(raya.ds, initTextFrame("Pong" & $ri).toContentFrame()) + # await sleepAsync(500) + # discard await convo.sendMessage(raya.ds, initTextFrame("Pong" & $ri).toContentFrame()) # await sleepAsync(800) # discard await convo.sendMessage(raya.ds, initTextFrame("Pong" & $ri).toContentFrame()) # await sleepAsync(500) # discard await convo.sendMessage(raya.ds, initTextFrame("Pong" & $ri).toContentFrame()) - inc ri + # inc ri ) raya.onNewConversation(proc(convo: Conversation) {.async.} = echo " ------> Raya :: New Conversation: " & convo.id() - discard await convo.sendMessage(raya.ds, initTextFrame("Hello").toContentFrame()) + # discard await convo.sendMessage(raya.ds, initTextFrame("Hello from raya").toContentFrame()) ) raya.onDeliveryAck(proc(convo: Conversation, msgId: string) {.async.} = echo " raya -- Read Receipt for " & msgId ) + saro.onNewConversation(proc(convo: Conversation) {.async.} = + echo " Saro <------ :: New Conversation: " & convo.id() + discard await convo.sendMessage(saro.ds, initTextFrame("Hello from saro").toContentFrame()) + ) + await saro.start() await raya.start() diff --git a/src/chat_sdk/client.nim b/src/chat_sdk/client.nim index bfdd6bd..4f551f8 100644 --- a/src/chat_sdk/client.nim +++ b/src/chat_sdk/client.nim @@ -51,8 +51,8 @@ type KeyEntry* = object type Client* = ref object ident: Identity ds*: WakuClient - keyStore: Table[string, KeyEntry] # Keyed by HexEncoded Public Key - conversations: Table[string, Conversation] # Keyed by conversation ID + keyStore*: Table[string, KeyEntry] # Keyed by HexEncoded Public Key + conversations*: Table[string, Conversation] # Keyed by conversation ID inboundQueue: QueueRef isRunning: bool diff --git a/src/chat_sdk/inbox.nim b/src/chat_sdk/inbox.nim index 01d6846..cabe73d 100644 --- a/src/chat_sdk/inbox.nim +++ b/src/chat_sdk/inbox.nim @@ -90,7 +90,7 @@ proc createPrivateV1FromInvite*[T: ConversationStore](client: T, client.addConversation(convo) # TODO send a control frame instead - discard convo.sendMessage(client.ds, initTextFrame("Hello").toContentFrame()) + # discard convo.sendMessage(client.ds, initTextFrame("Hello").toContentFrame()) proc handleFrame*[T: ConversationStore](convo: Inbox, client: T, bytes: seq[ diff --git a/src/naxolotl/naxolotl.nim b/src/naxolotl/naxolotl.nim index ba38ed4..2b94543 100644 --- a/src/naxolotl/naxolotl.nim +++ b/src/naxolotl/naxolotl.nim @@ -121,7 +121,11 @@ proc skipMessageKeys(self: var Doubleratchet, until: MsgCount): Result[(), strin proc encrypt(self: var Doubleratchet, plaintext: var seq[byte], associatedData: openArray[byte]): (DrHeader, CipherText) = + info "encrypt message ", plaintext = hex(plaintext), chainKeySend = hex(self.chainKeySend) + let (msgKey, chainKey) = self.kdfChain(self.chainKeySend) + info "derived msgKey ", msgKey = hex(msgKey) + info "updating chainKeySend ", chainKey = hex(chainKey) # self.chainKeySend = chainKey let header = DrHeader( dhPublic: self.dhSelf.public, #TODO Serialize