@holochain/client 0.11.7 → 0.11.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -34,12 +34,6 @@ npm install --save-exact @holochain/client
34
34
  resolve()
35
35
  }
36
36
 
37
- // generate and authorize new key pair for signing zome calls,
38
- // specifying zomes and functions to be authorized
39
- await authorizeNewSigningKeyPair(admin, cell_id, [
40
- ["test_zome", "test_emitter_fn"],
41
- ]);
42
-
43
37
  const TIMEOUT = 12000
44
38
  // default timeout is set to 12000
45
39
  const client = await AppWebsocket.connect(`ws://127.0.0.1:${appPort}`, TIMEOUT, signalCb)
@@ -61,12 +55,6 @@ npm install --save-exact @holochain/client
61
55
  resolve()
62
56
  }
63
57
 
64
- // generate and authorize new key pair for signing zome calls,
65
- // specifying zomes and functions to be authorized
66
- await authorizeNewSigningKeyPair(admin, cell_id, [
67
- ["test_zome", "test_emitter_fn"],
68
- ]);
69
-
70
58
  const TIMEOUT = 12000
71
59
  // default timeout is set to 12000
72
60
  const appWs = await AppWebsocket.connect(`ws://127.0.0.1:${appPort}`, 12000, signalCb)
@@ -1,45 +1,49 @@
1
- /**
2
- * Defines AdminWebsocket, an easy-to-use websocket implementation of the
3
- * Conductor Admin API
4
- *
5
- * const client = AdminWebsocket.connect(
6
- * 'ws://127.0.0.1:9000'
7
- * )
8
- *
9
- * client.generateAgentPubKey()
10
- * .then(agentPubKey => {
11
- * console.log('Agent successfully generated:', agentPubKey)
12
- * })
13
- * .catch(err => {
14
- * console.error('problem generating agent:', err)
15
- * })
16
- */
17
- import * as Api from "./types.js";
1
+ import { CapSecret, GrantedFunctions } from "../../hdk/capabilities.js";
2
+ import type { AgentPubKey, CellId } from "../../types.js";
18
3
  import { WsClient } from "../client.js";
