]> Cypherpunks repositories - gostls13.git/commitdiff
crypto/tls: add {SignatureScheme,CurveID,ClientAuthType}.String()
authorFilippo Valsorda <filippo@golang.org>
Thu, 21 Nov 2019 18:52:18 +0000 (13:52 -0500)
committerFilippo Valsorda <filippo@golang.org>
Wed, 11 Mar 2020 20:02:18 +0000 (20:02 +0000)
Fixes #35499

Change-Id: Ieb487782f389f6d80e8f68ee980e584d906cb4da
Reviewed-on: https://go-review.googlesource.com/c/go/+/208226
Run-TryBot: Filippo Valsorda <filippo@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Katie Hockman <katie@golang.org>
src/crypto/tls/auth.go
src/crypto/tls/auth_test.go
src/crypto/tls/common.go
src/crypto/tls/common_string.go [new file with mode: 0644]

index d87f7bdd512decc5472f71a052ab43092f1ce347..ad5f9a2e4399e69d15da935c402aad613cae28b8 100644 (file)
@@ -106,7 +106,7 @@ func typeAndHashFromSignatureScheme(signatureAlgorithm SignatureScheme) (sigType
        case Ed25519:
                sigType = signatureEd25519
        default:
-               return 0, 0, fmt.Errorf("unsupported signature algorithm: %#04x", signatureAlgorithm)
+               return 0, 0, fmt.Errorf("unsupported signature algorithm: %v", signatureAlgorithm)
        }
        switch signatureAlgorithm {
        case PKCS1WithSHA1, ECDSAWithSHA1:
@@ -120,7 +120,7 @@ func typeAndHashFromSignatureScheme(signatureAlgorithm SignatureScheme) (sigType
        case Ed25519:
                hash = directSigning
        default:
-               return 0, 0, fmt.Errorf("unsupported signature algorithm: %#04x", signatureAlgorithm)
+               return 0, 0, fmt.Errorf("unsupported signature algorithm: %v", signatureAlgorithm)
        }
        return sigType, hash, nil
 }
