|
|
|
import axios from "axios";
|
|
|
|
import * as didJwt from "did-jwt";
|
|
|
|
import { AppString } from "@/constants/app";
|
|
|
|
import { db } from "../db";
|
|
|
|
import { SERVICE_ID } from "../libs/endorserServer";
|
|
|
|
import { deriveAddress, newIdentifier } from "../libs/crypto";
|
|
|
|
import { MASTER_SETTINGS_KEY } from "@/db/tables/settings";
|
|
|
|
|
|
|
|
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);
|
|
|
|
|
|
|
|
await db.open();
|
|
|
|
const settings = await db.settings.get(MASTER_SETTINGS_KEY);
|
|
|
|
|
|
|
|
// 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);
|
|
|
|
}
|