Changeset 307 in code for trunk/upstream.go
- Timestamp:
- Jun 2, 2020, 9:24:22 AM (5 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/upstream.go
r305 r307 2 2 3 3 import ( 4 "crypto" 5 "crypto/sha256" 4 6 "crypto/tls" 7 "crypto/x509" 5 8 "encoding/base64" 6 9 "errors" … … 101 104 102 105 logger.Printf("connecting to TLS server at address %q", addr) 103 netConn, err = tls.DialWithDialer(&dialer, "tcp", addr, nil) 106 107 var cfg *tls.Config 108 if network.SASL.Mechanism == "EXTERNAL" { 109 if network.SASL.External.CertBlob == nil { 110 return nil, fmt.Errorf("missing certificate for authentication") 111 } 112 if network.SASL.External.PrivKeyBlob == nil { 113 return nil, fmt.Errorf("missing private key for authentication") 114 } 115 key, err := x509.ParsePKCS8PrivateKey(network.SASL.External.PrivKeyBlob) 116 if err != nil { 117 return nil, fmt.Errorf("failed to parse private key: %v", err) 118 } 119 cfg = &tls.Config{ 120 Certificates: []tls.Certificate{ 121 { 122 Certificate: [][]byte{network.SASL.External.CertBlob}, 123 PrivateKey: key.(crypto.PrivateKey), 124 }, 125 }, 126 } 127 logger.Printf("using TLS client certificate %x", sha256.Sum256(network.SASL.External.CertBlob)) 128 } 129 130 netConn, err = tls.DialWithDialer(&dialer, "tcp", addr, cfg) 104 131 case "irc+insecure": 105 132 if !strings.ContainsRune(addr, ':') { … … 1400 1427 uc.logger.Printf("starting SASL PLAIN authentication with username %q", auth.Plain.Username) 1401 1428 uc.saslClient = sasl.NewPlainClient("", auth.Plain.Username, auth.Plain.Password) 1429 case "EXTERNAL": 1430 uc.logger.Printf("starting SASL EXTERNAL authentication") 1431 uc.saslClient = sasl.NewExternalClient("") 1402 1432 default: 1403 1433 return fmt.Errorf("unsupported SASL mechanism %q", name)
Note:
See TracChangeset
for help on using the changeset viewer.