@lightsparkdev/core 0.2.1 → 0.2.2

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 (58) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/dist/chunk-23X5L5S3.js +604 -0
  3. package/dist/chunk-4OZ5E62P.js +608 -0
  4. package/dist/chunk-5FD46UVI.js +600 -0
  5. package/dist/chunk-BAQMCJ7C.js +630 -0
  6. package/dist/chunk-GFTKZSHK.js +627 -0
  7. package/dist/chunk-I3HKDOEE.js +627 -0
  8. package/dist/chunk-J6LSW6XO.js +601 -0
  9. package/dist/chunk-JUD4MOOQ.js +608 -0
  10. package/dist/chunk-KX6HH6CX.js +629 -0
  11. package/dist/chunk-MZCDWVLH.js +634 -0
  12. package/dist/chunk-NY3BK66J.js +624 -0
  13. package/dist/chunk-Q7UUXZNC.js +26 -0
  14. package/dist/chunk-WT2HYC6Q.js +601 -0
  15. package/dist/chunk-YYVOX4YM.js +600 -0
  16. package/dist/chunk-ZUIUADXH.js +616 -0
  17. package/dist/crypto-rn-2BYOHLMG.js +72 -0
  18. package/dist/crypto-rn-2YV53C3B.js +72 -0
  19. package/dist/crypto-rn-3HFXYG7I.js +75 -0
  20. package/dist/crypto-rn-3HLWLVZS.js +76 -0
  21. package/dist/crypto-rn-3N3JTBLE.js +83 -0
  22. package/dist/crypto-rn-3OEMMMOD.js +74 -0
  23. package/dist/crypto-rn-5EZSRY5Y.js +82 -0
  24. package/dist/crypto-rn-5KM2YVOI.js +82 -0
  25. package/dist/crypto-rn-6335R2CU.js +80 -0
  26. package/dist/crypto-rn-6ZHSL7CX.js +72 -0
  27. package/dist/crypto-rn-7DWXMO2Q.js +75 -0
  28. package/dist/crypto-rn-7GTI374I.js +81 -0
  29. package/dist/crypto-rn-AXDY3LDG.js +124 -0
  30. package/dist/crypto-rn-BZ2KZ2YR.js +68 -0
  31. package/dist/crypto-rn-CAPL7MYC.js +80 -0
  32. package/dist/crypto-rn-CBAKEB7C.js +68 -0
  33. package/dist/crypto-rn-CBWHV2F5.js +82 -0
  34. package/dist/crypto-rn-CS36MQ4X.js +77 -0
  35. package/dist/crypto-rn-E4RZNGIB.js +82 -0
  36. package/dist/crypto-rn-H4NIT5CT.js +70 -0
  37. package/dist/crypto-rn-IAC27WLZ.js +74 -0
  38. package/dist/crypto-rn-LLY6FCWE.js +82 -0
  39. package/dist/crypto-rn-MOWVVG3L.js +78 -0
  40. package/dist/crypto-rn-OAPLHNM5.js +73 -0
  41. package/dist/crypto-rn-PVAG5TVH.js +80 -0
  42. package/dist/crypto-rn-QLVBL5DI.js +75 -0
  43. package/dist/crypto-rn-TBKXR3SR.js +68 -0
  44. package/dist/crypto-rn-TSQJA6A3.js +81 -0
  45. package/dist/crypto-rn-U3XEJXIM.js +77 -0
  46. package/dist/crypto-rn-UHTZEVAR.js +74 -0
  47. package/dist/crypto-rn-V3ZNQSFI.js +79 -0
  48. package/dist/crypto-rn-VGNP6VZW.js +75 -0
  49. package/dist/crypto-rn-XMYCUEGV.js +72 -0
  50. package/dist/crypto-rn-YPOTC5RI.js +73 -0
  51. package/dist/index.cjs +91 -114
  52. package/dist/index.d.ts +30 -17
  53. package/dist/index.js +90 -104
  54. package/package.json +2 -1
  55. package/src/crypto/NodeKeyCache.ts +18 -15
  56. package/src/crypto/crypto.ts +72 -78
  57. package/src/requester/Requester.ts +9 -13
  58. package/src/utils/base64.ts +51 -2
