mirror of
https://github.com/waku-org/nwaku.git
synced 2025-01-15 17:35:45 +00:00
refactor(utils): split message digest calculation form index calculation
This commit is contained in:
parent
ff619de037
commit
e7ebd190a3
@ -3,7 +3,7 @@
|
|||||||
|
|
||||||
import
|
import
|
||||||
stew/byteutils,
|
stew/byteutils,
|
||||||
nimcrypto
|
nimcrypto/sha2
|
||||||
import
|
import
|
||||||
../protocol/waku_message,
|
../protocol/waku_message,
|
||||||
./time
|
./time
|
||||||
@ -11,33 +11,33 @@ import
|
|||||||
|
|
||||||
type Index* = object
|
type Index* = object
|
||||||
## This type contains the description of an Index used in the pagination of WakuMessages
|
## This type contains the description of an Index used in the pagination of WakuMessages
|
||||||
digest*: MDigest[256] # calculated over payload and content topic
|
|
||||||
receiverTime*: Timestamp
|
|
||||||
senderTime*: Timestamp # the time at which the message is generated
|
|
||||||
pubsubTopic*: string
|
pubsubTopic*: string
|
||||||
|
senderTime*: Timestamp # the time at which the message is generated
|
||||||
|
receiverTime*: Timestamp
|
||||||
|
digest*: MDigest[256] # calculated over payload and content topic
|
||||||
|
|
||||||
|
proc computeDigest*(msg: WakuMessage): MDigest[256] =
|
||||||
|
var ctx: sha256
|
||||||
|
ctx.init()
|
||||||
|
defer: ctx.clear()
|
||||||
|
|
||||||
|
ctx.update(msg.contentTopic.toBytes())
|
||||||
|
ctx.update(msg.payload)
|
||||||
|
|
||||||
|
# Computes the hash
|
||||||
|
return ctx.finish()
|
||||||
|
|
||||||
proc compute*(T: type Index, msg: WakuMessage, receivedTime: Timestamp, pubsubTopic: string): T =
|
proc compute*(T: type Index, msg: WakuMessage, receivedTime: Timestamp, pubsubTopic: string): T =
|
||||||
## Takes a WakuMessage with received timestamp and returns its Index.
|
## Takes a WakuMessage with received timestamp and returns its Index.
|
||||||
## Received timestamp will default to system time if not provided.
|
|
||||||
|
|
||||||
let
|
let
|
||||||
contentTopic = toBytes(msg.contentTopic)
|
digest = computeDigest(msg)
|
||||||
payload = msg.payload
|
|
||||||
senderTime = msg.timestamp
|
senderTime = msg.timestamp
|
||||||
|
|
||||||
var ctx: sha256
|
|
||||||
ctx.init()
|
|
||||||
ctx.update(contentTopic)
|
|
||||||
ctx.update(payload)
|
|
||||||
let digest = ctx.finish() # computes the hash
|
|
||||||
ctx.clear()
|
|
||||||
|
|
||||||
Index(
|
Index(
|
||||||
digest:digest,
|
pubsubTopic: pubsubTopic,
|
||||||
receiverTime: receivedTime,
|
|
||||||
senderTime: senderTime,
|
senderTime: senderTime,
|
||||||
pubsubTopic: pubsubTopic
|
receiverTime: receivedTime,
|
||||||
|
digest: digest
|
||||||
)
|
)
|
||||||
|
|
||||||
proc `==`*(x, y: Index): bool =
|
proc `==`*(x, y: Index): bool =
|
||||||
|
Loading…
x
Reference in New Issue
Block a user