@reallyme/crypto 0.1.7 → 0.2.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 (46) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +43 -3
  3. package/dist/aead.d.ts +4 -0
  4. package/dist/aead.js +32 -15
  5. package/dist/aesKw.d.ts +3 -0
  6. package/dist/aesKw.js +10 -0
  7. package/dist/argon2id.d.ts +2 -0
  8. package/dist/argon2id.js +6 -0
  9. package/dist/cryptoFacade.d.ts +36 -0
  10. package/dist/cryptoFacade.js +71 -23
  11. package/dist/errors.d.ts +1 -1
  12. package/dist/hpke.d.ts +4 -0
  13. package/dist/hpke.js +20 -0
  14. package/dist/index.d.ts +5 -6
  15. package/dist/index.js +4 -4
  16. package/dist/jwaConcatKdf.js +8 -4
  17. package/dist/jwk.js +67 -72
  18. package/dist/memory.d.ts +8 -0
  19. package/dist/memory.js +13 -0
  20. package/dist/mlDsa.d.ts +5 -0
  21. package/dist/mlDsa.js +23 -0
  22. package/dist/mlKem.d.ts +6 -0
  23. package/dist/mlKem.js +29 -0
  24. package/dist/p256Ecdh.js +5 -1
  25. package/dist/p384Ecdh.js +5 -1
  26. package/dist/p521Ecdh.js +5 -1
  27. package/dist/proto/generated/reallyme/crypto/v1/crypto_pb.d.ts +1602 -70
  28. package/dist/proto/generated/reallyme/crypto/v1/crypto_pb.js +624 -16
  29. package/dist/proto.d.ts +113 -3
  30. package/dist/proto.js +706 -2
  31. package/dist/rsa.d.ts +2 -0
  32. package/dist/rsa.js +18 -15
  33. package/dist/slhDsa.d.ts +5 -0
  34. package/dist/slhDsa.js +21 -0
  35. package/dist/validateBytes.d.ts +1 -0
  36. package/dist/validateBytes.js +6 -0
  37. package/dist/wasm/reallyme_crypto_wasm.js +1 -246
  38. package/dist/wasm/reallyme_crypto_wasm_bg.wasm +0 -0
  39. package/dist/wasmModuleTypes.d.ts +2 -11
  40. package/dist/wasmProvider.d.ts +1 -16
  41. package/dist/wasmProvider.js +10 -25
  42. package/dist/xWing.d.ts +6 -0
  43. package/dist/xWing.js +34 -2
  44. package/package.json +7 -2
  45. package/dist/codecs.d.ts +0 -35
  46. package/dist/codecs.js +0 -216
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@reallyme/crypto",
3
- "version": "0.1.7",
3
+ "version": "0.2.0",
4
4
  "description": "ReallyMe crypto SDK for TypeScript/JavaScript with an explicit, pinned provider set.",
5
5
  "license": "Apache-2.0",
6
6
  "type": "module",
@@ -25,19 +25,24 @@
25
25
  },
26
26
  "files": [
27
27
  "dist",
28
+ "LICENSE",
28
29
  "README.md"
29
30
  ],
30
31
  "scripts": {
31
32
  "build": "node scripts/clean-dist.mjs && npm run build:wasm && tsc",
32
33
  "build:ts": "tsc",
33
34
  "build:wasm": "node scripts/build-wasm.mjs",
35
+ "pack:check": "node scripts/check-pack.mjs",
36
+ "prepack": "npm run build",
37
+ "prepublishOnly": "npm test && npm run pack:check",
34
38
  "typecheck": "tsc --noEmit",
35
39
  "test": "npm run build && node --test \"test/*.test.mjs\""
36
40
  },
37
41
  "dependencies": {
38
42
  "@bufbuild/protobuf": "2.12.1",
39
43
  "@noble/curves": "2.2.0",
40
- "@noble/hashes": "2.2.0"
44
+ "@noble/hashes": "2.2.0",
45
+ "@reallyme/codec": "0.1.21"
41
46
  },