index c8d8c8fe4e08521784da6576aa0b97dd5ea71433..c42e3491e46f16873c2195397bbdd56e9536b2a5 100644 (file)
@@ -62,7 +62,7 @@ func TestSignatureSelection(t *testing.T) {
                        t.Errorf("test[%d]: unexpected selectSignatureScheme error: %v", testNo, err)
                }
                if test.expectedSigAlg != sigAlg {
-                       t.Errorf("test[%d]: expected signature scheme %#x, got %#x", testNo, test.expectedSigAlg, sigAlg)
+                       t.Errorf("test[%d]: expected signature scheme %v, got %v", testNo, test.expectedSigAlg, sigAlg)
                }
                sigType, hashFunc, err := typeAndHashFromSignatureScheme(sigAlg)
                if err != nil {
@@ -115,7 +115,7 @@ func TestSignatureSelection(t *testing.T) {
        for testNo, test := range badTests {
                sigAlg, err := selectSignatureScheme(test.tlsVersion, test.cert, test.peerSigAlgs)
                if err == nil {
-                       t.Errorf("test[%d]: unexpected success, got %#x", testNo, sigAlg)
+                       t.Errorf("test[%d]: unexpected success, got %v", testNo, sigAlg)
                }
        }
 }
@@ -129,7 +129,7 @@ func TestLegacyTypeAndHash(t *testing.T) {
                t.Errorf("RSA: expected signature type %#x, got %#x", expectedSigType, sigType)
        }
        if expectedHashFunc := crypto.MD5SHA1; expectedHashFunc != hashFunc {
-               t.Errorf("RSA: expected hash %#x, got %#x", expectedHashFunc, sigType)
+               t.Errorf("RSA: expected hash %#x, got %#x", expectedHashFunc, hashFunc)
        }
 
        sigType, hashFunc, err = legacyTypeAndHashFromPublicKey(testECDSAPrivateKey.Public())
@@ -140,7 +140,7 @@ func TestLegacyTypeAndHash(t *testing.T) {
                t.Errorf("ECDSA: expected signature type %#x, got %#x", expectedSigType, sigType)
        }
        if expectedHashFunc := crypto.SHA1; expectedHashFunc != hashFunc {
-               t.Errorf("ECDSA: expected hash %#x, got %#x", expectedHashFunc, sigType)
+               t.Errorf("ECDSA: expected hash %#x, got %#x", expectedHashFunc, hashFunc)
        }
 
        // Ed25519 is not supported by TLS 1.0 and 1.1.
@@ -156,13 +156,13 @@ func TestSupportedSignatureAlgorithms(t *testing.T) {
        for _, sigAlg := range supportedSignatureAlgorithms {
                sigType, hash, err := typeAndHashFromSignatureScheme(sigAlg)
                if err != nil {
-                       t.Errorf("%#04x: unexpected error: %v", sigAlg, err)
+                       t.Errorf("%v: unexpected error: %v", sigAlg, err)
                }
                if sigType == 0 {
-                       t.Errorf("%#04x: missing signature type", sigAlg)
+                       t.Errorf("%v: missing signature type", sigAlg)
                }
                if hash == 0 && sigAlg != Ed25519 {
-                       t.Errorf("%#04x: missing hash", sigAlg)
+                       t.Errorf("%v: missing hash", sigAlg)
                }
        }
 }
index 53719c48df5b65affe4aabe85a998609272e812b..ef95e9bf9cd39a06f250b2d804fc4d6ecb102fcb 100644 (file)
@@ -299,6 +299,8 @@ type ClientSessionCache interface {
        Put(sessionKey string, cs *ClientSessionState)
 }
 
+//go:generate stringer -type=SignatureScheme,CurveID,ClientAuthType -output=common_string.go
+
 // SignatureScheme identifies a signature algorithm supported by TLS. See
 // RFC 8446, Section 4.2.3.
 type SignatureScheme uint16
diff --git a/src/crypto/tls/common_string.go b/src/crypto/tls/common_string.go
new file mode 100644 (file)
index 0000000..2381088
--- /dev/null
@@ -0,0 +1,116 @@
+// Code generated by "stringer -type=SignatureScheme,CurveID,ClientAuthType -output=common_string.go"; DO NOT EDIT.
+
+package tls
+
+import "strconv"
+
+func _() {
+       // An "invalid array index" compiler error signifies that the constant values have changed.
+       // Re-run the stringer command to generate them again.
+       var x [1]struct{}
+       _ = x[PKCS1WithSHA256-1025]
+       _ = x[PKCS1WithSHA384-1281]
+       _ = x[PKCS1WithSHA512-1537]
+       _ = x[PSSWithSHA256-2052]
+       _ = x[PSSWithSHA384-2053]
+       _ = x[PSSWithSHA512-2054]
+       _ = x[ECDSAWithP256AndSHA256-1027]
+       _ = x[ECDSAWithP384AndSHA384-1283]
+       _ = x[ECDSAWithP521AndSHA512-1539]
+       _ = x[Ed25519-2055]
+       _ = x[PKCS1WithSHA1-513]
+       _ = x[ECDSAWithSHA1-515]
+}
+
+const (
+       _SignatureScheme_name_0 = "PKCS1WithSHA1"
+       _SignatureScheme_name_1 = "ECDSAWithSHA1"
+       _SignatureScheme_name_2 = "PKCS1WithSHA256"
+       _SignatureScheme_name_3 = "ECDSAWithP256AndSHA256"
+       _SignatureScheme_name_4 = "PKCS1WithSHA384"
+       _SignatureScheme_name_5 = "ECDSAWithP384AndSHA384"
+       _SignatureScheme_name_6 = "PKCS1WithSHA512"
+       _SignatureScheme_name_7 = "ECDSAWithP521AndSHA512"
+       _SignatureScheme_name_8 = "PSSWithSHA256PSSWithSHA384PSSWithSHA512Ed25519"
+)
+
+var (
+       _SignatureScheme_index_8 = [...]uint8{0, 13, 26, 39, 46}
+)
+
+func (i SignatureScheme) String() string {
+       switch {
+       case i == 513:
+               return _SignatureScheme_name_0
+       case i == 515:
+               return _SignatureScheme_name_1
+       case i == 1025:
+               return _SignatureScheme_name_2
+       case i == 1027:
+               return _SignatureScheme_name_3
+       case i == 1281:
+               return _SignatureScheme_name_4
+       case i == 1283:
+               return _SignatureScheme_name_5
+       case i == 1537:
+               return _SignatureScheme_name_6
+       case i == 1539:
+               return _SignatureScheme_name_7
+       case 2052 <= i && i <= 2055:
+               i -= 2052
+               return _SignatureScheme_name_8[_SignatureScheme_index_8[i]:_SignatureScheme_index_8[i+1]]
+       default:
+               return "SignatureScheme(" + strconv.FormatInt(int64(i), 10) + ")"
+       }
+}
+func _() {
+       // An "invalid array index" compiler error signifies that the constant values have changed.
+       // Re-run the stringer command to generate them again.
+       var x [1]struct{}
+       _ = x[CurveP256-23]
+       _ = x[CurveP384-24]
+       _ = x[CurveP521-25]
+       _ = x[X25519-29]
+}
+
+const (
+       _CurveID_name_0 = "CurveP256CurveP384CurveP521"
+       _CurveID_name_1 = "X25519"
+)
+
+var (
+       _CurveID_index_0 = [...]uint8{0, 9, 18, 27}
+)
+
+func (i CurveID) String() string {
+       switch {
+       case 23 <= i && i <= 25:
+               i -= 23
+               return _CurveID_name_0[_CurveID_index_0[i]:_CurveID_index_0[i+1]]
+       case i == 29:
+               return _CurveID_name_1
+       default:
+               return "CurveID(" + strconv.FormatInt(int64(i), 10) + ")"
+       }
+}
+func _() {
+       // An "invalid array index" compiler error signifies that the constant values have changed.
+       // Re-run the stringer command to generate them again.
+       var x [1]struct{}
+       _ = x[NoClientCert-0]
+       _ = x[RequestClientCert-1]
+       _ = x[RequireAnyClientCert-2]
+       _ = x[VerifyClientCertIfGiven-3]
+       _ = x[RequireAndVerifyClientCert-4]
+}
+
+const _ClientAuthType_name = "NoClientCertRequestClientCertRequireAnyClientCertVerifyClientCertIfGivenRequireAndVerifyClientCert"
+
+var _ClientAuthType_index = [...]uint8{0, 12, 29, 49, 72, 98}
+
+func (i ClientAuthType) String() string {
+       if i < 0 || i >= ClientAuthType(len(_ClientAuthType_index)-1) {
+               return "ClientAuthType(" + strconv.FormatInt(int64(i), 10) + ")"
+       }
+       return _ClientAuthType_name[_ClientAuthType_index[i]:_ClientAuthType_index[i+1]]
+}