@noble/curves 1.9.1 → 1.9.3
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 +238 -227
- package/_shortw_utils.d.ts +8 -5
- package/_shortw_utils.d.ts.map +1 -1
- package/_shortw_utils.js +3 -8
- package/_shortw_utils.js.map +1 -1
- package/abstract/bls.d.ts +123 -62
- package/abstract/bls.d.ts.map +1 -1
- package/abstract/bls.js +219 -163
- package/abstract/bls.js.map +1 -1
- package/abstract/curve.d.ts +142 -21
- package/abstract/curve.d.ts.map +1 -1
- package/abstract/curve.js +224 -143
- package/abstract/curve.js.map +1 -1
- package/abstract/edwards.d.ts +190 -49
- package/abstract/edwards.d.ts.map +1 -1
- package/abstract/edwards.js +322 -136
- package/abstract/edwards.js.map +1 -1
- package/abstract/fft.d.ts +12 -10
- package/abstract/fft.d.ts.map +1 -1
- package/abstract/fft.js +12 -13
- package/abstract/fft.js.map +1 -1
- package/abstract/hash-to-curve.d.ts +31 -13
- package/abstract/hash-to-curve.d.ts.map +1 -1
- package/abstract/hash-to-curve.js +34 -19
- package/abstract/hash-to-curve.js.map +1 -1
- package/abstract/modular.d.ts +31 -13
- package/abstract/modular.d.ts.map +1 -1
- package/abstract/modular.js +125 -52
- package/abstract/modular.js.map +1 -1
- package/abstract/montgomery.d.ts +18 -5
- package/abstract/montgomery.d.ts.map +1 -1
- package/abstract/montgomery.js +23 -6
- package/abstract/montgomery.js.map +1 -1
- package/abstract/poseidon.d.ts +5 -13
- package/abstract/poseidon.d.ts.map +1 -1
- package/abstract/poseidon.js +12 -7
- package/abstract/poseidon.js.map +1 -1
- package/abstract/tower.d.ts +23 -49
- package/abstract/tower.d.ts.map +1 -1
- package/abstract/tower.js +9 -3
- package/abstract/tower.js.map +1 -1
- package/abstract/utils.d.ts +1 -115
- package/abstract/utils.d.ts.map +1 -1
- package/abstract/utils.js +17 -371
- package/abstract/utils.js.map +1 -1
- package/abstract/weierstrass.d.ts +206 -124
- package/abstract/weierstrass.d.ts.map +1 -1
- package/abstract/weierstrass.js +747 -604
- package/abstract/weierstrass.js.map +1 -1
- package/bls12-381.d.ts +2 -0
- package/bls12-381.d.ts.map +1 -1
- package/bls12-381.js +504 -466
- package/bls12-381.js.map +1 -1
- package/bn254.d.ts +2 -0
- package/bn254.d.ts.map +1 -1
- package/bn254.js +44 -32
- package/bn254.js.map +1 -1
- package/ed25519.d.ts +55 -66
- package/ed25519.d.ts.map +1 -1
- package/ed25519.js +172 -186
- package/ed25519.js.map +1 -1
- package/ed448.d.ts +60 -57
- package/ed448.d.ts.map +1 -1
- package/ed448.js +172 -166
- package/ed448.js.map +1 -1
- package/esm/_shortw_utils.d.ts +8 -5
- package/esm/_shortw_utils.d.ts.map +1 -1
- package/esm/_shortw_utils.js +3 -8
- package/esm/_shortw_utils.js.map +1 -1
- package/esm/abstract/bls.d.ts +123 -62
- package/esm/abstract/bls.d.ts.map +1 -1
- package/esm/abstract/bls.js +220 -164
- package/esm/abstract/bls.js.map +1 -1
- package/esm/abstract/curve.d.ts +142 -21
- package/esm/abstract/curve.d.ts.map +1 -1
- package/esm/abstract/curve.js +219 -143
- package/esm/abstract/curve.js.map +1 -1
- package/esm/abstract/edwards.d.ts +190 -49
- package/esm/abstract/edwards.d.ts.map +1 -1
- package/esm/abstract/edwards.js +320 -138
- package/esm/abstract/edwards.js.map +1 -1
- package/esm/abstract/fft.d.ts +12 -10
- package/esm/abstract/fft.d.ts.map +1 -1
- package/esm/abstract/fft.js +10 -11
- package/esm/abstract/fft.js.map +1 -1
- package/esm/abstract/hash-to-curve.d.ts +31 -13
- package/esm/abstract/hash-to-curve.d.ts.map +1 -1
- package/esm/abstract/hash-to-curve.js +33 -19
- package/esm/abstract/hash-to-curve.js.map +1 -1
- package/esm/abstract/modular.d.ts +31 -13
- package/esm/abstract/modular.d.ts.map +1 -1
- package/esm/abstract/modular.js +124 -51
- package/esm/abstract/modular.js.map +1 -1
- package/esm/abstract/montgomery.d.ts +18 -5
- package/esm/abstract/montgomery.d.ts.map +1 -1
- package/esm/abstract/montgomery.js +23 -6
- package/esm/abstract/montgomery.js.map +1 -1
- package/esm/abstract/poseidon.d.ts +5 -13
- package/esm/abstract/poseidon.d.ts.map +1 -1
- package/esm/abstract/poseidon.js +12 -7
- package/esm/abstract/poseidon.js.map +1 -1
- package/esm/abstract/tower.d.ts +23 -49
- package/esm/abstract/tower.d.ts.map +1 -1
- package/esm/abstract/tower.js +9 -3
- package/esm/abstract/tower.js.map +1 -1
- package/esm/abstract/utils.d.ts +1 -115
- package/esm/abstract/utils.d.ts.map +1 -1
- package/esm/abstract/utils.js +3 -344
- package/esm/abstract/utils.js.map +1 -1
- package/esm/abstract/weierstrass.d.ts +206 -124
- package/esm/abstract/weierstrass.d.ts.map +1 -1
- package/esm/abstract/weierstrass.js +743 -605
- package/esm/abstract/weierstrass.js.map +1 -1
- package/esm/bls12-381.d.ts +2 -0
- package/esm/bls12-381.d.ts.map +1 -1
- package/esm/bls12-381.js +503 -465
- package/esm/bls12-381.js.map +1 -1
- package/esm/bn254.d.ts +2 -0
- package/esm/bn254.d.ts.map +1 -1
- package/esm/bn254.js +41 -29
- package/esm/bn254.js.map +1 -1
- package/esm/ed25519.d.ts +55 -66
- package/esm/ed25519.d.ts.map +1 -1
- package/esm/ed25519.js +170 -183
- package/esm/ed25519.js.map +1 -1
- package/esm/ed448.d.ts +60 -57
- package/esm/ed448.d.ts.map +1 -1
- package/esm/ed448.js +169 -162
- package/esm/ed448.js.map +1 -1
- package/esm/index.js +7 -9
- package/esm/index.js.map +1 -1
- package/esm/jubjub.d.ts +3 -3
- package/esm/jubjub.d.ts.map +1 -1
- package/esm/jubjub.js +3 -3
- package/esm/jubjub.js.map +1 -1
- package/esm/misc.d.ts +3 -5
- package/esm/misc.d.ts.map +1 -1
- package/esm/misc.js +31 -29
- package/esm/misc.js.map +1 -1
- package/esm/nist.d.ts +7 -22
- package/esm/nist.d.ts.map +1 -1
- package/esm/nist.js +106 -101
- package/esm/nist.js.map +1 -1
- package/esm/p256.d.ts +7 -3
- package/esm/p256.d.ts.map +1 -1
- package/esm/p256.js +4 -0
- package/esm/p256.js.map +1 -1
- package/esm/p384.d.ts +7 -4
- package/esm/p384.d.ts.map +1 -1
- package/esm/p384.js +4 -1
- package/esm/p384.js.map +1 -1
- package/esm/p521.d.ts +7 -3
- package/esm/p521.d.ts.map +1 -1
- package/esm/p521.js +4 -0
- package/esm/p521.js.map +1 -1
- package/esm/secp256k1.d.ts +38 -21
- package/esm/secp256k1.d.ts.map +1 -1
- package/esm/secp256k1.js +112 -104
- package/esm/secp256k1.js.map +1 -1
- package/esm/utils.d.ts +96 -0
- package/esm/utils.d.ts.map +1 -0
- package/esm/utils.js +279 -0
- package/esm/utils.js.map +1 -0
- package/index.js +7 -9
- package/index.js.map +1 -1
- package/jubjub.d.ts +3 -3
- package/jubjub.d.ts.map +1 -1
- package/jubjub.js +3 -3
- package/jubjub.js.map +1 -1
- package/misc.d.ts +3 -5
- package/misc.d.ts.map +1 -1
- package/misc.js +35 -33
- package/misc.js.map +1 -1
- package/nist.d.ts +7 -22
- package/nist.d.ts.map +1 -1
- package/nist.js +106 -101
- package/nist.js.map +1 -1
- package/p256.d.ts +7 -3
- package/p256.d.ts.map +1 -1
- package/p256.js +4 -0
- package/p256.js.map +1 -1
- package/p384.d.ts +7 -4
- package/p384.d.ts.map +1 -1
- package/p384.js +4 -1
- package/p384.js.map +1 -1
- package/p521.d.ts +7 -3
- package/p521.d.ts.map +1 -1
- package/p521.js +4 -0
- package/p521.js.map +1 -1
- package/package.json +17 -6
- package/secp256k1.d.ts +38 -21
- package/secp256k1.d.ts.map +1 -1
- package/secp256k1.js +112 -104
- package/secp256k1.js.map +1 -1
- package/src/_shortw_utils.ts +6 -15
- package/src/abstract/bls.ts +428 -251
- package/src/abstract/curve.ts +307 -149
- package/src/abstract/edwards.ts +555 -203
- package/src/abstract/fft.ts +30 -19
- package/src/abstract/hash-to-curve.ts +75 -34
- package/src/abstract/modular.ts +131 -59
- package/src/abstract/montgomery.ts +44 -15
- package/src/abstract/poseidon.ts +22 -18
- package/src/abstract/tower.ts +40 -71
- package/src/abstract/utils.ts +3 -378
- package/src/abstract/weierstrass.ts +1086 -746
- package/src/bls12-381.ts +549 -490
- package/src/bn254.ts +47 -35
- package/src/ed25519.ts +214 -216
- package/src/ed448.ts +251 -220
- package/src/index.ts +7 -9
- package/src/jubjub.ts +3 -3
- package/src/misc.ts +41 -40
- package/src/nist.ts +161 -126
- package/src/p256.ts +7 -3
- package/src/p384.ts +7 -5
- package/src/p521.ts +7 -3
- package/src/secp256k1.ts +145 -115
- package/src/utils.ts +328 -0
- package/utils.d.ts +96 -0
- package/utils.d.ts.map +1 -0
- package/utils.js +313 -0
- package/utils.js.map +1 -0
|
@@ -1,92 +1,233 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Twisted Edwards curve. The formula is: ax² + y² = 1 + dx²y².
|
|
3
3
|
* For design rationale of types / exports, see weierstrass module documentation.
|
|
4
|
+
* Untwisted Edwards curves exist, but they aren't used in real-world protocols.
|
|
4
5
|
* @module
|
|
5
6
|
*/
|
|
6
7
|
/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */
|
|
7
|
-
import { type
|
|
8
|
-
import { type
|
|
9
|
-
|
|
8
|
+
import { type FHash, type Hex } from '../utils.ts';
|
|
9
|
+
import { type AffinePoint, type BasicCurve, type CurveInfo, type CurvePoint, type CurvePointCons } from './curve.ts';
|
|
10
|
+
import { type IField, type NLength } from './modular.ts';
|
|
11
|
+
export type UVRatio = (u: bigint, v: bigint) => {
|
|
12
|
+
isValid: boolean;
|
|
13
|
+
value: bigint;
|
|
14
|
+
};
|
|
10
15
|
export type CurveType = BasicCurve<bigint> & {
|
|
11
16
|
a: bigint;
|
|
12
17
|
d: bigint;
|
|
13
18
|
hash: FHash;
|
|
14
|
-
randomBytes
|
|
19
|
+
randomBytes?: (bytesLength?: number) => Uint8Array;
|
|
15
20
|
adjustScalarBytes?: (bytes: Uint8Array) => Uint8Array;
|
|
16
21
|
domain?: (data: Uint8Array, ctx: Uint8Array, phflag: boolean) => Uint8Array;
|
|
17
|
-
uvRatio?:
|
|
18
|
-
isValid: boolean;
|
|
19
|
-
value: bigint;
|
|
20
|
-
};
|
|
22
|
+
uvRatio?: UVRatio;
|
|
21
23
|
prehash?: FHash;
|
|
22
24
|
mapToCurve?: (scalar: bigint[]) => AffinePoint<bigint>;
|
|
23
25
|
};
|
|
24
|
-
export type CurveTypeWithLength = Readonly<CurveType &
|
|
25
|
-
nByteLength: number;
|
|
26
|
-
nBitLength: number;
|
|
27
|
-
}>;
|
|
28
|
-
declare function validateOpts(curve: CurveType): CurveTypeWithLength;
|
|
26
|
+
export type CurveTypeWithLength = Readonly<CurveType & Partial<NLength>>;
|
|
29
27
|
/** Instance of Extended Point with coordinates in X, Y, Z, T. */
|
|
30
|
-
export interface
|
|
28
|
+
export interface EdwardsPoint extends CurvePoint<bigint, EdwardsPoint> {
|
|
29
|
+
/** extended X coordinate. Different from affine x. */
|
|
30
|
+
readonly X: bigint;
|
|
31
|
+
/** extended Y coordinate. Different from affine y. */
|
|
32
|
+
readonly Y: bigint;
|
|
33
|
+
/** extended Z coordinate */
|
|
34
|
+
readonly Z: bigint;
|
|
35
|
+
/** extended T coordinate */
|
|
36
|
+
readonly T: bigint;
|
|
37
|
+
/** @deprecated use `toBytes` */
|
|
38
|
+
toRawBytes(): Uint8Array;
|
|
39
|
+
/** @deprecated use `p.precompute(windowSize)` */
|
|
40
|
+
_setWindowSize(windowSize: number): void;
|
|
41
|
+
/** @deprecated use .X */
|
|
31
42
|
readonly ex: bigint;
|
|
43
|
+
/** @deprecated use .Y */
|
|
32
44
|
readonly ey: bigint;
|
|
45
|
+
/** @deprecated use .Z */
|
|
33
46
|
readonly ez: bigint;
|
|
47
|
+
/** @deprecated use .T */
|
|
34
48
|
readonly et: bigint;
|
|
35
|
-
get x(): bigint;
|
|
36
|
-
get y(): bigint;
|
|
37
|
-
assertValidity(): void;
|
|
38
|
-
multiply(scalar: bigint): ExtPointType;
|
|
39
|
-
multiplyUnsafe(scalar: bigint): ExtPointType;
|
|
40
|
-
isSmallOrder(): boolean;
|
|
41
|
-
isTorsionFree(): boolean;
|
|
42
|
-
clearCofactor(): ExtPointType;
|
|
43
|
-
toAffine(iz?: bigint): AffinePoint<bigint>;
|
|
44
|
-
toRawBytes(isCompressed?: boolean): Uint8Array;
|
|
45
|
-
toHex(isCompressed?: boolean): string;
|
|
46
|
-
_setWindowSize(windowSize: number): void;
|
|
47
49
|
}
|
|
48
50
|
/** Static methods of Extended Point with coordinates in X, Y, Z, T. */
|
|
49
|
-
export interface
|
|
50
|
-
new (
|
|
51
|
-
|
|
52
|
-
fromHex(hex: Hex):
|
|
53
|
-
|
|
54
|
-
msm(points:
|
|
51
|
+
export interface EdwardsPointCons extends CurvePointCons<bigint, EdwardsPoint> {
|
|
52
|
+
new (X: bigint, Y: bigint, Z: bigint, T: bigint): EdwardsPoint;
|
|
53
|
+
fromBytes(bytes: Uint8Array, zip215?: boolean): EdwardsPoint;
|
|
54
|
+
fromHex(hex: Hex, zip215?: boolean): EdwardsPoint;
|
|
55
|
+
/** @deprecated use `import { pippenger } from '@noble/curves/abstract/curve.js';` */
|
|
56
|
+
msm(points: EdwardsPoint[], scalars: bigint[]): EdwardsPoint;
|
|
55
57
|
}
|
|
58
|
+
/** @deprecated use EdwardsPoint */
|
|
59
|
+
export type ExtPointType = EdwardsPoint;
|
|
60
|
+
/** @deprecated use EdwardsPointCons */
|
|
61
|
+
export type ExtPointConstructor = EdwardsPointCons;
|
|
56
62
|
/**
|
|
57
|
-
* Edwards
|
|
58
|
-
*
|
|
63
|
+
* Twisted Edwards curve options.
|
|
64
|
+
*
|
|
65
|
+
* * a: formula param
|
|
66
|
+
* * d: formula param
|
|
67
|
+
* * p: prime characteristic (order) of finite field, in which arithmetics is done
|
|
68
|
+
* * n: order of prime subgroup a.k.a total amount of valid curve points
|
|
69
|
+
* * h: cofactor. h*n is group order; n is subgroup order
|
|
70
|
+
* * Gx: x coordinate of generator point a.k.a. base point
|
|
71
|
+
* * Gy: y coordinate of generator point
|
|
59
72
|
*/
|
|
60
|
-
export type
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
73
|
+
export type EdwardsOpts = Readonly<{
|
|
74
|
+
p: bigint;
|
|
75
|
+
n: bigint;
|
|
76
|
+
h: bigint;
|
|
77
|
+
a: bigint;
|
|
78
|
+
d: bigint;
|
|
79
|
+
Gx: bigint;
|
|
80
|
+
Gy: bigint;
|
|
81
|
+
}>;
|
|
82
|
+
/**
|
|
83
|
+
* Extra curve options for Twisted Edwards.
|
|
84
|
+
*
|
|
85
|
+
* * Fp: redefined Field over curve.p
|
|
86
|
+
* * Fn: redefined Field over curve.n
|
|
87
|
+
* * uvRatio: helper function for decompression, calculating √(u/v)
|
|
88
|
+
*/
|
|
89
|
+
export type EdwardsExtraOpts = Partial<{
|
|
90
|
+
Fp: IField<bigint>;
|
|
91
|
+
Fn: IField<bigint>;
|
|
92
|
+
uvRatio: (u: bigint, v: bigint) => {
|
|
93
|
+
isValid: boolean;
|
|
94
|
+
value: bigint;
|
|
95
|
+
};
|
|
96
|
+
}>;
|
|
97
|
+
/**
|
|
98
|
+
* EdDSA (Edwards Digital Signature algorithm) options.
|
|
99
|
+
*
|
|
100
|
+
* * hash: hash function used to hash secret keys and messages
|
|
101
|
+
* * adjustScalarBytes: clears bits to get valid field element
|
|
102
|
+
* * domain: Used for hashing
|
|
103
|
+
* * mapToCurve: for hash-to-curve standard
|
|
104
|
+
* * prehash: RFC 8032 pre-hashing of messages to sign() / verify()
|
|
105
|
+
* * randomBytes: function generating random bytes, used for randomSecretKey
|
|
106
|
+
*/
|
|
107
|
+
export type EdDSAOpts = Partial<{
|
|
108
|
+
adjustScalarBytes: (bytes: Uint8Array) => Uint8Array;
|
|
109
|
+
domain: (data: Uint8Array, ctx: Uint8Array, phflag: boolean) => Uint8Array;
|
|
110
|
+
mapToCurve: (scalar: bigint[]) => AffinePoint<bigint>;
|
|
111
|
+
prehash: FHash;
|
|
112
|
+
randomBytes: (bytesLength?: number) => Uint8Array;
|
|
113
|
+
}>;
|
|
114
|
+
/**
|
|
115
|
+
* EdDSA (Edwards Digital Signature algorithm) interface.
|
|
116
|
+
*
|
|
117
|
+
* Allows to create and verify signatures, create public and secret keys.
|
|
118
|
+
*/
|
|
119
|
+
export interface EdDSA {
|
|
120
|
+
keygen: (seed?: Uint8Array) => {
|
|
121
|
+
secretKey: Uint8Array;
|
|
122
|
+
publicKey: Uint8Array;
|
|
123
|
+
};
|
|
124
|
+
getPublicKey: (secretKey: Hex) => Uint8Array;
|
|
125
|
+
sign: (message: Hex, secretKey: Hex, options?: {
|
|
64
126
|
context?: Hex;
|
|
65
127
|
}) => Uint8Array;
|
|
66
128
|
verify: (sig: Hex, message: Hex, publicKey: Hex, options?: {
|
|
67
129
|
context?: Hex;
|
|
68
130
|
zip215: boolean;
|
|
69
131
|
}) => boolean;
|
|
70
|
-
|
|
132
|
+
Point: EdwardsPointCons;
|
|
71
133
|
utils: {
|
|
72
|
-
|
|
134
|
+
randomSecretKey: (seed?: Uint8Array) => Uint8Array;
|
|
135
|
+
isValidSecretKey: (secretKey: Uint8Array) => boolean;
|
|
136
|
+
isValidPublicKey: (publicKey: Uint8Array, zip215?: boolean) => boolean;
|
|
137
|
+
/**
|
|
138
|
+
* Converts ed public key to x public key.
|
|
139
|
+
* @example
|
|
140
|
+
* ```js
|
|
141
|
+
* const someonesPub = ed25519.getPublicKey(ed25519.utils.randomSecretKey());
|
|
142
|
+
* const aPriv = x25519.utils.randomSecretKey();
|
|
143
|
+
* x25519.getSharedSecret(aPriv, ed25519.utils.toMontgomery(someonesPub))
|
|
144
|
+
* ```
|
|
145
|
+
*/
|
|
146
|
+
toMontgomery: (publicKey: Uint8Array) => Uint8Array;
|
|
147
|
+
/**
|
|
148
|
+
* Converts ed secret key to x secret key.
|
|
149
|
+
* @example
|
|
150
|
+
* ```js
|
|
151
|
+
* const someonesPub = x25519.getPublicKey(x25519.utils.randomSecretKey());
|
|
152
|
+
* const aPriv = ed25519.utils.randomSecretKey();
|
|
153
|
+
* x25519.getSharedSecret(ed25519.utils.toMontgomeryPriv(aPriv), someonesPub)
|
|
154
|
+
* ```
|
|
155
|
+
*/
|
|
156
|
+
toMontgomeryPriv: (privateKey: Uint8Array) => Uint8Array;
|
|
73
157
|
getExtendedPublicKey: (key: Hex) => {
|
|
74
158
|
head: Uint8Array;
|
|
75
159
|
prefix: Uint8Array;
|
|
76
160
|
scalar: bigint;
|
|
77
|
-
point:
|
|
161
|
+
point: EdwardsPoint;
|
|
78
162
|
pointBytes: Uint8Array;
|
|
79
163
|
};
|
|
80
|
-
|
|
164
|
+
/** @deprecated use `randomSecretKey` */
|
|
165
|
+
randomPrivateKey: (seed?: Uint8Array) => Uint8Array;
|
|
166
|
+
/** @deprecated use `point.precompute()` */
|
|
167
|
+
precompute: (windowSize?: number, point?: EdwardsPoint) => EdwardsPoint;
|
|
81
168
|
};
|
|
169
|
+
info: CurveInfo;
|
|
170
|
+
}
|
|
171
|
+
export type CurveFn = {
|
|
172
|
+
CURVE: CurveType;
|
|
173
|
+
keygen: EdDSA['keygen'];
|
|
174
|
+
getPublicKey: EdDSA['getPublicKey'];
|
|
175
|
+
sign: EdDSA['sign'];
|
|
176
|
+
verify: EdDSA['verify'];
|
|
177
|
+
Point: EdwardsPointCons;
|
|
178
|
+
/** @deprecated use `Point` */
|
|
179
|
+
ExtendedPoint: EdwardsPointCons;
|
|
180
|
+
utils: EdDSA['utils'];
|
|
181
|
+
info: CurveInfo;
|
|
82
182
|
};
|
|
183
|
+
export declare function edwards(CURVE: EdwardsOpts, curveOpts?: EdwardsExtraOpts): EdwardsPointCons;
|
|
83
184
|
/**
|
|
84
|
-
*
|
|
85
|
-
*
|
|
86
|
-
*
|
|
87
|
-
* // Before that, define BigInt-s: a, d, p, n, Gx, Gy, h
|
|
88
|
-
* const curve = twistedEdwards({ a, d, Fp: Field(p), n, Gx, Gy, h })
|
|
185
|
+
* Base class for prime-order points like Ristretto255 and Decaf448.
|
|
186
|
+
* These points eliminate cofactor issues by representing equivalence classes
|
|
187
|
+
* of Edwards curve points.
|
|
89
188
|
*/
|
|
90
|
-
export declare
|
|
91
|
-
|
|
189
|
+
export declare abstract class PrimeEdwardsPoint<T extends PrimeEdwardsPoint<T>> implements CurvePoint<bigint, T> {
|
|
190
|
+
static BASE: PrimeEdwardsPoint<any>;
|
|
191
|
+
static ZERO: PrimeEdwardsPoint<any>;
|
|
192
|
+
static Fp: IField<bigint>;
|
|
193
|
+
static Fn: IField<bigint>;
|
|
194
|
+
protected readonly ep: EdwardsPoint;
|
|
195
|
+
constructor(ep: EdwardsPoint);
|
|
196
|
+
abstract toBytes(): Uint8Array;
|
|
197
|
+
abstract equals(other: T): boolean;
|
|
198
|
+
static fromBytes(_bytes: Uint8Array): any;
|
|
199
|
+
static fromHex(_hex: Hex): any;
|
|
200
|
+
get x(): bigint;
|
|
201
|
+
get y(): bigint;
|
|
202
|
+
clearCofactor(): T;
|
|
203
|
+
assertValidity(): void;
|
|
204
|
+
toAffine(invertedZ?: bigint): AffinePoint<bigint>;
|
|
205
|
+
/** @deprecated use `toBytes` */
|
|
206
|
+
toRawBytes(): Uint8Array;
|
|
207
|
+
toHex(): string;
|
|
208
|
+
toString(): string;
|
|
209
|
+
isTorsionFree(): boolean;
|
|
210
|
+
isSmallOrder(): boolean;
|
|
211
|
+
add(other: T): T;
|
|
212
|
+
subtract(other: T): T;
|
|
213
|
+
multiply(scalar: bigint): T;
|
|
214
|
+
multiplyUnsafe(scalar: bigint): T;
|
|
215
|
+
double(): T;
|
|
216
|
+
negate(): T;
|
|
217
|
+
precompute(windowSize?: number, isLazy?: boolean): T;
|
|
218
|
+
abstract is0(): boolean;
|
|
219
|
+
protected abstract assertSame(other: T): void;
|
|
220
|
+
protected abstract init(ep: EdwardsPoint): T;
|
|
221
|
+
}
|
|
222
|
+
/**
|
|
223
|
+
* Initializes EdDSA signatures over given Edwards curve.
|
|
224
|
+
*/
|
|
225
|
+
export declare function eddsa(Point: EdwardsPointCons, cHash: FHash, eddsaOpts: EdDSAOpts): EdDSA;
|
|
226
|
+
export type EdComposed = {
|
|
227
|
+
CURVE: EdwardsOpts;
|
|
228
|
+
curveOpts: EdwardsExtraOpts;
|
|
229
|
+
hash: FHash;
|
|
230
|
+
eddsaOpts: EdDSAOpts;
|
|
231
|
+
};
|
|
232
|
+
export declare function twistedEdwards(c: CurveTypeWithLength): CurveFn;
|
|
92
233
|
//# sourceMappingURL=edwards.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"edwards.d.ts","sourceRoot":"","sources":["../../src/abstract/edwards.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"edwards.d.ts","sourceRoot":"","sources":["../../src/abstract/edwards.ts"],"names":[],"mappings":"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"}
|