@@ -17,7 +17,7 @@ const SUPPORTED_TLS = (() => {
17
17
return [ ] ;
18
18
} ) ( ) ;
19
19
20
- export function NewDriver ( context , data , { writeResponse } ) {
20
+ export function NewDriver ( context , data , wire ) {
21
21
const {
22
22
uri,
23
23
authorizationToken : { data : authToken } ,
@@ -51,17 +51,39 @@ export function NewDriver (context, data, { writeResponse }) {
51
51
? address =>
52
52
new Promise ( ( resolve , reject ) => {
53
53
const id = context . addResolverRequest ( resolve , reject )
54
- writeResponse ( 'ResolverResolutionRequired' , { id, address } )
54
+ wire . writeResponse ( 'ResolverResolutionRequired' , { id, address } )
55
55
} )
56
56
: undefined
57
- const driver = neo4j . driver ( uri , parsedAuthToken , {
57
+ const config = {
58
58
userAgent,
59
59
resolver,
60
60
useBigInt : true ,
61
61
logging : neo4j . logging . console ( process . env . LOG_LEVEL )
62
- } )
62
+ }
63
+ if ( 'encrypted' in data ) {
64
+ config . encrypted = data . encrypted ? 'ENCRYPTION_ON' : 'ENCRYPTION_OFF'
65
+ }
66
+ if ( 'trustedCertificates' in data ) {
67
+ if ( data . trustedCertificates === null ) {
68
+ config . trust = 'TRUST_SYSTEM_CA_SIGNED_CERTIFICATES'
69
+ } else if ( data . trustedCertificates . length === 0 ) {
70
+ config . trust = 'TRUST_ALL_CERTIFICATES'
71
+ } else {
72
+ config . trust = 'TRUST_CUSTOM_CA_SIGNED_CERTIFICATES'
73
+ config . trustedCertificates = data . trustedCertificates . map (
74
+ e => '/usr/local/share/custom-ca-certificates/' + e
75
+ )
76
+ }
77
+ }
78
+ let driver
79
+ try {
80
+ driver = neo4j . driver ( uri , parsedAuthToken , config )
81
+ } catch ( err ) {
82
+ wire . writeError ( err )
83
+ return
84
+ }
63
85
const id = context . addDriver ( driver )
64
- writeResponse ( 'Driver' , { id } )
86
+ wire . writeResponse ( 'Driver' , { id } )
65
87
}
66
88
67
89
export function DriverClose ( context , data , wire ) {
@@ -293,6 +315,8 @@ export function GetFeatures (_context, _params, wire) {
293
315
'Feature:Auth:Custom' ,
294
316
'Feature:Auth:Kerberos' ,
295
317
'Feature:Auth:Bearer' ,
318
+ 'Feature:API:SSLConfig' ,
319
+ 'Feature:API:SSLSchemes' ,
296
320
'AuthorizationExpiredTreatment' ,
297
321
'ConfHint:connection.recv_timeout_seconds' ,
298
322
'Feature:Impersonation' ,
0 commit comments