js-waku/packages/message-encryption/src/decoded_message.ts

41 lines
1.0 KiB
TypeScript
Raw Normal View History

import {
DecodedMessage as DecodedMessageV0,
proto
} from "@waku/core/lib/message/version_0";
import type { IDecodedMessage } from "@waku/interfaces";
import { equals } from "uint8arrays/equals";
export class DecodedMessage
extends DecodedMessageV0
implements IDecodedMessage
{
private readonly _decodedPayload: Uint8Array;
public constructor(
pubsubTopic: string,
proto: proto.WakuMessage,
decodedPayload: Uint8Array,
public signature?: Uint8Array,
public signaturePublicKey?: Uint8Array
) {
super(pubsubTopic, proto);
this._decodedPayload = decodedPayload;
}
public get payload(): Uint8Array {
return this._decodedPayload;
}
/**
* Verify the message's signature against the public key.
*
* @returns true if the signature matches the public key, false if not or if no signature is present.
*/
public verifySignature(publicKey: Uint8Array): boolean {
if (this.signaturePublicKey) {
return equals(this.signaturePublicKey, publicKey);
}
return false;
}
}