@waku/rln
Version:
RLN (Rate Limiting Nullifier) implementation for Waku
51 lines (50 loc) • 1.75 kB
TypeScript
import type { ICipherModule, IPbkdf2KdfModule } from "@chainsafe/bls-keystore";
import type { KeystoreEntity, MembershipHash, Password, Sha256Hash } from "./types.js";
type NwakuCredential = {
crypto: {
cipher: ICipherModule["function"];
cipherparams: ICipherModule["params"];
ciphertext: ICipherModule["message"];
kdf: IPbkdf2KdfModule["function"];
kdfparams: IPbkdf2KdfModule["params"];
mac: Sha256Hash;
};
};
interface NwakuKeystore {
application: string;
version: string;
appIdentifier: string;
credentials: {
[key: MembershipHash]: NwakuCredential;
};
}
type KeystoreCreateOptions = {
application?: string;
version?: string;
appIdentifier?: string;
};
export declare class Keystore {
private data;
private constructor();
static create(options?: KeystoreCreateOptions): Keystore;
static fromString(str: string): undefined | Keystore;
static fromObject(obj: NwakuKeystore): Keystore;
addCredential(options: KeystoreEntity, password: Password): Promise<MembershipHash>;
readCredential(membershipHash: MembershipHash, password: Password): Promise<undefined | KeystoreEntity>;
removeCredential(hash: MembershipHash): void;
toString(): string;
toObject(): NwakuKeystore;
/**
* Read array of hashes of current credentials
* @returns array of keys of credentials in current Keystore
*/
keys(): string[];
private static isValidNwakuStore;
private static fromCredentialToEip;
private static fromEipToCredential;
private static fromBytesToIdentity;
private static fromArraylikeToBytes;
private static computeMembershipHash;
private static fromIdentityToBytes;
}
export {};