@multiplatform.one/gpg 7.17.0 → 7.19.0

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.
Files changed (59) hide show
  1. package/dist/cjs/GpgIcon.cjs +55 -0
  2. package/dist/cjs/GpgIcon.native.js +72 -0
  3. package/dist/cjs/GpgIcon.native.js.map +1 -0
  4. package/dist/cjs/GpgProvider.cjs +7 -4
  5. package/dist/cjs/GpgProvider.native.js +7 -4
  6. package/dist/cjs/GpgProvider.native.js.map +1 -1
  7. package/dist/cjs/index.cjs +7 -1
  8. package/dist/cjs/index.native.js +7 -1
  9. package/dist/cjs/index.native.js.map +1 -1
  10. package/dist/cjs/screens.cjs +9 -2
  11. package/dist/cjs/screens.native.js +15 -2
  12. package/dist/cjs/screens.native.js.map +1 -1
  13. package/dist/cjs/signature.cjs +113 -0
  14. package/dist/cjs/signature.native.js +124 -0
  15. package/dist/cjs/signature.native.js.map +1 -0
  16. package/dist/cjs/signer.cjs +119 -0
  17. package/dist/cjs/signer.native.js +150 -0
  18. package/dist/cjs/signer.native.js.map +1 -0
  19. package/dist/esm/GpgIcon.mjs +30 -0
  20. package/dist/esm/GpgIcon.mjs.map +1 -0
  21. package/dist/esm/GpgIcon.native.js +33 -0
  22. package/dist/esm/GpgIcon.native.js.map +1 -0
  23. package/dist/esm/GpgProvider.mjs +7 -4
  24. package/dist/esm/GpgProvider.mjs.map +1 -1
  25. package/dist/esm/GpgProvider.native.js +7 -4
  26. package/dist/esm/GpgProvider.native.js.map +1 -1
  27. package/dist/esm/index.mjs +2 -1
  28. package/dist/esm/index.mjs.map +1 -1
  29. package/dist/esm/index.native.js +2 -1
  30. package/dist/esm/index.native.js.map +1 -1
  31. package/dist/esm/screens.mjs +9 -2
  32. package/dist/esm/screens.mjs.map +1 -1
  33. package/dist/esm/screens.native.js +15 -2
  34. package/dist/esm/screens.native.js.map +1 -1
  35. package/dist/esm/signature.mjs +88 -0
  36. package/dist/esm/signature.mjs.map +1 -0
  37. package/dist/esm/signature.native.js +96 -0
  38. package/dist/esm/signature.native.js.map +1 -0
  39. package/dist/esm/signer.mjs +88 -0
  40. package/dist/esm/signer.mjs.map +1 -0
  41. package/dist/esm/signer.native.js +116 -0
  42. package/dist/esm/signer.native.js.map +1 -0
  43. package/package.json +16 -3
  44. package/src/GpgIcon.tsx +20 -0
  45. package/src/GpgProvider.tsx +7 -19
  46. package/src/index.ts +10 -1
  47. package/src/screens.tsx +11 -1
  48. package/src/signature.ts +120 -0
  49. package/src/signer.ts +142 -0
  50. package/types/GpgIcon.d.ts +3 -0
  51. package/types/GpgIcon.d.ts.map +1 -0
  52. package/types/GpgProvider.d.ts.map +1 -1
  53. package/types/index.d.ts +1 -0
  54. package/types/index.d.ts.map +1 -1
  55. package/types/screens.d.ts.map +1 -1
  56. package/types/signature.d.ts +6 -0
  57. package/types/signature.d.ts.map +1 -0
  58. package/types/signer.d.ts +47 -0
  59. package/types/signer.d.ts.map +1 -0
