From 526c187a6091f97c31717efafca087dc0f3b520d Mon Sep 17 00:00:00 2001 From: Gabor Tanz Date: Sun, 2 Oct 2022 23:27:40 +0200 Subject: [PATCH 1/2] Add String() method for KeyUsage and ExtKeyUsage types. This is mainly useful for (pretty-)printing certificates. --- src/crypto/x509/extkeyusage_string.go | 38 +++++++++++++++++ src/crypto/x509/keyusage_string.go | 59 +++++++++++++++++++++++++++ src/crypto/x509/x509.go | 4 ++ 3 files changed, 101 insertions(+) create mode 100644 src/crypto/x509/extkeyusage_string.go create mode 100644 src/crypto/x509/keyusage_string.go diff --git a/src/crypto/x509/extkeyusage_string.go b/src/crypto/x509/extkeyusage_string.go new file mode 100644 index 0000000000..c0f923e3a2 --- /dev/null +++ b/src/crypto/x509/extkeyusage_string.go @@ -0,0 +1,38 @@ +// Code generated by "stringer -type=ExtKeyUsage -trimprefix ExtKeyUsage"; DO NOT EDIT. + +package x509 + +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[invalidUsage - -1] + _ = x[ExtKeyUsageAny-0] + _ = x[ExtKeyUsageServerAuth-1] + _ = x[ExtKeyUsageClientAuth-2] + _ = x[ExtKeyUsageCodeSigning-3] + _ = x[ExtKeyUsageEmailProtection-4] + _ = x[ExtKeyUsageIPSECEndSystem-5] + _ = x[ExtKeyUsageIPSECTunnel-6] + _ = x[ExtKeyUsageIPSECUser-7] + _ = x[ExtKeyUsageTimeStamping-8] + _ = x[ExtKeyUsageOCSPSigning-9] + _ = x[ExtKeyUsageMicrosoftServerGatedCrypto-10] + _ = x[ExtKeyUsageNetscapeServerGatedCrypto-11] + _ = x[ExtKeyUsageMicrosoftCommercialCodeSigning-12] + _ = x[ExtKeyUsageMicrosoftKernelCodeSigning-13] +} + +const _ExtKeyUsage_name = "invalidUsageAnyServerAuthClientAuthCodeSigningEmailProtectionIPSECEndSystemIPSECTunnelIPSECUserTimeStampingOCSPSigningMicrosoftServerGatedCryptoNetscapeServerGatedCryptoMicrosoftCommercialCodeSigningMicrosoftKernelCodeSigning" + +var _ExtKeyUsage_index = [...]uint8{0, 12, 15, 25, 35, 46, 61, 75, 86, 95, 107, 118, 144, 169, 199, 225} + +func (i ExtKeyUsage) String() string { + i -= -1 + if i < 0 || i >= ExtKeyUsage(len(_ExtKeyUsage_index)-1) { + return "ExtKeyUsage(" + strconv.FormatInt(int64(i+-1), 10) + ")" + } + return _ExtKeyUsage_name[_ExtKeyUsage_index[i]:_ExtKeyUsage_index[i+1]] +} diff --git a/src/crypto/x509/keyusage_string.go b/src/crypto/x509/keyusage_string.go new file mode 100644 index 0000000000..21ceedbd7a --- /dev/null +++ b/src/crypto/x509/keyusage_string.go @@ -0,0 +1,59 @@ +// Code generated by "stringer -type=KeyUsage -trimprefix KeyUsage"; DO NOT EDIT. + +package x509 + +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[KeyUsageDigitalSignature-1] + _ = x[KeyUsageContentCommitment-2] + _ = x[KeyUsageKeyEncipherment-4] + _ = x[KeyUsageDataEncipherment-8] + _ = x[KeyUsageKeyAgreement-16] + _ = x[KeyUsageCertSign-32] + _ = x[KeyUsageCRLSign-64] + _ = x[KeyUsageEncipherOnly-128] + _ = x[KeyUsageDecipherOnly-256] +} + +const ( + _KeyUsage_name_0 = "DigitalSignatureContentCommitment" + _KeyUsage_name_1 = "KeyEncipherment" + _KeyUsage_name_2 = "DataEncipherment" + _KeyUsage_name_3 = "KeyAgreement" + _KeyUsage_name_4 = "CertSign" + _KeyUsage_name_5 = "CRLSign" + _KeyUsage_name_6 = "EncipherOnly" + _KeyUsage_name_7 = "DecipherOnly" +) + +var ( + _KeyUsage_index_0 = [...]uint8{0, 16, 33} +) + +func (i KeyUsage) String() string { + switch { + case 1 <= i && i <= 2: + i -= 1 + return _KeyUsage_name_0[_KeyUsage_index_0[i]:_KeyUsage_index_0[i+1]] + case i == 4: + return _KeyUsage_name_1 + case i == 8: + return _KeyUsage_name_2 + case i == 16: + return _KeyUsage_name_3 + case i == 32: + return _KeyUsage_name_4 + case i == 64: + return _KeyUsage_name_5 + case i == 128: + return _KeyUsage_name_6 + case i == 256: + return _KeyUsage_name_7 + default: + return "KeyUsage(" + strconv.FormatInt(int64(i), 10) + ")" + } +} diff --git a/src/crypto/x509/x509.go b/src/crypto/x509/x509.go index c72010c1e3..468176c3a4 100644 --- a/src/crypto/x509/x509.go +++ b/src/crypto/x509/x509.go @@ -568,6 +568,8 @@ func oidFromECDHCurve(curve ecdh.Curve) (asn1.ObjectIdentifier, bool) { return nil, false } +//go:generate stringer -type=KeyUsage -trimprefix KeyUsage + // KeyUsage represents the set of actions that are valid for a given key. It's // a bitmap of the KeyUsage* constants. type KeyUsage int @@ -613,6 +615,8 @@ var ( oidExtKeyUsageMicrosoftKernelCodeSigning = asn1.ObjectIdentifier{1, 3, 6, 1, 4, 1, 311, 61, 1, 1} ) +//go:generate stringer -type=ExtKeyUsage -trimprefix ExtKeyUsage + // ExtKeyUsage represents an extended set of actions that are valid for a given key. // Each of the ExtKeyUsage* constants define a unique action. type ExtKeyUsage int From a4898c0ebd60aae1e9520631265fb9d2e7be2538 Mon Sep 17 00:00:00 2001 From: Gabor Tanz Date: Mon, 21 Nov 2022 07:57:33 +0100 Subject: [PATCH 2/2] update api/next --- api/next/56866.txt | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 api/next/56866.txt diff --git a/api/next/56866.txt b/api/next/56866.txt new file mode 100644 index 0000000000..f0c1bc64b4 --- /dev/null +++ b/api/next/56866.txt @@ -0,0 +1,2 @@ +pkg crypto/x509, type KeyUsage int, String() string #56866 +pkg crypto/x509, type ExtKeyUsage int, String() string #56866