@lindorm/ec 0.1.8 → 0.2.1

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/CHANGELOG.md CHANGED
@@ -3,6 +3,22 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ ## [0.2.1](https://github.com/lindorm-io/monorepo/compare/@lindorm/ec@0.2.0...@lindorm/ec@0.2.1) (2025-07-02)
7
+
8
+ **Note:** Version bump only for package @lindorm/ec
9
+
10
+ # [0.2.0](https://github.com/lindorm-io/monorepo/compare/@lindorm/ec@0.1.8...@lindorm/ec@0.2.0) (2025-06-17)
11
+
12
+ ### Bug Fixes
13
+
14
+ - add and implement keykit interface ([70762aa](https://github.com/lindorm-io/monorepo/commit/70762aaca51c9fe904121b69b4bc072cdd89c8a2))
15
+ - align with kryptos changes ([206eb38](https://github.com/lindorm-io/monorepo/commit/206eb38ae2a03b14973e706035c87a953cc753af))
16
+
17
+ ### Features
18
+
19
+ - add dsa encoding ([a893601](https://github.com/lindorm-io/monorepo/commit/a8936015a9408733445cdbda8d8b70d633a2330a))
20
+ - upgrade key kits ([198956c](https://github.com/lindorm-io/monorepo/commit/198956c5fa276ae192af22cb204b3c2158c74339))
21
+
6
22
  ## [0.1.8](https://github.com/lindorm-io/monorepo/compare/@lindorm/ec@0.1.7...@lindorm/ec@0.1.8) (2025-01-28)
7
23
 
8
24
  **Note:** Version bump only for package @lindorm/ec
package/README.md CHANGED
@@ -1 +1,402 @@
1
1
  # @lindorm/ec
2
+
3
+ Elliptic Curve cryptography utilities for digital signatures using ECDSA algorithms.
4
+
5
+ ## Installation
6
+
7
+ ```bash
8
+ npm install @lindorm/ec
9
+ ```
10
+
11
+ ## Features
12
+
13
+ - **ECDSA Digital Signatures**: Sign and verify data using elliptic curve algorithms
14
+ - **Multiple Algorithms**: Support for ES256, ES384, and ES512
15
+ - **Flexible Encoding**: Multiple encoding options (base64, base64url, hex)
16
+ - **DSA Format Options**: Support for DER and IEEE-P1363 encoding
17
+ - **Raw Signature Format**: Convert between DER and raw signature formats
18
+ - **Type-Safe**: Full TypeScript support with strict typing
19
+ - **Error Handling**: Comprehensive error messages for debugging
20
+
21
+ ## Quick Start
22
+
23
+ ```typescript
24
+ import { EcKit } from "@lindorm/ec";
25
+ import { KryptosEc } from "@lindorm/kryptos";
26
+
27
+ // Create an EC key pair
28
+ const kryptos = KryptosEc.fromB64({
29
+ algorithm: "ES256",
30
+ // ... your key data
31
+ });
32
+
33
+ // Initialize EcKit
34
+ const ecKit = new EcKit({ kryptos });
35
+
36
+ // Sign data
37
+ const data = Buffer.from("Hello World");
38
+ const signature = ecKit.sign(data);
39
+
40
+ // Verify signature
41
+ const isValid = ecKit.verify(data, signature); // true
42
+
43
+ // Assert signature (throws if invalid)
44
+ ecKit.assert(data, signature);
45
+ ```
46
+
47
+ ## API Reference
48
+
49
+ ### EcKit Class
50
+
51
+ The main class for elliptic curve operations.
52
+
53
+ #### Constructor Options
54
+
55
+ ```typescript
56
+ interface EcKitOptions {
57
+ kryptos: IKryptosEc; // EC key pair from @lindorm/kryptos
58
+ dsa?: "der" | "ieee-p1363"; // DSA encoding format (default: "der")
59
+ encoding?: BufferEncoding; // Output encoding (default: "base64")
60
+ raw?: boolean; // Use raw signature format (default: false)
61
+ }
62
+ ```
63
+
64
+ #### Methods
65
+
66
+ ##### `sign(data: KeyData): Buffer`
67
+ Signs the provided data and returns the signature as a Buffer.
68
+
69
+ ```typescript
70
+ const signature = ecKit.sign("data to sign");
71
+ const signature2 = ecKit.sign(Buffer.from("data"));
72
+ ```
73
+
74
+ ##### `verify(data: KeyData, signature: KeyData): boolean`
75
+ Verifies a signature against the provided data.
76
+
77
+ ```typescript
78
+ const isValid = ecKit.verify("data", signature);
79
+ console.log(isValid); // true or false
80
+ ```
81
+
82
+ ##### `assert(data: KeyData, signature: KeyData): void`
83
+ Verifies a signature and throws an error if invalid.
84
+
85
+ ```typescript
86
+ try {
87
+ ecKit.assert("data", signature);
88
+ // Signature is valid
89
+ } catch (error) {
90
+ // Signature is invalid
91
+ }
92
+ ```
93
+
94
+ ##### `format(data: Buffer): string`
95
+ Formats a Buffer to string using the configured encoding.
96
+
97
+ ```typescript
98
+ const formatted = ecKit.format(signature);
99
+ // Returns base64/base64url/hex string based on configuration
100
+ ```
101
+
102
+ ## Supported Algorithms
103
+
104
+ | Algorithm | Curve | Hash Function | Key Size |
105
+ |-----------|-------|---------------|----------|
106
+ | ES256 | P-256 | SHA-256 | 256 bits |
107
+ | ES384 | P-384 | SHA-384 | 384 bits |
108
+ | ES512 | P-521 | SHA-512 | 521 bits |
109
+
110
+ ## Encoding Options
111
+
112
+ ### DSA Encoding Formats
113
+
114
+ - **DER** (Distinguished Encoding Rules): Standard format used in X.509 certificates
115
+ - **IEEE-P1363**: Alternative format used in some cryptographic protocols
116
+
117
+ ```typescript
118
+ // Using DER format (default)
119
+ const ecKit = new EcKit({
120
+ kryptos,
121
+ dsa: "der"
122
+ });
123
+
124
+ // Using IEEE-P1363 format
125
+ const ecKit2 = new EcKit({
126
+ kryptos,
127
+ dsa: "ieee-p1363"
128
+ });
129
+ ```
130
+
131
+ ### Output Encoding
132
+
133
+ ```typescript
134
+ // Base64 encoding (default)
135
+ const ecKit = new EcKit({
136
+ kryptos,
137
+ encoding: "base64"
138
+ });
139
+
140
+ // Base64URL encoding (URL-safe)
141
+ const ecKit2 = new EcKit({
142
+ kryptos,
143
+ encoding: "base64url"
144
+ });
145
+
146
+ // Hexadecimal encoding
147
+ const ecKit3 = new EcKit({
148
+ kryptos,
149
+ encoding: "hex"
150
+ });
151
+ ```
152
+
153
+ ### Raw Signature Format
154
+
155
+ The raw format concatenates the r and s values directly, which is useful for JWT/JWS compatibility.
156
+
157
+ ```typescript
158
+ // Standard DER format
159
+ const ecKit = new EcKit({
160
+ kryptos,
161
+ raw: false // default
162
+ });
163
+
164
+ // Raw format (r || s concatenation)
165
+ const ecKitRaw = new EcKit({
166
+ kryptos,
167
+ raw: true
168
+ });
169
+ ```
170
+
171
+ ## Advanced Usage
172
+
173
+ ### Working with Different Data Types
174
+
175
+ ```typescript
176
+ // String data with encoding
177
+ const signature1 = ecKit.sign("Hello World");
178
+
179
+ // Buffer data
180
+ const buffer = Buffer.from("Hello World", "utf-8");
181
+ const signature2 = ecKit.sign(buffer);
182
+
183
+ // Base64 encoded data
184
+ const base64Data = Buffer.from("Hello World").toString("base64");
185
+ const signature3 = ecKit.sign(base64Data);
186
+ ```
187
+
188
+ ### JWT/JWS Integration
189
+
190
+ ```typescript
191
+ // For JWT/JWS, use raw format with base64url encoding
192
+ const jwtEcKit = new EcKit({
193
+ kryptos,
194
+ encoding: "base64url",
195
+ raw: true
196
+ });
197
+
198
+ // Sign JWT payload
199
+ const payload = Buffer.from(JSON.stringify({ sub: "1234567890" }));
200
+ const signature = jwtEcKit.sign(payload);
201
+ const signatureString = jwtEcKit.format(signature);
202
+ ```
203
+
204
+ ### Signature Format Conversion
205
+
206
+ ```typescript
207
+ // Convert between DER and raw formats
208
+ const derEcKit = new EcKit({ kryptos, raw: false });
209
+ const rawEcKit = new EcKit({ kryptos, raw: true });
210
+
211
+ // Sign with DER format
212
+ const derSignature = derEcKit.sign("data");
213
+
214
+ // Verify with raw format (automatic conversion)
215
+ const isValid = rawEcKit.verify("data", derSignature);
216
+ ```
217
+
218
+ ### Error Handling
219
+
220
+ ```typescript
221
+ import { EcError } from "@lindorm/ec";
222
+
223
+ try {
224
+ // Missing private key for signing
225
+ const verifyOnlyKryptos = KryptosEc.fromB64({
226
+ publicKey: "...",
227
+ algorithm: "ES256"
228
+ });
229
+ const ecKit = new EcKit({ kryptos: verifyOnlyKryptos });
230
+ ecKit.sign("data"); // Throws EcError
231
+ } catch (error) {
232
+ if (error instanceof EcError) {
233
+ console.error("EC operation failed:", error.message);
234
+ }
235
+ }
236
+ ```
237
+
238
+ ## Examples
239
+
240
+ ### Creating a Signing Service
241
+
242
+ ```typescript
243
+ import { EcKit } from "@lindorm/ec";
244
+ import { KryptosEc } from "@lindorm/kryptos";
245
+
246
+ class SigningService {
247
+ private ecKit: EcKit;
248
+
249
+ constructor(privateKey: string, algorithm: "ES256" | "ES384" | "ES512") {
250
+ const kryptos = KryptosEc.fromB64({
251
+ privateKey,
252
+ algorithm
253
+ });
254
+
255
+ this.ecKit = new EcKit({
256
+ kryptos,
257
+ encoding: "base64url",
258
+ raw: true // For JWT compatibility
259
+ });
260
+ }
261
+
262
+ signPayload(payload: object): string {
263
+ const data = Buffer.from(JSON.stringify(payload));
264
+ const signature = this.ecKit.sign(data);
265
+ return this.ecKit.format(signature);
266
+ }
267
+
268
+ verifyPayload(payload: object, signature: string): boolean {
269
+ const data = Buffer.from(JSON.stringify(payload));
270
+ return this.ecKit.verify(data, signature);
271
+ }
272
+ }
273
+ ```
274
+
275
+ ### Verification Service with Public Key
276
+
277
+ ```typescript
278
+ class VerificationService {
279
+ private ecKit: EcKit;
280
+
281
+ constructor(publicKey: string, algorithm: "ES256" | "ES384" | "ES512") {
282
+ const kryptos = KryptosEc.fromB64({
283
+ publicKey,
284
+ algorithm
285
+ });
286
+
287
+ this.ecKit = new EcKit({
288
+ kryptos,
289
+ encoding: "base64url",
290
+ raw: true
291
+ });
292
+ }
293
+
294
+ verifySignature(data: string, signature: string): boolean {
295
+ try {
296
+ this.ecKit.assert(data, signature);
297
+ return true;
298
+ } catch {
299
+ return false;
300
+ }
301
+ }
302
+ }
303
+ ```
304
+
305
+ ### Document Signing System
306
+
307
+ ```typescript
308
+ interface SignedDocument {
309
+ content: string;
310
+ signature: string;
311
+ algorithm: string;
312
+ timestamp: number;
313
+ }
314
+
315
+ class DocumentSigner {
316
+ private ecKit: EcKit;
317
+ private algorithm: string;
318
+
319
+ constructor(kryptos: IKryptosEc) {
320
+ this.ecKit = new EcKit({
321
+ kryptos,
322
+ encoding: "base64"
323
+ });
324
+ this.algorithm = kryptos.algorithm;
325
+ }
326
+
327
+ signDocument(content: string): SignedDocument {
328
+ const timestamp = Date.now();
329
+ const dataToSign = `${content}|${timestamp}`;
330
+ const signature = this.ecKit.sign(dataToSign);
331
+
332
+ return {
333
+ content,
334
+ signature: this.ecKit.format(signature),
335
+ algorithm: this.algorithm,
336
+ timestamp
337
+ };
338
+ }
339
+
340
+ verifyDocument(doc: SignedDocument): boolean {
341
+ const dataToVerify = `${doc.content}|${doc.timestamp}`;
342
+ return this.ecKit.verify(dataToVerify, doc.signature);
343
+ }
344
+ }
345
+ ```
346
+
347
+ ## Type Definitions
348
+
349
+ ### KeyData Type
350
+
351
+ Input data can be provided in multiple formats:
352
+
353
+ ```typescript
354
+ type KeyData = Buffer | string;
355
+ ```
356
+
357
+ ### IKryptosEc Interface
358
+
359
+ The EC key pair interface from `@lindorm/kryptos`:
360
+
361
+ ```typescript
362
+ interface IKryptosEc {
363
+ algorithm: "ES256" | "ES384" | "ES512";
364
+ privateKey?: string;
365
+ publicKey?: string;
366
+ // ... other properties
367
+ }
368
+ ```
369
+
370
+ ## Error Handling
371
+
372
+ The package throws `EcError` for various error conditions:
373
+
374
+ - Missing private key when attempting to sign
375
+ - Missing public key when attempting to verify
376
+ - Invalid signature during assertion
377
+ - Unsupported EC algorithm
378
+ - Invalid key format
379
+
380
+ ```typescript
381
+ import { EcError } from "@lindorm/ec";
382
+
383
+ try {
384
+ ecKit.assert(data, invalidSignature);
385
+ } catch (error) {
386
+ if (error instanceof EcError) {
387
+ console.error("Signature verification failed:", error.message);
388
+ }
389
+ }
390
+ ```
391
+
392
+ ## Security Considerations
393
+
394
+ - Always use secure random number generation for key creation
395
+ - Protect private keys appropriately
396
+ - Use appropriate key sizes (ES256 minimum for most applications)
397
+ - Verify signatures before trusting data
398
+ - Consider using ES384 or ES512 for higher security requirements
399
+
400
+ ## License
401
+
402
+ AGPL-3.0-or-later
@@ -1,10 +1,14 @@
1
+ import { IKeyKit, KeyData } from "@lindorm/types";
1
2
  import { EcKitOptions } from "../types";
2
- export declare class EcKit {
3
- private readonly format;
3
+ export declare class EcKit implements IKeyKit {
4
+ private readonly dsa;
5
+ private readonly encoding;
4
6
  private readonly kryptos;
7
+ private readonly raw;
5
8
  constructor(options: EcKitOptions);
6
- sign(data: string): string;
7
- verify(data: string, signature: string): boolean;
8
- assert(data: string, signature: string): void;
9
+ sign(data: KeyData): Buffer;
10
+ verify(data: KeyData, signature: KeyData): boolean;
11
+ assert(data: KeyData, signature: KeyData): void;
12
+ format(data: Buffer): string;
9
13
  }
10
14
  //# sourceMappingURL=EcKit.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"EcKit.d.ts","sourceRoot":"","sources":["../../src/classes/EcKit.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAqB,MAAM,UAAU,CAAC;AAO3D,qBAAa,KAAK;IAChB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAoB;IAC3C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAa;gBAElB,OAAO,EAAE,YAAY;IAUjC,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAQ1B,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO;IAShD,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI;CAQrD"}
1
+ {"version":3,"file":"EcKit.d.ts","sourceRoot":"","sources":["../../src/classes/EcKit.ts"],"names":[],"mappings":"AACA,OAAO,EAAe,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAE/D,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAOxC,qBAAa,KAAM,YAAW,OAAO;IACnC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAc;IAClC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAiB;IAC1C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAa;IACrC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAU;gBAEX,OAAO,EAAE,YAAY;IAYjC,IAAI,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM;IAS3B,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,GAAG,OAAO;IAWlD,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,GAAG,IAAI;IAW/C,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;CAGpC"}
@@ -5,11 +5,15 @@ const kryptos_1 = require("@lindorm/kryptos");
5
5
  const errors_1 = require("../errors");
6
6
  const private_1 = require("../utils/private");
7
7
  class EcKit {
8
- format;
8
+ dsa;
9
+ encoding;
9
10
  kryptos;
11
+ raw;
10
12
  constructor(options) {
11
- this.format = options.format ?? "base64";
12
- if (!kryptos_1.Kryptos.isEc(options.kryptos)) {
13
+ this.dsa = options.dsa ?? "der";
14
+ this.encoding = options.encoding ?? "base64";
15
+ this.raw = options.raw ?? false;
16
+ if (!kryptos_1.KryptosKit.isEc(options.kryptos)) {
13
17
  throw new errors_1.EcError("Invalid Kryptos instance");
14
18
  }
15
19
  this.kryptos = options.kryptos;
@@ -17,26 +21,34 @@ class EcKit {
17
21
  sign(data) {
18
22
  return (0, private_1.createEcSignature)({
19
23
  data,
20
- format: this.format,
24
+ dsaEncoding: this.dsa,
21
25
  kryptos: this.kryptos,
26
+ raw: this.raw,
22
27
  });
23
28
  }
24
29
  verify(data, signature) {
25
30
  return (0, private_1.verifyEcSignature)({
26
31
  data,
27
- format: this.format,
32
+ dsaEncoding: this.dsa,
33
+ encoding: this.encoding,
28
34
  kryptos: this.kryptos,
35
+ raw: this.raw,
29
36
  signature,
30
37
  });
31
38
  }
32
39
  assert(data, signature) {
33
40
  return (0, private_1.assertEcSignature)({
34
41
  data,
35
- format: this.format,
42
+ dsaEncoding: this.dsa,
43
+ encoding: this.encoding,
36
44
  kryptos: this.kryptos,
45
+ raw: this.raw,
37
46
  signature,
38
47
  });
39
48
  }
49
+ format(data) {
50
+ return data.toString(this.encoding);
51
+ }
40
52
  }
41
53
  exports.EcKit = EcKit;
42
54
  //# sourceMappingURL=EcKit.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"EcKit.js","sourceRoot":"","sources":["../../src/classes/EcKit.ts"],"names":[],"mappings":";;;AAAA,8CAAuD;AACvD,sCAAoC;AAEpC,8CAI0B;AAE1B,MAAa,KAAK;IACC,MAAM,CAAoB;IAC1B,OAAO,CAAa;IAErC,YAAmB,OAAqB;QACtC,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,QAAQ,CAAC;QAEzC,IAAI,CAAC,iBAAO,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;YACnC,MAAM,IAAI,gBAAO,CAAC,0BAA0B,CAAC,CAAC;QAChD,CAAC;QAED,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IACjC,CAAC;IAEM,IAAI,CAAC,IAAY;QACtB,OAAO,IAAA,2BAAiB,EAAC;YACvB,IAAI;YACJ,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,OAAO,EAAE,IAAI,CAAC,OAAO;SACtB,CAAC,CAAC;IACL,CAAC;IAEM,MAAM,CAAC,IAAY,EAAE,SAAiB;QAC3C,OAAO,IAAA,2BAAiB,EAAC;YACvB,IAAI;YACJ,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,SAAS;SACV,CAAC,CAAC;IACL,CAAC;IAEM,MAAM,CAAC,IAAY,EAAE,SAAiB;QAC3C,OAAO,IAAA,2BAAiB,EAAC;YACvB,IAAI;YACJ,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,SAAS;SACV,CAAC,CAAC;IACL,CAAC;CACF;AAvCD,sBAuCC"}
1
+ {"version":3,"file":"EcKit.js","sourceRoot":"","sources":["../../src/classes/EcKit.ts"],"names":[],"mappings":";;;AAAA,8CAA0D;AAE1D,sCAAoC;AAEpC,8CAI0B;AAE1B,MAAa,KAAK;IACC,GAAG,CAAc;IACjB,QAAQ,CAAiB;IACzB,OAAO,CAAa;IACpB,GAAG,CAAU;IAE9B,YAAmB,OAAqB;QACtC,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,KAAK,CAAC;QAChC,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,QAAQ,CAAC;QAC7C,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,KAAK,CAAC;QAEhC,IAAI,CAAC,oBAAU,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;YACtC,MAAM,IAAI,gBAAO,CAAC,0BAA0B,CAAC,CAAC;QAChD,CAAC;QAED,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IACjC,CAAC;IAEM,IAAI,CAAC,IAAa;QACvB,OAAO,IAAA,2BAAiB,EAAC;YACvB,IAAI;YACJ,WAAW,EAAE,IAAI,CAAC,GAAG;YACrB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,GAAG,EAAE,IAAI,CAAC,GAAG;SACd,CAAC,CAAC;IACL,CAAC;IAEM,MAAM,CAAC,IAAa,EAAE,SAAkB;QAC7C,OAAO,IAAA,2BAAiB,EAAC;YACvB,IAAI;YACJ,WAAW,EAAE,IAAI,CAAC,GAAG;YACrB,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,SAAS;SACV,CAAC,CAAC;IACL,CAAC;IAEM,MAAM,CAAC,IAAa,EAAE,SAAkB;QAC7C,OAAO,IAAA,2BAAiB,EAAC;YACvB,IAAI;YACJ,WAAW,EAAE,IAAI,CAAC,GAAG;YACrB,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,SAAS;SACV,CAAC,CAAC;IACL,CAAC;IAEM,MAAM,CAAC,IAAY;QACxB,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACtC,CAAC;CACF;AApDD,sBAoDC"}
@@ -1,19 +1,23 @@
1
1
  import { IKryptos, IKryptosEc } from "@lindorm/kryptos";
2
- import { BufferFormat } from "@lindorm/types";
3
- export type EcSignatureFormat = BufferFormat | "raw";
2
+ import { DsaEncoding, KeyData } from "@lindorm/types";
4
3
  export type CreateEcSignatureOptions = {
5
- data: string;
6
- format: EcSignatureFormat;
4
+ data: KeyData;
5
+ dsaEncoding: DsaEncoding;
7
6
  kryptos: IKryptosEc;
7
+ raw: boolean;
8
8
  };
9
9
  export type VerifyEcSignatureOptions = {
10
- data: string;
11
- format: EcSignatureFormat;
10
+ data: KeyData;
11
+ dsaEncoding: DsaEncoding;
12
+ encoding: BufferEncoding;
12
13
  kryptos: IKryptosEc;
13
- signature: string;
14
+ raw: boolean;
15
+ signature: KeyData;
14
16
  };
15
17
  export type EcKitOptions = {
16
- format?: EcSignatureFormat;
18
+ dsa?: DsaEncoding;
19
+ encoding?: BufferEncoding;
17
20
  kryptos: IKryptos;
21
+ raw?: boolean;
18
22
  };
19
23
  //# sourceMappingURL=ec-kit.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ec-kit.d.ts","sourceRoot":"","sources":["../../src/types/ec-kit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,MAAM,MAAM,iBAAiB,GAAG,YAAY,GAAG,KAAK,CAAC;AAErD,MAAM,MAAM,wBAAwB,GAAG;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,iBAAiB,CAAC;IAC1B,OAAO,EAAE,UAAU,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,iBAAiB,CAAC;IAC1B,OAAO,EAAE,UAAU,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,MAAM,CAAC,EAAE,iBAAiB,CAAC;IAC3B,OAAO,EAAE,QAAQ,CAAC;CACnB,CAAC"}
1
+ {"version":3,"file":"ec-kit.d.ts","sourceRoot":"","sources":["../../src/types/ec-kit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAEtD,MAAM,MAAM,wBAAwB,GAAG;IACrC,IAAI,EAAE,OAAO,CAAC;IACd,WAAW,EAAE,WAAW,CAAC;IACzB,OAAO,EAAE,UAAU,CAAC;IACpB,GAAG,EAAE,OAAO,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG;IACrC,IAAI,EAAE,OAAO,CAAC;IACd,WAAW,EAAE,WAAW,CAAC;IACzB,QAAQ,EAAE,cAAc,CAAC;IACzB,OAAO,EAAE,UAAU,CAAC;IACpB,GAAG,EAAE,OAAO,CAAC;IACb,SAAS,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,GAAG,CAAC,EAAE,WAAW,CAAC;IAClB,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,OAAO,EAAE,QAAQ,CAAC;IAClB,GAAG,CAAC,EAAE,OAAO,CAAC;CACf,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import { CreateEcSignatureOptions, VerifyEcSignatureOptions } from "../../types/ec-kit";
2
- export declare const createEcSignature: ({ data, format, kryptos, }: CreateEcSignatureOptions) => string;
3
- export declare const verifyEcSignature: ({ data, format, kryptos, signature, }: VerifyEcSignatureOptions) => boolean;
4
- export declare const assertEcSignature: ({ data, format, kryptos, signature, }: VerifyEcSignatureOptions) => void;
2
+ export declare const createEcSignature: ({ data, dsaEncoding, kryptos, raw, }: CreateEcSignatureOptions) => Buffer;
3
+ export declare const verifyEcSignature: ({ data, dsaEncoding, encoding, kryptos, raw, signature, }: VerifyEcSignatureOptions) => boolean;
4
+ export declare const assertEcSignature: ({ data, dsaEncoding, encoding, kryptos, raw, signature, }: VerifyEcSignatureOptions) => void;
5
5
  //# sourceMappingURL=ec-signature.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ec-signature.d.ts","sourceRoot":"","sources":["../../../src/utils/private/ec-signature.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,wBAAwB,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AAKxF,eAAO,MAAM,iBAAiB,+BAI3B,wBAAwB,KAAG,MAW7B,CAAC;AAEF,eAAO,MAAM,iBAAiB,0CAK3B,wBAAwB,KAAG,OAa7B,CAAC;AAEF,eAAO,MAAM,iBAAiB,0CAK3B,wBAAwB,KAAG,IAG7B,CAAC"}
1
+ {"version":3,"file":"ec-signature.d.ts","sourceRoot":"","sources":["../../../src/utils/private/ec-signature.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,wBAAwB,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AAKxF,eAAO,MAAM,iBAAiB,GAAI,sCAK/B,wBAAwB,KAAG,MAW7B,CAAC;AAEF,eAAO,MAAM,iBAAiB,GAAI,2DAO/B,wBAAwB,KAAG,OAkB7B,CAAC;AAEF,eAAO,MAAM,iBAAiB,GAAI,2DAO/B,wBAAwB,KAAG,IAG7B,CAAC"}
@@ -1,38 +1,42 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.assertEcSignature = exports.verifyEcSignature = exports.createEcSignature = void 0;
4
+ const is_1 = require("@lindorm/is");
4
5
  const crypto_1 = require("crypto");
5
6
  const errors_1 = require("../../errors");
6
7
  const get_key_1 = require("./get-key");
7
8
  const map_algorithm_1 = require("./map-algorithm");
8
9
  const raw_1 = require("./raw");
9
- const createEcSignature = ({ data, format, kryptos, }) => {
10
- const der = (0, crypto_1.createSign)((0, map_algorithm_1.mapEcAlgorithm)(kryptos))
10
+ const createEcSignature = ({ data, dsaEncoding, kryptos, raw, }) => {
11
+ const signature = (0, crypto_1.createSign)((0, map_algorithm_1.mapEcAlgorithm)(kryptos))
11
12
  .update(data)
12
13
  .end()
13
- .sign((0, get_key_1.getSignKey)(kryptos));
14
- if (format === "raw") {
15
- return (0, raw_1.derToRaw)(kryptos, der).toString("base64url");
14
+ .sign({ key: (0, get_key_1.getSignKey)(kryptos), dsaEncoding });
15
+ if (raw) {
16
+ return (0, raw_1.derToRaw)(kryptos, signature);
16
17
  }
17
- return der.toString(format);
18
+ return signature;
18
19
  };
19
20
  exports.createEcSignature = createEcSignature;
20
- const verifyEcSignature = ({ data, format, kryptos, signature, }) => {
21
- let der;
22
- if (format === "raw") {
23
- der = (0, raw_1.rawToDer)(kryptos, Buffer.from(signature, "base64url"));
21
+ const verifyEcSignature = ({ data, dsaEncoding, encoding, kryptos, raw, signature, }) => {
22
+ let buffer;
23
+ if (raw) {
24
+ buffer = (0, raw_1.rawToDer)(kryptos, (0, is_1.isBuffer)(signature) ? signature : Buffer.from(signature, encoding));
25
+ }
26
+ else if ((0, is_1.isString)(signature)) {
27
+ buffer = Buffer.from(signature, encoding);
24
28
  }
25
29
  else {
26
- der = Buffer.from(signature, format);
30
+ buffer = signature;
27
31
  }
28
32
  return (0, crypto_1.createVerify)((0, map_algorithm_1.mapEcAlgorithm)(kryptos))
29
33
  .update(data)
30
34
  .end()
31
- .verify((0, get_key_1.getVerifyKey)(kryptos), der);
35
+ .verify({ key: (0, get_key_1.getVerifyKey)(kryptos), dsaEncoding }, buffer);
32
36
  };
33
37
  exports.verifyEcSignature = verifyEcSignature;
34
- const assertEcSignature = ({ data, format, kryptos, signature, }) => {
35
- if ((0, exports.verifyEcSignature)({ data, format, kryptos, signature }))
38
+ const assertEcSignature = ({ data, dsaEncoding, encoding, kryptos, raw, signature, }) => {
39
+ if ((0, exports.verifyEcSignature)({ data, dsaEncoding, encoding, kryptos, raw, signature }))
36
40
  return;
37
41
  throw new errors_1.EcError("Invalid signature");
38
42
  };
@@ -1 +1 @@
1
- {"version":3,"file":"ec-signature.js","sourceRoot":"","sources":["../../../src/utils/private/ec-signature.ts"],"names":[],"mappings":";;;AAAA,mCAAkD;AAClD,yCAAuC;AAEvC,uCAAqD;AACrD,mDAAiD;AACjD,+BAA2C;AAEpC,MAAM,iBAAiB,GAAG,CAAC,EAChC,IAAI,EACJ,MAAM,EACN,OAAO,GACkB,EAAU,EAAE;IACrC,MAAM,GAAG,GAAG,IAAA,mBAAU,EAAC,IAAA,8BAAc,EAAC,OAAO,CAAC,CAAC;SAC5C,MAAM,CAAC,IAAI,CAAC;SACZ,GAAG,EAAE;SACL,IAAI,CAAC,IAAA,oBAAU,EAAC,OAAO,CAAC,CAAC,CAAC;IAE7B,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;QACrB,OAAO,IAAA,cAAQ,EAAC,OAAO,EAAE,GAAG,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;IACtD,CAAC;IAED,OAAO,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AAC9B,CAAC,CAAC;AAfW,QAAA,iBAAiB,qBAe5B;AAEK,MAAM,iBAAiB,GAAG,CAAC,EAChC,IAAI,EACJ,MAAM,EACN,OAAO,EACP,SAAS,GACgB,EAAW,EAAE;IACtC,IAAI,GAAW,CAAC;IAEhB,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;QACrB,GAAG,GAAG,IAAA,cAAQ,EAAC,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC,CAAC;IAC/D,CAAC;SAAM,CAAC;QACN,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IACvC,CAAC;IAED,OAAO,IAAA,qBAAY,EAAC,IAAA,8BAAc,EAAC,OAAO,CAAC,CAAC;SACzC,MAAM,CAAC,IAAI,CAAC;SACZ,GAAG,EAAE;SACL,MAAM,CAAC,IAAA,sBAAY,EAAC,OAAO,CAAC,EAAE,GAAG,CAAC,CAAC;AACxC,CAAC,CAAC;AAlBW,QAAA,iBAAiB,qBAkB5B;AAEK,MAAM,iBAAiB,GAAG,CAAC,EAChC,IAAI,EACJ,MAAM,EACN,OAAO,EACP,SAAS,GACgB,EAAQ,EAAE;IACnC,IAAI,IAAA,yBAAiB,EAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC;QAAE,OAAO;IACpE,MAAM,IAAI,gBAAO,CAAC,mBAAmB,CAAC,CAAC;AACzC,CAAC,CAAC;AARW,QAAA,iBAAiB,qBAQ5B"}
1
+ {"version":3,"file":"ec-signature.js","sourceRoot":"","sources":["../../../src/utils/private/ec-signature.ts"],"names":[],"mappings":";;;AAAA,oCAAiD;AACjD,mCAAkD;AAClD,yCAAuC;AAEvC,uCAAqD;AACrD,mDAAiD;AACjD,+BAA2C;AAEpC,MAAM,iBAAiB,GAAG,CAAC,EAChC,IAAI,EACJ,WAAW,EACX,OAAO,EACP,GAAG,GACsB,EAAU,EAAE;IACrC,MAAM,SAAS,GAAG,IAAA,mBAAU,EAAC,IAAA,8BAAc,EAAC,OAAO,CAAC,CAAC;SAClD,MAAM,CAAC,IAAI,CAAC;SACZ,GAAG,EAAE;SACL,IAAI,CAAC,EAAE,GAAG,EAAE,IAAA,oBAAU,EAAC,OAAO,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC;IAEnD,IAAI,GAAG,EAAE,CAAC;QACR,OAAO,IAAA,cAAQ,EAAC,OAAO,EAAE,SAAS,CAAC,CAAC;IACtC,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC,CAAC;AAhBW,QAAA,iBAAiB,qBAgB5B;AAEK,MAAM,iBAAiB,GAAG,CAAC,EAChC,IAAI,EACJ,WAAW,EACX,QAAQ,EACR,OAAO,EACP,GAAG,EACH,SAAS,GACgB,EAAW,EAAE;IACtC,IAAI,MAAc,CAAC;IAEnB,IAAI,GAAG,EAAE,CAAC;QACR,MAAM,GAAG,IAAA,cAAQ,EACf,OAAO,EACP,IAAA,aAAQ,EAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CACnE,CAAC;IACJ,CAAC;SAAM,IAAI,IAAA,aAAQ,EAAC,SAAS,CAAC,EAAE,CAAC;QAC/B,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IAC5C,CAAC;SAAM,CAAC;QACN,MAAM,GAAG,SAAS,CAAC;IACrB,CAAC;IAED,OAAO,IAAA,qBAAY,EAAC,IAAA,8BAAc,EAAC,OAAO,CAAC,CAAC;SACzC,MAAM,CAAC,IAAI,CAAC;SACZ,GAAG,EAAE;SACL,MAAM,CAAC,EAAE,GAAG,EAAE,IAAA,sBAAY,EAAC,OAAO,CAAC,EAAE,WAAW,EAAE,EAAE,MAAM,CAAC,CAAC;AACjE,CAAC,CAAC;AAzBW,QAAA,iBAAiB,qBAyB5B;AAEK,MAAM,iBAAiB,GAAG,CAAC,EAChC,IAAI,EACJ,WAAW,EACX,QAAQ,EACR,OAAO,EACP,GAAG,EACH,SAAS,GACgB,EAAQ,EAAE;IACnC,IAAI,IAAA,yBAAiB,EAAC,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC;QAAE,OAAO;IACxF,MAAM,IAAI,gBAAO,CAAC,mBAAmB,CAAC,CAAC;AACzC,CAAC,CAAC;AAVW,QAAA,iBAAiB,qBAU5B"}
@@ -1 +1 @@
1
- {"version":3,"file":"get-key.d.ts","sourceRoot":"","sources":["../../../src/utils/private/get-key.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAG9C,eAAO,MAAM,UAAU,YAAa,UAAU,KAAG,MAQhD,CAAC;AAEF,eAAO,MAAM,YAAY,YAAa,UAAU,KAAG,MAQlD,CAAC"}
1
+ {"version":3,"file":"get-key.d.ts","sourceRoot":"","sources":["../../../src/utils/private/get-key.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAG9C,eAAO,MAAM,UAAU,GAAI,SAAS,UAAU,KAAG,MAQhD,CAAC;AAEF,eAAO,MAAM,YAAY,GAAI,SAAS,UAAU,KAAG,MAQlD,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"map-algorithm.d.ts","sourceRoot":"","sources":["../../../src/utils/private/map-algorithm.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAW,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAG9C,eAAO,MAAM,cAAc,YAAa,UAAU,KAAG,YAUpD,CAAC"}
1
+ {"version":3,"file":"map-algorithm.d.ts","sourceRoot":"","sources":["../../../src/utils/private/map-algorithm.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAc,MAAM,kBAAkB,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAG9C,eAAO,MAAM,cAAc,GAAI,SAAS,UAAU,KAAG,YAUpD,CAAC"}
@@ -4,7 +4,7 @@ exports.mapEcAlgorithm = void 0;
4
4
  const kryptos_1 = require("@lindorm/kryptos");
5
5
  const errors_1 = require("../../errors");
6
6
  const mapEcAlgorithm = (kryptos) => {
7
- if (!kryptos_1.Kryptos.isEc(kryptos)) {
7
+ if (!kryptos_1.KryptosKit.isEc(kryptos)) {
8
8
  throw new errors_1.EcError("Invalid kryptos type", { debug: { kryptos } });
9
9
  }
10
10
  if (kryptos.algorithm.endsWith("256"))
@@ -1 +1 @@
1
- {"version":3,"file":"map-algorithm.js","sourceRoot":"","sources":["../../../src/utils/private/map-algorithm.ts"],"names":[],"mappings":";;;AAAA,8CAAuD;AAEvD,yCAAuC;AAEhC,MAAM,cAAc,GAAG,CAAC,OAAmB,EAAgB,EAAE;IAClE,IAAI,CAAC,iBAAO,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QAC3B,MAAM,IAAI,gBAAO,CAAC,sBAAsB,EAAE,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC;IACpE,CAAC;IAED,IAAI,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,QAAQ,CAAC;IACvD,IAAI,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,QAAQ,CAAC;IACvD,IAAI,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,QAAQ,CAAC;IAEvD,MAAM,IAAI,gBAAO,CAAC,0BAA0B,EAAE,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC;AACxE,CAAC,CAAC;AAVW,QAAA,cAAc,kBAUzB"}
1
+ {"version":3,"file":"map-algorithm.js","sourceRoot":"","sources":["../../../src/utils/private/map-algorithm.ts"],"names":[],"mappings":";;;AAAA,8CAA0D;AAE1D,yCAAuC;AAEhC,MAAM,cAAc,GAAG,CAAC,OAAmB,EAAgB,EAAE;IAClE,IAAI,CAAC,oBAAU,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QAC9B,MAAM,IAAI,gBAAO,CAAC,sBAAsB,EAAE,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC;IACpE,CAAC;IAED,IAAI,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,QAAQ,CAAC;IACvD,IAAI,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,QAAQ,CAAC;IACvD,IAAI,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,QAAQ,CAAC;IAEvD,MAAM,IAAI,gBAAO,CAAC,0BAA0B,EAAE,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC;AACxE,CAAC,CAAC;AAVW,QAAA,cAAc,kBAUzB"}
@@ -1 +1 @@
1
- {"version":3,"file":"raw.d.ts","sourceRoot":"","sources":["../../../src/utils/private/raw.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAQvD,eAAO,MAAM,QAAQ,YAAa,UAAU,gBAAgB,MAAM,KAAG,MA2CpE,CAAC;AAEF,eAAO,MAAM,QAAQ,YAAa,UAAU,gBAAgB,MAAM,KAAG,MA8BpE,CAAC"}
1
+ {"version":3,"file":"raw.d.ts","sourceRoot":"","sources":["../../../src/utils/private/raw.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAQvD,eAAO,MAAM,QAAQ,GAAI,SAAS,UAAU,EAAE,cAAc,MAAM,KAAG,MA2CpE,CAAC;AAEF,eAAO,MAAM,QAAQ,GAAI,SAAS,UAAU,EAAE,cAAc,MAAM,KAAG,MA8BpE,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lindorm/ec",
3
- "version": "0.1.8",
3
+ "version": "0.2.1",
4
4
  "license": "AGPL-3.0-or-later",
5
5
  "author": "Jonn Nilsson",
6
6
  "repository": {
@@ -18,20 +18,23 @@
18
18
  "example": "ts-node example",
19
19
  "integration": "compd --file docker-compose.yml jest --config jest.config.integration.js --watch",
20
20
  "integration:focus": "compd --file docker-compose.yml jest --config jest.config.integration.js --watch $1",
21
+ "prettier": "prettier --write ./src/*",
21
22
  "test": "jest --watch --",
22
23
  "test:ci": "npm run test:unit",
23
24
  "test:integration": "jest --config jest.config.integration.js --",
24
25
  "test:unit": "jest --config jest.config.js --",
25
26
  "typecheck": "tsc --watch",
26
27
  "typecheck:ci": "tsc",
27
- "update": "ncu -u"
28
+ "update": "ncu -i",
29
+ "update:auto": "ncu -u"
28
30
  },
29
31
  "dependencies": {
30
- "@lindorm/errors": "^0.1.7",
31
- "@lindorm/kryptos": "^0.3.7"
32
+ "@lindorm/errors": "^0.1.9",
33
+ "@lindorm/is": "^0.1.8",
34
+ "@lindorm/kryptos": "^0.4.1"
32
35
  },
33
36
  "devDependencies": {
34
- "@lindorm/types": "^0.2.1"
37
+ "@lindorm/types": "^0.3.0"
35
38
  },
36
- "gitHead": "c3a0944569f1344aea5fa3431de8b36e4468a115"
39
+ "gitHead": "e66150efb6d7a4688bcece59481ab98d54865af3"
37
40
  }