forked from jsnbuchanan/crowd-funder-for-time-pwa
move low-level DID-related create & decode into separate folder (#120)
Co-authored-by: Trent Larson <trent@trentlarson.com> Reviewed-on: trent_larson/crowd-funder-for-time-pwa#120 Co-authored-by: trentlarson <trent@trentlarson.com> Co-committed-by: trentlarson <trent@trentlarson.com>
This commit is contained in:
@@ -1,14 +1,13 @@
|
||||
import { Axios, AxiosRequestConfig, AxiosResponse } from "axios";
|
||||
import * as didJwt from "did-jwt";
|
||||
import { LRUCache } from "lru-cache";
|
||||
import * as R from "ramda";
|
||||
|
||||
import { DEFAULT_IMAGE_API_SERVER } from "@/constants/app";
|
||||
import { Contact } from "@/db/tables/contacts";
|
||||
import { accessToken, SimpleSigner } from "@/libs/crypto";
|
||||
import { accessToken } from "@/libs/crypto";
|
||||
import { NonsensitiveDexie } from "@/db/index";
|
||||
import { createDidPeerJwt } from "@/libs/didPeer";
|
||||
import { getAccount, getIdentity } from "@/libs/util";
|
||||
import { createEndorserJwtForKey, KeyMeta } from "@/libs/crypto/vc";
|
||||
|
||||
export const SCHEMA_ORG_CONTEXT = "https://schema.org";
|
||||
// the object in RegisterAction claims
|
||||
@@ -692,7 +691,7 @@ export async function createAndSubmitClaim(
|
||||
},
|
||||
};
|
||||
|
||||
const vcJwt: string = await createEndorserJwt(issuerDid, vcPayload);
|
||||
const vcJwt: string = await createEndorserJwtForDid(issuerDid, vcPayload);
|
||||
|
||||
// Make the xhr request payload
|
||||
const payload = JSON.stringify({ jwtEncoded: vcJwt });
|
||||
@@ -722,6 +721,14 @@ export async function createAndSubmitClaim(
|
||||
}
|
||||
}
|
||||
|
||||
export async function createEndorserJwtForDid(
|
||||
issuerDid: string,
|
||||
payload: object,
|
||||
) {
|
||||
const account = await getAccount(issuerDid);
|
||||
return createEndorserJwtForKey(account as KeyMeta, payload);
|
||||
}
|
||||
|
||||
/**
|
||||
* An AcceptAction is when someone accepts some contract or pledge.
|
||||
*
|
||||
@@ -937,25 +944,7 @@ export async function createEndorserJwtVcFromClaim(
|
||||
credentialSubject: claim,
|
||||
},
|
||||
};
|
||||
return createEndorserJwt(issuerDid, vcPayload);
|
||||
}
|
||||
|
||||
export async function createEndorserJwt(issuerDid: string, payload: object) {
|
||||
const account = await getAccount(issuerDid);
|
||||
if (account?.identity) {
|
||||
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
||||
const identity = JSON.parse(account.identity!);
|
||||
const privateKeyHex = identity.keys[0].privateKeyHex;
|
||||
const signer = await SimpleSigner(privateKeyHex);
|
||||
return didJwt.createJWT(payload, {
|
||||
issuer: issuerDid,
|
||||
signer: signer,
|
||||
});
|
||||
} else if (account?.passkeyCredIdHex) {
|
||||
return createDidPeerJwt(issuerDid, account.passkeyCredIdHex, payload);
|
||||
} else {
|
||||
throw new Error("No identity data found to sign for DID " + issuerDid);
|
||||
}
|
||||
return createEndorserJwtForDid(issuerDid, vcPayload);
|
||||
}
|
||||
|
||||
export async function register(
|
||||
@@ -980,7 +969,7 @@ export async function register(
|
||||
},
|
||||
};
|
||||
// Create a signature using private key of identity
|
||||
const vcJwt = await createEndorserJwt(activeDid, vcPayload);
|
||||
const vcJwt = await createEndorserJwtForDid(activeDid, vcPayload);
|
||||
|
||||
const url = apiServer + "/api/v2/claim";
|
||||
const resp = await axios.post(url, { jwtEncoded: vcJwt });
|
||||
|
||||
Reference in New Issue
Block a user