signify-ts 0.2.0 → 0.3.0-dev.e31e78d
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/README.md +104 -34
- package/dist/exports.d.ts +40 -40
- package/dist/exports.js +40 -0
- package/dist/index.d.ts +2 -3
- package/dist/index.js +3 -8
- package/dist/keri/app/aiding.d.ts +54 -18
- package/{src/keri/app/aiding.ts → dist/keri/app/aiding.js} +130 -236
- package/dist/keri/app/clienting.d.ts +59 -22
- package/{src/keri/app/clienting.ts → dist/keri/app/clienting.js} +146 -235
- package/dist/keri/app/contacting.d.ts +30 -23
- package/{src/keri/app/contacting.ts → dist/keri/app/contacting.js} +26 -63
- package/dist/keri/app/controller.d.ts +49 -6
- package/{src/keri/app/controller.ts → dist/keri/app/controller.js} +80 -186
- package/dist/keri/app/coring.d.ts +134 -25
- package/{src/keri/app/coring.ts → dist/keri/app/coring.js} +83 -56
- package/dist/keri/app/credentialing.d.ts +191 -67
- package/dist/keri/app/credentialing.js +540 -0
- package/dist/keri/app/delegating.d.ts +18 -0
- package/dist/keri/app/delegating.js +24 -0
- package/dist/keri/app/escrowing.d.ts +5 -3
- package/{src/keri/app/escrowing.ts → dist/keri/app/escrowing.js} +3 -9
- package/dist/keri/app/exchanging.d.ts +243 -11
- package/dist/keri/app/exchanging.js +242 -0
- package/dist/keri/app/grouping.d.ts +11 -9
- package/{src/keri/app/grouping.ts → dist/keri/app/grouping.js} +10 -29
- package/dist/keri/app/habery.d.ts +2 -2
- package/dist/keri/app/habery.js +117 -0
- package/dist/keri/app/notifying.d.ts +2 -2
- package/{src/keri/app/notifying.ts → dist/keri/app/notifying.js} +7 -17
- package/dist/keri/core/authing.d.ts +2 -2
- package/{src/keri/core/authing.ts → dist/keri/core/authing.js} +26 -42
- package/dist/keri/core/base64.d.ts +2 -0
- package/dist/keri/core/base64.js +16 -0
- package/dist/keri/core/bexter.d.ts +1 -1
- package/{src/keri/core/bexter.ts → dist/keri/core/bexter.js} +18 -32
- package/dist/keri/core/cigar.d.ts +2 -2
- package/dist/keri/core/cigar.js +13 -0
- package/dist/keri/core/cipher.d.ts +1 -1
- package/{src/keri/core/cipher.ts → dist/keri/core/cipher.js} +10 -19
- package/dist/keri/core/core.d.ts +117 -9
- package/dist/keri/core/core.js +385 -0
- package/dist/keri/core/counter.d.ts +2 -2
- package/dist/keri/core/counter.js +221 -0
- package/dist/keri/core/decrypter.d.ts +4 -4
- package/{src/keri/core/decrypter.ts → dist/keri/core/decrypter.js} +23 -40
- package/dist/keri/core/diger.d.ts +3 -3
- package/{src/keri/core/diger.ts → dist/keri/core/diger.js} +18 -33
- package/dist/keri/core/encrypter.d.ts +2 -2
- package/{src/keri/core/encrypter.ts → dist/keri/core/encrypter.js} +18 -38
- package/dist/keri/core/eventing.d.ts +6 -6
- package/dist/keri/core/eventing.js +383 -0
- package/dist/keri/core/httping.d.ts +11 -4
- package/{src/keri/core/httping.ts → dist/keri/core/httping.js} +36 -101
- package/dist/keri/core/indexer.d.ts +1 -1
- package/dist/keri/core/indexer.js +407 -0
- package/dist/keri/core/keeping.d.ts +113 -46
- package/dist/keri/core/keeping.js +347 -0
- package/{src/keri/core/kering.ts → dist/keri/core/kering.js} +1 -3
- package/dist/keri/core/keyState.d.ts +98 -0
- package/dist/keri/core/manager.d.ts +147 -12
- package/dist/keri/core/manager.js +880 -0
- package/dist/keri/core/matter.d.ts +1 -1
- package/dist/keri/core/matter.js +460 -0
- package/dist/keri/core/number.d.ts +2 -2
- package/{src/keri/core/number.ts → dist/keri/core/number.js} +26 -32
- package/dist/keri/core/pather.d.ts +2 -2
- package/{src/keri/core/pather.ts → dist/keri/core/pather.js} +12 -27
- package/dist/keri/core/prefixer.d.ts +10 -10
- package/dist/keri/core/prefixer.js +182 -0
- package/dist/keri/core/saider.d.ts +2 -12
- package/dist/keri/core/saider.js +107 -0
- package/dist/keri/core/salter.d.ts +44 -9
- package/dist/keri/core/salter.js +110 -0
- package/dist/keri/core/seqner.d.ts +1 -1
- package/{src/keri/core/seqner.ts → dist/keri/core/seqner.js} +20 -21
- package/dist/keri/core/serder.d.ts +25 -12
- package/dist/keri/core/serder.js +133 -0
- package/dist/keri/core/siger.d.ts +2 -2
- package/{src/keri/core/siger.ts → dist/keri/core/siger.js} +4 -14
- package/dist/keri/core/signer.d.ts +4 -4
- package/dist/keri/core/signer.js +84 -0
- package/{src/keri/core/tholder.ts → dist/keri/core/tholder.js} +69 -94
- package/dist/keri/core/utils.d.ts +1 -1
- package/{src/keri/core/utils.ts → dist/keri/core/utils.js} +30 -60
- package/dist/keri/core/vdring.d.ts +2 -2
- package/dist/keri/core/vdring.js +61 -0
- package/dist/keri/core/verfer.d.ts +2 -6
- package/dist/keri/core/verfer.js +37 -0
- package/dist/keri/end/ending.d.ts +10 -8
- package/dist/keri/end/ending.js +136 -0
- package/{src/ready.ts → dist/ready.js} +1 -2
- package/dist/types/keria-api-schema.d.ts +1158 -0
- package/dist/types/keria-api-schema.js +34 -0
- package/package.json +53 -52
- package/dist/math.d.ts +0 -1
- package/dist/signify-ts.cjs +0 -7835
- package/dist/signify-ts.cjs.development.js +0 -9501
- package/dist/signify-ts.cjs.development.js.map +0 -1
- package/dist/signify-ts.cjs.map +0 -7
- package/dist/signify-ts.cjs.production.min.js +0 -2
- package/dist/signify-ts.cjs.production.min.js.map +0 -1
- package/dist/signify-ts.esm.js +0 -9345
- package/dist/signify-ts.esm.js.map +0 -1
- package/dist/signify-ts.mjs +0 -7811
- package/dist/signify-ts.mjs.map +0 -7
- package/src/buffer-polyfill.ts +0 -5
- package/src/exports.ts +0 -44
- package/src/index.ts +0 -4
- package/src/keri/app/credentialing.ts +0 -820
- package/src/keri/app/exchanging.ts +0 -220
- package/src/keri/app/habery.ts +0 -185
- package/src/keri/core/cigar.ts +0 -18
- package/src/keri/core/core.ts +0 -326
- package/src/keri/core/counter.ts +0 -273
- package/src/keri/core/eventing.ts +0 -581
- package/src/keri/core/indexer.ts +0 -509
- package/src/keri/core/keeping.ts +0 -684
- package/src/keri/core/manager.ts +0 -1183
- package/src/keri/core/matter.ts +0 -521
- package/src/keri/core/prefixer.ts +0 -233
- package/src/keri/core/saider.ts +0 -186
- package/src/keri/core/salter.ts +0 -120
- package/src/keri/core/serder.ts +0 -163
- package/src/keri/core/signer.ts +0 -133
- package/src/keri/core/vdring.ts +0 -94
- package/src/keri/core/verfer.ts +0 -47
- package/src/keri/end/ending.ts +0 -170
- package/src/math.ts +0 -3
- /package/dist/{buffer-polyfill.d.ts → keri/core/keyState.js} +0 -0
package/src/keri/core/signer.ts
DELETED
|
@@ -1,133 +0,0 @@
|
|
|
1
|
-
import { EmptyMaterialError } from './kering';
|
|
2
|
-
|
|
3
|
-
export {};
|
|
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
|
-
import { Buffer } from 'buffer';
|
|
12
|
-
|
|
13
|
-
/**
|
|
14
|
-
* @description Signer is Matter subclass with method to create signature of serialization
|
|
15
|
-
* It will use .raw as signing (private) key seed
|
|
16
|
-
* .code as cipher suite for signing and new property .verfer whose property
|
|
17
|
-
* .raw is public key for signing.
|
|
18
|
-
* If not provided .verfer is generated from private key seed using .code
|
|
19
|
-
as cipher suite for creating key-pair.
|
|
20
|
-
*/
|
|
21
|
-
interface SignerArgs {
|
|
22
|
-
raw?: Uint8Array | undefined;
|
|
23
|
-
code?: string;
|
|
24
|
-
qb64b?: Uint8Array | undefined;
|
|
25
|
-
qb64?: string;
|
|
26
|
-
qb2?: Uint8Array | undefined;
|
|
27
|
-
transferable?: boolean;
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
export class Signer extends Matter {
|
|
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) {
|
|
42
|
-
try {
|
|
43
|
-
super({ raw, code, qb64, qb64b, qb2 });
|
|
44
|
-
} catch (e) {
|
|
45
|
-
if (e instanceof EmptyMaterialError) {
|
|
46
|
-
if (code == MtrDex.Ed25519_Seed) {
|
|
47
|
-
const raw = libsodium.randombytes_buf(
|
|
48
|
-
libsodium.crypto_sign_SEEDBYTES
|
|
49
|
-
);
|
|
50
|
-
super({ raw, code, qb64, qb64b, qb2 });
|
|
51
|
-
} else {
|
|
52
|
-
throw new Error(`Unsupported signer code = ${code}.`);
|
|
53
|
-
}
|
|
54
|
-
} else {
|
|
55
|
-
throw e;
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
let verfer;
|
|
59
|
-
if (this.code == MtrDex.Ed25519_Seed) {
|
|
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
|
-
});
|
|
66
|
-
} else {
|
|
67
|
-
throw new Error(`Unsupported signer code = ${this.code}.`);
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
this._verfer = verfer;
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
/**
|
|
74
|
-
* @description Property verfer:
|
|
75
|
-
Returns Verfer instance
|
|
76
|
-
Assumes ._verfer is correctly assigned
|
|
77
|
-
*/
|
|
78
|
-
get verfer(): Verfer {
|
|
79
|
-
return this._verfer;
|
|
80
|
-
}
|
|
81
|
-
|
|
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);
|
|
89
|
-
}
|
|
90
|
-
|
|
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(
|
|
100
|
-
ser,
|
|
101
|
-
Buffer.concat([seed, verfer.raw])
|
|
102
|
-
);
|
|
103
|
-
|
|
104
|
-
if (index == null) {
|
|
105
|
-
return new Cigar({ raw: sig, code: MtrDex.Ed25519_Sig }, verfer);
|
|
106
|
-
} else {
|
|
107
|
-
let code;
|
|
108
|
-
if (only) {
|
|
109
|
-
ondex = undefined;
|
|
110
|
-
if (index <= 63) {
|
|
111
|
-
code = IdrDex.Ed25519_Crt_Sig;
|
|
112
|
-
} else {
|
|
113
|
-
code = IdrDex.Ed25519_Big_Crt_Sig;
|
|
114
|
-
}
|
|
115
|
-
} else {
|
|
116
|
-
if (ondex == undefined) {
|
|
117
|
-
ondex = index;
|
|
118
|
-
}
|
|
119
|
-
|
|
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
|
|
125
|
-
}
|
|
126
|
-
|
|
127
|
-
return new Siger(
|
|
128
|
-
{ raw: sig, code: code, index: index, ondex: ondex },
|
|
129
|
-
verfer
|
|
130
|
-
);
|
|
131
|
-
}
|
|
132
|
-
}
|
|
133
|
-
}
|
package/src/keri/core/vdring.ts
DELETED
|
@@ -1,94 +0,0 @@
|
|
|
1
|
-
import { randomNonce } from '../app/coring';
|
|
2
|
-
import { TraitDex } from '../app/habery';
|
|
3
|
-
import {
|
|
4
|
-
Serials,
|
|
5
|
-
Versionage,
|
|
6
|
-
Version,
|
|
7
|
-
Ident,
|
|
8
|
-
versify,
|
|
9
|
-
Ilks,
|
|
10
|
-
} from '../core/core';
|
|
11
|
-
import { ample } from './eventing';
|
|
12
|
-
import { MtrDex } from './matter';
|
|
13
|
-
import { Prefixer } from './prefixer';
|
|
14
|
-
import { Serder } from './serder';
|
|
15
|
-
|
|
16
|
-
namespace vdr {
|
|
17
|
-
export interface VDRInceptArgs {
|
|
18
|
-
pre: string;
|
|
19
|
-
toad?: number | string;
|
|
20
|
-
nonce?: string;
|
|
21
|
-
baks?: string[];
|
|
22
|
-
cnfg?: string[];
|
|
23
|
-
version?: Version;
|
|
24
|
-
kind?: Serials;
|
|
25
|
-
code?: string;
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
export function incept({
|
|
29
|
-
pre,
|
|
30
|
-
toad,
|
|
31
|
-
nonce = randomNonce(),
|
|
32
|
-
baks = [],
|
|
33
|
-
cnfg = [],
|
|
34
|
-
version = Versionage,
|
|
35
|
-
kind = Serials.JSON,
|
|
36
|
-
code = MtrDex.Blake3_256,
|
|
37
|
-
}: VDRInceptArgs): Serder {
|
|
38
|
-
const vs = versify(Ident.KERI, version, kind, 0);
|
|
39
|
-
const isn = 0;
|
|
40
|
-
const ilk = Ilks.vcp;
|
|
41
|
-
|
|
42
|
-
if (cnfg.includes(TraitDex.NoBackers) && baks.length > 0) {
|
|
43
|
-
throw new Error(
|
|
44
|
-
`${baks.length} backers specified for NB vcp, 0 allowed`
|
|
45
|
-
);
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
if (new Set(baks).size < baks.length) {
|
|
49
|
-
throw new Error(`Invalid baks ${baks} has duplicates`);
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
let _toad: number;
|
|
53
|
-
if (toad === undefined) {
|
|
54
|
-
if (baks.length === 0) {
|
|
55
|
-
_toad = 0;
|
|
56
|
-
} else {
|
|
57
|
-
_toad = ample(baks.length);
|
|
58
|
-
}
|
|
59
|
-
} else {
|
|
60
|
-
_toad = +toad;
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
if (baks.length > 0) {
|
|
64
|
-
if (_toad < 1 || _toad > baks.length) {
|
|
65
|
-
throw new Error(`Invalid toad ${_toad} for baks in ${baks}`);
|
|
66
|
-
}
|
|
67
|
-
} else {
|
|
68
|
-
if (_toad != 0) {
|
|
69
|
-
throw new Error(`Invalid toad ${_toad} for no baks`);
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
const ked = {
|
|
74
|
-
v: vs,
|
|
75
|
-
t: ilk,
|
|
76
|
-
d: '',
|
|
77
|
-
i: '',
|
|
78
|
-
ii: pre,
|
|
79
|
-
s: '' + isn,
|
|
80
|
-
c: cnfg,
|
|
81
|
-
bt: _toad.toString(16),
|
|
82
|
-
b: baks,
|
|
83
|
-
n: nonce,
|
|
84
|
-
};
|
|
85
|
-
|
|
86
|
-
const prefixer = new Prefixer({ code }, ked);
|
|
87
|
-
ked.i = prefixer.qb64;
|
|
88
|
-
ked.d = prefixer.qb64;
|
|
89
|
-
|
|
90
|
-
return new Serder(ked);
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
export { vdr };
|
package/src/keri/core/verfer.ts
DELETED
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
export {};
|
|
2
|
-
import libsodium from 'libsodium-wrappers-sumo';
|
|
3
|
-
import { Matter, MatterArgs, MtrDex } from './matter';
|
|
4
|
-
import secp256r1 from 'ecdsa-secp256r1';
|
|
5
|
-
|
|
6
|
-
/**
|
|
7
|
-
* @description Verfer :sublclass of Matter,helps to verify signature of serialization
|
|
8
|
-
* using .raw as verifier key and .code as signature cypher suite
|
|
9
|
-
*/
|
|
10
|
-
export class Verfer extends Matter {
|
|
11
|
-
private readonly _verify: (sig: any, ser: any, key: any) => boolean;
|
|
12
|
-
constructor({ raw, code, qb64, qb64b, qb2 }: MatterArgs) {
|
|
13
|
-
super({ raw, code, qb64, qb64b, qb2 });
|
|
14
|
-
|
|
15
|
-
if (Array.from([MtrDex.Ed25519N, MtrDex.Ed25519]).includes(this.code)) {
|
|
16
|
-
this._verify = this._ed25519;
|
|
17
|
-
} else if (
|
|
18
|
-
Array.from([MtrDex.ECDSA_256r1N, MtrDex.ECDSA_256r1]).includes(
|
|
19
|
-
this.code
|
|
20
|
-
)
|
|
21
|
-
) {
|
|
22
|
-
this._verify = this._secp256r1;
|
|
23
|
-
} else {
|
|
24
|
-
throw new Error(`Unsupported code = ${this.code} for verifier.`);
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
verify(sig: any, ser: any) {
|
|
29
|
-
return this._verify(sig, ser, this.raw);
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
_ed25519(sig: any, ser: any, key: any) {
|
|
33
|
-
try {
|
|
34
|
-
return libsodium.crypto_sign_verify_detached(sig, ser, key);
|
|
35
|
-
} catch (error) {
|
|
36
|
-
throw new Error(error as string);
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
_secp256r1(sig: any, ser: any, key: any) {
|
|
40
|
-
try {
|
|
41
|
-
const publicKey = secp256r1.fromCompressedPublicKey(key);
|
|
42
|
-
return publicKey.verify(ser, sig);
|
|
43
|
-
} catch (error) {
|
|
44
|
-
throw new Error(error as string);
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
}
|
package/src/keri/end/ending.ts
DELETED
|
@@ -1,170 +0,0 @@
|
|
|
1
|
-
import { Siger } from '../core/siger';
|
|
2
|
-
import { Cigar } from '../core/cigar';
|
|
3
|
-
|
|
4
|
-
export const FALSY = [false, 0, '?0', 'no', 'false', 'False', 'off'];
|
|
5
|
-
export const TRUTHY = [true, 1, '?1', 'yes', 'true', 'True', 'on'];
|
|
6
|
-
|
|
7
|
-
export class Signage {
|
|
8
|
-
constructor(
|
|
9
|
-
markers: any,
|
|
10
|
-
indexed?: boolean,
|
|
11
|
-
signer?: string,
|
|
12
|
-
ordinal?: string,
|
|
13
|
-
digest?: string,
|
|
14
|
-
kind?: string
|
|
15
|
-
) {
|
|
16
|
-
this.markers = markers;
|
|
17
|
-
this.indexed = indexed;
|
|
18
|
-
this.signer = signer;
|
|
19
|
-
this.ordinal = ordinal;
|
|
20
|
-
this.digest = digest;
|
|
21
|
-
this.kind = kind;
|
|
22
|
-
}
|
|
23
|
-
public markers: any;
|
|
24
|
-
public indexed: boolean | undefined = false;
|
|
25
|
-
public signer: string | undefined;
|
|
26
|
-
public ordinal: string | undefined;
|
|
27
|
-
public digest: string | undefined;
|
|
28
|
-
public kind: string | undefined;
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
export function signature(signages: Array<Signage>): Headers {
|
|
32
|
-
const values = new Array<string>();
|
|
33
|
-
|
|
34
|
-
for (const signage of signages) {
|
|
35
|
-
let markers: Array<Siger | Cigar>;
|
|
36
|
-
let indexed = signage.indexed;
|
|
37
|
-
const signer = signage.signer;
|
|
38
|
-
const ordinal = signage.ordinal;
|
|
39
|
-
const digest = signage.digest;
|
|
40
|
-
const kind = signage.kind;
|
|
41
|
-
let tags: Array<string>;
|
|
42
|
-
|
|
43
|
-
if (signage.markers instanceof Map) {
|
|
44
|
-
tags = Array.from(signage.markers.keys());
|
|
45
|
-
markers = Array.from(signage.markers.values());
|
|
46
|
-
} else {
|
|
47
|
-
markers = signage.markers as Array<Siger | Cigar>;
|
|
48
|
-
tags = new Array<string>();
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
if (indexed == undefined) {
|
|
52
|
-
indexed = markers[0] instanceof Siger;
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
const items = new Array<string>();
|
|
56
|
-
const tag = 'indexed';
|
|
57
|
-
|
|
58
|
-
let val = indexed ? '?1' : '?0';
|
|
59
|
-
items.push(`${tag}="${val}"`);
|
|
60
|
-
|
|
61
|
-
if (signer != undefined) {
|
|
62
|
-
items.push(`signer="${signer}"`);
|
|
63
|
-
}
|
|
64
|
-
if (ordinal != undefined) {
|
|
65
|
-
items.push(`ordinal="${ordinal}"`);
|
|
66
|
-
}
|
|
67
|
-
if (digest != undefined) {
|
|
68
|
-
items.push(`digest="${digest}"`);
|
|
69
|
-
}
|
|
70
|
-
if (kind != undefined) {
|
|
71
|
-
items.push(`kind="${kind}"`);
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
markers.forEach((marker, idx) => {
|
|
75
|
-
let tag: string;
|
|
76
|
-
if (tags != undefined && tags.length > idx) {
|
|
77
|
-
tag = tags[idx];
|
|
78
|
-
} else if (marker instanceof Siger) {
|
|
79
|
-
if (!indexed)
|
|
80
|
-
throw new Error(
|
|
81
|
-
`Indexed signature marker ${marker} when indexed False.`
|
|
82
|
-
);
|
|
83
|
-
|
|
84
|
-
tag = marker.index.toString();
|
|
85
|
-
} else {
|
|
86
|
-
// Must be a Cigar
|
|
87
|
-
if (indexed)
|
|
88
|
-
throw new Error(
|
|
89
|
-
`Unindexed signature marker ${marker} when indexed True.`
|
|
90
|
-
);
|
|
91
|
-
tag = marker.verfer!.qb64;
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
val = marker.qb64;
|
|
95
|
-
items.push(`${tag}="${val}"`);
|
|
96
|
-
});
|
|
97
|
-
|
|
98
|
-
values.push(items.join(';'));
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
return new Headers([['Signature', values.join(',')]]);
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
export function designature(value: string) {
|
|
105
|
-
const values = value.replace(' ', '').split(',');
|
|
106
|
-
|
|
107
|
-
const signages = new Array<Signage>();
|
|
108
|
-
values.forEach((val) => {
|
|
109
|
-
const dict = new Map<string, string>();
|
|
110
|
-
val.split(';').forEach((v) => {
|
|
111
|
-
const splits = v.split('=', 2);
|
|
112
|
-
dict.set(splits[0], splits[1].replaceAll('"', ''));
|
|
113
|
-
});
|
|
114
|
-
|
|
115
|
-
if (!dict.has('indexed')) {
|
|
116
|
-
throw new Error(
|
|
117
|
-
'Missing indexed field in Signature header signage.'
|
|
118
|
-
);
|
|
119
|
-
}
|
|
120
|
-
const item = dict.get('indexed')!;
|
|
121
|
-
const indexed = !FALSY.includes(item);
|
|
122
|
-
dict.delete('indexed');
|
|
123
|
-
|
|
124
|
-
let signer;
|
|
125
|
-
if (dict.has('signer')) {
|
|
126
|
-
signer = dict.get('signer') as string;
|
|
127
|
-
dict.delete('signer');
|
|
128
|
-
}
|
|
129
|
-
|
|
130
|
-
let ordinal;
|
|
131
|
-
if (dict.has('ordinal')) {
|
|
132
|
-
ordinal = dict.get('ordinal') as string;
|
|
133
|
-
dict.delete('ordinal');
|
|
134
|
-
}
|
|
135
|
-
|
|
136
|
-
let digest;
|
|
137
|
-
if (dict.has('digest')) {
|
|
138
|
-
digest = dict.get('digest') as string;
|
|
139
|
-
dict.delete('digest');
|
|
140
|
-
}
|
|
141
|
-
|
|
142
|
-
let kind;
|
|
143
|
-
if (dict.has('kind')) {
|
|
144
|
-
kind = dict.get('kind') as string;
|
|
145
|
-
dict.delete('kind');
|
|
146
|
-
} else {
|
|
147
|
-
kind = 'CESR';
|
|
148
|
-
}
|
|
149
|
-
|
|
150
|
-
let markers: Map<string, string | Siger | Cigar>;
|
|
151
|
-
if (kind == 'CESR') {
|
|
152
|
-
markers = new Map<string, Siger | Cigar>();
|
|
153
|
-
dict.forEach((val, key) => {
|
|
154
|
-
if (indexed) {
|
|
155
|
-
markers.set(key, new Siger({ qb64: val as string }));
|
|
156
|
-
} else {
|
|
157
|
-
markers.set(key, new Cigar({ qb64: val as string }));
|
|
158
|
-
}
|
|
159
|
-
});
|
|
160
|
-
} else {
|
|
161
|
-
markers = dict;
|
|
162
|
-
}
|
|
163
|
-
|
|
164
|
-
signages.push(
|
|
165
|
-
new Signage(markers, indexed, signer, ordinal, digest, kind)
|
|
166
|
-
);
|
|
167
|
-
});
|
|
168
|
-
|
|
169
|
-
return signages;
|
|
170
|
-
}
|
package/src/math.ts
DELETED
|
File without changes
|