| // Copyright (C) MongoDB, Inc. 2017-present. |
| // |
| // Licensed under the Apache License, Version 2.0 (the "License"); you may |
| // not use this file except in compliance with the License. You may obtain |
| // a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 |
| |
| package connection |
| |
| import "crypto/tls" |
| |
| // Clone returns a shallow clone of c. It is safe to clone a Config that is being |
| // used concurrently by a TLS client or server. |
| func (c *TLSConfig) Clone() *TLSConfig { |
| cfg := cloneconfig(c.Config) |
| return &TLSConfig{cfg, c.clientCertPass} |
| } |
| |
| func cloneconfig(c *tls.Config) *tls.Config { |
| return &tls.Config{ |
| Rand: c.Rand, |
| Time: c.Time, |
| Certificates: c.Certificates, |
| NameToCertificate: c.NameToCertificate, |
| GetCertificate: c.GetCertificate, |
| RootCAs: c.RootCAs, |
| NextProtos: c.NextProtos, |
| ServerName: c.ServerName, |
| ClientAuth: c.ClientAuth, |
| ClientCAs: c.ClientCAs, |
| InsecureSkipVerify: c.InsecureSkipVerify, |
| CipherSuites: c.CipherSuites, |
| PreferServerCipherSuites: c.PreferServerCipherSuites, |
| SessionTicketsDisabled: c.SessionTicketsDisabled, |
| SessionTicketKey: c.SessionTicketKey, |
| ClientSessionCache: c.ClientSessionCache, |
| MinVersion: c.MinVersion, |
| MaxVersion: c.MaxVersion, |
| CurvePreferences: c.CurvePreferences, |
| DynamicRecordSizingDisabled: c.DynamicRecordSizingDisabled, |
| Renegotiation: c.Renegotiation, |
| } |
| } |