mirror of
				https://github.com/minio/minio.git
				synced 2025-10-31 08:11:19 +01:00 
			
		
		
		
	- remove some duplicated code - reported a bug, separately fixed in #13664 - using strings.ReplaceAll() when needed - using filepath.ToSlash() use when needed - remove all non-Go style comments from the codebase Co-authored-by: Aditya Manthramurthy <donatello@users.noreply.github.com>
		
			
				
	
	
		
			95 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			95 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| // Copyright (c) 2015-2021 MinIO, Inc.
 | |
| //
 | |
| // This file is part of MinIO Object Storage stack
 | |
| //
 | |
| // This program is free software: you can redistribute it and/or modify
 | |
| // it under the terms of the GNU Affero General Public License as published by
 | |
| // the Free Software Foundation, either version 3 of the License, or
 | |
| // (at your option) any later version.
 | |
| //
 | |
| // This program is distributed in the hope that it will be useful
 | |
| // but WITHOUT ANY WARRANTY; without even the implied warranty of
 | |
| // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | |
| // GNU Affero General Public License for more details.
 | |
| //
 | |
| // You should have received a copy of the GNU Affero General Public License
 | |
| // along with this program.  If not, see <http://www.gnu.org/licenses/>.
 | |
| 
 | |
| package config
 | |
| 
 | |
| import (
 | |
| 	"crypto/x509"
 | |
| 	"crypto/x509/pkix"
 | |
| 	"fmt"
 | |
| 	"net/http"
 | |
| 	"strings"
 | |
| 
 | |
| 	color "github.com/minio/minio/internal/color"
 | |
| )
 | |
| 
 | |
| // Extra ASN1 OIDs that we may need to handle
 | |
| var (
 | |
| 	oidEmailAddress = []int{1, 2, 840, 113549, 1, 9, 1}
 | |
| )
 | |
| 
 | |
| // printName prints the fields of a distinguished name, which include such
 | |
| // things as its common name and locality.
 | |
| func printName(names []pkix.AttributeTypeAndValue, buf *strings.Builder) []string {
 | |
| 	values := []string{}
 | |
| 	for _, name := range names {
 | |
| 		oid := name.Type
 | |
| 		//nolint:gocritic
 | |
| 		if len(oid) == 4 && oid[0] == 2 && oid[1] == 5 && oid[2] == 4 {
 | |
| 			switch oid[3] {
 | |
| 			case 3:
 | |
| 				values = append(values, fmt.Sprintf("CN=%s", name.Value))
 | |
| 			case 6:
 | |
| 				values = append(values, fmt.Sprintf("C=%s", name.Value))
 | |
| 			case 8:
 | |
| 				values = append(values, fmt.Sprintf("ST=%s", name.Value))
 | |
| 			case 10:
 | |
| 				values = append(values, fmt.Sprintf("O=%s", name.Value))
 | |
| 			case 11:
 | |
| 				values = append(values, fmt.Sprintf("OU=%s", name.Value))
 | |
| 			default:
 | |
| 				values = append(values, fmt.Sprintf("UnknownOID=%s", name.Type.String()))
 | |
| 			}
 | |
| 		} else if oid.Equal(oidEmailAddress) {
 | |
| 			values = append(values, fmt.Sprintf("emailAddress=%s", name.Value))
 | |
| 		} else {
 | |
| 			values = append(values, fmt.Sprintf("UnknownOID=%s", name.Type.String()))
 | |
| 		}
 | |
| 	}
 | |
| 	if len(values) > 0 {
 | |
| 		buf.WriteString(values[0])
 | |
| 		for i := 1; i < len(values); i++ {
 | |
| 			buf.WriteString(", " + values[i])
 | |
| 		}
 | |
| 		buf.WriteString("\n")
 | |
| 	}
 | |
| 	return values
 | |
| }
 | |
| 
 | |
| // CertificateText returns a human-readable string representation
 | |
| // of the certificate cert. The format is similar to the OpenSSL
 | |
| // way of printing certificates (not identical).
 | |
| func CertificateText(cert *x509.Certificate) string {
 | |
| 	var buf strings.Builder
 | |
| 
 | |
| 	buf.WriteString(color.Blue("\nCertificate:\n"))
 | |
| 	if cert.SignatureAlgorithm != x509.UnknownSignatureAlgorithm {
 | |
| 		buf.WriteString(color.Blue("%4sSignature Algorithm: ", "") + color.Bold(fmt.Sprintf("%s\n", cert.SignatureAlgorithm)))
 | |
| 	}
 | |
| 
 | |
| 	// Issuer information
 | |
| 	buf.WriteString(color.Blue("%4sIssuer: ", ""))
 | |
| 	printName(cert.Issuer.Names, &buf)
 | |
| 
 | |
| 	// Validity information
 | |
| 	buf.WriteString(color.Blue("%4sValidity\n", ""))
 | |
| 	buf.WriteString(color.Bold(fmt.Sprintf("%8sNot Before: %s\n", "", cert.NotBefore.Format(http.TimeFormat))))
 | |
| 	buf.WriteString(color.Bold(fmt.Sprintf("%8sNot After : %s\n", "", cert.NotAfter.Format(http.TimeFormat))))
 | |
| 
 | |
| 	return buf.String()
 | |
| }
 |