Browse Source

New Project

kb/add-usage-guide
Matthew Aaron Raymer 2 years ago
parent
commit
f021fcdb1c
  1. 4
      src/constants/app.ts
  2. 11
      src/libs/crypto/index.ts
  3. 26
      src/views/NewEditProjectView.vue

4
src/constants/app.ts

@ -4,6 +4,6 @@
export enum AppString { export enum AppString {
APP_NAME = "Kickstart for time", APP_NAME = "Kickstart for time",
VERSION = "0.1", VERSION = "0.1",
DEFAULT_ENDORSER_API_SERVER = 'https://endorser.ch:3000', DEFAULT_ENDORSER_API_SERVER = 'https://test.endorser.ch:8000',
DEFAULT_ENDORSER_VIEW_SERVER = 'https://endorser.ch' DEFAULT_ENDORSER_VIEW_SERVER = 'https://test.endorser.ch'
} }

11
src/libs/crypto/index.ts

@ -100,3 +100,14 @@ export const accessToken = async (identifier: IIdentifier) => {
}); });
return jwt; return jwt;
}; };
export const sign = async (privateKeyHex: string) => {
const input = privateKeyHex.startsWith("0x")
? privateKeyHex.substring(2)
: privateKeyHex;
const privateKeyBytes = u8a.fromString(input.toLowerCase(), "base16");
const signer = didJwt.ES256KSigner(privateKeyBytes, true);
return signer;
};

26
src/views/NewEditProjectView.vue

@ -74,7 +74,8 @@
import { Options, Vue } from "vue-class-component"; import { Options, Vue } from "vue-class-component";
import { AppString } from "@/constants/app"; import { AppString } from "@/constants/app";
import { db } from "../db"; import { db } from "../db";
import { accessToken } from "@/libs/crypto"; import { accessToken, sign } from "@/libs/crypto";
import * as didJwt from 'did-jwt'
@Options({ @Options({
components: {}, components: {},
@ -95,20 +96,31 @@ export default class NewEditProjectView extends Vue {
const address = identity.did; const address = identity.did;
const vcClaim = { const vcClaim = {
"@context": "https://schema.org", "@context": "https://schema.org",
"@type": "Plan", "@type": "PlanAction",
identifier: address, identifier: address,
name: this.projectName, name: this.projectName,
description: this.description, description: this.description,
}; };
const jwt = ""; const vcPayload = {
const payload = JSON.stringify({ jwtEncoded: jwt}); sub: "PlanAction",
vc: {
'@context': ['https://www.w3.org/2018/credentials/v1'],
type: ['VerifiableCredential'],
credentialSubject: vcClaim,
}
};
const signer = await sign(identity.keys[0].privateKeyHex);
const alg = undefined;
const vcJwt: string = await didJwt.createJWT(vcClaim,{ alg, issuer: identity, signer });
const payload = JSON.stringify({ jwtEncoded: vcJwt});
const endorserApiServer = AppString.DEFAULT_ENDORSER_API_SERVER; const endorserApiServer = AppString.DEFAULT_ENDORSER_API_SERVER;
const url = endorserApiServer + "/api/claim"; const url = endorserApiServer + "/api/claim";
const token = await accessToken(identity) const token = await accessToken(identity);
const headers = { const headers = {
'Content-Type': 'application/json', 'Content-Type': 'application/json',
'Uport-Push-Token': token 'Authorization': "Bearer " + token
} };
try { try {
let resp = await this.axios.post(url, payload, { headers }); let resp = await this.axios.post(url, payload, { headers });

Loading…
Cancel
Save