signify-ts 0.1.0 → 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 (105) hide show
  1. package/README.md +101 -5
  2. package/dist/buffer-polyfill.d.ts +1 -0
  3. package/dist/exports.d.ts +40 -0
  4. package/dist/index.d.ts +4 -1
  5. package/dist/keri/app/aiding.d.ts +138 -0
  6. package/dist/keri/app/clienting.d.ts +182 -0
  7. package/dist/keri/app/contacting.d.ts +93 -0
  8. package/dist/keri/app/controller.d.ts +49 -0
  9. package/dist/keri/app/coring.d.ts +121 -0
  10. package/dist/keri/app/credentialing.d.ts +239 -0
  11. package/dist/keri/app/escrowing.d.ts +19 -0
  12. package/dist/keri/app/exchanging.d.ts +60 -0
  13. package/dist/keri/app/grouping.d.ts +44 -0
  14. package/dist/keri/app/habery.d.ts +48 -0
  15. package/dist/keri/app/notifying.d.ts +34 -0
  16. package/dist/keri/core/authing.d.ts +10 -0
  17. package/dist/keri/core/bexter.d.ts +7 -0
  18. package/dist/keri/core/cigar.d.ts +8 -8
  19. package/dist/keri/core/cipher.d.ts +5 -5
  20. package/dist/keri/core/core.d.ts +59 -68
  21. package/dist/keri/core/counter.d.ts +43 -0
  22. package/dist/keri/core/decrypter.d.ts +10 -10
  23. package/dist/keri/core/diger.d.ts +21 -21
  24. package/dist/keri/core/encrypter.d.ts +9 -9
  25. package/dist/keri/core/eventing.d.ts +54 -0
  26. package/dist/keri/core/httping.d.ts +44 -0
  27. package/dist/keri/core/indexer.d.ts +98 -88
  28. package/dist/keri/core/keeping.d.ts +103 -1
  29. package/dist/keri/core/kering.d.ts +5 -5
  30. package/dist/keri/core/manager.d.ts +174 -151
  31. package/dist/keri/core/matter.d.ts +116 -47
  32. package/dist/keri/core/number.d.ts +7 -0
  33. package/dist/keri/core/pather.d.ts +7 -0
  34. package/dist/keri/core/prefixer.d.ts +15 -0
  35. package/dist/keri/core/saider.d.ts +23 -0
  36. package/dist/keri/core/salter.d.ts +23 -0
  37. package/dist/keri/core/seqner.d.ts +15 -0
  38. package/dist/keri/core/serder.d.ts +31 -0
  39. package/dist/keri/core/siger.d.ts +18 -18
  40. package/dist/keri/core/signer.d.ts +34 -34
  41. package/dist/keri/core/tholder.d.ts +29 -0
  42. package/dist/keri/core/utils.d.ts +20 -14
  43. package/dist/keri/core/vdring.d.ts +16 -0
  44. package/dist/keri/core/verfer.d.ts +13 -0
  45. package/dist/keri/end/ending.d.ts +13 -0
  46. package/dist/math.d.ts +1 -0
  47. package/dist/ready.d.ts +1 -0
  48. package/dist/signify-ts.cjs +7835 -0
  49. package/dist/signify-ts.cjs.development.js +9493 -5
  50. package/dist/signify-ts.cjs.development.js.map +1 -1
  51. package/dist/signify-ts.cjs.map +7 -0
  52. package/dist/signify-ts.cjs.production.min.js +1 -1
  53. package/dist/signify-ts.cjs.production.min.js.map +1 -1
  54. package/dist/signify-ts.esm.js +9341 -5
  55. package/dist/signify-ts.esm.js.map +1 -1
  56. package/dist/signify-ts.mjs +7811 -0
  57. package/dist/signify-ts.mjs.map +7 -0
  58. package/package.json +51 -49
  59. package/src/buffer-polyfill.ts +5 -0
  60. package/src/exports.ts +44 -0
  61. package/src/index.ts +4 -6
  62. package/src/keri/app/aiding.ts +493 -0
  63. package/src/keri/app/clienting.ts +492 -0
  64. package/src/keri/app/contacting.ts +188 -0
  65. package/src/keri/app/controller.ts +372 -0
  66. package/src/keri/app/coring.ts +225 -0
  67. package/src/keri/app/credentialing.ts +820 -0
  68. package/src/keri/app/escrowing.ts +34 -0
  69. package/src/keri/app/exchanging.ts +220 -0
  70. package/src/keri/app/grouping.ts +90 -0
  71. package/src/keri/app/habery.ts +185 -0
  72. package/src/keri/app/notifying.ts +69 -0
  73. package/src/keri/core/authing.ts +117 -0
  74. package/src/keri/core/bexter.ts +138 -0
  75. package/src/keri/core/cigar.ts +11 -12
  76. package/src/keri/core/cipher.ts +23 -14
  77. package/src/keri/core/core.ts +249 -97
  78. package/src/keri/core/counter.ts +273 -0
  79. package/src/keri/core/decrypter.ts +48 -34
  80. package/src/keri/core/diger.ts +25 -24
  81. package/src/keri/core/encrypter.ts +37 -27
  82. package/src/keri/core/eventing.ts +581 -0
  83. package/src/keri/core/httping.ts +209 -0
  84. package/src/keri/core/indexer.ts +314 -211
  85. package/src/keri/core/keeping.ts +679 -4
  86. package/src/keri/core/kering.ts +4 -6
  87. package/src/keri/core/manager.ts +759 -450
  88. package/src/keri/core/matter.ts +404 -135
  89. package/src/keri/core/number.ts +66 -0
  90. package/src/keri/core/pather.ts +98 -0
  91. package/src/keri/core/prefixer.ts +233 -0
  92. package/src/keri/core/saider.ts +186 -0
  93. package/src/keri/core/salter.ts +76 -41
  94. package/src/keri/core/seqner.ts +46 -0
  95. package/src/keri/core/serder.ts +163 -0
  96. package/src/keri/core/siger.ts +19 -18
  97. package/src/keri/core/signer.ts +74 -53
  98. package/src/keri/core/tholder.ts +218 -0
  99. package/src/keri/core/utils.ts +120 -45
  100. package/src/keri/core/vdring.ts +94 -0
  101. package/src/keri/core/verfer.ts +25 -11
  102. package/src/keri/end/ending.ts +170 -0
  103. package/src/math.ts +3 -0
  104. package/src/ready.ts +5 -0
  105. package/src/keri/core/tsconfig.json +0 -100
