• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1/* eslint-disable no-proto */
2'use strict';
3const common = require('../common');
4
5if (!common.hasCrypto)
6  common.skip('missing crypto');
7
8const { strictEqual, deepStrictEqual } = require('assert');
9const { translatePeerCertificate } = require('_tls_common');
10
11const certString = '__proto__=42\nA=1\nB=2\nC=3';
12const certObject = Object.create(null);
13certObject.__proto__ = '42';
14certObject.A = '1';
15certObject.B = '2';
16certObject.C = '3';
17
18strictEqual(translatePeerCertificate(null), null);
19strictEqual(translatePeerCertificate(undefined), null);
20
21strictEqual(translatePeerCertificate(0), null);
22strictEqual(translatePeerCertificate(1), 1);
23
24deepStrictEqual(translatePeerCertificate({}), {});
25
26deepStrictEqual(translatePeerCertificate({ issuer: '' }),
27                { issuer: Object.create(null) });
28deepStrictEqual(translatePeerCertificate({ issuer: null }),
29                { issuer: null });
30deepStrictEqual(translatePeerCertificate({ issuer: certString }),
31                { issuer: certObject });
32
33deepStrictEqual(translatePeerCertificate({ subject: '' }),
34                { subject: Object.create(null) });
35deepStrictEqual(translatePeerCertificate({ subject: null }),
36                { subject: null });
37deepStrictEqual(translatePeerCertificate({ subject: certString }),
38                { subject: certObject });
39
40deepStrictEqual(translatePeerCertificate({ issuerCertificate: '' }),
41                { issuerCertificate: null });
42deepStrictEqual(translatePeerCertificate({ issuerCertificate: null }),
43                { issuerCertificate: null });
44deepStrictEqual(
45  translatePeerCertificate({ issuerCertificate: { subject: certString } }),
46  { issuerCertificate: { subject: certObject } });
47
48{
49  const cert = {};
50  cert.issuerCertificate = cert;
51  deepStrictEqual(translatePeerCertificate(cert), { issuerCertificate: cert });
52}
53
54deepStrictEqual(translatePeerCertificate({ infoAccess: '' }),
55                { infoAccess: Object.create(null) });
56deepStrictEqual(translatePeerCertificate({ infoAccess: null }),
57                { infoAccess: null });
58{
59  const input =
60      '__proto__:mostly harmless\n' +
61      'hasOwnProperty:not a function\n' +
62      'OCSP - URI:file:///etc/passwd\n';
63  const expected = Object.create(null);
64  expected.__proto__ = ['mostly harmless'];
65  expected.hasOwnProperty = ['not a function'];
66  expected['OCSP - URI'] = ['file:///etc/passwd'];
67  deepStrictEqual(translatePeerCertificate({ infoAccess: input }),
68                  { infoAccess: expected });
69}
70