|
1 |
| -import { quiche } from '@/native'; |
2 | 1 | import * as x509 from '@peculiar/x509';
|
3 | 2 | import * as asn1 from '@peculiar/asn1-schema';
|
4 | 3 | import * as asn1X509 from '@peculiar/asn1-x509';
|
5 | 4 | import * as asn1Pkcs8 from '@peculiar/asn1-pkcs8';
|
6 |
| -import { testProp, fc } from '@fast-check/jest'; |
| 5 | +import { fc } from '@fast-check/jest'; |
7 | 6 | import { X509Certificate } from '@peculiar/x509';
|
8 | 7 | import { Crypto } from '@peculiar/webcrypto';
|
9 | 8 |
|
10 |
| -const certChain = ` |
11 |
| ------BEGIN CERTIFICATE----- |
12 |
| -MIIC0TCCAoOgAwIBAgIQBkNidOqLcACYmcuYTfBvfzAFBgMrZXAwQDE+MDwGA1UE |
13 |
| -AxM1dmxzanBiamQ3MDN2MXVlYnU5ZDFxZWs1ZTE5ZDYxMDBkOG44cXBjMWdraG9q |
14 |
| -dXRsc2ExNjAwHhcNMjMwNDEyMDMzNjQ2WhcNMjMwNDEyMDM1MzI2WjBAMT4wPAYD |
15 |
| -VQQDEzV2ZjlrZ2w5MTJ0MmxkaGNsaG1vbmo4ajE5MWU4NzBrNzJjM2Qxb2Zrc2Vl |
16 |
| -ZGNuaDduYTRsZzAqMAUGAytlcAMhAHppCqQi6KrYsrG2LzRMKQuQcFDiYNocPpxz |
17 |
| -msvE91Ero4IBkTCCAY0wDAYDVR0TBAUwAwEB/zALBgNVHQ8EBAMCAf4wRQYDVR0l |
18 |
| -BD4wPAYIKwYBBQUHAwEGCCsGAQUFBwMCBggrBgEFBQcDAwYIKwYBBQUHAwQGCCsG |
19 |
| -AQUFBwMIBggrBgEFBQcDCTCBlgYDVR0RBIGOMIGLgjV2ZjlrZ2w5MTJ0MmxkaGNs |
20 |
| -aG1vbmo4ajE5MWU4NzBrNzJjM2Qxb2Zrc2VlZGNuaDduYTRsZ4cEfwAAAYcQAAAA |
21 |
| -AAAAAAAAAAAAAAAAAYY6cGs6Ly92ZjlrZ2w5MTJ0MmxkaGNsaG1vbmo4ajE5MWU4 |
22 |
| -NzBrNzJjM2Qxb2Zrc2VlZGNuaDduYTRsZzAdBgNVHQ4EFgQUw/bBoGFsa35sm6vr |
23 |
| -tUP2DFb4rvUwHgYLKwYBBAGDvk8CAgEEDxYNMS4wLjEtYWxwaGEuMDBRBgsrBgEE |
24 |
| -AYO+TwICAgRCBEBBhLfXUK22guEGmVaeOydwKJTpkC/EqXPrPiKAwnMcOqwmaADJ |
25 |
| -Tf3qeF8jCUTNkSzfSosSiZVQZTd7hZ+3aXsLMAUGAytlcANBAFOzcMmuaar9ddXr |
26 |
| -Klgb0rFviTYrBJcJ8B9ZfGa55NZm/IP0tlZEfg1IHzae/ca6aDc4S9Tq+6QzaEqt |
27 |
| -QNWLTAw= |
28 |
| ------END CERTIFICATE----- |
29 |
| ------BEGIN CERTIFICATE----- |
30 |
| -MIIC0TCCAoOgAwIBAgIQBkNidOiwcACGVfU86PK1vTAFBgMrZXAwQDE+MDwGA1UE |
31 |
| -AxM1dmxzanBiamQ3MDN2MXVlYnU5ZDFxZWs1ZTE5ZDYxMDBkOG44cXBjMWdraG9q |
32 |
| -dXRsc2ExNjAwHhcNMjMwNDEyMDMzNjQ2WhcNMjQwNDExMDMzNjQ2WjBAMT4wPAYD |
33 |
| -VQQDEzV2bHNqcGJqZDcwM3YxdWVidTlkMXFlazVlMTlkNjEwMGQ4bjhxcGMxZ2to |
34 |
| -b2p1dGxzYTE2MDAqMAUGAytlcAMhAK8nlc2nAP4fOX5LQ6dQrgpaYIANRdGssDCk |
35 |
| -cT92vFBMo4IBkTCCAY0wDAYDVR0TBAUwAwEB/zALBgNVHQ8EBAMCAf4wRQYDVR0l |
36 |
| -BD4wPAYIKwYBBQUHAwEGCCsGAQUFBwMCBggrBgEFBQcDAwYIKwYBBQUHAwQGCCsG |
37 |
| -AQUFBwMIBggrBgEFBQcDCTCBlgYDVR0RBIGOMIGLgjV2bHNqcGJqZDcwM3YxdWVi |
38 |
| -dTlkMXFlazVlMTlkNjEwMGQ4bjhxcGMxZ2tob2p1dGxzYTE2MIcEfwAAAYcQAAAA |
39 |
| -AAAAAAAAAAAAAAAAAYY6cGs6Ly92bHNqcGJqZDcwM3YxdWVidTlkMXFlazVlMTlk |
40 |
| -NjEwMGQ4bjhxcGMxZ2tob2p1dGxzYTE2MDAdBgNVHQ4EFgQUa4ZvvTwywvz85bcu |
41 |
| -4iizM9fViB8wHgYLKwYBBAGDvk8CAgEEDxYNMS4wLjEtYWxwaGEuMDBRBgsrBgEE |
42 |
| -AYO+TwICAgRCBEBOYl4h6T/dslmDGM0nXMagUJisoVu3TRrbfPkvlBCdc4KUTree |
43 |
| -jedorMB3d8+L1WV1mCr5BzUChESFZ8NOPHkBMAUGAytlcANBAPyIki/6vOsIz/T6 |
44 |
| -i2J07zvMs9omg7Kjn1HS4M4MSzwljBvMF3VY7Q2fbGWz1IAZAWwmO9JvQv3boejZ |
45 |
| -mw7iaQw= |
46 |
| ------END CERTIFICATE----- |
47 |
| -` |
48 |
| - |
49 |
| -const privateKey = ` |
50 |
| ------BEGIN PRIVATE KEY----- |
51 |
| -MC4CAQAwBQYDK2VwBCIEIPX4FqPs5hDcshMDvEQGFsWyrySEGY3G3eSzTXBEFkrG |
52 |
| ------END PRIVATE KEY----- |
53 |
| -` |
54 |
| - |
55 | 9 | /**
|
56 | 10 | * WebCrypto polyfill from @peculiar/webcrypto
|
57 | 11 | * This behaves differently with respect to Ed25519 keys
|
@@ -282,8 +236,8 @@ async function createTLSConfigWithChain(
|
282 | 236 | keyPairs: Array<KeyPair>,
|
283 | 237 | generateCertId?: () => string,
|
284 | 238 | ): Promise<{
|
285 |
| - keyPrivatePem: string; |
286 | 239 | certChainPem: string;
|
| 240 | + privKeyPem: string; |
287 | 241 | }> {
|
288 | 242 | if (keyPairs.length === 0) throw Error('Must have at least 1 keypair');
|
289 | 243 | let num = 0;
|
@@ -313,38 +267,44 @@ async function createTLSConfigWithChain(
|
313 | 267 | }
|
314 | 268 |
|
315 | 269 | return {
|
316 |
| - keyPrivatePem: privateKeyToPEM(previousKeyPair!.privateKey), |
| 270 | + privKeyPem: privateKeyToPEM(previousKeyPair!.privateKey), |
317 | 271 | certChainPem: certChainPEM,
|
318 | 272 | };
|
319 | 273 | }
|
320 | 274 |
|
321 |
| -describe('Playground tests', () => { |
322 |
| - test('someTest', async () => { |
323 |
| - // console.log(quiche.Config.withBoringSslCtx); |
324 |
| - const config = quiche.Config.withBoringSslCtx( |
325 |
| - null, //Buffer.from(certChain), |
326 |
| - null, //Buffer.from(privateKey), |
327 |
| - ); |
328 |
| - config.grease(true); |
329 |
| - config.verifyPeer(true); |
| 275 | +const privateKeyArb = fc.uint8Array({ |
| 276 | + minLength: 32, |
| 277 | + maxLength: 32, |
| 278 | +}).map(v => Buffer.from(v)) |
330 | 279 |
|
331 |
| - console.log(config); |
332 |
| - }) |
| 280 | +// FIXME: Public key should be derived from private key |
| 281 | +const publicKeyArb = ( |
| 282 | + privateKey: fc.Arbitrary<Buffer> = privateKeyArb, |
| 283 | +) => privateKey.map(privateKey => { |
| 284 | + const publicKey = Buffer.from(privateKey); |
| 285 | + publicKey.reverse(); |
| 286 | + publicKey[0] = publicKey[0] += 1; |
| 287 | + return publicKey; |
| 288 | +}) |
333 | 289 |
|
334 |
| - test('generate a certificate', async () => { |
| 290 | +const keyPairArb = ( |
| 291 | + privateKey: fc.Arbitrary<Buffer> = privateKeyArb, |
| 292 | +): fc.Arbitrary<KeyPair> => privateKey.chain( privateKey => fc.record({ |
| 293 | + privateKey: fc.constant(privateKey), |
| 294 | + publicKey: publicKeyArb(fc.constant(privateKey)), |
| 295 | +})); |
335 | 296 |
|
336 |
| - const tlsConfig = await createTLSConfigWithChain( |
337 |
| - [ |
338 |
| - { |
339 |
| - privateKey: Buffer.alloc(32, 0x01), |
340 |
| - publicKey: Buffer.alloc(32, 0x02), |
341 |
| - }, |
342 |
| - ], |
343 |
| - ); |
344 |
| - console.log(tlsConfig); |
345 |
| - }) |
| 297 | +const keyPairsArb = fc.array(keyPairArb(), {minLength: 1, size: 'xsmall'}); |
346 | 298 |
|
347 |
| - testProp.skip('asd', [fc.integer()], async (int) => { |
348 |
| - console.log(int); |
349 |
| - }) |
350 |
| -}); |
| 299 | +const tlsConfigArb = (keyPairs: fc.Arbitrary<Array<KeyPair>> = keyPairsArb) => |
| 300 | + keyPairs.map(async keyPairs => await createTLSConfigWithChain(keyPairs)) |
| 301 | + |
| 302 | + |
| 303 | +export { |
| 304 | + generateCertificate, |
| 305 | + privateKeyArb, |
| 306 | + publicKeyArb, |
| 307 | + keyPairArb, |
| 308 | + keyPairsArb, |
| 309 | + tlsConfigArb, |
| 310 | +} |
0 commit comments