19
- import { Transformer, Requester } from "../common.js";
20
- export declare class AdminWebsocket implements Api.AdminApi {
4
+ import { Requester, Transformer } from "../common.js";
5
+ import { AddAgentInfoRequest, AddAgentInfoResponse, AdminApi, AgentInfoRequest, AgentInfoResponse, AttachAppInterfaceRequest, AttachAppInterfaceResponse, DeleteCloneCellRequest, DeleteCloneCellResponse, DisableAppRequest, DisableAppResponse, DumpFullStateRequest, DumpFullStateResponse, DumpStateRequest, DumpStateResponse, EnableAppRequest, EnableAppResponse, GenerateAgentPubKeyRequest, GenerateAgentPubKeyResponse, GetDnaDefinitionRequest, GetDnaDefinitionResponse, GrantZomeCallCapabilityRequest, GrantZomeCallCapabilityResponse, InstallAppRequest, InstallAppResponse, ListAppInterfacesRequest, ListAppInterfacesResponse, ListAppsRequest, ListAppsResponse, ListCellIdsRequest, ListCellIdsResponse, ListDnasRequest, ListDnasResponse, RegisterDnaRequest, RegisterDnaResponse, StartAppRequest, StartAppResponse, UninstallAppRequest, UninstallAppResponse } from "./types.js";
6
+ export declare class AdminWebsocket implements AdminApi {
21
7
  readonly client: WsClient;
22
8
  defaultTimeout: number;
23
9
  private constructor();
24
10
  static connect(url: string, defaultTimeout?: number): Promise<AdminWebsocket>;
25
11
  _requester: <ReqO, ReqI, ResI, ResO>(tag: string, transformer?: Transformer<ReqO, ReqI, ResI, ResO> | undefined) => (req: ReqO, timeout?: number | undefined) => Promise<ResO>;
26
- attachAppInterface: Requester<Api.AttachAppInterfaceRequest, Api.AttachAppInterfaceResponse>;
27
- enableApp: Requester<Api.EnableAppRequest, Api.EnableAppResponse>;
28
- disableApp: Requester<Api.DisableAppRequest, Api.DisableAppResponse>;
29
- startApp: Requester<Api.StartAppRequest, Api.StartAppResponse>;
30
- dumpState: Requester<Api.DumpStateRequest, Api.DumpStateResponse>;
31
- dumpFullState: Requester<Api.DumpFullStateRequest, Api.DumpFullStateResponse>;
32
- generateAgentPubKey: Requester<Api.GenerateAgentPubKeyRequest, Api.GenerateAgentPubKeyResponse>;
33
- registerDna: Requester<Api.RegisterDnaRequest, Api.RegisterDnaResponse>;
34
- getDnaDefinition: Requester<Api.GetDnaDefinitionRequest, Api.GetDnaDefinitionResponse>;
35
- uninstallApp: Requester<Api.UninstallAppRequest, Api.UninstallAppResponse>;
36
- installApp: Requester<Api.InstallAppRequest, Api.InstallAppResponse>;
37
- listDnas: Requester<Api.ListDnasRequest, Api.ListDnasResponse>;
38
- listCellIds: Requester<Api.ListCellIdsRequest, Api.ListCellIdsResponse>;
39
- listApps: Requester<Api.ListAppsRequest, Api.ListAppsResponse>;
40
- listAppInterfaces: Requester<Api.ListAppInterfacesRequest, Api.ListAppInterfacesResponse>;
41
- agentInfo: Requester<Api.AgentInfoRequest, Api.AgentInfoResponse>;
42
- addAgentInfo: Requester<Api.AddAgentInfoRequest, Api.AddAgentInfoResponse>;
43
- deleteCloneCell: Requester<Api.DeleteCloneCellRequest, Api.DeleteCloneCellResponse>;
44
- grantZomeCallCapability: Requester<Api.GrantZomeCallCapabilityRequest, Api.GrantZomeCallCapabilityResponse>;
12
+ attachAppInterface: Requester<AttachAppInterfaceRequest, AttachAppInterfaceResponse>;
13
+ enableApp: Requester<EnableAppRequest, EnableAppResponse>;
14
+ disableApp: Requester<DisableAppRequest, DisableAppResponse>;
15
+ startApp: Requester<StartAppRequest, StartAppResponse>;
16
+ dumpState: Requester<DumpStateRequest, DumpStateResponse>;
17
+ dumpFullState: Requester<DumpFullStateRequest, DumpFullStateResponse>;
18
+ generateAgentPubKey: Requester<GenerateAgentPubKeyRequest, GenerateAgentPubKeyResponse>;
19
+ registerDna: Requester<RegisterDnaRequest, RegisterDnaResponse>;
20
+ getDnaDefinition: Requester<GetDnaDefinitionRequest, GetDnaDefinitionResponse>;
21
+ uninstallApp: Requester<UninstallAppRequest, UninstallAppResponse>;
22
+ installApp: Requester<InstallAppRequest, InstallAppResponse>;
23
+ listDnas: Requester<ListDnasRequest, ListDnasResponse>;
24
+ listCellIds: Requester<ListCellIdsRequest, ListCellIdsResponse>;
25
+ listApps: Requester<ListAppsRequest, ListAppsResponse>;
26
+ listAppInterfaces: Requester<ListAppInterfacesRequest, ListAppInterfacesResponse>;
27
+ agentInfo: Requester<AgentInfoRequest, AgentInfoResponse>;
28
+ addAgentInfo: Requester<AddAgentInfoRequest, AddAgentInfoResponse>;
29
+ deleteCloneCell: Requester<DeleteCloneCellRequest, DeleteCloneCellResponse>;
30
+ grantZomeCallCapability: Requester<GrantZomeCallCapabilityRequest, GrantZomeCallCapabilityResponse>;
31
+ /**
32
+ * Grant a capability for signing zome calls.
33
+ *
34
+ * @param cellId - The cell to grant the capability for.
35
+ * @param functions - The zome functions to grant the capability for.
36
+ * @param signingKey - The assignee of the capability.
37
+ * @returns The cap secret of the created capability.
38
+ */
39
+ grantSigningKey: (cellId: CellId, functions: GrantedFunctions, signingKey: AgentPubKey) => Promise<CapSecret>;
40
+ /**
41
+ * Generate and authorize a new key pair for signing zome calls.
42
+ *
43
+ * @param cellId - The cell id to create the capability grant for.
44
+ * @param functions - Zomes and functions to authorize the signing key for
45
+ * (optional). When no functions are specified, the capability will be
46
+ * granted for all zomes and functions.
47
+ */
48
+ authorizeSigningCredentials: (cellId: CellId, functions?: GrantedFunctions) => Promise<void>;
45
49
  }
@@ -1,24 +1,9 @@
1
- /**
2
- * Defines AdminWebsocket, an easy-to-use websocket implementation of the
3
- * Conductor Admin API
4
- *
5
- * const client = AdminWebsocket.connect(
6
- * 'ws://127.0.0.1:9000'
7
- * )
8
- *
9
- * client.generateAgentPubKey()
10
- * .then(agentPubKey => {
11
- * console.log('Agent successfully generated:', agentPubKey)
12
- * })
13
- * .catch(err => {
14
- * console.error('problem generating agent:', err)
15
- * })
16
- */
17
- import * as Api from "./types.js";
18
- import { WsClient } from "../client.js";
19
- import { catchError, promiseTimeout, DEFAULT_TIMEOUT } from "../common.js";
20
- import { requesterTransformer } from "../common.js";
21
1
  import { getLauncherEnvironment } from "../../environments/launcher.js";
2
+ import { GrantedFunctionsType, } from "../../hdk/capabilities.js";
3
+ import { WsClient } from "../client.js";
4
+ import { catchError, DEFAULT_TIMEOUT, promiseTimeout, requesterTransformer, } from "../common.js";
5
+ import { generateSigningKeyPair, randomCapSecret, setSigningCredentials, } from "../zome-call-signing.js";
6
+ import { AppStatusFilter, } from "./types.js";
22
7
  export class AdminWebsocket {
23
8
  client;
24
9
  defaultTimeout;
@@ -58,6 +43,45 @@ export class AdminWebsocket {
58
43
  addAgentInfo = this._requester("add_agent_info");
59
44
  deleteCloneCell = this._requester("delete_clone_cell");
60
45
  grantZomeCallCapability = this._requester("grant_zome_call_capability");
46
+ // zome call signing related methods
47
+ /**
48
+ * Grant a capability for signing zome calls.
49
+ *
50
+ * @param cellId - The cell to grant the capability for.
51
+ * @param functions - The zome functions to grant the capability for.
52
+ * @param signingKey - The assignee of the capability.
53
+ * @returns The cap secret of the created capability.
54
+ */
55
+ grantSigningKey = async (cellId, functions, signingKey) => {
56
+ const capSecret = randomCapSecret();
57
+ await this.grantZomeCallCapability({
58
+ cell_id: cellId,
59
+ cap_grant: {
60
+ tag: "zome-call-signing-key",
61
+ functions,
62
+ access: {
63
+ Assigned: {
64
+ secret: capSecret,
65
+ assignees: [signingKey],
66
+ },
67
+ },
68
+ },
69
+ });
70
+ return capSecret;
71
+ };
72
+ /**
73
+ * Generate and authorize a new key pair for signing zome calls.
74
+ *
75
+ * @param cellId - The cell id to create the capability grant for.
76
+ * @param functions - Zomes and functions to authorize the signing key for
77
+ * (optional). When no functions are specified, the capability will be
78
+ * granted for all zomes and functions.
79
+ */
80
+ authorizeSigningCredentials = async (cellId, functions) => {
81
+ const [keyPair, signingKey] = generateSigningKeyPair();
82
+ const capSecret = await this.grantSigningKey(cellId, functions || { [GrantedFunctionsType.All]: null }, signingKey);
83
+ setSigningCredentials(cellId, { capSecret, keyPair, signingKey });
84
+ };
61
85
  }
62
86
  const listAppsTransform = {
63
87
  input: (req) => {
@@ -77,23 +101,23 @@ const dumpStateTransform = {
77
101
  };
78
102
  function getAppStatusInApiForm(status_filter) {
79
103
  switch (status_filter) {
80
- case Api.AppStatusFilter.Running:
104
+ case AppStatusFilter.Running:
81
105
  return {
82
106
  Running: null,
83
107
  };
84
- case Api.AppStatusFilter.Enabled:
108
+ case AppStatusFilter.Enabled:
85
109
  return {
86
110
  Enabled: null,
87
111
  };
88
- case Api.AppStatusFilter.Paused:
112
+ case AppStatusFilter.Paused:
89
113
  return {
90
114
  Paused: null,
91
115
  };
92
- case Api.AppStatusFilter.Disabled:
116
+ case AppStatusFilter.Disabled:
93
117
  return {
94
118
  Disabled: null,
95
119
  };
96
- case Api.AppStatusFilter.Stopped:
120
+ case AppStatusFilter.Stopped:
97
121
  return {
98
122
  Stopped: null,
99
123
  };
@@ -1 +1 @@
1
- {"version":3,"file":"websocket.js","sourceRoot":"","sources":["../../../src/api/admin/websocket.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"websocket.js","sourceRoot":"","sources":["../../../src/api/admin/websocket.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,2 @@
1
1
  export * from "./types.js";
2
2
  export * from "./websocket.js";
3
- export { hashZomeCall } from "@holochain/serialization";
4
- export * from "./util.js";
@@ -1,5 +1,3 @@
1
1
  export * from "./types.js";
2
2
  export * from "./websocket.js";
3
- export { hashZomeCall } from "@holochain/serialization";
4
- export * from "./util.js";
5
3
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/api/app/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,cAAc,WAAW,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/api/app/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC"}
@@ -3,6 +3,7 @@ import { CapSecret } from "../../hdk/capabilities.js";
3
3
  import { InstalledAppId } from "../../types.js";
4
4
  import { WsClient } from "../client.js";
5
5
  import { Requester, Transformer } from "../common.js";
6
+ import { Nonce256Bit } from "../zome-call-signing.js";
6
7
  import { AppApi, AppInfoRequest, AppInfoResponse, AppSignalCb, CallZomeRequest, CallZomeResponse, CreateCloneCellRequest, CreateCloneCellResponse, DisableCloneCellRequest, DisableCloneCellResponse, EnableCloneCellRequest, EnableCloneCellResponse, NetworkInfoRequest, NetworkInfoResponse } from "./types.js";
7
8
  export declare class AppWebsocket extends Emittery implements AppApi {
8
9
  readonly client: WsClient;
@@ -18,7 +19,6 @@ export declare class AppWebsocket extends Emittery implements AppApi {
18
19
  disableCloneCell: Requester<DisableCloneCellRequest, DisableCloneCellResponse>;
19
20
  networkInfo: Requester<NetworkInfoRequest, NetworkInfoResponse>;
20
21
  }
21
- export declare type Nonce256Bit = Uint8Array;
22
22
  export interface CallZomeRequestUnsigned extends CallZomeRequest {
23
23
  cap_secret: CapSecret | null;
24
24
  nonce: Nonce256Bit;
@@ -27,3 +27,4 @@ export interface CallZomeRequestUnsigned extends CallZomeRequest {
27
27
  export interface CallZomeRequestSigned extends CallZomeRequestUnsigned {
28
28
  signature: Uint8Array;
29
29
  }
30
+ export declare const signZomeCall: (request: CallZomeRequest) => Promise<CallZomeRequestSigned>;
@@ -1,11 +1,11 @@
1
+ import { hashZomeCall } from "@holochain/serialization";
1
2
  import { decode, encode } from "@msgpack/msgpack";
2
- import { invoke } from "@tauri-apps/api/tauri";
3
3
  import Emittery from "emittery";
4
- import { getLauncherEnvironment, isLauncher, } from "../../environments/launcher.js";
4
+ import nacl from "tweetnacl";
5
+ import { getLauncherEnvironment, isLauncher, signZomeCallTauri, } from "../../environments/launcher.js";
5
6
  import { WsClient } from "../client.js";
6
7
  import { catchError, DEFAULT_TIMEOUT, promiseTimeout, requesterTransformer, } from "../common.js";
7
- import { getSigningCredentials } from "../zome-call-signing.js";
8
- import { getNonceExpiration, randomNonce, signZomeCall } from "./util.js";
8
+ import { getNonceExpiration, getSigningCredentials, randomNonce, } from "../zome-call-signing.js";
9
9
  export class AppWebsocket extends Emittery {
10
10
  client;
11
11
  defaultTimeout;
@@ -40,73 +40,51 @@ export class AppWebsocket extends Emittery {
40
40
  networkInfo = this._requester("network_info");
41
41
  }
42
42
  const callZomeTransform = {
43
- input: async (req) => {
44
- if ("signature" in req) {
45
- return req;
46
- }
47
- if (isLauncher) {
48
- const zomeCallUnsigned = {
49
- provenance: Array.from(req.provenance),
50
- cell_id: [Array.from(req.cell_id[0]), Array.from(req.cell_id[1])],
51
- zome_name: req.zome_name,
52
- fn_name: req.fn_name,
53
- payload: Array.from(encode(req.payload)),
54
- nonce: Array.from(randomNonce()),
55
- expires_at: getNonceExpiration(),
56
- };
57
- const signedZomeCallTauri = await invoke("sign_zome_call", { zomeCallUnsigned });
58
- const signedZomeCall = {
59
- provenance: Uint8Array.from(signedZomeCallTauri.provenance),
60
- cap_secret: null,
61
- cell_id: [
62
- Uint8Array.from(signedZomeCallTauri.cell_id[0]),
63
- Uint8Array.from(signedZomeCallTauri.cell_id[1]),
64
- ],
65
- zome_name: signedZomeCallTauri.zome_name,
66
- fn_name: signedZomeCallTauri.fn_name,
67
- payload: Uint8Array.from(signedZomeCallTauri.payload),
68
- signature: Uint8Array.from(signedZomeCallTauri.signature),
69
- expires_at: signedZomeCallTauri.expires_at,
70
- nonce: Uint8Array.from(signedZomeCallTauri.nonce),
71
- };
72
- return signedZomeCall;
73
- }
74
- else {
75
- const signingPropsForCell = getSigningCredentials(req.cell_id);
76
- if (!signingPropsForCell) {
77
- throw new Error("cannot sign zome call: signing properties have not been set");
78
- }
79
- // const unsignedZomeCall: CallZomeRequestUnsigned = {
80
- // ...req,
81
- // cap_secret: signingPropsForCell.capSecret,
82
- // provenance: signingPropsForCell.signingKey,
83
- // payload: encode(req.payload),
84
- // nonce: randomNonce(),
85
- // expires_at: getNonceExpiration(),
86
- // };
87
- // const hashedZomeCall = await hashZomeCall(unsignedZomeCall);
88
- // const signature = nacl
89
- // .sign(hashedZomeCall, signingPropsForCell.keyPair.secretKey)
90
- // .subarray(0, nacl.sign.signatureLength);
91
- // const signedZomeCall: CallZomeRequestSigned = {
92
- // ...unsignedZomeCall,
93
- // signature,
94
- // };
95
- const signedZomeCall = await signZomeCall(signingPropsForCell.capSecret, signingPropsForCell.signingKey, signingPropsForCell.keyPair, req);
96
- return signedZomeCall;
43
+ input: async (request) => {
44
+ if ("signature" in request) {
45
+ return request;
97
46
  }
47
+ const signedZomeCall = isLauncher
48
+ ? await signZomeCallTauri(request)
49
+ : await signZomeCall(request);
50
+ return signedZomeCall;
98
51
  },
99
- output: (res) => decode(res),
52
+ output: (response) => decode(response),
100
53
  };
101
54
  const appInfoTransform = (appWs) => ({
102
- input: (req) => {
55
+ input: (request) => {
103
56
  if (appWs.overrideInstalledAppId) {
104
57
  return {
105
58
  installed_app_id: appWs.overrideInstalledAppId,
106
59
  };
107
60
  }
108
- return req;
61
+ return request;
109
62
  },
110
- output: (res) => res,
63
+ output: (response) => response,
111
64
  });
65
+ export const signZomeCall = async (request) => {
66
+ const signingCredentialsForCell = getSigningCredentials(request.cell_id);
67
+ if (!signingCredentialsForCell) {
68
+ throw new Error(`cannot sign zome call: no signing credentials have been authorized for cell ${request.cell_id}`);
69
+ }
70
+ const unsignedZomeCallPayload = {
71
+ cap_secret: signingCredentialsForCell.capSecret,
72
+ cell_id: request.cell_id,
73
+ zome_name: request.zome_name,
74
+ fn_name: request.fn_name,
75
+ provenance: signingCredentialsForCell.signingKey,
76
+ payload: encode(request.payload),
77
+ nonce: randomNonce(),
78
+ expires_at: getNonceExpiration(),
79
+ };
80
+ const hashedZomeCall = await hashZomeCall(unsignedZomeCallPayload);
81
+ const signature = nacl
82
+ .sign(hashedZomeCall, signingCredentialsForCell.keyPair.secretKey)
83
+ .subarray(0, nacl.sign.signatureLength);
84
+ const signedZomeCall = {
85
+ ...unsignedZomeCallPayload,
86
+ signature,
87
+ };
88
+ return signedZomeCall;
89
+ };
112
90
  //# sourceMappingURL=websocket.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"websocket.js","sourceRoot":"","sources":["../../../src/api/app/websocket.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"websocket.js","sourceRoot":"","sources":["../../../src/api/app/websocket.ts"],"names":[],"mappings":"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"}
@@ -2,15 +2,16 @@ import Emittery from "emittery";
2
2
  import { omit } from "lodash-es";
3
3
  import { getLauncherEnvironment } from "../../environments/launcher.js";
4
4
  import { getBaseRoleNameFromCloneId, isCloneId } from "../common.js";
5
+ import { CellType, } from "../index.js";
5
6
  function getPubKey(appInfo) {
6
7
  // This is fine for now cause `UseExisting` as a provisioning strategy doesn't work yet.
7
8
  // TODO: change this when AppInfo contains the `AgentPubKey` for this app, like `return appInfo.my_pub_key`
8
9
  for (const cells of Object.values(appInfo.cell_info)) {
9
10
  for (const cell of cells) {
10
- if ("Provisioned" in cell) {
11
+ if (CellType.Provisioned in cell) {
11
12
  return cell.Provisioned.cell_id[1];
12
13
  }
13
- else if ("Cloned" in cell) {
14
+ else if (CellType.Cloned in cell) {
14
15
  return cell.Cloned.cell_id[1];
15
16
  }
16
17
  }
@@ -60,11 +61,11 @@ export class AppAgentWebsocket {
60
61
  if (!(roleName in appInfo.cell_info)) {
61
62
  throw new Error(`No cell found with role_name ${roleName}`);
62
63
  }
63
- const cell = appInfo.cell_info[roleName].find((c) => "Provisioned" in c);
64
- if (!cell || !("Provisioned" in cell)) {
64
+ const cell = appInfo.cell_info[roleName].find((c) => CellType.Provisioned in c);
65
+ if (!cell || !(CellType.Provisioned in cell)) {
65
66
  throw new Error(`No provisioned cell found with role_name ${roleName}`);
66
67
  }
67
- return cell.Provisioned.cell_id;
68
+ return cell[CellType.Provisioned].cell_id;
68
69
  }
69
70
  async callZome(request, timeout) {
70
71
  if (!("provenance" in request)) {
@@ -1 +1 @@
1
- {"version":3,"file":"websocket.js","sourceRoot":"","sources":["../../../src/api/app-agent/websocket.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"websocket.js","sourceRoot":"","sources":["../../../src/api/app-agent/websocket.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ export { hashZomeCall } from "@holochain/serialization";
1
2
  export * from "./admin/index.js";
2
3
  export * from "./app-agent/index.js";
3
4
  export * from "./app/index.js";
package/lib/api/index.js CHANGED
@@ -1,3 +1,4 @@
1
+ export { hashZomeCall } from "@holochain/serialization";
1
2
  export * from "./admin/index.js";
2
3
  export * from "./app-agent/index.js";
3
4
  export * from "./app/index.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,sBAAsB,CAAC;AACrC,cAAc,gBAAgB,CAAC;AAC/B,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AACtC,cAAc,wBAAwB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,cAAc,kBAAkB,CAAC;AACjC,cAAc,sBAAsB,CAAC;AACrC,cAAc,gBAAgB,CAAC;AAC/B,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AACtC,cAAc,wBAAwB,CAAC"}
@@ -1,25 +1,37 @@
1
1
  import nacl from "tweetnacl";
2
2
  import { CapSecret } from "../hdk/capabilities.js";
3
3
  import { AgentPubKey, CellId } from "../types.js";
4
- import { FunctionName, ZomeName } from "./admin/types.js";
5
- import { AdminWebsocket } from "./admin/websocket.js";
4
+ export declare type Nonce256Bit = Uint8Array;
5
+ interface SigningCredentials {
6
+ capSecret: CapSecret;
7
+ keyPair: nacl.SignKeyPair;
8
+ signingKey: AgentPubKey;
9
+ }
6
10
  /**
7
- * Generate and authorize a new key pair for signing zome calls.
11
+ * Get credentials for signing zome calls.
8
12
  *
9
- * @param adminWs - An admin websocket connection to use for granting a
10
- * capability for signing.
11
- * @param cellId - The cell id to create the capability grant for.
12
- * @param functions - Zomes and functions to authorize the signing key for.
13
+ * @param cellId - Cell id to get credentials of.
14
+ * @returns The keys and cap secret required for signing a zome call.
13
15
  */
14
- export declare const authorizeSigningCredentials: (adminWs: Pick<AdminWebsocket, "grantZomeCallCapability">, cellId: CellId, functions: [ZomeName, FunctionName][]) => Promise<void>;
16
+ export declare const getSigningCredentials: (cellId: CellId) => SigningCredentials | undefined;
15
17
  /**
16
- * Get properties for signing a zome call made to a cell.
18
+ * Set credentials for signing zome calls.
17
19
  *
18
- * @param cellId - Cell id to be called.
19
- * @returns The keys and cap secret required for signing a zome call.
20
+ * @param cellId - Cell id to set credentials for.
21
+ * @param cellId - Cell id to set credentials for.
20
22
  */
21
- export declare const getSigningCredentials: (cellId: CellId) => {
22
- capSecret: CapSecret;
23
- keyPair: nacl.SignKeyPair;
24
- signingKey: AgentPubKey;
25
- } | undefined;
23
+ export declare const setSigningCredentials: (cellId: CellId, credentials: SigningCredentials) => void;
24
+ /**
25
+ * Generates a key pair for signing zome calls.
26
+ *
27
+ * @returns The signing key pair and an agent pub key based on the public key.
28
+ */
29
+ export declare const generateSigningKeyPair: () => [
30
+ nacl.SignKeyPair,
31
+ AgentPubKey
32
+ ];
33
+ export declare const randomCapSecret: () => CapSecret;
34
+ export declare const randomNonce: () => Nonce256Bit;
35
+ export declare const randomByteArray: (length: number) => Uint8Array;
36
+ export declare const getNonceExpiration: () => number;
37
+ export {};
@@ -1,28 +1,48 @@
1
+ import crypto from "crypto";
2
+ import nacl from "tweetnacl";
1
3
  import { encodeHashToBase64 } from "../utils/base64.js";
2
- import { generateSigningKeyPair, grantSigningKey } from "./app/util.js";
3
- const signingProps = new Map();
4
+ const signingCredentials = new Map();
4
5
  /**
5
- * Generate and authorize a new key pair for signing zome calls.
6
+ * Get credentials for signing zome calls.
6
7
  *
7
- * @param adminWs - An admin websocket connection to use for granting a
8
- * capability for signing.
9
- * @param cellId - The cell id to create the capability grant for.
10
- * @param functions - Zomes and functions to authorize the signing key for.
8
+ * @param cellId - Cell id to get credentials of.
9
+ * @returns The keys and cap secret required for signing a zome call.
11
10
  */
12
- export const authorizeSigningCredentials = async (adminWs, cellId, functions) => {
13
- const [keyPair, signingKey] = generateSigningKeyPair();
14
- const capSecret = await grantSigningKey(adminWs, cellId, functions, signingKey);
15
- const cellIdBase64 = encodeHashToBase64(cellId[0]).concat(encodeHashToBase64(cellId[1]));
16
- signingProps.set(cellIdBase64, { capSecret, keyPair, signingKey });
11
+ export const getSigningCredentials = (cellId) => {
12
+ const cellIdB64 = encodeHashToBase64(cellId[0]).concat(encodeHashToBase64(cellId[1]));
13
+ return signingCredentials.get(cellIdB64);
17
14
  };
18
15
  /**
19
- * Get properties for signing a zome call made to a cell.
16
+ * Set credentials for signing zome calls.
20
17
  *
21
- * @param cellId - Cell id to be called.
22
- * @returns The keys and cap secret required for signing a zome call.
18
+ * @param cellId - Cell id to set credentials for.
19
+ * @param cellId - Cell id to set credentials for.
23
20
  */
24
- export const getSigningCredentials = (cellId) => {
21
+ export const setSigningCredentials = (cellId, credentials) => {
25
22
  const cellIdB64 = encodeHashToBase64(cellId[0]).concat(encodeHashToBase64(cellId[1]));
26
- return signingProps.get(cellIdB64);
23
+ signingCredentials.set(cellIdB64, credentials);
24
+ };
25
+ /**
26
+ * Generates a key pair for signing zome calls.
27
+ *
28
+ * @returns The signing key pair and an agent pub key based on the public key.
29
+ */
30
+ export const generateSigningKeyPair = () => {
31
+ const keyPair = nacl.sign.keyPair();
32
+ const signingKey = new Uint8Array([132, 32, 36].concat(...keyPair.publicKey).concat(...[0, 0, 0, 0]));
33
+ return [keyPair, signingKey];
34
+ };
35
+ export const randomCapSecret = () => randomByteArray(64);
36
+ export const randomNonce = () => randomByteArray(32);
37
+ export const randomByteArray = (length) => {
38
+ if (typeof window !== "undefined" &&
39
+ "crypto" in window &&
40
+ "getRandomValues" in window.crypto) {
41
+ return window.crypto.getRandomValues(new Uint8Array(length));
42
+ }
43
+ else {
44
+ return new Uint8Array(crypto.randomBytes(length));
45
+ }
27
46
  };
47
+ export const getNonceExpiration = () => (Date.now() + 5 * 60 * 1000) * 1000; // 5 mins from now in microseconds
28
48
  //# sourceMappingURL=zome-call-signing.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"zome-call-signing.js","sourceRoot":"","sources":["../../src/api/zome-call-signing.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAGxD,OAAO,EAAE,sBAAsB,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAExE,MAAM,YAAY,GAOd,IAAI,GAAG,EAAE,CAAC;AAEd;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,KAAK,EAC9C,OAAwD,EACxD,MAAc,EACd,SAAqC,EACrC,EAAE;IACF,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,sBAAsB,EAAE,CAAC;IACvD,MAAM,SAAS,GAAG,MAAM,eAAe,CACrC,OAAO,EACP,MAAM,EACN,SAAS,EACT,UAAU,CACX,CAAC;IACF,MAAM,YAAY,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CACvD,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAC9B,CAAC;IACF,YAAY,CAAC,GAAG,CAAC,YAAY,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,CAAC;AACrE,CAAC,CAAC;AAEF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,MAAc,EAAE,EAAE;IACtD,MAAM,SAAS,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CACpD,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAC9B,CAAC;IACF,OAAO,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;AACrC,CAAC,CAAC"}
1
+ {"version":3,"file":"zome-call-signing.js","sourceRoot":"","sources":["../../src/api/zome-call-signing.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,IAAI,MAAM,WAAW,CAAC;AAG7B,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAUxD,MAAM,kBAAkB,GAAoC,IAAI,GAAG,EAAE,CAAC;AAEtE;;;;;GAKG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,MAAc,EAAE,EAAE;IACtD,MAAM,SAAS,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CACpD,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAC9B,CAAC;IACF,OAAO,kBAAkB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;AAC3C,CAAC,CAAC;AAEF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CACnC,MAAc,EACd,WAA+B,EAC/B,EAAE;IACF,MAAM,SAAS,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CACpD,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAC9B,CAAC;IACF,kBAAkB,CAAC,GAAG,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;AACjD,CAAC,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAG/B,GAAG,EAAE;IACP,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;IACpC,MAAM,UAAU,GAAG,IAAI,UAAU,CAC/B,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CACnE,CAAC;IACF,OAAO,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;AAC/B,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAoB,GAAG,EAAE,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;AAE1E,MAAM,CAAC,MAAM,WAAW,GAAsB,GAAG,EAAE,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;AAExE,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,MAAc,EAAE,EAAE;IAChD,IACE,OAAO,MAAM,KAAK,WAAW;QAC7B,QAAQ,IAAI,MAAM;QAClB,iBAAiB,IAAI,MAAM,CAAC,MAAM,EAClC;QACA,OAAO,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;KAC9D;SAAM;QACL,OAAO,IAAI,UAAU,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;KACnD;AACH,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAAG,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,kCAAkC"}
@@ -1,4 +1,5 @@
1
1
  import { InstalledAppId } from "../types.js";
2
+ import { CallZomeRequest, CallZomeRequestSigned } from "../api/index.js";
2
3
  export interface LauncherEnvironment {
3
4
  APP_INTERFACE_PORT: number;
4
5
  ADMIN_INTERFACE_PORT: number;
@@ -12,4 +13,5 @@ declare global {
12
13
  [__HC_LAUNCHER_ENV__]: LauncherEnvironment | undefined;
13
14
  }
14
15
  }
16
+ export declare const signZomeCallTauri: (request: CallZomeRequest) => Promise<CallZomeRequestSigned>;
15
17
  export {};
@@ -1,4 +1,34 @@
1
+ import { invoke } from "@tauri-apps/api/tauri";
2
+ import { getNonceExpiration, randomNonce, } from "../api/index.js";
3
+ import { encode } from "@msgpack/msgpack";
1
4
  const __HC_LAUNCHER_ENV__ = "__HC_LAUNCHER_ENV__";
2
5
  export const isLauncher = typeof window === "object" && __HC_LAUNCHER_ENV__ in window;
3
6
  export const getLauncherEnvironment = () => isLauncher ? window[__HC_LAUNCHER_ENV__] : undefined;
7
+ export const signZomeCallTauri = async (request) => {
8
+ const zomeCallUnsigned = {
9
+ provenance: Array.from(request.provenance),
10
+ cell_id: [Array.from(request.cell_id[0]), Array.from(request.cell_id[1])],
11
+ zome_name: request.zome_name,
12
+ fn_name: request.fn_name,
13
+ payload: Array.from(encode(request.payload)),
14
+ nonce: Array.from(randomNonce()),
15
+ expires_at: getNonceExpiration(),
16
+ };
17
+ const signedZomeCallTauri = await invoke("sign_zome_call", { zomeCallUnsigned });
18
+ const signedZomeCall = {
19
+ provenance: Uint8Array.from(signedZomeCallTauri.provenance),
20
+ cap_secret: null,
21
+ cell_id: [
22
+ Uint8Array.from(signedZomeCallTauri.cell_id[0]),
23
+ Uint8Array.from(signedZomeCallTauri.cell_id[1]),
24
+ ],
25
+ zome_name: signedZomeCallTauri.zome_name,
26
+ fn_name: signedZomeCallTauri.fn_name,
27
+ payload: Uint8Array.from(signedZomeCallTauri.payload),
28
+ signature: Uint8Array.from(signedZomeCallTauri.signature),
29
+ expires_at: signedZomeCallTauri.expires_at,
30
+ nonce: Uint8Array.from(signedZomeCallTauri.nonce),
31
+ };
32
+ return signedZomeCall;
33
+ };
4
34
  //# sourceMappingURL=launcher.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"launcher.js","sourceRoot":"","sources":["../../src/environments/launcher.ts"],"names":[],"mappings":"AAQA,MAAM,mBAAmB,GAAG,qBAAqB,CAAC;AAElD,MAAM,CAAC,MAAM,UAAU,GACrB,OAAO,MAAM,KAAK,QAAQ,IAAI,mBAAmB,IAAI,MAAM,CAAC;AAE9D,MAAM,CAAC,MAAM,sBAAsB,GAAG,GAAoC,EAAE,CAC1E,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC"}
1
+ {"version":3,"file":"launcher.js","sourceRoot":"","sources":["../../src/environments/launcher.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC/C,OAAO,EAIL,kBAAkB,EAClB,WAAW,GACZ,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAQ1C,MAAM,mBAAmB,GAAG,qBAAqB,CAAC;AAElD,MAAM,CAAC,MAAM,UAAU,GACrB,OAAO,MAAM,KAAK,QAAQ,IAAI,mBAAmB,IAAI,MAAM,CAAC;AAE9D,MAAM,CAAC,MAAM,sBAAsB,GAAG,GAAoC,EAAE,CAC1E,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AAgCvD,MAAM,CAAC,MAAM,iBAAiB,GAAG,KAAK,EAAE,OAAwB,EAAE,EAAE;IAClE,MAAM,gBAAgB,GAAiC;QACrD,UAAU,EAAE,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC;QAC1C,OAAO,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;QACzE,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAC5C,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;QAChC,UAAU,EAAE,kBAAkB,EAAE;KACjC,CAAC;IAEF,MAAM,mBAAmB,GAA+B,MAAM,MAAM,CAClE,gBAAgB,EAChB,EAAE,gBAAgB,EAAE,CACrB,CAAC;IAEF,MAAM,cAAc,GAA0B;QAC5C,UAAU,EAAE,UAAU,CAAC,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC;QAC3D,UAAU,EAAE,IAAI;QAChB,OAAO,EAAE;YACP,UAAU,CAAC,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YAC/C,UAAU,CAAC,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;SAChD;QACD,SAAS,EAAE,mBAAmB,CAAC,SAAS;QACxC,OAAO,EAAE,mBAAmB,CAAC,OAAO;QACpC,OAAO,EAAE,UAAU,CAAC,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC;QACrD,SAAS,EAAE,UAAU,CAAC,IAAI,CAAC,mBAAmB,CAAC,SAAS,CAAC;QACzD,UAAU,EAAE,mBAAmB,CAAC,UAAU;QAC1C,KAAK,EAAE,UAAU,CAAC,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC;KAClD,CAAC;IAEF,OAAO,cAAc,CAAC;AACxB,CAAC,CAAC"}
@@ -6,10 +6,19 @@ export interface CapClaim {
6
6
  grantor: AgentPubKey;
7
7
  secret: CapSecret;
8
8
  }
9
+ export declare enum GrantedFunctionsType {
10
+ All = "All",
11
+ Listed = "Listed"
12
+ }
13
+ export declare type GrantedFunctions = {
14
+ [GrantedFunctionsType.All]: null;
15
+ } | {
16
+ [GrantedFunctionsType.Listed]: [ZomeName, FunctionName][];
17
+ };
9
18
  export interface ZomeCallCapGrant {
10
19
  tag: string;
11
20
  access: CapAccess;
12
- functions: Array<[ZomeName, FunctionName]>;
21
+ functions: GrantedFunctions;
13
22
  }
14
23
  export declare type CapAccess = "Unrestricted" | {
15
24
  Transferable: {
@@ -1,2 +1,6 @@
1
- export {};
1
+ export var GrantedFunctionsType;
2
+ (function (GrantedFunctionsType) {
3
+ GrantedFunctionsType["All"] = "All";
4
+ GrantedFunctionsType["Listed"] = "Listed";
5
+ })(GrantedFunctionsType || (GrantedFunctionsType = {}));
2
6
  //# sourceMappingURL=capabilities.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"capabilities.js","sourceRoot":"","sources":["../../src/hdk/capabilities.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"capabilities.js","sourceRoot":"","sources":["../../src/hdk/capabilities.ts"],"names":[],"mappings":"AAWA,MAAM,CAAN,IAAY,oBAGX;AAHD,WAAY,oBAAoB;IAC9B,mCAAW,CAAA;IACX,yCAAiB,CAAA;AACnB,CAAC,EAHW,oBAAoB,KAApB,oBAAoB,QAG/B"}
@@ -1,4 +1,4 @@
1
- import { randomByteArray } from "../api/app/util.js";
1
+ import { randomByteArray } from "../api/zome-call-signing.js";
2
2
  /** From https://github.com/holochain/holochain/blob/develop/crates/holo_hash/src/hash_type/primitive.rs */
3
3
  export function fakeEntryHash() {
4
4
  return new Uint8Array([0x84, 0x21, 0x24, ...randomByteArray(36)]);
@@ -1 +1 @@
1
- {"version":3,"file":"fake-hash.js","sourceRoot":"","sources":["../../src/utils/fake-hash.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAGrD,2GAA2G;AAC3G,MAAM,UAAU,aAAa;IAC3B,OAAO,IAAI,UAAU,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,eAAe,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACpE,CAAC;AAED,MAAM,UAAU,eAAe;IAC7B,OAAO,IAAI,UAAU,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,eAAe,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACpE,CAAC;AAED,MAAM,UAAU,cAAc;IAC5B,OAAO,IAAI,UAAU,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,eAAe,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACpE,CAAC"}
1
+ {"version":3,"file":"fake-hash.js","sourceRoot":"","sources":["../../src/utils/fake-hash.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAG9D,2GAA2G;AAC3G,MAAM,UAAU,aAAa;IAC3B,OAAO,IAAI,UAAU,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,eAAe,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACpE,CAAC;AAED,MAAM,UAAU,eAAe;IAC7B,OAAO,IAAI,UAAU,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,eAAe,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACpE,CAAC;AAED,MAAM,UAAU,cAAc;IAC5B,OAAO,IAAI,UAAU,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,eAAe,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACpE,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@holochain/client",
3
- "version": "0.11.7",
3
+ "version": "0.11.9",
4
4
  "description": "A JavaScript client for the Holochain Conductor API",
5
5
  "author": "Holochain Foundation <info@holochain.org> (http://holochain.org)",
6
6
  "license": "CAL-1.0",
@@ -39,7 +39,7 @@
39
39
  "build": "rimraf ./lib && tsc -p tsconfig.build.json"
40
40
  },
41
41
  "dependencies": {
42
- "@holochain/serialization": "^0.1.0-beta-rc.2",
42
+ "@holochain/serialization": "^0.1.0-beta-rc.3",
43
43
  "@msgpack/msgpack": "^2.7.2",
44
44
  "@tauri-apps/api": "^1.2.0",
45
45
  "emittery": "^1.0.1",
@@ -1,23 +0,0 @@
1
- import nacl from "tweetnacl";
2
- import { CapSecret } from "../../hdk/capabilities.js";
3
- import { AgentPubKey, CellId } from "../../types.js";
4
- import { FunctionName, ZomeName } from "../admin/types.js";
5
- import { AdminWebsocket } from "../admin/websocket.js";
6
- import { CallZomeRequest } from "./types.js";
7
- import { CallZomeRequestSigned, Nonce256Bit } from "./websocket.js";
8
- /**
9
- * Generates a key pair for signing zome calls.
10
- *
11
- * @returns The signing key pair and an agent pub key based on the public key.
12
- */
13
- export declare const generateSigningKeyPair: () => [
14
- nacl.SignKeyPair,
15
- AgentPubKey
16
- ];
17
- export declare const randomCapSecret: () => CapSecret;
18
- export declare const randomNonce: () => Nonce256Bit;
19
- export declare const randomByteArray: (length: number) => Uint8Array;
20
- export declare const getNonceExpiration: () => number;
21
- export declare const grantSigningKey: (admin: Pick<AdminWebsocket, "grantZomeCallCapability">, cellId: CellId, functions: Array<[ZomeName, FunctionName]>, signingKey: AgentPubKey) => Promise<CapSecret>;
22
- export declare const signZomeCall: (capSecret: CapSecret, signingKey: AgentPubKey, keyPair: nacl.SignKeyPair, request: CallZomeRequest) => Promise<CallZomeRequestSigned>;
23
- export declare const grantSigningKeyAndSignZomeCall: (admin: AdminWebsocket, payload: any) => Promise<CallZomeRequestSigned>;
@@ -1,73 +0,0 @@
1
- import { hashZomeCall } from "@holochain/serialization";
2
- import { encode } from "@msgpack/msgpack";
3
- import crypto from "crypto";
4
- import nacl from "tweetnacl";
5
- /**
6
- * Generates a key pair for signing zome calls.
7
- *
8
- * @returns The signing key pair and an agent pub key based on the public key.
9
- */
10
- export const generateSigningKeyPair = () => {
11
- const keyPair = nacl.sign.keyPair();
12
- const signingKey = new Uint8Array([132, 32, 36].concat(...keyPair.publicKey).concat(...[0, 0, 0, 0]));
13
- return [keyPair, signingKey];
14
- };
15
- export const randomCapSecret = () => randomByteArray(64);
16
- export const randomNonce = () => randomByteArray(32);
17
- export const randomByteArray = (length) => {
18
- if (typeof window !== "undefined" &&
19
- "crypto" in window &&
20
- "getRandomValues" in window.crypto) {
21
- return window.crypto.getRandomValues(new Uint8Array(length));
22
- }
23
- else {
24
- return new Uint8Array(crypto.randomBytes(length));
25
- }
26
- };
27
- export const getNonceExpiration = () => (Date.now() + 5 * 60 * 1000) * 1000; // 5 mins from now in microseconds
28
- export const grantSigningKey = async (admin, cellId, functions, signingKey) => {
29
- const capSecret = randomCapSecret();
30
- await admin.grantZomeCallCapability({
31
- cell_id: cellId,
32
- cap_grant: {
33
- tag: "zome-call-signing-key",
34
- functions,
35
- access: {
36
- Assigned: {
37
- secret: capSecret,
38
- assignees: [signingKey],
39
- },
40
- },
41
- },
42
- });
43
- return capSecret;
44
- };
45
- export const signZomeCall = async (capSecret, signingKey, keyPair, request) => {
46
- const unsignedZomeCallPayload = {
47
- cap_secret: capSecret,
48
- cell_id: request.cell_id,
49
- zome_name: request.zome_name,
50
- fn_name: request.fn_name,
51
- provenance: signingKey,
52
- payload: encode(request.payload),
53
- nonce: randomNonce(),
54
- expires_at: getNonceExpiration(),
55
- };
56
- const hashedZomeCall = await hashZomeCall(unsignedZomeCallPayload);
57
- const signature = nacl
58
- .sign(hashedZomeCall, keyPair.secretKey)
59
- .subarray(0, nacl.sign.signatureLength);
60
- const signedZomeCall = {
61
- ...unsignedZomeCallPayload,
62
- signature,
63
- };
64
- return signedZomeCall;
65
- };
66
- export const grantSigningKeyAndSignZomeCall = async (admin, payload) => {
67
- const [keyPair, signingKey] = generateSigningKeyPair();
68
- const capSecret = await grantSigningKey(admin, payload.cell_id, [[payload.zome_name, payload.fn_name]], signingKey);
69
- payload = { ...payload, cap_secret: capSecret };
70
- const signedZomeCall = signZomeCall(capSecret, signingKey, keyPair, payload);
71
- return signedZomeCall;
72
- };
73
- //# sourceMappingURL=util.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"util.js","sourceRoot":"","sources":["../../../src/api/app/util.ts"],"names":[],"mappings":"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"}