@@ -0,0 +1,119 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
+ var __getOwnPropNames = Object.getOwnPropertyNames;
4
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
5
+ var __export = (target, all) => {
6
+ for (var name in all) __defProp(target, name, {
7
+ get: all[name],
8
+ enumerable: true
9
+ });
10
+ };
11
+ var __copyProps = (to, from, except, desc) => {
12
+ if (from && typeof from === "object" || typeof from === "function") {
13
+ for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
14
+ get: () => from[key],
15
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
16
+ });
17
+ }
18
+ return to;
19
+ };
20
+ var __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
21
+ value: true
22
+ }), mod);
23
+ var signer_exports = {};
24
+ __export(signer_exports, {
25
+ GPG_PUBLIC_KEY_BEGIN: () => GPG_PUBLIC_KEY_BEGIN,
26
+ GPG_SIGNATURE_BEGIN: () => GPG_SIGNATURE_BEGIN,
27
+ assertGpgSignature: () => assertGpgSignature,
28
+ createGpgSigner: () => createGpgSigner,
29
+ gpgSignCommand: () => gpgSignCommand,
30
+ gpgSignatureCovers: () => import_signature2.gpgSignatureCovers,
31
+ useGpgSigner: () => useGpgSigner
32
+ });
33
+ module.exports = __toCommonJS(signer_exports);
34
+ var import_react = require("react");
35
+ var import_signature = require("./signature.cjs");
36
+ var import_signature2 = require("./signature.cjs");
37
+ const GPG_SIGNATURE_BEGIN = "-----BEGIN PGP SIGNATURE-----";
38
+ const GPG_PUBLIC_KEY_BEGIN = "-----BEGIN PGP PUBLIC KEY BLOCK-----";
39
+ function gpgSignCommand(message) {
40
+ return `{ printf %s '${message.replace(/'/g, "'\\''")}' | gpg --detach-sign --armor; gpg --armor --export; }`;
41
+ }
42
+ function assertGpgSignature(blob) {
43
+ const trimmed = blob.trim();
44
+ if (!trimmed.includes(GPG_SIGNATURE_BEGIN) || !trimmed.includes(GPG_PUBLIC_KEY_BEGIN)) {
45
+ throw new Error("Paste the FULL output \u2014 it must contain both a PGP SIGNATURE and a PUBLIC KEY block.");
46
+ }
47
+ return trimmed;
48
+ }
49
+ function createGpgSigner() {
50
+ let pending = null;
51
+ let settle = null;
52
+ const listeners = /* @__PURE__ */new Set();
53
+ const emit = () => {
54
+ for (const listener of listeners) listener();
55
+ };
56
+ const signer = {
57
+ family: "gpg",
58
+ address: null,
59
+ capabilities: ["signMessage"],
60
+ get pending() {
61
+ return pending;
62
+ },
63
+ signMessage(message) {
64
+ settle?.reject(new Error("GPG signing was superseded by a newer request"));
65
+ return new Promise((resolve, reject) => {
66
+ settle = {
67
+ resolve,
68
+ reject
69
+ };
70
+ pending = {
71
+ message,
72
+ command: gpgSignCommand(message)
73
+ };
74
+ emit();
75
+ });
76
+ },
77
+ submit(blob, request) {
78
+ if (!settle || !pending) throw new Error("No GPG signature was requested");
79
+ if (request !== pending) {
80
+ throw new Error("That GPG request was superseded; run the current command and paste its output");
81
+ }
82
+ const signature = assertGpgSignature(blob);
83
+ if (!(0, import_signature.gpgSignatureCovers)(signature, pending.message)) {
84
+ throw new Error("That signature is over a different message; run the current command and paste its output");
85
+ }
86
+ const {
87
+ resolve
88
+ } = settle;
89
+ settle = null;
90
+ pending = null;
91
+ emit();
92
+ resolve(signature);
93
+ },
94
+ cancel(reason) {
95
+ if (!settle) return;
96
+ const {
97
+ reject
98
+ } = settle;
99
+ settle = null;
100
+ pending = null;
101
+ emit();
102
+ reject(reason ?? new Error("GPG signing was cancelled"));
103
+ },
104
+ subscribe(listener) {
105
+ listeners.add(listener);
106
+ return () => listeners.delete(listener);
107
+ }
108
+ };
109
+ return signer;
110
+ }
111
+ function useGpgSigner(signer = defaultSigner()) {
112
+ (0, import_react.useSyncExternalStore)(signer.subscribe, () => signer.pending, () => signer.pending);
113
+ return signer;
114
+ }
115
+ let sharedSigner = null;
116
+ function defaultSigner() {
117
+ sharedSigner ??= createGpgSigner();
118
+ return sharedSigner;
119
+ }
@@ -0,0 +1,150 @@
1
+ "use strict";
2
+
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __export = (target, all) => {
8
+ for (var name in all) __defProp(target, name, {
9
+ get: all[name],
10
+ enumerable: true
11
+ });
12
+ };
13
+ var __copyProps = (to, from, except, desc) => {
14
+ if (from && typeof from === "object" || typeof from === "function") {
15
+ for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
16
+ get: () => from[key],
17
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
18
+ });
19
+ }
20
+ return to;
21
+ };
22
+ var __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
23
+ value: true
24
+ }), mod);
25
+ var signer_exports = {};
26
+ __export(signer_exports, {
27
+ GPG_PUBLIC_KEY_BEGIN: () => GPG_PUBLIC_KEY_BEGIN,
28
+ GPG_SIGNATURE_BEGIN: () => GPG_SIGNATURE_BEGIN,
29
+ assertGpgSignature: () => assertGpgSignature,
30
+ createGpgSigner: () => createGpgSigner,
31
+ gpgSignCommand: () => gpgSignCommand,
32
+ gpgSignatureCovers: () => import_signature2.gpgSignatureCovers,
33
+ useGpgSigner: () => useGpgSigner
34
+ });
35
+ module.exports = __toCommonJS(signer_exports);
36
+ var import_react = require("react");
37
+ var import_signature = require("./signature.native.js");
38
+ var import_signature2 = require("./signature.native.js");
39
+ var GPG_SIGNATURE_BEGIN = "-----BEGIN PGP SIGNATURE-----";
40
+ var GPG_PUBLIC_KEY_BEGIN = "-----BEGIN PGP PUBLIC KEY BLOCK-----";
41
+ function gpgSignCommand(message) {
42
+ return `{ printf %s '${message.replace(/'/g, "'\\''")}' | gpg --detach-sign --armor; gpg --armor --export; }`;
43
+ }
44
+ function assertGpgSignature(blob) {
45
+ var trimmed = blob.trim();
46
+ if (!trimmed.includes(GPG_SIGNATURE_BEGIN) || !trimmed.includes(GPG_PUBLIC_KEY_BEGIN)) {
47
+ throw new Error("Paste the FULL output \u2014 it must contain both a PGP SIGNATURE and a PUBLIC KEY block.");
48
+ }
49
+ return trimmed;
50
+ }
51
+ function createGpgSigner() {
52
+ var pending = null;
53
+ var settle = null;
54
+ var listeners = /* @__PURE__ */new Set();
55
+ var emit = function emit2() {
56
+ var _iteratorNormalCompletion = true,
57
+ _didIteratorError = false,
58
+ _iteratorError = void 0;
59
+ try {
60
+ for (var _iterator = listeners[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
61
+ var listener = _step.value;
62
+ listener();
63
+ }
64
+ } catch (err) {
65
+ _didIteratorError = true;
66
+ _iteratorError = err;
67
+ } finally {
68
+ try {
69
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
70
+ _iterator.return();
71
+ }
72
+ } finally {
73
+ if (_didIteratorError) {
74
+ throw _iteratorError;
75
+ }
76
+ }
77
+ }
78
+ };
79
+ var signer = {
80
+ family: "gpg",
81
+ address: null,
82
+ capabilities: ["signMessage"],
83
+ get pending() {
84
+ return pending;
85
+ },
86
+ signMessage(message) {
87
+ settle === null || settle === void 0 ? void 0 : settle.reject(new Error("GPG signing was superseded by a newer request"));
88
+ return new Promise(function (resolve, reject) {
89
+ settle = {
90
+ resolve,
91
+ reject
92
+ };
93
+ pending = {
94
+ message,
95
+ command: gpgSignCommand(message)
96
+ };
97
+ emit();
98
+ });
99
+ },
100
+ submit(blob, request) {
101
+ if (!settle || !pending) throw new Error("No GPG signature was requested");
102
+ if (request !== pending) {
103
+ throw new Error("That GPG request was superseded; run the current command and paste its output");
104
+ }
105
+ var signature = assertGpgSignature(blob);
106
+ if (!(0, import_signature.gpgSignatureCovers)(signature, pending.message)) {
107
+ throw new Error("That signature is over a different message; run the current command and paste its output");
108
+ }
109
+ var {
110
+ resolve
111
+ } = settle;
112
+ settle = null;
113
+ pending = null;
114
+ emit();
115
+ resolve(signature);
116
+ },
117
+ cancel(reason) {
118
+ if (!settle) return;
119
+ var {
120
+ reject
121
+ } = settle;
122
+ settle = null;
123
+ pending = null;
124
+ emit();
125
+ reject(reason !== null && reason !== void 0 ? reason : new Error("GPG signing was cancelled"));
126
+ },
127
+ subscribe(listener) {
128
+ listeners.add(listener);
129
+ return function () {
130
+ return listeners.delete(listener);
131
+ };
132
+ }
133
+ };
134
+ return signer;
135
+ }
136
+ function useGpgSigner() {
137
+ var signer = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : defaultSigner();
138
+ (0, import_react.useSyncExternalStore)(signer.subscribe, function () {
139
+ return signer.pending;
140
+ }, function () {
141
+ return signer.pending;
142
+ });
143
+ return signer;
144
+ }
145
+ var sharedSigner = null;
146
+ function defaultSigner() {
147
+ sharedSigner !== null && sharedSigner !== void 0 ? sharedSigner : sharedSigner = createGpgSigner();
148
+ return sharedSigner;
149
+ }
150
+ //# sourceMappingURL=signer.native.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["__toCommonJS","mod","__copyProps","__defProp","value","signer_exports","__export","GPG_PUBLIC_KEY_BEGIN","GPG_SIGNATURE_BEGIN","assertGpgSignature","createGpgSigner","gpgSignCommand","gpgSignatureCovers","import_signature2","useGpgSigner","module","exports","import_react","require","import_signature","message","replace","blob","trimmed","trim","includes","Error","pending","settle","listeners","Set","emit","emit2","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_iterator","Symbol","iterator","_step","next","done","listener","err","return","signer","family","address","capabilities","signMessage","reject","Promise","resolve","command","submit","request","signature","cancel","reason"],"sources":["../../src/signer.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,30 @@
1
+ import { jsx, jsxs } from "react/jsx-runtime";
2
+ const GpgIcon = () => /* @__PURE__ */jsxs("svg", {
3
+ xmlns: "http://www.w3.org/2000/svg",
4
+ width: "100%",
5
+ height: "100%",
6
+ viewBox: "0 0 32 32",
7
+ "aria-hidden": "true",
8
+ children: [/* @__PURE__ */jsx("rect", {
9
+ width: "32",
10
+ height: "32",
11
+ fill: "#0093DD"
12
+ }), /* @__PURE__ */jsxs("g", {
13
+ fill: "none",
14
+ stroke: "#FFFFFF",
15
+ strokeWidth: "2.2",
16
+ strokeLinecap: "round",
17
+ strokeLinejoin: "round",
18
+ children: [/* @__PURE__ */jsx("circle", {
19
+ cx: "11.5",
20
+ cy: "19.5",
21
+ r: "4.5"
22
+ }), /* @__PURE__ */jsx("path", {
23
+ d: "m14.7 16.3 9.3-9.3"
24
+ }), /* @__PURE__ */jsx("path", {
25
+ d: "m20 11 3 3 2.5-2.5-3-3"
26
+ })]
27
+ })]
28
+ });
29
+ export { GpgIcon };
30
+ //# sourceMappingURL=GpgIcon.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["jsx","jsxs","GpgIcon","xmlns","width","height","viewBox","children","fill","stroke","strokeWidth","strokeLinecap","strokeLinejoin","cx","cy","r","d"],"sources":["../../src/GpgIcon.tsx"],"sourcesContent":[null],"mappings":"AAYI,SAAAA,GAAA,EACAC,IAAA,QADA;AARG,MAAMC,OAAA,GAAoBA,CAAA,KAC/B,eAAAD,IAAA,CAAC;EACCE,KAAA,EAAM;EACNC,KAAA,EAAM;EACNC,MAAA,EAAO;EACPC,OAAA,EAAQ;EACR,eAAY;EAEZC,QAAA,kBAAAP,GAAA,CAAC;IAAKI,KAAA,EAAM;IAAKC,MAAA,EAAO;IAAKG,IAAA,EAAK;EAAA,CAAU,GAC5C,eAAAP,IAAA,CAAC;IAAEO,IAAA,EAAK;IAAOC,MAAA,EAAO;IAAUC,WAAA,EAAY;IAAMC,aAAA,EAAc;IAAQC,cAAA,EAAe;IACrFL,QAAA,kBAAAP,GAAA,CAAC;MAAOa,EAAA,EAAG;MAAOC,EAAA,EAAG;MAAOC,CAAA,EAAE;IAAA,CAAM,GACpC,eAAAf,GAAA,CAAC;MAAKgB,CAAA,EAAE;IAAA,CAAqB,GAC7B,eAAAhB,GAAA,CAAC;MAAKgB,CAAA,EAAE;IAAA,CAAyB;EAAA,CACnC;AAAA,CACF","ignoreList":[]}
@@ -0,0 +1,33 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import React from "react";
3
+ var GpgIcon = function GpgIcon2() {
4
+ return /* @__PURE__ */_jsxs("svg", {
5
+ xmlns: "http://www.w3.org/2000/svg",
6
+ width: "100%",
7
+ height: "100%",
8
+ viewBox: "0 0 32 32",
9
+ "aria-hidden": "true",
10
+ children: [/* @__PURE__ */_jsx("rect", {
11
+ width: "32",
12
+ height: "32",
13
+ fill: "#0093DD"
14
+ }), /* @__PURE__ */_jsxs("g", {
15
+ fill: "none",
16
+ stroke: "#FFFFFF",
17
+ strokeWidth: "2.2",
18
+ strokeLinecap: "round",
19
+ strokeLinejoin: "round",
20
+ children: [/* @__PURE__ */_jsx("circle", {
21
+ cx: "11.5",
22
+ cy: "19.5",
23
+ r: "4.5"
24
+ }), /* @__PURE__ */_jsx("path", {
25
+ d: "m14.7 16.3 9.3-9.3"
26
+ }), /* @__PURE__ */_jsx("path", {
27
+ d: "m20 11 3 3 2.5-2.5-3-3"
28
+ })]
29
+ })]
30
+ });
31
+ };
32
+ export { GpgIcon };
33
+ //# sourceMappingURL=GpgIcon.native.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["jsx","_jsx","jsxs","_jsxs","React","GpgIcon","GpgIcon2","xmlns","width","height","viewBox","children","fill","stroke","strokeWidth"],"sources":["../../src/GpgIcon.tsx"],"sourcesContent":[null],"mappings":"AAYI,SAAAA,GAAA,IACAC,IAAA,EAAAC,IADA,IAAAC,KAAA;AARG,OAAMC,KAAA,MAAoB,OAC/B;AAAA,IAACC,OAAA,YAAAC,SAAA;EAAA,sBAAAH,KAAA;IACCI,KAAA,EAAM;IACNC,KAAA,EAAM;IACNC,MAAA,EAAO;IACPC,OAAA,EAAQ;IACR,eAAY;IAEZC,QAAA,kBAAAV,IAAC;MACDO,KAAA;MACEC,MAAA;MACAG,IAAA;IAA6B,EAC7B,EAAiC,eACnCT,KAAA;MAAAS,IAAA;MAAAC,MAAA;MACFC,WAAA","ignoreList":[]}
@@ -2,6 +2,7 @@ import { useContext, useMemo, useRef, useState } from "react";
2
2
  import { useQuery } from "@tanstack/react-query";
