@ldclabs/ic-auth 0.1.3 → 0.3.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.
package/dist/cbor.d.ts CHANGED
@@ -1,3 +1,3 @@
1
- export { decode, encode } from 'cborg';
1
+ export { decode, encode, rfc8949EncodeOptions } from 'cborg';
2
2
  export declare function deterministicEncode(data: any): Uint8Array;
3
3
  export declare function compareBytes(a: Uint8Array, b: Uint8Array): number;
package/dist/cbor.js CHANGED
@@ -1,8 +1,8 @@
1
- import { encode, Token } from 'cborg';
2
- export { decode, encode } from 'cborg';
1
+ import { encode, rfc8949EncodeOptions } from 'cborg';
2
+ export { decode, encode, rfc8949EncodeOptions } from 'cborg';
3
3
  // RFC 8949 Deterministic Encoding: The keys in every map MUST be sorted in the bytewise lexicographic order of their deterministic encodings.
4
4
  export function deterministicEncode(data) {
5
- return encode(data, { float64: true, mapSorter });
5
+ return encode(data, rfc8949EncodeOptions);
6
6
  }
7
7
  export function compareBytes(a, b) {
8
8
  if (a instanceof Uint8Array && b instanceof Uint8Array) {
@@ -22,19 +22,4 @@ export function compareBytes(a, b) {
22
22
  }
23
23
  throw new Error('ic-auth: compareBytes: invalid arguments');
24
24
  }
25
- function mapSorter(e1, e2) {
26
- if (e1[0] instanceof Token && e2[0] instanceof Token) {
27
- const t1 = e1[0];
28
- const t2 = e2[0];
29
- // different key types
30
- if (!t1._keyBytes) {
31
- t1._keyBytes = deterministicEncode(t1.value);
32
- }
33
- if (!t2._keyBytes) {
34
- t2._keyBytes = deterministicEncode(t2.value);
35
- }
36
- return compareBytes(t1._keyBytes, t2._keyBytes);
37
- }
38
- throw new Error('ic-auth: mapSorter: complex key types are not supported yet');
39
- }
40
25
  //# sourceMappingURL=cbor.js.map
package/dist/cbor.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cbor.js","sourceRoot":"","sources":["../src/cbor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,OAAO,CAAA;AAErC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,OAAO,CAAA;AAEtC,8IAA8I;AAC9I,MAAM,UAAU,mBAAmB,CAAC,IAAS;IAC3C,OAAO,MAAM,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAA;AACnD,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,CAAa,EAAE,CAAa;IACvD,IAAI,CAAC,YAAY,UAAU,IAAI,CAAC,YAAY,UAAU,EAAE,CAAC;QACvD,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YACZ,OAAO,CAAC,CAAA;QACV,CAAC;QAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAClC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBAClB,SAAQ;YACV,CAAC;YACD,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;QAC7B,CAAC;QAED,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC;YACxB,OAAO,CAAC,CAAC,CAAA;QACX,CAAC;QAED,OAAO,CAAC,CAAA;IACV,CAAC;IAED,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAA;AAC7D,CAAC;AAID,SAAS,SAAS,CAAC,EAAuB,EAAE,EAAuB;IACjE,IAAI,EAAE,CAAC,CAAC,CAAC,YAAY,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC,YAAY,KAAK,EAAE,CAAC;QACrD,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,CAAY,CAAA;QAC3B,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,CAAY,CAAA;QAE3B,sBAAsB;QACtB,IAAI,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC;YAClB,EAAE,CAAC,SAAS,GAAG,mBAAmB,CAAC,EAAE,CAAC,KAAK,CAAC,CAAA;QAC9C,CAAC;QAED,IAAI,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC;YAClB,EAAE,CAAC,SAAS,GAAG,mBAAmB,CAAC,EAAE,CAAC,KAAK,CAAC,CAAA;QAC9C,CAAC;QAED,OAAO,YAAY,CAAC,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,CAAA;IACjD,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,6DAA6D,CAAC,CAAA;AAChF,CAAC"}
1
+ {"version":3,"file":"cbor.js","sourceRoot":"","sources":["../src/cbor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,oBAAoB,EAAE,MAAM,OAAO,CAAA;AAEpD,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,oBAAoB,EAAE,MAAM,OAAO,CAAA;AAE5D,8IAA8I;AAC9I,MAAM,UAAU,mBAAmB,CAAC,IAAS;IAC3C,OAAO,MAAM,CAAC,IAAI,EAAE,oBAAoB,CAAC,CAAA;AAC3C,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,CAAa,EAAE,CAAa;IACvD,IAAI,CAAC,YAAY,UAAU,IAAI,CAAC,YAAY,UAAU,EAAE,CAAC;QACvD,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YACZ,OAAO,CAAC,CAAA;QACV,CAAC;QAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAClC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBAClB,SAAQ;YACV,CAAC;YACD,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;QAC7B,CAAC;QAED,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC;YACxB,OAAO,CAAC,CAAC,CAAA;QACX,CAAC;QAED,OAAO,CAAC,CAAA;IACV,CAAC;IAED,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAA;AAC7D,CAAC"}
@@ -1,9 +1,13 @@
1
1
  import { SignIdentity } from '@dfinity/agent';
2
2
  import { DelegationIdentity } from '@dfinity/identity';
3
3
  import { SignedEnvelopeCompact } from './types.js';
4
+ export { sha3_256 } from '@noble/hashes/sha3';
4
5
  export { DelegationIdentity, Ed25519KeyIdentity, Ed25519PublicKey } from '@dfinity/identity';
5
6
  export declare function toDelegationIdentity(identity: SignIdentity): DelegationIdentity;
6
7
  export declare function signArbitrary(identity: DelegationIdentity, data: Uint8Array): Promise<SignedEnvelopeCompact>;
7
- export declare function signCborMessage(identity: DelegationIdentity, obj: any): Promise<SignedEnvelopeCompact>;
8
+ export declare function digestMessage(obj: any): Uint8Array;
9
+ export declare function signMessage(identity: DelegationIdentity, obj: any): Promise<SignedEnvelopeCompact>;
10
+ export declare function toBase64(bytes: Uint8Array): string;
11
+ export declare function fromBase64(str: string): Uint8Array;
8
12
  export declare function bytesToBase64Url(bytes: Uint8Array): string;
9
13
  export declare function base64ToBytes(str: string): Uint8Array;
package/dist/identity.js CHANGED
@@ -2,6 +2,7 @@ import { DelegationChain, DelegationIdentity } from '@dfinity/identity';
2
2
  import { sha3_256 } from '@noble/hashes/sha3';
3
3
  import { deterministicEncode } from './cbor.js';
4
4
  import { toSignedDelegationCompact } from './types.js';
5
+ export { sha3_256 } from '@noble/hashes/sha3';
5
6
  export { DelegationIdentity, Ed25519KeyIdentity, Ed25519PublicKey } from '@dfinity/identity';
6
7
  export function toDelegationIdentity(identity) {
7
8
  return identity instanceof DelegationIdentity
@@ -20,18 +21,42 @@ export async function signArbitrary(identity, data) {
20
21
  h: data
21
22
  };
22
23
  }
23
- export async function signCborMessage(identity, obj) {
24
+ export function digestMessage(obj) {
24
25
  const data = deterministicEncode(obj);
25
- const digest = sha3_256(data);
26
- return signArbitrary(identity, digest);
26
+ return sha3_256(data);
27
+ }
28
+ export async function signMessage(identity, obj) {
29
+ return signArbitrary(identity, digestMessage(obj));
30
+ }
31
+ export function toBase64(bytes) {
32
+ if (typeof Buffer !== 'undefined') {
33
+ return Buffer.from(bytes).toString('base64');
34
+ }
35
+ let result = '';
36
+ const chunk = 0x8000;
37
+ for (let i = 0; i < bytes.length; i += chunk) {
38
+ result += String.fromCharCode(...bytes.subarray(i, i + chunk));
39
+ }
40
+ return btoa(result);
41
+ }
42
+ export function fromBase64(str) {
43
+ if (typeof Buffer !== 'undefined') {
44
+ return new Uint8Array(Buffer.from(str, 'base64'));
45
+ }
46
+ const binary = atob(str);
47
+ const out = new Uint8Array(binary.length);
48
+ for (let i = 0; i < binary.length; i++)
49
+ out[i] = binary.charCodeAt(i);
50
+ return out;
27
51
  }
28
52
  export function bytesToBase64Url(bytes) {
29
- return btoa(String.fromCodePoint(...bytes))
53
+ return toBase64(bytes)
30
54
  .replaceAll('+', '-')
31
55
  .replaceAll('/', '_')
32
56
  .replaceAll('=', '');
33
57
  }
34
58
  export function base64ToBytes(str) {
35
- return Uint8Array.from(atob(str.replaceAll('-', '+').replaceAll('_', '/')), (m) => m.codePointAt(0));
59
+ const padded = str.replaceAll('-', '+').replaceAll('_', '/');
60
+ return fromBase64(padded);
36
61
  }
37
62
  //# sourceMappingURL=identity.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"identity.js","sourceRoot":"","sources":["../src/identity.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AACvE,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAC7C,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAA;AAC/C,OAAO,EAAyB,yBAAyB,EAAE,MAAM,YAAY,CAAA;AAE7E,OAAO,EACL,kBAAkB,EAClB,kBAAkB,EAClB,gBAAgB,EACjB,MAAM,mBAAmB,CAAA;AAE1B,MAAM,UAAU,oBAAoB,CAClC,QAAsB;IAEtB,OAAO,QAAQ,YAAY,kBAAkB;QAC3C,CAAC,CAAC,QAAQ;QACV,CAAC,CAAC,kBAAkB,CAAC,cAAc,CAC/B,QAAQ,EACR,eAAe,CAAC,eAAe,CAAC,EAAE,EAAE,QAAQ,CAAC,YAAY,EAAE,CAAC,KAAK,EAAE,CAAC,CACrE,CAAA;AACP,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,QAA4B,EAC5B,IAAgB;IAEhB,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACrC,MAAM,WAAW,GAAG,QAAQ;SACzB,aAAa,EAAE;SACf,WAAW,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAA;IAC7C,OAAO;QACL,CAAC,EAAE,QAAQ,CAAC,YAAY,EAAE,CAAC,KAAK,EAAE;QAClC,CAAC,EAAE,IAAI,UAAU,CAAC,GAAG,CAAC;QACtB,CAAC,EAAE,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS;QACnD,CAAC,EAAE,IAAI;KACR,CAAA;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,QAA4B,EAC5B,GAAQ;IAER,MAAM,IAAI,GAAG,mBAAmB,CAAC,GAAG,CAAC,CAAA;IACrC,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAA;IAC7B,OAAO,aAAa,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAA;AACxC,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,KAAiB;IAChD,OAAO,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,KAAK,CAAC,CAAC;SACxC,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC;SACpB,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC;SACpB,UAAU,CAAC,GAAG,EAAE,EAAE,CAAC,CAAA;AACxB,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,GAAW;IACvC,OAAO,UAAU,CAAC,IAAI,CACpB,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,EACnD,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAE,CACzB,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"identity.js","sourceRoot":"","sources":["../src/identity.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ldclabs/ic-auth",
3
- "version": "0.1.3",
3
+ "version": "0.3.0",
4
4
  "type": "module",
5
5
  "description": "The Typescript version of the client SDK for the IC Auth.",
6
6
  "license": "MIT",
@@ -32,23 +32,23 @@
32
32
  "ncu": "npx npm-check-updates -u"
33
33
  },
34
34
  "peerDependencies": {
35
- "@dfinity/candid": ">=3.2.0",
36
35
  "@dfinity/agent": ">=3.2.0",
36
+ "@dfinity/candid": ">=3.2.0",
37
37
  "@dfinity/identity": ">=3.2.0",
38
38
  "@dfinity/principal": ">=3.2.0",
39
39
  "@noble/hashes": ">=1.8.0",
40
- "cborg": ">=4.2.0"
40
+ "cborg": ">=4.3.0"
41
41
  },
42
42
  "devDependencies": {
43
43
  "@dfinity/agent": ">=3.2.0",
44
44
  "@dfinity/identity": ">=3.2.0",
45
45
  "@dfinity/principal": ">=3.2.0",
46
46
  "@noble/hashes": "^1.8.0",
47
- "cborg": ">=4.2.0",
48
47
  "@types/eslint": "^9.6.1",
49
48
  "@types/node": "24.3.0",
50
49
  "@typescript-eslint/eslint-plugin": "^8.42.0",
51
50
  "@typescript-eslint/parser": "^8.42.0",
51
+ "cborg": "^4.3.1",
52
52
  "eslint": "^9.34.0",
53
53
  "eslint-config-prettier": "^10.1.8",
54
54
  "eslint-plugin-import": "^2.32.0",