mirror of
https://github.com/logos-messaging/js-waku.git
synced 2026-01-05 15:23:12 +00:00
* chore: upgrade libp2p to v2 and related deps * chore: fix ENR * chore(core): remove CustomEvent polyfill import * chore: `peer-id-factory` has been removed * chore(discovery): fix local-cache & remove CustomEvent imports * chore(sdk): update config * chore(tests): update tests without peer-id-factory * fix: spec tests * chore: fix test * chore: upgrade dataset-core * chore: upgrade libp2p and stale references * chore: upgrade playwright * chore: rm console log * fix: lock
36 lines
932 B
TypeScript
36 lines
932 B
TypeScript
import type { PeerId } from "@libp2p/interface";
|
|
import type { ENRKey, ENRValue } from "@waku/interfaces";
|
|
import { utf8ToBytes } from "@waku/utils/bytes";
|
|
|
|
import { compressPublicKey } from "./crypto.js";
|
|
import { ENR } from "./enr.js";
|
|
|
|
export class EnrCreator {
|
|
public static fromPublicKey(
|
|
publicKey: Uint8Array,
|
|
kvs: Record<ENRKey, ENRValue> = {}
|
|
): ENR {
|
|
// EIP-778 specifies that the key must be in compressed format, 33 bytes
|
|
if (publicKey.length !== 33) {
|
|
publicKey = compressPublicKey(publicKey);
|
|
}
|
|
return ENR.create({
|
|
...kvs,
|
|
id: utf8ToBytes("v4"),
|
|
secp256k1: publicKey
|
|
});
|
|
}
|
|
|
|
public static async fromPeerId(
|
|
peerId: PeerId,
|
|
kvs: Record<ENRKey, ENRValue> = {}
|
|
): Promise<ENR> {
|
|
switch (peerId.type) {
|
|
case "secp256k1":
|
|
return EnrCreator.fromPublicKey(peerId.publicKey.raw, kvs);
|
|
default:
|
|
throw new Error();
|
|
}
|
|
}
|
|
}
|