|
12 | 12 | */
|
13 | 13 |
|
14 | 14 | import {
|
15 |
| - generateBls12381KeyPair, |
16 |
| - DEFAULT_BLS12381_PUBLIC_KEY_LENGTH, |
| 15 | + generateBls12381G1KeyPair, |
| 16 | + generateBls12381G2KeyPair, |
| 17 | + DEFAULT_BLS12381_G1_PUBLIC_KEY_LENGTH, |
| 18 | + DEFAULT_BLS12381_G2_PUBLIC_KEY_LENGTH, |
17 | 19 | DEFAULT_BLS12381_PRIVATE_KEY_LENGTH,
|
18 | 20 | } from "../src";
|
19 | 21 |
|
20 | 22 | describe("bls12381", () => {
|
21 |
| - it("should be able to generate a key pair", () => { |
22 |
| - const result = generateBls12381KeyPair(); |
23 |
| - expect(result).toBeDefined(); |
24 |
| - expect(result.publicKey).toBeDefined(); |
25 |
| - expect(result.secretKey).toBeDefined(); |
26 |
| - expect(result.secretKey?.length as number).toEqual(DEFAULT_BLS12381_PRIVATE_KEY_LENGTH); |
27 |
| - expect(result.publicKey.length).toEqual(DEFAULT_BLS12381_PUBLIC_KEY_LENGTH); |
| 23 | + [ |
| 24 | + { |
| 25 | + field: "G1", |
| 26 | + generateKeyFn: generateBls12381G1KeyPair, |
| 27 | + secretKeyLength: DEFAULT_BLS12381_PRIVATE_KEY_LENGTH, |
| 28 | + publicKeyLength: DEFAULT_BLS12381_G1_PUBLIC_KEY_LENGTH, |
| 29 | + }, |
| 30 | + { |
| 31 | + field: "G2", |
| 32 | + generateKeyFn: generateBls12381G2KeyPair, |
| 33 | + secretKeyLength: DEFAULT_BLS12381_PRIVATE_KEY_LENGTH, |
| 34 | + publicKeyLength: DEFAULT_BLS12381_G2_PUBLIC_KEY_LENGTH, |
| 35 | + }, |
| 36 | + ].forEach((value) => { |
| 37 | + it(`should be able to generate a key pair in ${value.field} field`, () => { |
| 38 | + const result = value.generateKeyFn(); |
| 39 | + expect(result).toBeDefined(); |
| 40 | + expect(result.publicKey).toBeDefined(); |
| 41 | + expect(result.secretKey).toBeDefined(); |
| 42 | + expect(result.secretKey?.length as number).toEqual(value.secretKeyLength); |
| 43 | + expect(result.publicKey.length).toEqual(value.publicKeyLength); |
| 44 | + }); |
28 | 45 | });
|
29 | 46 |
|
30 |
| - it("should be able to generate a key pair with a seed", () => { |
31 |
| - const result = generateBls12381KeyPair( |
32 |
| - new Uint8Array(new Buffer("H297BpoOgkfpXcxr1fJyQRiNx1+ZekeQ+OU/AYV/lVxaPXXhFBIbxeIU8kIAAX68cwQ=", "base64")) |
33 |
| - ); |
34 |
| - expect(result.publicKey).toBeDefined(); |
35 |
| - expect(result.secretKey).toBeDefined(); |
36 |
| - expect(result.secretKey?.length as number).toEqual(DEFAULT_BLS12381_PRIVATE_KEY_LENGTH); |
37 |
| - expect(result.publicKey.length).toEqual(DEFAULT_BLS12381_PUBLIC_KEY_LENGTH); |
38 |
| - expect(result.publicKey).toEqual( |
39 |
| - new Uint8Array( |
40 |
| - new Buffer( |
41 |
| - "qJgttTOthlZHltz+c0PE07hx3worb/cy7QY5iwRegQ9BfwvGahdqCO9Q9xuOnF5nD/Tq6t8zm9z26EAFCiaEJnL5b50D1cHDgNxBUPEEae+4bUb3JRsHaxBdZWDOo3pb", |
| 47 | + [ |
| 48 | + { |
| 49 | + field: "G1", |
| 50 | + generateKeyFn: generateBls12381G1KeyPair, |
| 51 | + secretKeyLength: DEFAULT_BLS12381_PRIVATE_KEY_LENGTH, |
| 52 | + publicKeyLength: DEFAULT_BLS12381_G1_PUBLIC_KEY_LENGTH, |
| 53 | + }, |
| 54 | + { |
| 55 | + field: "G2", |
| 56 | + generateKeyFn: generateBls12381G2KeyPair, |
| 57 | + secretKeyLength: DEFAULT_BLS12381_PRIVATE_KEY_LENGTH, |
| 58 | + publicKeyLength: DEFAULT_BLS12381_G2_PUBLIC_KEY_LENGTH, |
| 59 | + }, |
| 60 | + ].forEach((value) => { |
| 61 | + it(`should be able to generate a key pairs in ${value.field} field without seed which are random`, () => { |
| 62 | + const keyPair1 = value.generateKeyFn(); |
| 63 | + const keyPair2 = value.generateKeyFn(); |
| 64 | + expect(keyPair1).toBeDefined(); |
| 65 | + expect(keyPair2).toBeDefined(); |
| 66 | + expect((keyPair1.secretKey as Uint8Array) === (keyPair2.secretKey as Uint8Array)).toBeFalsy(); |
| 67 | + expect(keyPair1.publicKey === keyPair2.publicKey).toBeFalsy(); |
| 68 | + }); |
| 69 | + }); |
| 70 | + |
| 71 | + [ |
| 72 | + { |
| 73 | + field: "G1", |
| 74 | + generateKeyFn: generateBls12381G1KeyPair, |
| 75 | + secretKeyLength: DEFAULT_BLS12381_PRIVATE_KEY_LENGTH, |
| 76 | + publicKeyLength: DEFAULT_BLS12381_G1_PUBLIC_KEY_LENGTH, |
| 77 | + seed: new Uint8Array( |
| 78 | + Buffer.from("H297BpoOgkfpXcxr1fJyQRiNx1+ZekeQ+OU/AYV/lVxaPXXhFBIbxeIU8kIAAX68cwQ=", "base64") |
| 79 | + ), |
| 80 | + secretKey: new Uint8Array(Buffer.from("Cm550dHeqo5I/dVC/bXD9s5Cx8vnyhV/gm7KO5UuviE=", "base64")), |
| 81 | + publicKey: new Uint8Array( |
| 82 | + Buffer.from("ufHHJwY9/xjrtHgGyQD1F9zNRJqiB4zhSXDEBC/MJrNuXJFwI+ILxu2uPASyd5Vf", "base64") |
| 83 | + ), |
| 84 | + }, |
| 85 | + { |
| 86 | + field: "G2", |
| 87 | + generateKeyFn: generateBls12381G2KeyPair, |
| 88 | + secretKeyLength: DEFAULT_BLS12381_PRIVATE_KEY_LENGTH, |
| 89 | + publicKeyLength: DEFAULT_BLS12381_G2_PUBLIC_KEY_LENGTH, |
| 90 | + seed: new Uint8Array( |
| 91 | + Buffer.from("H297BpoOgkfpXcxr1fJyQRiNx1+ZekeQ+OU/AYV/lVxaPXXhFBIbxeIU8kIAAX68cwQ=", "base64") |
| 92 | + ), |
| 93 | + secretKey: new Uint8Array(Buffer.from("Cm550dHeqo5I/dVC/bXD9s5Cx8vnyhV/gm7KO5UuviE=", "base64")), |
| 94 | + publicKey: new Uint8Array( |
| 95 | + Buffer.from( |
| 96 | + "pQro1uqpvUPM31sr+jHffz7+KJIpA3kFen4SoKATURRgo7pk582aaqIxSinWsgHDB9j9dwxYRbC3q2ZmICR2OVMX3FHW9LZV2QAauTYFn7gEra1BSeKhdKDpzBxPjI36", |
42 | 97 | "base64"
|
43 | 98 | )
|
44 |
| - ) |
45 |
| - ); |
46 |
| - expect(result.secretKey as Uint8Array).toEqual( |
47 |
| - new Uint8Array(new Buffer("YoASulEi3WV7yfJ+yWctJRCbHfr7WjK7JjcMrRqbL6E=", "base64")) |
48 |
| - ); |
| 99 | + ), |
| 100 | + }, |
| 101 | + ].forEach((value) => { |
| 102 | + it(`should be able to generate a key pair with a seed in ${value.field} field`, () => { |
| 103 | + const result = value.generateKeyFn(value.seed); |
| 104 | + expect(result.publicKey).toBeDefined(); |
| 105 | + expect(result.secretKey).toBeDefined(); |
| 106 | + expect(result.secretKey?.length as number).toEqual(value.secretKeyLength); |
| 107 | + expect(result.publicKey.length).toEqual(value.publicKeyLength); |
| 108 | + expect(result.secretKey as Uint8Array).toEqual(value.secretKey); |
| 109 | + expect(result.publicKey).toEqual(value.publicKey); |
| 110 | + }); |
49 | 111 | });
|
50 | 112 | });
|
0 commit comments