tidecloak-js
Version:
TideCloak client side JS SDK
31 lines (30 loc) • 1.16 kB
JavaScript
import { CreateTideMemory, writeInt64LittleEndian, WriteValue } from "./Serialization.js";
import { Utils } from "../index.js";
import { Ed25519PublicComponent } from "./Components/Schemes/Ed25519/Ed25519Components.js";
import { AuthorizerSignatureFormat } from "./Signing/TideSignature.js";
/**
*
* @param {Ed25519PublicComponent} gvrk
* @param {number | bigint} expiry
*/
export function CreateVRKPackage(gvrk, expiry){
const serializedgvrk = gvrk.Serialize().ToBytes();
const ex = typeof expiry == "bigint" ? expiry : BigInt(expiry);
if(ex < BigInt(Utils.CurrentTime() + 5)) throw Error("Expiry must be at least 5 seconds into future");
const time_b = writeInt64LittleEndian(ex);
const vrk_pack = CreateTideMemory(serializedgvrk,
4 + 4 + serializedgvrk.length + time_b.length
);
WriteValue(vrk_pack, 1, time_b);
return vrk_pack;
}
/**
*
* @param {string} authFlow
* @param {string[]} signModels
* @param {Uint8Array} vrk_pack
* @returns
*/
export function CreateAuthorizerPackage(authFlow, signModels, vrk_pack){
return new AuthorizerSignatureFormat(authFlow, signModels, vrk_pack).format();
}