@@ -0,0 +1,82 @@
1
+ import {
2
+ LightsparkException_default,
3
+ LightsparkSigningException_default,
4
+ b64encode
5
+ } from "./chunk-KX6HH6CX.js";
6
+
7
+ // src/crypto/crypto-rn.ts
8
+ import QuickCrypto from "react-native-quick-crypto";
9
+ var qCrypto = QuickCrypto;
10
+ var getRandomValues32 = async (arr) => {
11
+ return qCrypto.getRandomValues(arr);
12
+ };
13
+ async function decryptSecretWithNodePassword(cipher, encryptedSecret, nodePassword) {
14
+ throw new LightsparkException_default(
15
+ "NOT_IMPLEMENTED",
16
+ "Recovering the signing key is not yet supported in React Native."
17
+ );
18
+ }
19
+ var generateSigningKeyPair = async () => {
20
+ return new Promise((resolve, reject) => {
21
+ const keypair = qCrypto.generateKeyPairSync("rsa-pss", {
22
+ modulusLength: 4096,
23
+ publicExponent: 65537,
24
+ // We should be passing this line, but there's a bug in the library. Fix is in
25
+ // https://github.com/margelo/react-native-quick-crypto/pull/175, but waiting for approval.
26
+ // hashAlgorithm: "sha256",
27
+ publicKeyEncoding: {
28
+ type: "spki",
29
+ format: "pem"
30
+ },
31
+ privateKeyEncoding: {
32
+ type: "pkcs8",
33
+ format: "pem"
34
+ }
35
+ });
36
+ resolve({
37
+ publicKey: keypair.publicKey.slice(27, keypair.publicKey.length - 25),
38
+ privateKey: keypair.privateKey.slice(28, keypair.publicKey.length - 26)
39
+ });
40
+ });
41
+ };
42
+ var serializeSigningKey = async (key, format) => {
43
+ throw new LightsparkException_default(
44
+ "NOT_IMPLEMENTED",
45
+ "Cannot serialize a signing key in React Native. The keys you get from generateSigningKeyPair are already serialized buffers."
46
+ );
47
+ };
48
+ var getNonce = async () => {
49
+ const nonceSt = await getRandomValues32(new Uint32Array(1));
50
+ return Number(nonceSt);
51
+ };
52
+ var sign = (key, data) => {
53
+ return new Promise((resolve, reject) => {
54
+ console.info("Signing data");
55
+ const sign2 = qCrypto.createSign("SHA256");
56
+ sign2.update(data, "utf8");
57
+ const signature = sign2.sign({
58
+ key: addPemTags(key),
59
+ padding: qCrypto.constants.RSA_PKCS1_PSS_PADDING,
60
+ saltLength: qCrypto.constants.RSA_PSS_SALTLEN_MAX_SIGN
61
+ });
62
+ resolve(signature);
63
+ });
64
+ };
65
+ var addPemTags = (key) => {
66
+ const keyString = b64encode(key);
67
+ return `-----BEGIN PRIVATE KEY-----
68
+ ${keyString}
69
+ -----END PRIVATE KEY-----`;
70
+ };
71
+ var importPrivateSigningKey = async (keyData, format) => {
72
+ return Promise.resolve(keyData);
73
+ };
74
+ export {
75
+ LightsparkSigningException_default as LightsparkSigningException,
76
+ decryptSecretWithNodePassword,
77
+ generateSigningKeyPair,
78
+ getNonce,
79
+ importPrivateSigningKey,
80
+ serializeSigningKey,
81
+ sign
82
+ };
@@ -0,0 +1,70 @@
1
+ import {
2
+ LightsparkException_default,
3
+ LightsparkSigningException_default
4
+ } from "./chunk-Q7UUXZNC.js";
5
+
6
+ // src/crypto/crypto-rn.ts
7
+ import QuickCrypto from "react-native-quick-crypto";
8
+ var qCrypto = QuickCrypto;
9
+ var getRandomValues32 = async (arr) => {
10
+ return qCrypto.getRandomValues(arr);
11
+ };
12
+ async function decryptSecretWithNodePassword(cipher, encryptedSecret, nodePassword) {
13
+ throw new LightsparkException_default(
14
+ "NOT_IMPLEMENTED",
15
+ "Recovering the signing key is not yet supported in React Native."
16
+ );
17
+ }
18
+ var generateSigningKeyPair = async () => {
19
+ return new Promise((resolve, reject) => {
20
+ console.info("Generating signing key pair");
21
+ const keypair = qCrypto.generateKeyPairSync("rsa-pss", {
22
+ modulusLength: 4096,
23
+ publicKeyEncoding: {
24
+ type: "spki",
25
+ format: "pem"
26
+ },
27
+ privateKeyEncoding: {
28
+ type: "pkcs8",
29
+ format: "pem"
30
+ }
31
+ });
32
+ resolve({
33
+ publicKey: keypair.publicKey.slice(27, keypair.publicKey.length - 25),
34
+ privateKey: keypair.privateKey.slice(28, keypair.publicKey.length - 26)
35
+ });
36
+ });
37
+ };
38
+ var serializeSigningKey = async (key, format) => {
39
+ throw new LightsparkException_default(
40
+ "NOT_IMPLEMENTED",
41
+ "Cannot serialize a signing key in React Native. The keys you get from generateSigningKeyPair are already serialized buffers."
42
+ );
43
+ };
44
+ var getNonce = async () => {
45
+ const nonceSt = await getRandomValues32(new Uint32Array(1));
46
+ return Number(nonceSt);
47
+ };
48
+ var sign = (key, data) => {
49
+ return new Promise((resolve, reject) => {
50
+ qCrypto.sign("rsa-pss", data, key, (error, data2) => {
51
+ if (error || !data2) {
52
+ reject(error);
53
+ } else {
54
+ resolve(data2);
55
+ }
56
+ });
57
+ });
58
+ };
59
+ var importPrivateSigningKey = async (keyData, format) => {
60
+ return Promise.resolve(keyData);
61
+ };
62
+ export {
63
+ LightsparkSigningException_default as LightsparkSigningException,
64
+ decryptSecretWithNodePassword,
65
+ generateSigningKeyPair,
66
+ getNonce,
67
+ importPrivateSigningKey,
68
+ serializeSigningKey,
69
+ sign
70
+ };
@@ -0,0 +1,74 @@
1
+ import {
2
+ LightsparkException_default,
3
+ LightsparkSigningException_default
4
+ } from "./chunk-Q7UUXZNC.js";
5
+
6
+ // src/crypto/crypto-rn.ts
7
+ import QuickCrypto from "react-native-quick-crypto";
8
+ var qCrypto = QuickCrypto;
9
+ var getRandomValues32 = async (arr) => {
10
+ return qCrypto.getRandomValues(arr);
11
+ };
12
+ async function decryptSecretWithNodePassword(cipher, encryptedSecret, nodePassword) {
13
+ throw new LightsparkException_default(
14
+ "NOT_IMPLEMENTED",
15
+ "Recovering the signing key is not yet supported in React Native."
16
+ );
17
+ }
18
+ var generateSigningKeyPair = async () => {
19
+ return new Promise((resolve, reject) => {
20
+ console.info("Generating signing key pair");
21
+ const keypair = qCrypto.generateKeyPairSync("rsa-pss", {
22
+ modulusLength: 4096,
23
+ publicKeyEncoding: {
24
+ type: "spki",
25
+ format: "pem"
26
+ },
27
+ privateKeyEncoding: {
28
+ type: "pkcs8",
29
+ format: "pem"
30
+ }
31
+ });
32
+ resolve({
33
+ publicKey: keypair.publicKey.slice(27, keypair.publicKey.length - 25),
34
+ privateKey: keypair.privateKey.slice(28, keypair.publicKey.length - 26)
35
+ });
36
+ });
37
+ };
38
+ var serializeSigningKey = async (key, format) => {
39
+ throw new LightsparkException_default(
40
+ "NOT_IMPLEMENTED",
41
+ "Cannot serialize a signing key in React Native. The keys you get from generateSigningKeyPair are already serialized buffers."
42
+ );
43
+ };
44
+ var getNonce = async () => {
45
+ const nonceSt = await getRandomValues32(new Uint32Array(1));
46
+ return Number(nonceSt);
47
+ };
48
+ var sign = (key, data) => {
49
+ return new Promise((resolve, reject) => {
50
+ console.info("Signing data");
51
+ const sign2 = qCrypto.createSign("SHA256");
52
+ sign2.update(data, "utf8");
53
+ const signature = sign2.sign({
54
+ key: Buffer.from(key.buffer),
55
+ type: "pkcs8",
56
+ format: "pem",
57
+ // padding: qCrypto.constants.RSA_PKCS1_PSS_PADDING,
58
+ saltLength: qCrypto.constants.RSA_PSS_SALTLEN_MAX_SIGN
59
+ });
60
+ resolve(signature);
61
+ });
62
+ };
63
+ var importPrivateSigningKey = async (keyData, format) => {
64
+ return Promise.resolve(keyData);
65
+ };
66
+ export {
67
+ LightsparkSigningException_default as LightsparkSigningException,
68
+ decryptSecretWithNodePassword,
69
+ generateSigningKeyPair,
70
+ getNonce,
71
+ importPrivateSigningKey,
72
+ serializeSigningKey,
73
+ sign
74
+ };
@@ -0,0 +1,82 @@
1
+ import {
2
+ LightsparkException_default,
3
+ LightsparkSigningException_default,
4
+ b64encode
5
+ } from "./chunk-MZCDWVLH.js";
6
+
7
+ // src/crypto/crypto-rn.ts
8
+ import QuickCrypto from "react-native-quick-crypto";
9
+ var qCrypto = QuickCrypto;
10
+ var getRandomValues32 = async (arr) => {
11
+ return qCrypto.getRandomValues(arr);
12
+ };
13
+ async function decryptSecretWithNodePassword(cipher, encryptedSecret, nodePassword) {
14
+ throw new LightsparkException_default(
15
+ "NOT_IMPLEMENTED",
16
+ "Recovering the signing key is not yet supported in React Native."
17
+ );
18
+ }
19
+ var generateSigningKeyPair = async () => {
20
+ return new Promise((resolve, reject) => {
21
+ const keypair = qCrypto.generateKeyPairSync("rsa-pss", {
22
+ modulusLength: 4096,
23
+ publicExponent: 65537,
24
+ // We should be passing this line, but there's a bug in the library. Fix is in
25
+ // https://github.com/margelo/react-native-quick-crypto/pull/175, but waiting for approval.
26
+ // hashAlgorithm: "sha256",
27
+ publicKeyEncoding: {
28
+ type: "spki",
29
+ format: "pem"
30
+ },
31
+ privateKeyEncoding: {
32
+ type: "pkcs8",
33
+ format: "pem"
34
+ }
35
+ });
36
+ resolve({
37
+ publicKey: keypair.publicKey.slice(27, keypair.publicKey.length - 25),
38
+ privateKey: keypair.privateKey.slice(28, keypair.publicKey.length - 26)
39
+ });
40
+ });
41
+ };
42
+ var serializeSigningKey = async (key, format) => {
43
+ throw new LightsparkException_default(
44
+ "NOT_IMPLEMENTED",
45
+ "Cannot serialize a signing key in React Native. The keys you get from generateSigningKeyPair are already serialized buffers."
46
+ );
47
+ };
48
+ var getNonce = async () => {
49
+ const nonceSt = await getRandomValues32(new Uint32Array(1));
50
+ return Number(nonceSt);
51
+ };
52
+ var sign = (key, data) => {
53
+ return new Promise((resolve, reject) => {
54
+ console.info("Signing data");
55
+ const sign2 = qCrypto.createSign("SHA256");
56
+ sign2.update(data, "utf8");
57
+ const signature = sign2.sign({
58
+ key: addPemTags(key),
59
+ padding: qCrypto.constants.RSA_PKCS1_PSS_PADDING,
60
+ saltLength: qCrypto.constants.RSA_PSS_SALTLEN_MAX_SIGN
61
+ });
62
+ resolve(signature);
63
+ });
64
+ };
65
+ var addPemTags = (key) => {
66
+ const keyString = b64encode(key);
67
+ return `-----BEGIN PRIVATE KEY-----
68
+ ${keyString}
69
+ -----END PRIVATE KEY-----`;
70
+ };
71
+ var importPrivateSigningKey = async (keyData, format) => {
72
+ return Promise.resolve(keyData);
73
+ };
74
+ export {
75
+ LightsparkSigningException_default as LightsparkSigningException,
76
+ decryptSecretWithNodePassword,
77
+ generateSigningKeyPair,
78
+ getNonce,
79
+ importPrivateSigningKey,
80
+ serializeSigningKey,
81
+ sign
82
+ };
@@ -0,0 +1,78 @@
1
+ import {
2
+ LightsparkException_default,
3
+ LightsparkSigningException_default,
4
+ b64encode
5
+ } from "./chunk-J6LSW6XO.js";
6
+
7
+ // src/crypto/crypto-rn.ts
8
+ import QuickCrypto from "react-native-quick-crypto";
9
+ var qCrypto = QuickCrypto;
10
+ var getRandomValues32 = async (arr) => {
11
+ return qCrypto.getRandomValues(arr);
12
+ };
13
+ async function decryptSecretWithNodePassword(cipher, encryptedSecret, nodePassword) {
14
+ throw new LightsparkException_default(
15
+ "NOT_IMPLEMENTED",
16
+ "Recovering the signing key is not yet supported in React Native."
17
+ );
18
+ }
19
+ var generateSigningKeyPair = async () => {
20
+ return new Promise((resolve, reject) => {
21
+ const keypair = qCrypto.generateKeyPairSync("rsa-pss", {
22
+ modulusLength: 4096,
23
+ publicKeyEncoding: {
24
+ type: "spki",
25
+ format: "pem"
26
+ },
27
+ privateKeyEncoding: {
28
+ type: "pkcs8",
29
+ format: "pem"
30
+ }
31
+ });
32
+ resolve({
33
+ publicKey: keypair.publicKey.slice(27, keypair.publicKey.length - 25),
34
+ privateKey: keypair.privateKey.slice(28, keypair.publicKey.length - 26)
35
+ });
36
+ });
37
+ };
38
+ var serializeSigningKey = async (key, format) => {
39
+ throw new LightsparkException_default(
40
+ "NOT_IMPLEMENTED",
41
+ "Cannot serialize a signing key in React Native. The keys you get from generateSigningKeyPair are already serialized buffers."
42
+ );
43
+ };
44
+ var getNonce = async () => {
45
+ const nonceSt = await getRandomValues32(new Uint32Array(1));
46
+ return Number(nonceSt);
47
+ };
48
+ var sign = (key, data) => {
49
+ return new Promise((resolve, reject) => {
50
+ console.info("Signing data");
51
+ const sign2 = qCrypto.createSign("SHA256");
52
+ sign2.update(data, "utf8");
53
+ const signature = sign2.sign({
54
+ key: addPemTags(key),
55
+ padding: qCrypto.constants.RSA_PKCS1_PSS_PADDING,
56
+ saltLength: qCrypto.constants.RSA_PSS_SALTLEN_MAX_SIGN
57
+ });
58
+ resolve(signature);
59
+ });
60
+ };
61
+ var addPemTags = (key) => {
62
+ const keyString = b64encode(key);
63
+ return `-----BEGIN PRIVATE KEY-----
64
+ ${keyString}
65
+ -----END PRIVATE KEY-----`;
66
+ };
67
+ var importPrivateSigningKey = async (keyData, format) => {
68
+ return Promise.resolve(keyData);
69
+ };
70
+ export {
71
+ LightsparkSigningException_default as LightsparkSigningException,
72
+ decryptSecretWithNodePassword,
73
+ generateSigningKeyPair,
74
+ getNonce,
75
+ importPrivateSigningKey,
76
+ serializeSigningKey,
77
+ sign
78
+ };
@@ -0,0 +1,73 @@
1
+ import {
2
+ LightsparkException_default,
3
+ LightsparkSigningException_default,
4
+ b64encode
5
+ } from "./chunk-YYVOX4YM.js";
6
+
7
+ // src/crypto/crypto-rn.ts
8
+ import QuickCrypto from "react-native-quick-crypto";
9
+ var qCrypto = QuickCrypto;
10
+ var getRandomValues32 = async (arr) => {
11
+ return qCrypto.getRandomValues(arr);
12
+ };
13
+ async function decryptSecretWithNodePassword(cipher, encryptedSecret, nodePassword) {
14
+ throw new LightsparkException_default(
15
+ "NOT_IMPLEMENTED",
16
+ "Recovering the signing key is not yet supported in React Native."
17
+ );
18
+ }
19
+ var generateSigningKeyPair = async () => {
20
+ return new Promise((resolve, reject) => {
21
+ console.info("Generating signing key pair");
22
+ const keypair = qCrypto.generateKeyPairSync("rsa-pss", {
23
+ modulusLength: 4096,
24
+ publicKeyEncoding: {
25
+ type: "spki",
26
+ format: "pem"
27
+ },
28
+ privateKeyEncoding: {
29
+ type: "pkcs8",
30
+ format: "pem"
31
+ }
32
+ });
33
+ resolve({
34
+ publicKey: keypair.publicKey.slice(27, keypair.publicKey.length - 25),
35
+ privateKey: keypair.privateKey.slice(28, keypair.publicKey.length - 26)
36
+ });
37
+ });
38
+ };
39
+ var serializeSigningKey = async (key, format) => {
40
+ throw new LightsparkException_default(
41
+ "NOT_IMPLEMENTED",
42
+ "Cannot serialize a signing key in React Native. The keys you get from generateSigningKeyPair are already serialized buffers."
43
+ );
44
+ };
45
+ var getNonce = async () => {
46
+ const nonceSt = await getRandomValues32(new Uint32Array(1));
47
+ return Number(nonceSt);
48
+ };
49
+ var sign = (key, data) => {
50
+ return new Promise((resolve, reject) => {
51
+ console.info("Signing data");
52
+ const sign2 = qCrypto.createSign("SHA256");
53
+ sign2.update(data, "utf8");
54
+ const signature = sign2.sign({
55
+ key: b64encode(key),
56
+ padding: qCrypto.constants.RSA_PKCS1_PSS_PADDING,
57
+ saltLength: qCrypto.constants.RSA_PSS_SALTLEN_MAX_SIGN
58
+ });
59
+ resolve(signature);
60
+ });
61
+ };
62
+ var importPrivateSigningKey = async (keyData, format) => {
63
+ return Promise.resolve(keyData);
64
+ };
65
+ export {
66
+ LightsparkSigningException_default as LightsparkSigningException,
67
+ decryptSecretWithNodePassword,
68
+ generateSigningKeyPair,
69
+ getNonce,
70
+ importPrivateSigningKey,
71
+ serializeSigningKey,
72
+ sign
73
+ };
@@ -0,0 +1,80 @@
1
+ import {
2
+ LightsparkException_default,
3
+ LightsparkSigningException_default,
4
+ b64encode
5
+ } from "./chunk-JUD4MOOQ.js";
6
+
7
+ // src/crypto/crypto-rn.ts
8
+ import QuickCrypto from "react-native-quick-crypto";
9
+ var qCrypto = QuickCrypto;
10
+ var getRandomValues32 = async (arr) => {
11
+ return qCrypto.getRandomValues(arr);
12
+ };
13
+ async function decryptSecretWithNodePassword(cipher, encryptedSecret, nodePassword) {
14
+ throw new LightsparkException_default(
15
+ "NOT_IMPLEMENTED",
16
+ "Recovering the signing key is not yet supported in React Native."
17
+ );
18
+ }
19
+ var generateSigningKeyPair = async () => {
20
+ return new Promise((resolve, reject) => {
21
+ const keypair = qCrypto.generateKeyPairSync("rsa-pss", {
22
+ modulusLength: 4096,
23
+ publicExponent: 65537,
24
+ hashAlgorithm: "sha256",
25
+ publicKeyEncoding: {
26
+ type: "spki",
27
+ format: "pem"
28
+ },
29
+ privateKeyEncoding: {
30
+ type: "pkcs8",
31
+ format: "pem"
32
+ }
33
+ });
34
+ resolve({
35
+ publicKey: keypair.publicKey.slice(27, keypair.publicKey.length - 25),
36
+ privateKey: keypair.privateKey.slice(28, keypair.publicKey.length - 26)
37
+ });
38
+ });
39
+ };
40
+ var serializeSigningKey = async (key, format) => {
41
+ throw new LightsparkException_default(
42
+ "NOT_IMPLEMENTED",
43
+ "Cannot serialize a signing key in React Native. The keys you get from generateSigningKeyPair are already serialized buffers."
44
+ );
45
+ };
46
+ var getNonce = async () => {
47
+ const nonceSt = await getRandomValues32(new Uint32Array(1));
48
+ return Number(nonceSt);
49
+ };
50
+ var sign = (key, data) => {
51
+ return new Promise((resolve, reject) => {
52
+ console.info("Signing data");
53
+ const sign2 = qCrypto.createSign("SHA256");
54
+ sign2.update(data, "utf8");
55
+ const signature = sign2.sign({
56
+ key: addPemTags(key),
57
+ padding: qCrypto.constants.RSA_PKCS1_PSS_PADDING,
58
+ saltLength: qCrypto.constants.RSA_PSS_SALTLEN_MAX_SIGN
59
+ });
60
+ resolve(signature);
61
+ });
62
+ };
63
+ var addPemTags = (key) => {
64
+ const keyString = b64encode(key);
65
+ return `-----BEGIN PRIVATE KEY-----
66
+ ${keyString}
67
+ -----END PRIVATE KEY-----`;
68
+ };
69
+ var importPrivateSigningKey = async (keyData, format) => {
70
+ return Promise.resolve(keyData);
71
+ };
72
+ export {
73
+ LightsparkSigningException_default as LightsparkSigningException,
74
+ decryptSecretWithNodePassword,
75
+ generateSigningKeyPair,
76
+ getNonce,
77
+ importPrivateSigningKey,
78
+ serializeSigningKey,
79
+ sign
80
+ };
@@ -0,0 +1,75 @@
1
+ import {
2
+ LightsparkException_default,
3
+ LightsparkSigningException_default,
4
+ b64encode
5
+ } from "./chunk-5FD46UVI.js";
6
+
7
+ // src/crypto/crypto-rn.ts
8
+ import QuickCrypto from "react-native-quick-crypto";
9
+ var qCrypto = QuickCrypto;
10
+ var getRandomValues32 = async (arr) => {
11
+ return qCrypto.getRandomValues(arr);
12
+ };
13
+ async function decryptSecretWithNodePassword(cipher, encryptedSecret, nodePassword) {
14
+ throw new LightsparkException_default(
15
+ "NOT_IMPLEMENTED",
16
+ "Recovering the signing key is not yet supported in React Native."
17
+ );
18
+ }
19
+ var generateSigningKeyPair = async () => {
20
+ return new Promise((resolve, reject) => {
21
+ console.info("Generating signing key pair");
22
+ const keypair = qCrypto.generateKeyPairSync("rsa-pss", {
23
+ modulusLength: 4096,
24
+ publicKeyEncoding: {
25
+ type: "spki",
26
+ format: "pem"
27
+ },
28
+ privateKeyEncoding: {
29
+ type: "pkcs8",
30
+ format: "pem"
31
+ }
32
+ });
33
+ resolve({
34
+ publicKey: keypair.publicKey.slice(27, keypair.publicKey.length - 25),
35
+ privateKey: keypair.privateKey.slice(28, keypair.publicKey.length - 26)
36
+ });
37
+ });
38
+ };
39
+ var serializeSigningKey = async (key, format) => {
40
+ throw new LightsparkException_default(
41
+ "NOT_IMPLEMENTED",
42
+ "Cannot serialize a signing key in React Native. The keys you get from generateSigningKeyPair are already serialized buffers."
43
+ );
44
+ };
45
+ var getNonce = async () => {
46
+ const nonceSt = await getRandomValues32(new Uint32Array(1));
47
+ return Number(nonceSt);
48
+ };
49
+ var sign = (key, data) => {
50
+ return new Promise((resolve, reject) => {
51
+ console.info("Signing data");
52
+ const sign2 = qCrypto.createSign("SHA256");
53
+ sign2.update(data, "utf8");
54
+ const signature = sign2.sign({
55
+ key: b64encode(key),
56
+ format: "pkcs8",
57
+ type: "rsa-pss",
58
+ padding: qCrypto.constants.RSA_PKCS1_PSS_PADDING,
59
+ saltLength: qCrypto.constants.RSA_PSS_SALTLEN_MAX_SIGN
60
+ });
61
+ resolve(signature);
62
+ });
63
+ };
64
+ var importPrivateSigningKey = async (keyData, format) => {
65
+ return Promise.resolve(keyData);
66
+ };
67
+ export {
68
+ LightsparkSigningException_default as LightsparkSigningException,
69
+ decryptSecretWithNodePassword,
70
+ generateSigningKeyPair,
71
+ getNonce,
72
+ importPrivateSigningKey,
73
+ serializeSigningKey,
74
+ sign
75
+ };
@@ -0,0 +1,68 @@
1
+ import {
2
+ LightsparkException_default,
3
+ LightsparkSigningException_default
4
+ } from "./chunk-Q7UUXZNC.js";
5
+
6
+ // src/crypto/crypto-rn.ts
7
+ import QuickCrypto from "react-native-quick-crypto";
8
+ var qCrypto = QuickCrypto;
9
+ var getRandomValues32 = async (arr) => {
10
+ return qCrypto.getRandomValues(arr);
11
+ };
12
+ async function decryptSecretWithNodePassword(cipher, encryptedSecret, nodePassword) {
13
+ throw new LightsparkException_default(
14
+ "NOT_IMPLEMENTED",
15
+ "Recovering the signing key is not yet supported in React Native."
16
+ );
17
+ }
18
+ var generateSigningKeyPair = async () => {
19
+ return new Promise((resolve, reject) => {
20
+ qCrypto.generateKeyPair(
21
+ "rsa-pss",
22
+ {
23
+ modulusLength: 4096,
24
+ hash: "SHA-256"
25
+ },
26
+ (error, pubKey, privKey) => {
27
+ if (error || !pubKey || !privKey) {
28
+ reject(error);
29
+ } else {
30
+ resolve({ publicKey: pubKey, privateKey: privKey });
31
+ }
32
+ }
33
+ );
34
+ });
35
+ };
36
+ var serializeSigningKey = async (key, format) => {
37
+ throw new LightsparkException_default(
38
+ "NOT_IMPLEMENTED",
39
+ "Cannot serialize a signing key in React Native. The keys you get from generateSigningKeyPair are already serialized buffers."
40
+ );
41
+ };
42
+ var getNonce = async () => {
43
+ const nonceSt = await getRandomValues32(new Uint32Array(1));
44
+ return Number(nonceSt);
45
+ };
46
+ var sign = (key, data) => {
47
+ return new Promise((resolve, reject) => {
48
+ qCrypto.sign("rsa-pss", data, key, (error, data2) => {
49
+ if (error || !data2) {
50
+ reject(error);
51
+ } else {
52
+ resolve(data2);
53
+ }
54
+ });
55
+ });
56
+ };
57
+ var importPrivateSigningKey = async (keyData, format) => {
58
+ return Promise.resolve(keyData);
59
+ };
60
+ export {
61
+ LightsparkSigningException_default as LightsparkSigningException,
62
+ decryptSecretWithNodePassword,
63
+ generateSigningKeyPair,
64
+ getNonce,
65
+ importPrivateSigningKey,
66
+ serializeSigningKey,
67
+ sign
68
+ };