@@ -1,36 +1,47 @@
1
- import {Signer} from "./signer";
1
+ import { Signer } from './signer';
2
2
 
3
- export {};
4
- const { Matter, MtrDex } = require('./matter');
5
- const { EmptyMaterialError } = require('./kering')
6
- import libsodium from 'libsodium-wrappers-sumo';
3
+ import { Matter, MtrDex } from './matter';
4
+ import { EmptyMaterialError } from './kering';
5
+ import libsodium from 'libsodium-wrappers-sumo';
7
6
 
8
- export const enum Tier {
9
- low = "low",
10
- med = "med",
11
- high = "high"
7
+ export enum Tier {
8
+ low = 'low',
9
+ med = 'med',
10
+ high = 'high',
12
11
  }
13
12
 
14
13
  interface SalterArgs {
15
- raw?: Uint8Array | undefined
16
- code? :string
17
- tier?:string
18
- qb64b? :Uint8Array | undefined
19
- qb64?: string
20
- qb2?: Uint8Array | undefined
14
+ raw?: Uint8Array | undefined;
15
+ code?: string;
16
+ tier?: Tier;
17
+ qb64b?: Uint8Array | undefined;
18
+ qb64?: string;
19
+ qb2?: Uint8Array | undefined;
21
20
  }
22
21
  export class Salter extends Matter {
22
+ private readonly _tier: Tier | null;
23
23
 
24
- constructor({raw, code = MtrDex.Salt_128, tier=Tier.low, qb64, qb64b, qb2}:SalterArgs) {
24
+ constructor({
25
+ raw,
26
+ code = MtrDex.Salt_128,
27
+ tier = Tier.low,
28
+ qb64,
29
+ qb64b,
30
+ qb2,
31
+ }: SalterArgs) {
25
32
  try {
26
- super({raw, code, qb64, qb64b, qb2});
33
+ super({ raw, code, qb64, qb64b, qb2 });
27
34
  } catch (e) {
28
- if(e instanceof EmptyMaterialError) {
35
+ if (e instanceof EmptyMaterialError) {
29
36
  if (code == MtrDex.Salt_128) {
30
- let salt = libsodium.randombytes_buf(libsodium.crypto_pwhash_SALTBYTES);
31
- super({raw: salt, code: code})
37
+ const salt = libsodium.randombytes_buf(
38
+ libsodium.crypto_pwhash_SALTBYTES
39
+ );
40
+ super({ raw: salt, code: code });
32
41
  } else {
33
- throw new Error("invalid code for Salter, only Salt_128 accepted")
42
+ throw new Error(
43
+ 'invalid code for Salter, only Salt_128 accepted'
44
+ );
34
45
  }
35
46
  } else {
36
47
  throw e;
@@ -38,48 +49,72 @@ export class Salter extends Matter {
38
49
  }
39
50
 
40
51
  if (this.code != MtrDex.Salt_128) {
41
- throw new Error("invalid code for Salter, only Salt_128 accepted")
52
+ throw new Error('invalid code for Salter, only Salt_128 accepted');
42
53
  }
43
54
 
44
- this.tier = tier !== null ? tier : Tier.low
55
+ this._tier = tier !== null ? tier : Tier.low;
45
56
  }
46
57
 
47
- private stretch(size: number = 32, path: string = "", tier: Tier | null = null, temp: boolean = false): Uint8Array {
58
+ private stretch(
59
+ size: number = 32,
60
+ path: string = '',
61
+ tier: Tier | null = null,
62
+ temp: boolean = false
63
+ ): Uint8Array {
48
64
  tier = tier == null ? this.tier : tier;
49
65
 
50
- let opslimit: number, memlimit: number
66
+ let opslimit: number, memlimit: number;
51
67
 
68
+ // Harcoded values based on keripy
52
69
  if (temp) {
53
- opslimit = libsodium.crypto_pwhash_OPSLIMIT_MIN
54
- memlimit = libsodium.crypto_pwhash_MEMLIMIT_MIN
55
-
70
+ opslimit = 1; //libsodium.crypto_pwhash_OPSLIMIT_MIN
71
+ memlimit = 8192; //libsodium.crypto_pwhash_MEMLIMIT_MIN
56
72
  } else {
57
73
  switch (tier) {
58
74
  case Tier.low:
59
- opslimit = libsodium.crypto_pwhash_OPSLIMIT_INTERACTIVE
60
- memlimit = libsodium.crypto_pwhash_MEMLIMIT_INTERACTIVE
75
+ opslimit = 2; //libsodium.crypto_pwhash_OPSLIMIT_INTERACTIVE
76
+ memlimit = 67108864; //libsodium.crypto_pwhash_MEMLIMIT_INTERACTIVE
61
77
  break;
62
78
  case Tier.med:
63
- opslimit = libsodium.crypto_pwhash_OPSLIMIT_MODERATE
64
- memlimit = libsodium.crypto_pwhash_MEMLIMIT_MODERATE
79
+ opslimit = 3; //libsodium.crypto_pwhash_OPSLIMIT_MODERATE
80
+ memlimit = 268435456; //libsodium.crypto_pwhash_MEMLIMIT_MODERATE
65
81
  break;
66
82
  case Tier.high:
67
- opslimit = libsodium.crypto_pwhash_OPSLIMIT_SENSITIVE
68
- memlimit = libsodium.crypto_pwhash_MEMLIMIT_SENSITIVE
83
+ opslimit = 4; //libsodium.crypto_pwhash_OPSLIMIT_SENSITIVE
84
+ memlimit = 1073741824; //libsodium.crypto_pwhash_MEMLIMIT_SENSITIVE
69
85
  break;
70
86
  default:
71
- throw new Error(`Unsupported security tier = ${tier}.`)
87
+ throw new Error(`Unsupported security tier = ${tier}.`);
72
88
  }
73
89
  }
74
90
 
75
- return libsodium.crypto_pwhash(size, path, this.raw, opslimit, memlimit, libsodium.crypto_pwhash_ALG_DEFAULT)
91
+ return libsodium.crypto_pwhash(
92
+ size,
93
+ path,
94
+ this.raw,
95
+ opslimit,
96
+ memlimit,
97
+ libsodium.crypto_pwhash_ALG_ARGON2ID13
98
+ );
76
99
  }
77
100
 
78
- signer(code: string=MtrDex.Ed25519_Seed, transferable: boolean=true, path: string = "",
79
- tier: Tier | null = null, temp:boolean = false): Signer {
80
- let seed = this.stretch(Matter._rawSize(code), path, tier, temp)
101
+ signer(
102
+ code: string = MtrDex.Ed25519_Seed,
103
+ transferable: boolean = true,
104
+ path: string = '',
105
+ tier: Tier | null = null,
106
+ temp: boolean = false
107
+ ): Signer {
108
+ const seed = this.stretch(Matter._rawSize(code), path, tier, temp);
81
109
 
82
- return new Signer({raw: seed, code: code, transferable: transferable})
110
+ return new Signer({
111
+ raw: seed,
112
+ code: code,
113
+ transferable: transferable,
114
+ });
83
115
  }
84
116
 
85
- }
117
+ get tier(): Tier | null {
118
+ return this._tier;
119
+ }
120
+ }
@@ -0,0 +1,46 @@
1
+ import { Matter, MatterArgs, MtrDex } from './matter';
2
+ import { intToBytes, bytesToInt } from './utils';
3
+ /**
4
+ * @description Seqner: subclass of Matter, cryptographic material, for ordinal numbers
5
+ * such as sequence numbers or first seen ordering numbers.
6
+ * Seqner provides fully qualified format for ordinals (sequence numbers etc)
7
+ * when provided as attached cryptographic material elements.
8
+ */
9
+ export class Seqner extends Matter {
10
+ constructor({
11
+ raw,
12
+ code = MtrDex.Salt_128,
13
+ qb64,
14
+ qb64b,
15
+ qb2,
16
+ sn,
17
+ snh,
18
+ ...kwa
19
+ }: MatterArgs & { sn?: number; snh?: string }) {
20
+ if (!raw && !qb64b && !qb64 && !qb2) {
21
+ if (sn === undefined) {
22
+ if (snh === undefined) {
23
+ sn = 0;
24
+ } else {
25
+ sn = parseInt(snh, 16);
26
+ }
27
+ }
28
+
29
+ raw = intToBytes(sn, Matter._rawSize(MtrDex.Salt_128));
30
+ }
31
+
32
+ super({ raw, code, qb64, qb64b, qb2, ...kwa });
33
+
34
+ if (this.code !== MtrDex.Salt_128) {
35
+ throw new Error(`Invalid code = ${this.code} for Seqner.`);
36
+ }
37
+ }
38
+
39
+ get sn(): number {
40
+ return bytesToInt(this.raw); //To check if other readUInt64 is needed
41
+ }
42
+
43
+ get snh(): string {
44
+ return this.sn.toString(16);
45
+ }
46
+ }
@@ -0,0 +1,163 @@
1
+ import { MtrDex } from './matter';
2
+ import {
3
+ deversify,
4
+ Dict,
5
+ Ident,
6
+ Serials,
7
+ versify,
8
+ Version,
9
+ Versionage,
10
+ } from './core';
11
+ import { Verfer } from './verfer';
12
+ import { Diger } from './diger';
13
+ import { CesrNumber } from './number';
14
+
15
+ export class Serder {
16
+ private _kind: Serials;
17
+ private _raw: string = '';
18
+ private _ked: Dict<any> = {};
19
+ private _ident: Ident = Ident.KERI;
20
+ private _size: number = 0;
21
+ private _version: Version = Versionage;
22
+ private readonly _code: string;
23
+
24
+ constructor(
25
+ ked: Dict<any>,
26
+ kind: Serials = Serials.JSON,
27
+ code: string = MtrDex.Blake3_256
28
+ ) {
29
+ this._code = code;
30
+ this._kind = kind;
31
+ this.ked = ked;
32
+ }
33
+
34
+ set ked(ked: Dict<any>) {
35
+ const [raw, ident, kind, kd, version] = this._exhale(ked, this._kind);
36
+ const size = raw.length;
37
+ this._raw = raw;
38
+ this._ident = ident;
39
+ this._ked = kd;
40
+ this._kind = kind;
41
+ this._size = size;
42
+ this._version = version;
43
+ }
44
+
45
+ get pre(): string {
46
+ return this._ked['i'];
47
+ }
48
+
49
+ get ked(): Dict<any> {
50
+ return this._ked;
51
+ }
52
+
53
+ get code(): string {
54
+ return this._code;
55
+ }
56
+
57
+ get raw(): string {
58
+ return this._raw;
59
+ }
60
+
61
+ get sner(): CesrNumber {
62
+ return new CesrNumber({}, this.ked['s']);
63
+ }
64
+
65
+ get sn(): number {
66
+ return this.sner.num;
67
+ }
68
+
69
+ get kind(): Serials {
70
+ return this._kind;
71
+ }
72
+
73
+ private _exhale(
74
+ ked: Dict<any>,
75
+ kind: Serials
76
+ ): [string, Ident, Serials, Dict<any>, Version] {
77
+ return sizeify(ked, kind);
78
+ }
79
+
80
+ get ident(): Ident {
81
+ return this._ident;
82
+ }
83
+
84
+ get size(): number {
85
+ return this._size;
86
+ }
87
+
88
+ get version(): Version {
89
+ return this._version;
90
+ }
91
+ get verfers(): Verfer[] {
92
+ let keys: any = [];
93
+ if ('k' in this._ked) {
94
+ // establishment event
95
+ keys = this._ked['k'];
96
+ } else {
97
+ // non-establishment event
98
+ keys = [];
99
+ }
100
+ // create a new Verfer for each key
101
+ const verfers = [];
102
+ for (const key of keys) {
103
+ verfers.push(new Verfer({ qb64: key }));
104
+ }
105
+ return verfers;
106
+ }
107
+
108
+ get digers(): Diger[] {
109
+ let keys: any = [];
110
+ if ('n' in this._ked) {
111
+ // establishment event
112
+ keys = this._ked['n'];
113
+ } else {
114
+ // non-establishment event
115
+ keys = [];
116
+ }
117
+ // create a new Verfer for each key
118
+ const digers = [];
119
+ for (const key of keys) {
120
+ digers.push(new Diger({ qb64: key }));
121
+ }
122
+ return digers;
123
+ }
124
+
125
+ pretty() {
126
+ return JSON.stringify(this._ked, undefined, 2);
127
+ }
128
+ }
129
+
130
+ export function dumps(ked: Object, kind: Serials.JSON): string {
131
+ if (kind == Serials.JSON) {
132
+ return JSON.stringify(ked);
133
+ } else {
134
+ throw new Error('unsupported event encoding');
135
+ }
136
+ }
137
+
138
+ export function sizeify(
139
+ ked: Dict<any>,
140
+ kind?: Serials
141
+ ): [string, Ident, Serials, Dict<any>, Version] {
142
+ if (!('v' in ked)) {
143
+ throw new Error('Missing or empty version string');
144
+ }
145
+
146
+ const [ident, knd, version] = deversify(ked['v'] as string);
147
+ if (version != Versionage) {
148
+ throw new Error(`unsupported version ${version.toString()}`);
149
+ }
150
+
151
+ if (kind == undefined) {
152
+ kind = knd;
153
+ }
154
+
155
+ let raw = dumps(ked, kind);
156
+ const size = raw.length;
157
+
158
+ ked['v'] = versify(ident, version, kind, size);
159
+
160
+ raw = dumps(ked, kind);
161
+
162
+ return [raw, ident, kind, ked, version];
163
+ }
@@ -1,5 +1,5 @@
1
- import {IdxSigDex, Indexer, IndexerArgs} from "./indexer";
2
- import {Verfer} from "./verfer";
1
+ import { IdxSigDex, Indexer, IndexerArgs } from './indexer';
2
+ import { Verfer } from './verfer';
3
3
 
4
4
  /**
5
5
  Siger is subclass of Indexer, indexed signature material,
@@ -17,23 +17,24 @@ import {Verfer} from "./verfer";
17
17
  **/
18
18
 
19
19
  export class Siger extends Indexer {
20
-
21
- private _verfer?: Verfer
22
- constructor({raw, code, qb64, qb64b, qb2}: IndexerArgs, verfer?: Verfer) {
23
- super({raw, code, qb64, qb64b, qb2});
24
-
25
- if (!IdxSigDex.has(this.code)) {
26
- throw new Error(`Invalid code = ${this.code} for Siger.`)
20
+ private _verfer?: Verfer;
21
+ constructor(
22
+ { raw, code, index, ondex, qb64, qb64b, qb2 }: IndexerArgs,
23
+ verfer?: Verfer
24
+ ) {
25
+ super({ raw, code, index, ondex, qb64, qb64b, qb2 });
26
+
27
+ if (!IdxSigDex.has(this.code)) {
28
+ throw new Error(`Invalid code = ${this.code} for Siger.`);
29
+ }
30
+ this._verfer = verfer;
27
31
  }
28
- this._verfer = verfer
29
- }
30
-
31
- get verfer(): Verfer | undefined {
32
- return this._verfer;
33
- }
34
32
 
35
- set verfer(verfer: Verfer | undefined) {
36
- this._verfer = verfer;
37
- }
33
+ get verfer(): Verfer | undefined {
34
+ return this._verfer;
35
+ }
38
36
 
37
+ set verfer(verfer: Verfer | undefined) {
38
+ this._verfer = verfer;
39
+ }
39
40
  }
@@ -1,14 +1,14 @@
1
- import {EmptyMaterialError} from "./kering";
1
+ import { EmptyMaterialError } from './kering';
2
2
 
3
3
  export {};
4
4
  import libsodium from 'libsodium-wrappers-sumo';
5
- import {Matter} from './matter';
6
- import {MtrDex} from './matter';
7
- import {Verfer} from "./verfer";
8
- import {Cigar} from "./cigar";
9
- import {Siger} from "./siger";
10
- import {IdrDex} from "./indexer";
11
-
5
+ import { Matter } from './matter';
6
+ import { MtrDex } from './matter';
7
+ import { Verfer } from './verfer';
8
+ import { Cigar } from './cigar';
9
+ import { Siger } from './siger';
10
+ import { IdrDex } from './indexer';
11
+ import { Buffer } from 'buffer';
12
12
 
13
13
  /**
14
14
  * @description Signer is Matter subclass with method to create signature of serialization
@@ -19,48 +19,57 @@ import {IdrDex} from "./indexer";
19
19
  as cipher suite for creating key-pair.
20
20
  */
21
21
  interface SignerArgs {
22
- raw?: Uint8Array | undefined
23
- code?: string
24
- qb64b?: Uint8Array | undefined
25
- qb64?: string
26
- qb2?: Uint8Array | undefined
27
- transferable?: boolean
22
+ raw?: Uint8Array | undefined;
23
+ code?: string;
24
+ qb64b?: Uint8Array | undefined;
25
+ qb64?: string;
26
+ qb2?: Uint8Array | undefined;
27
+ transferable?: boolean;
28
28
  }
29
29
 
30
30
  export class Signer extends Matter {
31
- private readonly _sign
32
- private readonly _verfer: Verfer
33
-
34
- constructor({raw, code = MtrDex.Ed25519_Seed, qb64, qb64b, qb2, transferable = true}: SignerArgs) {
31
+ private readonly _sign: Function;
32
+ private readonly _verfer: Verfer;
33
+
34
+ constructor({
35
+ raw,
36
+ code = MtrDex.Ed25519_Seed,
37
+ qb64,
38
+ qb64b,
39
+ qb2,
40
+ transferable = true,
41
+ }: SignerArgs) {
35
42
  try {
36
- super({raw, code, qb64, qb64b, qb2})
43
+ super({ raw, code, qb64, qb64b, qb2 });
37
44
  } catch (e) {
38
45
  if (e instanceof EmptyMaterialError) {
39
46
  if (code == MtrDex.Ed25519_Seed) {
40
- let raw = libsodium.randombytes_buf(libsodium.crypto_sign_SEEDBYTES);
41
- super({raw, code, qb64, qb64b, qb2})
47
+ const raw = libsodium.randombytes_buf(
48
+ libsodium.crypto_sign_SEEDBYTES
49
+ );
50
+ super({ raw, code, qb64, qb64b, qb2 });
42
51
  } else {
43
- throw new Error(`Unsupported signer code = ${code}.`)
52
+ throw new Error(`Unsupported signer code = ${code}.`);
44
53
  }
45
54
  } else {
46
- throw e
55
+ throw e;
47
56
  }
48
57
  }
49
- let verfer
58
+ let verfer;
50
59
  if (this.code == MtrDex.Ed25519_Seed) {
51
- this._sign = this._ed25519
52
- const keypair = libsodium.crypto_sign_seed_keypair(this.raw)
53
- verfer = new Verfer({raw: keypair.publicKey, code: transferable ? MtrDex.Ed25519 : MtrDex.Ed25519N})
54
-
60
+ this._sign = this._ed25519;
61
+ const keypair = libsodium.crypto_sign_seed_keypair(this.raw);
62
+ verfer = new Verfer({
63
+ raw: keypair.publicKey,
64
+ code: transferable ? MtrDex.Ed25519 : MtrDex.Ed25519N,
65
+ });
55
66
  } else {
56
- throw new Error(`Unsupported signer code = ${this.code}.`)
67
+ throw new Error(`Unsupported signer code = ${this.code}.`);
57
68
  }
58
69
 
59
- this._verfer = verfer
60
-
70
+ this._verfer = verfer;
61
71
  }
62
72
 
63
-
64
73
  /**
65
74
  * @description Property verfer:
66
75
  Returns Verfer instance
@@ -70,43 +79,55 @@ export class Signer extends Matter {
70
79
  return this._verfer;
71
80
  }
72
81
 
73
- sign(ser: Uint8Array, index: number | null = null, only: boolean = false, ondex: number | undefined = undefined) {
74
- return this._sign(ser, this.raw, this.verfer, index, only, ondex)
82
+ sign(
83
+ ser: Uint8Array,
84
+ index: number | null = null,
85
+ only: boolean = false,
86
+ ondex: number | undefined = undefined
87
+ ): Siger | Cigar {
88
+ return this._sign(ser, this.raw, this.verfer, index, only, ondex);
75
89
  }
76
90
 
77
- _ed25519(ser: Uint8Array, seed: Uint8Array, verfer: Verfer, index: number | null,
78
- only: boolean = false, ondex: number | undefined) {
79
-
80
- let sig = libsodium.crypto_sign_detached(
91
+ _ed25519(
92
+ ser: Uint8Array,
93
+ seed: Uint8Array,
94
+ verfer: Verfer,
95
+ index: number | null,
96
+ only: boolean = false,
97
+ ondex: number | undefined
98
+ ) {
99
+ const sig = libsodium.crypto_sign_detached(
81
100
  ser,
82
- Buffer.concat([seed, verfer.raw]),
101
+ Buffer.concat([seed, verfer.raw])
83
102
  );
84
103
 
85
104
  if (index == null) {
86
- return new Cigar({raw: sig, code: MtrDex.Ed25519_Sig}, verfer);
105
+ return new Cigar({ raw: sig, code: MtrDex.Ed25519_Sig }, verfer);
87
106
  } else {
88
107
  let code;
89
108
  if (only) {
90
- ondex = undefined
109
+ ondex = undefined;
91
110
  if (index <= 63) {
92
- code = IdrDex.Ed25519_Crt_Sig
111
+ code = IdrDex.Ed25519_Crt_Sig;
93
112
  } else {
94
- code = IdrDex.Ed25519_Big_Crt_Sig
113
+ code = IdrDex.Ed25519_Big_Crt_Sig;
95
114
  }
96
115
  } else {
97
- if(ondex == undefined) {
98
- ondex = index
116
+ if (ondex == undefined) {
117
+ ondex = index;
99
118
  }
100
119
 
101
- if (ondex == index && index <= 63) // both same and small
102
- code = IdrDex.Ed25519_Sig // use small both same
103
- else // otherwise big or both not same so use big both
104
- code = IdrDex.Ed25519_Big_Sig // use use big both
105
-
120
+ if (ondex == index && index <= 63)
121
+ // both same and small
122
+ code = IdrDex.Ed25519_Sig; // use small both same
123
+ // otherwise big or both not same so use big both
124
+ else code = IdrDex.Ed25519_Big_Sig; // use use big both
106
125
  }
107
126
 
108
- return new Siger({raw: sig, code: code, index: index, ondex: ondex}, verfer)
127
+ return new Siger(
128
+ { raw: sig, code: code, index: index, ondex: ondex },
129
+ verfer
130
+ );
109
131
  }
110
-
111
132
  }
112
- }
133
+ }