11cb0ef41Sopenharmony_ci/* eslint-disable no-proto */ 21cb0ef41Sopenharmony_ci'use strict'; 31cb0ef41Sopenharmony_ciconst common = require('../common'); 41cb0ef41Sopenharmony_ci 51cb0ef41Sopenharmony_ciif (!common.hasCrypto) 61cb0ef41Sopenharmony_ci common.skip('missing crypto'); 71cb0ef41Sopenharmony_ci 81cb0ef41Sopenharmony_ciconst { strictEqual, deepStrictEqual } = require('assert'); 91cb0ef41Sopenharmony_ciconst { translatePeerCertificate } = require('_tls_common'); 101cb0ef41Sopenharmony_ci 111cb0ef41Sopenharmony_ciconst certString = '__proto__=42\nA=1\nB=2\nC=3'; 121cb0ef41Sopenharmony_ci 131cb0ef41Sopenharmony_cistrictEqual(translatePeerCertificate(null), null); 141cb0ef41Sopenharmony_cistrictEqual(translatePeerCertificate(undefined), null); 151cb0ef41Sopenharmony_ci 161cb0ef41Sopenharmony_cistrictEqual(translatePeerCertificate(0), null); 171cb0ef41Sopenharmony_cistrictEqual(translatePeerCertificate(1), 1); 181cb0ef41Sopenharmony_ci 191cb0ef41Sopenharmony_cideepStrictEqual(translatePeerCertificate({}), {}); 201cb0ef41Sopenharmony_ci 211cb0ef41Sopenharmony_ci// Earlier versions of Node.js parsed the issuer property but did so 221cb0ef41Sopenharmony_ci// incorrectly. This behavior has now reached end-of-life and user-supplied 231cb0ef41Sopenharmony_ci// strings will not be parsed at all. 241cb0ef41Sopenharmony_cideepStrictEqual(translatePeerCertificate({ issuer: '' }), 251cb0ef41Sopenharmony_ci { issuer: '' }); 261cb0ef41Sopenharmony_cideepStrictEqual(translatePeerCertificate({ issuer: null }), 271cb0ef41Sopenharmony_ci { issuer: null }); 281cb0ef41Sopenharmony_cideepStrictEqual(translatePeerCertificate({ issuer: certString }), 291cb0ef41Sopenharmony_ci { issuer: certString }); 301cb0ef41Sopenharmony_ci 311cb0ef41Sopenharmony_ci// Earlier versions of Node.js parsed the issuer property but did so 321cb0ef41Sopenharmony_ci// incorrectly. This behavior has now reached end-of-life and user-supplied 331cb0ef41Sopenharmony_ci// strings will not be parsed at all. 341cb0ef41Sopenharmony_cideepStrictEqual(translatePeerCertificate({ subject: '' }), 351cb0ef41Sopenharmony_ci { subject: '' }); 361cb0ef41Sopenharmony_cideepStrictEqual(translatePeerCertificate({ subject: null }), 371cb0ef41Sopenharmony_ci { subject: null }); 381cb0ef41Sopenharmony_cideepStrictEqual(translatePeerCertificate({ subject: certString }), 391cb0ef41Sopenharmony_ci { subject: certString }); 401cb0ef41Sopenharmony_ci 411cb0ef41Sopenharmony_cideepStrictEqual(translatePeerCertificate({ issuerCertificate: '' }), 421cb0ef41Sopenharmony_ci { issuerCertificate: null }); 431cb0ef41Sopenharmony_cideepStrictEqual(translatePeerCertificate({ issuerCertificate: null }), 441cb0ef41Sopenharmony_ci { issuerCertificate: null }); 451cb0ef41Sopenharmony_cideepStrictEqual( 461cb0ef41Sopenharmony_ci translatePeerCertificate({ issuerCertificate: { subject: certString } }), 471cb0ef41Sopenharmony_ci { issuerCertificate: { subject: certString } }); 481cb0ef41Sopenharmony_ci 491cb0ef41Sopenharmony_ci{ 501cb0ef41Sopenharmony_ci const cert = {}; 511cb0ef41Sopenharmony_ci cert.issuerCertificate = cert; 521cb0ef41Sopenharmony_ci deepStrictEqual(translatePeerCertificate(cert), { issuerCertificate: cert }); 531cb0ef41Sopenharmony_ci} 541cb0ef41Sopenharmony_ci 551cb0ef41Sopenharmony_cideepStrictEqual(translatePeerCertificate({ infoAccess: '' }), 561cb0ef41Sopenharmony_ci { infoAccess: Object.create(null) }); 571cb0ef41Sopenharmony_cideepStrictEqual(translatePeerCertificate({ infoAccess: null }), 581cb0ef41Sopenharmony_ci { infoAccess: null }); 591cb0ef41Sopenharmony_ci{ 601cb0ef41Sopenharmony_ci const input = 611cb0ef41Sopenharmony_ci '__proto__:mostly harmless\n' + 621cb0ef41Sopenharmony_ci 'hasOwnProperty:not a function\n' + 631cb0ef41Sopenharmony_ci 'OCSP - URI:file:///etc/passwd\n'; 641cb0ef41Sopenharmony_ci const expected = Object.create(null); 651cb0ef41Sopenharmony_ci expected.__proto__ = ['mostly harmless']; 661cb0ef41Sopenharmony_ci expected.hasOwnProperty = ['not a function']; 671cb0ef41Sopenharmony_ci expected['OCSP - URI'] = ['file:///etc/passwd']; 681cb0ef41Sopenharmony_ci deepStrictEqual(translatePeerCertificate({ infoAccess: input }), 691cb0ef41Sopenharmony_ci { infoAccess: expected }); 701cb0ef41Sopenharmony_ci} 71