(options)
| 37 | } |
| 38 | |
| 39 | function translateClientOptions(options) { |
| 40 | Object.keys(options).forEach(key => { |
| 41 | if (['j', 'journal', 'fsync', 'wtimeout', 'wtimeoutms'].indexOf(key) >= 0) { |
| 42 | throw new Error( |
| 43 | `Unhandled write concern key needs to be added to options.writeConcern: ${key}` |
| 44 | ); |
| 45 | } |
| 46 | |
| 47 | if (key === 'w') { |
| 48 | options.writeConcern = { w: options.w }; |
| 49 | delete options[key]; |
| 50 | } else if (key === 'readConcernLevel') { |
| 51 | options.readConcern = { level: options.readConcernLevel }; |
| 52 | delete options[key]; |
| 53 | } else if (key === 'autoEncryptOpts') { |
| 54 | options.autoEncryption = Object.assign({}, options.autoEncryptOpts); |
| 55 | |
| 56 | if (options.autoEncryptOpts.keyVaultNamespace == null) { |
| 57 | options.autoEncryption.keyVaultNamespace = 'keyvault.datakeys'; |
| 58 | } |
| 59 | |
| 60 | if (options.autoEncryptOpts.kmsProviders) { |
| 61 | const kmsProviders = getCSFLEKMSProviders(); |
| 62 | if (options.autoEncryptOpts.kmsProviders.local) { |
| 63 | kmsProviders.local = options.autoEncryptOpts.kmsProviders.local; |
| 64 | } |
| 65 | |
| 66 | if (options.autoEncryptOpts.kmsProviders.awsTemporary) { |
| 67 | kmsProviders.aws = { |
| 68 | accessKeyId: process.env.CSFLE_AWS_TEMP_ACCESS_KEY_ID, |
| 69 | secretAccessKey: process.env.CSFLE_AWS_TEMP_SECRET_ACCESS_KEY, |
| 70 | sessionToken: process.env.CSFLE_AWS_TEMP_SESSION_TOKEN |
| 71 | }; |
| 72 | } |
| 73 | |
| 74 | if (options.autoEncryptOpts.kmsProviders.awsTemporaryNoSessionToken) { |
| 75 | kmsProviders.aws = { |
| 76 | accessKeyId: process.env.CSFLE_AWS_TEMP_ACCESS_KEY_ID, |
| 77 | secretAccessKey: process.env.CSFLE_AWS_TEMP_SECRET_ACCESS_KEY |
| 78 | }; |
| 79 | } |
| 80 | |
| 81 | if (options.autoEncryptOpts.kmsProviders.kmip) { |
| 82 | kmsProviders.kmip = { |
| 83 | endpoint: 'localhost:5698' |
| 84 | }; |
| 85 | options.autoEncryption.tlsOptions = { |
| 86 | kmip: { |
| 87 | tlsCAFile: process.env.CSFLE_TLS_CA_FILE, |
| 88 | tlsCertificateKeyFile: process.env.CSFLE_TLS_CLIENT_CERT_FILE |
| 89 | } |
| 90 | }; |
| 91 | } |
| 92 | |
| 93 | if (options.autoEncryptOpts.kmsProviders['local:name2']) { |
| 94 | kmsProviders['local:name2'] = options.autoEncryptOpts.kmsProviders['local:name2']; |
| 95 | options.autoEncryption.tlsOptions = { |
| 96 | 'local:name2': { |
no test coverage detected