42
47
  "devDependencies": {
43
48
  "typescript": "5.8.3"
package/dist/codecs.d.ts DELETED
@@ -1,35 +0,0 @@
1
- export type ReallyMeMulticodecTag = "encryption" | "hash" | "key" | "multihash" | "multikey";
2
- export type ReallyMeKeyMaterialKind = "not-key" | "public-key" | "private-key" | "symmetric-key";
3
- export type ReallyMeMulticodecMetadata = Readonly<{
4
- name: string;
5
- alg: string;
6
- tag: ReallyMeMulticodecTag;
7
- keyMaterial: ReallyMeKeyMaterialKind;
8
- prefix: Uint8Array;
9
- expectedKeyLength?: number;
10
- }>;
11
- export type ReallyMeParsedMultikey = Readonly<{
12
- codecName: string;
13
- algorithmName: string;
14
- publicKey: Uint8Array;
15
- expectedPublicKeyLength?: number;
16
- }>;
17
- export type ReallyMeDagCborCidVerification = Readonly<{
18
- valid: boolean;
19
- expectedCid: string;
20
- actualCid: string;
21
- }>;
22
- export declare const ReallyMeCodecs: {
23
- readonly base64urlEncode: (bytes: Uint8Array) => string;
24
- readonly base64urlDecode: (encoded: string) => Uint8Array;
25
- readonly base64urlDecodeBytes: (encoded: Uint8Array) => Uint8Array;
26
- readonly multibaseBase64urlEncode: (bytes: Uint8Array) => string;
27
- readonly multibaseBase58btcEncode: (bytes: Uint8Array) => string;
28
- readonly multibaseDecode: (encoded: string) => Uint8Array;
29
- readonly multicodecPrefixForName: (codecName: string) => ReallyMeMulticodecMetadata;
30
- readonly multicodecLookupPrefix: (bytes: Uint8Array) => ReallyMeMulticodecMetadata;
31
- readonly multikeyEncode: (codecName: string, publicKey: Uint8Array) => string;
32
- readonly multikeyParse: (multikey: string) => ReallyMeParsedMultikey;
33
- readonly dagCborComputeCid: (bytes: Uint8Array) => string;
34
- readonly dagCborVerifyCid: (cid: string, bytes: Uint8Array) => ReallyMeDagCborCidVerification;
35
- };
package/dist/codecs.js DELETED
@@ -1,216 +0,0 @@
1
- // SPDX-FileCopyrightText: Copyright © 2026 ReallyMe LLC. All rights reserved
2
- //
3
- // SPDX-License-Identifier: Apache-2.0
4
- import { ReallyMeCryptoError } from "./errors.js";
5
- import { requireReallyMeWasmProvider } from "./wasmProvider.js";
6
- const validTags = new Set([
7
- "encryption",
8
- "hash",
9
- "key",
10
- "multihash",
11
- "multikey",
12
- ]);
13
- const validKeyMaterialKinds = new Set([
14
- "not-key",
15
- "public-key",
16
- "private-key",
17
- "symmetric-key",
18
- ]);
19
- const ensureStringInput = (value) => {
20
- if (typeof value !== "string" || value.length === 0) {
21
- throw new ReallyMeCryptoError("invalid-input");
22
- }
23
- };
24
- const ensureBytesInput = (value) => {
25
- if (!(value instanceof Uint8Array)) {
26
- throw new ReallyMeCryptoError("invalid-input");
27
- }
28
- };
29
- const requireObjectOutput = (value) => {
30
- if (typeof value !== "object" || value === null) {
31
- throw new ReallyMeCryptoError("provider-failure");
32
- }
33
- return value;
34
- };
35
- const readStringOutput = (value) => {
36
- if (typeof value !== "string") {
37
- throw new ReallyMeCryptoError("provider-failure");
38
- }
39
- return value;
40
- };
41
- const readBytesOutput = (value) => {
42
- if (!(value instanceof Uint8Array)) {
43
- throw new ReallyMeCryptoError("provider-failure");
44
- }
45
- return value;
46
- };
47
- const readStringProperty = (object, propertyName) => {
48
- const property = Reflect.get(object, propertyName);
49
- if (typeof property !== "string" || property.length === 0) {
50
- throw new ReallyMeCryptoError("provider-failure");
51
- }
52
- return property;
53
- };
54
- const readBooleanProperty = (object, propertyName) => {
55
- const property = Reflect.get(object, propertyName);
56
- if (typeof property !== "boolean") {
57
- throw new ReallyMeCryptoError("provider-failure");
58
- }
59
- return property;
60
- };
61
- const readBytesProperty = (object, propertyName) => {
62
- const property = Reflect.get(object, propertyName);
63
- if (!(property instanceof Uint8Array)) {
64
- throw new ReallyMeCryptoError("provider-failure");
65
- }
66
- return property;
67
- };
68
- const readOptionalLengthProperty = (object, propertyName) => {
69
- const property = Reflect.get(object, propertyName);
70
- if (property === undefined) {
71
- return undefined;
72
- }
73
- if (typeof property !== "number" || !Number.isSafeInteger(property) || property < 0) {
74
- throw new ReallyMeCryptoError("provider-failure");
75
- }
76
- return property;
77
- };
78
- const readTagProperty = (object) => {
79
- const tag = readStringProperty(object, "tag");
80
- if (!validTags.has(tag)) {
81
- throw new ReallyMeCryptoError("provider-failure");
82
- }
83
- switch (tag) {
84
- case "encryption":
85
- case "hash":
86
- case "key":
87
- case "multihash":
88
- case "multikey":
89
- return tag;
90
- default:
91
- throw new ReallyMeCryptoError("provider-failure");
92
- }
93
- };
94
- const readKeyMaterialProperty = (object) => {
95
- const keyMaterial = readStringProperty(object, "keyMaterial");
96
- if (!validKeyMaterialKinds.has(keyMaterial)) {
97
- throw new ReallyMeCryptoError("provider-failure");
98
- }
99
- switch (keyMaterial) {
100
- case "not-key":
101
- case "public-key":
102
- case "private-key":
103
- case "symmetric-key":
104
- return keyMaterial;
105
- default:
106
- throw new ReallyMeCryptoError("provider-failure");
107
- }
108
- };
109
- const readMulticodecMetadata = (value) => {
110
- const object = requireObjectOutput(value);
111
- const expectedKeyLength = readOptionalLengthProperty(object, "expectedKeyLength");
112
- if (expectedKeyLength === undefined) {
113
- return {
114
- name: readStringProperty(object, "name"),
115
- alg: readStringProperty(object, "alg"),
116
- tag: readTagProperty(object),
117
- keyMaterial: readKeyMaterialProperty(object),
118
- prefix: readBytesProperty(object, "prefix"),
119
- };
120
- }
121
- return {
122
- name: readStringProperty(object, "name"),
123
- alg: readStringProperty(object, "alg"),
124
- tag: readTagProperty(object),
125
- keyMaterial: readKeyMaterialProperty(object),
126
- prefix: readBytesProperty(object, "prefix"),
127
- expectedKeyLength,
128
- };
129
- };
130
- const readParsedMultikey = (value) => {
131
- const object = requireObjectOutput(value);
132
- const expectedPublicKeyLength = readOptionalLengthProperty(object, "expectedPublicKeyLength");
133
- if (expectedPublicKeyLength === undefined) {
134
- return {
135
- codecName: readStringProperty(object, "codecName"),
136
- algorithmName: readStringProperty(object, "algorithmName"),
137
- publicKey: readBytesProperty(object, "publicKey"),
138
- };
139
- }
140
- return {
141
- codecName: readStringProperty(object, "codecName"),
142
- algorithmName: readStringProperty(object, "algorithmName"),
143
- publicKey: readBytesProperty(object, "publicKey"),
144
- expectedPublicKeyLength,
145
- };
146
- };
147
- const readCidVerification = (value) => {
148
- const object = requireObjectOutput(value);
149
- return {
150
- valid: readBooleanProperty(object, "valid"),
151
- expectedCid: readStringProperty(object, "expectedCid"),
152
- actualCid: readStringProperty(object, "actualCid"),
153
- };
154
- };
155
- const asciiBytesToString = (bytes) => {
156
- let value = "";
157
- for (const byte of bytes) {
158
- if (byte > 0x7f) {
159
- throw new ReallyMeCryptoError("invalid-input");
160
- }
161
- value += String.fromCharCode(byte);
162
- }
163
- return value;
164
- };
165
- export const ReallyMeCodecs = {
166
- base64urlEncode(bytes) {
167
- ensureBytesInput(bytes);
168
- return readStringOutput(requireReallyMeWasmProvider().base64urlEncode(bytes));
169
- },
170
- base64urlDecode(encoded) {
171
- ensureStringInput(encoded);
172
- return readBytesOutput(requireReallyMeWasmProvider().base64urlDecode(encoded));
173
- },
174
- base64urlDecodeBytes(encoded) {
175
- ensureBytesInput(encoded);
176
- return readBytesOutput(requireReallyMeWasmProvider().base64urlDecode(asciiBytesToString(encoded)));
177
- },
178
- multibaseBase64urlEncode(bytes) {
179
- ensureBytesInput(bytes);
180
- return readStringOutput(requireReallyMeWasmProvider().multibaseBase64urlEncode(bytes));
181
- },
182
- multibaseBase58btcEncode(bytes) {
183
- ensureBytesInput(bytes);
184
- return readStringOutput(requireReallyMeWasmProvider().multibaseBase58btcEncode(bytes));
185
- },
186
- multibaseDecode(encoded) {
187
- ensureStringInput(encoded);
188
- return readBytesOutput(requireReallyMeWasmProvider().multibaseDecode(encoded));
189
- },
190
- multicodecPrefixForName(codecName) {
191
- ensureStringInput(codecName);
192
- return readMulticodecMetadata(requireReallyMeWasmProvider().multicodecPrefixForName(codecName));
193
- },
194
- multicodecLookupPrefix(bytes) {
195
- ensureBytesInput(bytes);
196
- return readMulticodecMetadata(requireReallyMeWasmProvider().multicodecLookupPrefix(bytes));
197
- },
198
- multikeyEncode(codecName, publicKey) {
199
- ensureStringInput(codecName);
200
- ensureBytesInput(publicKey);
201
- return readStringOutput(requireReallyMeWasmProvider().multikeyEncode(codecName, publicKey));
202
- },
203
- multikeyParse(multikey) {
204
- ensureStringInput(multikey);
205
- return readParsedMultikey(requireReallyMeWasmProvider().multikeyParse(multikey));
206
- },
207
- dagCborComputeCid(bytes) {
208
- ensureBytesInput(bytes);
209
- return readStringOutput(requireReallyMeWasmProvider().dagCborComputeCid(bytes));
210
- },
211
- dagCborVerifyCid(cid, bytes) {
212
- ensureStringInput(cid);
213
- ensureBytesInput(bytes);
214
- return readCidVerification(requireReallyMeWasmProvider().dagCborVerifyCid(cid, bytes));
215
- },
216
- };