Skip to content
Snippets Groups Projects
Commit 62bb1bea authored by Alexey Lunin's avatar Alexey Lunin
Browse files

save did svdx, email, public keys in storage

parent cd65c347
No related branches found
No related tags found
1 merge request!93OCM key - svdx id mapping OP#252
Pipeline #74569 waiting for manual action
......@@ -65,6 +65,7 @@ import {
SvdxDidResolver,
SvdxModule,
DefaultIpfsClient,
SvdxRecordsApi,
} from "@vereign/credo-did-svdx";
import { SubjectInboundTransport } from "./askar/transports/agent.subject.inbound.transport";
......@@ -204,9 +205,43 @@ export const generateDidWeb = async ({
console.log(JSON.stringify(didDocumentInstance.toJSON(), null, 2));
};
export const generateRandomDidSvdx = async (agent: Agent) => {
export const generateDidSvdxForEmail = async (agent: Agent, email: string) => {
const seed = crypto.randomBytes(46).toString("hex");
return generateDidSvdx({ agent, seed });
const activeKey = await generateKey({ seed, agent });
const nextKey = await generateKey({ seed, agent }); // TODO Where to find next key?
const WalletKeyPair = createWalletKeyPairClass(agent.context.wallet);
const keyPair = new WalletKeyPair({
id: `key-1`,
controller: `did:svdx:${activeKey.fingerprint}`,
key: activeKey,
wallet: agent.context.wallet,
});
const didResult = await agent.dids.create({
method: "svdx",
options: {
inceptionKey: activeKey,
nextKey: nextKey,
signer: { signer: () => keyPair.signer() },
},
});
console.log(didResult);
if (!didResult.didState.didDocument) {
throw new Error("Could not create did svdx");
}
const svdxApi: SvdxRecordsApi = agent.modules["svdx"];
await svdxApi.save({
email: email,
did: didResult.didState.did!,
activeKey: activeKey.publicKeyBase58,
nextKey: nextKey.publicKeyBase58,
});
return didResult;
};
export const generateDidSvdx = async ({
......
import { Injectable, Logger } from "@nestjs/common";
import { EntityNotFoundError, RequestSenderEmailVcDto } from "@ocm-engine/dtos";
import { CatalogClient } from "../clients/catalog.client";
import { generateRandomDidSvdx } from "../../agent.utils";
import { generateDidSvdxForEmail } from "../../agent.utils";
import { AskarService } from "./askar.service";
import { IConfCatalog } from "@ocm-engine/config";
import { ConfigService } from "@nestjs/config";
......@@ -55,7 +55,10 @@ export class AgentOcmService {
};
}
const newDidSvdx = await generateRandomDidSvdx(this.askar.agent);
const newDidSvdx = await generateDidSvdxForEmail(
this.askar.agent,
dto.email,
);
if (!newDidSvdx.didState.did) {
throw new Error("Svdx did generation failed");
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment