import axios from "axios"; import * as didJwt from "did-jwt"; import { AppString } from "@/constants/app"; import { retrieveSettingsForActiveAccount } from "../db"; import { SERVICE_ID } from "@/libs/endorserServer"; import { deriveAddress, newIdentifier } from "@/libs/crypto"; /** * Get User #0 to sign & submit a RegisterAction for the user's activeDid. */ export async function testServerRegisterUser() { const testUser0Mnem = "seminar accuse mystery assist delay law thing deal image undo guard initial shallow wrestle list fragile borrow velvet tomorrow awake explain test offer control"; const [addr, privateHex, publicHex, deriPath] = deriveAddress(testUser0Mnem); const identity0 = newIdentifier(addr, publicHex, privateHex, deriPath); const settings = await retrieveSettingsForActiveAccount(); // Make a claim const vcClaim = { "@context": "https://schema.org", "@type": "RegisterAction", agent: { did: identity0.did }, object: SERVICE_ID, participant: { did: settings.activeDid }, }; // Make a payload for the claim const vcPayload = { sub: "RegisterAction", vc: { "@context": ["https://www.w3.org/2018/credentials/v1"], type: ["VerifiableCredential"], credentialSubject: vcClaim, }, }; // create a signature using private key of identity // eslint-disable-next-line const privateKeyHex: string = identity0.keys[0].privateKeyHex!; const signer = await didJwt.SimpleSigner(privateKeyHex); const alg = undefined; // create a JWT for the request const vcJwt: string = await didJwt.createJWT(vcPayload, { alg: alg, issuer: identity0.did, signer: signer, }); // Make the xhr request payload const payload = JSON.stringify({ jwtEncoded: vcJwt }); const endorserApiServer = settings.apiServer || AppString.TEST_ENDORSER_API_SERVER; const url = endorserApiServer + "/api/claim"; const headers = { "Content-Type": "application/json", }; const resp = await axios.post(url, payload, { headers }); console.log("User registration result:", resp); }