You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
61 lines
1.9 KiB
61 lines
1.9 KiB
2 years ago
|
import axios from "axios";
|
||
|
import * as didJwt from "did-jwt";
|
||
|
import { AppString } from "@/constants/app";
|
||
|
import { db } from "../db";
|
||
|
import { SERVICE_ID } from "../libs/veramo/setup";
|
||
|
import { deriveAddress, newIdentifier } from "../libs/crypto";
|
||
|
|
||
|
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 accounts = await db.accounts.toArray();
|
||
|
const thisIdentity = JSON.parse(accounts[0].identity);
|
||
|
|
||
|
// Make a claim
|
||
|
const vcClaim = {
|
||
|
"@context": "https://schema.org",
|
||
|
"@type": "RegisterAction",
|
||
|
agent: { did: identity0.did },
|
||
|
object: SERVICE_ID,
|
||
|
participant: { did: thisIdentity.did },
|
||
|
};
|
||
|
// 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 = AppString.DEFAULT_ENDORSER_API_SERVER;
|
||
|
const url = endorserApiServer + "/api/claim";
|
||
|
const headers = {
|
||
|
"Content-Type": "application/json",
|
||
|
};
|
||
|
|
||
|
const resp = await axios.post(url, payload, { headers });
|
||
|
console.log("Result:", resp);
|
||
|
}
|