3
3
  import { Context as ConnectKitContext } from "@multiplatform.one/connectkit";
4
4
  import { GpgContext, GpgStatusState } from "./GpgContext.mjs";
5
+ import { assertGpgSignature, gpgSignCommand } from "./signer.mjs";
5
6
  import { jsx } from "react/jsx-runtime";
6
7
  const GPG_NONCE_QUERY_KEY = "ckGpgNonce";
7
8
  const b64 = s => window.btoa(unescape(encodeURIComponent(s)));
@@ -47,12 +48,14 @@ const GpgProvider = ({
47
48
  const message = useMemo(() => nonce.data ? (buildMessageRef.current ?? defaultBuildMessage)({
48
49
  nonce: nonce.data
49
50
  }) : null, [nonce.data]);
50
- const command = useMemo(() => message ? `{ printf %s '${message.replace(/'/g, "'\\''")}' | gpg --detach-sign --armor; gpg --armor --export; }` : null, [message]);
51
+ const command = useMemo(() => message ? gpgSignCommand(message) : null, [message]);
51
52
  const signIn = async pastedBlob => {
52
- const blob = pastedBlob.trim();
53
- if (!blob.includes("-----BEGIN PGP SIGNATURE-----") || !blob.includes("-----BEGIN PGP PUBLIC KEY BLOCK-----")) {
53
+ let blob;
54
+ try {
55
+ blob = assertGpgSignature(pastedBlob);
56
+ } catch (error) {
54
57
  setStatus(GpgStatusState.ERROR);
55
- throw new Error("Paste the FULL output \u2014 it must contain both a PGP SIGNATURE and a PUBLIC KEY block.");
58
+ throw error;
56
59
  }
57
60
  if (!message) {
58
61
  setStatus(GpgStatusState.ERROR);
@@ -1 +1 @@
1
- {"version":3,"names":["useContext","useMemo","useRef","useState","useQuery","Context","ConnectKitContext","GpgContext","GpgStatusState","jsx","GPG_NONCE_QUERY_KEY","b64","s","window","btoa","unescape","encodeURIComponent","defaultBuildMessage","nonce","location","host","origin","Date","toISOString","GpgProvider","children","enabled","nonceRefetchInterval","buildMessage","onSignIn","gpgConfig","status","setStatus","READY","resetStatus","Error","queryKey","queryFn","getNonce","refetchInterval","refetchOnWindowFocus","refetchOnReconnect","staleTime","Infinity","buildMessageRef","current","message","data","command","replace","signIn","pastedBlob","blob","trim","includes","ERROR","LOADING","result","onSign","username","password","SUCCESS","error","Provider","value"],"sources":["../../src/GpgProvider.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["useContext","useMemo","useRef","useState","useQuery","Context","ConnectKitContext","GpgContext","GpgStatusState","assertGpgSignature","gpgSignCommand","jsx","GPG_NONCE_QUERY_KEY","b64","s","window","btoa","unescape","encodeURIComponent","defaultBuildMessage","nonce","location","host","origin","Date","toISOString","GpgProvider","children","enabled","nonceRefetchInterval","buildMessage","onSignIn","gpgConfig","status","setStatus","READY","resetStatus","Error","queryKey","queryFn","getNonce","refetchInterval","refetchOnWindowFocus","refetchOnReconnect","staleTime","Infinity","buildMessageRef","current","message","data","command","signIn","pastedBlob","blob","error","ERROR","LOADING","result","onSign","username","password","SUCCESS","Provider","value"],"sources":["../../src/GpgProvider.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -3,6 +3,7 @@ import { useContext, useMemo, useRef, useState } from "react";
3
3
  import { useQuery } from "@tanstack/react-query";
4
4
  import { Context as ConnectKitContext } from "@multiplatform.one/connectkit";
5
5
  import { GpgContext, GpgStatusState } from "./GpgContext.native.js";
6
+ import { assertGpgSignature, gpgSignCommand } from "./signer.native.js";
6
7
  var GPG_NONCE_QUERY_KEY = "ckGpgNonce";
7
8
  var b64 = function b642(s) {
8
9
  return window.btoa(unescape(encodeURIComponent(s)));
@@ -59,13 +60,15 @@ var GpgProvider = function GpgProvider2(param) {
59
60
  }) : null;
60
61
  }, [nonce.data]);
61
62
  var command = useMemo(function () {
62
- return message ? `{ printf %s '${message.replace(/'/g, "'\\''")}' | gpg --detach-sign --armor; gpg --armor --export; }` : null;
63
+ return message ? gpgSignCommand(message) : null;
63
64
  }, [message]);
64
65
  var signIn = async function signIn2(pastedBlob) {
65
- var blob = pastedBlob.trim();
66
- if (!blob.includes("-----BEGIN PGP SIGNATURE-----") || !blob.includes("-----BEGIN PGP PUBLIC KEY BLOCK-----")) {
66
+ var blob;
67
+ try {
68
+ blob = assertGpgSignature(pastedBlob);
69
+ } catch (error) {
67
70
  setStatus(GpgStatusState.ERROR);
68
- throw new Error("Paste the FULL output \u2014 it must contain both a PGP SIGNATURE and a PUBLIC KEY block.");
71
+ throw error;
69
72
  }
70
73
  if (!message) {
71
74
  setStatus(GpgStatusState.ERROR);
@@ -1 +1 @@
1
- {"version":3,"names":["jsx","_jsx","useContext","useMemo","useRef","useState","useQuery","Context","ConnectKitContext","GpgContext","GpgStatusState","GPG_NONCE_QUERY_KEY","b64","b642","s","window","btoa","unescape","encodeURIComponent","defaultBuildMessage","param","nonce","location","host","origin","Date","toISOString","GpgProvider","GpgProvider2","children","enabled","nonceRefetchInterval","buildMessage","onSignIn","gpgConfig","status","setStatus","READY","resetStatus","resetStatus2","Error","queryKey","queryFn","getNonce","refetchInterval","refetchOnWindowFocus","refetchOnReconnect","staleTime","Infinity","buildMessageRef","current","message","_buildMessageRef_current","data","command","replace","signIn","signIn2","pastedBlob","blob","trim","includes","ERROR","LOADING","result","onSign","username","password","SUCCESS","error","Provider","value"],"sources":["../../src/GpgProvider.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["jsx","_jsx","useContext","useMemo","useRef","useState","useQuery","Context","ConnectKitContext","GpgContext","GpgStatusState","assertGpgSignature","gpgSignCommand","GPG_NONCE_QUERY_KEY","b64","b642","s","window","btoa","unescape","encodeURIComponent","defaultBuildMessage","param","nonce","location","host","origin","Date","toISOString","GpgProvider","GpgProvider2","children","enabled","nonceRefetchInterval","buildMessage","onSignIn","gpgConfig","status","setStatus","READY","resetStatus","resetStatus2","Error","queryKey","queryFn","getNonce","refetchInterval","refetchOnWindowFocus","refetchOnReconnect","staleTime","Infinity","buildMessageRef","current","message","_buildMessageRef_current","data","command","signIn","signIn2","pastedBlob","blob","error","ERROR","LOADING","result","onSign","username","password","SUCCESS","Provider","value"],"sources":["../../src/GpgProvider.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -1,8 +1,9 @@
1
1
  import { useGpg } from "./useGpg.mjs";
2
+ import { createGpgSigner, useGpgSigner, gpgSignCommand, assertGpgSignature, gpgSignatureCovers } from "./signer.mjs";
2
3
  import { GpgProvider, GPG_NONCE_QUERY_KEY } from "./GpgProvider.mjs";
3
4
  import { GpgContext, GpgStatusState } from "./GpgContext.mjs";
4
5
  import { default as default2 } from "./SignInWithGpg.mjs";
5
6
  import { default as default3, GPGButton } from "./GpgButton.mjs";
6
7
  import { gpgScreen, GpgScreenRegistrar, GpgBridge } from "./screens.mjs";
7
- export { GPGButton, GPG_NONCE_QUERY_KEY, GpgBridge, GpgContext, GpgProvider, GpgScreenRegistrar, GpgStatusState, default2 as SignInWithGpg, default3 as SignInWithGpgButton, gpgScreen, useGpg };
8
+ export { GPGButton, GPG_NONCE_QUERY_KEY, GpgBridge, GpgContext, GpgProvider, GpgScreenRegistrar, GpgStatusState, default2 as SignInWithGpg, default3 as SignInWithGpgButton, assertGpgSignature, createGpgSigner, gpgScreen, gpgSignCommand, gpgSignatureCovers, useGpg, useGpgSigner };
8
9
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"names":["useGpg","GpgProvider","GPG_NONCE_QUERY_KEY","GpgContext","GpgStatusState","default","default2","default3","GPGButton","gpgScreen","GpgScreenRegistrar","GpgBridge"],"sources":["../../src/index.ts"],"sourcesContent":[null],"mappings":"AAKA,SAASA,MAAA,QAAc;AACvB,SAASC,WAAA,EAAaC,mBAAA,QAA2B;AACjD,SAASC,UAAA,EAAYC,cAAA,QAAsB;AAG3C,SAAoBC,OAAA,IAAXC,QAAA,QAAgC;AACzC,SAAoBD,OAAA,IAAXE,QAAA,EAAgCC,SAAA,QAAiB;AAE1D,SAASC,SAAA,EAAWC,kBAAA,EAAoBC,SAAA,QAAiB","ignoreList":[]}
1
+ {"version":3,"names":["useGpg","createGpgSigner","useGpgSigner","gpgSignCommand","assertGpgSignature","gpgSignatureCovers","GpgProvider","GPG_NONCE_QUERY_KEY","GpgContext","GpgStatusState","default","default2","default3","GPGButton","gpgScreen","GpgScreenRegistrar","GpgBridge"],"sources":["../../src/index.ts"],"sourcesContent":[null],"mappings":"AAKA,SAASA,MAAA,QAAc;AACvB,SACEC,eAAA,EACAC,YAAA,EACAC,cAAA,EACAC,kBAAA,EACAC,kBAAA,QAGK;AACP,SAASC,WAAA,EAAaC,mBAAA,QAA2B;AACjD,SAASC,UAAA,EAAYC,cAAA,QAAsB;AAG3C,SAAoBC,OAAA,IAAXC,QAAA,QAAgC;AACzC,SAAoBD,OAAA,IAAXE,QAAA,EAAgCC,SAAA,QAAiB;AAE1D,SAASC,SAAA,EAAWC,kBAAA,EAAoBC,SAAA,QAAiB","ignoreList":[]}
@@ -1,8 +1,9 @@
1
1
  import { useGpg } from "./useGpg.native.js";
2
+ import { createGpgSigner, useGpgSigner, gpgSignCommand, assertGpgSignature, gpgSignatureCovers } from "./signer.native.js";
2
3
  import { GpgProvider, GPG_NONCE_QUERY_KEY } from "./GpgProvider.native.js";
3
4
  import { GpgContext, GpgStatusState } from "./GpgContext.native.js";
4
5
  import { default as default2 } from "./SignInWithGpg.native.js";
5
6
  import { default as default3, GPGButton } from "./GpgButton.native.js";
6
7
  import { gpgScreen, GpgScreenRegistrar, GpgBridge } from "./screens.native.js";
7
- export { GPGButton, GPG_NONCE_QUERY_KEY, GpgBridge, GpgContext, GpgProvider, GpgScreenRegistrar, GpgStatusState, default2 as SignInWithGpg, default3 as SignInWithGpgButton, gpgScreen, useGpg };
8
+ export { GPGButton, GPG_NONCE_QUERY_KEY, GpgBridge, GpgContext, GpgProvider, GpgScreenRegistrar, GpgStatusState, default2 as SignInWithGpg, default3 as SignInWithGpgButton, assertGpgSignature, createGpgSigner, gpgScreen, gpgSignCommand, gpgSignatureCovers, useGpg, useGpgSigner };
8
9
  //# sourceMappingURL=index.native.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["useGpg","GpgProvider","GPG_NONCE_QUERY_KEY","GpgContext","GpgStatusState","default","default2","default3","GPGButton","gpgScreen","GpgScreenRegistrar","GpgBridge"],"sources":["../../src/index.ts"],"sourcesContent":[null],"mappings":"AAKA,SAASA,MAAA,QAAc;AACvB,SAASC,WAAA,EAAaC,mBAAA,QAA2B;AACjD,SAASC,UAAA,EAAYC,cAAA,QAAsB;AAG3C,SAAoBC,OAAA,IAAXC,QAAA,QAAgC;AACzC,SAAoBD,OAAA,IAAXE,QAAA,EAAgCC,SAAA,QAAiB;AAE1D,SAASC,SAAA,EAAWC,kBAAA,EAAoBC,SAAA,QAAiB","ignoreList":[]}
1
+ {"version":3,"names":["useGpg","createGpgSigner","useGpgSigner","gpgSignCommand","assertGpgSignature","gpgSignatureCovers","GpgProvider","GPG_NONCE_QUERY_KEY","GpgContext","GpgStatusState","default","default2","default3","GPGButton","gpgScreen","GpgScreenRegistrar","GpgBridge"],"sources":["../../src/index.ts"],"sourcesContent":[null],"mappings":"AAKA,SAASA,MAAA,QAAc;AACvB,SAAAC,eAAA,EAAAC,YAAA,EAAAC,cAAA,EAAAC,kBAAA,EAAAC,kBAAA;AAAA,SACEC,WAAA,EAAAC,mBAAA;AAAA,SACAC,UAAA,EAAAC,cAAA;AAAA,SACAC,OAAA,IAAAC,QAAA;AAAA,SACAD,OAAA,IAAAE,QAAA,EAAAC,SAAA;AAAA,SACAC,SAAA,EAAAC,kBAAA,EAAAC,SAAA;AAAA,SAIFH,SAAS,EACTN,mBAAqB,EAGrBS,SAAoB,EACpBR,UAAoB,EAEpBF,WAAS,E","ignoreList":[]}
@@ -2,14 +2,21 @@ import { ModalStateProvider, routes, useRegisterScreens } from "@multiplatform.o
2
2
  import { useContext as useReactContext } from "react";
3
3
  import SignInWithGpg from "./SignInWithGpg.mjs";
4
4
  import { GpgContext } from "./GpgContext.mjs";
5
+ import { GpgIcon } from "./GpgIcon.mjs";
5
6
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
6
7
  const gpgScreen = {
7
8
  id: routes.SIGNINWITHGPG,
8
9
  component: SignInWithGpg,
9
10
  heading: "Sign in with GPG",
10
11
  availableWhen: () => true,
11
- showBack: false,
12
- showInfo: false
12
+ showBack: state => state.connected === false,
13
+ onBack: api => api.setRoute(routes.CONNECTORS),
14
+ showInfo: false,
15
+ listEntry: {
16
+ name: "GPG",
17
+ icon: /* @__PURE__ */jsx(GpgIcon, {}),
18
+ visibleWhen: state => !!state.signInWithGpg
19
+ }
13
20
  };
14
21
  const GpgScreenRegistrar = () => {
15
22
  useRegisterScreens([gpgScreen]);
@@ -1 +1 @@
1
- {"version":3,"names":["ModalStateProvider","routes","useRegisterScreens","useContext","useReactContext","SignInWithGpg","GpgContext","Fragment","jsx","jsxs","gpgScreen","id","SIGNINWITHGPG","component","heading","availableWhen","showBack","showInfo","GpgScreenRegistrar","GpgBridge","children","signInWithGpg","enabled","value"],"sources":["../../src/screens.tsx"],"sourcesContent":[null],"mappings":"AACA,SACEA,kBAAA,EACAC,MAAA,EACAC,kBAAA,QAGK;AACP,SAASC,UAAA,IAAcC,eAAA,QAAuB;AAC9C,OAAOC,aAAA,MAAmB;AAC1B,SAASC,UAAA,QAAkB;AAkCvB,SAAAC,QAAA,EACEC,GAAA,EADFC,IAAA;AA9BG,MAAMC,SAAA,GAAuB;EAClCC,EAAA,EAAIV,MAAA,CAAOW,aAAA;EACXC,SAAA,EAAWR,aAAA;EACXS,OAAA,EAAS;EACTC,aAAA,EAAeA,CAAA,KAAM;EACrBC,QAAA,EAAU;EACVC,QAAA,EAAU;AACZ;AAOO,MAAMC,kBAAA,GAA+BA,CAAA,KAAM;EAChDhB,kBAAA,CAAmB,CAACQ,SAAS,CAAC;EAC9B,OAAO;AACT;AAQO,MAAMS,SAAA,GAA6EA,CAAC;EACzFC;AACF,MAAM;EACJ,MAAMC,aAAA,GAAgBjB,eAAA,CAAgBE,UAAU,GAAGgB,OAAA,IAAW;EAC9D,OACE,eAAAb,IAAA,CAAAF,QAAA;IACEa,QAAA,kBAAAZ,GAAA,CAACU,kBAAA,IAAmB,GACpB,eAAAV,GAAA,CAACR,kBAAA;MAAmBuB,KAAA,EAAO;QAAEF;MAAc;MAAID;IAAA,CAAS;EAAA,CAC1D;AAEJ","ignoreList":[]}
1
+ {"version":3,"names":["ModalStateProvider","routes","useRegisterScreens","useContext","useReactContext","SignInWithGpg","GpgContext","GpgIcon","Fragment","jsx","jsxs","gpgScreen","id","SIGNINWITHGPG","component","heading","availableWhen","showBack","state","connected","onBack","api","setRoute","CONNECTORS","showInfo","listEntry","name","icon","visibleWhen","signInWithGpg","GpgScreenRegistrar","GpgBridge","children","enabled","value"],"sources":["../../src/screens.tsx"],"sourcesContent":[null],"mappings":"AACA,SACEA,kBAAA,EACAC,MAAA,EACAC,kBAAA,QAGK;AACP,SAASC,UAAA,IAAcC,eAAA,QAAuB;AAC9C,OAAOC,aAAA,MAAmB;AAC1B,SAASC,UAAA,QAAkB;AAC3B,SAASC,OAAA,QAAe;AAiBd,SA0BNC,QAAA,EA1BMC,GAAA,EA0BNC,IAAA,QA1BM;AAVH,MAAMC,SAAA,GAAuB;EAClCC,EAAA,EAAIX,MAAA,CAAOY,aAAA;EACXC,SAAA,EAAWT,aAAA;EACXU,OAAA,EAAS;EACTC,aAAA,EAAeA,CAAA,KAAM;EACrBC,QAAA,EAAWC,KAAA,IAAUA,KAAA,CAAMC,SAAA,KAAc;EACzCC,MAAA,EAASC,GAAA,IAAQA,GAAA,CAAIC,QAAA,CAASrB,MAAA,CAAOsB,UAAU;EAC/CC,QAAA,EAAU;EACVC,SAAA,EAAW;IACTC,IAAA,EAAM;IACNC,IAAA,EAAM,eAAAlB,GAAA,CAACF,OAAA,IAAQ;IACfqB,WAAA,EAAcV,KAAA,IAAU,CAAC,CAACA,KAAA,CAAMW;EAClC;AACF;AAOO,MAAMC,kBAAA,GAA+BA,CAAA,KAAM;EAChD5B,kBAAA,CAAmB,CAACS,SAAS,CAAC;EAC9B,OAAO;AACT;AAQO,MAAMoB,SAAA,GAA6EA,CAAC;EACzFC;AACF,MAAM;EACJ,MAAMH,aAAA,GAAgBzB,eAAA,CAAgBE,UAAU,GAAG2B,OAAA,IAAW;EAC9D,OACE,eAAAvB,IAAA,CAAAF,QAAA;IACEwB,QAAA,kBAAAvB,GAAA,CAACqB,kBAAA,IAAmB,GACpB,eAAArB,GAAA,CAACT,kBAAA;MAAmBkC,KAAA,EAAO;QAAEL;MAAc;MAAIG;IAAA,CAAS;EAAA,CAC1D;AAEJ","ignoreList":[]}
@@ -4,6 +4,7 @@ import { ModalStateProvider, routes, useRegisterScreens } from "@multiplatform.o
4
4
  import { useContext as useReactContext } from "react";
5
5
  import SignInWithGpg from "./SignInWithGpg.native.js";
6
6
  import { GpgContext } from "./GpgContext.native.js";
7
+ import { GpgIcon } from "./GpgIcon.native.js";
7
8
  var gpgScreen = {
8
9
  id: routes.SIGNINWITHGPG,
9
10
  component: SignInWithGpg,
@@ -11,8 +12,20 @@ var gpgScreen = {
11
12
  availableWhen: function availableWhen() {
12
13
  return true;
13
14
  },
14
- showBack: false,
15
- showInfo: false
15
+ showBack: function showBack(state) {
16
+ return state.connected === false;
17
+ },
18
+ onBack: function onBack(api) {
19
+ return api.setRoute(routes.CONNECTORS);
20
+ },
21
+ showInfo: false,
22
+ listEntry: {
23
+ name: "GPG",
24
+ icon: /* @__PURE__ */_jsx(GpgIcon, {}),
25
+ visibleWhen: function visibleWhen(state) {
26
+ return !!state.signInWithGpg;
27
+ }
28
+ }
16
29
  };
17
30
  var GpgScreenRegistrar = function GpgScreenRegistrar2() {
18
31
  useRegisterScreens([gpgScreen]);
@@ -1 +1 @@
1
- {"version":3,"names":["jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","React","ModalStateProvider","routes","useRegisterScreens","useContext","useReactContext","SignInWithGpg","GpgContext","gpgScreen","id","SIGNINWITHGPG","component","heading","availableWhen","showBack","showInfo","GpgScreenRegistrar","GpgScreenRegistrar2","GpgBridge","GpgBridge2","param","children","_ref","_useReactContext","signInWithGpg","enabled"],"sources":["../../src/screens.tsx"],"sourcesContent":[null],"mappings":"AACA,SAAAA,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA,EAAAC,QAAA,IAAAC,SAAA;AAAA,OACEC,KAAA;AAAA,SACAC,kBAAA,EAAAC,MAAA,EAAAC,kBAAA;AAAA,SACAC,UAAA,IAAAC,eAAA;AAAA,OAGKC,aAAA;AACP,SAASC,UAAA,QAAc;AACvB,IAAAC,SAAO;EACPC,EAAA,EAAAP,MAAS,CAAAQ,aAAA;EAkCLC,SAAA,EAAAL,aAAA;EA9BGM,OAAM,oBAAuB;EAClCC,aAAW,WAAAA,cAAA;IACX,WAAW;EACX;EACAC,QAAA,OAAe;EACfC,QAAA,EAAU;AAAA;AAEZ,IAAAC,kBAAA,YAAAC,oBAAA;EAOOd,kBAAM,EACXK,SAAA,CACA;EACF;AAQO;AAAoF,IACzFU,SAAA,YAAAC,WAAAC,KAAA;EACF,IAAM;IAAAC;EAAA,IAAAD,KAAA;EACJ,IAAAE,IAAM;EACN,IAAAC,gBACE;EACE,IAAAC,aAAA,IAAAF,IAAC,IAAAC,gBAAmB,GAAAlB,eAAA,CAAAE,UAAA,eAAAgB,gBAAA,uBAAAA,gBAAA,CAAAE,OAAA,cAAAH,IAAA,cAAAA,IAAA;EAAA,OACpB,eAACzB,KAAA,CAAAE,SAAA;IAAuDsB,QAC1D,GAEJ,eAAA1B,IAAA,CAAAqB,kBAAA,O","ignoreList":[]}
1
+ {"version":3,"names":["jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","React","ModalStateProvider","routes","useRegisterScreens","useContext","useReactContext","SignInWithGpg","GpgContext","GpgIcon","gpgScreen","id","SIGNINWITHGPG","component","heading","availableWhen","showBack","state","connected","onBack","api","setRoute","CONNECTORS","showInfo","listEntry","name","icon","visibleWhen","signInWithGpg","GpgScreenRegistrar","GpgScreenRegistrar2","GpgBridge","GpgBridge2","param","children"],"sources":["../../src/screens.tsx"],"sourcesContent":[null],"mappings":"AACA,SAAAA,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA,EAAAC,QAAA,IAAAC,SAAA;AAAA,OACEC,KAAA;AAAA,SACAC,kBAAA,EAAAC,MAAA,EAAAC,kBAAA;AAAA,SACAC,UAAA,IAAAC,eAAA;AAAA,OAGKC,aAAA;AACP,SAASC,UAAA,QAAc;AACvB,SAAOC,OAAA,6BAAmB;AAC1B,IAAAC,SAAS;EACTC,EAAA,EAAAR,MAAS,CAAAS,aAAe;EAiBdC,SA0BN,EAAAN,aAAA;EApCGO,OAAM,oBAAuB;EAClCC,aAAW,WAAAA,cAAA;IACX,WAAW;EACX;EACAC,QAAA,WAAeA,QAAMA,CAAAC,KAAA;IACrB,OAAAA,KAAW,CAAAC,SAAU,KAAM;EAC3B;EACAC,MAAA,WAAUA,OAAAC,GAAA;IACV,OAAAA,GAAW,CAAAC,QAAA,CAAAlB,MAAA,CAAAmB,UAAA;EAAA;EACHC,QACA;EAASC,SACf;IACFC,IAAA;IACFC,IAAA,iBAAA9B,IAAA,CAAAa,OAAA;IAOOkB,WAAM,WAAAA,WAAqCA,CAAAV,KAAA;MAChD,SAAAA,KAAA,CAAmBW,aAAW;IAC9B;EACF;AAQO;AAAoF,IACzFC,kBAAA,YAAAC,oBAAA;EACF1B,kBAAM,EACJM,SAAM,CACN;EAEI;AAAoB;AACoC,IAAAqB,SAC1D,YAAAC,WAAAC,KAAA;EAEJ;IAAAC;EAAA,IAAAD,KAAA","ignoreList":[]}