@tangle-js/anchors
Version:
Anchoring messages to the Tangle. Powered by IOTA Streams
32 lines • 2.31 kB
JavaScript
import { Author, ChannelType, SendOptions } from "@tangle.js/streams-wasm/node/streams.js";
// eslint-disable-next-line unicorn/prefer-node-protocol
import * as crypto from "crypto";
import { ClientHelper } from "./clientHelper.mjs";
export class SeedHelper {
/**
* Generates a new seed
* @param length Seed length
* @returns The seed
*/
static generateSeed(length = 80) {
const alphabet = "abcdefghijklmnopqrstuvwxyz";
let seed = "";
while (seed.length < length) {
const bytes = crypto.randomBytes(1);
seed += alphabet[bytes[0] % alphabet.length];
}
return seed;
}
/**
* Given a seed obtains the corresponding Ed25519 public key
*
* @param seed The seed
* @returns the public key
*/
static async publicKeyFromSeed(seed) {
// The node is just a formality to fill all the params
const author = new Author(seed, new SendOptions(ClientHelper.DEFAULT_NODE, true), ChannelType.SingleBranch);
return author.clone().get_public_key();
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VlZEhlbHBlci5tanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaGVscGVycy9zZWVkSGVscGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQzNGLHdEQUF3RDtBQUN4RCxPQUFPLEtBQUssTUFBTSxNQUFNLFFBQVEsQ0FBQztBQUNqQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFOUMsTUFBTSxPQUFPLFVBQVU7SUFDbkI7Ozs7T0FJRztJQUNJLE1BQU0sQ0FBQyxZQUFZLENBQUMsU0FBaUIsRUFBRTtRQUMxQyxNQUFNLFFBQVEsR0FBRyw0QkFBNEIsQ0FBQztRQUU5QyxJQUFJLElBQUksR0FBRyxFQUFFLENBQUM7UUFFZCxPQUFPLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxFQUFFO1lBQ3pCLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDcEMsSUFBSSxJQUFJLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQ2hEO1FBR0QsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ksTUFBTSxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxJQUFZO1FBQzlDLHNEQUFzRDtRQUN0RCxNQUFNLE1BQU0sR0FBRyxJQUFJLE1BQU0sQ0FBQyxJQUFJLEVBQzFCLElBQUksV0FBVyxDQUFDLFlBQVksQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLEVBQUUsV0FBVyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBRWhGLE9BQU8sTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQzNDLENBQUM7Q0FDSiJ9