From 832e20ae295fe7ce8c713e5e3a8a7a5555fa4a3b Mon Sep 17 00:00:00 2001 From: JoshVanL Date: Thu, 19 Sep 2019 17:56:55 +0100 Subject: [PATCH 01/23] Adds URISANs field to Certificate Signed-off-by: JoshVanL --- deploy/manifests/00-crds.yaml | 17 +- .../output/reference/api-docs/index.html | 8 +- .../certmanager/v1alpha2/types_certificate.go | 16 +- .../v1alpha2/zz_generated.deepcopy.go | 5 + pkg/controller/webhookbootstrap/controller.go | 14 +- pkg/internal/apis/certmanager/BUILD.bazel | 1 + .../apis/certmanager/types_certificate.go | 18 +- .../apis/certmanager/v1alpha1/BUILD.bazel | 31 + .../v1alpha1/zz_generated.conversion.go | 2197 +++++++++++++++++ .../v1alpha2/zz_generated.conversion.go | 2 + .../certmanager/validation/certificate.go | 10 +- .../validation/certificate_test.go | 19 +- .../apis/certmanager/zz_generated.deepcopy.go | 5 + pkg/util/pki/csr.go | 59 +- 14 files changed, 2330 insertions(+), 72 deletions(-) create mode 100644 pkg/internal/apis/certmanager/v1alpha1/BUILD.bazel create mode 100644 pkg/internal/apis/certmanager/v1alpha1/zz_generated.conversion.go diff --git a/deploy/manifests/00-crds.yaml b/deploy/manifests/00-crds.yaml index 902d99313..e2f5b4210 100644 --- a/deploy/manifests/00-crds.yaml +++ b/deploy/manifests/00-crds.yaml @@ -1829,17 +1829,12 @@ spec: properties: commonName: description: CommonName is a common name to be used on the Certificate. - If no CommonName is given, then the first entry in DNSNames is used - as the CommonName. The CommonName should have a length of 64 characters - or fewer to avoid generating invalid CSRs; in order to have longer - domain names, set the CommonName (or first DNSNames entry) to have - 64 characters or fewer, and then add the longer domain name to DNSNames. + The CommonName should have a length of 64 characters or fewer to avoid + generating invalid CSRs. type: string dnsNames: description: DNSNames is a list of subject alt names to be used on the - Certificate. If no CommonName is given, then the first entry in DNSNames - is used as the CommonName and must have a length of 64 characters - or fewer. + Certificate. items: type: string type: array @@ -1912,6 +1907,12 @@ spec: description: SecretName is the name of the secret resource to store this secret in type: string + uriSANs: + description: URISANs is a list of URI Subject Alternative Names to be + set on this Certificate. + items: + type: string + type: array usages: description: Usages is the set of x509 actions that are enabled for a given key. Defaults are ('digital signature', 'key encipherment') diff --git a/docs/generated/reference/output/reference/api-docs/index.html b/docs/generated/reference/output/reference/api-docs/index.html index ad170196a..4c97f5e23 100755 --- a/docs/generated/reference/output/reference/api-docs/index.html +++ b/docs/generated/reference/output/reference/api-docs/index.html @@ -81,11 +81,11 @@ Appears In: commonName
string -CommonName is a common name to be used on the Certificate. If no CommonName is given, then the first entry in DNSNames is used as the CommonName. The CommonName should have a length of 64 characters or fewer to avoid generating invalid CSRs; in order to have longer domain names, set the CommonName (or first DNSNames entry) to have 64 characters or fewer, and then add the longer domain name to DNSNames. +CommonName is a common name to be used on the Certificate. The CommonName should have a length of 64 characters or fewer to avoid generating invalid CSRs. dnsNames
string array -DNSNames is a list of subject alt names to be used on the Certificate. If no CommonName is given, then the first entry in DNSNames is used as the CommonName and must have a length of 64 characters or fewer. +DNSNames is a list of subject alt names to be used on the Certificate. duration
*Duration* @@ -128,6 +128,10 @@ Appears In: SecretName is the name of the secret resource to store this secret in +uriSANs
string array +URISANs is a list of URI Subject Alternative Names to be set on this Certificate. + + usages
string array Usages is the set of x509 actions that are enabled for a given key. Defaults are ('digital signature', 'key encipherment') if empty diff --git a/pkg/apis/certmanager/v1alpha2/types_certificate.go b/pkg/apis/certmanager/v1alpha2/types_certificate.go index d2894bd52..058203db9 100644 --- a/pkg/apis/certmanager/v1alpha2/types_certificate.go +++ b/pkg/apis/certmanager/v1alpha2/types_certificate.go @@ -70,13 +70,12 @@ const ( // CertificateSpec defines the desired state of Certificate type CertificateSpec struct { + // A valid Certificate requires at least one of a CommonName, DNSName, or + // URISAN to be valid. + // CommonName is a common name to be used on the Certificate. - // If no CommonName is given, then the first entry in DNSNames is used as - // the CommonName. // The CommonName should have a length of 64 characters or fewer to avoid - // generating invalid CSRs; in order to have longer domain names, set the - // CommonName (or first DNSNames entry) to have 64 characters or fewer, - // and then add the longer domain name to DNSNames. + // generating invalid CSRs. // +optional CommonName string `json:"commonName,omitempty"` @@ -93,8 +92,6 @@ type CertificateSpec struct { RenewBefore *metav1.Duration `json:"renewBefore,omitempty"` // DNSNames is a list of subject alt names to be used on the Certificate. - // If no CommonName is given, then the first entry in DNSNames is used as - // the CommonName and must have a length of 64 characters or fewer. // +optional DNSNames []string `json:"dnsNames,omitempty"` @@ -102,6 +99,11 @@ type CertificateSpec struct { // +optional IPAddresses []string `json:"ipAddresses,omitempty"` + // URISANs is a list of URI Subject Alternative Names to be set on this + // Certificate. + // +optional + URISANs []string `json:"uriSANs,omitempty"` + // SecretName is the name of the secret resource to store this secret in SecretName string `json:"secretName"` diff --git a/pkg/apis/certmanager/v1alpha2/zz_generated.deepcopy.go b/pkg/apis/certmanager/v1alpha2/zz_generated.deepcopy.go index b6351a0ea..98be2da5f 100644 --- a/pkg/apis/certmanager/v1alpha2/zz_generated.deepcopy.go +++ b/pkg/apis/certmanager/v1alpha2/zz_generated.deepcopy.go @@ -302,6 +302,11 @@ func (in *CertificateSpec) DeepCopyInto(out *CertificateSpec) { *out = make([]string, len(*in)) copy(*out, *in) } + if in.URISANs != nil { + in, out := &in.URISANs, &out.URISANs + *out = make([]string, len(*in)) + copy(*out, *in) + } out.IssuerRef = in.IssuerRef if in.Usages != nil { in, out := &in.Usages, &out.Usages diff --git a/pkg/controller/webhookbootstrap/controller.go b/pkg/controller/webhookbootstrap/controller.go index 5f4dbba0f..fadfa4ca2 100644 --- a/pkg/controller/webhookbootstrap/controller.go +++ b/pkg/controller/webhookbootstrap/controller.go @@ -314,13 +314,6 @@ func (c *controller) certificateRequiresIssuance(ctx context.Context, log logr.L return true } - // validate the common name is correct - expectedCN := pki.CommonNameForCertificate(crt) - if expectedCN != cert.Subject.CommonName { - log.Info("certificate common name is not as expected, re-issuing") - return true - } - // validate the dns names are correct expectedDNSNames := pki.DNSNamesForCertificate(crt) if !util.EqualUnsorted(cert.DNSNames, expectedDNSNames) { @@ -328,6 +321,13 @@ func (c *controller) certificateRequiresIssuance(ctx context.Context, log logr.L return true } + // validate the uri sans are correct + expectedURINames := crt.Spec.URISANs + if !util.EqualUnsorted(pki.URLsToString(cert.URIs), expectedURINames) { + log.Info("certificate uri sans are not as expected, re-issuing") + return true + } + // validate the ip addresses are correct if !util.EqualUnsorted(pki.IPAddressesToString(cert.IPAddresses), crt.Spec.IPAddresses) { log.Info("certificate ip addresses are not as expected, re-issuing") diff --git a/pkg/internal/apis/certmanager/BUILD.bazel b/pkg/internal/apis/certmanager/BUILD.bazel index 71c205215..5f92885be 100644 --- a/pkg/internal/apis/certmanager/BUILD.bazel +++ b/pkg/internal/apis/certmanager/BUILD.bazel @@ -36,6 +36,7 @@ filegroup( ":package-srcs", "//pkg/internal/apis/certmanager/fuzzer:all-srcs", "//pkg/internal/apis/certmanager/install:all-srcs", + "//pkg/internal/apis/certmanager/v1alpha1:all-srcs", "//pkg/internal/apis/certmanager/v1alpha2:all-srcs", "//pkg/internal/apis/certmanager/validation:all-srcs", ], diff --git a/pkg/internal/apis/certmanager/types_certificate.go b/pkg/internal/apis/certmanager/types_certificate.go index c748fc1ea..32f010ee9 100644 --- a/pkg/internal/apis/certmanager/types_certificate.go +++ b/pkg/internal/apis/certmanager/types_certificate.go @@ -59,13 +59,12 @@ const ( // CertificateSpec defines the desired state of Certificate type CertificateSpec struct { + // A valid Certificate requires at least one of a CommonName, DNSName, or + // URISAN to be valid. + // CommonName is a common name to be used on the Certificate. - // If no CommonName is given, then the first entry in DNSNames is used as - // the CommonName. // The CommonName should have a length of 64 characters or fewer to avoid - // generating invalid CSRs; in order to have longer domain names, set the - // CommonName (or first DNSNames entry) to have 64 characters or fewer, - // and then add the longer domain name to DNSNames. + // generating invalid CSRs. // +optional CommonName string `json:"commonName,omitempty"` @@ -82,8 +81,6 @@ type CertificateSpec struct { RenewBefore *metav1.Duration `json:"renewBefore,omitempty"` // DNSNames is a list of subject alt names to be used on the Certificate. - // If no CommonName is given, then the first entry in DNSNames is used as - // the CommonName and must have a length of 64 characters or fewer. // +optional DNSNames []string `json:"dnsNames,omitempty"` @@ -91,6 +88,11 @@ type CertificateSpec struct { // +optional IPAddresses []string `json:"ipAddresses,omitempty"` + // URISANs is a list of URI Subject Alternative Names to be set on this + // Certificate. + // +optional + URISANs []string `json:"uriSANs,omitempty"` + // SecretName is the name of the secret resource to store this secret in SecretName string `json:"secretName"` @@ -103,7 +105,7 @@ type CertificateSpec struct { IssuerRef cmmeta.ObjectReference `json:"issuerRef"` // IsCA will mark this Certificate as valid for signing. - // This implies that the 'signing' usage is set + // This implies that the 'cert sign' usage is set // +optional IsCA bool `json:"isCA,omitempty"` diff --git a/pkg/internal/apis/certmanager/v1alpha1/BUILD.bazel b/pkg/internal/apis/certmanager/v1alpha1/BUILD.bazel new file mode 100644 index 000000000..2a836dfd1 --- /dev/null +++ b/pkg/internal/apis/certmanager/v1alpha1/BUILD.bazel @@ -0,0 +1,31 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library") + +go_library( + name = "go_default_library", + srcs = ["zz_generated.conversion.go"], + importpath = "github.com/jetstack/cert-manager/pkg/internal/apis/certmanager/v1alpha1", + visibility = ["//pkg:__subpackages__"], + deps = [ + "//pkg/internal/apis/certmanager:go_default_library", + "//vendor/github.com/jetstack/cert-manager/pkg/apis/certmanager/v1alpha1:go_default_library", + "//vendor/k8s.io/api/core/v1:go_default_library", + "//vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", + ], +) + +filegroup( + name = "package-srcs", + srcs = glob(["**"]), + tags = ["automanaged"], + visibility = ["//visibility:private"], +) + +filegroup( + name = "all-srcs", + srcs = [":package-srcs"], + tags = ["automanaged"], + visibility = ["//visibility:public"], +) diff --git a/pkg/internal/apis/certmanager/v1alpha1/zz_generated.conversion.go b/pkg/internal/apis/certmanager/v1alpha1/zz_generated.conversion.go new file mode 100644 index 000000000..aa4bbea4b --- /dev/null +++ b/pkg/internal/apis/certmanager/v1alpha1/zz_generated.conversion.go @@ -0,0 +1,2197 @@ +// +build !ignore_autogenerated + +/* +Copyright 2019 The Jetstack cert-manager contributors. + +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 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Code generated by conversion-gen. DO NOT EDIT. + +package v1alpha1 + +import ( + unsafe "unsafe" + + v1alpha1 "github.com/jetstack/cert-manager/pkg/apis/certmanager/v1alpha1" + certmanager "github.com/jetstack/cert-manager/pkg/internal/apis/certmanager" + v1 "k8s.io/api/core/v1" + v1beta1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + conversion "k8s.io/apimachinery/pkg/conversion" + runtime "k8s.io/apimachinery/pkg/runtime" +) + +func init() { + localSchemeBuilder.Register(RegisterConversions) +} + +// RegisterConversions adds conversion functions to the given scheme. +// Public to allow building arbitrary schemes. +func RegisterConversions(s *runtime.Scheme) error { + if err := s.AddGeneratedConversionFunc((*v1alpha1.ACMEAuthorization)(nil), (*certmanager.ACMEAuthorization)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_v1alpha1_ACMEAuthorization_To_certmanager_ACMEAuthorization(a.(*v1alpha1.ACMEAuthorization), b.(*certmanager.ACMEAuthorization), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*certmanager.ACMEAuthorization)(nil), (*v1alpha1.ACMEAuthorization)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_certmanager_ACMEAuthorization_To_v1alpha1_ACMEAuthorization(a.(*certmanager.ACMEAuthorization), b.(*v1alpha1.ACMEAuthorization), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*v1alpha1.ACMEChallenge)(nil), (*certmanager.ACMEChallenge)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_v1alpha1_ACMEChallenge_To_certmanager_ACMEChallenge(a.(*v1alpha1.ACMEChallenge), b.(*certmanager.ACMEChallenge), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*certmanager.ACMEChallenge)(nil), (*v1alpha1.ACMEChallenge)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_certmanager_ACMEChallenge_To_v1alpha1_ACMEChallenge(a.(*certmanager.ACMEChallenge), b.(*v1alpha1.ACMEChallenge), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*v1alpha1.ACMEChallengeSolver)(nil), (*certmanager.ACMEChallengeSolver)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_v1alpha1_ACMEChallengeSolver_To_certmanager_ACMEChallengeSolver(a.(*v1alpha1.ACMEChallengeSolver), b.(*certmanager.ACMEChallengeSolver), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*certmanager.ACMEChallengeSolver)(nil), (*v1alpha1.ACMEChallengeSolver)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_certmanager_ACMEChallengeSolver_To_v1alpha1_ACMEChallengeSolver(a.(*certmanager.ACMEChallengeSolver), b.(*v1alpha1.ACMEChallengeSolver), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*v1alpha1.ACMEChallengeSolverDNS01)(nil), (*certmanager.ACMEChallengeSolverDNS01)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_v1alpha1_ACMEChallengeSolverDNS01_To_certmanager_ACMEChallengeSolverDNS01(a.(*v1alpha1.ACMEChallengeSolverDNS01), b.(*certmanager.ACMEChallengeSolverDNS01), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*certmanager.ACMEChallengeSolverDNS01)(nil), (*v1alpha1.ACMEChallengeSolverDNS01)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_certmanager_ACMEChallengeSolverDNS01_To_v1alpha1_ACMEChallengeSolverDNS01(a.(*certmanager.ACMEChallengeSolverDNS01), b.(*v1alpha1.ACMEChallengeSolverDNS01), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*v1alpha1.ACMEChallengeSolverHTTP01)(nil), (*certmanager.ACMEChallengeSolverHTTP01)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_v1alpha1_ACMEChallengeSolverHTTP01_To_certmanager_ACMEChallengeSolverHTTP01(a.(*v1alpha1.ACMEChallengeSolverHTTP01), b.(*certmanager.ACMEChallengeSolverHTTP01), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*certmanager.ACMEChallengeSolverHTTP01)(nil), (*v1alpha1.ACMEChallengeSolverHTTP01)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_certmanager_ACMEChallengeSolverHTTP01_To_v1alpha1_ACMEChallengeSolverHTTP01(a.(*certmanager.ACMEChallengeSolverHTTP01), b.(*v1alpha1.ACMEChallengeSolverHTTP01), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*v1alpha1.ACMEChallengeSolverHTTP01Ingress)(nil), (*certmanager.ACMEChallengeSolverHTTP01Ingress)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_v1alpha1_ACMEChallengeSolverHTTP01Ingress_To_certmanager_ACMEChallengeSolverHTTP01Ingress(a.(*v1alpha1.ACMEChallengeSolverHTTP01Ingress), b.(*certmanager.ACMEChallengeSolverHTTP01Ingress), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*certmanager.ACMEChallengeSolverHTTP01Ingress)(nil), (*v1alpha1.ACMEChallengeSolverHTTP01Ingress)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_certmanager_ACMEChallengeSolverHTTP01Ingress_To_v1alpha1_ACMEChallengeSolverHTTP01Ingress(a.(*certmanager.ACMEChallengeSolverHTTP01Ingress), b.(*v1alpha1.ACMEChallengeSolverHTTP01Ingress), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*v1alpha1.ACMEChallengeSolverHTTP01IngressPodSpec)(nil), (*certmanager.ACMEChallengeSolverHTTP01IngressPodSpec)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_v1alpha1_ACMEChallengeSolverHTTP01IngressPodSpec_To_certmanager_ACMEChallengeSolverHTTP01IngressPodSpec(a.(*v1alpha1.ACMEChallengeSolverHTTP01IngressPodSpec), b.(*certmanager.ACMEChallengeSolverHTTP01IngressPodSpec), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*certmanager.ACMEChallengeSolverHTTP01IngressPodSpec)(nil), (*v1alpha1.ACMEChallengeSolverHTTP01IngressPodSpec)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_certmanager_ACMEChallengeSolverHTTP01IngressPodSpec_To_v1alpha1_ACMEChallengeSolverHTTP01IngressPodSpec(a.(*certmanager.ACMEChallengeSolverHTTP01IngressPodSpec), b.(*v1alpha1.ACMEChallengeSolverHTTP01IngressPodSpec), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*v1alpha1.ACMEChallengeSolverHTTP01IngressPodTemplate)(nil), (*certmanager.ACMEChallengeSolverHTTP01IngressPodTemplate)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_v1alpha1_ACMEChallengeSolverHTTP01IngressPodTemplate_To_certmanager_ACMEChallengeSolverHTTP01IngressPodTemplate(a.(*v1alpha1.ACMEChallengeSolverHTTP01IngressPodTemplate), b.(*certmanager.ACMEChallengeSolverHTTP01IngressPodTemplate), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*certmanager.ACMEChallengeSolverHTTP01IngressPodTemplate)(nil), (*v1alpha1.ACMEChallengeSolverHTTP01IngressPodTemplate)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_certmanager_ACMEChallengeSolverHTTP01IngressPodTemplate_To_v1alpha1_ACMEChallengeSolverHTTP01IngressPodTemplate(a.(*certmanager.ACMEChallengeSolverHTTP01IngressPodTemplate), b.(*v1alpha1.ACMEChallengeSolverHTTP01IngressPodTemplate), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*v1alpha1.ACMEIssuer)(nil), (*certmanager.ACMEIssuer)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_v1alpha1_ACMEIssuer_To_certmanager_ACMEIssuer(a.(*v1alpha1.ACMEIssuer), b.(*certmanager.ACMEIssuer), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*certmanager.ACMEIssuer)(nil), (*v1alpha1.ACMEIssuer)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_certmanager_ACMEIssuer_To_v1alpha1_ACMEIssuer(a.(*certmanager.ACMEIssuer), b.(*v1alpha1.ACMEIssuer), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*v1alpha1.ACMEIssuerDNS01ProviderAcmeDNS)(nil), (*certmanager.ACMEIssuerDNS01ProviderAcmeDNS)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_v1alpha1_ACMEIssuerDNS01ProviderAcmeDNS_To_certmanager_ACMEIssuerDNS01ProviderAcmeDNS(a.(*v1alpha1.ACMEIssuerDNS01ProviderAcmeDNS), b.(*certmanager.ACMEIssuerDNS01ProviderAcmeDNS), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*certmanager.ACMEIssuerDNS01ProviderAcmeDNS)(nil), (*v1alpha1.ACMEIssuerDNS01ProviderAcmeDNS)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_certmanager_ACMEIssuerDNS01ProviderAcmeDNS_To_v1alpha1_ACMEIssuerDNS01ProviderAcmeDNS(a.(*certmanager.ACMEIssuerDNS01ProviderAcmeDNS), b.(*v1alpha1.ACMEIssuerDNS01ProviderAcmeDNS), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*v1alpha1.ACMEIssuerDNS01ProviderAkamai)(nil), (*certmanager.ACMEIssuerDNS01ProviderAkamai)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_v1alpha1_ACMEIssuerDNS01ProviderAkamai_To_certmanager_ACMEIssuerDNS01ProviderAkamai(a.(*v1alpha1.ACMEIssuerDNS01ProviderAkamai), b.(*certmanager.ACMEIssuerDNS01ProviderAkamai), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*certmanager.ACMEIssuerDNS01ProviderAkamai)(nil), (*v1alpha1.ACMEIssuerDNS01ProviderAkamai)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_certmanager_ACMEIssuerDNS01ProviderAkamai_To_v1alpha1_ACMEIssuerDNS01ProviderAkamai(a.(*certmanager.ACMEIssuerDNS01ProviderAkamai), b.(*v1alpha1.ACMEIssuerDNS01ProviderAkamai), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*v1alpha1.ACMEIssuerDNS01ProviderAzureDNS)(nil), (*certmanager.ACMEIssuerDNS01ProviderAzureDNS)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_v1alpha1_ACMEIssuerDNS01ProviderAzureDNS_To_certmanager_ACMEIssuerDNS01ProviderAzureDNS(a.(*v1alpha1.ACMEIssuerDNS01ProviderAzureDNS), b.(*certmanager.ACMEIssuerDNS01ProviderAzureDNS), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*certmanager.ACMEIssuerDNS01ProviderAzureDNS)(nil), (*v1alpha1.ACMEIssuerDNS01ProviderAzureDNS)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_certmanager_ACMEIssuerDNS01ProviderAzureDNS_To_v1alpha1_ACMEIssuerDNS01ProviderAzureDNS(a.(*certmanager.ACMEIssuerDNS01ProviderAzureDNS), b.(*v1alpha1.ACMEIssuerDNS01ProviderAzureDNS), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*v1alpha1.ACMEIssuerDNS01ProviderCloudDNS)(nil), (*certmanager.ACMEIssuerDNS01ProviderCloudDNS)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_v1alpha1_ACMEIssuerDNS01ProviderCloudDNS_To_certmanager_ACMEIssuerDNS01ProviderCloudDNS(a.(*v1alpha1.ACMEIssuerDNS01ProviderCloudDNS), b.(*certmanager.ACMEIssuerDNS01ProviderCloudDNS), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*certmanager.ACMEIssuerDNS01ProviderCloudDNS)(nil), (*v1alpha1.ACMEIssuerDNS01ProviderCloudDNS)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_certmanager_ACMEIssuerDNS01ProviderCloudDNS_To_v1alpha1_ACMEIssuerDNS01ProviderCloudDNS(a.(*certmanager.ACMEIssuerDNS01ProviderCloudDNS), b.(*v1alpha1.ACMEIssuerDNS01ProviderCloudDNS), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*v1alpha1.ACMEIssuerDNS01ProviderCloudflare)(nil), (*certmanager.ACMEIssuerDNS01ProviderCloudflare)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_v1alpha1_ACMEIssuerDNS01ProviderCloudflare_To_certmanager_ACMEIssuerDNS01ProviderCloudflare(a.(*v1alpha1.ACMEIssuerDNS01ProviderCloudflare), b.(*certmanager.ACMEIssuerDNS01ProviderCloudflare), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*certmanager.ACMEIssuerDNS01ProviderCloudflare)(nil), (*v1alpha1.ACMEIssuerDNS01ProviderCloudflare)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_certmanager_ACMEIssuerDNS01ProviderCloudflare_To_v1alpha1_ACMEIssuerDNS01ProviderCloudflare(a.(*certmanager.ACMEIssuerDNS01ProviderCloudflare), b.(*v1alpha1.ACMEIssuerDNS01ProviderCloudflare), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*v1alpha1.ACMEIssuerDNS01ProviderDigitalOcean)(nil), (*certmanager.ACMEIssuerDNS01ProviderDigitalOcean)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_v1alpha1_ACMEIssuerDNS01ProviderDigitalOcean_To_certmanager_ACMEIssuerDNS01ProviderDigitalOcean(a.(*v1alpha1.ACMEIssuerDNS01ProviderDigitalOcean), b.(*certmanager.ACMEIssuerDNS01ProviderDigitalOcean), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*certmanager.ACMEIssuerDNS01ProviderDigitalOcean)(nil), (*v1alpha1.ACMEIssuerDNS01ProviderDigitalOcean)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_certmanager_ACMEIssuerDNS01ProviderDigitalOcean_To_v1alpha1_ACMEIssuerDNS01ProviderDigitalOcean(a.(*certmanager.ACMEIssuerDNS01ProviderDigitalOcean), b.(*v1alpha1.ACMEIssuerDNS01ProviderDigitalOcean), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*v1alpha1.ACMEIssuerDNS01ProviderRFC2136)(nil), (*certmanager.ACMEIssuerDNS01ProviderRFC2136)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_v1alpha1_ACMEIssuerDNS01ProviderRFC2136_To_certmanager_ACMEIssuerDNS01ProviderRFC2136(a.(*v1alpha1.ACMEIssuerDNS01ProviderRFC2136), b.(*certmanager.ACMEIssuerDNS01ProviderRFC2136), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*certmanager.ACMEIssuerDNS01ProviderRFC2136)(nil), (*v1alpha1.ACMEIssuerDNS01ProviderRFC2136)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_certmanager_ACMEIssuerDNS01ProviderRFC2136_To_v1alpha1_ACMEIssuerDNS01ProviderRFC2136(a.(*certmanager.ACMEIssuerDNS01ProviderRFC2136), b.(*v1alpha1.ACMEIssuerDNS01ProviderRFC2136), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*v1alpha1.ACMEIssuerDNS01ProviderRoute53)(nil), (*certmanager.ACMEIssuerDNS01ProviderRoute53)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_v1alpha1_ACMEIssuerDNS01ProviderRoute53_To_certmanager_ACMEIssuerDNS01ProviderRoute53(a.(*v1alpha1.ACMEIssuerDNS01ProviderRoute53), b.(*certmanager.ACMEIssuerDNS01ProviderRoute53), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*certmanager.ACMEIssuerDNS01ProviderRoute53)(nil), (*v1alpha1.ACMEIssuerDNS01ProviderRoute53)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_certmanager_ACMEIssuerDNS01ProviderRoute53_To_v1alpha1_ACMEIssuerDNS01ProviderRoute53(a.(*certmanager.ACMEIssuerDNS01ProviderRoute53), b.(*v1alpha1.ACMEIssuerDNS01ProviderRoute53), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*v1alpha1.ACMEIssuerDNS01ProviderWebhook)(nil), (*certmanager.ACMEIssuerDNS01ProviderWebhook)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_v1alpha1_ACMEIssuerDNS01ProviderWebhook_To_certmanager_ACMEIssuerDNS01ProviderWebhook(a.(*v1alpha1.ACMEIssuerDNS01ProviderWebhook), b.(*certmanager.ACMEIssuerDNS01ProviderWebhook), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*certmanager.ACMEIssuerDNS01ProviderWebhook)(nil), (*v1alpha1.ACMEIssuerDNS01ProviderWebhook)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_certmanager_ACMEIssuerDNS01ProviderWebhook_To_v1alpha1_ACMEIssuerDNS01ProviderWebhook(a.(*certmanager.ACMEIssuerDNS01ProviderWebhook), b.(*v1alpha1.ACMEIssuerDNS01ProviderWebhook), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*v1alpha1.ACMEIssuerStatus)(nil), (*certmanager.ACMEIssuerStatus)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_v1alpha1_ACMEIssuerStatus_To_certmanager_ACMEIssuerStatus(a.(*v1alpha1.ACMEIssuerStatus), b.(*certmanager.ACMEIssuerStatus), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*certmanager.ACMEIssuerStatus)(nil), (*v1alpha1.ACMEIssuerStatus)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_certmanager_ACMEIssuerStatus_To_v1alpha1_ACMEIssuerStatus(a.(*certmanager.ACMEIssuerStatus), b.(*v1alpha1.ACMEIssuerStatus), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*v1alpha1.CAIssuer)(nil), (*certmanager.CAIssuer)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_v1alpha1_CAIssuer_To_certmanager_CAIssuer(a.(*v1alpha1.CAIssuer), b.(*certmanager.CAIssuer), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*certmanager.CAIssuer)(nil), (*v1alpha1.CAIssuer)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_certmanager_CAIssuer_To_v1alpha1_CAIssuer(a.(*certmanager.CAIssuer), b.(*v1alpha1.CAIssuer), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*v1alpha1.Certificate)(nil), (*certmanager.Certificate)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_v1alpha1_Certificate_To_certmanager_Certificate(a.(*v1alpha1.Certificate), b.(*certmanager.Certificate), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*certmanager.Certificate)(nil), (*v1alpha1.Certificate)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_certmanager_Certificate_To_v1alpha1_Certificate(a.(*certmanager.Certificate), b.(*v1alpha1.Certificate), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*v1alpha1.CertificateCondition)(nil), (*certmanager.CertificateCondition)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_v1alpha1_CertificateCondition_To_certmanager_CertificateCondition(a.(*v1alpha1.CertificateCondition), b.(*certmanager.CertificateCondition), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*certmanager.CertificateCondition)(nil), (*v1alpha1.CertificateCondition)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_certmanager_CertificateCondition_To_v1alpha1_CertificateCondition(a.(*certmanager.CertificateCondition), b.(*v1alpha1.CertificateCondition), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*v1alpha1.CertificateDNSNameSelector)(nil), (*certmanager.CertificateDNSNameSelector)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_v1alpha1_CertificateDNSNameSelector_To_certmanager_CertificateDNSNameSelector(a.(*v1alpha1.CertificateDNSNameSelector), b.(*certmanager.CertificateDNSNameSelector), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*certmanager.CertificateDNSNameSelector)(nil), (*v1alpha1.CertificateDNSNameSelector)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_certmanager_CertificateDNSNameSelector_To_v1alpha1_CertificateDNSNameSelector(a.(*certmanager.CertificateDNSNameSelector), b.(*v1alpha1.CertificateDNSNameSelector), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*v1alpha1.CertificateList)(nil), (*certmanager.CertificateList)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_v1alpha1_CertificateList_To_certmanager_CertificateList(a.(*v1alpha1.CertificateList), b.(*certmanager.CertificateList), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*certmanager.CertificateList)(nil), (*v1alpha1.CertificateList)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_certmanager_CertificateList_To_v1alpha1_CertificateList(a.(*certmanager.CertificateList), b.(*v1alpha1.CertificateList), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*v1alpha1.CertificateRequest)(nil), (*certmanager.CertificateRequest)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_v1alpha1_CertificateRequest_To_certmanager_CertificateRequest(a.(*v1alpha1.CertificateRequest), b.(*certmanager.CertificateRequest), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*certmanager.CertificateRequest)(nil), (*v1alpha1.CertificateRequest)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_certmanager_CertificateRequest_To_v1alpha1_CertificateRequest(a.(*certmanager.CertificateRequest), b.(*v1alpha1.CertificateRequest), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*v1alpha1.CertificateRequestCondition)(nil), (*certmanager.CertificateRequestCondition)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_v1alpha1_CertificateRequestCondition_To_certmanager_CertificateRequestCondition(a.(*v1alpha1.CertificateRequestCondition), b.(*certmanager.CertificateRequestCondition), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*certmanager.CertificateRequestCondition)(nil), (*v1alpha1.CertificateRequestCondition)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_certmanager_CertificateRequestCondition_To_v1alpha1_CertificateRequestCondition(a.(*certmanager.CertificateRequestCondition), b.(*v1alpha1.CertificateRequestCondition), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*v1alpha1.CertificateRequestList)(nil), (*certmanager.CertificateRequestList)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_v1alpha1_CertificateRequestList_To_certmanager_CertificateRequestList(a.(*v1alpha1.CertificateRequestList), b.(*certmanager.CertificateRequestList), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*certmanager.CertificateRequestList)(nil), (*v1alpha1.CertificateRequestList)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_certmanager_CertificateRequestList_To_v1alpha1_CertificateRequestList(a.(*certmanager.CertificateRequestList), b.(*v1alpha1.CertificateRequestList), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*v1alpha1.CertificateRequestSpec)(nil), (*certmanager.CertificateRequestSpec)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_v1alpha1_CertificateRequestSpec_To_certmanager_CertificateRequestSpec(a.(*v1alpha1.CertificateRequestSpec), b.(*certmanager.CertificateRequestSpec), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*certmanager.CertificateRequestSpec)(nil), (*v1alpha1.CertificateRequestSpec)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_certmanager_CertificateRequestSpec_To_v1alpha1_CertificateRequestSpec(a.(*certmanager.CertificateRequestSpec), b.(*v1alpha1.CertificateRequestSpec), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*v1alpha1.CertificateRequestStatus)(nil), (*certmanager.CertificateRequestStatus)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_v1alpha1_CertificateRequestStatus_To_certmanager_CertificateRequestStatus(a.(*v1alpha1.CertificateRequestStatus), b.(*certmanager.CertificateRequestStatus), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*certmanager.CertificateRequestStatus)(nil), (*v1alpha1.CertificateRequestStatus)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_certmanager_CertificateRequestStatus_To_v1alpha1_CertificateRequestStatus(a.(*certmanager.CertificateRequestStatus), b.(*v1alpha1.CertificateRequestStatus), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*v1alpha1.CertificateSpec)(nil), (*certmanager.CertificateSpec)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_v1alpha1_CertificateSpec_To_certmanager_CertificateSpec(a.(*v1alpha1.CertificateSpec), b.(*certmanager.CertificateSpec), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*certmanager.CertificateSpec)(nil), (*v1alpha1.CertificateSpec)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_certmanager_CertificateSpec_To_v1alpha1_CertificateSpec(a.(*certmanager.CertificateSpec), b.(*v1alpha1.CertificateSpec), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*v1alpha1.CertificateStatus)(nil), (*certmanager.CertificateStatus)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_v1alpha1_CertificateStatus_To_certmanager_CertificateStatus(a.(*v1alpha1.CertificateStatus), b.(*certmanager.CertificateStatus), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*certmanager.CertificateStatus)(nil), (*v1alpha1.CertificateStatus)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_certmanager_CertificateStatus_To_v1alpha1_CertificateStatus(a.(*certmanager.CertificateStatus), b.(*v1alpha1.CertificateStatus), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*v1alpha1.Challenge)(nil), (*certmanager.Challenge)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_v1alpha1_Challenge_To_certmanager_Challenge(a.(*v1alpha1.Challenge), b.(*certmanager.Challenge), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*certmanager.Challenge)(nil), (*v1alpha1.Challenge)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_certmanager_Challenge_To_v1alpha1_Challenge(a.(*certmanager.Challenge), b.(*v1alpha1.Challenge), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*v1alpha1.ChallengeList)(nil), (*certmanager.ChallengeList)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_v1alpha1_ChallengeList_To_certmanager_ChallengeList(a.(*v1alpha1.ChallengeList), b.(*certmanager.ChallengeList), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*certmanager.ChallengeList)(nil), (*v1alpha1.ChallengeList)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_certmanager_ChallengeList_To_v1alpha1_ChallengeList(a.(*certmanager.ChallengeList), b.(*v1alpha1.ChallengeList), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*v1alpha1.ChallengeSpec)(nil), (*certmanager.ChallengeSpec)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_v1alpha1_ChallengeSpec_To_certmanager_ChallengeSpec(a.(*v1alpha1.ChallengeSpec), b.(*certmanager.ChallengeSpec), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*certmanager.ChallengeSpec)(nil), (*v1alpha1.ChallengeSpec)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_certmanager_ChallengeSpec_To_v1alpha1_ChallengeSpec(a.(*certmanager.ChallengeSpec), b.(*v1alpha1.ChallengeSpec), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*v1alpha1.ChallengeStatus)(nil), (*certmanager.ChallengeStatus)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_v1alpha1_ChallengeStatus_To_certmanager_ChallengeStatus(a.(*v1alpha1.ChallengeStatus), b.(*certmanager.ChallengeStatus), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*certmanager.ChallengeStatus)(nil), (*v1alpha1.ChallengeStatus)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_certmanager_ChallengeStatus_To_v1alpha1_ChallengeStatus(a.(*certmanager.ChallengeStatus), b.(*v1alpha1.ChallengeStatus), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*v1alpha1.ClusterIssuer)(nil), (*certmanager.ClusterIssuer)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_v1alpha1_ClusterIssuer_To_certmanager_ClusterIssuer(a.(*v1alpha1.ClusterIssuer), b.(*certmanager.ClusterIssuer), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*certmanager.ClusterIssuer)(nil), (*v1alpha1.ClusterIssuer)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_certmanager_ClusterIssuer_To_v1alpha1_ClusterIssuer(a.(*certmanager.ClusterIssuer), b.(*v1alpha1.ClusterIssuer), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*v1alpha1.ClusterIssuerList)(nil), (*certmanager.ClusterIssuerList)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_v1alpha1_ClusterIssuerList_To_certmanager_ClusterIssuerList(a.(*v1alpha1.ClusterIssuerList), b.(*certmanager.ClusterIssuerList), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*certmanager.ClusterIssuerList)(nil), (*v1alpha1.ClusterIssuerList)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_certmanager_ClusterIssuerList_To_v1alpha1_ClusterIssuerList(a.(*certmanager.ClusterIssuerList), b.(*v1alpha1.ClusterIssuerList), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*v1alpha1.Issuer)(nil), (*certmanager.Issuer)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_v1alpha1_Issuer_To_certmanager_Issuer(a.(*v1alpha1.Issuer), b.(*certmanager.Issuer), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*certmanager.Issuer)(nil), (*v1alpha1.Issuer)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_certmanager_Issuer_To_v1alpha1_Issuer(a.(*certmanager.Issuer), b.(*v1alpha1.Issuer), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*v1alpha1.IssuerCondition)(nil), (*certmanager.IssuerCondition)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_v1alpha1_IssuerCondition_To_certmanager_IssuerCondition(a.(*v1alpha1.IssuerCondition), b.(*certmanager.IssuerCondition), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*certmanager.IssuerCondition)(nil), (*v1alpha1.IssuerCondition)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_certmanager_IssuerCondition_To_v1alpha1_IssuerCondition(a.(*certmanager.IssuerCondition), b.(*v1alpha1.IssuerCondition), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*v1alpha1.IssuerConfig)(nil), (*certmanager.IssuerConfig)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_v1alpha1_IssuerConfig_To_certmanager_IssuerConfig(a.(*v1alpha1.IssuerConfig), b.(*certmanager.IssuerConfig), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*certmanager.IssuerConfig)(nil), (*v1alpha1.IssuerConfig)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_certmanager_IssuerConfig_To_v1alpha1_IssuerConfig(a.(*certmanager.IssuerConfig), b.(*v1alpha1.IssuerConfig), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*v1alpha1.IssuerList)(nil), (*certmanager.IssuerList)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_v1alpha1_IssuerList_To_certmanager_IssuerList(a.(*v1alpha1.IssuerList), b.(*certmanager.IssuerList), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*certmanager.IssuerList)(nil), (*v1alpha1.IssuerList)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_certmanager_IssuerList_To_v1alpha1_IssuerList(a.(*certmanager.IssuerList), b.(*v1alpha1.IssuerList), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*v1alpha1.IssuerSpec)(nil), (*certmanager.IssuerSpec)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_v1alpha1_IssuerSpec_To_certmanager_IssuerSpec(a.(*v1alpha1.IssuerSpec), b.(*certmanager.IssuerSpec), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*certmanager.IssuerSpec)(nil), (*v1alpha1.IssuerSpec)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_certmanager_IssuerSpec_To_v1alpha1_IssuerSpec(a.(*certmanager.IssuerSpec), b.(*v1alpha1.IssuerSpec), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*v1alpha1.IssuerStatus)(nil), (*certmanager.IssuerStatus)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_v1alpha1_IssuerStatus_To_certmanager_IssuerStatus(a.(*v1alpha1.IssuerStatus), b.(*certmanager.IssuerStatus), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*certmanager.IssuerStatus)(nil), (*v1alpha1.IssuerStatus)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_certmanager_IssuerStatus_To_v1alpha1_IssuerStatus(a.(*certmanager.IssuerStatus), b.(*v1alpha1.IssuerStatus), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*v1alpha1.LocalObjectReference)(nil), (*certmanager.LocalObjectReference)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_v1alpha1_LocalObjectReference_To_certmanager_LocalObjectReference(a.(*v1alpha1.LocalObjectReference), b.(*certmanager.LocalObjectReference), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*certmanager.LocalObjectReference)(nil), (*v1alpha1.LocalObjectReference)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_certmanager_LocalObjectReference_To_v1alpha1_LocalObjectReference(a.(*certmanager.LocalObjectReference), b.(*v1alpha1.LocalObjectReference), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*v1alpha1.ObjectReference)(nil), (*certmanager.ObjectReference)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_v1alpha1_ObjectReference_To_certmanager_ObjectReference(a.(*v1alpha1.ObjectReference), b.(*certmanager.ObjectReference), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*certmanager.ObjectReference)(nil), (*v1alpha1.ObjectReference)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_certmanager_ObjectReference_To_v1alpha1_ObjectReference(a.(*certmanager.ObjectReference), b.(*v1alpha1.ObjectReference), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*v1alpha1.Order)(nil), (*certmanager.Order)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_v1alpha1_Order_To_certmanager_Order(a.(*v1alpha1.Order), b.(*certmanager.Order), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*certmanager.Order)(nil), (*v1alpha1.Order)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_certmanager_Order_To_v1alpha1_Order(a.(*certmanager.Order), b.(*v1alpha1.Order), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*v1alpha1.OrderList)(nil), (*certmanager.OrderList)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_v1alpha1_OrderList_To_certmanager_OrderList(a.(*v1alpha1.OrderList), b.(*certmanager.OrderList), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*certmanager.OrderList)(nil), (*v1alpha1.OrderList)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_certmanager_OrderList_To_v1alpha1_OrderList(a.(*certmanager.OrderList), b.(*v1alpha1.OrderList), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*v1alpha1.OrderSpec)(nil), (*certmanager.OrderSpec)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_v1alpha1_OrderSpec_To_certmanager_OrderSpec(a.(*v1alpha1.OrderSpec), b.(*certmanager.OrderSpec), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*certmanager.OrderSpec)(nil), (*v1alpha1.OrderSpec)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_certmanager_OrderSpec_To_v1alpha1_OrderSpec(a.(*certmanager.OrderSpec), b.(*v1alpha1.OrderSpec), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*v1alpha1.OrderStatus)(nil), (*certmanager.OrderStatus)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_v1alpha1_OrderStatus_To_certmanager_OrderStatus(a.(*v1alpha1.OrderStatus), b.(*certmanager.OrderStatus), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*certmanager.OrderStatus)(nil), (*v1alpha1.OrderStatus)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_certmanager_OrderStatus_To_v1alpha1_OrderStatus(a.(*certmanager.OrderStatus), b.(*v1alpha1.OrderStatus), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*v1alpha1.SecretKeySelector)(nil), (*certmanager.SecretKeySelector)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_v1alpha1_SecretKeySelector_To_certmanager_SecretKeySelector(a.(*v1alpha1.SecretKeySelector), b.(*certmanager.SecretKeySelector), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*certmanager.SecretKeySelector)(nil), (*v1alpha1.SecretKeySelector)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_certmanager_SecretKeySelector_To_v1alpha1_SecretKeySelector(a.(*certmanager.SecretKeySelector), b.(*v1alpha1.SecretKeySelector), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*v1alpha1.SelfSignedIssuer)(nil), (*certmanager.SelfSignedIssuer)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_v1alpha1_SelfSignedIssuer_To_certmanager_SelfSignedIssuer(a.(*v1alpha1.SelfSignedIssuer), b.(*certmanager.SelfSignedIssuer), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*certmanager.SelfSignedIssuer)(nil), (*v1alpha1.SelfSignedIssuer)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_certmanager_SelfSignedIssuer_To_v1alpha1_SelfSignedIssuer(a.(*certmanager.SelfSignedIssuer), b.(*v1alpha1.SelfSignedIssuer), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*v1alpha1.VaultAppRole)(nil), (*certmanager.VaultAppRole)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_v1alpha1_VaultAppRole_To_certmanager_VaultAppRole(a.(*v1alpha1.VaultAppRole), b.(*certmanager.VaultAppRole), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*certmanager.VaultAppRole)(nil), (*v1alpha1.VaultAppRole)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_certmanager_VaultAppRole_To_v1alpha1_VaultAppRole(a.(*certmanager.VaultAppRole), b.(*v1alpha1.VaultAppRole), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*v1alpha1.VaultAuth)(nil), (*certmanager.VaultAuth)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_v1alpha1_VaultAuth_To_certmanager_VaultAuth(a.(*v1alpha1.VaultAuth), b.(*certmanager.VaultAuth), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*certmanager.VaultAuth)(nil), (*v1alpha1.VaultAuth)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_certmanager_VaultAuth_To_v1alpha1_VaultAuth(a.(*certmanager.VaultAuth), b.(*v1alpha1.VaultAuth), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*v1alpha1.VaultIssuer)(nil), (*certmanager.VaultIssuer)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_v1alpha1_VaultIssuer_To_certmanager_VaultIssuer(a.(*v1alpha1.VaultIssuer), b.(*certmanager.VaultIssuer), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*certmanager.VaultIssuer)(nil), (*v1alpha1.VaultIssuer)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_certmanager_VaultIssuer_To_v1alpha1_VaultIssuer(a.(*certmanager.VaultIssuer), b.(*v1alpha1.VaultIssuer), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*v1alpha1.VenafiCloud)(nil), (*certmanager.VenafiCloud)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_v1alpha1_VenafiCloud_To_certmanager_VenafiCloud(a.(*v1alpha1.VenafiCloud), b.(*certmanager.VenafiCloud), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*certmanager.VenafiCloud)(nil), (*v1alpha1.VenafiCloud)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_certmanager_VenafiCloud_To_v1alpha1_VenafiCloud(a.(*certmanager.VenafiCloud), b.(*v1alpha1.VenafiCloud), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*v1alpha1.VenafiIssuer)(nil), (*certmanager.VenafiIssuer)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_v1alpha1_VenafiIssuer_To_certmanager_VenafiIssuer(a.(*v1alpha1.VenafiIssuer), b.(*certmanager.VenafiIssuer), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*certmanager.VenafiIssuer)(nil), (*v1alpha1.VenafiIssuer)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_certmanager_VenafiIssuer_To_v1alpha1_VenafiIssuer(a.(*certmanager.VenafiIssuer), b.(*v1alpha1.VenafiIssuer), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*v1alpha1.VenafiTPP)(nil), (*certmanager.VenafiTPP)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_v1alpha1_VenafiTPP_To_certmanager_VenafiTPP(a.(*v1alpha1.VenafiTPP), b.(*certmanager.VenafiTPP), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*certmanager.VenafiTPP)(nil), (*v1alpha1.VenafiTPP)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_certmanager_VenafiTPP_To_v1alpha1_VenafiTPP(a.(*certmanager.VenafiTPP), b.(*v1alpha1.VenafiTPP), scope) + }); err != nil { + return err + } + return nil +} + +func autoConvert_v1alpha1_ACMEAuthorization_To_certmanager_ACMEAuthorization(in *v1alpha1.ACMEAuthorization, out *certmanager.ACMEAuthorization, s conversion.Scope) error { + out.URL = in.URL + out.Identifier = in.Identifier + out.Wildcard = in.Wildcard + out.Challenges = *(*[]certmanager.ACMEChallenge)(unsafe.Pointer(&in.Challenges)) + return nil +} + +// Convert_v1alpha1_ACMEAuthorization_To_certmanager_ACMEAuthorization is an autogenerated conversion function. +func Convert_v1alpha1_ACMEAuthorization_To_certmanager_ACMEAuthorization(in *v1alpha1.ACMEAuthorization, out *certmanager.ACMEAuthorization, s conversion.Scope) error { + return autoConvert_v1alpha1_ACMEAuthorization_To_certmanager_ACMEAuthorization(in, out, s) +} + +func autoConvert_certmanager_ACMEAuthorization_To_v1alpha1_ACMEAuthorization(in *certmanager.ACMEAuthorization, out *v1alpha1.ACMEAuthorization, s conversion.Scope) error { + out.URL = in.URL + out.Identifier = in.Identifier + out.Wildcard = in.Wildcard + out.Challenges = *(*[]v1alpha1.ACMEChallenge)(unsafe.Pointer(&in.Challenges)) + return nil +} + +// Convert_certmanager_ACMEAuthorization_To_v1alpha1_ACMEAuthorization is an autogenerated conversion function. +func Convert_certmanager_ACMEAuthorization_To_v1alpha1_ACMEAuthorization(in *certmanager.ACMEAuthorization, out *v1alpha1.ACMEAuthorization, s conversion.Scope) error { + return autoConvert_certmanager_ACMEAuthorization_To_v1alpha1_ACMEAuthorization(in, out, s) +} + +func autoConvert_v1alpha1_ACMEChallenge_To_certmanager_ACMEChallenge(in *v1alpha1.ACMEChallenge, out *certmanager.ACMEChallenge, s conversion.Scope) error { + out.URL = in.URL + out.Token = in.Token + out.Type = certmanager.ACMEChallengeType(in.Type) + return nil +} + +// Convert_v1alpha1_ACMEChallenge_To_certmanager_ACMEChallenge is an autogenerated conversion function. +func Convert_v1alpha1_ACMEChallenge_To_certmanager_ACMEChallenge(in *v1alpha1.ACMEChallenge, out *certmanager.ACMEChallenge, s conversion.Scope) error { + return autoConvert_v1alpha1_ACMEChallenge_To_certmanager_ACMEChallenge(in, out, s) +} + +func autoConvert_certmanager_ACMEChallenge_To_v1alpha1_ACMEChallenge(in *certmanager.ACMEChallenge, out *v1alpha1.ACMEChallenge, s conversion.Scope) error { + out.URL = in.URL + out.Token = in.Token + out.Type = v1alpha1.ACMEChallengeType(in.Type) + return nil +} + +// Convert_certmanager_ACMEChallenge_To_v1alpha1_ACMEChallenge is an autogenerated conversion function. +func Convert_certmanager_ACMEChallenge_To_v1alpha1_ACMEChallenge(in *certmanager.ACMEChallenge, out *v1alpha1.ACMEChallenge, s conversion.Scope) error { + return autoConvert_certmanager_ACMEChallenge_To_v1alpha1_ACMEChallenge(in, out, s) +} + +func autoConvert_v1alpha1_ACMEChallengeSolver_To_certmanager_ACMEChallengeSolver(in *v1alpha1.ACMEChallengeSolver, out *certmanager.ACMEChallengeSolver, s conversion.Scope) error { + out.Selector = (*certmanager.CertificateDNSNameSelector)(unsafe.Pointer(in.Selector)) + out.HTTP01 = (*certmanager.ACMEChallengeSolverHTTP01)(unsafe.Pointer(in.HTTP01)) + out.DNS01 = (*certmanager.ACMEChallengeSolverDNS01)(unsafe.Pointer(in.DNS01)) + return nil +} + +// Convert_v1alpha1_ACMEChallengeSolver_To_certmanager_ACMEChallengeSolver is an autogenerated conversion function. +func Convert_v1alpha1_ACMEChallengeSolver_To_certmanager_ACMEChallengeSolver(in *v1alpha1.ACMEChallengeSolver, out *certmanager.ACMEChallengeSolver, s conversion.Scope) error { + return autoConvert_v1alpha1_ACMEChallengeSolver_To_certmanager_ACMEChallengeSolver(in, out, s) +} + +func autoConvert_certmanager_ACMEChallengeSolver_To_v1alpha1_ACMEChallengeSolver(in *certmanager.ACMEChallengeSolver, out *v1alpha1.ACMEChallengeSolver, s conversion.Scope) error { + out.Selector = (*v1alpha1.CertificateDNSNameSelector)(unsafe.Pointer(in.Selector)) + out.HTTP01 = (*v1alpha1.ACMEChallengeSolverHTTP01)(unsafe.Pointer(in.HTTP01)) + out.DNS01 = (*v1alpha1.ACMEChallengeSolverDNS01)(unsafe.Pointer(in.DNS01)) + return nil +} + +// Convert_certmanager_ACMEChallengeSolver_To_v1alpha1_ACMEChallengeSolver is an autogenerated conversion function. +func Convert_certmanager_ACMEChallengeSolver_To_v1alpha1_ACMEChallengeSolver(in *certmanager.ACMEChallengeSolver, out *v1alpha1.ACMEChallengeSolver, s conversion.Scope) error { + return autoConvert_certmanager_ACMEChallengeSolver_To_v1alpha1_ACMEChallengeSolver(in, out, s) +} + +func autoConvert_v1alpha1_ACMEChallengeSolverDNS01_To_certmanager_ACMEChallengeSolverDNS01(in *v1alpha1.ACMEChallengeSolverDNS01, out *certmanager.ACMEChallengeSolverDNS01, s conversion.Scope) error { + out.CNAMEStrategy = certmanager.CNAMEStrategy(in.CNAMEStrategy) + out.Akamai = (*certmanager.ACMEIssuerDNS01ProviderAkamai)(unsafe.Pointer(in.Akamai)) + out.CloudDNS = (*certmanager.ACMEIssuerDNS01ProviderCloudDNS)(unsafe.Pointer(in.CloudDNS)) + out.Cloudflare = (*certmanager.ACMEIssuerDNS01ProviderCloudflare)(unsafe.Pointer(in.Cloudflare)) + out.Route53 = (*certmanager.ACMEIssuerDNS01ProviderRoute53)(unsafe.Pointer(in.Route53)) + out.AzureDNS = (*certmanager.ACMEIssuerDNS01ProviderAzureDNS)(unsafe.Pointer(in.AzureDNS)) + out.DigitalOcean = (*certmanager.ACMEIssuerDNS01ProviderDigitalOcean)(unsafe.Pointer(in.DigitalOcean)) + out.AcmeDNS = (*certmanager.ACMEIssuerDNS01ProviderAcmeDNS)(unsafe.Pointer(in.AcmeDNS)) + out.RFC2136 = (*certmanager.ACMEIssuerDNS01ProviderRFC2136)(unsafe.Pointer(in.RFC2136)) + out.Webhook = (*certmanager.ACMEIssuerDNS01ProviderWebhook)(unsafe.Pointer(in.Webhook)) + return nil +} + +// Convert_v1alpha1_ACMEChallengeSolverDNS01_To_certmanager_ACMEChallengeSolverDNS01 is an autogenerated conversion function. +func Convert_v1alpha1_ACMEChallengeSolverDNS01_To_certmanager_ACMEChallengeSolverDNS01(in *v1alpha1.ACMEChallengeSolverDNS01, out *certmanager.ACMEChallengeSolverDNS01, s conversion.Scope) error { + return autoConvert_v1alpha1_ACMEChallengeSolverDNS01_To_certmanager_ACMEChallengeSolverDNS01(in, out, s) +} + +func autoConvert_certmanager_ACMEChallengeSolverDNS01_To_v1alpha1_ACMEChallengeSolverDNS01(in *certmanager.ACMEChallengeSolverDNS01, out *v1alpha1.ACMEChallengeSolverDNS01, s conversion.Scope) error { + out.CNAMEStrategy = v1alpha1.CNAMEStrategy(in.CNAMEStrategy) + out.Akamai = (*v1alpha1.ACMEIssuerDNS01ProviderAkamai)(unsafe.Pointer(in.Akamai)) + out.CloudDNS = (*v1alpha1.ACMEIssuerDNS01ProviderCloudDNS)(unsafe.Pointer(in.CloudDNS)) + out.Cloudflare = (*v1alpha1.ACMEIssuerDNS01ProviderCloudflare)(unsafe.Pointer(in.Cloudflare)) + out.Route53 = (*v1alpha1.ACMEIssuerDNS01ProviderRoute53)(unsafe.Pointer(in.Route53)) + out.AzureDNS = (*v1alpha1.ACMEIssuerDNS01ProviderAzureDNS)(unsafe.Pointer(in.AzureDNS)) + out.DigitalOcean = (*v1alpha1.ACMEIssuerDNS01ProviderDigitalOcean)(unsafe.Pointer(in.DigitalOcean)) + out.AcmeDNS = (*v1alpha1.ACMEIssuerDNS01ProviderAcmeDNS)(unsafe.Pointer(in.AcmeDNS)) + out.RFC2136 = (*v1alpha1.ACMEIssuerDNS01ProviderRFC2136)(unsafe.Pointer(in.RFC2136)) + out.Webhook = (*v1alpha1.ACMEIssuerDNS01ProviderWebhook)(unsafe.Pointer(in.Webhook)) + return nil +} + +// Convert_certmanager_ACMEChallengeSolverDNS01_To_v1alpha1_ACMEChallengeSolverDNS01 is an autogenerated conversion function. +func Convert_certmanager_ACMEChallengeSolverDNS01_To_v1alpha1_ACMEChallengeSolverDNS01(in *certmanager.ACMEChallengeSolverDNS01, out *v1alpha1.ACMEChallengeSolverDNS01, s conversion.Scope) error { + return autoConvert_certmanager_ACMEChallengeSolverDNS01_To_v1alpha1_ACMEChallengeSolverDNS01(in, out, s) +} + +func autoConvert_v1alpha1_ACMEChallengeSolverHTTP01_To_certmanager_ACMEChallengeSolverHTTP01(in *v1alpha1.ACMEChallengeSolverHTTP01, out *certmanager.ACMEChallengeSolverHTTP01, s conversion.Scope) error { + out.Ingress = (*certmanager.ACMEChallengeSolverHTTP01Ingress)(unsafe.Pointer(in.Ingress)) + return nil +} + +// Convert_v1alpha1_ACMEChallengeSolverHTTP01_To_certmanager_ACMEChallengeSolverHTTP01 is an autogenerated conversion function. +func Convert_v1alpha1_ACMEChallengeSolverHTTP01_To_certmanager_ACMEChallengeSolverHTTP01(in *v1alpha1.ACMEChallengeSolverHTTP01, out *certmanager.ACMEChallengeSolverHTTP01, s conversion.Scope) error { + return autoConvert_v1alpha1_ACMEChallengeSolverHTTP01_To_certmanager_ACMEChallengeSolverHTTP01(in, out, s) +} + +func autoConvert_certmanager_ACMEChallengeSolverHTTP01_To_v1alpha1_ACMEChallengeSolverHTTP01(in *certmanager.ACMEChallengeSolverHTTP01, out *v1alpha1.ACMEChallengeSolverHTTP01, s conversion.Scope) error { + out.Ingress = (*v1alpha1.ACMEChallengeSolverHTTP01Ingress)(unsafe.Pointer(in.Ingress)) + return nil +} + +// Convert_certmanager_ACMEChallengeSolverHTTP01_To_v1alpha1_ACMEChallengeSolverHTTP01 is an autogenerated conversion function. +func Convert_certmanager_ACMEChallengeSolverHTTP01_To_v1alpha1_ACMEChallengeSolverHTTP01(in *certmanager.ACMEChallengeSolverHTTP01, out *v1alpha1.ACMEChallengeSolverHTTP01, s conversion.Scope) error { + return autoConvert_certmanager_ACMEChallengeSolverHTTP01_To_v1alpha1_ACMEChallengeSolverHTTP01(in, out, s) +} + +func autoConvert_v1alpha1_ACMEChallengeSolverHTTP01Ingress_To_certmanager_ACMEChallengeSolverHTTP01Ingress(in *v1alpha1.ACMEChallengeSolverHTTP01Ingress, out *certmanager.ACMEChallengeSolverHTTP01Ingress, s conversion.Scope) error { + out.ServiceType = v1.ServiceType(in.ServiceType) + out.Class = (*string)(unsafe.Pointer(in.Class)) + out.Name = in.Name + out.PodTemplate = (*certmanager.ACMEChallengeSolverHTTP01IngressPodTemplate)(unsafe.Pointer(in.PodTemplate)) + return nil +} + +// Convert_v1alpha1_ACMEChallengeSolverHTTP01Ingress_To_certmanager_ACMEChallengeSolverHTTP01Ingress is an autogenerated conversion function. +func Convert_v1alpha1_ACMEChallengeSolverHTTP01Ingress_To_certmanager_ACMEChallengeSolverHTTP01Ingress(in *v1alpha1.ACMEChallengeSolverHTTP01Ingress, out *certmanager.ACMEChallengeSolverHTTP01Ingress, s conversion.Scope) error { + return autoConvert_v1alpha1_ACMEChallengeSolverHTTP01Ingress_To_certmanager_ACMEChallengeSolverHTTP01Ingress(in, out, s) +} + +func autoConvert_certmanager_ACMEChallengeSolverHTTP01Ingress_To_v1alpha1_ACMEChallengeSolverHTTP01Ingress(in *certmanager.ACMEChallengeSolverHTTP01Ingress, out *v1alpha1.ACMEChallengeSolverHTTP01Ingress, s conversion.Scope) error { + out.ServiceType = v1.ServiceType(in.ServiceType) + out.Class = (*string)(unsafe.Pointer(in.Class)) + out.Name = in.Name + out.PodTemplate = (*v1alpha1.ACMEChallengeSolverHTTP01IngressPodTemplate)(unsafe.Pointer(in.PodTemplate)) + return nil +} + +// Convert_certmanager_ACMEChallengeSolverHTTP01Ingress_To_v1alpha1_ACMEChallengeSolverHTTP01Ingress is an autogenerated conversion function. +func Convert_certmanager_ACMEChallengeSolverHTTP01Ingress_To_v1alpha1_ACMEChallengeSolverHTTP01Ingress(in *certmanager.ACMEChallengeSolverHTTP01Ingress, out *v1alpha1.ACMEChallengeSolverHTTP01Ingress, s conversion.Scope) error { + return autoConvert_certmanager_ACMEChallengeSolverHTTP01Ingress_To_v1alpha1_ACMEChallengeSolverHTTP01Ingress(in, out, s) +} + +func autoConvert_v1alpha1_ACMEChallengeSolverHTTP01IngressPodSpec_To_certmanager_ACMEChallengeSolverHTTP01IngressPodSpec(in *v1alpha1.ACMEChallengeSolverHTTP01IngressPodSpec, out *certmanager.ACMEChallengeSolverHTTP01IngressPodSpec, s conversion.Scope) error { + out.NodeSelector = *(*map[string]string)(unsafe.Pointer(&in.NodeSelector)) + out.Affinity = (*v1.Affinity)(unsafe.Pointer(in.Affinity)) + out.Tolerations = *(*[]v1.Toleration)(unsafe.Pointer(&in.Tolerations)) + return nil +} + +// Convert_v1alpha1_ACMEChallengeSolverHTTP01IngressPodSpec_To_certmanager_ACMEChallengeSolverHTTP01IngressPodSpec is an autogenerated conversion function. +func Convert_v1alpha1_ACMEChallengeSolverHTTP01IngressPodSpec_To_certmanager_ACMEChallengeSolverHTTP01IngressPodSpec(in *v1alpha1.ACMEChallengeSolverHTTP01IngressPodSpec, out *certmanager.ACMEChallengeSolverHTTP01IngressPodSpec, s conversion.Scope) error { + return autoConvert_v1alpha1_ACMEChallengeSolverHTTP01IngressPodSpec_To_certmanager_ACMEChallengeSolverHTTP01IngressPodSpec(in, out, s) +} + +func autoConvert_certmanager_ACMEChallengeSolverHTTP01IngressPodSpec_To_v1alpha1_ACMEChallengeSolverHTTP01IngressPodSpec(in *certmanager.ACMEChallengeSolverHTTP01IngressPodSpec, out *v1alpha1.ACMEChallengeSolverHTTP01IngressPodSpec, s conversion.Scope) error { + out.NodeSelector = *(*map[string]string)(unsafe.Pointer(&in.NodeSelector)) + out.Affinity = (*v1.Affinity)(unsafe.Pointer(in.Affinity)) + out.Tolerations = *(*[]v1.Toleration)(unsafe.Pointer(&in.Tolerations)) + return nil +} + +// Convert_certmanager_ACMEChallengeSolverHTTP01IngressPodSpec_To_v1alpha1_ACMEChallengeSolverHTTP01IngressPodSpec is an autogenerated conversion function. +func Convert_certmanager_ACMEChallengeSolverHTTP01IngressPodSpec_To_v1alpha1_ACMEChallengeSolverHTTP01IngressPodSpec(in *certmanager.ACMEChallengeSolverHTTP01IngressPodSpec, out *v1alpha1.ACMEChallengeSolverHTTP01IngressPodSpec, s conversion.Scope) error { + return autoConvert_certmanager_ACMEChallengeSolverHTTP01IngressPodSpec_To_v1alpha1_ACMEChallengeSolverHTTP01IngressPodSpec(in, out, s) +} + +func autoConvert_v1alpha1_ACMEChallengeSolverHTTP01IngressPodTemplate_To_certmanager_ACMEChallengeSolverHTTP01IngressPodTemplate(in *v1alpha1.ACMEChallengeSolverHTTP01IngressPodTemplate, out *certmanager.ACMEChallengeSolverHTTP01IngressPodTemplate, s conversion.Scope) error { + out.ObjectMeta = in.ObjectMeta + if err := Convert_v1alpha1_ACMEChallengeSolverHTTP01IngressPodSpec_To_certmanager_ACMEChallengeSolverHTTP01IngressPodSpec(&in.Spec, &out.Spec, s); err != nil { + return err + } + return nil +} + +// Convert_v1alpha1_ACMEChallengeSolverHTTP01IngressPodTemplate_To_certmanager_ACMEChallengeSolverHTTP01IngressPodTemplate is an autogenerated conversion function. +func Convert_v1alpha1_ACMEChallengeSolverHTTP01IngressPodTemplate_To_certmanager_ACMEChallengeSolverHTTP01IngressPodTemplate(in *v1alpha1.ACMEChallengeSolverHTTP01IngressPodTemplate, out *certmanager.ACMEChallengeSolverHTTP01IngressPodTemplate, s conversion.Scope) error { + return autoConvert_v1alpha1_ACMEChallengeSolverHTTP01IngressPodTemplate_To_certmanager_ACMEChallengeSolverHTTP01IngressPodTemplate(in, out, s) +} + +func autoConvert_certmanager_ACMEChallengeSolverHTTP01IngressPodTemplate_To_v1alpha1_ACMEChallengeSolverHTTP01IngressPodTemplate(in *certmanager.ACMEChallengeSolverHTTP01IngressPodTemplate, out *v1alpha1.ACMEChallengeSolverHTTP01IngressPodTemplate, s conversion.Scope) error { + out.ObjectMeta = in.ObjectMeta + if err := Convert_certmanager_ACMEChallengeSolverHTTP01IngressPodSpec_To_v1alpha1_ACMEChallengeSolverHTTP01IngressPodSpec(&in.Spec, &out.Spec, s); err != nil { + return err + } + return nil +} + +// Convert_certmanager_ACMEChallengeSolverHTTP01IngressPodTemplate_To_v1alpha1_ACMEChallengeSolverHTTP01IngressPodTemplate is an autogenerated conversion function. +func Convert_certmanager_ACMEChallengeSolverHTTP01IngressPodTemplate_To_v1alpha1_ACMEChallengeSolverHTTP01IngressPodTemplate(in *certmanager.ACMEChallengeSolverHTTP01IngressPodTemplate, out *v1alpha1.ACMEChallengeSolverHTTP01IngressPodTemplate, s conversion.Scope) error { + return autoConvert_certmanager_ACMEChallengeSolverHTTP01IngressPodTemplate_To_v1alpha1_ACMEChallengeSolverHTTP01IngressPodTemplate(in, out, s) +} + +func autoConvert_v1alpha1_ACMEIssuer_To_certmanager_ACMEIssuer(in *v1alpha1.ACMEIssuer, out *certmanager.ACMEIssuer, s conversion.Scope) error { + out.Email = in.Email + out.Server = in.Server + out.SkipTLSVerify = in.SkipTLSVerify + if err := Convert_v1alpha1_SecretKeySelector_To_certmanager_SecretKeySelector(&in.PrivateKey, &out.PrivateKey, s); err != nil { + return err + } + out.Solvers = *(*[]certmanager.ACMEChallengeSolver)(unsafe.Pointer(&in.Solvers)) + return nil +} + +// Convert_v1alpha1_ACMEIssuer_To_certmanager_ACMEIssuer is an autogenerated conversion function. +func Convert_v1alpha1_ACMEIssuer_To_certmanager_ACMEIssuer(in *v1alpha1.ACMEIssuer, out *certmanager.ACMEIssuer, s conversion.Scope) error { + return autoConvert_v1alpha1_ACMEIssuer_To_certmanager_ACMEIssuer(in, out, s) +} + +func autoConvert_certmanager_ACMEIssuer_To_v1alpha1_ACMEIssuer(in *certmanager.ACMEIssuer, out *v1alpha1.ACMEIssuer, s conversion.Scope) error { + out.Email = in.Email + out.Server = in.Server + out.SkipTLSVerify = in.SkipTLSVerify + if err := Convert_certmanager_SecretKeySelector_To_v1alpha1_SecretKeySelector(&in.PrivateKey, &out.PrivateKey, s); err != nil { + return err + } + out.Solvers = *(*[]v1alpha1.ACMEChallengeSolver)(unsafe.Pointer(&in.Solvers)) + return nil +} + +// Convert_certmanager_ACMEIssuer_To_v1alpha1_ACMEIssuer is an autogenerated conversion function. +func Convert_certmanager_ACMEIssuer_To_v1alpha1_ACMEIssuer(in *certmanager.ACMEIssuer, out *v1alpha1.ACMEIssuer, s conversion.Scope) error { + return autoConvert_certmanager_ACMEIssuer_To_v1alpha1_ACMEIssuer(in, out, s) +} + +func autoConvert_v1alpha1_ACMEIssuerDNS01ProviderAcmeDNS_To_certmanager_ACMEIssuerDNS01ProviderAcmeDNS(in *v1alpha1.ACMEIssuerDNS01ProviderAcmeDNS, out *certmanager.ACMEIssuerDNS01ProviderAcmeDNS, s conversion.Scope) error { + out.Host = in.Host + if err := Convert_v1alpha1_SecretKeySelector_To_certmanager_SecretKeySelector(&in.AccountSecret, &out.AccountSecret, s); err != nil { + return err + } + return nil +} + +// Convert_v1alpha1_ACMEIssuerDNS01ProviderAcmeDNS_To_certmanager_ACMEIssuerDNS01ProviderAcmeDNS is an autogenerated conversion function. +func Convert_v1alpha1_ACMEIssuerDNS01ProviderAcmeDNS_To_certmanager_ACMEIssuerDNS01ProviderAcmeDNS(in *v1alpha1.ACMEIssuerDNS01ProviderAcmeDNS, out *certmanager.ACMEIssuerDNS01ProviderAcmeDNS, s conversion.Scope) error { + return autoConvert_v1alpha1_ACMEIssuerDNS01ProviderAcmeDNS_To_certmanager_ACMEIssuerDNS01ProviderAcmeDNS(in, out, s) +} + +func autoConvert_certmanager_ACMEIssuerDNS01ProviderAcmeDNS_To_v1alpha1_ACMEIssuerDNS01ProviderAcmeDNS(in *certmanager.ACMEIssuerDNS01ProviderAcmeDNS, out *v1alpha1.ACMEIssuerDNS01ProviderAcmeDNS, s conversion.Scope) error { + out.Host = in.Host + if err := Convert_certmanager_SecretKeySelector_To_v1alpha1_SecretKeySelector(&in.AccountSecret, &out.AccountSecret, s); err != nil { + return err + } + return nil +} + +// Convert_certmanager_ACMEIssuerDNS01ProviderAcmeDNS_To_v1alpha1_ACMEIssuerDNS01ProviderAcmeDNS is an autogenerated conversion function. +func Convert_certmanager_ACMEIssuerDNS01ProviderAcmeDNS_To_v1alpha1_ACMEIssuerDNS01ProviderAcmeDNS(in *certmanager.ACMEIssuerDNS01ProviderAcmeDNS, out *v1alpha1.ACMEIssuerDNS01ProviderAcmeDNS, s conversion.Scope) error { + return autoConvert_certmanager_ACMEIssuerDNS01ProviderAcmeDNS_To_v1alpha1_ACMEIssuerDNS01ProviderAcmeDNS(in, out, s) +} + +func autoConvert_v1alpha1_ACMEIssuerDNS01ProviderAkamai_To_certmanager_ACMEIssuerDNS01ProviderAkamai(in *v1alpha1.ACMEIssuerDNS01ProviderAkamai, out *certmanager.ACMEIssuerDNS01ProviderAkamai, s conversion.Scope) error { + out.ServiceConsumerDomain = in.ServiceConsumerDomain + if err := Convert_v1alpha1_SecretKeySelector_To_certmanager_SecretKeySelector(&in.ClientToken, &out.ClientToken, s); err != nil { + return err + } + if err := Convert_v1alpha1_SecretKeySelector_To_certmanager_SecretKeySelector(&in.ClientSecret, &out.ClientSecret, s); err != nil { + return err + } + if err := Convert_v1alpha1_SecretKeySelector_To_certmanager_SecretKeySelector(&in.AccessToken, &out.AccessToken, s); err != nil { + return err + } + return nil +} + +// Convert_v1alpha1_ACMEIssuerDNS01ProviderAkamai_To_certmanager_ACMEIssuerDNS01ProviderAkamai is an autogenerated conversion function. +func Convert_v1alpha1_ACMEIssuerDNS01ProviderAkamai_To_certmanager_ACMEIssuerDNS01ProviderAkamai(in *v1alpha1.ACMEIssuerDNS01ProviderAkamai, out *certmanager.ACMEIssuerDNS01ProviderAkamai, s conversion.Scope) error { + return autoConvert_v1alpha1_ACMEIssuerDNS01ProviderAkamai_To_certmanager_ACMEIssuerDNS01ProviderAkamai(in, out, s) +} + +func autoConvert_certmanager_ACMEIssuerDNS01ProviderAkamai_To_v1alpha1_ACMEIssuerDNS01ProviderAkamai(in *certmanager.ACMEIssuerDNS01ProviderAkamai, out *v1alpha1.ACMEIssuerDNS01ProviderAkamai, s conversion.Scope) error { + out.ServiceConsumerDomain = in.ServiceConsumerDomain + if err := Convert_certmanager_SecretKeySelector_To_v1alpha1_SecretKeySelector(&in.ClientToken, &out.ClientToken, s); err != nil { + return err + } + if err := Convert_certmanager_SecretKeySelector_To_v1alpha1_SecretKeySelector(&in.ClientSecret, &out.ClientSecret, s); err != nil { + return err + } + if err := Convert_certmanager_SecretKeySelector_To_v1alpha1_SecretKeySelector(&in.AccessToken, &out.AccessToken, s); err != nil { + return err + } + return nil +} + +// Convert_certmanager_ACMEIssuerDNS01ProviderAkamai_To_v1alpha1_ACMEIssuerDNS01ProviderAkamai is an autogenerated conversion function. +func Convert_certmanager_ACMEIssuerDNS01ProviderAkamai_To_v1alpha1_ACMEIssuerDNS01ProviderAkamai(in *certmanager.ACMEIssuerDNS01ProviderAkamai, out *v1alpha1.ACMEIssuerDNS01ProviderAkamai, s conversion.Scope) error { + return autoConvert_certmanager_ACMEIssuerDNS01ProviderAkamai_To_v1alpha1_ACMEIssuerDNS01ProviderAkamai(in, out, s) +} + +func autoConvert_v1alpha1_ACMEIssuerDNS01ProviderAzureDNS_To_certmanager_ACMEIssuerDNS01ProviderAzureDNS(in *v1alpha1.ACMEIssuerDNS01ProviderAzureDNS, out *certmanager.ACMEIssuerDNS01ProviderAzureDNS, s conversion.Scope) error { + out.ClientID = in.ClientID + if err := Convert_v1alpha1_SecretKeySelector_To_certmanager_SecretKeySelector(&in.ClientSecret, &out.ClientSecret, s); err != nil { + return err + } + out.SubscriptionID = in.SubscriptionID + out.TenantID = in.TenantID + out.ResourceGroupName = in.ResourceGroupName + out.HostedZoneName = in.HostedZoneName + out.Environment = certmanager.AzureDNSEnvironment(in.Environment) + return nil +} + +// Convert_v1alpha1_ACMEIssuerDNS01ProviderAzureDNS_To_certmanager_ACMEIssuerDNS01ProviderAzureDNS is an autogenerated conversion function. +func Convert_v1alpha1_ACMEIssuerDNS01ProviderAzureDNS_To_certmanager_ACMEIssuerDNS01ProviderAzureDNS(in *v1alpha1.ACMEIssuerDNS01ProviderAzureDNS, out *certmanager.ACMEIssuerDNS01ProviderAzureDNS, s conversion.Scope) error { + return autoConvert_v1alpha1_ACMEIssuerDNS01ProviderAzureDNS_To_certmanager_ACMEIssuerDNS01ProviderAzureDNS(in, out, s) +} + +func autoConvert_certmanager_ACMEIssuerDNS01ProviderAzureDNS_To_v1alpha1_ACMEIssuerDNS01ProviderAzureDNS(in *certmanager.ACMEIssuerDNS01ProviderAzureDNS, out *v1alpha1.ACMEIssuerDNS01ProviderAzureDNS, s conversion.Scope) error { + out.ClientID = in.ClientID + if err := Convert_certmanager_SecretKeySelector_To_v1alpha1_SecretKeySelector(&in.ClientSecret, &out.ClientSecret, s); err != nil { + return err + } + out.SubscriptionID = in.SubscriptionID + out.TenantID = in.TenantID + out.ResourceGroupName = in.ResourceGroupName + out.HostedZoneName = in.HostedZoneName + out.Environment = v1alpha1.AzureDNSEnvironment(in.Environment) + return nil +} + +// Convert_certmanager_ACMEIssuerDNS01ProviderAzureDNS_To_v1alpha1_ACMEIssuerDNS01ProviderAzureDNS is an autogenerated conversion function. +func Convert_certmanager_ACMEIssuerDNS01ProviderAzureDNS_To_v1alpha1_ACMEIssuerDNS01ProviderAzureDNS(in *certmanager.ACMEIssuerDNS01ProviderAzureDNS, out *v1alpha1.ACMEIssuerDNS01ProviderAzureDNS, s conversion.Scope) error { + return autoConvert_certmanager_ACMEIssuerDNS01ProviderAzureDNS_To_v1alpha1_ACMEIssuerDNS01ProviderAzureDNS(in, out, s) +} + +func autoConvert_v1alpha1_ACMEIssuerDNS01ProviderCloudDNS_To_certmanager_ACMEIssuerDNS01ProviderCloudDNS(in *v1alpha1.ACMEIssuerDNS01ProviderCloudDNS, out *certmanager.ACMEIssuerDNS01ProviderCloudDNS, s conversion.Scope) error { + if err := Convert_v1alpha1_SecretKeySelector_To_certmanager_SecretKeySelector(&in.ServiceAccount, &out.ServiceAccount, s); err != nil { + return err + } + out.Project = in.Project + return nil +} + +// Convert_v1alpha1_ACMEIssuerDNS01ProviderCloudDNS_To_certmanager_ACMEIssuerDNS01ProviderCloudDNS is an autogenerated conversion function. +func Convert_v1alpha1_ACMEIssuerDNS01ProviderCloudDNS_To_certmanager_ACMEIssuerDNS01ProviderCloudDNS(in *v1alpha1.ACMEIssuerDNS01ProviderCloudDNS, out *certmanager.ACMEIssuerDNS01ProviderCloudDNS, s conversion.Scope) error { + return autoConvert_v1alpha1_ACMEIssuerDNS01ProviderCloudDNS_To_certmanager_ACMEIssuerDNS01ProviderCloudDNS(in, out, s) +} + +func autoConvert_certmanager_ACMEIssuerDNS01ProviderCloudDNS_To_v1alpha1_ACMEIssuerDNS01ProviderCloudDNS(in *certmanager.ACMEIssuerDNS01ProviderCloudDNS, out *v1alpha1.ACMEIssuerDNS01ProviderCloudDNS, s conversion.Scope) error { + if err := Convert_certmanager_SecretKeySelector_To_v1alpha1_SecretKeySelector(&in.ServiceAccount, &out.ServiceAccount, s); err != nil { + return err + } + out.Project = in.Project + return nil +} + +// Convert_certmanager_ACMEIssuerDNS01ProviderCloudDNS_To_v1alpha1_ACMEIssuerDNS01ProviderCloudDNS is an autogenerated conversion function. +func Convert_certmanager_ACMEIssuerDNS01ProviderCloudDNS_To_v1alpha1_ACMEIssuerDNS01ProviderCloudDNS(in *certmanager.ACMEIssuerDNS01ProviderCloudDNS, out *v1alpha1.ACMEIssuerDNS01ProviderCloudDNS, s conversion.Scope) error { + return autoConvert_certmanager_ACMEIssuerDNS01ProviderCloudDNS_To_v1alpha1_ACMEIssuerDNS01ProviderCloudDNS(in, out, s) +} + +func autoConvert_v1alpha1_ACMEIssuerDNS01ProviderCloudflare_To_certmanager_ACMEIssuerDNS01ProviderCloudflare(in *v1alpha1.ACMEIssuerDNS01ProviderCloudflare, out *certmanager.ACMEIssuerDNS01ProviderCloudflare, s conversion.Scope) error { + out.Email = in.Email + if err := Convert_v1alpha1_SecretKeySelector_To_certmanager_SecretKeySelector(&in.APIKey, &out.APIKey, s); err != nil { + return err + } + return nil +} + +// Convert_v1alpha1_ACMEIssuerDNS01ProviderCloudflare_To_certmanager_ACMEIssuerDNS01ProviderCloudflare is an autogenerated conversion function. +func Convert_v1alpha1_ACMEIssuerDNS01ProviderCloudflare_To_certmanager_ACMEIssuerDNS01ProviderCloudflare(in *v1alpha1.ACMEIssuerDNS01ProviderCloudflare, out *certmanager.ACMEIssuerDNS01ProviderCloudflare, s conversion.Scope) error { + return autoConvert_v1alpha1_ACMEIssuerDNS01ProviderCloudflare_To_certmanager_ACMEIssuerDNS01ProviderCloudflare(in, out, s) +} + +func autoConvert_certmanager_ACMEIssuerDNS01ProviderCloudflare_To_v1alpha1_ACMEIssuerDNS01ProviderCloudflare(in *certmanager.ACMEIssuerDNS01ProviderCloudflare, out *v1alpha1.ACMEIssuerDNS01ProviderCloudflare, s conversion.Scope) error { + out.Email = in.Email + if err := Convert_certmanager_SecretKeySelector_To_v1alpha1_SecretKeySelector(&in.APIKey, &out.APIKey, s); err != nil { + return err + } + return nil +} + +// Convert_certmanager_ACMEIssuerDNS01ProviderCloudflare_To_v1alpha1_ACMEIssuerDNS01ProviderCloudflare is an autogenerated conversion function. +func Convert_certmanager_ACMEIssuerDNS01ProviderCloudflare_To_v1alpha1_ACMEIssuerDNS01ProviderCloudflare(in *certmanager.ACMEIssuerDNS01ProviderCloudflare, out *v1alpha1.ACMEIssuerDNS01ProviderCloudflare, s conversion.Scope) error { + return autoConvert_certmanager_ACMEIssuerDNS01ProviderCloudflare_To_v1alpha1_ACMEIssuerDNS01ProviderCloudflare(in, out, s) +} + +func autoConvert_v1alpha1_ACMEIssuerDNS01ProviderDigitalOcean_To_certmanager_ACMEIssuerDNS01ProviderDigitalOcean(in *v1alpha1.ACMEIssuerDNS01ProviderDigitalOcean, out *certmanager.ACMEIssuerDNS01ProviderDigitalOcean, s conversion.Scope) error { + if err := Convert_v1alpha1_SecretKeySelector_To_certmanager_SecretKeySelector(&in.Token, &out.Token, s); err != nil { + return err + } + return nil +} + +// Convert_v1alpha1_ACMEIssuerDNS01ProviderDigitalOcean_To_certmanager_ACMEIssuerDNS01ProviderDigitalOcean is an autogenerated conversion function. +func Convert_v1alpha1_ACMEIssuerDNS01ProviderDigitalOcean_To_certmanager_ACMEIssuerDNS01ProviderDigitalOcean(in *v1alpha1.ACMEIssuerDNS01ProviderDigitalOcean, out *certmanager.ACMEIssuerDNS01ProviderDigitalOcean, s conversion.Scope) error { + return autoConvert_v1alpha1_ACMEIssuerDNS01ProviderDigitalOcean_To_certmanager_ACMEIssuerDNS01ProviderDigitalOcean(in, out, s) +} + +func autoConvert_certmanager_ACMEIssuerDNS01ProviderDigitalOcean_To_v1alpha1_ACMEIssuerDNS01ProviderDigitalOcean(in *certmanager.ACMEIssuerDNS01ProviderDigitalOcean, out *v1alpha1.ACMEIssuerDNS01ProviderDigitalOcean, s conversion.Scope) error { + if err := Convert_certmanager_SecretKeySelector_To_v1alpha1_SecretKeySelector(&in.Token, &out.Token, s); err != nil { + return err + } + return nil +} + +// Convert_certmanager_ACMEIssuerDNS01ProviderDigitalOcean_To_v1alpha1_ACMEIssuerDNS01ProviderDigitalOcean is an autogenerated conversion function. +func Convert_certmanager_ACMEIssuerDNS01ProviderDigitalOcean_To_v1alpha1_ACMEIssuerDNS01ProviderDigitalOcean(in *certmanager.ACMEIssuerDNS01ProviderDigitalOcean, out *v1alpha1.ACMEIssuerDNS01ProviderDigitalOcean, s conversion.Scope) error { + return autoConvert_certmanager_ACMEIssuerDNS01ProviderDigitalOcean_To_v1alpha1_ACMEIssuerDNS01ProviderDigitalOcean(in, out, s) +} + +func autoConvert_v1alpha1_ACMEIssuerDNS01ProviderRFC2136_To_certmanager_ACMEIssuerDNS01ProviderRFC2136(in *v1alpha1.ACMEIssuerDNS01ProviderRFC2136, out *certmanager.ACMEIssuerDNS01ProviderRFC2136, s conversion.Scope) error { + out.Nameserver = in.Nameserver + if err := Convert_v1alpha1_SecretKeySelector_To_certmanager_SecretKeySelector(&in.TSIGSecret, &out.TSIGSecret, s); err != nil { + return err + } + out.TSIGKeyName = in.TSIGKeyName + out.TSIGAlgorithm = in.TSIGAlgorithm + return nil +} + +// Convert_v1alpha1_ACMEIssuerDNS01ProviderRFC2136_To_certmanager_ACMEIssuerDNS01ProviderRFC2136 is an autogenerated conversion function. +func Convert_v1alpha1_ACMEIssuerDNS01ProviderRFC2136_To_certmanager_ACMEIssuerDNS01ProviderRFC2136(in *v1alpha1.ACMEIssuerDNS01ProviderRFC2136, out *certmanager.ACMEIssuerDNS01ProviderRFC2136, s conversion.Scope) error { + return autoConvert_v1alpha1_ACMEIssuerDNS01ProviderRFC2136_To_certmanager_ACMEIssuerDNS01ProviderRFC2136(in, out, s) +} + +func autoConvert_certmanager_ACMEIssuerDNS01ProviderRFC2136_To_v1alpha1_ACMEIssuerDNS01ProviderRFC2136(in *certmanager.ACMEIssuerDNS01ProviderRFC2136, out *v1alpha1.ACMEIssuerDNS01ProviderRFC2136, s conversion.Scope) error { + out.Nameserver = in.Nameserver + if err := Convert_certmanager_SecretKeySelector_To_v1alpha1_SecretKeySelector(&in.TSIGSecret, &out.TSIGSecret, s); err != nil { + return err + } + out.TSIGKeyName = in.TSIGKeyName + out.TSIGAlgorithm = in.TSIGAlgorithm + return nil +} + +// Convert_certmanager_ACMEIssuerDNS01ProviderRFC2136_To_v1alpha1_ACMEIssuerDNS01ProviderRFC2136 is an autogenerated conversion function. +func Convert_certmanager_ACMEIssuerDNS01ProviderRFC2136_To_v1alpha1_ACMEIssuerDNS01ProviderRFC2136(in *certmanager.ACMEIssuerDNS01ProviderRFC2136, out *v1alpha1.ACMEIssuerDNS01ProviderRFC2136, s conversion.Scope) error { + return autoConvert_certmanager_ACMEIssuerDNS01ProviderRFC2136_To_v1alpha1_ACMEIssuerDNS01ProviderRFC2136(in, out, s) +} + +func autoConvert_v1alpha1_ACMEIssuerDNS01ProviderRoute53_To_certmanager_ACMEIssuerDNS01ProviderRoute53(in *v1alpha1.ACMEIssuerDNS01ProviderRoute53, out *certmanager.ACMEIssuerDNS01ProviderRoute53, s conversion.Scope) error { + out.AccessKeyID = in.AccessKeyID + if err := Convert_v1alpha1_SecretKeySelector_To_certmanager_SecretKeySelector(&in.SecretAccessKey, &out.SecretAccessKey, s); err != nil { + return err + } + out.Role = in.Role + out.HostedZoneID = in.HostedZoneID + out.Region = in.Region + return nil +} + +// Convert_v1alpha1_ACMEIssuerDNS01ProviderRoute53_To_certmanager_ACMEIssuerDNS01ProviderRoute53 is an autogenerated conversion function. +func Convert_v1alpha1_ACMEIssuerDNS01ProviderRoute53_To_certmanager_ACMEIssuerDNS01ProviderRoute53(in *v1alpha1.ACMEIssuerDNS01ProviderRoute53, out *certmanager.ACMEIssuerDNS01ProviderRoute53, s conversion.Scope) error { + return autoConvert_v1alpha1_ACMEIssuerDNS01ProviderRoute53_To_certmanager_ACMEIssuerDNS01ProviderRoute53(in, out, s) +} + +func autoConvert_certmanager_ACMEIssuerDNS01ProviderRoute53_To_v1alpha1_ACMEIssuerDNS01ProviderRoute53(in *certmanager.ACMEIssuerDNS01ProviderRoute53, out *v1alpha1.ACMEIssuerDNS01ProviderRoute53, s conversion.Scope) error { + out.AccessKeyID = in.AccessKeyID + if err := Convert_certmanager_SecretKeySelector_To_v1alpha1_SecretKeySelector(&in.SecretAccessKey, &out.SecretAccessKey, s); err != nil { + return err + } + out.Role = in.Role + out.HostedZoneID = in.HostedZoneID + out.Region = in.Region + return nil +} + +// Convert_certmanager_ACMEIssuerDNS01ProviderRoute53_To_v1alpha1_ACMEIssuerDNS01ProviderRoute53 is an autogenerated conversion function. +func Convert_certmanager_ACMEIssuerDNS01ProviderRoute53_To_v1alpha1_ACMEIssuerDNS01ProviderRoute53(in *certmanager.ACMEIssuerDNS01ProviderRoute53, out *v1alpha1.ACMEIssuerDNS01ProviderRoute53, s conversion.Scope) error { + return autoConvert_certmanager_ACMEIssuerDNS01ProviderRoute53_To_v1alpha1_ACMEIssuerDNS01ProviderRoute53(in, out, s) +} + +func autoConvert_v1alpha1_ACMEIssuerDNS01ProviderWebhook_To_certmanager_ACMEIssuerDNS01ProviderWebhook(in *v1alpha1.ACMEIssuerDNS01ProviderWebhook, out *certmanager.ACMEIssuerDNS01ProviderWebhook, s conversion.Scope) error { + out.GroupName = in.GroupName + out.SolverName = in.SolverName + out.Config = (*v1beta1.JSON)(unsafe.Pointer(in.Config)) + return nil +} + +// Convert_v1alpha1_ACMEIssuerDNS01ProviderWebhook_To_certmanager_ACMEIssuerDNS01ProviderWebhook is an autogenerated conversion function. +func Convert_v1alpha1_ACMEIssuerDNS01ProviderWebhook_To_certmanager_ACMEIssuerDNS01ProviderWebhook(in *v1alpha1.ACMEIssuerDNS01ProviderWebhook, out *certmanager.ACMEIssuerDNS01ProviderWebhook, s conversion.Scope) error { + return autoConvert_v1alpha1_ACMEIssuerDNS01ProviderWebhook_To_certmanager_ACMEIssuerDNS01ProviderWebhook(in, out, s) +} + +func autoConvert_certmanager_ACMEIssuerDNS01ProviderWebhook_To_v1alpha1_ACMEIssuerDNS01ProviderWebhook(in *certmanager.ACMEIssuerDNS01ProviderWebhook, out *v1alpha1.ACMEIssuerDNS01ProviderWebhook, s conversion.Scope) error { + out.GroupName = in.GroupName + out.SolverName = in.SolverName + out.Config = (*v1beta1.JSON)(unsafe.Pointer(in.Config)) + return nil +} + +// Convert_certmanager_ACMEIssuerDNS01ProviderWebhook_To_v1alpha1_ACMEIssuerDNS01ProviderWebhook is an autogenerated conversion function. +func Convert_certmanager_ACMEIssuerDNS01ProviderWebhook_To_v1alpha1_ACMEIssuerDNS01ProviderWebhook(in *certmanager.ACMEIssuerDNS01ProviderWebhook, out *v1alpha1.ACMEIssuerDNS01ProviderWebhook, s conversion.Scope) error { + return autoConvert_certmanager_ACMEIssuerDNS01ProviderWebhook_To_v1alpha1_ACMEIssuerDNS01ProviderWebhook(in, out, s) +} + +func autoConvert_v1alpha1_ACMEIssuerStatus_To_certmanager_ACMEIssuerStatus(in *v1alpha1.ACMEIssuerStatus, out *certmanager.ACMEIssuerStatus, s conversion.Scope) error { + out.URI = in.URI + out.LastRegisteredEmail = in.LastRegisteredEmail + return nil +} + +// Convert_v1alpha1_ACMEIssuerStatus_To_certmanager_ACMEIssuerStatus is an autogenerated conversion function. +func Convert_v1alpha1_ACMEIssuerStatus_To_certmanager_ACMEIssuerStatus(in *v1alpha1.ACMEIssuerStatus, out *certmanager.ACMEIssuerStatus, s conversion.Scope) error { + return autoConvert_v1alpha1_ACMEIssuerStatus_To_certmanager_ACMEIssuerStatus(in, out, s) +} + +func autoConvert_certmanager_ACMEIssuerStatus_To_v1alpha1_ACMEIssuerStatus(in *certmanager.ACMEIssuerStatus, out *v1alpha1.ACMEIssuerStatus, s conversion.Scope) error { + out.URI = in.URI + out.LastRegisteredEmail = in.LastRegisteredEmail + return nil +} + +// Convert_certmanager_ACMEIssuerStatus_To_v1alpha1_ACMEIssuerStatus is an autogenerated conversion function. +func Convert_certmanager_ACMEIssuerStatus_To_v1alpha1_ACMEIssuerStatus(in *certmanager.ACMEIssuerStatus, out *v1alpha1.ACMEIssuerStatus, s conversion.Scope) error { + return autoConvert_certmanager_ACMEIssuerStatus_To_v1alpha1_ACMEIssuerStatus(in, out, s) +} + +func autoConvert_v1alpha1_CAIssuer_To_certmanager_CAIssuer(in *v1alpha1.CAIssuer, out *certmanager.CAIssuer, s conversion.Scope) error { + out.SecretName = in.SecretName + return nil +} + +// Convert_v1alpha1_CAIssuer_To_certmanager_CAIssuer is an autogenerated conversion function. +func Convert_v1alpha1_CAIssuer_To_certmanager_CAIssuer(in *v1alpha1.CAIssuer, out *certmanager.CAIssuer, s conversion.Scope) error { + return autoConvert_v1alpha1_CAIssuer_To_certmanager_CAIssuer(in, out, s) +} + +func autoConvert_certmanager_CAIssuer_To_v1alpha1_CAIssuer(in *certmanager.CAIssuer, out *v1alpha1.CAIssuer, s conversion.Scope) error { + out.SecretName = in.SecretName + return nil +} + +// Convert_certmanager_CAIssuer_To_v1alpha1_CAIssuer is an autogenerated conversion function. +func Convert_certmanager_CAIssuer_To_v1alpha1_CAIssuer(in *certmanager.CAIssuer, out *v1alpha1.CAIssuer, s conversion.Scope) error { + return autoConvert_certmanager_CAIssuer_To_v1alpha1_CAIssuer(in, out, s) +} + +func autoConvert_v1alpha1_Certificate_To_certmanager_Certificate(in *v1alpha1.Certificate, out *certmanager.Certificate, s conversion.Scope) error { + out.ObjectMeta = in.ObjectMeta + if err := Convert_v1alpha1_CertificateSpec_To_certmanager_CertificateSpec(&in.Spec, &out.Spec, s); err != nil { + return err + } + if err := Convert_v1alpha1_CertificateStatus_To_certmanager_CertificateStatus(&in.Status, &out.Status, s); err != nil { + return err + } + return nil +} + +// Convert_v1alpha1_Certificate_To_certmanager_Certificate is an autogenerated conversion function. +func Convert_v1alpha1_Certificate_To_certmanager_Certificate(in *v1alpha1.Certificate, out *certmanager.Certificate, s conversion.Scope) error { + return autoConvert_v1alpha1_Certificate_To_certmanager_Certificate(in, out, s) +} + +func autoConvert_certmanager_Certificate_To_v1alpha1_Certificate(in *certmanager.Certificate, out *v1alpha1.Certificate, s conversion.Scope) error { + out.ObjectMeta = in.ObjectMeta + if err := Convert_certmanager_CertificateSpec_To_v1alpha1_CertificateSpec(&in.Spec, &out.Spec, s); err != nil { + return err + } + if err := Convert_certmanager_CertificateStatus_To_v1alpha1_CertificateStatus(&in.Status, &out.Status, s); err != nil { + return err + } + return nil +} + +// Convert_certmanager_Certificate_To_v1alpha1_Certificate is an autogenerated conversion function. +func Convert_certmanager_Certificate_To_v1alpha1_Certificate(in *certmanager.Certificate, out *v1alpha1.Certificate, s conversion.Scope) error { + return autoConvert_certmanager_Certificate_To_v1alpha1_Certificate(in, out, s) +} + +func autoConvert_v1alpha1_CertificateCondition_To_certmanager_CertificateCondition(in *v1alpha1.CertificateCondition, out *certmanager.CertificateCondition, s conversion.Scope) error { + out.Type = certmanager.CertificateConditionType(in.Type) + out.Status = certmanager.ConditionStatus(in.Status) + out.LastTransitionTime = (*metav1.Time)(unsafe.Pointer(in.LastTransitionTime)) + out.Reason = in.Reason + out.Message = in.Message + return nil +} + +// Convert_v1alpha1_CertificateCondition_To_certmanager_CertificateCondition is an autogenerated conversion function. +func Convert_v1alpha1_CertificateCondition_To_certmanager_CertificateCondition(in *v1alpha1.CertificateCondition, out *certmanager.CertificateCondition, s conversion.Scope) error { + return autoConvert_v1alpha1_CertificateCondition_To_certmanager_CertificateCondition(in, out, s) +} + +func autoConvert_certmanager_CertificateCondition_To_v1alpha1_CertificateCondition(in *certmanager.CertificateCondition, out *v1alpha1.CertificateCondition, s conversion.Scope) error { + out.Type = v1alpha1.CertificateConditionType(in.Type) + out.Status = v1alpha1.ConditionStatus(in.Status) + out.LastTransitionTime = (*metav1.Time)(unsafe.Pointer(in.LastTransitionTime)) + out.Reason = in.Reason + out.Message = in.Message + return nil +} + +// Convert_certmanager_CertificateCondition_To_v1alpha1_CertificateCondition is an autogenerated conversion function. +func Convert_certmanager_CertificateCondition_To_v1alpha1_CertificateCondition(in *certmanager.CertificateCondition, out *v1alpha1.CertificateCondition, s conversion.Scope) error { + return autoConvert_certmanager_CertificateCondition_To_v1alpha1_CertificateCondition(in, out, s) +} + +func autoConvert_v1alpha1_CertificateDNSNameSelector_To_certmanager_CertificateDNSNameSelector(in *v1alpha1.CertificateDNSNameSelector, out *certmanager.CertificateDNSNameSelector, s conversion.Scope) error { + out.MatchLabels = *(*map[string]string)(unsafe.Pointer(&in.MatchLabels)) + out.DNSNames = *(*[]string)(unsafe.Pointer(&in.DNSNames)) + out.DNSZones = *(*[]string)(unsafe.Pointer(&in.DNSZones)) + return nil +} + +// Convert_v1alpha1_CertificateDNSNameSelector_To_certmanager_CertificateDNSNameSelector is an autogenerated conversion function. +func Convert_v1alpha1_CertificateDNSNameSelector_To_certmanager_CertificateDNSNameSelector(in *v1alpha1.CertificateDNSNameSelector, out *certmanager.CertificateDNSNameSelector, s conversion.Scope) error { + return autoConvert_v1alpha1_CertificateDNSNameSelector_To_certmanager_CertificateDNSNameSelector(in, out, s) +} + +func autoConvert_certmanager_CertificateDNSNameSelector_To_v1alpha1_CertificateDNSNameSelector(in *certmanager.CertificateDNSNameSelector, out *v1alpha1.CertificateDNSNameSelector, s conversion.Scope) error { + out.MatchLabels = *(*map[string]string)(unsafe.Pointer(&in.MatchLabels)) + out.DNSNames = *(*[]string)(unsafe.Pointer(&in.DNSNames)) + out.DNSZones = *(*[]string)(unsafe.Pointer(&in.DNSZones)) + return nil +} + +// Convert_certmanager_CertificateDNSNameSelector_To_v1alpha1_CertificateDNSNameSelector is an autogenerated conversion function. +func Convert_certmanager_CertificateDNSNameSelector_To_v1alpha1_CertificateDNSNameSelector(in *certmanager.CertificateDNSNameSelector, out *v1alpha1.CertificateDNSNameSelector, s conversion.Scope) error { + return autoConvert_certmanager_CertificateDNSNameSelector_To_v1alpha1_CertificateDNSNameSelector(in, out, s) +} + +func autoConvert_v1alpha1_CertificateList_To_certmanager_CertificateList(in *v1alpha1.CertificateList, out *certmanager.CertificateList, s conversion.Scope) error { + out.ListMeta = in.ListMeta + out.Items = *(*[]certmanager.Certificate)(unsafe.Pointer(&in.Items)) + return nil +} + +// Convert_v1alpha1_CertificateList_To_certmanager_CertificateList is an autogenerated conversion function. +func Convert_v1alpha1_CertificateList_To_certmanager_CertificateList(in *v1alpha1.CertificateList, out *certmanager.CertificateList, s conversion.Scope) error { + return autoConvert_v1alpha1_CertificateList_To_certmanager_CertificateList(in, out, s) +} + +func autoConvert_certmanager_CertificateList_To_v1alpha1_CertificateList(in *certmanager.CertificateList, out *v1alpha1.CertificateList, s conversion.Scope) error { + out.ListMeta = in.ListMeta + out.Items = *(*[]v1alpha1.Certificate)(unsafe.Pointer(&in.Items)) + return nil +} + +// Convert_certmanager_CertificateList_To_v1alpha1_CertificateList is an autogenerated conversion function. +func Convert_certmanager_CertificateList_To_v1alpha1_CertificateList(in *certmanager.CertificateList, out *v1alpha1.CertificateList, s conversion.Scope) error { + return autoConvert_certmanager_CertificateList_To_v1alpha1_CertificateList(in, out, s) +} + +func autoConvert_v1alpha1_CertificateRequest_To_certmanager_CertificateRequest(in *v1alpha1.CertificateRequest, out *certmanager.CertificateRequest, s conversion.Scope) error { + out.ObjectMeta = in.ObjectMeta + if err := Convert_v1alpha1_CertificateRequestSpec_To_certmanager_CertificateRequestSpec(&in.Spec, &out.Spec, s); err != nil { + return err + } + if err := Convert_v1alpha1_CertificateRequestStatus_To_certmanager_CertificateRequestStatus(&in.Status, &out.Status, s); err != nil { + return err + } + return nil +} + +// Convert_v1alpha1_CertificateRequest_To_certmanager_CertificateRequest is an autogenerated conversion function. +func Convert_v1alpha1_CertificateRequest_To_certmanager_CertificateRequest(in *v1alpha1.CertificateRequest, out *certmanager.CertificateRequest, s conversion.Scope) error { + return autoConvert_v1alpha1_CertificateRequest_To_certmanager_CertificateRequest(in, out, s) +} + +func autoConvert_certmanager_CertificateRequest_To_v1alpha1_CertificateRequest(in *certmanager.CertificateRequest, out *v1alpha1.CertificateRequest, s conversion.Scope) error { + out.ObjectMeta = in.ObjectMeta + if err := Convert_certmanager_CertificateRequestSpec_To_v1alpha1_CertificateRequestSpec(&in.Spec, &out.Spec, s); err != nil { + return err + } + if err := Convert_certmanager_CertificateRequestStatus_To_v1alpha1_CertificateRequestStatus(&in.Status, &out.Status, s); err != nil { + return err + } + return nil +} + +// Convert_certmanager_CertificateRequest_To_v1alpha1_CertificateRequest is an autogenerated conversion function. +func Convert_certmanager_CertificateRequest_To_v1alpha1_CertificateRequest(in *certmanager.CertificateRequest, out *v1alpha1.CertificateRequest, s conversion.Scope) error { + return autoConvert_certmanager_CertificateRequest_To_v1alpha1_CertificateRequest(in, out, s) +} + +func autoConvert_v1alpha1_CertificateRequestCondition_To_certmanager_CertificateRequestCondition(in *v1alpha1.CertificateRequestCondition, out *certmanager.CertificateRequestCondition, s conversion.Scope) error { + out.Type = certmanager.CertificateRequestConditionType(in.Type) + out.Status = certmanager.ConditionStatus(in.Status) + out.LastTransitionTime = (*metav1.Time)(unsafe.Pointer(in.LastTransitionTime)) + out.Reason = in.Reason + out.Message = in.Message + return nil +} + +// Convert_v1alpha1_CertificateRequestCondition_To_certmanager_CertificateRequestCondition is an autogenerated conversion function. +func Convert_v1alpha1_CertificateRequestCondition_To_certmanager_CertificateRequestCondition(in *v1alpha1.CertificateRequestCondition, out *certmanager.CertificateRequestCondition, s conversion.Scope) error { + return autoConvert_v1alpha1_CertificateRequestCondition_To_certmanager_CertificateRequestCondition(in, out, s) +} + +func autoConvert_certmanager_CertificateRequestCondition_To_v1alpha1_CertificateRequestCondition(in *certmanager.CertificateRequestCondition, out *v1alpha1.CertificateRequestCondition, s conversion.Scope) error { + out.Type = v1alpha1.CertificateRequestConditionType(in.Type) + out.Status = v1alpha1.ConditionStatus(in.Status) + out.LastTransitionTime = (*metav1.Time)(unsafe.Pointer(in.LastTransitionTime)) + out.Reason = in.Reason + out.Message = in.Message + return nil +} + +// Convert_certmanager_CertificateRequestCondition_To_v1alpha1_CertificateRequestCondition is an autogenerated conversion function. +func Convert_certmanager_CertificateRequestCondition_To_v1alpha1_CertificateRequestCondition(in *certmanager.CertificateRequestCondition, out *v1alpha1.CertificateRequestCondition, s conversion.Scope) error { + return autoConvert_certmanager_CertificateRequestCondition_To_v1alpha1_CertificateRequestCondition(in, out, s) +} + +func autoConvert_v1alpha1_CertificateRequestList_To_certmanager_CertificateRequestList(in *v1alpha1.CertificateRequestList, out *certmanager.CertificateRequestList, s conversion.Scope) error { + out.ListMeta = in.ListMeta + out.Items = *(*[]certmanager.CertificateRequest)(unsafe.Pointer(&in.Items)) + return nil +} + +// Convert_v1alpha1_CertificateRequestList_To_certmanager_CertificateRequestList is an autogenerated conversion function. +func Convert_v1alpha1_CertificateRequestList_To_certmanager_CertificateRequestList(in *v1alpha1.CertificateRequestList, out *certmanager.CertificateRequestList, s conversion.Scope) error { + return autoConvert_v1alpha1_CertificateRequestList_To_certmanager_CertificateRequestList(in, out, s) +} + +func autoConvert_certmanager_CertificateRequestList_To_v1alpha1_CertificateRequestList(in *certmanager.CertificateRequestList, out *v1alpha1.CertificateRequestList, s conversion.Scope) error { + out.ListMeta = in.ListMeta + out.Items = *(*[]v1alpha1.CertificateRequest)(unsafe.Pointer(&in.Items)) + return nil +} + +// Convert_certmanager_CertificateRequestList_To_v1alpha1_CertificateRequestList is an autogenerated conversion function. +func Convert_certmanager_CertificateRequestList_To_v1alpha1_CertificateRequestList(in *certmanager.CertificateRequestList, out *v1alpha1.CertificateRequestList, s conversion.Scope) error { + return autoConvert_certmanager_CertificateRequestList_To_v1alpha1_CertificateRequestList(in, out, s) +} + +func autoConvert_v1alpha1_CertificateRequestSpec_To_certmanager_CertificateRequestSpec(in *v1alpha1.CertificateRequestSpec, out *certmanager.CertificateRequestSpec, s conversion.Scope) error { + out.Duration = (*metav1.Duration)(unsafe.Pointer(in.Duration)) + if err := Convert_v1alpha1_ObjectReference_To_certmanager_ObjectReference(&in.IssuerRef, &out.IssuerRef, s); err != nil { + return err + } + out.CSRPEM = *(*[]byte)(unsafe.Pointer(&in.CSRPEM)) + out.IsCA = in.IsCA + out.Usages = *(*[]certmanager.KeyUsage)(unsafe.Pointer(&in.Usages)) + return nil +} + +// Convert_v1alpha1_CertificateRequestSpec_To_certmanager_CertificateRequestSpec is an autogenerated conversion function. +func Convert_v1alpha1_CertificateRequestSpec_To_certmanager_CertificateRequestSpec(in *v1alpha1.CertificateRequestSpec, out *certmanager.CertificateRequestSpec, s conversion.Scope) error { + return autoConvert_v1alpha1_CertificateRequestSpec_To_certmanager_CertificateRequestSpec(in, out, s) +} + +func autoConvert_certmanager_CertificateRequestSpec_To_v1alpha1_CertificateRequestSpec(in *certmanager.CertificateRequestSpec, out *v1alpha1.CertificateRequestSpec, s conversion.Scope) error { + out.Duration = (*metav1.Duration)(unsafe.Pointer(in.Duration)) + if err := Convert_certmanager_ObjectReference_To_v1alpha1_ObjectReference(&in.IssuerRef, &out.IssuerRef, s); err != nil { + return err + } + out.CSRPEM = *(*[]byte)(unsafe.Pointer(&in.CSRPEM)) + out.IsCA = in.IsCA + out.Usages = *(*[]v1alpha1.KeyUsage)(unsafe.Pointer(&in.Usages)) + return nil +} + +// Convert_certmanager_CertificateRequestSpec_To_v1alpha1_CertificateRequestSpec is an autogenerated conversion function. +func Convert_certmanager_CertificateRequestSpec_To_v1alpha1_CertificateRequestSpec(in *certmanager.CertificateRequestSpec, out *v1alpha1.CertificateRequestSpec, s conversion.Scope) error { + return autoConvert_certmanager_CertificateRequestSpec_To_v1alpha1_CertificateRequestSpec(in, out, s) +} + +func autoConvert_v1alpha1_CertificateRequestStatus_To_certmanager_CertificateRequestStatus(in *v1alpha1.CertificateRequestStatus, out *certmanager.CertificateRequestStatus, s conversion.Scope) error { + out.Conditions = *(*[]certmanager.CertificateRequestCondition)(unsafe.Pointer(&in.Conditions)) + out.Certificate = *(*[]byte)(unsafe.Pointer(&in.Certificate)) + out.CA = *(*[]byte)(unsafe.Pointer(&in.CA)) + out.FailureTime = (*metav1.Time)(unsafe.Pointer(in.FailureTime)) + return nil +} + +// Convert_v1alpha1_CertificateRequestStatus_To_certmanager_CertificateRequestStatus is an autogenerated conversion function. +func Convert_v1alpha1_CertificateRequestStatus_To_certmanager_CertificateRequestStatus(in *v1alpha1.CertificateRequestStatus, out *certmanager.CertificateRequestStatus, s conversion.Scope) error { + return autoConvert_v1alpha1_CertificateRequestStatus_To_certmanager_CertificateRequestStatus(in, out, s) +} + +func autoConvert_certmanager_CertificateRequestStatus_To_v1alpha1_CertificateRequestStatus(in *certmanager.CertificateRequestStatus, out *v1alpha1.CertificateRequestStatus, s conversion.Scope) error { + out.Conditions = *(*[]v1alpha1.CertificateRequestCondition)(unsafe.Pointer(&in.Conditions)) + out.Certificate = *(*[]byte)(unsafe.Pointer(&in.Certificate)) + out.CA = *(*[]byte)(unsafe.Pointer(&in.CA)) + out.FailureTime = (*metav1.Time)(unsafe.Pointer(in.FailureTime)) + return nil +} + +// Convert_certmanager_CertificateRequestStatus_To_v1alpha1_CertificateRequestStatus is an autogenerated conversion function. +func Convert_certmanager_CertificateRequestStatus_To_v1alpha1_CertificateRequestStatus(in *certmanager.CertificateRequestStatus, out *v1alpha1.CertificateRequestStatus, s conversion.Scope) error { + return autoConvert_certmanager_CertificateRequestStatus_To_v1alpha1_CertificateRequestStatus(in, out, s) +} + +func autoConvert_v1alpha1_CertificateSpec_To_certmanager_CertificateSpec(in *v1alpha1.CertificateSpec, out *certmanager.CertificateSpec, s conversion.Scope) error { + out.CommonName = in.CommonName + out.Organization = *(*[]string)(unsafe.Pointer(&in.Organization)) + out.Duration = (*metav1.Duration)(unsafe.Pointer(in.Duration)) + out.RenewBefore = (*metav1.Duration)(unsafe.Pointer(in.RenewBefore)) + out.DNSNames = *(*[]string)(unsafe.Pointer(&in.DNSNames)) + out.IPAddresses = *(*[]string)(unsafe.Pointer(&in.IPAddresses)) + out.URISANs = *(*[]string)(unsafe.Pointer(&in.URISANs)) + out.SecretName = in.SecretName + if err := Convert_v1alpha1_ObjectReference_To_certmanager_ObjectReference(&in.IssuerRef, &out.IssuerRef, s); err != nil { + return err + } + out.IsCA = in.IsCA + out.Usages = *(*[]certmanager.KeyUsage)(unsafe.Pointer(&in.Usages)) + out.KeySize = in.KeySize + out.KeyAlgorithm = certmanager.KeyAlgorithm(in.KeyAlgorithm) + out.KeyEncoding = certmanager.KeyEncoding(in.KeyEncoding) + return nil +} + +// Convert_v1alpha1_CertificateSpec_To_certmanager_CertificateSpec is an autogenerated conversion function. +func Convert_v1alpha1_CertificateSpec_To_certmanager_CertificateSpec(in *v1alpha1.CertificateSpec, out *certmanager.CertificateSpec, s conversion.Scope) error { + return autoConvert_v1alpha1_CertificateSpec_To_certmanager_CertificateSpec(in, out, s) +} + +func autoConvert_certmanager_CertificateSpec_To_v1alpha1_CertificateSpec(in *certmanager.CertificateSpec, out *v1alpha1.CertificateSpec, s conversion.Scope) error { + out.CommonName = in.CommonName + out.Organization = *(*[]string)(unsafe.Pointer(&in.Organization)) + out.Duration = (*metav1.Duration)(unsafe.Pointer(in.Duration)) + out.RenewBefore = (*metav1.Duration)(unsafe.Pointer(in.RenewBefore)) + out.DNSNames = *(*[]string)(unsafe.Pointer(&in.DNSNames)) + out.IPAddresses = *(*[]string)(unsafe.Pointer(&in.IPAddresses)) + out.URISANs = *(*[]string)(unsafe.Pointer(&in.URISANs)) + out.SecretName = in.SecretName + if err := Convert_certmanager_ObjectReference_To_v1alpha1_ObjectReference(&in.IssuerRef, &out.IssuerRef, s); err != nil { + return err + } + out.IsCA = in.IsCA + out.Usages = *(*[]v1alpha1.KeyUsage)(unsafe.Pointer(&in.Usages)) + out.KeySize = in.KeySize + out.KeyAlgorithm = v1alpha1.KeyAlgorithm(in.KeyAlgorithm) + out.KeyEncoding = v1alpha1.KeyEncoding(in.KeyEncoding) + return nil +} + +// Convert_certmanager_CertificateSpec_To_v1alpha1_CertificateSpec is an autogenerated conversion function. +func Convert_certmanager_CertificateSpec_To_v1alpha1_CertificateSpec(in *certmanager.CertificateSpec, out *v1alpha1.CertificateSpec, s conversion.Scope) error { + return autoConvert_certmanager_CertificateSpec_To_v1alpha1_CertificateSpec(in, out, s) +} + +func autoConvert_v1alpha1_CertificateStatus_To_certmanager_CertificateStatus(in *v1alpha1.CertificateStatus, out *certmanager.CertificateStatus, s conversion.Scope) error { + out.Conditions = *(*[]certmanager.CertificateCondition)(unsafe.Pointer(&in.Conditions)) + out.LastFailureTime = (*metav1.Time)(unsafe.Pointer(in.LastFailureTime)) + out.NotAfter = (*metav1.Time)(unsafe.Pointer(in.NotAfter)) + return nil +} + +// Convert_v1alpha1_CertificateStatus_To_certmanager_CertificateStatus is an autogenerated conversion function. +func Convert_v1alpha1_CertificateStatus_To_certmanager_CertificateStatus(in *v1alpha1.CertificateStatus, out *certmanager.CertificateStatus, s conversion.Scope) error { + return autoConvert_v1alpha1_CertificateStatus_To_certmanager_CertificateStatus(in, out, s) +} + +func autoConvert_certmanager_CertificateStatus_To_v1alpha1_CertificateStatus(in *certmanager.CertificateStatus, out *v1alpha1.CertificateStatus, s conversion.Scope) error { + out.Conditions = *(*[]v1alpha1.CertificateCondition)(unsafe.Pointer(&in.Conditions)) + out.LastFailureTime = (*metav1.Time)(unsafe.Pointer(in.LastFailureTime)) + out.NotAfter = (*metav1.Time)(unsafe.Pointer(in.NotAfter)) + return nil +} + +// Convert_certmanager_CertificateStatus_To_v1alpha1_CertificateStatus is an autogenerated conversion function. +func Convert_certmanager_CertificateStatus_To_v1alpha1_CertificateStatus(in *certmanager.CertificateStatus, out *v1alpha1.CertificateStatus, s conversion.Scope) error { + return autoConvert_certmanager_CertificateStatus_To_v1alpha1_CertificateStatus(in, out, s) +} + +func autoConvert_v1alpha1_Challenge_To_certmanager_Challenge(in *v1alpha1.Challenge, out *certmanager.Challenge, s conversion.Scope) error { + out.ObjectMeta = in.ObjectMeta + if err := Convert_v1alpha1_ChallengeSpec_To_certmanager_ChallengeSpec(&in.Spec, &out.Spec, s); err != nil { + return err + } + if err := Convert_v1alpha1_ChallengeStatus_To_certmanager_ChallengeStatus(&in.Status, &out.Status, s); err != nil { + return err + } + return nil +} + +// Convert_v1alpha1_Challenge_To_certmanager_Challenge is an autogenerated conversion function. +func Convert_v1alpha1_Challenge_To_certmanager_Challenge(in *v1alpha1.Challenge, out *certmanager.Challenge, s conversion.Scope) error { + return autoConvert_v1alpha1_Challenge_To_certmanager_Challenge(in, out, s) +} + +func autoConvert_certmanager_Challenge_To_v1alpha1_Challenge(in *certmanager.Challenge, out *v1alpha1.Challenge, s conversion.Scope) error { + out.ObjectMeta = in.ObjectMeta + if err := Convert_certmanager_ChallengeSpec_To_v1alpha1_ChallengeSpec(&in.Spec, &out.Spec, s); err != nil { + return err + } + if err := Convert_certmanager_ChallengeStatus_To_v1alpha1_ChallengeStatus(&in.Status, &out.Status, s); err != nil { + return err + } + return nil +} + +// Convert_certmanager_Challenge_To_v1alpha1_Challenge is an autogenerated conversion function. +func Convert_certmanager_Challenge_To_v1alpha1_Challenge(in *certmanager.Challenge, out *v1alpha1.Challenge, s conversion.Scope) error { + return autoConvert_certmanager_Challenge_To_v1alpha1_Challenge(in, out, s) +} + +func autoConvert_v1alpha1_ChallengeList_To_certmanager_ChallengeList(in *v1alpha1.ChallengeList, out *certmanager.ChallengeList, s conversion.Scope) error { + out.ListMeta = in.ListMeta + out.Items = *(*[]certmanager.Challenge)(unsafe.Pointer(&in.Items)) + return nil +} + +// Convert_v1alpha1_ChallengeList_To_certmanager_ChallengeList is an autogenerated conversion function. +func Convert_v1alpha1_ChallengeList_To_certmanager_ChallengeList(in *v1alpha1.ChallengeList, out *certmanager.ChallengeList, s conversion.Scope) error { + return autoConvert_v1alpha1_ChallengeList_To_certmanager_ChallengeList(in, out, s) +} + +func autoConvert_certmanager_ChallengeList_To_v1alpha1_ChallengeList(in *certmanager.ChallengeList, out *v1alpha1.ChallengeList, s conversion.Scope) error { + out.ListMeta = in.ListMeta + out.Items = *(*[]v1alpha1.Challenge)(unsafe.Pointer(&in.Items)) + return nil +} + +// Convert_certmanager_ChallengeList_To_v1alpha1_ChallengeList is an autogenerated conversion function. +func Convert_certmanager_ChallengeList_To_v1alpha1_ChallengeList(in *certmanager.ChallengeList, out *v1alpha1.ChallengeList, s conversion.Scope) error { + return autoConvert_certmanager_ChallengeList_To_v1alpha1_ChallengeList(in, out, s) +} + +func autoConvert_v1alpha1_ChallengeSpec_To_certmanager_ChallengeSpec(in *v1alpha1.ChallengeSpec, out *certmanager.ChallengeSpec, s conversion.Scope) error { + out.AuthzURL = in.AuthzURL + out.Type = string(in.Type) + out.URL = in.URL + out.DNSName = in.DNSName + out.Token = in.Token + out.Key = in.Key + out.Wildcard = in.Wildcard + out.Solver = (*certmanager.ACMEChallengeSolver)(unsafe.Pointer(in.Solver)) + if err := Convert_v1alpha1_ObjectReference_To_certmanager_ObjectReference(&in.IssuerRef, &out.IssuerRef, s); err != nil { + return err + } + return nil +} + +// Convert_v1alpha1_ChallengeSpec_To_certmanager_ChallengeSpec is an autogenerated conversion function. +func Convert_v1alpha1_ChallengeSpec_To_certmanager_ChallengeSpec(in *v1alpha1.ChallengeSpec, out *certmanager.ChallengeSpec, s conversion.Scope) error { + return autoConvert_v1alpha1_ChallengeSpec_To_certmanager_ChallengeSpec(in, out, s) +} + +func autoConvert_certmanager_ChallengeSpec_To_v1alpha1_ChallengeSpec(in *certmanager.ChallengeSpec, out *v1alpha1.ChallengeSpec, s conversion.Scope) error { + out.AuthzURL = in.AuthzURL + out.Type = v1alpha1.ACMEChallengeType(in.Type) + out.URL = in.URL + out.DNSName = in.DNSName + out.Token = in.Token + out.Key = in.Key + out.Wildcard = in.Wildcard + out.Solver = (*v1alpha1.ACMEChallengeSolver)(unsafe.Pointer(in.Solver)) + if err := Convert_certmanager_ObjectReference_To_v1alpha1_ObjectReference(&in.IssuerRef, &out.IssuerRef, s); err != nil { + return err + } + return nil +} + +// Convert_certmanager_ChallengeSpec_To_v1alpha1_ChallengeSpec is an autogenerated conversion function. +func Convert_certmanager_ChallengeSpec_To_v1alpha1_ChallengeSpec(in *certmanager.ChallengeSpec, out *v1alpha1.ChallengeSpec, s conversion.Scope) error { + return autoConvert_certmanager_ChallengeSpec_To_v1alpha1_ChallengeSpec(in, out, s) +} + +func autoConvert_v1alpha1_ChallengeStatus_To_certmanager_ChallengeStatus(in *v1alpha1.ChallengeStatus, out *certmanager.ChallengeStatus, s conversion.Scope) error { + out.Processing = in.Processing + out.Presented = in.Presented + out.Reason = in.Reason + out.State = certmanager.State(in.State) + return nil +} + +// Convert_v1alpha1_ChallengeStatus_To_certmanager_ChallengeStatus is an autogenerated conversion function. +func Convert_v1alpha1_ChallengeStatus_To_certmanager_ChallengeStatus(in *v1alpha1.ChallengeStatus, out *certmanager.ChallengeStatus, s conversion.Scope) error { + return autoConvert_v1alpha1_ChallengeStatus_To_certmanager_ChallengeStatus(in, out, s) +} + +func autoConvert_certmanager_ChallengeStatus_To_v1alpha1_ChallengeStatus(in *certmanager.ChallengeStatus, out *v1alpha1.ChallengeStatus, s conversion.Scope) error { + out.Processing = in.Processing + out.Presented = in.Presented + out.Reason = in.Reason + out.State = v1alpha1.State(in.State) + return nil +} + +// Convert_certmanager_ChallengeStatus_To_v1alpha1_ChallengeStatus is an autogenerated conversion function. +func Convert_certmanager_ChallengeStatus_To_v1alpha1_ChallengeStatus(in *certmanager.ChallengeStatus, out *v1alpha1.ChallengeStatus, s conversion.Scope) error { + return autoConvert_certmanager_ChallengeStatus_To_v1alpha1_ChallengeStatus(in, out, s) +} + +func autoConvert_v1alpha1_ClusterIssuer_To_certmanager_ClusterIssuer(in *v1alpha1.ClusterIssuer, out *certmanager.ClusterIssuer, s conversion.Scope) error { + out.ObjectMeta = in.ObjectMeta + if err := Convert_v1alpha1_IssuerSpec_To_certmanager_IssuerSpec(&in.Spec, &out.Spec, s); err != nil { + return err + } + if err := Convert_v1alpha1_IssuerStatus_To_certmanager_IssuerStatus(&in.Status, &out.Status, s); err != nil { + return err + } + return nil +} + +// Convert_v1alpha1_ClusterIssuer_To_certmanager_ClusterIssuer is an autogenerated conversion function. +func Convert_v1alpha1_ClusterIssuer_To_certmanager_ClusterIssuer(in *v1alpha1.ClusterIssuer, out *certmanager.ClusterIssuer, s conversion.Scope) error { + return autoConvert_v1alpha1_ClusterIssuer_To_certmanager_ClusterIssuer(in, out, s) +} + +func autoConvert_certmanager_ClusterIssuer_To_v1alpha1_ClusterIssuer(in *certmanager.ClusterIssuer, out *v1alpha1.ClusterIssuer, s conversion.Scope) error { + out.ObjectMeta = in.ObjectMeta + if err := Convert_certmanager_IssuerSpec_To_v1alpha1_IssuerSpec(&in.Spec, &out.Spec, s); err != nil { + return err + } + if err := Convert_certmanager_IssuerStatus_To_v1alpha1_IssuerStatus(&in.Status, &out.Status, s); err != nil { + return err + } + return nil +} + +// Convert_certmanager_ClusterIssuer_To_v1alpha1_ClusterIssuer is an autogenerated conversion function. +func Convert_certmanager_ClusterIssuer_To_v1alpha1_ClusterIssuer(in *certmanager.ClusterIssuer, out *v1alpha1.ClusterIssuer, s conversion.Scope) error { + return autoConvert_certmanager_ClusterIssuer_To_v1alpha1_ClusterIssuer(in, out, s) +} + +func autoConvert_v1alpha1_ClusterIssuerList_To_certmanager_ClusterIssuerList(in *v1alpha1.ClusterIssuerList, out *certmanager.ClusterIssuerList, s conversion.Scope) error { + out.ListMeta = in.ListMeta + out.Items = *(*[]certmanager.ClusterIssuer)(unsafe.Pointer(&in.Items)) + return nil +} + +// Convert_v1alpha1_ClusterIssuerList_To_certmanager_ClusterIssuerList is an autogenerated conversion function. +func Convert_v1alpha1_ClusterIssuerList_To_certmanager_ClusterIssuerList(in *v1alpha1.ClusterIssuerList, out *certmanager.ClusterIssuerList, s conversion.Scope) error { + return autoConvert_v1alpha1_ClusterIssuerList_To_certmanager_ClusterIssuerList(in, out, s) +} + +func autoConvert_certmanager_ClusterIssuerList_To_v1alpha1_ClusterIssuerList(in *certmanager.ClusterIssuerList, out *v1alpha1.ClusterIssuerList, s conversion.Scope) error { + out.ListMeta = in.ListMeta + out.Items = *(*[]v1alpha1.ClusterIssuer)(unsafe.Pointer(&in.Items)) + return nil +} + +// Convert_certmanager_ClusterIssuerList_To_v1alpha1_ClusterIssuerList is an autogenerated conversion function. +func Convert_certmanager_ClusterIssuerList_To_v1alpha1_ClusterIssuerList(in *certmanager.ClusterIssuerList, out *v1alpha1.ClusterIssuerList, s conversion.Scope) error { + return autoConvert_certmanager_ClusterIssuerList_To_v1alpha1_ClusterIssuerList(in, out, s) +} + +func autoConvert_v1alpha1_Issuer_To_certmanager_Issuer(in *v1alpha1.Issuer, out *certmanager.Issuer, s conversion.Scope) error { + out.ObjectMeta = in.ObjectMeta + if err := Convert_v1alpha1_IssuerSpec_To_certmanager_IssuerSpec(&in.Spec, &out.Spec, s); err != nil { + return err + } + if err := Convert_v1alpha1_IssuerStatus_To_certmanager_IssuerStatus(&in.Status, &out.Status, s); err != nil { + return err + } + return nil +} + +// Convert_v1alpha1_Issuer_To_certmanager_Issuer is an autogenerated conversion function. +func Convert_v1alpha1_Issuer_To_certmanager_Issuer(in *v1alpha1.Issuer, out *certmanager.Issuer, s conversion.Scope) error { + return autoConvert_v1alpha1_Issuer_To_certmanager_Issuer(in, out, s) +} + +func autoConvert_certmanager_Issuer_To_v1alpha1_Issuer(in *certmanager.Issuer, out *v1alpha1.Issuer, s conversion.Scope) error { + out.ObjectMeta = in.ObjectMeta + if err := Convert_certmanager_IssuerSpec_To_v1alpha1_IssuerSpec(&in.Spec, &out.Spec, s); err != nil { + return err + } + if err := Convert_certmanager_IssuerStatus_To_v1alpha1_IssuerStatus(&in.Status, &out.Status, s); err != nil { + return err + } + return nil +} + +// Convert_certmanager_Issuer_To_v1alpha1_Issuer is an autogenerated conversion function. +func Convert_certmanager_Issuer_To_v1alpha1_Issuer(in *certmanager.Issuer, out *v1alpha1.Issuer, s conversion.Scope) error { + return autoConvert_certmanager_Issuer_To_v1alpha1_Issuer(in, out, s) +} + +func autoConvert_v1alpha1_IssuerCondition_To_certmanager_IssuerCondition(in *v1alpha1.IssuerCondition, out *certmanager.IssuerCondition, s conversion.Scope) error { + out.Type = certmanager.IssuerConditionType(in.Type) + out.Status = certmanager.ConditionStatus(in.Status) + out.LastTransitionTime = (*metav1.Time)(unsafe.Pointer(in.LastTransitionTime)) + out.Reason = in.Reason + out.Message = in.Message + return nil +} + +// Convert_v1alpha1_IssuerCondition_To_certmanager_IssuerCondition is an autogenerated conversion function. +func Convert_v1alpha1_IssuerCondition_To_certmanager_IssuerCondition(in *v1alpha1.IssuerCondition, out *certmanager.IssuerCondition, s conversion.Scope) error { + return autoConvert_v1alpha1_IssuerCondition_To_certmanager_IssuerCondition(in, out, s) +} + +func autoConvert_certmanager_IssuerCondition_To_v1alpha1_IssuerCondition(in *certmanager.IssuerCondition, out *v1alpha1.IssuerCondition, s conversion.Scope) error { + out.Type = v1alpha1.IssuerConditionType(in.Type) + out.Status = v1alpha1.ConditionStatus(in.Status) + out.LastTransitionTime = (*metav1.Time)(unsafe.Pointer(in.LastTransitionTime)) + out.Reason = in.Reason + out.Message = in.Message + return nil +} + +// Convert_certmanager_IssuerCondition_To_v1alpha1_IssuerCondition is an autogenerated conversion function. +func Convert_certmanager_IssuerCondition_To_v1alpha1_IssuerCondition(in *certmanager.IssuerCondition, out *v1alpha1.IssuerCondition, s conversion.Scope) error { + return autoConvert_certmanager_IssuerCondition_To_v1alpha1_IssuerCondition(in, out, s) +} + +func autoConvert_v1alpha1_IssuerConfig_To_certmanager_IssuerConfig(in *v1alpha1.IssuerConfig, out *certmanager.IssuerConfig, s conversion.Scope) error { + out.ACME = (*certmanager.ACMEIssuer)(unsafe.Pointer(in.ACME)) + out.CA = (*certmanager.CAIssuer)(unsafe.Pointer(in.CA)) + out.Vault = (*certmanager.VaultIssuer)(unsafe.Pointer(in.Vault)) + out.SelfSigned = (*certmanager.SelfSignedIssuer)(unsafe.Pointer(in.SelfSigned)) + out.Venafi = (*certmanager.VenafiIssuer)(unsafe.Pointer(in.Venafi)) + return nil +} + +// Convert_v1alpha1_IssuerConfig_To_certmanager_IssuerConfig is an autogenerated conversion function. +func Convert_v1alpha1_IssuerConfig_To_certmanager_IssuerConfig(in *v1alpha1.IssuerConfig, out *certmanager.IssuerConfig, s conversion.Scope) error { + return autoConvert_v1alpha1_IssuerConfig_To_certmanager_IssuerConfig(in, out, s) +} + +func autoConvert_certmanager_IssuerConfig_To_v1alpha1_IssuerConfig(in *certmanager.IssuerConfig, out *v1alpha1.IssuerConfig, s conversion.Scope) error { + out.ACME = (*v1alpha1.ACMEIssuer)(unsafe.Pointer(in.ACME)) + out.CA = (*v1alpha1.CAIssuer)(unsafe.Pointer(in.CA)) + out.Vault = (*v1alpha1.VaultIssuer)(unsafe.Pointer(in.Vault)) + out.SelfSigned = (*v1alpha1.SelfSignedIssuer)(unsafe.Pointer(in.SelfSigned)) + out.Venafi = (*v1alpha1.VenafiIssuer)(unsafe.Pointer(in.Venafi)) + return nil +} + +// Convert_certmanager_IssuerConfig_To_v1alpha1_IssuerConfig is an autogenerated conversion function. +func Convert_certmanager_IssuerConfig_To_v1alpha1_IssuerConfig(in *certmanager.IssuerConfig, out *v1alpha1.IssuerConfig, s conversion.Scope) error { + return autoConvert_certmanager_IssuerConfig_To_v1alpha1_IssuerConfig(in, out, s) +} + +func autoConvert_v1alpha1_IssuerList_To_certmanager_IssuerList(in *v1alpha1.IssuerList, out *certmanager.IssuerList, s conversion.Scope) error { + out.ListMeta = in.ListMeta + out.Items = *(*[]certmanager.Issuer)(unsafe.Pointer(&in.Items)) + return nil +} + +// Convert_v1alpha1_IssuerList_To_certmanager_IssuerList is an autogenerated conversion function. +func Convert_v1alpha1_IssuerList_To_certmanager_IssuerList(in *v1alpha1.IssuerList, out *certmanager.IssuerList, s conversion.Scope) error { + return autoConvert_v1alpha1_IssuerList_To_certmanager_IssuerList(in, out, s) +} + +func autoConvert_certmanager_IssuerList_To_v1alpha1_IssuerList(in *certmanager.IssuerList, out *v1alpha1.IssuerList, s conversion.Scope) error { + out.ListMeta = in.ListMeta + out.Items = *(*[]v1alpha1.Issuer)(unsafe.Pointer(&in.Items)) + return nil +} + +// Convert_certmanager_IssuerList_To_v1alpha1_IssuerList is an autogenerated conversion function. +func Convert_certmanager_IssuerList_To_v1alpha1_IssuerList(in *certmanager.IssuerList, out *v1alpha1.IssuerList, s conversion.Scope) error { + return autoConvert_certmanager_IssuerList_To_v1alpha1_IssuerList(in, out, s) +} + +func autoConvert_v1alpha1_IssuerSpec_To_certmanager_IssuerSpec(in *v1alpha1.IssuerSpec, out *certmanager.IssuerSpec, s conversion.Scope) error { + if err := Convert_v1alpha1_IssuerConfig_To_certmanager_IssuerConfig(&in.IssuerConfig, &out.IssuerConfig, s); err != nil { + return err + } + return nil +} + +// Convert_v1alpha1_IssuerSpec_To_certmanager_IssuerSpec is an autogenerated conversion function. +func Convert_v1alpha1_IssuerSpec_To_certmanager_IssuerSpec(in *v1alpha1.IssuerSpec, out *certmanager.IssuerSpec, s conversion.Scope) error { + return autoConvert_v1alpha1_IssuerSpec_To_certmanager_IssuerSpec(in, out, s) +} + +func autoConvert_certmanager_IssuerSpec_To_v1alpha1_IssuerSpec(in *certmanager.IssuerSpec, out *v1alpha1.IssuerSpec, s conversion.Scope) error { + if err := Convert_certmanager_IssuerConfig_To_v1alpha1_IssuerConfig(&in.IssuerConfig, &out.IssuerConfig, s); err != nil { + return err + } + return nil +} + +// Convert_certmanager_IssuerSpec_To_v1alpha1_IssuerSpec is an autogenerated conversion function. +func Convert_certmanager_IssuerSpec_To_v1alpha1_IssuerSpec(in *certmanager.IssuerSpec, out *v1alpha1.IssuerSpec, s conversion.Scope) error { + return autoConvert_certmanager_IssuerSpec_To_v1alpha1_IssuerSpec(in, out, s) +} + +func autoConvert_v1alpha1_IssuerStatus_To_certmanager_IssuerStatus(in *v1alpha1.IssuerStatus, out *certmanager.IssuerStatus, s conversion.Scope) error { + out.Conditions = *(*[]certmanager.IssuerCondition)(unsafe.Pointer(&in.Conditions)) + out.ACME = (*certmanager.ACMEIssuerStatus)(unsafe.Pointer(in.ACME)) + return nil +} + +// Convert_v1alpha1_IssuerStatus_To_certmanager_IssuerStatus is an autogenerated conversion function. +func Convert_v1alpha1_IssuerStatus_To_certmanager_IssuerStatus(in *v1alpha1.IssuerStatus, out *certmanager.IssuerStatus, s conversion.Scope) error { + return autoConvert_v1alpha1_IssuerStatus_To_certmanager_IssuerStatus(in, out, s) +} + +func autoConvert_certmanager_IssuerStatus_To_v1alpha1_IssuerStatus(in *certmanager.IssuerStatus, out *v1alpha1.IssuerStatus, s conversion.Scope) error { + out.Conditions = *(*[]v1alpha1.IssuerCondition)(unsafe.Pointer(&in.Conditions)) + out.ACME = (*v1alpha1.ACMEIssuerStatus)(unsafe.Pointer(in.ACME)) + return nil +} + +// Convert_certmanager_IssuerStatus_To_v1alpha1_IssuerStatus is an autogenerated conversion function. +func Convert_certmanager_IssuerStatus_To_v1alpha1_IssuerStatus(in *certmanager.IssuerStatus, out *v1alpha1.IssuerStatus, s conversion.Scope) error { + return autoConvert_certmanager_IssuerStatus_To_v1alpha1_IssuerStatus(in, out, s) +} + +func autoConvert_v1alpha1_LocalObjectReference_To_certmanager_LocalObjectReference(in *v1alpha1.LocalObjectReference, out *certmanager.LocalObjectReference, s conversion.Scope) error { + out.Name = in.Name + return nil +} + +// Convert_v1alpha1_LocalObjectReference_To_certmanager_LocalObjectReference is an autogenerated conversion function. +func Convert_v1alpha1_LocalObjectReference_To_certmanager_LocalObjectReference(in *v1alpha1.LocalObjectReference, out *certmanager.LocalObjectReference, s conversion.Scope) error { + return autoConvert_v1alpha1_LocalObjectReference_To_certmanager_LocalObjectReference(in, out, s) +} + +func autoConvert_certmanager_LocalObjectReference_To_v1alpha1_LocalObjectReference(in *certmanager.LocalObjectReference, out *v1alpha1.LocalObjectReference, s conversion.Scope) error { + out.Name = in.Name + return nil +} + +// Convert_certmanager_LocalObjectReference_To_v1alpha1_LocalObjectReference is an autogenerated conversion function. +func Convert_certmanager_LocalObjectReference_To_v1alpha1_LocalObjectReference(in *certmanager.LocalObjectReference, out *v1alpha1.LocalObjectReference, s conversion.Scope) error { + return autoConvert_certmanager_LocalObjectReference_To_v1alpha1_LocalObjectReference(in, out, s) +} + +func autoConvert_v1alpha1_ObjectReference_To_certmanager_ObjectReference(in *v1alpha1.ObjectReference, out *certmanager.ObjectReference, s conversion.Scope) error { + out.Name = in.Name + out.Kind = in.Kind + out.Group = in.Group + return nil +} + +// Convert_v1alpha1_ObjectReference_To_certmanager_ObjectReference is an autogenerated conversion function. +func Convert_v1alpha1_ObjectReference_To_certmanager_ObjectReference(in *v1alpha1.ObjectReference, out *certmanager.ObjectReference, s conversion.Scope) error { + return autoConvert_v1alpha1_ObjectReference_To_certmanager_ObjectReference(in, out, s) +} + +func autoConvert_certmanager_ObjectReference_To_v1alpha1_ObjectReference(in *certmanager.ObjectReference, out *v1alpha1.ObjectReference, s conversion.Scope) error { + out.Name = in.Name + out.Kind = in.Kind + out.Group = in.Group + return nil +} + +// Convert_certmanager_ObjectReference_To_v1alpha1_ObjectReference is an autogenerated conversion function. +func Convert_certmanager_ObjectReference_To_v1alpha1_ObjectReference(in *certmanager.ObjectReference, out *v1alpha1.ObjectReference, s conversion.Scope) error { + return autoConvert_certmanager_ObjectReference_To_v1alpha1_ObjectReference(in, out, s) +} + +func autoConvert_v1alpha1_Order_To_certmanager_Order(in *v1alpha1.Order, out *certmanager.Order, s conversion.Scope) error { + out.ObjectMeta = in.ObjectMeta + if err := Convert_v1alpha1_OrderSpec_To_certmanager_OrderSpec(&in.Spec, &out.Spec, s); err != nil { + return err + } + if err := Convert_v1alpha1_OrderStatus_To_certmanager_OrderStatus(&in.Status, &out.Status, s); err != nil { + return err + } + return nil +} + +// Convert_v1alpha1_Order_To_certmanager_Order is an autogenerated conversion function. +func Convert_v1alpha1_Order_To_certmanager_Order(in *v1alpha1.Order, out *certmanager.Order, s conversion.Scope) error { + return autoConvert_v1alpha1_Order_To_certmanager_Order(in, out, s) +} + +func autoConvert_certmanager_Order_To_v1alpha1_Order(in *certmanager.Order, out *v1alpha1.Order, s conversion.Scope) error { + out.ObjectMeta = in.ObjectMeta + if err := Convert_certmanager_OrderSpec_To_v1alpha1_OrderSpec(&in.Spec, &out.Spec, s); err != nil { + return err + } + if err := Convert_certmanager_OrderStatus_To_v1alpha1_OrderStatus(&in.Status, &out.Status, s); err != nil { + return err + } + return nil +} + +// Convert_certmanager_Order_To_v1alpha1_Order is an autogenerated conversion function. +func Convert_certmanager_Order_To_v1alpha1_Order(in *certmanager.Order, out *v1alpha1.Order, s conversion.Scope) error { + return autoConvert_certmanager_Order_To_v1alpha1_Order(in, out, s) +} + +func autoConvert_v1alpha1_OrderList_To_certmanager_OrderList(in *v1alpha1.OrderList, out *certmanager.OrderList, s conversion.Scope) error { + out.ListMeta = in.ListMeta + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]certmanager.Order, len(*in)) + for i := range *in { + if err := Convert_v1alpha1_Order_To_certmanager_Order(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Items = nil + } + return nil +} + +// Convert_v1alpha1_OrderList_To_certmanager_OrderList is an autogenerated conversion function. +func Convert_v1alpha1_OrderList_To_certmanager_OrderList(in *v1alpha1.OrderList, out *certmanager.OrderList, s conversion.Scope) error { + return autoConvert_v1alpha1_OrderList_To_certmanager_OrderList(in, out, s) +} + +func autoConvert_certmanager_OrderList_To_v1alpha1_OrderList(in *certmanager.OrderList, out *v1alpha1.OrderList, s conversion.Scope) error { + out.ListMeta = in.ListMeta + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]v1alpha1.Order, len(*in)) + for i := range *in { + if err := Convert_certmanager_Order_To_v1alpha1_Order(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Items = nil + } + return nil +} + +// Convert_certmanager_OrderList_To_v1alpha1_OrderList is an autogenerated conversion function. +func Convert_certmanager_OrderList_To_v1alpha1_OrderList(in *certmanager.OrderList, out *v1alpha1.OrderList, s conversion.Scope) error { + return autoConvert_certmanager_OrderList_To_v1alpha1_OrderList(in, out, s) +} + +func autoConvert_v1alpha1_OrderSpec_To_certmanager_OrderSpec(in *v1alpha1.OrderSpec, out *certmanager.OrderSpec, s conversion.Scope) error { + out.CSR = *(*[]byte)(unsafe.Pointer(&in.CSR)) + if err := Convert_v1alpha1_ObjectReference_To_certmanager_ObjectReference(&in.IssuerRef, &out.IssuerRef, s); err != nil { + return err + } + out.CommonName = in.CommonName + out.DNSNames = *(*[]string)(unsafe.Pointer(&in.DNSNames)) + return nil +} + +// Convert_v1alpha1_OrderSpec_To_certmanager_OrderSpec is an autogenerated conversion function. +func Convert_v1alpha1_OrderSpec_To_certmanager_OrderSpec(in *v1alpha1.OrderSpec, out *certmanager.OrderSpec, s conversion.Scope) error { + return autoConvert_v1alpha1_OrderSpec_To_certmanager_OrderSpec(in, out, s) +} + +func autoConvert_certmanager_OrderSpec_To_v1alpha1_OrderSpec(in *certmanager.OrderSpec, out *v1alpha1.OrderSpec, s conversion.Scope) error { + out.CSR = *(*[]byte)(unsafe.Pointer(&in.CSR)) + if err := Convert_certmanager_ObjectReference_To_v1alpha1_ObjectReference(&in.IssuerRef, &out.IssuerRef, s); err != nil { + return err + } + out.CommonName = in.CommonName + out.DNSNames = *(*[]string)(unsafe.Pointer(&in.DNSNames)) + return nil +} + +// Convert_certmanager_OrderSpec_To_v1alpha1_OrderSpec is an autogenerated conversion function. +func Convert_certmanager_OrderSpec_To_v1alpha1_OrderSpec(in *certmanager.OrderSpec, out *v1alpha1.OrderSpec, s conversion.Scope) error { + return autoConvert_certmanager_OrderSpec_To_v1alpha1_OrderSpec(in, out, s) +} + +func autoConvert_v1alpha1_OrderStatus_To_certmanager_OrderStatus(in *v1alpha1.OrderStatus, out *certmanager.OrderStatus, s conversion.Scope) error { + out.URL = in.URL + out.FinalizeURL = in.FinalizeURL + out.Authorizations = *(*[]certmanager.ACMEAuthorization)(unsafe.Pointer(&in.Authorizations)) + out.Certificate = *(*[]byte)(unsafe.Pointer(&in.Certificate)) + out.State = certmanager.State(in.State) + out.Reason = in.Reason + out.FailureTime = (*metav1.Time)(unsafe.Pointer(in.FailureTime)) + return nil +} + +// Convert_v1alpha1_OrderStatus_To_certmanager_OrderStatus is an autogenerated conversion function. +func Convert_v1alpha1_OrderStatus_To_certmanager_OrderStatus(in *v1alpha1.OrderStatus, out *certmanager.OrderStatus, s conversion.Scope) error { + return autoConvert_v1alpha1_OrderStatus_To_certmanager_OrderStatus(in, out, s) +} + +func autoConvert_certmanager_OrderStatus_To_v1alpha1_OrderStatus(in *certmanager.OrderStatus, out *v1alpha1.OrderStatus, s conversion.Scope) error { + out.URL = in.URL + out.FinalizeURL = in.FinalizeURL + out.Certificate = *(*[]byte)(unsafe.Pointer(&in.Certificate)) + out.State = v1alpha1.State(in.State) + out.Reason = in.Reason + out.Authorizations = *(*[]v1alpha1.ACMEAuthorization)(unsafe.Pointer(&in.Authorizations)) + out.FailureTime = (*metav1.Time)(unsafe.Pointer(in.FailureTime)) + return nil +} + +// Convert_certmanager_OrderStatus_To_v1alpha1_OrderStatus is an autogenerated conversion function. +func Convert_certmanager_OrderStatus_To_v1alpha1_OrderStatus(in *certmanager.OrderStatus, out *v1alpha1.OrderStatus, s conversion.Scope) error { + return autoConvert_certmanager_OrderStatus_To_v1alpha1_OrderStatus(in, out, s) +} + +func autoConvert_v1alpha1_SecretKeySelector_To_certmanager_SecretKeySelector(in *v1alpha1.SecretKeySelector, out *certmanager.SecretKeySelector, s conversion.Scope) error { + if err := Convert_v1alpha1_LocalObjectReference_To_certmanager_LocalObjectReference(&in.LocalObjectReference, &out.LocalObjectReference, s); err != nil { + return err + } + out.Key = in.Key + return nil +} + +// Convert_v1alpha1_SecretKeySelector_To_certmanager_SecretKeySelector is an autogenerated conversion function. +func Convert_v1alpha1_SecretKeySelector_To_certmanager_SecretKeySelector(in *v1alpha1.SecretKeySelector, out *certmanager.SecretKeySelector, s conversion.Scope) error { + return autoConvert_v1alpha1_SecretKeySelector_To_certmanager_SecretKeySelector(in, out, s) +} + +func autoConvert_certmanager_SecretKeySelector_To_v1alpha1_SecretKeySelector(in *certmanager.SecretKeySelector, out *v1alpha1.SecretKeySelector, s conversion.Scope) error { + if err := Convert_certmanager_LocalObjectReference_To_v1alpha1_LocalObjectReference(&in.LocalObjectReference, &out.LocalObjectReference, s); err != nil { + return err + } + out.Key = in.Key + return nil +} + +// Convert_certmanager_SecretKeySelector_To_v1alpha1_SecretKeySelector is an autogenerated conversion function. +func Convert_certmanager_SecretKeySelector_To_v1alpha1_SecretKeySelector(in *certmanager.SecretKeySelector, out *v1alpha1.SecretKeySelector, s conversion.Scope) error { + return autoConvert_certmanager_SecretKeySelector_To_v1alpha1_SecretKeySelector(in, out, s) +} + +func autoConvert_v1alpha1_SelfSignedIssuer_To_certmanager_SelfSignedIssuer(in *v1alpha1.SelfSignedIssuer, out *certmanager.SelfSignedIssuer, s conversion.Scope) error { + return nil +} + +// Convert_v1alpha1_SelfSignedIssuer_To_certmanager_SelfSignedIssuer is an autogenerated conversion function. +func Convert_v1alpha1_SelfSignedIssuer_To_certmanager_SelfSignedIssuer(in *v1alpha1.SelfSignedIssuer, out *certmanager.SelfSignedIssuer, s conversion.Scope) error { + return autoConvert_v1alpha1_SelfSignedIssuer_To_certmanager_SelfSignedIssuer(in, out, s) +} + +func autoConvert_certmanager_SelfSignedIssuer_To_v1alpha1_SelfSignedIssuer(in *certmanager.SelfSignedIssuer, out *v1alpha1.SelfSignedIssuer, s conversion.Scope) error { + return nil +} + +// Convert_certmanager_SelfSignedIssuer_To_v1alpha1_SelfSignedIssuer is an autogenerated conversion function. +func Convert_certmanager_SelfSignedIssuer_To_v1alpha1_SelfSignedIssuer(in *certmanager.SelfSignedIssuer, out *v1alpha1.SelfSignedIssuer, s conversion.Scope) error { + return autoConvert_certmanager_SelfSignedIssuer_To_v1alpha1_SelfSignedIssuer(in, out, s) +} + +func autoConvert_v1alpha1_VaultAppRole_To_certmanager_VaultAppRole(in *v1alpha1.VaultAppRole, out *certmanager.VaultAppRole, s conversion.Scope) error { + out.Path = in.Path + out.RoleId = in.RoleId + if err := Convert_v1alpha1_SecretKeySelector_To_certmanager_SecretKeySelector(&in.SecretRef, &out.SecretRef, s); err != nil { + return err + } + return nil +} + +// Convert_v1alpha1_VaultAppRole_To_certmanager_VaultAppRole is an autogenerated conversion function. +func Convert_v1alpha1_VaultAppRole_To_certmanager_VaultAppRole(in *v1alpha1.VaultAppRole, out *certmanager.VaultAppRole, s conversion.Scope) error { + return autoConvert_v1alpha1_VaultAppRole_To_certmanager_VaultAppRole(in, out, s) +} + +func autoConvert_certmanager_VaultAppRole_To_v1alpha1_VaultAppRole(in *certmanager.VaultAppRole, out *v1alpha1.VaultAppRole, s conversion.Scope) error { + out.Path = in.Path + out.RoleId = in.RoleId + if err := Convert_certmanager_SecretKeySelector_To_v1alpha1_SecretKeySelector(&in.SecretRef, &out.SecretRef, s); err != nil { + return err + } + return nil +} + +// Convert_certmanager_VaultAppRole_To_v1alpha1_VaultAppRole is an autogenerated conversion function. +func Convert_certmanager_VaultAppRole_To_v1alpha1_VaultAppRole(in *certmanager.VaultAppRole, out *v1alpha1.VaultAppRole, s conversion.Scope) error { + return autoConvert_certmanager_VaultAppRole_To_v1alpha1_VaultAppRole(in, out, s) +} + +func autoConvert_v1alpha1_VaultAuth_To_certmanager_VaultAuth(in *v1alpha1.VaultAuth, out *certmanager.VaultAuth, s conversion.Scope) error { + if err := Convert_v1alpha1_SecretKeySelector_To_certmanager_SecretKeySelector(&in.TokenSecretRef, &out.TokenSecretRef, s); err != nil { + return err + } + if err := Convert_v1alpha1_VaultAppRole_To_certmanager_VaultAppRole(&in.AppRole, &out.AppRole, s); err != nil { + return err + } + return nil +} + +// Convert_v1alpha1_VaultAuth_To_certmanager_VaultAuth is an autogenerated conversion function. +func Convert_v1alpha1_VaultAuth_To_certmanager_VaultAuth(in *v1alpha1.VaultAuth, out *certmanager.VaultAuth, s conversion.Scope) error { + return autoConvert_v1alpha1_VaultAuth_To_certmanager_VaultAuth(in, out, s) +} + +func autoConvert_certmanager_VaultAuth_To_v1alpha1_VaultAuth(in *certmanager.VaultAuth, out *v1alpha1.VaultAuth, s conversion.Scope) error { + if err := Convert_certmanager_SecretKeySelector_To_v1alpha1_SecretKeySelector(&in.TokenSecretRef, &out.TokenSecretRef, s); err != nil { + return err + } + if err := Convert_certmanager_VaultAppRole_To_v1alpha1_VaultAppRole(&in.AppRole, &out.AppRole, s); err != nil { + return err + } + return nil +} + +// Convert_certmanager_VaultAuth_To_v1alpha1_VaultAuth is an autogenerated conversion function. +func Convert_certmanager_VaultAuth_To_v1alpha1_VaultAuth(in *certmanager.VaultAuth, out *v1alpha1.VaultAuth, s conversion.Scope) error { + return autoConvert_certmanager_VaultAuth_To_v1alpha1_VaultAuth(in, out, s) +} + +func autoConvert_v1alpha1_VaultIssuer_To_certmanager_VaultIssuer(in *v1alpha1.VaultIssuer, out *certmanager.VaultIssuer, s conversion.Scope) error { + if err := Convert_v1alpha1_VaultAuth_To_certmanager_VaultAuth(&in.Auth, &out.Auth, s); err != nil { + return err + } + out.Server = in.Server + out.Path = in.Path + out.CABundle = *(*[]byte)(unsafe.Pointer(&in.CABundle)) + return nil +} + +// Convert_v1alpha1_VaultIssuer_To_certmanager_VaultIssuer is an autogenerated conversion function. +func Convert_v1alpha1_VaultIssuer_To_certmanager_VaultIssuer(in *v1alpha1.VaultIssuer, out *certmanager.VaultIssuer, s conversion.Scope) error { + return autoConvert_v1alpha1_VaultIssuer_To_certmanager_VaultIssuer(in, out, s) +} + +func autoConvert_certmanager_VaultIssuer_To_v1alpha1_VaultIssuer(in *certmanager.VaultIssuer, out *v1alpha1.VaultIssuer, s conversion.Scope) error { + if err := Convert_certmanager_VaultAuth_To_v1alpha1_VaultAuth(&in.Auth, &out.Auth, s); err != nil { + return err + } + out.Server = in.Server + out.Path = in.Path + out.CABundle = *(*[]byte)(unsafe.Pointer(&in.CABundle)) + return nil +} + +// Convert_certmanager_VaultIssuer_To_v1alpha1_VaultIssuer is an autogenerated conversion function. +func Convert_certmanager_VaultIssuer_To_v1alpha1_VaultIssuer(in *certmanager.VaultIssuer, out *v1alpha1.VaultIssuer, s conversion.Scope) error { + return autoConvert_certmanager_VaultIssuer_To_v1alpha1_VaultIssuer(in, out, s) +} + +func autoConvert_v1alpha1_VenafiCloud_To_certmanager_VenafiCloud(in *v1alpha1.VenafiCloud, out *certmanager.VenafiCloud, s conversion.Scope) error { + out.URL = in.URL + if err := Convert_v1alpha1_SecretKeySelector_To_certmanager_SecretKeySelector(&in.APITokenSecretRef, &out.APITokenSecretRef, s); err != nil { + return err + } + return nil +} + +// Convert_v1alpha1_VenafiCloud_To_certmanager_VenafiCloud is an autogenerated conversion function. +func Convert_v1alpha1_VenafiCloud_To_certmanager_VenafiCloud(in *v1alpha1.VenafiCloud, out *certmanager.VenafiCloud, s conversion.Scope) error { + return autoConvert_v1alpha1_VenafiCloud_To_certmanager_VenafiCloud(in, out, s) +} + +func autoConvert_certmanager_VenafiCloud_To_v1alpha1_VenafiCloud(in *certmanager.VenafiCloud, out *v1alpha1.VenafiCloud, s conversion.Scope) error { + out.URL = in.URL + if err := Convert_certmanager_SecretKeySelector_To_v1alpha1_SecretKeySelector(&in.APITokenSecretRef, &out.APITokenSecretRef, s); err != nil { + return err + } + return nil +} + +// Convert_certmanager_VenafiCloud_To_v1alpha1_VenafiCloud is an autogenerated conversion function. +func Convert_certmanager_VenafiCloud_To_v1alpha1_VenafiCloud(in *certmanager.VenafiCloud, out *v1alpha1.VenafiCloud, s conversion.Scope) error { + return autoConvert_certmanager_VenafiCloud_To_v1alpha1_VenafiCloud(in, out, s) +} + +func autoConvert_v1alpha1_VenafiIssuer_To_certmanager_VenafiIssuer(in *v1alpha1.VenafiIssuer, out *certmanager.VenafiIssuer, s conversion.Scope) error { + out.Zone = in.Zone + out.TPP = (*certmanager.VenafiTPP)(unsafe.Pointer(in.TPP)) + out.Cloud = (*certmanager.VenafiCloud)(unsafe.Pointer(in.Cloud)) + return nil +} + +// Convert_v1alpha1_VenafiIssuer_To_certmanager_VenafiIssuer is an autogenerated conversion function. +func Convert_v1alpha1_VenafiIssuer_To_certmanager_VenafiIssuer(in *v1alpha1.VenafiIssuer, out *certmanager.VenafiIssuer, s conversion.Scope) error { + return autoConvert_v1alpha1_VenafiIssuer_To_certmanager_VenafiIssuer(in, out, s) +} + +func autoConvert_certmanager_VenafiIssuer_To_v1alpha1_VenafiIssuer(in *certmanager.VenafiIssuer, out *v1alpha1.VenafiIssuer, s conversion.Scope) error { + out.Zone = in.Zone + out.TPP = (*v1alpha1.VenafiTPP)(unsafe.Pointer(in.TPP)) + out.Cloud = (*v1alpha1.VenafiCloud)(unsafe.Pointer(in.Cloud)) + return nil +} + +// Convert_certmanager_VenafiIssuer_To_v1alpha1_VenafiIssuer is an autogenerated conversion function. +func Convert_certmanager_VenafiIssuer_To_v1alpha1_VenafiIssuer(in *certmanager.VenafiIssuer, out *v1alpha1.VenafiIssuer, s conversion.Scope) error { + return autoConvert_certmanager_VenafiIssuer_To_v1alpha1_VenafiIssuer(in, out, s) +} + +func autoConvert_v1alpha1_VenafiTPP_To_certmanager_VenafiTPP(in *v1alpha1.VenafiTPP, out *certmanager.VenafiTPP, s conversion.Scope) error { + out.URL = in.URL + if err := Convert_v1alpha1_LocalObjectReference_To_certmanager_LocalObjectReference(&in.CredentialsRef, &out.CredentialsRef, s); err != nil { + return err + } + out.CABundle = *(*[]byte)(unsafe.Pointer(&in.CABundle)) + return nil +} + +// Convert_v1alpha1_VenafiTPP_To_certmanager_VenafiTPP is an autogenerated conversion function. +func Convert_v1alpha1_VenafiTPP_To_certmanager_VenafiTPP(in *v1alpha1.VenafiTPP, out *certmanager.VenafiTPP, s conversion.Scope) error { + return autoConvert_v1alpha1_VenafiTPP_To_certmanager_VenafiTPP(in, out, s) +} + +func autoConvert_certmanager_VenafiTPP_To_v1alpha1_VenafiTPP(in *certmanager.VenafiTPP, out *v1alpha1.VenafiTPP, s conversion.Scope) error { + out.URL = in.URL + if err := Convert_certmanager_LocalObjectReference_To_v1alpha1_LocalObjectReference(&in.CredentialsRef, &out.CredentialsRef, s); err != nil { + return err + } + out.CABundle = *(*[]byte)(unsafe.Pointer(&in.CABundle)) + return nil +} + +// Convert_certmanager_VenafiTPP_To_v1alpha1_VenafiTPP is an autogenerated conversion function. +func Convert_certmanager_VenafiTPP_To_v1alpha1_VenafiTPP(in *certmanager.VenafiTPP, out *v1alpha1.VenafiTPP, s conversion.Scope) error { + return autoConvert_certmanager_VenafiTPP_To_v1alpha1_VenafiTPP(in, out, s) +} diff --git a/pkg/internal/apis/certmanager/v1alpha2/zz_generated.conversion.go b/pkg/internal/apis/certmanager/v1alpha2/zz_generated.conversion.go index 3a460382a..327100a16 100644 --- a/pkg/internal/apis/certmanager/v1alpha2/zz_generated.conversion.go +++ b/pkg/internal/apis/certmanager/v1alpha2/zz_generated.conversion.go @@ -565,6 +565,7 @@ func autoConvert_v1alpha2_CertificateSpec_To_certmanager_CertificateSpec(in *v1a out.RenewBefore = (*v1.Duration)(unsafe.Pointer(in.RenewBefore)) out.DNSNames = *(*[]string)(unsafe.Pointer(&in.DNSNames)) out.IPAddresses = *(*[]string)(unsafe.Pointer(&in.IPAddresses)) + out.URISANs = *(*[]string)(unsafe.Pointer(&in.URISANs)) out.SecretName = in.SecretName // TODO: Inefficient conversion - can we improve it? if err := s.Convert(&in.IssuerRef, &out.IssuerRef, 0); err != nil { @@ -590,6 +591,7 @@ func autoConvert_certmanager_CertificateSpec_To_v1alpha2_CertificateSpec(in *cer out.RenewBefore = (*v1.Duration)(unsafe.Pointer(in.RenewBefore)) out.DNSNames = *(*[]string)(unsafe.Pointer(&in.DNSNames)) out.IPAddresses = *(*[]string)(unsafe.Pointer(&in.IPAddresses)) + out.URISANs = *(*[]string)(unsafe.Pointer(&in.URISANs)) out.SecretName = in.SecretName // TODO: Inefficient conversion - can we improve it? if err := s.Convert(&in.IssuerRef, &out.IssuerRef, 0); err != nil { diff --git a/pkg/internal/apis/certmanager/validation/certificate.go b/pkg/internal/apis/certmanager/validation/certificate.go index 96b1a9299..15a0f0ef9 100644 --- a/pkg/internal/apis/certmanager/validation/certificate.go +++ b/pkg/internal/apis/certmanager/validation/certificate.go @@ -38,18 +38,14 @@ func ValidateCertificateSpec(crt *v1alpha2.CertificateSpec, fldPath *field.Path) el = append(el, validateIssuerRef(crt.IssuerRef, fldPath)...) - if len(crt.CommonName) == 0 && len(crt.DNSNames) == 0 { - el = append(el, field.Required(fldPath.Child("dnsNames"), "at least one dnsName is required if commonName is not set")) + if len(crt.CommonName) == 0 && len(crt.DNSNames) == 0 && len(crt.URISANs) == 0 { + el = append(el, field.Required(fldPath.Child("commonName,dnsNames,uriSANs"), "at least one of commonName, dnsNames, or uriSANs must be set")) } + // if a common name has been specified, ensure it is no longer than 64 chars if len(crt.CommonName) > 64 { el = append(el, field.TooLong(fldPath.Child("commonName"), crt.CommonName, 64)) } - // if the common name has *not* been specified, ensure the first dnsName is no longer than 64 chars - // as it will be used as the commonName - if crt.CommonName == "" && len(crt.DNSNames) > 0 && len(crt.DNSNames[0]) > 64 { - el = append(el, field.TooLong(fldPath.Child("dnsNames").Index(0), crt.DNSNames[0], 64)) - } if len(crt.IPAddresses) > 0 { el = append(el, validateIPAddresses(crt, fldPath)...) diff --git a/pkg/internal/apis/certmanager/validation/certificate_test.go b/pkg/internal/apis/certmanager/validation/certificate_test.go index 0375fccff..5e553fb6d 100644 --- a/pkg/internal/apis/certmanager/validation/certificate_test.go +++ b/pkg/internal/apis/certmanager/validation/certificate_test.go @@ -114,7 +114,7 @@ func TestValidateCertificate(t *testing.T) { field.Required(fldPath.Child("secretName"), "must be specified"), }, }, - "certificate with no domains": { + "certificate with no domains or URIs": { cfg: &v1alpha2.Certificate{ Spec: v1alpha2.CertificateSpec{ SecretName: "abc", @@ -122,7 +122,7 @@ func TestValidateCertificate(t *testing.T) { }, }, errs: []*field.Error{ - field.Required(fldPath.Child("dnsNames"), "at least one dnsName is required if commonName is not set"), + field.Required(fldPath.Child("commonName,dnsNames,uriSANs"), "at least one of commonName, dnsNames, or uriSANs must be set"), }, }, "certificate with no issuerRef": { @@ -354,21 +354,6 @@ func TestValidateCertificate(t *testing.T) { field.TooLong(fldPath.Child("commonName"), "this-is-a-big-long-string-which-has-exactly-sixty-five-characters", 64), }, }, - "invalid certificate with no commonName and first dnsName longer than 64 bytes": { - cfg: &v1alpha2.Certificate{ - Spec: v1alpha2.CertificateSpec{ - SecretName: "abc", - IssuerRef: validIssuerRef, - DNSNames: []string{ - "this-is-a-big-long-string-which-has-exactly-sixty-five-characters", - "dnsName", - }, - }, - }, - errs: []*field.Error{ - field.TooLong(fldPath.Child("dnsNames").Index(0), "this-is-a-big-long-string-which-has-exactly-sixty-five-characters", 64), - }, - }, "valid certificate with no commonName and second dnsName longer than 64 bytes": { cfg: &v1alpha2.Certificate{ Spec: v1alpha2.CertificateSpec{ diff --git a/pkg/internal/apis/certmanager/zz_generated.deepcopy.go b/pkg/internal/apis/certmanager/zz_generated.deepcopy.go index 75c1b99c9..a18e5f689 100644 --- a/pkg/internal/apis/certmanager/zz_generated.deepcopy.go +++ b/pkg/internal/apis/certmanager/zz_generated.deepcopy.go @@ -302,6 +302,11 @@ func (in *CertificateSpec) DeepCopyInto(out *CertificateSpec) { *out = make([]string, len(*in)) copy(*out, *in) } + if in.URISANs != nil { + in, out := &in.URISANs, &out.URISANs + *out = make([]string, len(*in)) + copy(*out, *in) + } out.IssuerRef = in.IssuerRef if in.Usages != nil { in, out := &in.Usages, &out.Usages diff --git a/pkg/util/pki/csr.go b/pkg/util/pki/csr.go index fb885587b..2f9d4919b 100644 --- a/pkg/util/pki/csr.go +++ b/pkg/util/pki/csr.go @@ -27,24 +27,14 @@ import ( "fmt" "math/big" "net" + "net/url" + "strings" "time" apiutil "github.com/jetstack/cert-manager/pkg/api/util" "github.com/jetstack/cert-manager/pkg/apis/certmanager/v1alpha2" ) -// CommonNameForCertificate returns the common name that should be used for the -// given Certificate resource, by inspecting the CommonName and DNSNames fields. -func CommonNameForCertificate(crt *v1alpha2.Certificate) string { - if crt.Spec.CommonName != "" { - return crt.Spec.CommonName - } - if len(crt.Spec.DNSNames) == 0 { - return "" - } - return crt.Spec.DNSNames[0] -} - // DNSNamesForCertificate returns the DNS names that should be used for the // given Certificate resource, by inspecting the CommonName and DNSNames fields. func DNSNamesForCertificate(crt *v1alpha2.Certificate) []string { @@ -72,6 +62,28 @@ func IPAddressesForCertificate(crt *v1alpha2.Certificate) []net.IP { return ipAddresses } +func URIsForCertificate(crt *v1alpha2.Certificate) ([]*url.URL, error) { + var uris []*url.URL + var errs []string + + for _, uriStr := range crt.Spec.URISANs { + uri, err := url.Parse(uriStr) + if err != nil { + errs = append(errs, err.Error()) + continue + } + + uris = append(uris, uri) + } + + if len(errs) > 0 { + return nil, fmt.Errorf("failed to parse URIs: %s", + strings.Join(errs, ", ")) + } + + return uris, nil +} + func IPAddressesToString(ipAddresses []net.IP) []string { var ipNames []string for _, ip := range ipAddresses { @@ -80,6 +92,17 @@ func IPAddressesToString(ipAddresses []net.IP) []string { return ipNames } +func URLsToString(uris []*url.URL) []string { + var uriStrs []string + for _, uri := range uris { + if uri != nil { + uriStrs = append(uriStrs, uri.String()) + } + } + + return uriStrs +} + func removeDuplicates(in []string) []string { var found []string Outer: @@ -137,13 +160,17 @@ func buildUsages(usages []v1alpha2.KeyUsage, isCA bool) (ku x509.KeyUsage, eku [ // The CSR will not be signed, and should be passed to either EncodeCSR or // to the x509.CreateCertificateRequest function. func GenerateCSR(crt *v1alpha2.Certificate) (*x509.CertificateRequest, error) { - commonName := CommonNameForCertificate(crt) + commonName := crt.Spec.CommonName dnsNames := DNSNamesForCertificate(crt) iPAddresses := IPAddressesForCertificate(crt) organization := OrganizationForCertificate(crt) + uriNames, err := URIsForCertificate(crt) + if err != nil { + return nil, err + } - if len(commonName) == 0 && len(dnsNames) == 0 { - return nil, fmt.Errorf("no domains specified on certificate") + if len(commonName) == 0 && len(dnsNames) == 0 && len(uriNames) == 0 { + return nil, fmt.Errorf("no common name, DNS name, or URI SAN specified on certificate") } pubKeyAlgo, sigAlgo, err := SignatureAlgorithm(crt) @@ -171,7 +198,7 @@ func GenerateCSR(crt *v1alpha2.Certificate) (*x509.CertificateRequest, error) { // generated by GenerateCSR. // The PublicKey field must be populated by the caller. func GenerateTemplate(crt *v1alpha2.Certificate) (*x509.Certificate, error) { - commonName := CommonNameForCertificate(crt) + commonName := crt.Spec.CommonName dnsNames := DNSNamesForCertificate(crt) ipAddresses := IPAddressesForCertificate(crt) organization := OrganizationForCertificate(crt) From dd7213866f77bdd0bcba3f50773accd238f27e7a Mon Sep 17 00:00:00 2001 From: JoshVanL Date: Fri, 20 Sep 2019 12:05:35 +0100 Subject: [PATCH 02/23] Adds validation for URIs to certificate validation Signed-off-by: JoshVanL --- pkg/controller/certificates/util.go | 15 +++++++++++++-- pkg/util/pki/csr_test.go | 6 +++--- test/e2e/framework/helper/certificates.go | 14 +++++++++++--- 3 files changed, 27 insertions(+), 8 deletions(-) diff --git a/pkg/controller/certificates/util.go b/pkg/controller/certificates/util.go index f9c3d62d5..3633219dc 100644 --- a/pkg/controller/certificates/util.go +++ b/pkg/controller/certificates/util.go @@ -90,9 +90,15 @@ func certificateMatchesSpec(crt *v1alpha2.Certificate, key crypto.Signer, cert * errs = append(errs, fmt.Sprintf("Certificate private key does not match certificate")) } + // If CN is set, and the user didn’t specify it, ensure that the CN is one of the dnsNames // validate the common name is correct - expectedCN := pki.CommonNameForCertificate(crt) - if expectedCN != cert.Subject.CommonName { + expectedCN := crt.Spec.CommonName + if len(expectedCN) == 0 && len(cert.Subject.CommonName) > 0 { + if !util.Contains(cert.DNSNames, cert.Subject.CommonName) { + errs = append(errs, + fmt.Sprintf("Common name not set on Certificate, but the common name on the TLS certificate matches no DNS names: %q", cert.Subject.CommonName)) + } + } else if expectedCN != cert.Subject.CommonName { errs = append(errs, fmt.Sprintf("Common name on TLS certificate not up to date: %q", cert.Subject.CommonName)) } @@ -102,6 +108,11 @@ func certificateMatchesSpec(crt *v1alpha2.Certificate, key crypto.Signer, cert * errs = append(errs, fmt.Sprintf("DNS names on TLS certificate not up to date: %q", cert.DNSNames)) } + expectedURIs := crt.Spec.URISANs + if !util.EqualUnsorted(pki.URLsToString(cert.URIs), expectedURIs) { + errs = append(errs, fmt.Sprintf("URI SANs on TLS certificate not up to date: %q", cert.URIs)) + } + // validate the ip addresses are correct if !util.EqualUnsorted(pki.IPAddressesToString(cert.IPAddresses), crt.Spec.IPAddresses) { errs = append(errs, fmt.Sprintf("IP addresses on TLS certificate not up to date: %q", pki.IPAddressesToString(cert.IPAddresses))) diff --git a/pkg/util/pki/csr_test.go b/pkg/util/pki/csr_test.go index d70c7a71d..5b0ada6c4 100644 --- a/pkg/util/pki/csr_test.go +++ b/pkg/util/pki/csr_test.go @@ -125,7 +125,7 @@ func TestCommonNameForCertificate(t *testing.T) { { name: "certificate with one DNS name set", crtDNSNames: []string{"dnsname"}, - expectedCN: "dnsname", + expectedCN: "", }, { name: "certificate with both common name and dnsName set", @@ -136,12 +136,12 @@ func TestCommonNameForCertificate(t *testing.T) { { name: "certificate with multiple dns names set", crtDNSNames: []string{"dnsname1", "dnsname2"}, - expectedCN: "dnsname1", + expectedCN: "", }, } testFn := func(test testT) func(*testing.T) { return func(t *testing.T) { - actualCN := CommonNameForCertificate(buildCertificate(test.crtCN, test.crtDNSNames...)) + actualCN := buildCertificate(test.crtCN, test.crtDNSNames...).Spec.CommonName if actualCN != test.expectedCN { t.Errorf("expected %q but got %q", test.expectedCN, actualCN) return diff --git a/test/e2e/framework/helper/certificates.go b/test/e2e/framework/helper/certificates.go index 2bef35a4f..cc21c9dbc 100644 --- a/test/e2e/framework/helper/certificates.go +++ b/test/e2e/framework/helper/certificates.go @@ -140,9 +140,15 @@ func (h *Helper) ValidateIssuedCertificate(certificate *v1alpha2.Certificate, ro // TODO: validate private key KeySize // check the provided certificate is valid - expectedCN := pki.CommonNameForCertificate(certificate) + expectedCN := certificate.Spec.CommonName expectedOrganization := pki.OrganizationForCertificate(certificate) expectedDNSNames := pki.DNSNamesForCertificate(certificate) + uris, err := pki.URIsForCertificate(certificate) + if err != nil { + return nil, fmt.Errorf("failed to parse URIs: %s", err) + } + + expectedURIs := pki.URLsToString(uris) certBytes, ok := secret.Data[corev1.TLSCertKey] if !ok { @@ -153,8 +159,10 @@ func (h *Helper) ValidateIssuedCertificate(certificate *v1alpha2.Certificate, ro if err != nil { return nil, err } - if expectedCN != cert.Subject.CommonName || !util.EqualUnsorted(cert.DNSNames, expectedDNSNames) || !(len(cert.Subject.Organization) == 0 || util.EqualUnsorted(cert.Subject.Organization, expectedOrganization)) { - return nil, fmt.Errorf("Expected certificate valid for CN %q, O %v, dnsNames %v but got a certificate valid for CN %q, O %v, dnsNames %v", expectedCN, expectedOrganization, expectedDNSNames, cert.Subject.CommonName, cert.Subject.Organization, cert.DNSNames) + if expectedCN != cert.Subject.CommonName || !util.EqualUnsorted(cert.DNSNames, expectedDNSNames) || !util.EqualUnsorted(pki.URLsToString(cert.URIs), expectedURIs) || + !(len(cert.Subject.Organization) == 0 || util.EqualUnsorted(cert.Subject.Organization, expectedOrganization)) { + return nil, fmt.Errorf("Expected certificate valid for CN %q, O %v, dnsNames %v, uriSANs %v,but got a certificate valid for CN %q, O %v, dnsNames %v, uriSANs %v", + expectedCN, expectedOrganization, expectedDNSNames, expectedURIs, cert.Subject.CommonName, cert.Subject.Organization, cert.DNSNames, cert.URIs) } if certificate.Status.NotAfter == nil { From f249888112ae2e6aba26c642c3ac92c0890f9909 Mon Sep 17 00:00:00 2001 From: JoshVanL Date: Fri, 20 Sep 2019 15:25:23 +0100 Subject: [PATCH 03/23] Only add common-name annotation if commonName exists Signed-off-by: JoshVanL --- pkg/controller/certificates/sync.go | 4 +++- pkg/controller/certificates/sync_test.go | 21 +------------------ pkg/controller/webhookbootstrap/controller.go | 7 +++++++ 3 files changed, 11 insertions(+), 21 deletions(-) diff --git a/pkg/controller/certificates/sync.go b/pkg/controller/certificates/sync.go index eaf0e5cc1..324c853d6 100644 --- a/pkg/controller/certificates/sync.go +++ b/pkg/controller/certificates/sync.go @@ -797,7 +797,9 @@ func setSecretValues(ctx context.Context, crt *cmapi.Certificate, s *corev1.Secr return err } - s.Annotations[cmapi.CommonNameAnnotationKey] = x509Cert.Subject.CommonName + if len(x509Cert.Subject.CommonName) > 0 { + s.Annotations[cmapi.CommonNameAnnotationKey] = x509Cert.Subject.CommonName + } s.Annotations[cmapi.AltNamesAnnotationKey] = strings.Join(x509Cert.DNSNames, ",") s.Annotations[cmapi.IPSANAnnotationKey] = strings.Join(pki.IPAddressesToString(x509Cert.IPAddresses), ",") } diff --git a/pkg/controller/certificates/sync_test.go b/pkg/controller/certificates/sync_test.go index 2e0e034c3..ab2c8995c 100644 --- a/pkg/controller/certificates/sync_test.go +++ b/pkg/controller/certificates/sync_test.go @@ -692,7 +692,6 @@ func TestProcessCertificate(t *testing.T) { cmapi.IssuerNameAnnotationKey: exampleBundle1.certificate.Spec.IssuerRef.Name, cmapi.IPSANAnnotationKey: "", cmapi.AltNamesAnnotationKey: "example.com", - cmapi.CommonNameAnnotationKey: "example.com", }, }, Data: map[string][]byte{ @@ -731,7 +730,6 @@ func TestProcessCertificate(t *testing.T) { cmapi.IssuerNameAnnotationKey: exampleBundle1.certificate.Spec.IssuerRef.Name, cmapi.IPSANAnnotationKey: "", cmapi.AltNamesAnnotationKey: "example.com", - cmapi.CommonNameAnnotationKey: "example.com", }, }, Data: map[string][]byte{ @@ -787,7 +785,6 @@ func TestProcessCertificate(t *testing.T) { cmapi.IssuerNameAnnotationKey: exampleBundle1.certificate.Spec.IssuerRef.Name, cmapi.IPSANAnnotationKey: "", cmapi.AltNamesAnnotationKey: "example.com", - cmapi.CommonNameAnnotationKey: "example.com", }, }, Data: map[string][]byte{ @@ -844,7 +841,6 @@ func TestProcessCertificate(t *testing.T) { cmapi.IssuerNameAnnotationKey: exampleBundle1.certificate.Spec.IssuerRef.Name, cmapi.IPSANAnnotationKey: "", cmapi.AltNamesAnnotationKey: "example.com", - cmapi.CommonNameAnnotationKey: "example.com", }, }, Data: map[string][]byte{ @@ -874,7 +870,6 @@ func TestProcessCertificate(t *testing.T) { cmapi.IssuerNameAnnotationKey: exampleBundle1.certificate.Spec.IssuerRef.Name, cmapi.IPSANAnnotationKey: "", cmapi.AltNamesAnnotationKey: "example.com", - cmapi.CommonNameAnnotationKey: "example.com", }, }, Data: map[string][]byte{ @@ -906,7 +901,6 @@ func TestProcessCertificate(t *testing.T) { cmapi.IssuerNameAnnotationKey: exampleBundle1.certificate.Spec.IssuerRef.Name, cmapi.IPSANAnnotationKey: "", cmapi.AltNamesAnnotationKey: "example.com", - cmapi.CommonNameAnnotationKey: "example.com", }, }, Data: map[string][]byte{ @@ -936,7 +930,6 @@ func TestProcessCertificate(t *testing.T) { cmapi.IssuerNameAnnotationKey: exampleBundle1.certificate.Spec.IssuerRef.Name, cmapi.IPSANAnnotationKey: "", cmapi.AltNamesAnnotationKey: "example.com", - cmapi.CommonNameAnnotationKey: "example.com", }, }, Data: map[string][]byte{ @@ -966,7 +959,6 @@ func TestProcessCertificate(t *testing.T) { cmapi.IssuerNameAnnotationKey: exampleBundle1.certificate.Spec.IssuerRef.Name, cmapi.IPSANAnnotationKey: "", cmapi.AltNamesAnnotationKey: "example.com", - cmapi.CommonNameAnnotationKey: "example.com", }, }, Data: map[string][]byte{ @@ -1009,7 +1001,6 @@ func TestProcessCertificate(t *testing.T) { cmapi.IssuerNameAnnotationKey: exampleBundle1.certificate.Spec.IssuerRef.Name, cmapi.IPSANAnnotationKey: "", cmapi.AltNamesAnnotationKey: "example.com", - cmapi.CommonNameAnnotationKey: "example.com", }, }, Data: map[string][]byte{ @@ -1204,7 +1195,6 @@ func TestTemporaryCertificateEnabled(t *testing.T) { cmapi.IssuerNameAnnotationKey: exampleBundle1.certificate.Spec.IssuerRef.Name, cmapi.IPSANAnnotationKey: "", cmapi.AltNamesAnnotationKey: "example.com", - cmapi.CommonNameAnnotationKey: "example.com", }, }, Data: map[string][]byte{ @@ -1261,7 +1251,6 @@ func TestTemporaryCertificateEnabled(t *testing.T) { cmapi.IssuerNameAnnotationKey: exampleBundle1.certificate.Spec.IssuerRef.Name, cmapi.IPSANAnnotationKey: "", cmapi.AltNamesAnnotationKey: "example.com", - cmapi.CommonNameAnnotationKey: "example.com", }, }, Data: map[string][]byte{ @@ -1318,7 +1307,6 @@ func TestTemporaryCertificateEnabled(t *testing.T) { cmapi.IssuerNameAnnotationKey: exampleBundle1.certificate.Spec.IssuerRef.Name, cmapi.IPSANAnnotationKey: "", cmapi.AltNamesAnnotationKey: "example.com", - cmapi.CommonNameAnnotationKey: "example.com", }, }, Data: map[string][]byte{ @@ -1348,7 +1336,6 @@ func TestTemporaryCertificateEnabled(t *testing.T) { cmapi.IssuerNameAnnotationKey: exampleBundle1.certificate.Spec.IssuerRef.Name, cmapi.IPSANAnnotationKey: "", cmapi.AltNamesAnnotationKey: "example.com", - cmapi.CommonNameAnnotationKey: "example.com", }, }, Data: map[string][]byte{ @@ -1378,7 +1365,6 @@ func TestTemporaryCertificateEnabled(t *testing.T) { cmapi.IssuerNameAnnotationKey: exampleBundle1.certificate.Spec.IssuerRef.Name, cmapi.IPSANAnnotationKey: "", cmapi.AltNamesAnnotationKey: "example.com", - cmapi.CommonNameAnnotationKey: "example.com", }, }, Data: map[string][]byte{ @@ -1408,7 +1394,6 @@ func TestTemporaryCertificateEnabled(t *testing.T) { cmapi.IssuerNameAnnotationKey: exampleBundle1.certificate.Spec.IssuerRef.Name, cmapi.IPSANAnnotationKey: "", cmapi.AltNamesAnnotationKey: "example.com", - cmapi.CommonNameAnnotationKey: "example.com", }, }, Data: map[string][]byte{ @@ -1438,7 +1423,6 @@ func TestTemporaryCertificateEnabled(t *testing.T) { cmapi.IssuerNameAnnotationKey: exampleBundle1.certificate.Spec.IssuerRef.Name, cmapi.IPSANAnnotationKey: "", cmapi.AltNamesAnnotationKey: "example.com", - cmapi.CommonNameAnnotationKey: "example.com", }, }, Data: map[string][]byte{ @@ -1468,7 +1452,6 @@ func TestTemporaryCertificateEnabled(t *testing.T) { cmapi.IssuerNameAnnotationKey: exampleBundle1.certificate.Spec.IssuerRef.Name, cmapi.IPSANAnnotationKey: "", cmapi.AltNamesAnnotationKey: "example.com", - cmapi.CommonNameAnnotationKey: "example.com", }, }, Data: map[string][]byte{ @@ -1501,7 +1484,6 @@ func TestTemporaryCertificateEnabled(t *testing.T) { cmapi.IssuerNameAnnotationKey: exampleBundle1.certificate.Spec.IssuerRef.Name, cmapi.IPSANAnnotationKey: "", cmapi.AltNamesAnnotationKey: "example.com", - cmapi.CommonNameAnnotationKey: "example.com", }, }, Data: map[string][]byte{ @@ -1556,7 +1538,6 @@ func TestTemporaryCertificateEnabled(t *testing.T) { cmapi.IssuerNameAnnotationKey: exampleBundle1.certificate.Spec.IssuerRef.Name, cmapi.IPSANAnnotationKey: "", cmapi.AltNamesAnnotationKey: "example.com", - cmapi.CommonNameAnnotationKey: "example.com", }, }, Data: map[string][]byte{ @@ -1968,7 +1949,7 @@ func TestUpdateStatus(t *testing.T) { Type: cmapi.CertificateConditionReady, Status: cmmeta.ConditionFalse, Reason: "DoesNotMatch", - Message: "Common name on TLS certificate not up to date: \"notexample.com\", DNS names on TLS certificate not up to date: [\"notexample.com\"]", + Message: "DNS names on TLS certificate not up to date: [\"notexample.com\"]", LastTransitionTime: &metaFixedClockStart, }), ), diff --git a/pkg/controller/webhookbootstrap/controller.go b/pkg/controller/webhookbootstrap/controller.go index fadfa4ca2..5cbb3b3cc 100644 --- a/pkg/controller/webhookbootstrap/controller.go +++ b/pkg/controller/webhookbootstrap/controller.go @@ -314,6 +314,13 @@ func (c *controller) certificateRequiresIssuance(ctx context.Context, log logr.L return true } + // validate the common name is correct + expectedCN := crt.Spec.CommonName + if expectedCN != cert.Subject.CommonName { + log.Info("certificate common name is not as expected, re-issuing") + return true + } + // validate the dns names are correct expectedDNSNames := pki.DNSNamesForCertificate(crt) if !util.EqualUnsorted(cert.DNSNames, expectedDNSNames) { From 5cdad4eed330dcaacecf009a4350c19f08f6bfc9 Mon Sep 17 00:00:00 2001 From: JoshVanL Date: Mon, 23 Sep 2019 15:29:52 +0100 Subject: [PATCH 04/23] Updates api types Signed-off-by: JoshVanL --- pkg/internal/apis/certmanager/BUILD.bazel | 1 - .../apis/certmanager/v1alpha1/BUILD.bazel | 31 - .../v1alpha1/zz_generated.conversion.go | 2197 ----------------- 3 files changed, 2229 deletions(-) delete mode 100644 pkg/internal/apis/certmanager/v1alpha1/BUILD.bazel delete mode 100644 pkg/internal/apis/certmanager/v1alpha1/zz_generated.conversion.go diff --git a/pkg/internal/apis/certmanager/BUILD.bazel b/pkg/internal/apis/certmanager/BUILD.bazel index 5f92885be..71c205215 100644 --- a/pkg/internal/apis/certmanager/BUILD.bazel +++ b/pkg/internal/apis/certmanager/BUILD.bazel @@ -36,7 +36,6 @@ filegroup( ":package-srcs", "//pkg/internal/apis/certmanager/fuzzer:all-srcs", "//pkg/internal/apis/certmanager/install:all-srcs", - "//pkg/internal/apis/certmanager/v1alpha1:all-srcs", "//pkg/internal/apis/certmanager/v1alpha2:all-srcs", "//pkg/internal/apis/certmanager/validation:all-srcs", ], diff --git a/pkg/internal/apis/certmanager/v1alpha1/BUILD.bazel b/pkg/internal/apis/certmanager/v1alpha1/BUILD.bazel deleted file mode 100644 index 2a836dfd1..000000000 --- a/pkg/internal/apis/certmanager/v1alpha1/BUILD.bazel +++ /dev/null @@ -1,31 +0,0 @@ -load("@io_bazel_rules_go//go:def.bzl", "go_library") - -go_library( - name = "go_default_library", - srcs = ["zz_generated.conversion.go"], - importpath = "github.com/jetstack/cert-manager/pkg/internal/apis/certmanager/v1alpha1", - visibility = ["//pkg:__subpackages__"], - deps = [ - "//pkg/internal/apis/certmanager:go_default_library", - "//vendor/github.com/jetstack/cert-manager/pkg/apis/certmanager/v1alpha1:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", - ], -) - -filegroup( - name = "package-srcs", - srcs = glob(["**"]), - tags = ["automanaged"], - visibility = ["//visibility:private"], -) - -filegroup( - name = "all-srcs", - srcs = [":package-srcs"], - tags = ["automanaged"], - visibility = ["//visibility:public"], -) diff --git a/pkg/internal/apis/certmanager/v1alpha1/zz_generated.conversion.go b/pkg/internal/apis/certmanager/v1alpha1/zz_generated.conversion.go deleted file mode 100644 index aa4bbea4b..000000000 --- a/pkg/internal/apis/certmanager/v1alpha1/zz_generated.conversion.go +++ /dev/null @@ -1,2197 +0,0 @@ -// +build !ignore_autogenerated - -/* -Copyright 2019 The Jetstack cert-manager contributors. - -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 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by conversion-gen. DO NOT EDIT. - -package v1alpha1 - -import ( - unsafe "unsafe" - - v1alpha1 "github.com/jetstack/cert-manager/pkg/apis/certmanager/v1alpha1" - certmanager "github.com/jetstack/cert-manager/pkg/internal/apis/certmanager" - v1 "k8s.io/api/core/v1" - v1beta1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - conversion "k8s.io/apimachinery/pkg/conversion" - runtime "k8s.io/apimachinery/pkg/runtime" -) - -func init() { - localSchemeBuilder.Register(RegisterConversions) -} - -// RegisterConversions adds conversion functions to the given scheme. -// Public to allow building arbitrary schemes. -func RegisterConversions(s *runtime.Scheme) error { - if err := s.AddGeneratedConversionFunc((*v1alpha1.ACMEAuthorization)(nil), (*certmanager.ACMEAuthorization)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1alpha1_ACMEAuthorization_To_certmanager_ACMEAuthorization(a.(*v1alpha1.ACMEAuthorization), b.(*certmanager.ACMEAuthorization), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*certmanager.ACMEAuthorization)(nil), (*v1alpha1.ACMEAuthorization)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_certmanager_ACMEAuthorization_To_v1alpha1_ACMEAuthorization(a.(*certmanager.ACMEAuthorization), b.(*v1alpha1.ACMEAuthorization), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*v1alpha1.ACMEChallenge)(nil), (*certmanager.ACMEChallenge)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1alpha1_ACMEChallenge_To_certmanager_ACMEChallenge(a.(*v1alpha1.ACMEChallenge), b.(*certmanager.ACMEChallenge), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*certmanager.ACMEChallenge)(nil), (*v1alpha1.ACMEChallenge)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_certmanager_ACMEChallenge_To_v1alpha1_ACMEChallenge(a.(*certmanager.ACMEChallenge), b.(*v1alpha1.ACMEChallenge), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*v1alpha1.ACMEChallengeSolver)(nil), (*certmanager.ACMEChallengeSolver)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1alpha1_ACMEChallengeSolver_To_certmanager_ACMEChallengeSolver(a.(*v1alpha1.ACMEChallengeSolver), b.(*certmanager.ACMEChallengeSolver), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*certmanager.ACMEChallengeSolver)(nil), (*v1alpha1.ACMEChallengeSolver)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_certmanager_ACMEChallengeSolver_To_v1alpha1_ACMEChallengeSolver(a.(*certmanager.ACMEChallengeSolver), b.(*v1alpha1.ACMEChallengeSolver), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*v1alpha1.ACMEChallengeSolverDNS01)(nil), (*certmanager.ACMEChallengeSolverDNS01)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1alpha1_ACMEChallengeSolverDNS01_To_certmanager_ACMEChallengeSolverDNS01(a.(*v1alpha1.ACMEChallengeSolverDNS01), b.(*certmanager.ACMEChallengeSolverDNS01), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*certmanager.ACMEChallengeSolverDNS01)(nil), (*v1alpha1.ACMEChallengeSolverDNS01)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_certmanager_ACMEChallengeSolverDNS01_To_v1alpha1_ACMEChallengeSolverDNS01(a.(*certmanager.ACMEChallengeSolverDNS01), b.(*v1alpha1.ACMEChallengeSolverDNS01), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*v1alpha1.ACMEChallengeSolverHTTP01)(nil), (*certmanager.ACMEChallengeSolverHTTP01)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1alpha1_ACMEChallengeSolverHTTP01_To_certmanager_ACMEChallengeSolverHTTP01(a.(*v1alpha1.ACMEChallengeSolverHTTP01), b.(*certmanager.ACMEChallengeSolverHTTP01), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*certmanager.ACMEChallengeSolverHTTP01)(nil), (*v1alpha1.ACMEChallengeSolverHTTP01)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_certmanager_ACMEChallengeSolverHTTP01_To_v1alpha1_ACMEChallengeSolverHTTP01(a.(*certmanager.ACMEChallengeSolverHTTP01), b.(*v1alpha1.ACMEChallengeSolverHTTP01), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*v1alpha1.ACMEChallengeSolverHTTP01Ingress)(nil), (*certmanager.ACMEChallengeSolverHTTP01Ingress)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1alpha1_ACMEChallengeSolverHTTP01Ingress_To_certmanager_ACMEChallengeSolverHTTP01Ingress(a.(*v1alpha1.ACMEChallengeSolverHTTP01Ingress), b.(*certmanager.ACMEChallengeSolverHTTP01Ingress), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*certmanager.ACMEChallengeSolverHTTP01Ingress)(nil), (*v1alpha1.ACMEChallengeSolverHTTP01Ingress)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_certmanager_ACMEChallengeSolverHTTP01Ingress_To_v1alpha1_ACMEChallengeSolverHTTP01Ingress(a.(*certmanager.ACMEChallengeSolverHTTP01Ingress), b.(*v1alpha1.ACMEChallengeSolverHTTP01Ingress), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*v1alpha1.ACMEChallengeSolverHTTP01IngressPodSpec)(nil), (*certmanager.ACMEChallengeSolverHTTP01IngressPodSpec)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1alpha1_ACMEChallengeSolverHTTP01IngressPodSpec_To_certmanager_ACMEChallengeSolverHTTP01IngressPodSpec(a.(*v1alpha1.ACMEChallengeSolverHTTP01IngressPodSpec), b.(*certmanager.ACMEChallengeSolverHTTP01IngressPodSpec), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*certmanager.ACMEChallengeSolverHTTP01IngressPodSpec)(nil), (*v1alpha1.ACMEChallengeSolverHTTP01IngressPodSpec)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_certmanager_ACMEChallengeSolverHTTP01IngressPodSpec_To_v1alpha1_ACMEChallengeSolverHTTP01IngressPodSpec(a.(*certmanager.ACMEChallengeSolverHTTP01IngressPodSpec), b.(*v1alpha1.ACMEChallengeSolverHTTP01IngressPodSpec), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*v1alpha1.ACMEChallengeSolverHTTP01IngressPodTemplate)(nil), (*certmanager.ACMEChallengeSolverHTTP01IngressPodTemplate)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1alpha1_ACMEChallengeSolverHTTP01IngressPodTemplate_To_certmanager_ACMEChallengeSolverHTTP01IngressPodTemplate(a.(*v1alpha1.ACMEChallengeSolverHTTP01IngressPodTemplate), b.(*certmanager.ACMEChallengeSolverHTTP01IngressPodTemplate), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*certmanager.ACMEChallengeSolverHTTP01IngressPodTemplate)(nil), (*v1alpha1.ACMEChallengeSolverHTTP01IngressPodTemplate)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_certmanager_ACMEChallengeSolverHTTP01IngressPodTemplate_To_v1alpha1_ACMEChallengeSolverHTTP01IngressPodTemplate(a.(*certmanager.ACMEChallengeSolverHTTP01IngressPodTemplate), b.(*v1alpha1.ACMEChallengeSolverHTTP01IngressPodTemplate), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*v1alpha1.ACMEIssuer)(nil), (*certmanager.ACMEIssuer)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1alpha1_ACMEIssuer_To_certmanager_ACMEIssuer(a.(*v1alpha1.ACMEIssuer), b.(*certmanager.ACMEIssuer), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*certmanager.ACMEIssuer)(nil), (*v1alpha1.ACMEIssuer)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_certmanager_ACMEIssuer_To_v1alpha1_ACMEIssuer(a.(*certmanager.ACMEIssuer), b.(*v1alpha1.ACMEIssuer), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*v1alpha1.ACMEIssuerDNS01ProviderAcmeDNS)(nil), (*certmanager.ACMEIssuerDNS01ProviderAcmeDNS)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1alpha1_ACMEIssuerDNS01ProviderAcmeDNS_To_certmanager_ACMEIssuerDNS01ProviderAcmeDNS(a.(*v1alpha1.ACMEIssuerDNS01ProviderAcmeDNS), b.(*certmanager.ACMEIssuerDNS01ProviderAcmeDNS), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*certmanager.ACMEIssuerDNS01ProviderAcmeDNS)(nil), (*v1alpha1.ACMEIssuerDNS01ProviderAcmeDNS)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_certmanager_ACMEIssuerDNS01ProviderAcmeDNS_To_v1alpha1_ACMEIssuerDNS01ProviderAcmeDNS(a.(*certmanager.ACMEIssuerDNS01ProviderAcmeDNS), b.(*v1alpha1.ACMEIssuerDNS01ProviderAcmeDNS), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*v1alpha1.ACMEIssuerDNS01ProviderAkamai)(nil), (*certmanager.ACMEIssuerDNS01ProviderAkamai)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1alpha1_ACMEIssuerDNS01ProviderAkamai_To_certmanager_ACMEIssuerDNS01ProviderAkamai(a.(*v1alpha1.ACMEIssuerDNS01ProviderAkamai), b.(*certmanager.ACMEIssuerDNS01ProviderAkamai), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*certmanager.ACMEIssuerDNS01ProviderAkamai)(nil), (*v1alpha1.ACMEIssuerDNS01ProviderAkamai)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_certmanager_ACMEIssuerDNS01ProviderAkamai_To_v1alpha1_ACMEIssuerDNS01ProviderAkamai(a.(*certmanager.ACMEIssuerDNS01ProviderAkamai), b.(*v1alpha1.ACMEIssuerDNS01ProviderAkamai), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*v1alpha1.ACMEIssuerDNS01ProviderAzureDNS)(nil), (*certmanager.ACMEIssuerDNS01ProviderAzureDNS)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1alpha1_ACMEIssuerDNS01ProviderAzureDNS_To_certmanager_ACMEIssuerDNS01ProviderAzureDNS(a.(*v1alpha1.ACMEIssuerDNS01ProviderAzureDNS), b.(*certmanager.ACMEIssuerDNS01ProviderAzureDNS), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*certmanager.ACMEIssuerDNS01ProviderAzureDNS)(nil), (*v1alpha1.ACMEIssuerDNS01ProviderAzureDNS)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_certmanager_ACMEIssuerDNS01ProviderAzureDNS_To_v1alpha1_ACMEIssuerDNS01ProviderAzureDNS(a.(*certmanager.ACMEIssuerDNS01ProviderAzureDNS), b.(*v1alpha1.ACMEIssuerDNS01ProviderAzureDNS), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*v1alpha1.ACMEIssuerDNS01ProviderCloudDNS)(nil), (*certmanager.ACMEIssuerDNS01ProviderCloudDNS)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1alpha1_ACMEIssuerDNS01ProviderCloudDNS_To_certmanager_ACMEIssuerDNS01ProviderCloudDNS(a.(*v1alpha1.ACMEIssuerDNS01ProviderCloudDNS), b.(*certmanager.ACMEIssuerDNS01ProviderCloudDNS), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*certmanager.ACMEIssuerDNS01ProviderCloudDNS)(nil), (*v1alpha1.ACMEIssuerDNS01ProviderCloudDNS)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_certmanager_ACMEIssuerDNS01ProviderCloudDNS_To_v1alpha1_ACMEIssuerDNS01ProviderCloudDNS(a.(*certmanager.ACMEIssuerDNS01ProviderCloudDNS), b.(*v1alpha1.ACMEIssuerDNS01ProviderCloudDNS), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*v1alpha1.ACMEIssuerDNS01ProviderCloudflare)(nil), (*certmanager.ACMEIssuerDNS01ProviderCloudflare)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1alpha1_ACMEIssuerDNS01ProviderCloudflare_To_certmanager_ACMEIssuerDNS01ProviderCloudflare(a.(*v1alpha1.ACMEIssuerDNS01ProviderCloudflare), b.(*certmanager.ACMEIssuerDNS01ProviderCloudflare), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*certmanager.ACMEIssuerDNS01ProviderCloudflare)(nil), (*v1alpha1.ACMEIssuerDNS01ProviderCloudflare)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_certmanager_ACMEIssuerDNS01ProviderCloudflare_To_v1alpha1_ACMEIssuerDNS01ProviderCloudflare(a.(*certmanager.ACMEIssuerDNS01ProviderCloudflare), b.(*v1alpha1.ACMEIssuerDNS01ProviderCloudflare), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*v1alpha1.ACMEIssuerDNS01ProviderDigitalOcean)(nil), (*certmanager.ACMEIssuerDNS01ProviderDigitalOcean)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1alpha1_ACMEIssuerDNS01ProviderDigitalOcean_To_certmanager_ACMEIssuerDNS01ProviderDigitalOcean(a.(*v1alpha1.ACMEIssuerDNS01ProviderDigitalOcean), b.(*certmanager.ACMEIssuerDNS01ProviderDigitalOcean), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*certmanager.ACMEIssuerDNS01ProviderDigitalOcean)(nil), (*v1alpha1.ACMEIssuerDNS01ProviderDigitalOcean)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_certmanager_ACMEIssuerDNS01ProviderDigitalOcean_To_v1alpha1_ACMEIssuerDNS01ProviderDigitalOcean(a.(*certmanager.ACMEIssuerDNS01ProviderDigitalOcean), b.(*v1alpha1.ACMEIssuerDNS01ProviderDigitalOcean), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*v1alpha1.ACMEIssuerDNS01ProviderRFC2136)(nil), (*certmanager.ACMEIssuerDNS01ProviderRFC2136)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1alpha1_ACMEIssuerDNS01ProviderRFC2136_To_certmanager_ACMEIssuerDNS01ProviderRFC2136(a.(*v1alpha1.ACMEIssuerDNS01ProviderRFC2136), b.(*certmanager.ACMEIssuerDNS01ProviderRFC2136), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*certmanager.ACMEIssuerDNS01ProviderRFC2136)(nil), (*v1alpha1.ACMEIssuerDNS01ProviderRFC2136)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_certmanager_ACMEIssuerDNS01ProviderRFC2136_To_v1alpha1_ACMEIssuerDNS01ProviderRFC2136(a.(*certmanager.ACMEIssuerDNS01ProviderRFC2136), b.(*v1alpha1.ACMEIssuerDNS01ProviderRFC2136), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*v1alpha1.ACMEIssuerDNS01ProviderRoute53)(nil), (*certmanager.ACMEIssuerDNS01ProviderRoute53)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1alpha1_ACMEIssuerDNS01ProviderRoute53_To_certmanager_ACMEIssuerDNS01ProviderRoute53(a.(*v1alpha1.ACMEIssuerDNS01ProviderRoute53), b.(*certmanager.ACMEIssuerDNS01ProviderRoute53), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*certmanager.ACMEIssuerDNS01ProviderRoute53)(nil), (*v1alpha1.ACMEIssuerDNS01ProviderRoute53)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_certmanager_ACMEIssuerDNS01ProviderRoute53_To_v1alpha1_ACMEIssuerDNS01ProviderRoute53(a.(*certmanager.ACMEIssuerDNS01ProviderRoute53), b.(*v1alpha1.ACMEIssuerDNS01ProviderRoute53), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*v1alpha1.ACMEIssuerDNS01ProviderWebhook)(nil), (*certmanager.ACMEIssuerDNS01ProviderWebhook)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1alpha1_ACMEIssuerDNS01ProviderWebhook_To_certmanager_ACMEIssuerDNS01ProviderWebhook(a.(*v1alpha1.ACMEIssuerDNS01ProviderWebhook), b.(*certmanager.ACMEIssuerDNS01ProviderWebhook), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*certmanager.ACMEIssuerDNS01ProviderWebhook)(nil), (*v1alpha1.ACMEIssuerDNS01ProviderWebhook)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_certmanager_ACMEIssuerDNS01ProviderWebhook_To_v1alpha1_ACMEIssuerDNS01ProviderWebhook(a.(*certmanager.ACMEIssuerDNS01ProviderWebhook), b.(*v1alpha1.ACMEIssuerDNS01ProviderWebhook), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*v1alpha1.ACMEIssuerStatus)(nil), (*certmanager.ACMEIssuerStatus)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1alpha1_ACMEIssuerStatus_To_certmanager_ACMEIssuerStatus(a.(*v1alpha1.ACMEIssuerStatus), b.(*certmanager.ACMEIssuerStatus), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*certmanager.ACMEIssuerStatus)(nil), (*v1alpha1.ACMEIssuerStatus)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_certmanager_ACMEIssuerStatus_To_v1alpha1_ACMEIssuerStatus(a.(*certmanager.ACMEIssuerStatus), b.(*v1alpha1.ACMEIssuerStatus), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*v1alpha1.CAIssuer)(nil), (*certmanager.CAIssuer)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1alpha1_CAIssuer_To_certmanager_CAIssuer(a.(*v1alpha1.CAIssuer), b.(*certmanager.CAIssuer), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*certmanager.CAIssuer)(nil), (*v1alpha1.CAIssuer)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_certmanager_CAIssuer_To_v1alpha1_CAIssuer(a.(*certmanager.CAIssuer), b.(*v1alpha1.CAIssuer), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*v1alpha1.Certificate)(nil), (*certmanager.Certificate)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1alpha1_Certificate_To_certmanager_Certificate(a.(*v1alpha1.Certificate), b.(*certmanager.Certificate), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*certmanager.Certificate)(nil), (*v1alpha1.Certificate)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_certmanager_Certificate_To_v1alpha1_Certificate(a.(*certmanager.Certificate), b.(*v1alpha1.Certificate), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*v1alpha1.CertificateCondition)(nil), (*certmanager.CertificateCondition)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1alpha1_CertificateCondition_To_certmanager_CertificateCondition(a.(*v1alpha1.CertificateCondition), b.(*certmanager.CertificateCondition), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*certmanager.CertificateCondition)(nil), (*v1alpha1.CertificateCondition)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_certmanager_CertificateCondition_To_v1alpha1_CertificateCondition(a.(*certmanager.CertificateCondition), b.(*v1alpha1.CertificateCondition), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*v1alpha1.CertificateDNSNameSelector)(nil), (*certmanager.CertificateDNSNameSelector)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1alpha1_CertificateDNSNameSelector_To_certmanager_CertificateDNSNameSelector(a.(*v1alpha1.CertificateDNSNameSelector), b.(*certmanager.CertificateDNSNameSelector), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*certmanager.CertificateDNSNameSelector)(nil), (*v1alpha1.CertificateDNSNameSelector)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_certmanager_CertificateDNSNameSelector_To_v1alpha1_CertificateDNSNameSelector(a.(*certmanager.CertificateDNSNameSelector), b.(*v1alpha1.CertificateDNSNameSelector), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*v1alpha1.CertificateList)(nil), (*certmanager.CertificateList)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1alpha1_CertificateList_To_certmanager_CertificateList(a.(*v1alpha1.CertificateList), b.(*certmanager.CertificateList), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*certmanager.CertificateList)(nil), (*v1alpha1.CertificateList)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_certmanager_CertificateList_To_v1alpha1_CertificateList(a.(*certmanager.CertificateList), b.(*v1alpha1.CertificateList), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*v1alpha1.CertificateRequest)(nil), (*certmanager.CertificateRequest)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1alpha1_CertificateRequest_To_certmanager_CertificateRequest(a.(*v1alpha1.CertificateRequest), b.(*certmanager.CertificateRequest), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*certmanager.CertificateRequest)(nil), (*v1alpha1.CertificateRequest)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_certmanager_CertificateRequest_To_v1alpha1_CertificateRequest(a.(*certmanager.CertificateRequest), b.(*v1alpha1.CertificateRequest), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*v1alpha1.CertificateRequestCondition)(nil), (*certmanager.CertificateRequestCondition)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1alpha1_CertificateRequestCondition_To_certmanager_CertificateRequestCondition(a.(*v1alpha1.CertificateRequestCondition), b.(*certmanager.CertificateRequestCondition), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*certmanager.CertificateRequestCondition)(nil), (*v1alpha1.CertificateRequestCondition)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_certmanager_CertificateRequestCondition_To_v1alpha1_CertificateRequestCondition(a.(*certmanager.CertificateRequestCondition), b.(*v1alpha1.CertificateRequestCondition), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*v1alpha1.CertificateRequestList)(nil), (*certmanager.CertificateRequestList)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1alpha1_CertificateRequestList_To_certmanager_CertificateRequestList(a.(*v1alpha1.CertificateRequestList), b.(*certmanager.CertificateRequestList), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*certmanager.CertificateRequestList)(nil), (*v1alpha1.CertificateRequestList)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_certmanager_CertificateRequestList_To_v1alpha1_CertificateRequestList(a.(*certmanager.CertificateRequestList), b.(*v1alpha1.CertificateRequestList), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*v1alpha1.CertificateRequestSpec)(nil), (*certmanager.CertificateRequestSpec)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1alpha1_CertificateRequestSpec_To_certmanager_CertificateRequestSpec(a.(*v1alpha1.CertificateRequestSpec), b.(*certmanager.CertificateRequestSpec), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*certmanager.CertificateRequestSpec)(nil), (*v1alpha1.CertificateRequestSpec)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_certmanager_CertificateRequestSpec_To_v1alpha1_CertificateRequestSpec(a.(*certmanager.CertificateRequestSpec), b.(*v1alpha1.CertificateRequestSpec), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*v1alpha1.CertificateRequestStatus)(nil), (*certmanager.CertificateRequestStatus)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1alpha1_CertificateRequestStatus_To_certmanager_CertificateRequestStatus(a.(*v1alpha1.CertificateRequestStatus), b.(*certmanager.CertificateRequestStatus), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*certmanager.CertificateRequestStatus)(nil), (*v1alpha1.CertificateRequestStatus)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_certmanager_CertificateRequestStatus_To_v1alpha1_CertificateRequestStatus(a.(*certmanager.CertificateRequestStatus), b.(*v1alpha1.CertificateRequestStatus), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*v1alpha1.CertificateSpec)(nil), (*certmanager.CertificateSpec)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1alpha1_CertificateSpec_To_certmanager_CertificateSpec(a.(*v1alpha1.CertificateSpec), b.(*certmanager.CertificateSpec), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*certmanager.CertificateSpec)(nil), (*v1alpha1.CertificateSpec)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_certmanager_CertificateSpec_To_v1alpha1_CertificateSpec(a.(*certmanager.CertificateSpec), b.(*v1alpha1.CertificateSpec), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*v1alpha1.CertificateStatus)(nil), (*certmanager.CertificateStatus)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1alpha1_CertificateStatus_To_certmanager_CertificateStatus(a.(*v1alpha1.CertificateStatus), b.(*certmanager.CertificateStatus), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*certmanager.CertificateStatus)(nil), (*v1alpha1.CertificateStatus)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_certmanager_CertificateStatus_To_v1alpha1_CertificateStatus(a.(*certmanager.CertificateStatus), b.(*v1alpha1.CertificateStatus), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*v1alpha1.Challenge)(nil), (*certmanager.Challenge)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1alpha1_Challenge_To_certmanager_Challenge(a.(*v1alpha1.Challenge), b.(*certmanager.Challenge), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*certmanager.Challenge)(nil), (*v1alpha1.Challenge)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_certmanager_Challenge_To_v1alpha1_Challenge(a.(*certmanager.Challenge), b.(*v1alpha1.Challenge), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*v1alpha1.ChallengeList)(nil), (*certmanager.ChallengeList)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1alpha1_ChallengeList_To_certmanager_ChallengeList(a.(*v1alpha1.ChallengeList), b.(*certmanager.ChallengeList), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*certmanager.ChallengeList)(nil), (*v1alpha1.ChallengeList)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_certmanager_ChallengeList_To_v1alpha1_ChallengeList(a.(*certmanager.ChallengeList), b.(*v1alpha1.ChallengeList), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*v1alpha1.ChallengeSpec)(nil), (*certmanager.ChallengeSpec)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1alpha1_ChallengeSpec_To_certmanager_ChallengeSpec(a.(*v1alpha1.ChallengeSpec), b.(*certmanager.ChallengeSpec), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*certmanager.ChallengeSpec)(nil), (*v1alpha1.ChallengeSpec)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_certmanager_ChallengeSpec_To_v1alpha1_ChallengeSpec(a.(*certmanager.ChallengeSpec), b.(*v1alpha1.ChallengeSpec), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*v1alpha1.ChallengeStatus)(nil), (*certmanager.ChallengeStatus)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1alpha1_ChallengeStatus_To_certmanager_ChallengeStatus(a.(*v1alpha1.ChallengeStatus), b.(*certmanager.ChallengeStatus), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*certmanager.ChallengeStatus)(nil), (*v1alpha1.ChallengeStatus)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_certmanager_ChallengeStatus_To_v1alpha1_ChallengeStatus(a.(*certmanager.ChallengeStatus), b.(*v1alpha1.ChallengeStatus), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*v1alpha1.ClusterIssuer)(nil), (*certmanager.ClusterIssuer)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1alpha1_ClusterIssuer_To_certmanager_ClusterIssuer(a.(*v1alpha1.ClusterIssuer), b.(*certmanager.ClusterIssuer), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*certmanager.ClusterIssuer)(nil), (*v1alpha1.ClusterIssuer)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_certmanager_ClusterIssuer_To_v1alpha1_ClusterIssuer(a.(*certmanager.ClusterIssuer), b.(*v1alpha1.ClusterIssuer), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*v1alpha1.ClusterIssuerList)(nil), (*certmanager.ClusterIssuerList)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1alpha1_ClusterIssuerList_To_certmanager_ClusterIssuerList(a.(*v1alpha1.ClusterIssuerList), b.(*certmanager.ClusterIssuerList), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*certmanager.ClusterIssuerList)(nil), (*v1alpha1.ClusterIssuerList)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_certmanager_ClusterIssuerList_To_v1alpha1_ClusterIssuerList(a.(*certmanager.ClusterIssuerList), b.(*v1alpha1.ClusterIssuerList), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*v1alpha1.Issuer)(nil), (*certmanager.Issuer)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1alpha1_Issuer_To_certmanager_Issuer(a.(*v1alpha1.Issuer), b.(*certmanager.Issuer), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*certmanager.Issuer)(nil), (*v1alpha1.Issuer)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_certmanager_Issuer_To_v1alpha1_Issuer(a.(*certmanager.Issuer), b.(*v1alpha1.Issuer), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*v1alpha1.IssuerCondition)(nil), (*certmanager.IssuerCondition)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1alpha1_IssuerCondition_To_certmanager_IssuerCondition(a.(*v1alpha1.IssuerCondition), b.(*certmanager.IssuerCondition), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*certmanager.IssuerCondition)(nil), (*v1alpha1.IssuerCondition)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_certmanager_IssuerCondition_To_v1alpha1_IssuerCondition(a.(*certmanager.IssuerCondition), b.(*v1alpha1.IssuerCondition), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*v1alpha1.IssuerConfig)(nil), (*certmanager.IssuerConfig)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1alpha1_IssuerConfig_To_certmanager_IssuerConfig(a.(*v1alpha1.IssuerConfig), b.(*certmanager.IssuerConfig), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*certmanager.IssuerConfig)(nil), (*v1alpha1.IssuerConfig)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_certmanager_IssuerConfig_To_v1alpha1_IssuerConfig(a.(*certmanager.IssuerConfig), b.(*v1alpha1.IssuerConfig), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*v1alpha1.IssuerList)(nil), (*certmanager.IssuerList)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1alpha1_IssuerList_To_certmanager_IssuerList(a.(*v1alpha1.IssuerList), b.(*certmanager.IssuerList), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*certmanager.IssuerList)(nil), (*v1alpha1.IssuerList)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_certmanager_IssuerList_To_v1alpha1_IssuerList(a.(*certmanager.IssuerList), b.(*v1alpha1.IssuerList), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*v1alpha1.IssuerSpec)(nil), (*certmanager.IssuerSpec)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1alpha1_IssuerSpec_To_certmanager_IssuerSpec(a.(*v1alpha1.IssuerSpec), b.(*certmanager.IssuerSpec), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*certmanager.IssuerSpec)(nil), (*v1alpha1.IssuerSpec)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_certmanager_IssuerSpec_To_v1alpha1_IssuerSpec(a.(*certmanager.IssuerSpec), b.(*v1alpha1.IssuerSpec), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*v1alpha1.IssuerStatus)(nil), (*certmanager.IssuerStatus)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1alpha1_IssuerStatus_To_certmanager_IssuerStatus(a.(*v1alpha1.IssuerStatus), b.(*certmanager.IssuerStatus), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*certmanager.IssuerStatus)(nil), (*v1alpha1.IssuerStatus)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_certmanager_IssuerStatus_To_v1alpha1_IssuerStatus(a.(*certmanager.IssuerStatus), b.(*v1alpha1.IssuerStatus), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*v1alpha1.LocalObjectReference)(nil), (*certmanager.LocalObjectReference)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1alpha1_LocalObjectReference_To_certmanager_LocalObjectReference(a.(*v1alpha1.LocalObjectReference), b.(*certmanager.LocalObjectReference), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*certmanager.LocalObjectReference)(nil), (*v1alpha1.LocalObjectReference)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_certmanager_LocalObjectReference_To_v1alpha1_LocalObjectReference(a.(*certmanager.LocalObjectReference), b.(*v1alpha1.LocalObjectReference), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*v1alpha1.ObjectReference)(nil), (*certmanager.ObjectReference)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1alpha1_ObjectReference_To_certmanager_ObjectReference(a.(*v1alpha1.ObjectReference), b.(*certmanager.ObjectReference), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*certmanager.ObjectReference)(nil), (*v1alpha1.ObjectReference)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_certmanager_ObjectReference_To_v1alpha1_ObjectReference(a.(*certmanager.ObjectReference), b.(*v1alpha1.ObjectReference), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*v1alpha1.Order)(nil), (*certmanager.Order)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1alpha1_Order_To_certmanager_Order(a.(*v1alpha1.Order), b.(*certmanager.Order), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*certmanager.Order)(nil), (*v1alpha1.Order)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_certmanager_Order_To_v1alpha1_Order(a.(*certmanager.Order), b.(*v1alpha1.Order), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*v1alpha1.OrderList)(nil), (*certmanager.OrderList)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1alpha1_OrderList_To_certmanager_OrderList(a.(*v1alpha1.OrderList), b.(*certmanager.OrderList), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*certmanager.OrderList)(nil), (*v1alpha1.OrderList)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_certmanager_OrderList_To_v1alpha1_OrderList(a.(*certmanager.OrderList), b.(*v1alpha1.OrderList), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*v1alpha1.OrderSpec)(nil), (*certmanager.OrderSpec)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1alpha1_OrderSpec_To_certmanager_OrderSpec(a.(*v1alpha1.OrderSpec), b.(*certmanager.OrderSpec), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*certmanager.OrderSpec)(nil), (*v1alpha1.OrderSpec)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_certmanager_OrderSpec_To_v1alpha1_OrderSpec(a.(*certmanager.OrderSpec), b.(*v1alpha1.OrderSpec), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*v1alpha1.OrderStatus)(nil), (*certmanager.OrderStatus)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1alpha1_OrderStatus_To_certmanager_OrderStatus(a.(*v1alpha1.OrderStatus), b.(*certmanager.OrderStatus), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*certmanager.OrderStatus)(nil), (*v1alpha1.OrderStatus)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_certmanager_OrderStatus_To_v1alpha1_OrderStatus(a.(*certmanager.OrderStatus), b.(*v1alpha1.OrderStatus), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*v1alpha1.SecretKeySelector)(nil), (*certmanager.SecretKeySelector)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1alpha1_SecretKeySelector_To_certmanager_SecretKeySelector(a.(*v1alpha1.SecretKeySelector), b.(*certmanager.SecretKeySelector), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*certmanager.SecretKeySelector)(nil), (*v1alpha1.SecretKeySelector)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_certmanager_SecretKeySelector_To_v1alpha1_SecretKeySelector(a.(*certmanager.SecretKeySelector), b.(*v1alpha1.SecretKeySelector), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*v1alpha1.SelfSignedIssuer)(nil), (*certmanager.SelfSignedIssuer)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1alpha1_SelfSignedIssuer_To_certmanager_SelfSignedIssuer(a.(*v1alpha1.SelfSignedIssuer), b.(*certmanager.SelfSignedIssuer), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*certmanager.SelfSignedIssuer)(nil), (*v1alpha1.SelfSignedIssuer)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_certmanager_SelfSignedIssuer_To_v1alpha1_SelfSignedIssuer(a.(*certmanager.SelfSignedIssuer), b.(*v1alpha1.SelfSignedIssuer), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*v1alpha1.VaultAppRole)(nil), (*certmanager.VaultAppRole)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1alpha1_VaultAppRole_To_certmanager_VaultAppRole(a.(*v1alpha1.VaultAppRole), b.(*certmanager.VaultAppRole), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*certmanager.VaultAppRole)(nil), (*v1alpha1.VaultAppRole)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_certmanager_VaultAppRole_To_v1alpha1_VaultAppRole(a.(*certmanager.VaultAppRole), b.(*v1alpha1.VaultAppRole), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*v1alpha1.VaultAuth)(nil), (*certmanager.VaultAuth)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1alpha1_VaultAuth_To_certmanager_VaultAuth(a.(*v1alpha1.VaultAuth), b.(*certmanager.VaultAuth), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*certmanager.VaultAuth)(nil), (*v1alpha1.VaultAuth)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_certmanager_VaultAuth_To_v1alpha1_VaultAuth(a.(*certmanager.VaultAuth), b.(*v1alpha1.VaultAuth), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*v1alpha1.VaultIssuer)(nil), (*certmanager.VaultIssuer)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1alpha1_VaultIssuer_To_certmanager_VaultIssuer(a.(*v1alpha1.VaultIssuer), b.(*certmanager.VaultIssuer), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*certmanager.VaultIssuer)(nil), (*v1alpha1.VaultIssuer)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_certmanager_VaultIssuer_To_v1alpha1_VaultIssuer(a.(*certmanager.VaultIssuer), b.(*v1alpha1.VaultIssuer), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*v1alpha1.VenafiCloud)(nil), (*certmanager.VenafiCloud)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1alpha1_VenafiCloud_To_certmanager_VenafiCloud(a.(*v1alpha1.VenafiCloud), b.(*certmanager.VenafiCloud), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*certmanager.VenafiCloud)(nil), (*v1alpha1.VenafiCloud)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_certmanager_VenafiCloud_To_v1alpha1_VenafiCloud(a.(*certmanager.VenafiCloud), b.(*v1alpha1.VenafiCloud), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*v1alpha1.VenafiIssuer)(nil), (*certmanager.VenafiIssuer)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1alpha1_VenafiIssuer_To_certmanager_VenafiIssuer(a.(*v1alpha1.VenafiIssuer), b.(*certmanager.VenafiIssuer), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*certmanager.VenafiIssuer)(nil), (*v1alpha1.VenafiIssuer)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_certmanager_VenafiIssuer_To_v1alpha1_VenafiIssuer(a.(*certmanager.VenafiIssuer), b.(*v1alpha1.VenafiIssuer), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*v1alpha1.VenafiTPP)(nil), (*certmanager.VenafiTPP)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1alpha1_VenafiTPP_To_certmanager_VenafiTPP(a.(*v1alpha1.VenafiTPP), b.(*certmanager.VenafiTPP), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*certmanager.VenafiTPP)(nil), (*v1alpha1.VenafiTPP)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_certmanager_VenafiTPP_To_v1alpha1_VenafiTPP(a.(*certmanager.VenafiTPP), b.(*v1alpha1.VenafiTPP), scope) - }); err != nil { - return err - } - return nil -} - -func autoConvert_v1alpha1_ACMEAuthorization_To_certmanager_ACMEAuthorization(in *v1alpha1.ACMEAuthorization, out *certmanager.ACMEAuthorization, s conversion.Scope) error { - out.URL = in.URL - out.Identifier = in.Identifier - out.Wildcard = in.Wildcard - out.Challenges = *(*[]certmanager.ACMEChallenge)(unsafe.Pointer(&in.Challenges)) - return nil -} - -// Convert_v1alpha1_ACMEAuthorization_To_certmanager_ACMEAuthorization is an autogenerated conversion function. -func Convert_v1alpha1_ACMEAuthorization_To_certmanager_ACMEAuthorization(in *v1alpha1.ACMEAuthorization, out *certmanager.ACMEAuthorization, s conversion.Scope) error { - return autoConvert_v1alpha1_ACMEAuthorization_To_certmanager_ACMEAuthorization(in, out, s) -} - -func autoConvert_certmanager_ACMEAuthorization_To_v1alpha1_ACMEAuthorization(in *certmanager.ACMEAuthorization, out *v1alpha1.ACMEAuthorization, s conversion.Scope) error { - out.URL = in.URL - out.Identifier = in.Identifier - out.Wildcard = in.Wildcard - out.Challenges = *(*[]v1alpha1.ACMEChallenge)(unsafe.Pointer(&in.Challenges)) - return nil -} - -// Convert_certmanager_ACMEAuthorization_To_v1alpha1_ACMEAuthorization is an autogenerated conversion function. -func Convert_certmanager_ACMEAuthorization_To_v1alpha1_ACMEAuthorization(in *certmanager.ACMEAuthorization, out *v1alpha1.ACMEAuthorization, s conversion.Scope) error { - return autoConvert_certmanager_ACMEAuthorization_To_v1alpha1_ACMEAuthorization(in, out, s) -} - -func autoConvert_v1alpha1_ACMEChallenge_To_certmanager_ACMEChallenge(in *v1alpha1.ACMEChallenge, out *certmanager.ACMEChallenge, s conversion.Scope) error { - out.URL = in.URL - out.Token = in.Token - out.Type = certmanager.ACMEChallengeType(in.Type) - return nil -} - -// Convert_v1alpha1_ACMEChallenge_To_certmanager_ACMEChallenge is an autogenerated conversion function. -func Convert_v1alpha1_ACMEChallenge_To_certmanager_ACMEChallenge(in *v1alpha1.ACMEChallenge, out *certmanager.ACMEChallenge, s conversion.Scope) error { - return autoConvert_v1alpha1_ACMEChallenge_To_certmanager_ACMEChallenge(in, out, s) -} - -func autoConvert_certmanager_ACMEChallenge_To_v1alpha1_ACMEChallenge(in *certmanager.ACMEChallenge, out *v1alpha1.ACMEChallenge, s conversion.Scope) error { - out.URL = in.URL - out.Token = in.Token - out.Type = v1alpha1.ACMEChallengeType(in.Type) - return nil -} - -// Convert_certmanager_ACMEChallenge_To_v1alpha1_ACMEChallenge is an autogenerated conversion function. -func Convert_certmanager_ACMEChallenge_To_v1alpha1_ACMEChallenge(in *certmanager.ACMEChallenge, out *v1alpha1.ACMEChallenge, s conversion.Scope) error { - return autoConvert_certmanager_ACMEChallenge_To_v1alpha1_ACMEChallenge(in, out, s) -} - -func autoConvert_v1alpha1_ACMEChallengeSolver_To_certmanager_ACMEChallengeSolver(in *v1alpha1.ACMEChallengeSolver, out *certmanager.ACMEChallengeSolver, s conversion.Scope) error { - out.Selector = (*certmanager.CertificateDNSNameSelector)(unsafe.Pointer(in.Selector)) - out.HTTP01 = (*certmanager.ACMEChallengeSolverHTTP01)(unsafe.Pointer(in.HTTP01)) - out.DNS01 = (*certmanager.ACMEChallengeSolverDNS01)(unsafe.Pointer(in.DNS01)) - return nil -} - -// Convert_v1alpha1_ACMEChallengeSolver_To_certmanager_ACMEChallengeSolver is an autogenerated conversion function. -func Convert_v1alpha1_ACMEChallengeSolver_To_certmanager_ACMEChallengeSolver(in *v1alpha1.ACMEChallengeSolver, out *certmanager.ACMEChallengeSolver, s conversion.Scope) error { - return autoConvert_v1alpha1_ACMEChallengeSolver_To_certmanager_ACMEChallengeSolver(in, out, s) -} - -func autoConvert_certmanager_ACMEChallengeSolver_To_v1alpha1_ACMEChallengeSolver(in *certmanager.ACMEChallengeSolver, out *v1alpha1.ACMEChallengeSolver, s conversion.Scope) error { - out.Selector = (*v1alpha1.CertificateDNSNameSelector)(unsafe.Pointer(in.Selector)) - out.HTTP01 = (*v1alpha1.ACMEChallengeSolverHTTP01)(unsafe.Pointer(in.HTTP01)) - out.DNS01 = (*v1alpha1.ACMEChallengeSolverDNS01)(unsafe.Pointer(in.DNS01)) - return nil -} - -// Convert_certmanager_ACMEChallengeSolver_To_v1alpha1_ACMEChallengeSolver is an autogenerated conversion function. -func Convert_certmanager_ACMEChallengeSolver_To_v1alpha1_ACMEChallengeSolver(in *certmanager.ACMEChallengeSolver, out *v1alpha1.ACMEChallengeSolver, s conversion.Scope) error { - return autoConvert_certmanager_ACMEChallengeSolver_To_v1alpha1_ACMEChallengeSolver(in, out, s) -} - -func autoConvert_v1alpha1_ACMEChallengeSolverDNS01_To_certmanager_ACMEChallengeSolverDNS01(in *v1alpha1.ACMEChallengeSolverDNS01, out *certmanager.ACMEChallengeSolverDNS01, s conversion.Scope) error { - out.CNAMEStrategy = certmanager.CNAMEStrategy(in.CNAMEStrategy) - out.Akamai = (*certmanager.ACMEIssuerDNS01ProviderAkamai)(unsafe.Pointer(in.Akamai)) - out.CloudDNS = (*certmanager.ACMEIssuerDNS01ProviderCloudDNS)(unsafe.Pointer(in.CloudDNS)) - out.Cloudflare = (*certmanager.ACMEIssuerDNS01ProviderCloudflare)(unsafe.Pointer(in.Cloudflare)) - out.Route53 = (*certmanager.ACMEIssuerDNS01ProviderRoute53)(unsafe.Pointer(in.Route53)) - out.AzureDNS = (*certmanager.ACMEIssuerDNS01ProviderAzureDNS)(unsafe.Pointer(in.AzureDNS)) - out.DigitalOcean = (*certmanager.ACMEIssuerDNS01ProviderDigitalOcean)(unsafe.Pointer(in.DigitalOcean)) - out.AcmeDNS = (*certmanager.ACMEIssuerDNS01ProviderAcmeDNS)(unsafe.Pointer(in.AcmeDNS)) - out.RFC2136 = (*certmanager.ACMEIssuerDNS01ProviderRFC2136)(unsafe.Pointer(in.RFC2136)) - out.Webhook = (*certmanager.ACMEIssuerDNS01ProviderWebhook)(unsafe.Pointer(in.Webhook)) - return nil -} - -// Convert_v1alpha1_ACMEChallengeSolverDNS01_To_certmanager_ACMEChallengeSolverDNS01 is an autogenerated conversion function. -func Convert_v1alpha1_ACMEChallengeSolverDNS01_To_certmanager_ACMEChallengeSolverDNS01(in *v1alpha1.ACMEChallengeSolverDNS01, out *certmanager.ACMEChallengeSolverDNS01, s conversion.Scope) error { - return autoConvert_v1alpha1_ACMEChallengeSolverDNS01_To_certmanager_ACMEChallengeSolverDNS01(in, out, s) -} - -func autoConvert_certmanager_ACMEChallengeSolverDNS01_To_v1alpha1_ACMEChallengeSolverDNS01(in *certmanager.ACMEChallengeSolverDNS01, out *v1alpha1.ACMEChallengeSolverDNS01, s conversion.Scope) error { - out.CNAMEStrategy = v1alpha1.CNAMEStrategy(in.CNAMEStrategy) - out.Akamai = (*v1alpha1.ACMEIssuerDNS01ProviderAkamai)(unsafe.Pointer(in.Akamai)) - out.CloudDNS = (*v1alpha1.ACMEIssuerDNS01ProviderCloudDNS)(unsafe.Pointer(in.CloudDNS)) - out.Cloudflare = (*v1alpha1.ACMEIssuerDNS01ProviderCloudflare)(unsafe.Pointer(in.Cloudflare)) - out.Route53 = (*v1alpha1.ACMEIssuerDNS01ProviderRoute53)(unsafe.Pointer(in.Route53)) - out.AzureDNS = (*v1alpha1.ACMEIssuerDNS01ProviderAzureDNS)(unsafe.Pointer(in.AzureDNS)) - out.DigitalOcean = (*v1alpha1.ACMEIssuerDNS01ProviderDigitalOcean)(unsafe.Pointer(in.DigitalOcean)) - out.AcmeDNS = (*v1alpha1.ACMEIssuerDNS01ProviderAcmeDNS)(unsafe.Pointer(in.AcmeDNS)) - out.RFC2136 = (*v1alpha1.ACMEIssuerDNS01ProviderRFC2136)(unsafe.Pointer(in.RFC2136)) - out.Webhook = (*v1alpha1.ACMEIssuerDNS01ProviderWebhook)(unsafe.Pointer(in.Webhook)) - return nil -} - -// Convert_certmanager_ACMEChallengeSolverDNS01_To_v1alpha1_ACMEChallengeSolverDNS01 is an autogenerated conversion function. -func Convert_certmanager_ACMEChallengeSolverDNS01_To_v1alpha1_ACMEChallengeSolverDNS01(in *certmanager.ACMEChallengeSolverDNS01, out *v1alpha1.ACMEChallengeSolverDNS01, s conversion.Scope) error { - return autoConvert_certmanager_ACMEChallengeSolverDNS01_To_v1alpha1_ACMEChallengeSolverDNS01(in, out, s) -} - -func autoConvert_v1alpha1_ACMEChallengeSolverHTTP01_To_certmanager_ACMEChallengeSolverHTTP01(in *v1alpha1.ACMEChallengeSolverHTTP01, out *certmanager.ACMEChallengeSolverHTTP01, s conversion.Scope) error { - out.Ingress = (*certmanager.ACMEChallengeSolverHTTP01Ingress)(unsafe.Pointer(in.Ingress)) - return nil -} - -// Convert_v1alpha1_ACMEChallengeSolverHTTP01_To_certmanager_ACMEChallengeSolverHTTP01 is an autogenerated conversion function. -func Convert_v1alpha1_ACMEChallengeSolverHTTP01_To_certmanager_ACMEChallengeSolverHTTP01(in *v1alpha1.ACMEChallengeSolverHTTP01, out *certmanager.ACMEChallengeSolverHTTP01, s conversion.Scope) error { - return autoConvert_v1alpha1_ACMEChallengeSolverHTTP01_To_certmanager_ACMEChallengeSolverHTTP01(in, out, s) -} - -func autoConvert_certmanager_ACMEChallengeSolverHTTP01_To_v1alpha1_ACMEChallengeSolverHTTP01(in *certmanager.ACMEChallengeSolverHTTP01, out *v1alpha1.ACMEChallengeSolverHTTP01, s conversion.Scope) error { - out.Ingress = (*v1alpha1.ACMEChallengeSolverHTTP01Ingress)(unsafe.Pointer(in.Ingress)) - return nil -} - -// Convert_certmanager_ACMEChallengeSolverHTTP01_To_v1alpha1_ACMEChallengeSolverHTTP01 is an autogenerated conversion function. -func Convert_certmanager_ACMEChallengeSolverHTTP01_To_v1alpha1_ACMEChallengeSolverHTTP01(in *certmanager.ACMEChallengeSolverHTTP01, out *v1alpha1.ACMEChallengeSolverHTTP01, s conversion.Scope) error { - return autoConvert_certmanager_ACMEChallengeSolverHTTP01_To_v1alpha1_ACMEChallengeSolverHTTP01(in, out, s) -} - -func autoConvert_v1alpha1_ACMEChallengeSolverHTTP01Ingress_To_certmanager_ACMEChallengeSolverHTTP01Ingress(in *v1alpha1.ACMEChallengeSolverHTTP01Ingress, out *certmanager.ACMEChallengeSolverHTTP01Ingress, s conversion.Scope) error { - out.ServiceType = v1.ServiceType(in.ServiceType) - out.Class = (*string)(unsafe.Pointer(in.Class)) - out.Name = in.Name - out.PodTemplate = (*certmanager.ACMEChallengeSolverHTTP01IngressPodTemplate)(unsafe.Pointer(in.PodTemplate)) - return nil -} - -// Convert_v1alpha1_ACMEChallengeSolverHTTP01Ingress_To_certmanager_ACMEChallengeSolverHTTP01Ingress is an autogenerated conversion function. -func Convert_v1alpha1_ACMEChallengeSolverHTTP01Ingress_To_certmanager_ACMEChallengeSolverHTTP01Ingress(in *v1alpha1.ACMEChallengeSolverHTTP01Ingress, out *certmanager.ACMEChallengeSolverHTTP01Ingress, s conversion.Scope) error { - return autoConvert_v1alpha1_ACMEChallengeSolverHTTP01Ingress_To_certmanager_ACMEChallengeSolverHTTP01Ingress(in, out, s) -} - -func autoConvert_certmanager_ACMEChallengeSolverHTTP01Ingress_To_v1alpha1_ACMEChallengeSolverHTTP01Ingress(in *certmanager.ACMEChallengeSolverHTTP01Ingress, out *v1alpha1.ACMEChallengeSolverHTTP01Ingress, s conversion.Scope) error { - out.ServiceType = v1.ServiceType(in.ServiceType) - out.Class = (*string)(unsafe.Pointer(in.Class)) - out.Name = in.Name - out.PodTemplate = (*v1alpha1.ACMEChallengeSolverHTTP01IngressPodTemplate)(unsafe.Pointer(in.PodTemplate)) - return nil -} - -// Convert_certmanager_ACMEChallengeSolverHTTP01Ingress_To_v1alpha1_ACMEChallengeSolverHTTP01Ingress is an autogenerated conversion function. -func Convert_certmanager_ACMEChallengeSolverHTTP01Ingress_To_v1alpha1_ACMEChallengeSolverHTTP01Ingress(in *certmanager.ACMEChallengeSolverHTTP01Ingress, out *v1alpha1.ACMEChallengeSolverHTTP01Ingress, s conversion.Scope) error { - return autoConvert_certmanager_ACMEChallengeSolverHTTP01Ingress_To_v1alpha1_ACMEChallengeSolverHTTP01Ingress(in, out, s) -} - -func autoConvert_v1alpha1_ACMEChallengeSolverHTTP01IngressPodSpec_To_certmanager_ACMEChallengeSolverHTTP01IngressPodSpec(in *v1alpha1.ACMEChallengeSolverHTTP01IngressPodSpec, out *certmanager.ACMEChallengeSolverHTTP01IngressPodSpec, s conversion.Scope) error { - out.NodeSelector = *(*map[string]string)(unsafe.Pointer(&in.NodeSelector)) - out.Affinity = (*v1.Affinity)(unsafe.Pointer(in.Affinity)) - out.Tolerations = *(*[]v1.Toleration)(unsafe.Pointer(&in.Tolerations)) - return nil -} - -// Convert_v1alpha1_ACMEChallengeSolverHTTP01IngressPodSpec_To_certmanager_ACMEChallengeSolverHTTP01IngressPodSpec is an autogenerated conversion function. -func Convert_v1alpha1_ACMEChallengeSolverHTTP01IngressPodSpec_To_certmanager_ACMEChallengeSolverHTTP01IngressPodSpec(in *v1alpha1.ACMEChallengeSolverHTTP01IngressPodSpec, out *certmanager.ACMEChallengeSolverHTTP01IngressPodSpec, s conversion.Scope) error { - return autoConvert_v1alpha1_ACMEChallengeSolverHTTP01IngressPodSpec_To_certmanager_ACMEChallengeSolverHTTP01IngressPodSpec(in, out, s) -} - -func autoConvert_certmanager_ACMEChallengeSolverHTTP01IngressPodSpec_To_v1alpha1_ACMEChallengeSolverHTTP01IngressPodSpec(in *certmanager.ACMEChallengeSolverHTTP01IngressPodSpec, out *v1alpha1.ACMEChallengeSolverHTTP01IngressPodSpec, s conversion.Scope) error { - out.NodeSelector = *(*map[string]string)(unsafe.Pointer(&in.NodeSelector)) - out.Affinity = (*v1.Affinity)(unsafe.Pointer(in.Affinity)) - out.Tolerations = *(*[]v1.Toleration)(unsafe.Pointer(&in.Tolerations)) - return nil -} - -// Convert_certmanager_ACMEChallengeSolverHTTP01IngressPodSpec_To_v1alpha1_ACMEChallengeSolverHTTP01IngressPodSpec is an autogenerated conversion function. -func Convert_certmanager_ACMEChallengeSolverHTTP01IngressPodSpec_To_v1alpha1_ACMEChallengeSolverHTTP01IngressPodSpec(in *certmanager.ACMEChallengeSolverHTTP01IngressPodSpec, out *v1alpha1.ACMEChallengeSolverHTTP01IngressPodSpec, s conversion.Scope) error { - return autoConvert_certmanager_ACMEChallengeSolverHTTP01IngressPodSpec_To_v1alpha1_ACMEChallengeSolverHTTP01IngressPodSpec(in, out, s) -} - -func autoConvert_v1alpha1_ACMEChallengeSolverHTTP01IngressPodTemplate_To_certmanager_ACMEChallengeSolverHTTP01IngressPodTemplate(in *v1alpha1.ACMEChallengeSolverHTTP01IngressPodTemplate, out *certmanager.ACMEChallengeSolverHTTP01IngressPodTemplate, s conversion.Scope) error { - out.ObjectMeta = in.ObjectMeta - if err := Convert_v1alpha1_ACMEChallengeSolverHTTP01IngressPodSpec_To_certmanager_ACMEChallengeSolverHTTP01IngressPodSpec(&in.Spec, &out.Spec, s); err != nil { - return err - } - return nil -} - -// Convert_v1alpha1_ACMEChallengeSolverHTTP01IngressPodTemplate_To_certmanager_ACMEChallengeSolverHTTP01IngressPodTemplate is an autogenerated conversion function. -func Convert_v1alpha1_ACMEChallengeSolverHTTP01IngressPodTemplate_To_certmanager_ACMEChallengeSolverHTTP01IngressPodTemplate(in *v1alpha1.ACMEChallengeSolverHTTP01IngressPodTemplate, out *certmanager.ACMEChallengeSolverHTTP01IngressPodTemplate, s conversion.Scope) error { - return autoConvert_v1alpha1_ACMEChallengeSolverHTTP01IngressPodTemplate_To_certmanager_ACMEChallengeSolverHTTP01IngressPodTemplate(in, out, s) -} - -func autoConvert_certmanager_ACMEChallengeSolverHTTP01IngressPodTemplate_To_v1alpha1_ACMEChallengeSolverHTTP01IngressPodTemplate(in *certmanager.ACMEChallengeSolverHTTP01IngressPodTemplate, out *v1alpha1.ACMEChallengeSolverHTTP01IngressPodTemplate, s conversion.Scope) error { - out.ObjectMeta = in.ObjectMeta - if err := Convert_certmanager_ACMEChallengeSolverHTTP01IngressPodSpec_To_v1alpha1_ACMEChallengeSolverHTTP01IngressPodSpec(&in.Spec, &out.Spec, s); err != nil { - return err - } - return nil -} - -// Convert_certmanager_ACMEChallengeSolverHTTP01IngressPodTemplate_To_v1alpha1_ACMEChallengeSolverHTTP01IngressPodTemplate is an autogenerated conversion function. -func Convert_certmanager_ACMEChallengeSolverHTTP01IngressPodTemplate_To_v1alpha1_ACMEChallengeSolverHTTP01IngressPodTemplate(in *certmanager.ACMEChallengeSolverHTTP01IngressPodTemplate, out *v1alpha1.ACMEChallengeSolverHTTP01IngressPodTemplate, s conversion.Scope) error { - return autoConvert_certmanager_ACMEChallengeSolverHTTP01IngressPodTemplate_To_v1alpha1_ACMEChallengeSolverHTTP01IngressPodTemplate(in, out, s) -} - -func autoConvert_v1alpha1_ACMEIssuer_To_certmanager_ACMEIssuer(in *v1alpha1.ACMEIssuer, out *certmanager.ACMEIssuer, s conversion.Scope) error { - out.Email = in.Email - out.Server = in.Server - out.SkipTLSVerify = in.SkipTLSVerify - if err := Convert_v1alpha1_SecretKeySelector_To_certmanager_SecretKeySelector(&in.PrivateKey, &out.PrivateKey, s); err != nil { - return err - } - out.Solvers = *(*[]certmanager.ACMEChallengeSolver)(unsafe.Pointer(&in.Solvers)) - return nil -} - -// Convert_v1alpha1_ACMEIssuer_To_certmanager_ACMEIssuer is an autogenerated conversion function. -func Convert_v1alpha1_ACMEIssuer_To_certmanager_ACMEIssuer(in *v1alpha1.ACMEIssuer, out *certmanager.ACMEIssuer, s conversion.Scope) error { - return autoConvert_v1alpha1_ACMEIssuer_To_certmanager_ACMEIssuer(in, out, s) -} - -func autoConvert_certmanager_ACMEIssuer_To_v1alpha1_ACMEIssuer(in *certmanager.ACMEIssuer, out *v1alpha1.ACMEIssuer, s conversion.Scope) error { - out.Email = in.Email - out.Server = in.Server - out.SkipTLSVerify = in.SkipTLSVerify - if err := Convert_certmanager_SecretKeySelector_To_v1alpha1_SecretKeySelector(&in.PrivateKey, &out.PrivateKey, s); err != nil { - return err - } - out.Solvers = *(*[]v1alpha1.ACMEChallengeSolver)(unsafe.Pointer(&in.Solvers)) - return nil -} - -// Convert_certmanager_ACMEIssuer_To_v1alpha1_ACMEIssuer is an autogenerated conversion function. -func Convert_certmanager_ACMEIssuer_To_v1alpha1_ACMEIssuer(in *certmanager.ACMEIssuer, out *v1alpha1.ACMEIssuer, s conversion.Scope) error { - return autoConvert_certmanager_ACMEIssuer_To_v1alpha1_ACMEIssuer(in, out, s) -} - -func autoConvert_v1alpha1_ACMEIssuerDNS01ProviderAcmeDNS_To_certmanager_ACMEIssuerDNS01ProviderAcmeDNS(in *v1alpha1.ACMEIssuerDNS01ProviderAcmeDNS, out *certmanager.ACMEIssuerDNS01ProviderAcmeDNS, s conversion.Scope) error { - out.Host = in.Host - if err := Convert_v1alpha1_SecretKeySelector_To_certmanager_SecretKeySelector(&in.AccountSecret, &out.AccountSecret, s); err != nil { - return err - } - return nil -} - -// Convert_v1alpha1_ACMEIssuerDNS01ProviderAcmeDNS_To_certmanager_ACMEIssuerDNS01ProviderAcmeDNS is an autogenerated conversion function. -func Convert_v1alpha1_ACMEIssuerDNS01ProviderAcmeDNS_To_certmanager_ACMEIssuerDNS01ProviderAcmeDNS(in *v1alpha1.ACMEIssuerDNS01ProviderAcmeDNS, out *certmanager.ACMEIssuerDNS01ProviderAcmeDNS, s conversion.Scope) error { - return autoConvert_v1alpha1_ACMEIssuerDNS01ProviderAcmeDNS_To_certmanager_ACMEIssuerDNS01ProviderAcmeDNS(in, out, s) -} - -func autoConvert_certmanager_ACMEIssuerDNS01ProviderAcmeDNS_To_v1alpha1_ACMEIssuerDNS01ProviderAcmeDNS(in *certmanager.ACMEIssuerDNS01ProviderAcmeDNS, out *v1alpha1.ACMEIssuerDNS01ProviderAcmeDNS, s conversion.Scope) error { - out.Host = in.Host - if err := Convert_certmanager_SecretKeySelector_To_v1alpha1_SecretKeySelector(&in.AccountSecret, &out.AccountSecret, s); err != nil { - return err - } - return nil -} - -// Convert_certmanager_ACMEIssuerDNS01ProviderAcmeDNS_To_v1alpha1_ACMEIssuerDNS01ProviderAcmeDNS is an autogenerated conversion function. -func Convert_certmanager_ACMEIssuerDNS01ProviderAcmeDNS_To_v1alpha1_ACMEIssuerDNS01ProviderAcmeDNS(in *certmanager.ACMEIssuerDNS01ProviderAcmeDNS, out *v1alpha1.ACMEIssuerDNS01ProviderAcmeDNS, s conversion.Scope) error { - return autoConvert_certmanager_ACMEIssuerDNS01ProviderAcmeDNS_To_v1alpha1_ACMEIssuerDNS01ProviderAcmeDNS(in, out, s) -} - -func autoConvert_v1alpha1_ACMEIssuerDNS01ProviderAkamai_To_certmanager_ACMEIssuerDNS01ProviderAkamai(in *v1alpha1.ACMEIssuerDNS01ProviderAkamai, out *certmanager.ACMEIssuerDNS01ProviderAkamai, s conversion.Scope) error { - out.ServiceConsumerDomain = in.ServiceConsumerDomain - if err := Convert_v1alpha1_SecretKeySelector_To_certmanager_SecretKeySelector(&in.ClientToken, &out.ClientToken, s); err != nil { - return err - } - if err := Convert_v1alpha1_SecretKeySelector_To_certmanager_SecretKeySelector(&in.ClientSecret, &out.ClientSecret, s); err != nil { - return err - } - if err := Convert_v1alpha1_SecretKeySelector_To_certmanager_SecretKeySelector(&in.AccessToken, &out.AccessToken, s); err != nil { - return err - } - return nil -} - -// Convert_v1alpha1_ACMEIssuerDNS01ProviderAkamai_To_certmanager_ACMEIssuerDNS01ProviderAkamai is an autogenerated conversion function. -func Convert_v1alpha1_ACMEIssuerDNS01ProviderAkamai_To_certmanager_ACMEIssuerDNS01ProviderAkamai(in *v1alpha1.ACMEIssuerDNS01ProviderAkamai, out *certmanager.ACMEIssuerDNS01ProviderAkamai, s conversion.Scope) error { - return autoConvert_v1alpha1_ACMEIssuerDNS01ProviderAkamai_To_certmanager_ACMEIssuerDNS01ProviderAkamai(in, out, s) -} - -func autoConvert_certmanager_ACMEIssuerDNS01ProviderAkamai_To_v1alpha1_ACMEIssuerDNS01ProviderAkamai(in *certmanager.ACMEIssuerDNS01ProviderAkamai, out *v1alpha1.ACMEIssuerDNS01ProviderAkamai, s conversion.Scope) error { - out.ServiceConsumerDomain = in.ServiceConsumerDomain - if err := Convert_certmanager_SecretKeySelector_To_v1alpha1_SecretKeySelector(&in.ClientToken, &out.ClientToken, s); err != nil { - return err - } - if err := Convert_certmanager_SecretKeySelector_To_v1alpha1_SecretKeySelector(&in.ClientSecret, &out.ClientSecret, s); err != nil { - return err - } - if err := Convert_certmanager_SecretKeySelector_To_v1alpha1_SecretKeySelector(&in.AccessToken, &out.AccessToken, s); err != nil { - return err - } - return nil -} - -// Convert_certmanager_ACMEIssuerDNS01ProviderAkamai_To_v1alpha1_ACMEIssuerDNS01ProviderAkamai is an autogenerated conversion function. -func Convert_certmanager_ACMEIssuerDNS01ProviderAkamai_To_v1alpha1_ACMEIssuerDNS01ProviderAkamai(in *certmanager.ACMEIssuerDNS01ProviderAkamai, out *v1alpha1.ACMEIssuerDNS01ProviderAkamai, s conversion.Scope) error { - return autoConvert_certmanager_ACMEIssuerDNS01ProviderAkamai_To_v1alpha1_ACMEIssuerDNS01ProviderAkamai(in, out, s) -} - -func autoConvert_v1alpha1_ACMEIssuerDNS01ProviderAzureDNS_To_certmanager_ACMEIssuerDNS01ProviderAzureDNS(in *v1alpha1.ACMEIssuerDNS01ProviderAzureDNS, out *certmanager.ACMEIssuerDNS01ProviderAzureDNS, s conversion.Scope) error { - out.ClientID = in.ClientID - if err := Convert_v1alpha1_SecretKeySelector_To_certmanager_SecretKeySelector(&in.ClientSecret, &out.ClientSecret, s); err != nil { - return err - } - out.SubscriptionID = in.SubscriptionID - out.TenantID = in.TenantID - out.ResourceGroupName = in.ResourceGroupName - out.HostedZoneName = in.HostedZoneName - out.Environment = certmanager.AzureDNSEnvironment(in.Environment) - return nil -} - -// Convert_v1alpha1_ACMEIssuerDNS01ProviderAzureDNS_To_certmanager_ACMEIssuerDNS01ProviderAzureDNS is an autogenerated conversion function. -func Convert_v1alpha1_ACMEIssuerDNS01ProviderAzureDNS_To_certmanager_ACMEIssuerDNS01ProviderAzureDNS(in *v1alpha1.ACMEIssuerDNS01ProviderAzureDNS, out *certmanager.ACMEIssuerDNS01ProviderAzureDNS, s conversion.Scope) error { - return autoConvert_v1alpha1_ACMEIssuerDNS01ProviderAzureDNS_To_certmanager_ACMEIssuerDNS01ProviderAzureDNS(in, out, s) -} - -func autoConvert_certmanager_ACMEIssuerDNS01ProviderAzureDNS_To_v1alpha1_ACMEIssuerDNS01ProviderAzureDNS(in *certmanager.ACMEIssuerDNS01ProviderAzureDNS, out *v1alpha1.ACMEIssuerDNS01ProviderAzureDNS, s conversion.Scope) error { - out.ClientID = in.ClientID - if err := Convert_certmanager_SecretKeySelector_To_v1alpha1_SecretKeySelector(&in.ClientSecret, &out.ClientSecret, s); err != nil { - return err - } - out.SubscriptionID = in.SubscriptionID - out.TenantID = in.TenantID - out.ResourceGroupName = in.ResourceGroupName - out.HostedZoneName = in.HostedZoneName - out.Environment = v1alpha1.AzureDNSEnvironment(in.Environment) - return nil -} - -// Convert_certmanager_ACMEIssuerDNS01ProviderAzureDNS_To_v1alpha1_ACMEIssuerDNS01ProviderAzureDNS is an autogenerated conversion function. -func Convert_certmanager_ACMEIssuerDNS01ProviderAzureDNS_To_v1alpha1_ACMEIssuerDNS01ProviderAzureDNS(in *certmanager.ACMEIssuerDNS01ProviderAzureDNS, out *v1alpha1.ACMEIssuerDNS01ProviderAzureDNS, s conversion.Scope) error { - return autoConvert_certmanager_ACMEIssuerDNS01ProviderAzureDNS_To_v1alpha1_ACMEIssuerDNS01ProviderAzureDNS(in, out, s) -} - -func autoConvert_v1alpha1_ACMEIssuerDNS01ProviderCloudDNS_To_certmanager_ACMEIssuerDNS01ProviderCloudDNS(in *v1alpha1.ACMEIssuerDNS01ProviderCloudDNS, out *certmanager.ACMEIssuerDNS01ProviderCloudDNS, s conversion.Scope) error { - if err := Convert_v1alpha1_SecretKeySelector_To_certmanager_SecretKeySelector(&in.ServiceAccount, &out.ServiceAccount, s); err != nil { - return err - } - out.Project = in.Project - return nil -} - -// Convert_v1alpha1_ACMEIssuerDNS01ProviderCloudDNS_To_certmanager_ACMEIssuerDNS01ProviderCloudDNS is an autogenerated conversion function. -func Convert_v1alpha1_ACMEIssuerDNS01ProviderCloudDNS_To_certmanager_ACMEIssuerDNS01ProviderCloudDNS(in *v1alpha1.ACMEIssuerDNS01ProviderCloudDNS, out *certmanager.ACMEIssuerDNS01ProviderCloudDNS, s conversion.Scope) error { - return autoConvert_v1alpha1_ACMEIssuerDNS01ProviderCloudDNS_To_certmanager_ACMEIssuerDNS01ProviderCloudDNS(in, out, s) -} - -func autoConvert_certmanager_ACMEIssuerDNS01ProviderCloudDNS_To_v1alpha1_ACMEIssuerDNS01ProviderCloudDNS(in *certmanager.ACMEIssuerDNS01ProviderCloudDNS, out *v1alpha1.ACMEIssuerDNS01ProviderCloudDNS, s conversion.Scope) error { - if err := Convert_certmanager_SecretKeySelector_To_v1alpha1_SecretKeySelector(&in.ServiceAccount, &out.ServiceAccount, s); err != nil { - return err - } - out.Project = in.Project - return nil -} - -// Convert_certmanager_ACMEIssuerDNS01ProviderCloudDNS_To_v1alpha1_ACMEIssuerDNS01ProviderCloudDNS is an autogenerated conversion function. -func Convert_certmanager_ACMEIssuerDNS01ProviderCloudDNS_To_v1alpha1_ACMEIssuerDNS01ProviderCloudDNS(in *certmanager.ACMEIssuerDNS01ProviderCloudDNS, out *v1alpha1.ACMEIssuerDNS01ProviderCloudDNS, s conversion.Scope) error { - return autoConvert_certmanager_ACMEIssuerDNS01ProviderCloudDNS_To_v1alpha1_ACMEIssuerDNS01ProviderCloudDNS(in, out, s) -} - -func autoConvert_v1alpha1_ACMEIssuerDNS01ProviderCloudflare_To_certmanager_ACMEIssuerDNS01ProviderCloudflare(in *v1alpha1.ACMEIssuerDNS01ProviderCloudflare, out *certmanager.ACMEIssuerDNS01ProviderCloudflare, s conversion.Scope) error { - out.Email = in.Email - if err := Convert_v1alpha1_SecretKeySelector_To_certmanager_SecretKeySelector(&in.APIKey, &out.APIKey, s); err != nil { - return err - } - return nil -} - -// Convert_v1alpha1_ACMEIssuerDNS01ProviderCloudflare_To_certmanager_ACMEIssuerDNS01ProviderCloudflare is an autogenerated conversion function. -func Convert_v1alpha1_ACMEIssuerDNS01ProviderCloudflare_To_certmanager_ACMEIssuerDNS01ProviderCloudflare(in *v1alpha1.ACMEIssuerDNS01ProviderCloudflare, out *certmanager.ACMEIssuerDNS01ProviderCloudflare, s conversion.Scope) error { - return autoConvert_v1alpha1_ACMEIssuerDNS01ProviderCloudflare_To_certmanager_ACMEIssuerDNS01ProviderCloudflare(in, out, s) -} - -func autoConvert_certmanager_ACMEIssuerDNS01ProviderCloudflare_To_v1alpha1_ACMEIssuerDNS01ProviderCloudflare(in *certmanager.ACMEIssuerDNS01ProviderCloudflare, out *v1alpha1.ACMEIssuerDNS01ProviderCloudflare, s conversion.Scope) error { - out.Email = in.Email - if err := Convert_certmanager_SecretKeySelector_To_v1alpha1_SecretKeySelector(&in.APIKey, &out.APIKey, s); err != nil { - return err - } - return nil -} - -// Convert_certmanager_ACMEIssuerDNS01ProviderCloudflare_To_v1alpha1_ACMEIssuerDNS01ProviderCloudflare is an autogenerated conversion function. -func Convert_certmanager_ACMEIssuerDNS01ProviderCloudflare_To_v1alpha1_ACMEIssuerDNS01ProviderCloudflare(in *certmanager.ACMEIssuerDNS01ProviderCloudflare, out *v1alpha1.ACMEIssuerDNS01ProviderCloudflare, s conversion.Scope) error { - return autoConvert_certmanager_ACMEIssuerDNS01ProviderCloudflare_To_v1alpha1_ACMEIssuerDNS01ProviderCloudflare(in, out, s) -} - -func autoConvert_v1alpha1_ACMEIssuerDNS01ProviderDigitalOcean_To_certmanager_ACMEIssuerDNS01ProviderDigitalOcean(in *v1alpha1.ACMEIssuerDNS01ProviderDigitalOcean, out *certmanager.ACMEIssuerDNS01ProviderDigitalOcean, s conversion.Scope) error { - if err := Convert_v1alpha1_SecretKeySelector_To_certmanager_SecretKeySelector(&in.Token, &out.Token, s); err != nil { - return err - } - return nil -} - -// Convert_v1alpha1_ACMEIssuerDNS01ProviderDigitalOcean_To_certmanager_ACMEIssuerDNS01ProviderDigitalOcean is an autogenerated conversion function. -func Convert_v1alpha1_ACMEIssuerDNS01ProviderDigitalOcean_To_certmanager_ACMEIssuerDNS01ProviderDigitalOcean(in *v1alpha1.ACMEIssuerDNS01ProviderDigitalOcean, out *certmanager.ACMEIssuerDNS01ProviderDigitalOcean, s conversion.Scope) error { - return autoConvert_v1alpha1_ACMEIssuerDNS01ProviderDigitalOcean_To_certmanager_ACMEIssuerDNS01ProviderDigitalOcean(in, out, s) -} - -func autoConvert_certmanager_ACMEIssuerDNS01ProviderDigitalOcean_To_v1alpha1_ACMEIssuerDNS01ProviderDigitalOcean(in *certmanager.ACMEIssuerDNS01ProviderDigitalOcean, out *v1alpha1.ACMEIssuerDNS01ProviderDigitalOcean, s conversion.Scope) error { - if err := Convert_certmanager_SecretKeySelector_To_v1alpha1_SecretKeySelector(&in.Token, &out.Token, s); err != nil { - return err - } - return nil -} - -// Convert_certmanager_ACMEIssuerDNS01ProviderDigitalOcean_To_v1alpha1_ACMEIssuerDNS01ProviderDigitalOcean is an autogenerated conversion function. -func Convert_certmanager_ACMEIssuerDNS01ProviderDigitalOcean_To_v1alpha1_ACMEIssuerDNS01ProviderDigitalOcean(in *certmanager.ACMEIssuerDNS01ProviderDigitalOcean, out *v1alpha1.ACMEIssuerDNS01ProviderDigitalOcean, s conversion.Scope) error { - return autoConvert_certmanager_ACMEIssuerDNS01ProviderDigitalOcean_To_v1alpha1_ACMEIssuerDNS01ProviderDigitalOcean(in, out, s) -} - -func autoConvert_v1alpha1_ACMEIssuerDNS01ProviderRFC2136_To_certmanager_ACMEIssuerDNS01ProviderRFC2136(in *v1alpha1.ACMEIssuerDNS01ProviderRFC2136, out *certmanager.ACMEIssuerDNS01ProviderRFC2136, s conversion.Scope) error { - out.Nameserver = in.Nameserver - if err := Convert_v1alpha1_SecretKeySelector_To_certmanager_SecretKeySelector(&in.TSIGSecret, &out.TSIGSecret, s); err != nil { - return err - } - out.TSIGKeyName = in.TSIGKeyName - out.TSIGAlgorithm = in.TSIGAlgorithm - return nil -} - -// Convert_v1alpha1_ACMEIssuerDNS01ProviderRFC2136_To_certmanager_ACMEIssuerDNS01ProviderRFC2136 is an autogenerated conversion function. -func Convert_v1alpha1_ACMEIssuerDNS01ProviderRFC2136_To_certmanager_ACMEIssuerDNS01ProviderRFC2136(in *v1alpha1.ACMEIssuerDNS01ProviderRFC2136, out *certmanager.ACMEIssuerDNS01ProviderRFC2136, s conversion.Scope) error { - return autoConvert_v1alpha1_ACMEIssuerDNS01ProviderRFC2136_To_certmanager_ACMEIssuerDNS01ProviderRFC2136(in, out, s) -} - -func autoConvert_certmanager_ACMEIssuerDNS01ProviderRFC2136_To_v1alpha1_ACMEIssuerDNS01ProviderRFC2136(in *certmanager.ACMEIssuerDNS01ProviderRFC2136, out *v1alpha1.ACMEIssuerDNS01ProviderRFC2136, s conversion.Scope) error { - out.Nameserver = in.Nameserver - if err := Convert_certmanager_SecretKeySelector_To_v1alpha1_SecretKeySelector(&in.TSIGSecret, &out.TSIGSecret, s); err != nil { - return err - } - out.TSIGKeyName = in.TSIGKeyName - out.TSIGAlgorithm = in.TSIGAlgorithm - return nil -} - -// Convert_certmanager_ACMEIssuerDNS01ProviderRFC2136_To_v1alpha1_ACMEIssuerDNS01ProviderRFC2136 is an autogenerated conversion function. -func Convert_certmanager_ACMEIssuerDNS01ProviderRFC2136_To_v1alpha1_ACMEIssuerDNS01ProviderRFC2136(in *certmanager.ACMEIssuerDNS01ProviderRFC2136, out *v1alpha1.ACMEIssuerDNS01ProviderRFC2136, s conversion.Scope) error { - return autoConvert_certmanager_ACMEIssuerDNS01ProviderRFC2136_To_v1alpha1_ACMEIssuerDNS01ProviderRFC2136(in, out, s) -} - -func autoConvert_v1alpha1_ACMEIssuerDNS01ProviderRoute53_To_certmanager_ACMEIssuerDNS01ProviderRoute53(in *v1alpha1.ACMEIssuerDNS01ProviderRoute53, out *certmanager.ACMEIssuerDNS01ProviderRoute53, s conversion.Scope) error { - out.AccessKeyID = in.AccessKeyID - if err := Convert_v1alpha1_SecretKeySelector_To_certmanager_SecretKeySelector(&in.SecretAccessKey, &out.SecretAccessKey, s); err != nil { - return err - } - out.Role = in.Role - out.HostedZoneID = in.HostedZoneID - out.Region = in.Region - return nil -} - -// Convert_v1alpha1_ACMEIssuerDNS01ProviderRoute53_To_certmanager_ACMEIssuerDNS01ProviderRoute53 is an autogenerated conversion function. -func Convert_v1alpha1_ACMEIssuerDNS01ProviderRoute53_To_certmanager_ACMEIssuerDNS01ProviderRoute53(in *v1alpha1.ACMEIssuerDNS01ProviderRoute53, out *certmanager.ACMEIssuerDNS01ProviderRoute53, s conversion.Scope) error { - return autoConvert_v1alpha1_ACMEIssuerDNS01ProviderRoute53_To_certmanager_ACMEIssuerDNS01ProviderRoute53(in, out, s) -} - -func autoConvert_certmanager_ACMEIssuerDNS01ProviderRoute53_To_v1alpha1_ACMEIssuerDNS01ProviderRoute53(in *certmanager.ACMEIssuerDNS01ProviderRoute53, out *v1alpha1.ACMEIssuerDNS01ProviderRoute53, s conversion.Scope) error { - out.AccessKeyID = in.AccessKeyID - if err := Convert_certmanager_SecretKeySelector_To_v1alpha1_SecretKeySelector(&in.SecretAccessKey, &out.SecretAccessKey, s); err != nil { - return err - } - out.Role = in.Role - out.HostedZoneID = in.HostedZoneID - out.Region = in.Region - return nil -} - -// Convert_certmanager_ACMEIssuerDNS01ProviderRoute53_To_v1alpha1_ACMEIssuerDNS01ProviderRoute53 is an autogenerated conversion function. -func Convert_certmanager_ACMEIssuerDNS01ProviderRoute53_To_v1alpha1_ACMEIssuerDNS01ProviderRoute53(in *certmanager.ACMEIssuerDNS01ProviderRoute53, out *v1alpha1.ACMEIssuerDNS01ProviderRoute53, s conversion.Scope) error { - return autoConvert_certmanager_ACMEIssuerDNS01ProviderRoute53_To_v1alpha1_ACMEIssuerDNS01ProviderRoute53(in, out, s) -} - -func autoConvert_v1alpha1_ACMEIssuerDNS01ProviderWebhook_To_certmanager_ACMEIssuerDNS01ProviderWebhook(in *v1alpha1.ACMEIssuerDNS01ProviderWebhook, out *certmanager.ACMEIssuerDNS01ProviderWebhook, s conversion.Scope) error { - out.GroupName = in.GroupName - out.SolverName = in.SolverName - out.Config = (*v1beta1.JSON)(unsafe.Pointer(in.Config)) - return nil -} - -// Convert_v1alpha1_ACMEIssuerDNS01ProviderWebhook_To_certmanager_ACMEIssuerDNS01ProviderWebhook is an autogenerated conversion function. -func Convert_v1alpha1_ACMEIssuerDNS01ProviderWebhook_To_certmanager_ACMEIssuerDNS01ProviderWebhook(in *v1alpha1.ACMEIssuerDNS01ProviderWebhook, out *certmanager.ACMEIssuerDNS01ProviderWebhook, s conversion.Scope) error { - return autoConvert_v1alpha1_ACMEIssuerDNS01ProviderWebhook_To_certmanager_ACMEIssuerDNS01ProviderWebhook(in, out, s) -} - -func autoConvert_certmanager_ACMEIssuerDNS01ProviderWebhook_To_v1alpha1_ACMEIssuerDNS01ProviderWebhook(in *certmanager.ACMEIssuerDNS01ProviderWebhook, out *v1alpha1.ACMEIssuerDNS01ProviderWebhook, s conversion.Scope) error { - out.GroupName = in.GroupName - out.SolverName = in.SolverName - out.Config = (*v1beta1.JSON)(unsafe.Pointer(in.Config)) - return nil -} - -// Convert_certmanager_ACMEIssuerDNS01ProviderWebhook_To_v1alpha1_ACMEIssuerDNS01ProviderWebhook is an autogenerated conversion function. -func Convert_certmanager_ACMEIssuerDNS01ProviderWebhook_To_v1alpha1_ACMEIssuerDNS01ProviderWebhook(in *certmanager.ACMEIssuerDNS01ProviderWebhook, out *v1alpha1.ACMEIssuerDNS01ProviderWebhook, s conversion.Scope) error { - return autoConvert_certmanager_ACMEIssuerDNS01ProviderWebhook_To_v1alpha1_ACMEIssuerDNS01ProviderWebhook(in, out, s) -} - -func autoConvert_v1alpha1_ACMEIssuerStatus_To_certmanager_ACMEIssuerStatus(in *v1alpha1.ACMEIssuerStatus, out *certmanager.ACMEIssuerStatus, s conversion.Scope) error { - out.URI = in.URI - out.LastRegisteredEmail = in.LastRegisteredEmail - return nil -} - -// Convert_v1alpha1_ACMEIssuerStatus_To_certmanager_ACMEIssuerStatus is an autogenerated conversion function. -func Convert_v1alpha1_ACMEIssuerStatus_To_certmanager_ACMEIssuerStatus(in *v1alpha1.ACMEIssuerStatus, out *certmanager.ACMEIssuerStatus, s conversion.Scope) error { - return autoConvert_v1alpha1_ACMEIssuerStatus_To_certmanager_ACMEIssuerStatus(in, out, s) -} - -func autoConvert_certmanager_ACMEIssuerStatus_To_v1alpha1_ACMEIssuerStatus(in *certmanager.ACMEIssuerStatus, out *v1alpha1.ACMEIssuerStatus, s conversion.Scope) error { - out.URI = in.URI - out.LastRegisteredEmail = in.LastRegisteredEmail - return nil -} - -// Convert_certmanager_ACMEIssuerStatus_To_v1alpha1_ACMEIssuerStatus is an autogenerated conversion function. -func Convert_certmanager_ACMEIssuerStatus_To_v1alpha1_ACMEIssuerStatus(in *certmanager.ACMEIssuerStatus, out *v1alpha1.ACMEIssuerStatus, s conversion.Scope) error { - return autoConvert_certmanager_ACMEIssuerStatus_To_v1alpha1_ACMEIssuerStatus(in, out, s) -} - -func autoConvert_v1alpha1_CAIssuer_To_certmanager_CAIssuer(in *v1alpha1.CAIssuer, out *certmanager.CAIssuer, s conversion.Scope) error { - out.SecretName = in.SecretName - return nil -} - -// Convert_v1alpha1_CAIssuer_To_certmanager_CAIssuer is an autogenerated conversion function. -func Convert_v1alpha1_CAIssuer_To_certmanager_CAIssuer(in *v1alpha1.CAIssuer, out *certmanager.CAIssuer, s conversion.Scope) error { - return autoConvert_v1alpha1_CAIssuer_To_certmanager_CAIssuer(in, out, s) -} - -func autoConvert_certmanager_CAIssuer_To_v1alpha1_CAIssuer(in *certmanager.CAIssuer, out *v1alpha1.CAIssuer, s conversion.Scope) error { - out.SecretName = in.SecretName - return nil -} - -// Convert_certmanager_CAIssuer_To_v1alpha1_CAIssuer is an autogenerated conversion function. -func Convert_certmanager_CAIssuer_To_v1alpha1_CAIssuer(in *certmanager.CAIssuer, out *v1alpha1.CAIssuer, s conversion.Scope) error { - return autoConvert_certmanager_CAIssuer_To_v1alpha1_CAIssuer(in, out, s) -} - -func autoConvert_v1alpha1_Certificate_To_certmanager_Certificate(in *v1alpha1.Certificate, out *certmanager.Certificate, s conversion.Scope) error { - out.ObjectMeta = in.ObjectMeta - if err := Convert_v1alpha1_CertificateSpec_To_certmanager_CertificateSpec(&in.Spec, &out.Spec, s); err != nil { - return err - } - if err := Convert_v1alpha1_CertificateStatus_To_certmanager_CertificateStatus(&in.Status, &out.Status, s); err != nil { - return err - } - return nil -} - -// Convert_v1alpha1_Certificate_To_certmanager_Certificate is an autogenerated conversion function. -func Convert_v1alpha1_Certificate_To_certmanager_Certificate(in *v1alpha1.Certificate, out *certmanager.Certificate, s conversion.Scope) error { - return autoConvert_v1alpha1_Certificate_To_certmanager_Certificate(in, out, s) -} - -func autoConvert_certmanager_Certificate_To_v1alpha1_Certificate(in *certmanager.Certificate, out *v1alpha1.Certificate, s conversion.Scope) error { - out.ObjectMeta = in.ObjectMeta - if err := Convert_certmanager_CertificateSpec_To_v1alpha1_CertificateSpec(&in.Spec, &out.Spec, s); err != nil { - return err - } - if err := Convert_certmanager_CertificateStatus_To_v1alpha1_CertificateStatus(&in.Status, &out.Status, s); err != nil { - return err - } - return nil -} - -// Convert_certmanager_Certificate_To_v1alpha1_Certificate is an autogenerated conversion function. -func Convert_certmanager_Certificate_To_v1alpha1_Certificate(in *certmanager.Certificate, out *v1alpha1.Certificate, s conversion.Scope) error { - return autoConvert_certmanager_Certificate_To_v1alpha1_Certificate(in, out, s) -} - -func autoConvert_v1alpha1_CertificateCondition_To_certmanager_CertificateCondition(in *v1alpha1.CertificateCondition, out *certmanager.CertificateCondition, s conversion.Scope) error { - out.Type = certmanager.CertificateConditionType(in.Type) - out.Status = certmanager.ConditionStatus(in.Status) - out.LastTransitionTime = (*metav1.Time)(unsafe.Pointer(in.LastTransitionTime)) - out.Reason = in.Reason - out.Message = in.Message - return nil -} - -// Convert_v1alpha1_CertificateCondition_To_certmanager_CertificateCondition is an autogenerated conversion function. -func Convert_v1alpha1_CertificateCondition_To_certmanager_CertificateCondition(in *v1alpha1.CertificateCondition, out *certmanager.CertificateCondition, s conversion.Scope) error { - return autoConvert_v1alpha1_CertificateCondition_To_certmanager_CertificateCondition(in, out, s) -} - -func autoConvert_certmanager_CertificateCondition_To_v1alpha1_CertificateCondition(in *certmanager.CertificateCondition, out *v1alpha1.CertificateCondition, s conversion.Scope) error { - out.Type = v1alpha1.CertificateConditionType(in.Type) - out.Status = v1alpha1.ConditionStatus(in.Status) - out.LastTransitionTime = (*metav1.Time)(unsafe.Pointer(in.LastTransitionTime)) - out.Reason = in.Reason - out.Message = in.Message - return nil -} - -// Convert_certmanager_CertificateCondition_To_v1alpha1_CertificateCondition is an autogenerated conversion function. -func Convert_certmanager_CertificateCondition_To_v1alpha1_CertificateCondition(in *certmanager.CertificateCondition, out *v1alpha1.CertificateCondition, s conversion.Scope) error { - return autoConvert_certmanager_CertificateCondition_To_v1alpha1_CertificateCondition(in, out, s) -} - -func autoConvert_v1alpha1_CertificateDNSNameSelector_To_certmanager_CertificateDNSNameSelector(in *v1alpha1.CertificateDNSNameSelector, out *certmanager.CertificateDNSNameSelector, s conversion.Scope) error { - out.MatchLabels = *(*map[string]string)(unsafe.Pointer(&in.MatchLabels)) - out.DNSNames = *(*[]string)(unsafe.Pointer(&in.DNSNames)) - out.DNSZones = *(*[]string)(unsafe.Pointer(&in.DNSZones)) - return nil -} - -// Convert_v1alpha1_CertificateDNSNameSelector_To_certmanager_CertificateDNSNameSelector is an autogenerated conversion function. -func Convert_v1alpha1_CertificateDNSNameSelector_To_certmanager_CertificateDNSNameSelector(in *v1alpha1.CertificateDNSNameSelector, out *certmanager.CertificateDNSNameSelector, s conversion.Scope) error { - return autoConvert_v1alpha1_CertificateDNSNameSelector_To_certmanager_CertificateDNSNameSelector(in, out, s) -} - -func autoConvert_certmanager_CertificateDNSNameSelector_To_v1alpha1_CertificateDNSNameSelector(in *certmanager.CertificateDNSNameSelector, out *v1alpha1.CertificateDNSNameSelector, s conversion.Scope) error { - out.MatchLabels = *(*map[string]string)(unsafe.Pointer(&in.MatchLabels)) - out.DNSNames = *(*[]string)(unsafe.Pointer(&in.DNSNames)) - out.DNSZones = *(*[]string)(unsafe.Pointer(&in.DNSZones)) - return nil -} - -// Convert_certmanager_CertificateDNSNameSelector_To_v1alpha1_CertificateDNSNameSelector is an autogenerated conversion function. -func Convert_certmanager_CertificateDNSNameSelector_To_v1alpha1_CertificateDNSNameSelector(in *certmanager.CertificateDNSNameSelector, out *v1alpha1.CertificateDNSNameSelector, s conversion.Scope) error { - return autoConvert_certmanager_CertificateDNSNameSelector_To_v1alpha1_CertificateDNSNameSelector(in, out, s) -} - -func autoConvert_v1alpha1_CertificateList_To_certmanager_CertificateList(in *v1alpha1.CertificateList, out *certmanager.CertificateList, s conversion.Scope) error { - out.ListMeta = in.ListMeta - out.Items = *(*[]certmanager.Certificate)(unsafe.Pointer(&in.Items)) - return nil -} - -// Convert_v1alpha1_CertificateList_To_certmanager_CertificateList is an autogenerated conversion function. -func Convert_v1alpha1_CertificateList_To_certmanager_CertificateList(in *v1alpha1.CertificateList, out *certmanager.CertificateList, s conversion.Scope) error { - return autoConvert_v1alpha1_CertificateList_To_certmanager_CertificateList(in, out, s) -} - -func autoConvert_certmanager_CertificateList_To_v1alpha1_CertificateList(in *certmanager.CertificateList, out *v1alpha1.CertificateList, s conversion.Scope) error { - out.ListMeta = in.ListMeta - out.Items = *(*[]v1alpha1.Certificate)(unsafe.Pointer(&in.Items)) - return nil -} - -// Convert_certmanager_CertificateList_To_v1alpha1_CertificateList is an autogenerated conversion function. -func Convert_certmanager_CertificateList_To_v1alpha1_CertificateList(in *certmanager.CertificateList, out *v1alpha1.CertificateList, s conversion.Scope) error { - return autoConvert_certmanager_CertificateList_To_v1alpha1_CertificateList(in, out, s) -} - -func autoConvert_v1alpha1_CertificateRequest_To_certmanager_CertificateRequest(in *v1alpha1.CertificateRequest, out *certmanager.CertificateRequest, s conversion.Scope) error { - out.ObjectMeta = in.ObjectMeta - if err := Convert_v1alpha1_CertificateRequestSpec_To_certmanager_CertificateRequestSpec(&in.Spec, &out.Spec, s); err != nil { - return err - } - if err := Convert_v1alpha1_CertificateRequestStatus_To_certmanager_CertificateRequestStatus(&in.Status, &out.Status, s); err != nil { - return err - } - return nil -} - -// Convert_v1alpha1_CertificateRequest_To_certmanager_CertificateRequest is an autogenerated conversion function. -func Convert_v1alpha1_CertificateRequest_To_certmanager_CertificateRequest(in *v1alpha1.CertificateRequest, out *certmanager.CertificateRequest, s conversion.Scope) error { - return autoConvert_v1alpha1_CertificateRequest_To_certmanager_CertificateRequest(in, out, s) -} - -func autoConvert_certmanager_CertificateRequest_To_v1alpha1_CertificateRequest(in *certmanager.CertificateRequest, out *v1alpha1.CertificateRequest, s conversion.Scope) error { - out.ObjectMeta = in.ObjectMeta - if err := Convert_certmanager_CertificateRequestSpec_To_v1alpha1_CertificateRequestSpec(&in.Spec, &out.Spec, s); err != nil { - return err - } - if err := Convert_certmanager_CertificateRequestStatus_To_v1alpha1_CertificateRequestStatus(&in.Status, &out.Status, s); err != nil { - return err - } - return nil -} - -// Convert_certmanager_CertificateRequest_To_v1alpha1_CertificateRequest is an autogenerated conversion function. -func Convert_certmanager_CertificateRequest_To_v1alpha1_CertificateRequest(in *certmanager.CertificateRequest, out *v1alpha1.CertificateRequest, s conversion.Scope) error { - return autoConvert_certmanager_CertificateRequest_To_v1alpha1_CertificateRequest(in, out, s) -} - -func autoConvert_v1alpha1_CertificateRequestCondition_To_certmanager_CertificateRequestCondition(in *v1alpha1.CertificateRequestCondition, out *certmanager.CertificateRequestCondition, s conversion.Scope) error { - out.Type = certmanager.CertificateRequestConditionType(in.Type) - out.Status = certmanager.ConditionStatus(in.Status) - out.LastTransitionTime = (*metav1.Time)(unsafe.Pointer(in.LastTransitionTime)) - out.Reason = in.Reason - out.Message = in.Message - return nil -} - -// Convert_v1alpha1_CertificateRequestCondition_To_certmanager_CertificateRequestCondition is an autogenerated conversion function. -func Convert_v1alpha1_CertificateRequestCondition_To_certmanager_CertificateRequestCondition(in *v1alpha1.CertificateRequestCondition, out *certmanager.CertificateRequestCondition, s conversion.Scope) error { - return autoConvert_v1alpha1_CertificateRequestCondition_To_certmanager_CertificateRequestCondition(in, out, s) -} - -func autoConvert_certmanager_CertificateRequestCondition_To_v1alpha1_CertificateRequestCondition(in *certmanager.CertificateRequestCondition, out *v1alpha1.CertificateRequestCondition, s conversion.Scope) error { - out.Type = v1alpha1.CertificateRequestConditionType(in.Type) - out.Status = v1alpha1.ConditionStatus(in.Status) - out.LastTransitionTime = (*metav1.Time)(unsafe.Pointer(in.LastTransitionTime)) - out.Reason = in.Reason - out.Message = in.Message - return nil -} - -// Convert_certmanager_CertificateRequestCondition_To_v1alpha1_CertificateRequestCondition is an autogenerated conversion function. -func Convert_certmanager_CertificateRequestCondition_To_v1alpha1_CertificateRequestCondition(in *certmanager.CertificateRequestCondition, out *v1alpha1.CertificateRequestCondition, s conversion.Scope) error { - return autoConvert_certmanager_CertificateRequestCondition_To_v1alpha1_CertificateRequestCondition(in, out, s) -} - -func autoConvert_v1alpha1_CertificateRequestList_To_certmanager_CertificateRequestList(in *v1alpha1.CertificateRequestList, out *certmanager.CertificateRequestList, s conversion.Scope) error { - out.ListMeta = in.ListMeta - out.Items = *(*[]certmanager.CertificateRequest)(unsafe.Pointer(&in.Items)) - return nil -} - -// Convert_v1alpha1_CertificateRequestList_To_certmanager_CertificateRequestList is an autogenerated conversion function. -func Convert_v1alpha1_CertificateRequestList_To_certmanager_CertificateRequestList(in *v1alpha1.CertificateRequestList, out *certmanager.CertificateRequestList, s conversion.Scope) error { - return autoConvert_v1alpha1_CertificateRequestList_To_certmanager_CertificateRequestList(in, out, s) -} - -func autoConvert_certmanager_CertificateRequestList_To_v1alpha1_CertificateRequestList(in *certmanager.CertificateRequestList, out *v1alpha1.CertificateRequestList, s conversion.Scope) error { - out.ListMeta = in.ListMeta - out.Items = *(*[]v1alpha1.CertificateRequest)(unsafe.Pointer(&in.Items)) - return nil -} - -// Convert_certmanager_CertificateRequestList_To_v1alpha1_CertificateRequestList is an autogenerated conversion function. -func Convert_certmanager_CertificateRequestList_To_v1alpha1_CertificateRequestList(in *certmanager.CertificateRequestList, out *v1alpha1.CertificateRequestList, s conversion.Scope) error { - return autoConvert_certmanager_CertificateRequestList_To_v1alpha1_CertificateRequestList(in, out, s) -} - -func autoConvert_v1alpha1_CertificateRequestSpec_To_certmanager_CertificateRequestSpec(in *v1alpha1.CertificateRequestSpec, out *certmanager.CertificateRequestSpec, s conversion.Scope) error { - out.Duration = (*metav1.Duration)(unsafe.Pointer(in.Duration)) - if err := Convert_v1alpha1_ObjectReference_To_certmanager_ObjectReference(&in.IssuerRef, &out.IssuerRef, s); err != nil { - return err - } - out.CSRPEM = *(*[]byte)(unsafe.Pointer(&in.CSRPEM)) - out.IsCA = in.IsCA - out.Usages = *(*[]certmanager.KeyUsage)(unsafe.Pointer(&in.Usages)) - return nil -} - -// Convert_v1alpha1_CertificateRequestSpec_To_certmanager_CertificateRequestSpec is an autogenerated conversion function. -func Convert_v1alpha1_CertificateRequestSpec_To_certmanager_CertificateRequestSpec(in *v1alpha1.CertificateRequestSpec, out *certmanager.CertificateRequestSpec, s conversion.Scope) error { - return autoConvert_v1alpha1_CertificateRequestSpec_To_certmanager_CertificateRequestSpec(in, out, s) -} - -func autoConvert_certmanager_CertificateRequestSpec_To_v1alpha1_CertificateRequestSpec(in *certmanager.CertificateRequestSpec, out *v1alpha1.CertificateRequestSpec, s conversion.Scope) error { - out.Duration = (*metav1.Duration)(unsafe.Pointer(in.Duration)) - if err := Convert_certmanager_ObjectReference_To_v1alpha1_ObjectReference(&in.IssuerRef, &out.IssuerRef, s); err != nil { - return err - } - out.CSRPEM = *(*[]byte)(unsafe.Pointer(&in.CSRPEM)) - out.IsCA = in.IsCA - out.Usages = *(*[]v1alpha1.KeyUsage)(unsafe.Pointer(&in.Usages)) - return nil -} - -// Convert_certmanager_CertificateRequestSpec_To_v1alpha1_CertificateRequestSpec is an autogenerated conversion function. -func Convert_certmanager_CertificateRequestSpec_To_v1alpha1_CertificateRequestSpec(in *certmanager.CertificateRequestSpec, out *v1alpha1.CertificateRequestSpec, s conversion.Scope) error { - return autoConvert_certmanager_CertificateRequestSpec_To_v1alpha1_CertificateRequestSpec(in, out, s) -} - -func autoConvert_v1alpha1_CertificateRequestStatus_To_certmanager_CertificateRequestStatus(in *v1alpha1.CertificateRequestStatus, out *certmanager.CertificateRequestStatus, s conversion.Scope) error { - out.Conditions = *(*[]certmanager.CertificateRequestCondition)(unsafe.Pointer(&in.Conditions)) - out.Certificate = *(*[]byte)(unsafe.Pointer(&in.Certificate)) - out.CA = *(*[]byte)(unsafe.Pointer(&in.CA)) - out.FailureTime = (*metav1.Time)(unsafe.Pointer(in.FailureTime)) - return nil -} - -// Convert_v1alpha1_CertificateRequestStatus_To_certmanager_CertificateRequestStatus is an autogenerated conversion function. -func Convert_v1alpha1_CertificateRequestStatus_To_certmanager_CertificateRequestStatus(in *v1alpha1.CertificateRequestStatus, out *certmanager.CertificateRequestStatus, s conversion.Scope) error { - return autoConvert_v1alpha1_CertificateRequestStatus_To_certmanager_CertificateRequestStatus(in, out, s) -} - -func autoConvert_certmanager_CertificateRequestStatus_To_v1alpha1_CertificateRequestStatus(in *certmanager.CertificateRequestStatus, out *v1alpha1.CertificateRequestStatus, s conversion.Scope) error { - out.Conditions = *(*[]v1alpha1.CertificateRequestCondition)(unsafe.Pointer(&in.Conditions)) - out.Certificate = *(*[]byte)(unsafe.Pointer(&in.Certificate)) - out.CA = *(*[]byte)(unsafe.Pointer(&in.CA)) - out.FailureTime = (*metav1.Time)(unsafe.Pointer(in.FailureTime)) - return nil -} - -// Convert_certmanager_CertificateRequestStatus_To_v1alpha1_CertificateRequestStatus is an autogenerated conversion function. -func Convert_certmanager_CertificateRequestStatus_To_v1alpha1_CertificateRequestStatus(in *certmanager.CertificateRequestStatus, out *v1alpha1.CertificateRequestStatus, s conversion.Scope) error { - return autoConvert_certmanager_CertificateRequestStatus_To_v1alpha1_CertificateRequestStatus(in, out, s) -} - -func autoConvert_v1alpha1_CertificateSpec_To_certmanager_CertificateSpec(in *v1alpha1.CertificateSpec, out *certmanager.CertificateSpec, s conversion.Scope) error { - out.CommonName = in.CommonName - out.Organization = *(*[]string)(unsafe.Pointer(&in.Organization)) - out.Duration = (*metav1.Duration)(unsafe.Pointer(in.Duration)) - out.RenewBefore = (*metav1.Duration)(unsafe.Pointer(in.RenewBefore)) - out.DNSNames = *(*[]string)(unsafe.Pointer(&in.DNSNames)) - out.IPAddresses = *(*[]string)(unsafe.Pointer(&in.IPAddresses)) - out.URISANs = *(*[]string)(unsafe.Pointer(&in.URISANs)) - out.SecretName = in.SecretName - if err := Convert_v1alpha1_ObjectReference_To_certmanager_ObjectReference(&in.IssuerRef, &out.IssuerRef, s); err != nil { - return err - } - out.IsCA = in.IsCA - out.Usages = *(*[]certmanager.KeyUsage)(unsafe.Pointer(&in.Usages)) - out.KeySize = in.KeySize - out.KeyAlgorithm = certmanager.KeyAlgorithm(in.KeyAlgorithm) - out.KeyEncoding = certmanager.KeyEncoding(in.KeyEncoding) - return nil -} - -// Convert_v1alpha1_CertificateSpec_To_certmanager_CertificateSpec is an autogenerated conversion function. -func Convert_v1alpha1_CertificateSpec_To_certmanager_CertificateSpec(in *v1alpha1.CertificateSpec, out *certmanager.CertificateSpec, s conversion.Scope) error { - return autoConvert_v1alpha1_CertificateSpec_To_certmanager_CertificateSpec(in, out, s) -} - -func autoConvert_certmanager_CertificateSpec_To_v1alpha1_CertificateSpec(in *certmanager.CertificateSpec, out *v1alpha1.CertificateSpec, s conversion.Scope) error { - out.CommonName = in.CommonName - out.Organization = *(*[]string)(unsafe.Pointer(&in.Organization)) - out.Duration = (*metav1.Duration)(unsafe.Pointer(in.Duration)) - out.RenewBefore = (*metav1.Duration)(unsafe.Pointer(in.RenewBefore)) - out.DNSNames = *(*[]string)(unsafe.Pointer(&in.DNSNames)) - out.IPAddresses = *(*[]string)(unsafe.Pointer(&in.IPAddresses)) - out.URISANs = *(*[]string)(unsafe.Pointer(&in.URISANs)) - out.SecretName = in.SecretName - if err := Convert_certmanager_ObjectReference_To_v1alpha1_ObjectReference(&in.IssuerRef, &out.IssuerRef, s); err != nil { - return err - } - out.IsCA = in.IsCA - out.Usages = *(*[]v1alpha1.KeyUsage)(unsafe.Pointer(&in.Usages)) - out.KeySize = in.KeySize - out.KeyAlgorithm = v1alpha1.KeyAlgorithm(in.KeyAlgorithm) - out.KeyEncoding = v1alpha1.KeyEncoding(in.KeyEncoding) - return nil -} - -// Convert_certmanager_CertificateSpec_To_v1alpha1_CertificateSpec is an autogenerated conversion function. -func Convert_certmanager_CertificateSpec_To_v1alpha1_CertificateSpec(in *certmanager.CertificateSpec, out *v1alpha1.CertificateSpec, s conversion.Scope) error { - return autoConvert_certmanager_CertificateSpec_To_v1alpha1_CertificateSpec(in, out, s) -} - -func autoConvert_v1alpha1_CertificateStatus_To_certmanager_CertificateStatus(in *v1alpha1.CertificateStatus, out *certmanager.CertificateStatus, s conversion.Scope) error { - out.Conditions = *(*[]certmanager.CertificateCondition)(unsafe.Pointer(&in.Conditions)) - out.LastFailureTime = (*metav1.Time)(unsafe.Pointer(in.LastFailureTime)) - out.NotAfter = (*metav1.Time)(unsafe.Pointer(in.NotAfter)) - return nil -} - -// Convert_v1alpha1_CertificateStatus_To_certmanager_CertificateStatus is an autogenerated conversion function. -func Convert_v1alpha1_CertificateStatus_To_certmanager_CertificateStatus(in *v1alpha1.CertificateStatus, out *certmanager.CertificateStatus, s conversion.Scope) error { - return autoConvert_v1alpha1_CertificateStatus_To_certmanager_CertificateStatus(in, out, s) -} - -func autoConvert_certmanager_CertificateStatus_To_v1alpha1_CertificateStatus(in *certmanager.CertificateStatus, out *v1alpha1.CertificateStatus, s conversion.Scope) error { - out.Conditions = *(*[]v1alpha1.CertificateCondition)(unsafe.Pointer(&in.Conditions)) - out.LastFailureTime = (*metav1.Time)(unsafe.Pointer(in.LastFailureTime)) - out.NotAfter = (*metav1.Time)(unsafe.Pointer(in.NotAfter)) - return nil -} - -// Convert_certmanager_CertificateStatus_To_v1alpha1_CertificateStatus is an autogenerated conversion function. -func Convert_certmanager_CertificateStatus_To_v1alpha1_CertificateStatus(in *certmanager.CertificateStatus, out *v1alpha1.CertificateStatus, s conversion.Scope) error { - return autoConvert_certmanager_CertificateStatus_To_v1alpha1_CertificateStatus(in, out, s) -} - -func autoConvert_v1alpha1_Challenge_To_certmanager_Challenge(in *v1alpha1.Challenge, out *certmanager.Challenge, s conversion.Scope) error { - out.ObjectMeta = in.ObjectMeta - if err := Convert_v1alpha1_ChallengeSpec_To_certmanager_ChallengeSpec(&in.Spec, &out.Spec, s); err != nil { - return err - } - if err := Convert_v1alpha1_ChallengeStatus_To_certmanager_ChallengeStatus(&in.Status, &out.Status, s); err != nil { - return err - } - return nil -} - -// Convert_v1alpha1_Challenge_To_certmanager_Challenge is an autogenerated conversion function. -func Convert_v1alpha1_Challenge_To_certmanager_Challenge(in *v1alpha1.Challenge, out *certmanager.Challenge, s conversion.Scope) error { - return autoConvert_v1alpha1_Challenge_To_certmanager_Challenge(in, out, s) -} - -func autoConvert_certmanager_Challenge_To_v1alpha1_Challenge(in *certmanager.Challenge, out *v1alpha1.Challenge, s conversion.Scope) error { - out.ObjectMeta = in.ObjectMeta - if err := Convert_certmanager_ChallengeSpec_To_v1alpha1_ChallengeSpec(&in.Spec, &out.Spec, s); err != nil { - return err - } - if err := Convert_certmanager_ChallengeStatus_To_v1alpha1_ChallengeStatus(&in.Status, &out.Status, s); err != nil { - return err - } - return nil -} - -// Convert_certmanager_Challenge_To_v1alpha1_Challenge is an autogenerated conversion function. -func Convert_certmanager_Challenge_To_v1alpha1_Challenge(in *certmanager.Challenge, out *v1alpha1.Challenge, s conversion.Scope) error { - return autoConvert_certmanager_Challenge_To_v1alpha1_Challenge(in, out, s) -} - -func autoConvert_v1alpha1_ChallengeList_To_certmanager_ChallengeList(in *v1alpha1.ChallengeList, out *certmanager.ChallengeList, s conversion.Scope) error { - out.ListMeta = in.ListMeta - out.Items = *(*[]certmanager.Challenge)(unsafe.Pointer(&in.Items)) - return nil -} - -// Convert_v1alpha1_ChallengeList_To_certmanager_ChallengeList is an autogenerated conversion function. -func Convert_v1alpha1_ChallengeList_To_certmanager_ChallengeList(in *v1alpha1.ChallengeList, out *certmanager.ChallengeList, s conversion.Scope) error { - return autoConvert_v1alpha1_ChallengeList_To_certmanager_ChallengeList(in, out, s) -} - -func autoConvert_certmanager_ChallengeList_To_v1alpha1_ChallengeList(in *certmanager.ChallengeList, out *v1alpha1.ChallengeList, s conversion.Scope) error { - out.ListMeta = in.ListMeta - out.Items = *(*[]v1alpha1.Challenge)(unsafe.Pointer(&in.Items)) - return nil -} - -// Convert_certmanager_ChallengeList_To_v1alpha1_ChallengeList is an autogenerated conversion function. -func Convert_certmanager_ChallengeList_To_v1alpha1_ChallengeList(in *certmanager.ChallengeList, out *v1alpha1.ChallengeList, s conversion.Scope) error { - return autoConvert_certmanager_ChallengeList_To_v1alpha1_ChallengeList(in, out, s) -} - -func autoConvert_v1alpha1_ChallengeSpec_To_certmanager_ChallengeSpec(in *v1alpha1.ChallengeSpec, out *certmanager.ChallengeSpec, s conversion.Scope) error { - out.AuthzURL = in.AuthzURL - out.Type = string(in.Type) - out.URL = in.URL - out.DNSName = in.DNSName - out.Token = in.Token - out.Key = in.Key - out.Wildcard = in.Wildcard - out.Solver = (*certmanager.ACMEChallengeSolver)(unsafe.Pointer(in.Solver)) - if err := Convert_v1alpha1_ObjectReference_To_certmanager_ObjectReference(&in.IssuerRef, &out.IssuerRef, s); err != nil { - return err - } - return nil -} - -// Convert_v1alpha1_ChallengeSpec_To_certmanager_ChallengeSpec is an autogenerated conversion function. -func Convert_v1alpha1_ChallengeSpec_To_certmanager_ChallengeSpec(in *v1alpha1.ChallengeSpec, out *certmanager.ChallengeSpec, s conversion.Scope) error { - return autoConvert_v1alpha1_ChallengeSpec_To_certmanager_ChallengeSpec(in, out, s) -} - -func autoConvert_certmanager_ChallengeSpec_To_v1alpha1_ChallengeSpec(in *certmanager.ChallengeSpec, out *v1alpha1.ChallengeSpec, s conversion.Scope) error { - out.AuthzURL = in.AuthzURL - out.Type = v1alpha1.ACMEChallengeType(in.Type) - out.URL = in.URL - out.DNSName = in.DNSName - out.Token = in.Token - out.Key = in.Key - out.Wildcard = in.Wildcard - out.Solver = (*v1alpha1.ACMEChallengeSolver)(unsafe.Pointer(in.Solver)) - if err := Convert_certmanager_ObjectReference_To_v1alpha1_ObjectReference(&in.IssuerRef, &out.IssuerRef, s); err != nil { - return err - } - return nil -} - -// Convert_certmanager_ChallengeSpec_To_v1alpha1_ChallengeSpec is an autogenerated conversion function. -func Convert_certmanager_ChallengeSpec_To_v1alpha1_ChallengeSpec(in *certmanager.ChallengeSpec, out *v1alpha1.ChallengeSpec, s conversion.Scope) error { - return autoConvert_certmanager_ChallengeSpec_To_v1alpha1_ChallengeSpec(in, out, s) -} - -func autoConvert_v1alpha1_ChallengeStatus_To_certmanager_ChallengeStatus(in *v1alpha1.ChallengeStatus, out *certmanager.ChallengeStatus, s conversion.Scope) error { - out.Processing = in.Processing - out.Presented = in.Presented - out.Reason = in.Reason - out.State = certmanager.State(in.State) - return nil -} - -// Convert_v1alpha1_ChallengeStatus_To_certmanager_ChallengeStatus is an autogenerated conversion function. -func Convert_v1alpha1_ChallengeStatus_To_certmanager_ChallengeStatus(in *v1alpha1.ChallengeStatus, out *certmanager.ChallengeStatus, s conversion.Scope) error { - return autoConvert_v1alpha1_ChallengeStatus_To_certmanager_ChallengeStatus(in, out, s) -} - -func autoConvert_certmanager_ChallengeStatus_To_v1alpha1_ChallengeStatus(in *certmanager.ChallengeStatus, out *v1alpha1.ChallengeStatus, s conversion.Scope) error { - out.Processing = in.Processing - out.Presented = in.Presented - out.Reason = in.Reason - out.State = v1alpha1.State(in.State) - return nil -} - -// Convert_certmanager_ChallengeStatus_To_v1alpha1_ChallengeStatus is an autogenerated conversion function. -func Convert_certmanager_ChallengeStatus_To_v1alpha1_ChallengeStatus(in *certmanager.ChallengeStatus, out *v1alpha1.ChallengeStatus, s conversion.Scope) error { - return autoConvert_certmanager_ChallengeStatus_To_v1alpha1_ChallengeStatus(in, out, s) -} - -func autoConvert_v1alpha1_ClusterIssuer_To_certmanager_ClusterIssuer(in *v1alpha1.ClusterIssuer, out *certmanager.ClusterIssuer, s conversion.Scope) error { - out.ObjectMeta = in.ObjectMeta - if err := Convert_v1alpha1_IssuerSpec_To_certmanager_IssuerSpec(&in.Spec, &out.Spec, s); err != nil { - return err - } - if err := Convert_v1alpha1_IssuerStatus_To_certmanager_IssuerStatus(&in.Status, &out.Status, s); err != nil { - return err - } - return nil -} - -// Convert_v1alpha1_ClusterIssuer_To_certmanager_ClusterIssuer is an autogenerated conversion function. -func Convert_v1alpha1_ClusterIssuer_To_certmanager_ClusterIssuer(in *v1alpha1.ClusterIssuer, out *certmanager.ClusterIssuer, s conversion.Scope) error { - return autoConvert_v1alpha1_ClusterIssuer_To_certmanager_ClusterIssuer(in, out, s) -} - -func autoConvert_certmanager_ClusterIssuer_To_v1alpha1_ClusterIssuer(in *certmanager.ClusterIssuer, out *v1alpha1.ClusterIssuer, s conversion.Scope) error { - out.ObjectMeta = in.ObjectMeta - if err := Convert_certmanager_IssuerSpec_To_v1alpha1_IssuerSpec(&in.Spec, &out.Spec, s); err != nil { - return err - } - if err := Convert_certmanager_IssuerStatus_To_v1alpha1_IssuerStatus(&in.Status, &out.Status, s); err != nil { - return err - } - return nil -} - -// Convert_certmanager_ClusterIssuer_To_v1alpha1_ClusterIssuer is an autogenerated conversion function. -func Convert_certmanager_ClusterIssuer_To_v1alpha1_ClusterIssuer(in *certmanager.ClusterIssuer, out *v1alpha1.ClusterIssuer, s conversion.Scope) error { - return autoConvert_certmanager_ClusterIssuer_To_v1alpha1_ClusterIssuer(in, out, s) -} - -func autoConvert_v1alpha1_ClusterIssuerList_To_certmanager_ClusterIssuerList(in *v1alpha1.ClusterIssuerList, out *certmanager.ClusterIssuerList, s conversion.Scope) error { - out.ListMeta = in.ListMeta - out.Items = *(*[]certmanager.ClusterIssuer)(unsafe.Pointer(&in.Items)) - return nil -} - -// Convert_v1alpha1_ClusterIssuerList_To_certmanager_ClusterIssuerList is an autogenerated conversion function. -func Convert_v1alpha1_ClusterIssuerList_To_certmanager_ClusterIssuerList(in *v1alpha1.ClusterIssuerList, out *certmanager.ClusterIssuerList, s conversion.Scope) error { - return autoConvert_v1alpha1_ClusterIssuerList_To_certmanager_ClusterIssuerList(in, out, s) -} - -func autoConvert_certmanager_ClusterIssuerList_To_v1alpha1_ClusterIssuerList(in *certmanager.ClusterIssuerList, out *v1alpha1.ClusterIssuerList, s conversion.Scope) error { - out.ListMeta = in.ListMeta - out.Items = *(*[]v1alpha1.ClusterIssuer)(unsafe.Pointer(&in.Items)) - return nil -} - -// Convert_certmanager_ClusterIssuerList_To_v1alpha1_ClusterIssuerList is an autogenerated conversion function. -func Convert_certmanager_ClusterIssuerList_To_v1alpha1_ClusterIssuerList(in *certmanager.ClusterIssuerList, out *v1alpha1.ClusterIssuerList, s conversion.Scope) error { - return autoConvert_certmanager_ClusterIssuerList_To_v1alpha1_ClusterIssuerList(in, out, s) -} - -func autoConvert_v1alpha1_Issuer_To_certmanager_Issuer(in *v1alpha1.Issuer, out *certmanager.Issuer, s conversion.Scope) error { - out.ObjectMeta = in.ObjectMeta - if err := Convert_v1alpha1_IssuerSpec_To_certmanager_IssuerSpec(&in.Spec, &out.Spec, s); err != nil { - return err - } - if err := Convert_v1alpha1_IssuerStatus_To_certmanager_IssuerStatus(&in.Status, &out.Status, s); err != nil { - return err - } - return nil -} - -// Convert_v1alpha1_Issuer_To_certmanager_Issuer is an autogenerated conversion function. -func Convert_v1alpha1_Issuer_To_certmanager_Issuer(in *v1alpha1.Issuer, out *certmanager.Issuer, s conversion.Scope) error { - return autoConvert_v1alpha1_Issuer_To_certmanager_Issuer(in, out, s) -} - -func autoConvert_certmanager_Issuer_To_v1alpha1_Issuer(in *certmanager.Issuer, out *v1alpha1.Issuer, s conversion.Scope) error { - out.ObjectMeta = in.ObjectMeta - if err := Convert_certmanager_IssuerSpec_To_v1alpha1_IssuerSpec(&in.Spec, &out.Spec, s); err != nil { - return err - } - if err := Convert_certmanager_IssuerStatus_To_v1alpha1_IssuerStatus(&in.Status, &out.Status, s); err != nil { - return err - } - return nil -} - -// Convert_certmanager_Issuer_To_v1alpha1_Issuer is an autogenerated conversion function. -func Convert_certmanager_Issuer_To_v1alpha1_Issuer(in *certmanager.Issuer, out *v1alpha1.Issuer, s conversion.Scope) error { - return autoConvert_certmanager_Issuer_To_v1alpha1_Issuer(in, out, s) -} - -func autoConvert_v1alpha1_IssuerCondition_To_certmanager_IssuerCondition(in *v1alpha1.IssuerCondition, out *certmanager.IssuerCondition, s conversion.Scope) error { - out.Type = certmanager.IssuerConditionType(in.Type) - out.Status = certmanager.ConditionStatus(in.Status) - out.LastTransitionTime = (*metav1.Time)(unsafe.Pointer(in.LastTransitionTime)) - out.Reason = in.Reason - out.Message = in.Message - return nil -} - -// Convert_v1alpha1_IssuerCondition_To_certmanager_IssuerCondition is an autogenerated conversion function. -func Convert_v1alpha1_IssuerCondition_To_certmanager_IssuerCondition(in *v1alpha1.IssuerCondition, out *certmanager.IssuerCondition, s conversion.Scope) error { - return autoConvert_v1alpha1_IssuerCondition_To_certmanager_IssuerCondition(in, out, s) -} - -func autoConvert_certmanager_IssuerCondition_To_v1alpha1_IssuerCondition(in *certmanager.IssuerCondition, out *v1alpha1.IssuerCondition, s conversion.Scope) error { - out.Type = v1alpha1.IssuerConditionType(in.Type) - out.Status = v1alpha1.ConditionStatus(in.Status) - out.LastTransitionTime = (*metav1.Time)(unsafe.Pointer(in.LastTransitionTime)) - out.Reason = in.Reason - out.Message = in.Message - return nil -} - -// Convert_certmanager_IssuerCondition_To_v1alpha1_IssuerCondition is an autogenerated conversion function. -func Convert_certmanager_IssuerCondition_To_v1alpha1_IssuerCondition(in *certmanager.IssuerCondition, out *v1alpha1.IssuerCondition, s conversion.Scope) error { - return autoConvert_certmanager_IssuerCondition_To_v1alpha1_IssuerCondition(in, out, s) -} - -func autoConvert_v1alpha1_IssuerConfig_To_certmanager_IssuerConfig(in *v1alpha1.IssuerConfig, out *certmanager.IssuerConfig, s conversion.Scope) error { - out.ACME = (*certmanager.ACMEIssuer)(unsafe.Pointer(in.ACME)) - out.CA = (*certmanager.CAIssuer)(unsafe.Pointer(in.CA)) - out.Vault = (*certmanager.VaultIssuer)(unsafe.Pointer(in.Vault)) - out.SelfSigned = (*certmanager.SelfSignedIssuer)(unsafe.Pointer(in.SelfSigned)) - out.Venafi = (*certmanager.VenafiIssuer)(unsafe.Pointer(in.Venafi)) - return nil -} - -// Convert_v1alpha1_IssuerConfig_To_certmanager_IssuerConfig is an autogenerated conversion function. -func Convert_v1alpha1_IssuerConfig_To_certmanager_IssuerConfig(in *v1alpha1.IssuerConfig, out *certmanager.IssuerConfig, s conversion.Scope) error { - return autoConvert_v1alpha1_IssuerConfig_To_certmanager_IssuerConfig(in, out, s) -} - -func autoConvert_certmanager_IssuerConfig_To_v1alpha1_IssuerConfig(in *certmanager.IssuerConfig, out *v1alpha1.IssuerConfig, s conversion.Scope) error { - out.ACME = (*v1alpha1.ACMEIssuer)(unsafe.Pointer(in.ACME)) - out.CA = (*v1alpha1.CAIssuer)(unsafe.Pointer(in.CA)) - out.Vault = (*v1alpha1.VaultIssuer)(unsafe.Pointer(in.Vault)) - out.SelfSigned = (*v1alpha1.SelfSignedIssuer)(unsafe.Pointer(in.SelfSigned)) - out.Venafi = (*v1alpha1.VenafiIssuer)(unsafe.Pointer(in.Venafi)) - return nil -} - -// Convert_certmanager_IssuerConfig_To_v1alpha1_IssuerConfig is an autogenerated conversion function. -func Convert_certmanager_IssuerConfig_To_v1alpha1_IssuerConfig(in *certmanager.IssuerConfig, out *v1alpha1.IssuerConfig, s conversion.Scope) error { - return autoConvert_certmanager_IssuerConfig_To_v1alpha1_IssuerConfig(in, out, s) -} - -func autoConvert_v1alpha1_IssuerList_To_certmanager_IssuerList(in *v1alpha1.IssuerList, out *certmanager.IssuerList, s conversion.Scope) error { - out.ListMeta = in.ListMeta - out.Items = *(*[]certmanager.Issuer)(unsafe.Pointer(&in.Items)) - return nil -} - -// Convert_v1alpha1_IssuerList_To_certmanager_IssuerList is an autogenerated conversion function. -func Convert_v1alpha1_IssuerList_To_certmanager_IssuerList(in *v1alpha1.IssuerList, out *certmanager.IssuerList, s conversion.Scope) error { - return autoConvert_v1alpha1_IssuerList_To_certmanager_IssuerList(in, out, s) -} - -func autoConvert_certmanager_IssuerList_To_v1alpha1_IssuerList(in *certmanager.IssuerList, out *v1alpha1.IssuerList, s conversion.Scope) error { - out.ListMeta = in.ListMeta - out.Items = *(*[]v1alpha1.Issuer)(unsafe.Pointer(&in.Items)) - return nil -} - -// Convert_certmanager_IssuerList_To_v1alpha1_IssuerList is an autogenerated conversion function. -func Convert_certmanager_IssuerList_To_v1alpha1_IssuerList(in *certmanager.IssuerList, out *v1alpha1.IssuerList, s conversion.Scope) error { - return autoConvert_certmanager_IssuerList_To_v1alpha1_IssuerList(in, out, s) -} - -func autoConvert_v1alpha1_IssuerSpec_To_certmanager_IssuerSpec(in *v1alpha1.IssuerSpec, out *certmanager.IssuerSpec, s conversion.Scope) error { - if err := Convert_v1alpha1_IssuerConfig_To_certmanager_IssuerConfig(&in.IssuerConfig, &out.IssuerConfig, s); err != nil { - return err - } - return nil -} - -// Convert_v1alpha1_IssuerSpec_To_certmanager_IssuerSpec is an autogenerated conversion function. -func Convert_v1alpha1_IssuerSpec_To_certmanager_IssuerSpec(in *v1alpha1.IssuerSpec, out *certmanager.IssuerSpec, s conversion.Scope) error { - return autoConvert_v1alpha1_IssuerSpec_To_certmanager_IssuerSpec(in, out, s) -} - -func autoConvert_certmanager_IssuerSpec_To_v1alpha1_IssuerSpec(in *certmanager.IssuerSpec, out *v1alpha1.IssuerSpec, s conversion.Scope) error { - if err := Convert_certmanager_IssuerConfig_To_v1alpha1_IssuerConfig(&in.IssuerConfig, &out.IssuerConfig, s); err != nil { - return err - } - return nil -} - -// Convert_certmanager_IssuerSpec_To_v1alpha1_IssuerSpec is an autogenerated conversion function. -func Convert_certmanager_IssuerSpec_To_v1alpha1_IssuerSpec(in *certmanager.IssuerSpec, out *v1alpha1.IssuerSpec, s conversion.Scope) error { - return autoConvert_certmanager_IssuerSpec_To_v1alpha1_IssuerSpec(in, out, s) -} - -func autoConvert_v1alpha1_IssuerStatus_To_certmanager_IssuerStatus(in *v1alpha1.IssuerStatus, out *certmanager.IssuerStatus, s conversion.Scope) error { - out.Conditions = *(*[]certmanager.IssuerCondition)(unsafe.Pointer(&in.Conditions)) - out.ACME = (*certmanager.ACMEIssuerStatus)(unsafe.Pointer(in.ACME)) - return nil -} - -// Convert_v1alpha1_IssuerStatus_To_certmanager_IssuerStatus is an autogenerated conversion function. -func Convert_v1alpha1_IssuerStatus_To_certmanager_IssuerStatus(in *v1alpha1.IssuerStatus, out *certmanager.IssuerStatus, s conversion.Scope) error { - return autoConvert_v1alpha1_IssuerStatus_To_certmanager_IssuerStatus(in, out, s) -} - -func autoConvert_certmanager_IssuerStatus_To_v1alpha1_IssuerStatus(in *certmanager.IssuerStatus, out *v1alpha1.IssuerStatus, s conversion.Scope) error { - out.Conditions = *(*[]v1alpha1.IssuerCondition)(unsafe.Pointer(&in.Conditions)) - out.ACME = (*v1alpha1.ACMEIssuerStatus)(unsafe.Pointer(in.ACME)) - return nil -} - -// Convert_certmanager_IssuerStatus_To_v1alpha1_IssuerStatus is an autogenerated conversion function. -func Convert_certmanager_IssuerStatus_To_v1alpha1_IssuerStatus(in *certmanager.IssuerStatus, out *v1alpha1.IssuerStatus, s conversion.Scope) error { - return autoConvert_certmanager_IssuerStatus_To_v1alpha1_IssuerStatus(in, out, s) -} - -func autoConvert_v1alpha1_LocalObjectReference_To_certmanager_LocalObjectReference(in *v1alpha1.LocalObjectReference, out *certmanager.LocalObjectReference, s conversion.Scope) error { - out.Name = in.Name - return nil -} - -// Convert_v1alpha1_LocalObjectReference_To_certmanager_LocalObjectReference is an autogenerated conversion function. -func Convert_v1alpha1_LocalObjectReference_To_certmanager_LocalObjectReference(in *v1alpha1.LocalObjectReference, out *certmanager.LocalObjectReference, s conversion.Scope) error { - return autoConvert_v1alpha1_LocalObjectReference_To_certmanager_LocalObjectReference(in, out, s) -} - -func autoConvert_certmanager_LocalObjectReference_To_v1alpha1_LocalObjectReference(in *certmanager.LocalObjectReference, out *v1alpha1.LocalObjectReference, s conversion.Scope) error { - out.Name = in.Name - return nil -} - -// Convert_certmanager_LocalObjectReference_To_v1alpha1_LocalObjectReference is an autogenerated conversion function. -func Convert_certmanager_LocalObjectReference_To_v1alpha1_LocalObjectReference(in *certmanager.LocalObjectReference, out *v1alpha1.LocalObjectReference, s conversion.Scope) error { - return autoConvert_certmanager_LocalObjectReference_To_v1alpha1_LocalObjectReference(in, out, s) -} - -func autoConvert_v1alpha1_ObjectReference_To_certmanager_ObjectReference(in *v1alpha1.ObjectReference, out *certmanager.ObjectReference, s conversion.Scope) error { - out.Name = in.Name - out.Kind = in.Kind - out.Group = in.Group - return nil -} - -// Convert_v1alpha1_ObjectReference_To_certmanager_ObjectReference is an autogenerated conversion function. -func Convert_v1alpha1_ObjectReference_To_certmanager_ObjectReference(in *v1alpha1.ObjectReference, out *certmanager.ObjectReference, s conversion.Scope) error { - return autoConvert_v1alpha1_ObjectReference_To_certmanager_ObjectReference(in, out, s) -} - -func autoConvert_certmanager_ObjectReference_To_v1alpha1_ObjectReference(in *certmanager.ObjectReference, out *v1alpha1.ObjectReference, s conversion.Scope) error { - out.Name = in.Name - out.Kind = in.Kind - out.Group = in.Group - return nil -} - -// Convert_certmanager_ObjectReference_To_v1alpha1_ObjectReference is an autogenerated conversion function. -func Convert_certmanager_ObjectReference_To_v1alpha1_ObjectReference(in *certmanager.ObjectReference, out *v1alpha1.ObjectReference, s conversion.Scope) error { - return autoConvert_certmanager_ObjectReference_To_v1alpha1_ObjectReference(in, out, s) -} - -func autoConvert_v1alpha1_Order_To_certmanager_Order(in *v1alpha1.Order, out *certmanager.Order, s conversion.Scope) error { - out.ObjectMeta = in.ObjectMeta - if err := Convert_v1alpha1_OrderSpec_To_certmanager_OrderSpec(&in.Spec, &out.Spec, s); err != nil { - return err - } - if err := Convert_v1alpha1_OrderStatus_To_certmanager_OrderStatus(&in.Status, &out.Status, s); err != nil { - return err - } - return nil -} - -// Convert_v1alpha1_Order_To_certmanager_Order is an autogenerated conversion function. -func Convert_v1alpha1_Order_To_certmanager_Order(in *v1alpha1.Order, out *certmanager.Order, s conversion.Scope) error { - return autoConvert_v1alpha1_Order_To_certmanager_Order(in, out, s) -} - -func autoConvert_certmanager_Order_To_v1alpha1_Order(in *certmanager.Order, out *v1alpha1.Order, s conversion.Scope) error { - out.ObjectMeta = in.ObjectMeta - if err := Convert_certmanager_OrderSpec_To_v1alpha1_OrderSpec(&in.Spec, &out.Spec, s); err != nil { - return err - } - if err := Convert_certmanager_OrderStatus_To_v1alpha1_OrderStatus(&in.Status, &out.Status, s); err != nil { - return err - } - return nil -} - -// Convert_certmanager_Order_To_v1alpha1_Order is an autogenerated conversion function. -func Convert_certmanager_Order_To_v1alpha1_Order(in *certmanager.Order, out *v1alpha1.Order, s conversion.Scope) error { - return autoConvert_certmanager_Order_To_v1alpha1_Order(in, out, s) -} - -func autoConvert_v1alpha1_OrderList_To_certmanager_OrderList(in *v1alpha1.OrderList, out *certmanager.OrderList, s conversion.Scope) error { - out.ListMeta = in.ListMeta - if in.Items != nil { - in, out := &in.Items, &out.Items - *out = make([]certmanager.Order, len(*in)) - for i := range *in { - if err := Convert_v1alpha1_Order_To_certmanager_Order(&(*in)[i], &(*out)[i], s); err != nil { - return err - } - } - } else { - out.Items = nil - } - return nil -} - -// Convert_v1alpha1_OrderList_To_certmanager_OrderList is an autogenerated conversion function. -func Convert_v1alpha1_OrderList_To_certmanager_OrderList(in *v1alpha1.OrderList, out *certmanager.OrderList, s conversion.Scope) error { - return autoConvert_v1alpha1_OrderList_To_certmanager_OrderList(in, out, s) -} - -func autoConvert_certmanager_OrderList_To_v1alpha1_OrderList(in *certmanager.OrderList, out *v1alpha1.OrderList, s conversion.Scope) error { - out.ListMeta = in.ListMeta - if in.Items != nil { - in, out := &in.Items, &out.Items - *out = make([]v1alpha1.Order, len(*in)) - for i := range *in { - if err := Convert_certmanager_Order_To_v1alpha1_Order(&(*in)[i], &(*out)[i], s); err != nil { - return err - } - } - } else { - out.Items = nil - } - return nil -} - -// Convert_certmanager_OrderList_To_v1alpha1_OrderList is an autogenerated conversion function. -func Convert_certmanager_OrderList_To_v1alpha1_OrderList(in *certmanager.OrderList, out *v1alpha1.OrderList, s conversion.Scope) error { - return autoConvert_certmanager_OrderList_To_v1alpha1_OrderList(in, out, s) -} - -func autoConvert_v1alpha1_OrderSpec_To_certmanager_OrderSpec(in *v1alpha1.OrderSpec, out *certmanager.OrderSpec, s conversion.Scope) error { - out.CSR = *(*[]byte)(unsafe.Pointer(&in.CSR)) - if err := Convert_v1alpha1_ObjectReference_To_certmanager_ObjectReference(&in.IssuerRef, &out.IssuerRef, s); err != nil { - return err - } - out.CommonName = in.CommonName - out.DNSNames = *(*[]string)(unsafe.Pointer(&in.DNSNames)) - return nil -} - -// Convert_v1alpha1_OrderSpec_To_certmanager_OrderSpec is an autogenerated conversion function. -func Convert_v1alpha1_OrderSpec_To_certmanager_OrderSpec(in *v1alpha1.OrderSpec, out *certmanager.OrderSpec, s conversion.Scope) error { - return autoConvert_v1alpha1_OrderSpec_To_certmanager_OrderSpec(in, out, s) -} - -func autoConvert_certmanager_OrderSpec_To_v1alpha1_OrderSpec(in *certmanager.OrderSpec, out *v1alpha1.OrderSpec, s conversion.Scope) error { - out.CSR = *(*[]byte)(unsafe.Pointer(&in.CSR)) - if err := Convert_certmanager_ObjectReference_To_v1alpha1_ObjectReference(&in.IssuerRef, &out.IssuerRef, s); err != nil { - return err - } - out.CommonName = in.CommonName - out.DNSNames = *(*[]string)(unsafe.Pointer(&in.DNSNames)) - return nil -} - -// Convert_certmanager_OrderSpec_To_v1alpha1_OrderSpec is an autogenerated conversion function. -func Convert_certmanager_OrderSpec_To_v1alpha1_OrderSpec(in *certmanager.OrderSpec, out *v1alpha1.OrderSpec, s conversion.Scope) error { - return autoConvert_certmanager_OrderSpec_To_v1alpha1_OrderSpec(in, out, s) -} - -func autoConvert_v1alpha1_OrderStatus_To_certmanager_OrderStatus(in *v1alpha1.OrderStatus, out *certmanager.OrderStatus, s conversion.Scope) error { - out.URL = in.URL - out.FinalizeURL = in.FinalizeURL - out.Authorizations = *(*[]certmanager.ACMEAuthorization)(unsafe.Pointer(&in.Authorizations)) - out.Certificate = *(*[]byte)(unsafe.Pointer(&in.Certificate)) - out.State = certmanager.State(in.State) - out.Reason = in.Reason - out.FailureTime = (*metav1.Time)(unsafe.Pointer(in.FailureTime)) - return nil -} - -// Convert_v1alpha1_OrderStatus_To_certmanager_OrderStatus is an autogenerated conversion function. -func Convert_v1alpha1_OrderStatus_To_certmanager_OrderStatus(in *v1alpha1.OrderStatus, out *certmanager.OrderStatus, s conversion.Scope) error { - return autoConvert_v1alpha1_OrderStatus_To_certmanager_OrderStatus(in, out, s) -} - -func autoConvert_certmanager_OrderStatus_To_v1alpha1_OrderStatus(in *certmanager.OrderStatus, out *v1alpha1.OrderStatus, s conversion.Scope) error { - out.URL = in.URL - out.FinalizeURL = in.FinalizeURL - out.Certificate = *(*[]byte)(unsafe.Pointer(&in.Certificate)) - out.State = v1alpha1.State(in.State) - out.Reason = in.Reason - out.Authorizations = *(*[]v1alpha1.ACMEAuthorization)(unsafe.Pointer(&in.Authorizations)) - out.FailureTime = (*metav1.Time)(unsafe.Pointer(in.FailureTime)) - return nil -} - -// Convert_certmanager_OrderStatus_To_v1alpha1_OrderStatus is an autogenerated conversion function. -func Convert_certmanager_OrderStatus_To_v1alpha1_OrderStatus(in *certmanager.OrderStatus, out *v1alpha1.OrderStatus, s conversion.Scope) error { - return autoConvert_certmanager_OrderStatus_To_v1alpha1_OrderStatus(in, out, s) -} - -func autoConvert_v1alpha1_SecretKeySelector_To_certmanager_SecretKeySelector(in *v1alpha1.SecretKeySelector, out *certmanager.SecretKeySelector, s conversion.Scope) error { - if err := Convert_v1alpha1_LocalObjectReference_To_certmanager_LocalObjectReference(&in.LocalObjectReference, &out.LocalObjectReference, s); err != nil { - return err - } - out.Key = in.Key - return nil -} - -// Convert_v1alpha1_SecretKeySelector_To_certmanager_SecretKeySelector is an autogenerated conversion function. -func Convert_v1alpha1_SecretKeySelector_To_certmanager_SecretKeySelector(in *v1alpha1.SecretKeySelector, out *certmanager.SecretKeySelector, s conversion.Scope) error { - return autoConvert_v1alpha1_SecretKeySelector_To_certmanager_SecretKeySelector(in, out, s) -} - -func autoConvert_certmanager_SecretKeySelector_To_v1alpha1_SecretKeySelector(in *certmanager.SecretKeySelector, out *v1alpha1.SecretKeySelector, s conversion.Scope) error { - if err := Convert_certmanager_LocalObjectReference_To_v1alpha1_LocalObjectReference(&in.LocalObjectReference, &out.LocalObjectReference, s); err != nil { - return err - } - out.Key = in.Key - return nil -} - -// Convert_certmanager_SecretKeySelector_To_v1alpha1_SecretKeySelector is an autogenerated conversion function. -func Convert_certmanager_SecretKeySelector_To_v1alpha1_SecretKeySelector(in *certmanager.SecretKeySelector, out *v1alpha1.SecretKeySelector, s conversion.Scope) error { - return autoConvert_certmanager_SecretKeySelector_To_v1alpha1_SecretKeySelector(in, out, s) -} - -func autoConvert_v1alpha1_SelfSignedIssuer_To_certmanager_SelfSignedIssuer(in *v1alpha1.SelfSignedIssuer, out *certmanager.SelfSignedIssuer, s conversion.Scope) error { - return nil -} - -// Convert_v1alpha1_SelfSignedIssuer_To_certmanager_SelfSignedIssuer is an autogenerated conversion function. -func Convert_v1alpha1_SelfSignedIssuer_To_certmanager_SelfSignedIssuer(in *v1alpha1.SelfSignedIssuer, out *certmanager.SelfSignedIssuer, s conversion.Scope) error { - return autoConvert_v1alpha1_SelfSignedIssuer_To_certmanager_SelfSignedIssuer(in, out, s) -} - -func autoConvert_certmanager_SelfSignedIssuer_To_v1alpha1_SelfSignedIssuer(in *certmanager.SelfSignedIssuer, out *v1alpha1.SelfSignedIssuer, s conversion.Scope) error { - return nil -} - -// Convert_certmanager_SelfSignedIssuer_To_v1alpha1_SelfSignedIssuer is an autogenerated conversion function. -func Convert_certmanager_SelfSignedIssuer_To_v1alpha1_SelfSignedIssuer(in *certmanager.SelfSignedIssuer, out *v1alpha1.SelfSignedIssuer, s conversion.Scope) error { - return autoConvert_certmanager_SelfSignedIssuer_To_v1alpha1_SelfSignedIssuer(in, out, s) -} - -func autoConvert_v1alpha1_VaultAppRole_To_certmanager_VaultAppRole(in *v1alpha1.VaultAppRole, out *certmanager.VaultAppRole, s conversion.Scope) error { - out.Path = in.Path - out.RoleId = in.RoleId - if err := Convert_v1alpha1_SecretKeySelector_To_certmanager_SecretKeySelector(&in.SecretRef, &out.SecretRef, s); err != nil { - return err - } - return nil -} - -// Convert_v1alpha1_VaultAppRole_To_certmanager_VaultAppRole is an autogenerated conversion function. -func Convert_v1alpha1_VaultAppRole_To_certmanager_VaultAppRole(in *v1alpha1.VaultAppRole, out *certmanager.VaultAppRole, s conversion.Scope) error { - return autoConvert_v1alpha1_VaultAppRole_To_certmanager_VaultAppRole(in, out, s) -} - -func autoConvert_certmanager_VaultAppRole_To_v1alpha1_VaultAppRole(in *certmanager.VaultAppRole, out *v1alpha1.VaultAppRole, s conversion.Scope) error { - out.Path = in.Path - out.RoleId = in.RoleId - if err := Convert_certmanager_SecretKeySelector_To_v1alpha1_SecretKeySelector(&in.SecretRef, &out.SecretRef, s); err != nil { - return err - } - return nil -} - -// Convert_certmanager_VaultAppRole_To_v1alpha1_VaultAppRole is an autogenerated conversion function. -func Convert_certmanager_VaultAppRole_To_v1alpha1_VaultAppRole(in *certmanager.VaultAppRole, out *v1alpha1.VaultAppRole, s conversion.Scope) error { - return autoConvert_certmanager_VaultAppRole_To_v1alpha1_VaultAppRole(in, out, s) -} - -func autoConvert_v1alpha1_VaultAuth_To_certmanager_VaultAuth(in *v1alpha1.VaultAuth, out *certmanager.VaultAuth, s conversion.Scope) error { - if err := Convert_v1alpha1_SecretKeySelector_To_certmanager_SecretKeySelector(&in.TokenSecretRef, &out.TokenSecretRef, s); err != nil { - return err - } - if err := Convert_v1alpha1_VaultAppRole_To_certmanager_VaultAppRole(&in.AppRole, &out.AppRole, s); err != nil { - return err - } - return nil -} - -// Convert_v1alpha1_VaultAuth_To_certmanager_VaultAuth is an autogenerated conversion function. -func Convert_v1alpha1_VaultAuth_To_certmanager_VaultAuth(in *v1alpha1.VaultAuth, out *certmanager.VaultAuth, s conversion.Scope) error { - return autoConvert_v1alpha1_VaultAuth_To_certmanager_VaultAuth(in, out, s) -} - -func autoConvert_certmanager_VaultAuth_To_v1alpha1_VaultAuth(in *certmanager.VaultAuth, out *v1alpha1.VaultAuth, s conversion.Scope) error { - if err := Convert_certmanager_SecretKeySelector_To_v1alpha1_SecretKeySelector(&in.TokenSecretRef, &out.TokenSecretRef, s); err != nil { - return err - } - if err := Convert_certmanager_VaultAppRole_To_v1alpha1_VaultAppRole(&in.AppRole, &out.AppRole, s); err != nil { - return err - } - return nil -} - -// Convert_certmanager_VaultAuth_To_v1alpha1_VaultAuth is an autogenerated conversion function. -func Convert_certmanager_VaultAuth_To_v1alpha1_VaultAuth(in *certmanager.VaultAuth, out *v1alpha1.VaultAuth, s conversion.Scope) error { - return autoConvert_certmanager_VaultAuth_To_v1alpha1_VaultAuth(in, out, s) -} - -func autoConvert_v1alpha1_VaultIssuer_To_certmanager_VaultIssuer(in *v1alpha1.VaultIssuer, out *certmanager.VaultIssuer, s conversion.Scope) error { - if err := Convert_v1alpha1_VaultAuth_To_certmanager_VaultAuth(&in.Auth, &out.Auth, s); err != nil { - return err - } - out.Server = in.Server - out.Path = in.Path - out.CABundle = *(*[]byte)(unsafe.Pointer(&in.CABundle)) - return nil -} - -// Convert_v1alpha1_VaultIssuer_To_certmanager_VaultIssuer is an autogenerated conversion function. -func Convert_v1alpha1_VaultIssuer_To_certmanager_VaultIssuer(in *v1alpha1.VaultIssuer, out *certmanager.VaultIssuer, s conversion.Scope) error { - return autoConvert_v1alpha1_VaultIssuer_To_certmanager_VaultIssuer(in, out, s) -} - -func autoConvert_certmanager_VaultIssuer_To_v1alpha1_VaultIssuer(in *certmanager.VaultIssuer, out *v1alpha1.VaultIssuer, s conversion.Scope) error { - if err := Convert_certmanager_VaultAuth_To_v1alpha1_VaultAuth(&in.Auth, &out.Auth, s); err != nil { - return err - } - out.Server = in.Server - out.Path = in.Path - out.CABundle = *(*[]byte)(unsafe.Pointer(&in.CABundle)) - return nil -} - -// Convert_certmanager_VaultIssuer_To_v1alpha1_VaultIssuer is an autogenerated conversion function. -func Convert_certmanager_VaultIssuer_To_v1alpha1_VaultIssuer(in *certmanager.VaultIssuer, out *v1alpha1.VaultIssuer, s conversion.Scope) error { - return autoConvert_certmanager_VaultIssuer_To_v1alpha1_VaultIssuer(in, out, s) -} - -func autoConvert_v1alpha1_VenafiCloud_To_certmanager_VenafiCloud(in *v1alpha1.VenafiCloud, out *certmanager.VenafiCloud, s conversion.Scope) error { - out.URL = in.URL - if err := Convert_v1alpha1_SecretKeySelector_To_certmanager_SecretKeySelector(&in.APITokenSecretRef, &out.APITokenSecretRef, s); err != nil { - return err - } - return nil -} - -// Convert_v1alpha1_VenafiCloud_To_certmanager_VenafiCloud is an autogenerated conversion function. -func Convert_v1alpha1_VenafiCloud_To_certmanager_VenafiCloud(in *v1alpha1.VenafiCloud, out *certmanager.VenafiCloud, s conversion.Scope) error { - return autoConvert_v1alpha1_VenafiCloud_To_certmanager_VenafiCloud(in, out, s) -} - -func autoConvert_certmanager_VenafiCloud_To_v1alpha1_VenafiCloud(in *certmanager.VenafiCloud, out *v1alpha1.VenafiCloud, s conversion.Scope) error { - out.URL = in.URL - if err := Convert_certmanager_SecretKeySelector_To_v1alpha1_SecretKeySelector(&in.APITokenSecretRef, &out.APITokenSecretRef, s); err != nil { - return err - } - return nil -} - -// Convert_certmanager_VenafiCloud_To_v1alpha1_VenafiCloud is an autogenerated conversion function. -func Convert_certmanager_VenafiCloud_To_v1alpha1_VenafiCloud(in *certmanager.VenafiCloud, out *v1alpha1.VenafiCloud, s conversion.Scope) error { - return autoConvert_certmanager_VenafiCloud_To_v1alpha1_VenafiCloud(in, out, s) -} - -func autoConvert_v1alpha1_VenafiIssuer_To_certmanager_VenafiIssuer(in *v1alpha1.VenafiIssuer, out *certmanager.VenafiIssuer, s conversion.Scope) error { - out.Zone = in.Zone - out.TPP = (*certmanager.VenafiTPP)(unsafe.Pointer(in.TPP)) - out.Cloud = (*certmanager.VenafiCloud)(unsafe.Pointer(in.Cloud)) - return nil -} - -// Convert_v1alpha1_VenafiIssuer_To_certmanager_VenafiIssuer is an autogenerated conversion function. -func Convert_v1alpha1_VenafiIssuer_To_certmanager_VenafiIssuer(in *v1alpha1.VenafiIssuer, out *certmanager.VenafiIssuer, s conversion.Scope) error { - return autoConvert_v1alpha1_VenafiIssuer_To_certmanager_VenafiIssuer(in, out, s) -} - -func autoConvert_certmanager_VenafiIssuer_To_v1alpha1_VenafiIssuer(in *certmanager.VenafiIssuer, out *v1alpha1.VenafiIssuer, s conversion.Scope) error { - out.Zone = in.Zone - out.TPP = (*v1alpha1.VenafiTPP)(unsafe.Pointer(in.TPP)) - out.Cloud = (*v1alpha1.VenafiCloud)(unsafe.Pointer(in.Cloud)) - return nil -} - -// Convert_certmanager_VenafiIssuer_To_v1alpha1_VenafiIssuer is an autogenerated conversion function. -func Convert_certmanager_VenafiIssuer_To_v1alpha1_VenafiIssuer(in *certmanager.VenafiIssuer, out *v1alpha1.VenafiIssuer, s conversion.Scope) error { - return autoConvert_certmanager_VenafiIssuer_To_v1alpha1_VenafiIssuer(in, out, s) -} - -func autoConvert_v1alpha1_VenafiTPP_To_certmanager_VenafiTPP(in *v1alpha1.VenafiTPP, out *certmanager.VenafiTPP, s conversion.Scope) error { - out.URL = in.URL - if err := Convert_v1alpha1_LocalObjectReference_To_certmanager_LocalObjectReference(&in.CredentialsRef, &out.CredentialsRef, s); err != nil { - return err - } - out.CABundle = *(*[]byte)(unsafe.Pointer(&in.CABundle)) - return nil -} - -// Convert_v1alpha1_VenafiTPP_To_certmanager_VenafiTPP is an autogenerated conversion function. -func Convert_v1alpha1_VenafiTPP_To_certmanager_VenafiTPP(in *v1alpha1.VenafiTPP, out *certmanager.VenafiTPP, s conversion.Scope) error { - return autoConvert_v1alpha1_VenafiTPP_To_certmanager_VenafiTPP(in, out, s) -} - -func autoConvert_certmanager_VenafiTPP_To_v1alpha1_VenafiTPP(in *certmanager.VenafiTPP, out *v1alpha1.VenafiTPP, s conversion.Scope) error { - out.URL = in.URL - if err := Convert_certmanager_LocalObjectReference_To_v1alpha1_LocalObjectReference(&in.CredentialsRef, &out.CredentialsRef, s); err != nil { - return err - } - out.CABundle = *(*[]byte)(unsafe.Pointer(&in.CABundle)) - return nil -} - -// Convert_certmanager_VenafiTPP_To_v1alpha1_VenafiTPP is an autogenerated conversion function. -func Convert_certmanager_VenafiTPP_To_v1alpha1_VenafiTPP(in *certmanager.VenafiTPP, out *v1alpha1.VenafiTPP, s conversion.Scope) error { - return autoConvert_certmanager_VenafiTPP_To_v1alpha1_VenafiTPP(in, out, s) -} From 88cadca4337a8ac2ceea8c1d03a056db2406d2b4 Mon Sep 17 00:00:00 2001 From: JoshVanL Date: Mon, 23 Sep 2019 16:19:16 +0100 Subject: [PATCH 05/23] Adds proper checking for common name in e2e tests Signed-off-by: JoshVanL --- pkg/util/pki/csr.go | 1 + test/e2e/framework/helper/certificaterequests.go | 13 +++++++++++-- test/e2e/framework/helper/certificates.go | 14 ++++++++++++-- 3 files changed, 24 insertions(+), 4 deletions(-) diff --git a/pkg/util/pki/csr.go b/pkg/util/pki/csr.go index 2f9d4919b..6e51b1581 100644 --- a/pkg/util/pki/csr.go +++ b/pkg/util/pki/csr.go @@ -188,6 +188,7 @@ func GenerateCSR(crt *v1alpha2.Certificate) (*x509.CertificateRequest, error) { }, DNSNames: dnsNames, IPAddresses: iPAddresses, + URIs: uriNames, // TODO: work out how best to handle extensions/key usages here ExtraExtensions: []pkix.Extension{}, }, nil diff --git a/test/e2e/framework/helper/certificaterequests.go b/test/e2e/framework/helper/certificaterequests.go index 633fa626a..d6e894358 100644 --- a/test/e2e/framework/helper/certificaterequests.go +++ b/test/e2e/framework/helper/certificaterequests.go @@ -96,7 +96,6 @@ func (h *Helper) ValidateIssuedCertificateRequest(cr *v1alpha2.CertificateReques // TODO: validate private key KeySize // check the provided certificate is valid - expectedCN := csr.Subject.CommonName expectedOrganization := csr.Subject.Organization expectedDNSNames := csr.DNSNames expectedIPAddresses := csr.IPAddresses @@ -107,7 +106,17 @@ func (h *Helper) ValidateIssuedCertificateRequest(cr *v1alpha2.CertificateReques return nil, err } - if expectedCN != cert.Subject.CommonName || + commonNameCorrect := true + expectedCN := csr.Subject.CommonName + if len(expectedCN) == 0 && len(cert.Subject.CommonName) > 0 { + if !util.Contains(cert.DNSNames, cert.Subject.CommonName) { + commonNameCorrect = false + } + } else if expectedCN != cert.Subject.CommonName { + commonNameCorrect = false + } + + if !commonNameCorrect || !util.EqualUnsorted(cert.DNSNames, expectedDNSNames) || !util.EqualUnsorted(cert.Subject.Organization, expectedOrganization) || !util.EqualIPsUnsorted(cert.IPAddresses, expectedIPAddresses) || diff --git a/test/e2e/framework/helper/certificates.go b/test/e2e/framework/helper/certificates.go index cc21c9dbc..1453c0fcd 100644 --- a/test/e2e/framework/helper/certificates.go +++ b/test/e2e/framework/helper/certificates.go @@ -140,7 +140,6 @@ func (h *Helper) ValidateIssuedCertificate(certificate *v1alpha2.Certificate, ro // TODO: validate private key KeySize // check the provided certificate is valid - expectedCN := certificate.Spec.CommonName expectedOrganization := pki.OrganizationForCertificate(certificate) expectedDNSNames := pki.DNSNamesForCertificate(certificate) uris, err := pki.URIsForCertificate(certificate) @@ -159,7 +158,18 @@ func (h *Helper) ValidateIssuedCertificate(certificate *v1alpha2.Certificate, ro if err != nil { return nil, err } - if expectedCN != cert.Subject.CommonName || !util.EqualUnsorted(cert.DNSNames, expectedDNSNames) || !util.EqualUnsorted(pki.URLsToString(cert.URIs), expectedURIs) || + + commonNameCorrect := true + expectedCN := certificate.Spec.CommonName + if len(expectedCN) == 0 && len(cert.Subject.CommonName) > 0 { + if !util.Contains(cert.DNSNames, cert.Subject.CommonName) { + commonNameCorrect = false + } + } else if expectedCN != cert.Subject.CommonName { + commonNameCorrect = false + } + + if !commonNameCorrect || !util.EqualUnsorted(cert.DNSNames, expectedDNSNames) || !util.EqualUnsorted(pki.URLsToString(cert.URIs), expectedURIs) || !(len(cert.Subject.Organization) == 0 || util.EqualUnsorted(cert.Subject.Organization, expectedOrganization)) { return nil, fmt.Errorf("Expected certificate valid for CN %q, O %v, dnsNames %v, uriSANs %v,but got a certificate valid for CN %q, O %v, dnsNames %v, uriSANs %v", expectedCN, expectedOrganization, expectedDNSNames, expectedURIs, cert.Subject.CommonName, cert.Subject.Organization, cert.DNSNames, cert.URIs) From a73a2f9aba5f87ff12424dfc2d34a26303f5b9ed Mon Sep 17 00:00:00 2001 From: JoshVanL Date: Tue, 24 Sep 2019 16:41:45 +0100 Subject: [PATCH 06/23] Adds URI example field to Certificate example in the docs Signed-off-by: JoshVanL --- docs/tasks/issuing-certificates/index.rst | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/docs/tasks/issuing-certificates/index.rst b/docs/tasks/issuing-certificates/index.rst index 2f8b594c2..fd653c535 100644 --- a/docs/tasks/issuing-certificates/index.rst +++ b/docs/tasks/issuing-certificates/index.rst @@ -22,7 +22,8 @@ Certificates specify which issuer they want to obtain the certificate from by specifying the ``certificate.spec.issuerRef`` field. A basic Certificate resource, for the ``example.com`` and ``www.example.com`` -DNS names that is valid for 90d and renews 15d before expiry is below: +DNS names, ``spiffe://cluster.local/ns/sandbox/sa/example`` URI Subject +Alternative Name, that is valid for 90d and renews 15d before expiry is below: .. code-block:: yaml :linenos: @@ -41,6 +42,8 @@ DNS names that is valid for 90d and renews 15d before expiry is below: dnsNames: - example.com - www.example.com + uriSANs: + - spiffe://cluster.local/ns/sandbox/sa/example issuerRef: name: ca-issuer # We can reference ClusterIssuers by changing the kind here. From 13b05848382cd9f591b8f5055626c98737714837 Mon Sep 17 00:00:00 2001 From: JoshVanL Date: Thu, 26 Sep 2019 13:27:10 +0100 Subject: [PATCH 07/23] Change behaviour to be more relaxed around common names Signed-off-by: JoshVanL --- pkg/apis/certmanager/v1alpha2/types.go | 1 + pkg/controller/certificates/BUILD.bazel | 7 +- pkg/controller/certificates/sync.go | 6 +- pkg/controller/certificates/sync_test.go | 38 ++++++ pkg/controller/certificates/util.go | 20 ++- pkg/controller/certificates/util_test.go | 116 ++++++++++++++++++ pkg/controller/webhookbootstrap/controller.go | 7 +- .../certmanager/validation/certificate.go | 3 +- .../validation/certificate_test.go | 15 ++- pkg/util/pki/csr.go | 25 +--- pkg/util/pki/csr_test.go | 8 +- pkg/util/util.go | 11 ++ test/e2e/framework/helper/certificates.go | 2 +- test/unit/gen/certificate.go | 12 ++ 14 files changed, 226 insertions(+), 45 deletions(-) create mode 100644 pkg/controller/certificates/util_test.go diff --git a/pkg/apis/certmanager/v1alpha2/types.go b/pkg/apis/certmanager/v1alpha2/types.go index f47571481..9d81d9a18 100644 --- a/pkg/apis/certmanager/v1alpha2/types.go +++ b/pkg/apis/certmanager/v1alpha2/types.go @@ -20,6 +20,7 @@ package v1alpha2 const ( AltNamesAnnotationKey = "cert-manager.io/alt-names" IPSANAnnotationKey = "cert-manager.io/ip-sans" + URISANAnnotationKey = "cert-manager.io/uri-sans" CommonNameAnnotationKey = "cert-manager.io/common-name" IssuerNameAnnotationKey = "cert-manager.io/issuer-name" IssuerKindAnnotationKey = "cert-manager.io/issuer-kind" diff --git a/pkg/controller/certificates/BUILD.bazel b/pkg/controller/certificates/BUILD.bazel index 0e852b215..fc506b3f4 100644 --- a/pkg/controller/certificates/BUILD.bazel +++ b/pkg/controller/certificates/BUILD.bazel @@ -42,15 +42,20 @@ go_library( go_test( name = "go_default_test", - srcs = ["sync_test.go"], + srcs = [ + "sync_test.go", + "util_test.go", + ], embed = [":go_default_library"], deps = [ "//pkg/api/util:go_default_library", "//pkg/apis/certmanager/v1alpha2:go_default_library", "//pkg/apis/meta/v1:go_default_library", "//pkg/controller/test:go_default_library", + "//pkg/util:go_default_library", "//pkg/util/pki:go_default_library", "//test/unit/gen:go_default_library", + "//test/unit/listers:go_default_library", "@io_k8s_api//core/v1:go_default_library", "@io_k8s_apimachinery//pkg/apis/meta/v1:go_default_library", "@io_k8s_apimachinery//pkg/runtime:go_default_library", diff --git a/pkg/controller/certificates/sync.go b/pkg/controller/certificates/sync.go index 324c853d6..8f5a41545 100644 --- a/pkg/controller/certificates/sync.go +++ b/pkg/controller/certificates/sync.go @@ -790,6 +790,7 @@ func setSecretValues(ctx context.Context, crt *cmapi.Certificate, s *corev1.Secr delete(s.Annotations, cmapi.CommonNameAnnotationKey) delete(s.Annotations, cmapi.AltNamesAnnotationKey) delete(s.Annotations, cmapi.IPSANAnnotationKey) + delete(s.Annotations, cmapi.URISANAnnotationKey) } else { x509Cert, err := pki.DecodeX509CertificateBytes(data.cert) // TODO: handle InvalidData here? @@ -797,11 +798,10 @@ func setSecretValues(ctx context.Context, crt *cmapi.Certificate, s *corev1.Secr return err } - if len(x509Cert.Subject.CommonName) > 0 { - s.Annotations[cmapi.CommonNameAnnotationKey] = x509Cert.Subject.CommonName - } + s.Annotations[cmapi.CommonNameAnnotationKey] = x509Cert.Subject.CommonName s.Annotations[cmapi.AltNamesAnnotationKey] = strings.Join(x509Cert.DNSNames, ",") s.Annotations[cmapi.IPSANAnnotationKey] = strings.Join(pki.IPAddressesToString(x509Cert.IPAddresses), ",") + s.Annotations[cmapi.URISANAnnotationKey] = strings.Join(pki.URLsToString(x509Cert.URIs), ",") } return nil diff --git a/pkg/controller/certificates/sync_test.go b/pkg/controller/certificates/sync_test.go index ab2c8995c..4ac069cb6 100644 --- a/pkg/controller/certificates/sync_test.go +++ b/pkg/controller/certificates/sync_test.go @@ -692,6 +692,8 @@ func TestProcessCertificate(t *testing.T) { cmapi.IssuerNameAnnotationKey: exampleBundle1.certificate.Spec.IssuerRef.Name, cmapi.IPSANAnnotationKey: "", cmapi.AltNamesAnnotationKey: "example.com", + cmapi.CommonNameAnnotationKey: "", + cmapi.URISANAnnotationKey: "", }, }, Data: map[string][]byte{ @@ -730,6 +732,8 @@ func TestProcessCertificate(t *testing.T) { cmapi.IssuerNameAnnotationKey: exampleBundle1.certificate.Spec.IssuerRef.Name, cmapi.IPSANAnnotationKey: "", cmapi.AltNamesAnnotationKey: "example.com", + cmapi.CommonNameAnnotationKey: "", + cmapi.URISANAnnotationKey: "", }, }, Data: map[string][]byte{ @@ -785,6 +789,8 @@ func TestProcessCertificate(t *testing.T) { cmapi.IssuerNameAnnotationKey: exampleBundle1.certificate.Spec.IssuerRef.Name, cmapi.IPSANAnnotationKey: "", cmapi.AltNamesAnnotationKey: "example.com", + cmapi.CommonNameAnnotationKey: "", + cmapi.URISANAnnotationKey: "", }, }, Data: map[string][]byte{ @@ -841,6 +847,8 @@ func TestProcessCertificate(t *testing.T) { cmapi.IssuerNameAnnotationKey: exampleBundle1.certificate.Spec.IssuerRef.Name, cmapi.IPSANAnnotationKey: "", cmapi.AltNamesAnnotationKey: "example.com", + cmapi.CommonNameAnnotationKey: "", + cmapi.URISANAnnotationKey: "", }, }, Data: map[string][]byte{ @@ -870,6 +878,8 @@ func TestProcessCertificate(t *testing.T) { cmapi.IssuerNameAnnotationKey: exampleBundle1.certificate.Spec.IssuerRef.Name, cmapi.IPSANAnnotationKey: "", cmapi.AltNamesAnnotationKey: "example.com", + cmapi.CommonNameAnnotationKey: "", + cmapi.URISANAnnotationKey: "", }, }, Data: map[string][]byte{ @@ -901,6 +911,8 @@ func TestProcessCertificate(t *testing.T) { cmapi.IssuerNameAnnotationKey: exampleBundle1.certificate.Spec.IssuerRef.Name, cmapi.IPSANAnnotationKey: "", cmapi.AltNamesAnnotationKey: "example.com", + cmapi.CommonNameAnnotationKey: "", + cmapi.URISANAnnotationKey: "", }, }, Data: map[string][]byte{ @@ -930,6 +942,8 @@ func TestProcessCertificate(t *testing.T) { cmapi.IssuerNameAnnotationKey: exampleBundle1.certificate.Spec.IssuerRef.Name, cmapi.IPSANAnnotationKey: "", cmapi.AltNamesAnnotationKey: "example.com", + cmapi.CommonNameAnnotationKey: "", + cmapi.URISANAnnotationKey: "", }, }, Data: map[string][]byte{ @@ -959,6 +973,8 @@ func TestProcessCertificate(t *testing.T) { cmapi.IssuerNameAnnotationKey: exampleBundle1.certificate.Spec.IssuerRef.Name, cmapi.IPSANAnnotationKey: "", cmapi.AltNamesAnnotationKey: "example.com", + cmapi.CommonNameAnnotationKey: "", + cmapi.URISANAnnotationKey: "", }, }, Data: map[string][]byte{ @@ -1001,6 +1017,8 @@ func TestProcessCertificate(t *testing.T) { cmapi.IssuerNameAnnotationKey: exampleBundle1.certificate.Spec.IssuerRef.Name, cmapi.IPSANAnnotationKey: "", cmapi.AltNamesAnnotationKey: "example.com", + cmapi.CommonNameAnnotationKey: "", + cmapi.URISANAnnotationKey: "", }, }, Data: map[string][]byte{ @@ -1195,6 +1213,8 @@ func TestTemporaryCertificateEnabled(t *testing.T) { cmapi.IssuerNameAnnotationKey: exampleBundle1.certificate.Spec.IssuerRef.Name, cmapi.IPSANAnnotationKey: "", cmapi.AltNamesAnnotationKey: "example.com", + cmapi.CommonNameAnnotationKey: "", + cmapi.URISANAnnotationKey: "", }, }, Data: map[string][]byte{ @@ -1251,6 +1271,8 @@ func TestTemporaryCertificateEnabled(t *testing.T) { cmapi.IssuerNameAnnotationKey: exampleBundle1.certificate.Spec.IssuerRef.Name, cmapi.IPSANAnnotationKey: "", cmapi.AltNamesAnnotationKey: "example.com", + cmapi.CommonNameAnnotationKey: "", + cmapi.URISANAnnotationKey: "", }, }, Data: map[string][]byte{ @@ -1307,6 +1329,8 @@ func TestTemporaryCertificateEnabled(t *testing.T) { cmapi.IssuerNameAnnotationKey: exampleBundle1.certificate.Spec.IssuerRef.Name, cmapi.IPSANAnnotationKey: "", cmapi.AltNamesAnnotationKey: "example.com", + cmapi.CommonNameAnnotationKey: "", + cmapi.URISANAnnotationKey: "", }, }, Data: map[string][]byte{ @@ -1336,6 +1360,8 @@ func TestTemporaryCertificateEnabled(t *testing.T) { cmapi.IssuerNameAnnotationKey: exampleBundle1.certificate.Spec.IssuerRef.Name, cmapi.IPSANAnnotationKey: "", cmapi.AltNamesAnnotationKey: "example.com", + cmapi.CommonNameAnnotationKey: "", + cmapi.URISANAnnotationKey: "", }, }, Data: map[string][]byte{ @@ -1365,6 +1391,8 @@ func TestTemporaryCertificateEnabled(t *testing.T) { cmapi.IssuerNameAnnotationKey: exampleBundle1.certificate.Spec.IssuerRef.Name, cmapi.IPSANAnnotationKey: "", cmapi.AltNamesAnnotationKey: "example.com", + cmapi.CommonNameAnnotationKey: "", + cmapi.URISANAnnotationKey: "", }, }, Data: map[string][]byte{ @@ -1394,6 +1422,8 @@ func TestTemporaryCertificateEnabled(t *testing.T) { cmapi.IssuerNameAnnotationKey: exampleBundle1.certificate.Spec.IssuerRef.Name, cmapi.IPSANAnnotationKey: "", cmapi.AltNamesAnnotationKey: "example.com", + cmapi.CommonNameAnnotationKey: "", + cmapi.URISANAnnotationKey: "", }, }, Data: map[string][]byte{ @@ -1423,6 +1453,8 @@ func TestTemporaryCertificateEnabled(t *testing.T) { cmapi.IssuerNameAnnotationKey: exampleBundle1.certificate.Spec.IssuerRef.Name, cmapi.IPSANAnnotationKey: "", cmapi.AltNamesAnnotationKey: "example.com", + cmapi.CommonNameAnnotationKey: "", + cmapi.URISANAnnotationKey: "", }, }, Data: map[string][]byte{ @@ -1452,6 +1484,8 @@ func TestTemporaryCertificateEnabled(t *testing.T) { cmapi.IssuerNameAnnotationKey: exampleBundle1.certificate.Spec.IssuerRef.Name, cmapi.IPSANAnnotationKey: "", cmapi.AltNamesAnnotationKey: "example.com", + cmapi.CommonNameAnnotationKey: "", + cmapi.URISANAnnotationKey: "", }, }, Data: map[string][]byte{ @@ -1484,6 +1518,8 @@ func TestTemporaryCertificateEnabled(t *testing.T) { cmapi.IssuerNameAnnotationKey: exampleBundle1.certificate.Spec.IssuerRef.Name, cmapi.IPSANAnnotationKey: "", cmapi.AltNamesAnnotationKey: "example.com", + cmapi.CommonNameAnnotationKey: "", + cmapi.URISANAnnotationKey: "", }, }, Data: map[string][]byte{ @@ -1538,6 +1574,8 @@ func TestTemporaryCertificateEnabled(t *testing.T) { cmapi.IssuerNameAnnotationKey: exampleBundle1.certificate.Spec.IssuerRef.Name, cmapi.IPSANAnnotationKey: "", cmapi.AltNamesAnnotationKey: "example.com", + cmapi.CommonNameAnnotationKey: "", + cmapi.URISANAnnotationKey: "", }, }, Data: map[string][]byte{ diff --git a/pkg/controller/certificates/util.go b/pkg/controller/certificates/util.go index 3633219dc..07b908e54 100644 --- a/pkg/controller/certificates/util.go +++ b/pkg/controller/certificates/util.go @@ -83,6 +83,7 @@ func certificateMatchesSpec(crt *v1alpha2.Certificate, key crypto.Signer, cert * // TODO: add checks for IsCA field // check if the private key is the corresponding pair to the certificate + matches, err := pki.PublicKeyMatchesCertificate(key.Public(), cert) if err != nil { errs = append(errs, err.Error()) @@ -90,21 +91,18 @@ func certificateMatchesSpec(crt *v1alpha2.Certificate, key crypto.Signer, cert * errs = append(errs, fmt.Sprintf("Certificate private key does not match certificate")) } - // If CN is set, and the user didn’t specify it, ensure that the CN is one of the dnsNames - // validate the common name is correct + // If CN is set on the resource then it should exist on the certificate as + // the Common Name or a DNS Name expectedCN := crt.Spec.CommonName - if len(expectedCN) == 0 && len(cert.Subject.CommonName) > 0 { - if !util.Contains(cert.DNSNames, cert.Subject.CommonName) { - errs = append(errs, - fmt.Sprintf("Common name not set on Certificate, but the common name on the TLS certificate matches no DNS names: %q", cert.Subject.CommonName)) - } - } else if expectedCN != cert.Subject.CommonName { - errs = append(errs, fmt.Sprintf("Common name on TLS certificate not up to date: %q", cert.Subject.CommonName)) + gotCN := append(cert.DNSNames, cert.Subject.CommonName) + if !util.Contains(gotCN, expectedCN) { + errs = append(errs, fmt.Sprintf("Common Name on TLS certificate not up to date (%q): %s", + expectedCN, gotCN)) } // validate the dns names are correct - expectedDNSNames := pki.DNSNamesForCertificate(crt) - if !util.EqualUnsorted(cert.DNSNames, expectedDNSNames) { + expectedDNSNames := crt.Spec.DNSNames + if !util.Subset(cert.DNSNames, expectedDNSNames) { errs = append(errs, fmt.Sprintf("DNS names on TLS certificate not up to date: %q", cert.DNSNames)) } diff --git a/pkg/controller/certificates/util_test.go b/pkg/controller/certificates/util_test.go new file mode 100644 index 000000000..82e2aee68 --- /dev/null +++ b/pkg/controller/certificates/util_test.go @@ -0,0 +1,116 @@ +package certificates + +import ( + "testing" + "time" + + corev1 "k8s.io/api/core/v1" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + + cmapi "github.com/jetstack/cert-manager/pkg/apis/certmanager/v1alpha2" + cmmeta "github.com/jetstack/cert-manager/pkg/apis/meta/v1" + "github.com/jetstack/cert-manager/pkg/util" + "github.com/jetstack/cert-manager/test/unit/gen" + "github.com/jetstack/cert-manager/test/unit/listers" +) + +func TestCertificateMatchesSpec(t *testing.T) { + baseCert := gen.Certificate("test", + gen.SetCertificateIssuer(cmmeta.ObjectReference{Name: "ca-issuer", Kind: "Issuer", Group: "not-empty"}), + gen.SetCertificateSecretName("output"), + gen.SetCertificateRenewBefore(time.Hour*36), + ) + + exampleBundle := mustCreateCryptoBundle(t, gen.CertificateFrom(baseCert, + gen.SetCertificateDNSNames("a.example.com"), + gen.SetCertificateCommonName("common.name.example.com"), + gen.SetCertificateURIs("spiffe://cluster.local/ns/sandbox/sa/foo"), + )) + + secret := &corev1.Secret{ + ObjectMeta: metav1.ObjectMeta{ + Annotations: map[string]string{ + cmapi.IssuerNameAnnotationKey: "ca-issuer", + cmapi.IssuerKindAnnotationKey: "Issuer", + }, + }, + } + + type testT struct { + cb cryptoBundle + certificate *cmapi.Certificate + fakeLister *listers.FakeSecretLister + expMatch bool + expErrors []string + } + + for name, test := range map[string]testT{ + "if all match then return matched": { + cb: exampleBundle, + certificate: exampleBundle.certificate, + fakeLister: listers.FakeSecretListerFrom(listers.NewFakeSecretLister(), + listers.SetFakeSecretNamespaceListerGet(secret, nil), + ), + expMatch: true, + expErrors: nil, + }, + + "if common name empty but requested common name in DNS names then match": { + cb: mustCreateCryptoBundle(t, gen.CertificateFrom(exampleBundle.certificate, + gen.SetCertificateDNSNames("a.example.com", "common.name.example.com"), + gen.SetCertificateCommonName(""), + )), + certificate: gen.CertificateFrom(exampleBundle.certificate), + fakeLister: listers.FakeSecretListerFrom(listers.NewFakeSecretLister(), + listers.SetFakeSecretNamespaceListerGet(secret, nil), + ), + expMatch: true, + expErrors: nil, + }, + + "if common name random string but requested common name in DNS names then match": { + cb: mustCreateCryptoBundle(t, gen.CertificateFrom(exampleBundle.certificate, + gen.SetCertificateDNSNames("a.example.com", "common.name.example.com"), + gen.SetCertificateCommonName("foobar"), + )), + certificate: gen.CertificateFrom(exampleBundle.certificate), + fakeLister: listers.FakeSecretListerFrom(listers.NewFakeSecretLister(), + listers.SetFakeSecretNamespaceListerGet(secret, nil), + ), + expMatch: true, + expErrors: nil, + }, + + "if common name random string and no request DNS names but request common name then error missing common name": { + cb: mustCreateCryptoBundle(t, gen.CertificateFrom(exampleBundle.certificate, + gen.SetCertificateDNSNames(), + gen.SetCertificateCommonName("foobar"), + )), + certificate: gen.CertificateFrom(exampleBundle.certificate), + fakeLister: listers.FakeSecretListerFrom(listers.NewFakeSecretLister(), + listers.SetFakeSecretNamespaceListerGet(secret, nil), + ), + expMatch: false, + expErrors: []string{ + `Common Name on TLS certificate not up to date ("common.name.example.com"): [foobar]`, + "DNS names on TLS certificate not up to date: []", + }, + }, + } { + t.Run(name, func(t *testing.T) { + match, errs := certificateMatchesSpec( + test.certificate, test.cb.privateKey, test.cb.cert, test.fakeLister) + + if match != test.expMatch { + t.Errorf("got unexpected match bool, exp=%t got=%t", + test.expMatch, match) + } + + if !util.EqualSorted(test.expErrors, errs) { + t.Errorf("got unexpected errors, exp=%s got=%s", + test.expErrors, errs) + } + }) + } + +} diff --git a/pkg/controller/webhookbootstrap/controller.go b/pkg/controller/webhookbootstrap/controller.go index 5cbb3b3cc..cc924004e 100644 --- a/pkg/controller/webhookbootstrap/controller.go +++ b/pkg/controller/webhookbootstrap/controller.go @@ -316,14 +316,15 @@ func (c *controller) certificateRequiresIssuance(ctx context.Context, log logr.L // validate the common name is correct expectedCN := crt.Spec.CommonName - if expectedCN != cert.Subject.CommonName { + gotCN := append(cert.DNSNames, cert.Subject.CommonName) + if !util.Contains(gotCN, expectedCN) { log.Info("certificate common name is not as expected, re-issuing") return true } // validate the dns names are correct - expectedDNSNames := pki.DNSNamesForCertificate(crt) - if !util.EqualUnsorted(cert.DNSNames, expectedDNSNames) { + expectedDNSNames := crt.Spec.DNSNames + if !util.Subset(cert.DNSNames, expectedDNSNames) { log.Info("certificate dns names are not as expected, re-issuing") return true } diff --git a/pkg/internal/apis/certmanager/validation/certificate.go b/pkg/internal/apis/certmanager/validation/certificate.go index 15a0f0ef9..349c1df33 100644 --- a/pkg/internal/apis/certmanager/validation/certificate.go +++ b/pkg/internal/apis/certmanager/validation/certificate.go @@ -39,7 +39,8 @@ func ValidateCertificateSpec(crt *v1alpha2.CertificateSpec, fldPath *field.Path) el = append(el, validateIssuerRef(crt.IssuerRef, fldPath)...) if len(crt.CommonName) == 0 && len(crt.DNSNames) == 0 && len(crt.URISANs) == 0 { - el = append(el, field.Required(fldPath.Child("commonName,dnsNames,uriSANs"), "at least one of commonName, dnsNames, or uriSANs must be set")) + el = append(el, field.Required(fldPath.Child("commonName", "dnsNames", "uriSANs"), + "at least one of commonName, dnsNames, or uriSANs must be set")) } // if a common name has been specified, ensure it is no longer than 64 chars diff --git a/pkg/internal/apis/certmanager/validation/certificate_test.go b/pkg/internal/apis/certmanager/validation/certificate_test.go index 5e553fb6d..4740c8d01 100644 --- a/pkg/internal/apis/certmanager/validation/certificate_test.go +++ b/pkg/internal/apis/certmanager/validation/certificate_test.go @@ -114,7 +114,7 @@ func TestValidateCertificate(t *testing.T) { field.Required(fldPath.Child("secretName"), "must be specified"), }, }, - "certificate with no domains or URIs": { + "certificate with no domains, URIs or common name": { cfg: &v1alpha2.Certificate{ Spec: v1alpha2.CertificateSpec{ SecretName: "abc", @@ -122,7 +122,7 @@ func TestValidateCertificate(t *testing.T) { }, }, errs: []*field.Error{ - field.Required(fldPath.Child("commonName,dnsNames,uriSANs"), "at least one of commonName, dnsNames, or uriSANs must be set"), + field.Required(fldPath.Child("commonName", "dnsNames", "uriSANs"), "at least one of commonName, dnsNames, or uriSANs must be set"), }, }, "certificate with no issuerRef": { @@ -412,6 +412,17 @@ func TestValidateCertificate(t *testing.T) { field.Invalid(fldPath.Child("usages").Index(0), v1alpha2.KeyUsage("nonexistant"), "unknown keyusage"), }, }, + "valid certificate with only URI SAN name": { + cfg: &v1alpha2.Certificate{ + Spec: v1alpha2.CertificateSpec{ + SecretName: "abc", + IssuerRef: validIssuerRef, + URISANs: []string{ + "foo.bar", + }, + }, + }, + }, } for n, s := range scenarios { t.Run(n, func(t *testing.T) { diff --git a/pkg/util/pki/csr.go b/pkg/util/pki/csr.go index 6e51b1581..b8db325f1 100644 --- a/pkg/util/pki/csr.go +++ b/pkg/util/pki/csr.go @@ -35,21 +35,6 @@ import ( "github.com/jetstack/cert-manager/pkg/apis/certmanager/v1alpha2" ) -// DNSNamesForCertificate returns the DNS names that should be used for the -// given Certificate resource, by inspecting the CommonName and DNSNames fields. -func DNSNamesForCertificate(crt *v1alpha2.Certificate) []string { - if len(crt.Spec.DNSNames) == 0 { - if crt.Spec.CommonName == "" { - return []string{} - } - return []string{crt.Spec.CommonName} - } - if crt.Spec.CommonName != "" { - return removeDuplicates(append([]string{crt.Spec.CommonName}, crt.Spec.DNSNames...)) - } - return crt.Spec.DNSNames -} - func IPAddressesForCertificate(crt *v1alpha2.Certificate) []net.IP { var ipAddresses []net.IP var ip net.IP @@ -95,9 +80,11 @@ func IPAddressesToString(ipAddresses []net.IP) []string { func URLsToString(uris []*url.URL) []string { var uriStrs []string for _, uri := range uris { - if uri != nil { - uriStrs = append(uriStrs, uri.String()) + if uri == nil { + panic("provided uri to string is nil") } + + uriStrs = append(uriStrs, uri.String()) } return uriStrs @@ -161,7 +148,7 @@ func buildUsages(usages []v1alpha2.KeyUsage, isCA bool) (ku x509.KeyUsage, eku [ // to the x509.CreateCertificateRequest function. func GenerateCSR(crt *v1alpha2.Certificate) (*x509.CertificateRequest, error) { commonName := crt.Spec.CommonName - dnsNames := DNSNamesForCertificate(crt) + dnsNames := crt.Spec.DNSNames iPAddresses := IPAddressesForCertificate(crt) organization := OrganizationForCertificate(crt) uriNames, err := URIsForCertificate(crt) @@ -200,7 +187,7 @@ func GenerateCSR(crt *v1alpha2.Certificate) (*x509.CertificateRequest, error) { // The PublicKey field must be populated by the caller. func GenerateTemplate(crt *v1alpha2.Certificate) (*x509.Certificate, error) { commonName := crt.Spec.CommonName - dnsNames := DNSNamesForCertificate(crt) + dnsNames := crt.Spec.DNSNames ipAddresses := IPAddressesForCertificate(crt) organization := OrganizationForCertificate(crt) keyUsages, extKeyUsages, err := buildUsages(crt.Spec.Usages, crt.Spec.IsCA) diff --git a/pkg/util/pki/csr_test.go b/pkg/util/pki/csr_test.go index 5b0ada6c4..53d48efd1 100644 --- a/pkg/util/pki/csr_test.go +++ b/pkg/util/pki/csr_test.go @@ -164,7 +164,7 @@ func TestDNSNamesForCertificate(t *testing.T) { { name: "certificate with CommonName set", crtCN: "test", - expectDNSNames: []string{"test"}, + expectDNSNames: []string{}, }, { name: "certificate with one DNS name set", @@ -175,7 +175,7 @@ func TestDNSNamesForCertificate(t *testing.T) { name: "certificate with both common name and dnsName set", crtCN: "cn", crtDNSNames: []string{"dnsname"}, - expectDNSNames: []string{"cn", "dnsname"}, + expectDNSNames: []string{"dnsname"}, }, { name: "certificate with multiple dns names set", @@ -192,12 +192,12 @@ func TestDNSNamesForCertificate(t *testing.T) { name: "certificate with a dnsName equal to cn", crtCN: "cn", crtDNSNames: []string{"dnsname", "cn"}, - expectDNSNames: []string{"cn", "dnsname"}, + expectDNSNames: []string{"dnsname", "cn"}, }, } testFn := func(test testT) func(*testing.T) { return func(t *testing.T) { - actualDNSNames := DNSNamesForCertificate(buildCertificate(test.crtCN, test.crtDNSNames...)) + actualDNSNames := buildCertificate(test.crtCN, test.crtDNSNames...).Spec.DNSNames if len(actualDNSNames) != len(test.expectDNSNames) { t.Errorf("expected %q but got %q", test.expectDNSNames, actualDNSNames) return diff --git a/pkg/util/util.go b/pkg/util/util.go index 95b276811..4e5532f24 100644 --- a/pkg/util/util.go +++ b/pkg/util/util.go @@ -142,3 +142,14 @@ func Contains(ss []string, s string) bool { } return false } + +// Subset returns true if one slice is an unsorted subset of the first. +func Subset(set, subset []string) bool { + for _, s := range subset { + if !Contains(set, s) { + return false + } + } + + return true +} diff --git a/test/e2e/framework/helper/certificates.go b/test/e2e/framework/helper/certificates.go index 1453c0fcd..bd8451918 100644 --- a/test/e2e/framework/helper/certificates.go +++ b/test/e2e/framework/helper/certificates.go @@ -141,7 +141,7 @@ func (h *Helper) ValidateIssuedCertificate(certificate *v1alpha2.Certificate, ro // check the provided certificate is valid expectedOrganization := pki.OrganizationForCertificate(certificate) - expectedDNSNames := pki.DNSNamesForCertificate(certificate) + expectedDNSNames := certificate.Spec.DNSNames uris, err := pki.URIsForCertificate(certificate) if err != nil { return nil, fmt.Errorf("failed to parse URIs: %s", err) diff --git a/test/unit/gen/certificate.go b/test/unit/gen/certificate.go index f309feeae..320537761 100644 --- a/test/unit/gen/certificate.go +++ b/test/unit/gen/certificate.go @@ -64,6 +64,18 @@ func SetCertificateCommonName(commonName string) CertificateModifier { } } +func SetCertificateIPs(ips ...string) CertificateModifier { + return func(crt *v1alpha2.Certificate) { + crt.Spec.IPAddresses = ips + } +} + +func SetCertificateURIs(uris ...string) CertificateModifier { + return func(crt *v1alpha2.Certificate) { + crt.Spec.URISANs = uris + } +} + func SetCertificateIsCA(isCA bool) CertificateModifier { return func(crt *v1alpha2.Certificate) { crt.Spec.IsCA = isCA From 18e0dcdb63e33d93abd2d0cad59757962dc7c289 Mon Sep 17 00:00:00 2001 From: JoshVanL Date: Thu, 26 Sep 2019 15:48:11 +0100 Subject: [PATCH 08/23] Adds boilerplate copyright to util_test.go Signed-off-by: JoshVanL --- pkg/controller/certificates/util_test.go | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/pkg/controller/certificates/util_test.go b/pkg/controller/certificates/util_test.go index 82e2aee68..8055b7373 100644 --- a/pkg/controller/certificates/util_test.go +++ b/pkg/controller/certificates/util_test.go @@ -1,3 +1,19 @@ +/* +Copyright 2019 The Jetstack cert-manager contributors. + +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 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + package certificates import ( From b48b0e58fd53d9bf055802515ce4cf66e40dd1dc Mon Sep 17 00:00:00 2001 From: JoshVanL Date: Thu, 26 Sep 2019 16:26:22 +0100 Subject: [PATCH 09/23] Prevent panic in e2e tests caused by change in DNS name behaviour Signed-off-by: JoshVanL --- test/e2e/framework/helper/certificates.go | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/test/e2e/framework/helper/certificates.go b/test/e2e/framework/helper/certificates.go index bd8451918..fce8b408e 100644 --- a/test/e2e/framework/helper/certificates.go +++ b/test/e2e/framework/helper/certificates.go @@ -212,6 +212,11 @@ func (h *Helper) ValidateIssuedCertificate(certificate *v1alpha2.Certificate, ro } } + var dnsName string + if len(expectedDNSNames) > 0 { + dnsName = expectedDNSNames[0] + } + // TODO: move this verification step out of this function if rootCAPEM != nil { rootCertPool := x509.NewCertPool() @@ -219,7 +224,7 @@ func (h *Helper) ValidateIssuedCertificate(certificate *v1alpha2.Certificate, ro intermediateCertPool := x509.NewCertPool() intermediateCertPool.AppendCertsFromPEM(certBytes) opts := x509.VerifyOptions{ - DNSName: expectedDNSNames[0], + DNSName: dnsName, Intermediates: intermediateCertPool, Roots: rootCertPool, } From eb18c94efcf164cd9dcc5cfc42ff305719177fda Mon Sep 17 00:00:00 2001 From: JoshVanL Date: Fri, 27 Sep 2019 13:37:18 +0100 Subject: [PATCH 10/23] Adds a URISANs e2e conformance test Signed-off-by: JoshVanL --- .../conformance/certificates/acme/acme.go | 2 ++ .../conformance/certificates/featureset.go | 4 +++ .../suite/conformance/certificates/suite.go | 28 +++++++++++++++++++ 3 files changed, 34 insertions(+) diff --git a/test/e2e/suite/conformance/certificates/acme/acme.go b/test/e2e/suite/conformance/certificates/acme/acme.go index b4d3f19ca..0c923596e 100644 --- a/test/e2e/suite/conformance/certificates/acme/acme.go +++ b/test/e2e/suite/conformance/certificates/acme/acme.go @@ -38,6 +38,7 @@ var _ = framework.ConformanceDescribe("Certificates", func() { certificates.IPAddressFeature, certificates.DurationFeature, certificates.WildcardsFeature, + certificates.URISANsFeature, ) // unsupportedDNS01Features is a list of features that are not supported by the ACME @@ -45,6 +46,7 @@ var _ = framework.ConformanceDescribe("Certificates", func() { var unsupportedDNS01Features = certificates.NewFeatureSet( certificates.IPAddressFeature, certificates.DurationFeature, + certificates.URISANsFeature, ) provisionerHTTP01 := new(acmeIssuerProvisioner) diff --git a/test/e2e/suite/conformance/certificates/featureset.go b/test/e2e/suite/conformance/certificates/featureset.go index 0731f24a3..f4e97ea25 100644 --- a/test/e2e/suite/conformance/certificates/featureset.go +++ b/test/e2e/suite/conformance/certificates/featureset.go @@ -98,4 +98,8 @@ const ( // certificates for the same private key. This is useful for some issuers // that have trouble being configured to support this feature. ReusePrivateKeyFeature Feature = "ReusePrivateKey" + + // URISANs denotes whether to the target issuer is able to sign a certificate + // that includes a URISANs. ACME providers do not support this. + URISANsFeature Feature = "URISANs" ) diff --git a/test/e2e/suite/conformance/certificates/suite.go b/test/e2e/suite/conformance/certificates/suite.go index 25264572e..9c4f9c20f 100644 --- a/test/e2e/suite/conformance/certificates/suite.go +++ b/test/e2e/suite/conformance/certificates/suite.go @@ -252,6 +252,34 @@ func (s *Suite) Define() { Expect(err).NotTo(HaveOccurred()) }) + It("should issue a certificate that includes only a URISANs name", func() { + s.checkFeatures(URISANsFeature) + + testCertificate := &cmapi.Certificate{ + ObjectMeta: metav1.ObjectMeta{ + Name: "testcert", + Namespace: f.Namespace.Name, + }, + Spec: cmapi.CertificateSpec{ + SecretName: "testcert-tls", + URISANs: []string{ + "spiffe://cluster.local/ns/sandbox/sa/foo", + }, + IssuerRef: issuerRef, + }, + } + By("Creating a Certificate") + err := f.CRClient.Create(ctx, testCertificate) + Expect(err).NotTo(HaveOccurred()) + + By("Waiting for the Certificate to be issued...") + err = f.Helper().WaitCertificateIssuedValid(f.Namespace.Name, "testcert", time.Minute*5) + Expect(err).NotTo(HaveOccurred()) + + err = f.Helper().WaitCertificateIssuedValid(f.Namespace.Name, "testcert", time.Minute*5) + Expect(err).NotTo(HaveOccurred()) + }) + It("should issue another certificate with the same private key if the existing certificate and CertificateRequest are deleted", func() { s.checkFeatures(ReusePrivateKeyFeature) From 8175a59ab3aec9f18f16ad3430644c56685b17e2 Mon Sep 17 00:00:00 2001 From: JoshVanL Date: Fri, 27 Sep 2019 14:18:00 +0100 Subject: [PATCH 11/23] Changes e2e test for DNS for expected to be subset Signed-off-by: JoshVanL --- test/e2e/framework/helper/certificates.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/e2e/framework/helper/certificates.go b/test/e2e/framework/helper/certificates.go index fce8b408e..1e5917584 100644 --- a/test/e2e/framework/helper/certificates.go +++ b/test/e2e/framework/helper/certificates.go @@ -169,7 +169,7 @@ func (h *Helper) ValidateIssuedCertificate(certificate *v1alpha2.Certificate, ro commonNameCorrect = false } - if !commonNameCorrect || !util.EqualUnsorted(cert.DNSNames, expectedDNSNames) || !util.EqualUnsorted(pki.URLsToString(cert.URIs), expectedURIs) || + if !commonNameCorrect || !util.Subset(cert.DNSNames, expectedDNSNames) || !util.EqualUnsorted(pki.URLsToString(cert.URIs), expectedURIs) || !(len(cert.Subject.Organization) == 0 || util.EqualUnsorted(cert.Subject.Organization, expectedOrganization)) { return nil, fmt.Errorf("Expected certificate valid for CN %q, O %v, dnsNames %v, uriSANs %v,but got a certificate valid for CN %q, O %v, dnsNames %v, uriSANs %v", expectedCN, expectedOrganization, expectedDNSNames, expectedURIs, cert.Subject.CommonName, cert.Subject.Organization, cert.DNSNames, cert.URIs) From 54f8069a78a6a7ab5a229835ac4cffc6b5b2f29a Mon Sep 17 00:00:00 2001 From: JoshVanL Date: Fri, 27 Sep 2019 16:24:51 +0100 Subject: [PATCH 12/23] Make annotation of secret if nil to prevent panic Signed-off-by: JoshVanL --- pkg/controller/certificates/util.go | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/pkg/controller/certificates/util.go b/pkg/controller/certificates/util.go index 07b908e54..c1aef5005 100644 --- a/pkg/controller/certificates/util.go +++ b/pkg/controller/certificates/util.go @@ -121,6 +121,10 @@ func certificateMatchesSpec(crt *v1alpha2.Certificate, key crypto.Signer, cert * // TODO: Refactor so that the secret is passed as argument? secret, err := secretLister.Secrets(crt.Namespace).Get(crt.Spec.SecretName) + if secret.Annotations == nil { + secret.Annotations = make(map[string]string) + } + // validate that the issuer is correct if crt.Spec.IssuerRef.Name != secret.Annotations[v1alpha2.IssuerNameAnnotationKey] { errs = append(errs, fmt.Sprintf("Issuer of the certificate is not up to date: %q", secret.Annotations[v1alpha2.IssuerNameAnnotationKey])) From 66cda5cbd7f203baf5a01a95f746c042fb06034b Mon Sep 17 00:00:00 2001 From: JoshVanL Date: Fri, 27 Sep 2019 17:54:23 +0100 Subject: [PATCH 13/23] Only match for common name in DNS names if common name was given Signed-off-by: JoshVanL --- pkg/controller/certificates/util.go | 2 +- pkg/controller/certificates/util_test.go | 14 ++++++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/pkg/controller/certificates/util.go b/pkg/controller/certificates/util.go index c1aef5005..1c97fab8a 100644 --- a/pkg/controller/certificates/util.go +++ b/pkg/controller/certificates/util.go @@ -95,7 +95,7 @@ func certificateMatchesSpec(crt *v1alpha2.Certificate, key crypto.Signer, cert * // the Common Name or a DNS Name expectedCN := crt.Spec.CommonName gotCN := append(cert.DNSNames, cert.Subject.CommonName) - if !util.Contains(gotCN, expectedCN) { + if len(expectedCN) > 0 && !util.Contains(gotCN, expectedCN) { errs = append(errs, fmt.Sprintf("Common Name on TLS certificate not up to date (%q): %s", expectedCN, gotCN)) } diff --git a/pkg/controller/certificates/util_test.go b/pkg/controller/certificates/util_test.go index 8055b7373..12afc2c46 100644 --- a/pkg/controller/certificates/util_test.go +++ b/pkg/controller/certificates/util_test.go @@ -71,6 +71,20 @@ func TestCertificateMatchesSpec(t *testing.T) { expErrors: nil, }, + "if no common name but DNS and all match then return matched": { + cb: mustCreateCryptoBundle(t, gen.CertificateFrom(exampleBundle.certificate, + gen.SetCertificateCommonName(""), + )), + certificate: gen.CertificateFrom(exampleBundle.certificate, + gen.SetCertificateCommonName(""), + ), + fakeLister: listers.FakeSecretListerFrom(listers.NewFakeSecretLister(), + listers.SetFakeSecretNamespaceListerGet(secret, nil), + ), + expMatch: true, + expErrors: nil, + }, + "if common name empty but requested common name in DNS names then match": { cb: mustCreateCryptoBundle(t, gen.CertificateFrom(exampleBundle.certificate, gen.SetCertificateDNSNames("a.example.com", "common.name.example.com"), From 8c45357313d90104973b39b19999d611de41870a Mon Sep 17 00:00:00 2001 From: JoshVanL Date: Mon, 30 Sep 2019 11:15:58 +0100 Subject: [PATCH 14/23] Disable requestiing venafi cert with only URISANs specified Signed-off-by: JoshVanL --- test/e2e/suite/conformance/certificates/venafi/venafi.go | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/test/e2e/suite/conformance/certificates/venafi/venafi.go b/test/e2e/suite/conformance/certificates/venafi/venafi.go index 380b9f340..2424e2e85 100644 --- a/test/e2e/suite/conformance/certificates/venafi/venafi.go +++ b/test/e2e/suite/conformance/certificates/venafi/venafi.go @@ -38,6 +38,10 @@ var _ = framework.ConformanceDescribe("Certificates", func() { // key or using the same private key multiple times. certificates.ECDSAFeature, certificates.ReusePrivateKeyFeature, + + // Venafi does not support signing a certificate with only URISANs and an + // empty common name. + certificates.URISANsFeature, ) provisioner := new(venafiProvisioner) From 334f90dfac2c6c45ae3e0512f7e650e04d700506 Mon Sep 17 00:00:00 2001 From: JoshVanL Date: Mon, 30 Sep 2019 13:29:25 +0100 Subject: [PATCH 15/23] Adds uri_sans to vault parameters Signed-off-by: JoshVanL --- pkg/internal/vault/vault.go | 1 + 1 file changed, 1 insertion(+) diff --git a/pkg/internal/vault/vault.go b/pkg/internal/vault/vault.go index 66a1e97dc..e522e5796 100644 --- a/pkg/internal/vault/vault.go +++ b/pkg/internal/vault/vault.go @@ -97,6 +97,7 @@ func (v *Vault) Sign(csrPEM []byte, duration time.Duration) (cert []byte, ca []b "common_name": csr.Subject.CommonName, "alt_names": strings.Join(csr.DNSNames, ","), "ip_sans": strings.Join(pki.IPAddressesToString(csr.IPAddresses), ","), + "uri_sans": strings.Join(pki.URLsToString(csr.URIs), ","), "ttl": duration.String(), "csr": string(csrPEM), From 15fccf9ebb208c02942c44f3d1179a6401a874d3 Mon Sep 17 00:00:00 2001 From: JoshVanL Date: Tue, 1 Oct 2019 12:02:43 +0100 Subject: [PATCH 16/23] Adds describe CertificateRequest in tests when waiting for valid certificate fails and enable no CommonName for vault server Signed-off-by: JoshVanL --- test/e2e/framework/addon/vault/setup.go | 1 + test/e2e/framework/helper/certificates.go | 29 ++++++++++++------- .../suite/conformance/certificates/suite.go | 3 -- 3 files changed, 20 insertions(+), 13 deletions(-) diff --git a/test/e2e/framework/addon/vault/setup.go b/test/e2e/framework/addon/vault/setup.go index a8193b7c3..feeaba00d 100644 --- a/test/e2e/framework/addon/vault/setup.go +++ b/test/e2e/framework/addon/vault/setup.go @@ -407,6 +407,7 @@ func (v *VaultInitializer) setupRole() error { "allow_any_name": "true", "max_ttl": "2160h", "key_type": "any", + "require_cn": "false", } url := path.Join("/v1", v.IntermediateMount, "roles", v.Role) diff --git a/test/e2e/framework/helper/certificates.go b/test/e2e/framework/helper/certificates.go index 1e5917584..ad2c7c80b 100644 --- a/test/e2e/framework/helper/certificates.go +++ b/test/e2e/framework/helper/certificates.go @@ -60,11 +60,8 @@ func (h *Helper) WaitForCertificateReady(ns, name string, timeout time.Duration) }, ) - if err != nil { - return nil, err - } - - return certificate, nil + // return certificate even when error to use for debugging + return certificate, err } // WaitForCertificateNotReady waits for the certificate resource to enter a @@ -91,11 +88,8 @@ func (h *Helper) WaitForCertificateNotReady(ns, name string, timeout time.Durati }, ) - if err != nil { - return nil, err - } - - return certificate, nil + // return certificate even when error to use for debugging + return certificate, err } // ValidateIssuedCertificate will ensure that the given Certificate has a @@ -247,6 +241,7 @@ func (h *Helper) WaitCertificateIssuedValidTLS(ns, name string, timeout time.Dur log.Logf("Error waiting for Certificate to become Ready: %v", err) h.Kubectl(ns).DescribeResource("certificate", name) h.Kubectl(ns).Describe("order", "challenge") + h.describeCertificateRequestFromCertificate(ns, certificate) return err } @@ -255,8 +250,22 @@ func (h *Helper) WaitCertificateIssuedValidTLS(ns, name string, timeout time.Dur log.Logf("Error validating issued certificate: %v", err) h.Kubectl(ns).DescribeResource("certificate", name) h.Kubectl(ns).Describe("order", "challenge") + h.describeCertificateRequestFromCertificate(ns, certificate) return err } return nil } + +func (h *Helper) describeCertificateRequestFromCertificate(ns string, certificate *v1alpha2.Certificate) { + if certificate == nil { + return + } + + crName, err := apiutil.ComputeCertificateRequestName(certificate) + if err != nil { + log.Logf("Failed to compute CertificateRequest name from certificate: %s", err) + return + } + h.Kubectl(ns).DescribeResource("certificaterequest", crName) +} diff --git a/test/e2e/suite/conformance/certificates/suite.go b/test/e2e/suite/conformance/certificates/suite.go index 9c4f9c20f..52476700d 100644 --- a/test/e2e/suite/conformance/certificates/suite.go +++ b/test/e2e/suite/conformance/certificates/suite.go @@ -275,9 +275,6 @@ func (s *Suite) Define() { By("Waiting for the Certificate to be issued...") err = f.Helper().WaitCertificateIssuedValid(f.Namespace.Name, "testcert", time.Minute*5) Expect(err).NotTo(HaveOccurred()) - - err = f.Helper().WaitCertificateIssuedValid(f.Namespace.Name, "testcert", time.Minute*5) - Expect(err).NotTo(HaveOccurred()) }) It("should issue another certificate with the same private key if the existing certificate and CertificateRequest are deleted", func() { From e64d0a26be0d6877819f176b53db885510361a88 Mon Sep 17 00:00:00 2001 From: JoshVanL Date: Tue, 1 Oct 2019 20:19:45 +0100 Subject: [PATCH 17/23] Add allowed URI names to e2e test vault server Signed-off-by: JoshVanL --- test/e2e/framework/addon/vault/setup.go | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/test/e2e/framework/addon/vault/setup.go b/test/e2e/framework/addon/vault/setup.go index feeaba00d..60a1228d3 100644 --- a/test/e2e/framework/addon/vault/setup.go +++ b/test/e2e/framework/addon/vault/setup.go @@ -404,10 +404,11 @@ func (v *VaultInitializer) setupRole() error { } params := map[string]string{ - "allow_any_name": "true", - "max_ttl": "2160h", - "key_type": "any", - "require_cn": "false", + "allow_any_name": "true", + "max_ttl": "2160h", + "key_type": "any", + "require_cn": "false", + "allowed_uri_sans": "spiffe://cluster.local/*", } url := path.Join("/v1", v.IntermediateMount, "roles", v.Role) From b6bce10b2fff1d8993f6888aa33a3b82b3a05540 Mon Sep 17 00:00:00 2001 From: JoshVanL Date: Wed, 2 Oct 2019 09:25:45 +0100 Subject: [PATCH 18/23] Adds CommonName e2e tests for new behaviour Signed-off-by: JoshVanL --- .../certificaterequests/acme/BUILD.bazel | 1 + .../certificaterequests/acme/acme.go | 14 +++ .../certificaterequests/acme/acme_test.go | 62 ++++++--- .../conformance/certificates/acme/acme.go | 2 + .../conformance/certificates/featureset.go | 6 + .../suite/conformance/certificates/suite.go | 119 ++++++++++++++++-- 6 files changed, 177 insertions(+), 27 deletions(-) diff --git a/pkg/controller/certificaterequests/acme/BUILD.bazel b/pkg/controller/certificaterequests/acme/BUILD.bazel index 64d1575cd..74eff8bb9 100644 --- a/pkg/controller/certificaterequests/acme/BUILD.bazel +++ b/pkg/controller/certificaterequests/acme/BUILD.bazel @@ -17,6 +17,7 @@ go_library( "//pkg/controller/certificaterequests/util:go_default_library", "//pkg/issuer:go_default_library", "//pkg/logs:go_default_library", + "//pkg/util:go_default_library", "//pkg/util/pki:go_default_library", "@io_k8s_apimachinery//pkg/api/errors:go_default_library", "@io_k8s_apimachinery//pkg/apis/meta/v1:go_default_library", diff --git a/pkg/controller/certificaterequests/acme/acme.go b/pkg/controller/certificaterequests/acme/acme.go index c8279eca8..c1b36df61 100644 --- a/pkg/controller/certificaterequests/acme/acme.go +++ b/pkg/controller/certificaterequests/acme/acme.go @@ -38,6 +38,7 @@ import ( crutil "github.com/jetstack/cert-manager/pkg/controller/certificaterequests/util" issuerpkg "github.com/jetstack/cert-manager/pkg/issuer" logf "github.com/jetstack/cert-manager/pkg/logs" + "github.com/jetstack/cert-manager/pkg/util" "github.com/jetstack/cert-manager/pkg/util/pki" ) @@ -92,6 +93,19 @@ func (a *ACME) Sign(ctx context.Context, cr *v1alpha2.CertificateRequest, issuer return nil, nil } + // If the CommonName is also not present in the DNS names of the CSR then hard fail. + if len(csr.Subject.CommonName) > 0 && !util.Contains(csr.DNSNames, csr.Subject.CommonName) { + err = fmt.Errorf("%q does not exist in %s", csr.Subject.CommonName, csr.DNSNames) + message := fmt.Sprintf("Requested certificate contains CommonName not present in the requested DNS Subject Alternative Names: %s", + err) + + a.reporter.Failed(cr, err, "OrderBuildingError", message) + + log.Error(err, message) + + return nil, nil + } + // If we fail to build the order we have to hard fail. expectedOrder, err := buildOrder(cr, csr) if err != nil { diff --git a/pkg/controller/certificaterequests/acme/acme_test.go b/pkg/controller/certificaterequests/acme/acme_test.go index 1e65259e4..6a88855ce 100644 --- a/pkg/controller/certificaterequests/acme/acme_test.go +++ b/pkg/controller/certificaterequests/acme/acme_test.go @@ -22,7 +22,6 @@ import ( "crypto/rand" "crypto/x509" "crypto/x509/pkix" - "encoding/asn1" "encoding/pem" "errors" "testing" @@ -51,13 +50,15 @@ var ( fixedClock = fakeclock.NewFakeClock(fixedClockStart) ) -func generateCSR(t *testing.T, secretKey crypto.Signer) []byte { - asn1Subj, _ := asn1.Marshal(pkix.Name{ - CommonName: "test", - }.ToRDNSequence()) +func generateCSR(t *testing.T, secretKey crypto.Signer, extraDNSNames ...string) []byte { + // The CommonName of the certificate request must also be present in the DNS + // Names. template := x509.CertificateRequest{ - RawSubject: asn1Subj, + Subject: pkix.Name{ + CommonName: "example.com", + }, SignatureAlgorithm: x509.SHA256WithRSA, + DNSNames: append(extraDNSNames, "foo.com"), } csrBytes, err := x509.CreateCertificateRequest(rand.Reader, &template, secretKey) @@ -82,8 +83,8 @@ func TestSign(t *testing.T) { t.FailNow() } - //skPEM := pki.EncodePKCS1PrivateKey(sk) - csrPEM := generateCSR(t, sk) + csrPEM := generateCSR(t, sk, "example.com") + csrPEMExampleNotPresent := generateCSR(t, sk) baseCR := gen.CertificateRequest("test-cr", gen.SetCertificateRequestCSR(csrPEM), @@ -152,6 +153,35 @@ func TestSign(t *testing.T) { }, }, + "if the common name is not present in the DNS names then should hard fail": { + certificateRequest: gen.CertificateRequestFrom(baseCR, + gen.SetCertificateRequestCSR(csrPEMExampleNotPresent), + ), + builder: &testpkg.Builder{ + CertManagerObjects: []runtime.Object{baseCR.DeepCopy(), baseIssuer.DeepCopy()}, + ExpectedEvents: []string{ + `Warning OrderBuildingError Requested certificate contains CommonName not present in the requested DNS Subject Alternative Names: "example.com" does not exist in [foo.com]: "example.com" does not exist in [foo.com]`, + }, + ExpectedActions: []testpkg.Action{ + testpkg.NewAction(coretesting.NewUpdateAction( + cmapi.SchemeGroupVersion.WithResource("certificaterequests"), + gen.DefaultTestNamespace, + gen.CertificateRequestFrom(baseCR, + gen.SetCertificateRequestCSR(csrPEMExampleNotPresent), + gen.SetCertificateRequestStatusCondition(cmapi.CertificateRequestCondition{ + Type: cmapi.CertificateRequestConditionReady, + Status: cmmeta.ConditionFalse, + Reason: cmapi.CertificateRequestReasonFailed, + Message: `Requested certificate contains CommonName not present in the requested DNS Subject Alternative Names: "example.com" does not exist in [foo.com]: "example.com" does not exist in [foo.com]`, + LastTransitionTime: &metaFixedClockStart, + }), + gen.SetCertificateRequestFailureTime(metaFixedClockStart), + ), + )), + }, + }, + }, + //TODO: Think of a creative way to get `buildOrder` to fail :thinking_face: "if order doesn't exist then attempt to create one": { @@ -159,7 +189,7 @@ func TestSign(t *testing.T) { builder: &testpkg.Builder{ CertManagerObjects: []runtime.Object{baseCR.DeepCopy(), baseIssuer.DeepCopy()}, ExpectedEvents: []string{ - "Normal OrderCreated Created Order resource default-unit-test-ns/test-cr-1049712215", + "Normal OrderCreated Created Order resource default-unit-test-ns/test-cr-3921610499", }, ExpectedActions: []testpkg.Action{ testpkg.NewAction(coretesting.NewCreateAction( @@ -176,7 +206,7 @@ func TestSign(t *testing.T) { Type: cmapi.CertificateRequestConditionReady, Status: cmmeta.ConditionFalse, Reason: cmapi.CertificateRequestReasonPending, - Message: "Created Order resource default-unit-test-ns/test-cr-1049712215", + Message: "Created Order resource default-unit-test-ns/test-cr-3921610499", LastTransitionTime: &metaFixedClockStart, }), ), @@ -189,7 +219,7 @@ func TestSign(t *testing.T) { certificateRequest: baseCR.DeepCopy(), builder: &testpkg.Builder{ ExpectedEvents: []string{ - "Normal OrderGetError Failed to get order resource default-unit-test-ns/test-cr-1049712215: this is a network error", + "Normal OrderGetError Failed to get order resource default-unit-test-ns/test-cr-3921610499: this is a network error", }, CertManagerObjects: []runtime.Object{baseCR.DeepCopy(), baseIssuer.DeepCopy()}, ExpectedActions: []testpkg.Action{ @@ -202,7 +232,7 @@ func TestSign(t *testing.T) { Type: cmapi.CertificateRequestConditionReady, Status: cmmeta.ConditionFalse, Reason: cmapi.CertificateRequestReasonPending, - Message: "Failed to get order resource default-unit-test-ns/test-cr-1049712215: this is a network error", + Message: "Failed to get order resource default-unit-test-ns/test-cr-3921610499: this is a network error", LastTransitionTime: &metaFixedClockStart, }), ), @@ -225,7 +255,7 @@ func TestSign(t *testing.T) { certificateRequest: baseCR.DeepCopy(), builder: &testpkg.Builder{ ExpectedEvents: []string{ - `Warning OrderFailed Failed to wait for order resource default-unit-test-ns/test-cr-1049712215 to become ready: order is in "invalid" state`, + `Warning OrderFailed Failed to wait for order resource default-unit-test-ns/test-cr-3921610499 to become ready: order is in "invalid" state`, }, CertManagerObjects: []runtime.Object{baseCR.DeepCopy(), baseIssuer.DeepCopy(), gen.OrderFrom(baseOrder, @@ -242,7 +272,7 @@ func TestSign(t *testing.T) { Type: cmapi.CertificateRequestConditionReady, Status: cmmeta.ConditionFalse, Reason: cmapi.CertificateRequestReasonFailed, - Message: `Failed to wait for order resource default-unit-test-ns/test-cr-1049712215 to become ready: order is in "invalid" state`, + Message: `Failed to wait for order resource default-unit-test-ns/test-cr-3921610499 to become ready: order is in "invalid" state`, LastTransitionTime: &metaFixedClockStart, }), gen.SetCertificateRequestFailureTime(metaFixedClockStart), @@ -256,7 +286,7 @@ func TestSign(t *testing.T) { certificateRequest: baseCR.DeepCopy(), builder: &testpkg.Builder{ ExpectedEvents: []string{ - `Normal OrderPending Waiting on certificate issuance from order default-unit-test-ns/test-cr-1049712215: "pending"`, + `Normal OrderPending Waiting on certificate issuance from order default-unit-test-ns/test-cr-3921610499: "pending"`, }, CertManagerObjects: []runtime.Object{baseCR.DeepCopy(), baseIssuer.DeepCopy(), gen.OrderFrom(baseOrder, @@ -273,7 +303,7 @@ func TestSign(t *testing.T) { Type: cmapi.CertificateRequestConditionReady, Status: cmmeta.ConditionFalse, Reason: cmapi.CertificateRequestReasonPending, - Message: `Waiting on certificate issuance from order default-unit-test-ns/test-cr-1049712215: "pending"`, + Message: `Waiting on certificate issuance from order default-unit-test-ns/test-cr-3921610499: "pending"`, LastTransitionTime: &metaFixedClockStart, }), ), diff --git a/test/e2e/suite/conformance/certificates/acme/acme.go b/test/e2e/suite/conformance/certificates/acme/acme.go index 0c923596e..9a92c3895 100644 --- a/test/e2e/suite/conformance/certificates/acme/acme.go +++ b/test/e2e/suite/conformance/certificates/acme/acme.go @@ -39,6 +39,7 @@ var _ = framework.ConformanceDescribe("Certificates", func() { certificates.DurationFeature, certificates.WildcardsFeature, certificates.URISANsFeature, + certificates.CommonNameFeature, ) // unsupportedDNS01Features is a list of features that are not supported by the ACME @@ -47,6 +48,7 @@ var _ = framework.ConformanceDescribe("Certificates", func() { certificates.IPAddressFeature, certificates.DurationFeature, certificates.URISANsFeature, + certificates.CommonNameFeature, ) provisionerHTTP01 := new(acmeIssuerProvisioner) diff --git a/test/e2e/suite/conformance/certificates/featureset.go b/test/e2e/suite/conformance/certificates/featureset.go index f4e97ea25..c752fb534 100644 --- a/test/e2e/suite/conformance/certificates/featureset.go +++ b/test/e2e/suite/conformance/certificates/featureset.go @@ -102,4 +102,10 @@ const ( // URISANs denotes whether to the target issuer is able to sign a certificate // that includes a URISANs. ACME providers do not support this. URISANsFeature Feature = "URISANs" + + // CommonName denotes whether the target issuer is able to sign certificates + // with a distinct CommonName. This is useful for issuers such as ACME + // providers that ignore, or otherwise have special requirements for the + // CommonName such as needing to be present in the DNS Name list. + CommonNameFeature = "CommonName" ) diff --git a/test/e2e/suite/conformance/certificates/suite.go b/test/e2e/suite/conformance/certificates/suite.go index 52476700d..6439eabe0 100644 --- a/test/e2e/suite/conformance/certificates/suite.go +++ b/test/e2e/suite/conformance/certificates/suite.go @@ -124,7 +124,7 @@ func (s *Suite) Define() { s.DeleteIssuerFunc(f, issuerRef) }) - It("should issue a basic, defaulted certificate for a single commonName and distinct dnsName", func() { + It("should issue a basic, defaulted certificate for a single distinct DNS Name", func() { testCertificate := &cmapi.Certificate{ ObjectMeta: metav1.ObjectMeta{ Name: "testcert", @@ -132,9 +132,8 @@ func (s *Suite) Define() { }, Spec: cmapi.CertificateSpec{ SecretName: "testcert-tls", - CommonName: s.newDomain(), - DNSNames: []string{s.newDomain()}, IssuerRef: issuerRef, + DNSNames: []string{s.newDomain()}, }, } By("Creating a Certificate") @@ -146,7 +145,7 @@ func (s *Suite) Define() { Expect(err).NotTo(HaveOccurred()) }) - It("should issue an ECDSA, defaulted certificate for a single commonName and distinct dnsName", func() { + It("should issue an ECDSA, defaulted certificate for a single distinct dnsName", func() { s.checkFeatures(ECDSAFeature) testCertificate := &cmapi.Certificate{ @@ -157,7 +156,6 @@ func (s *Suite) Define() { Spec: cmapi.CertificateSpec{ SecretName: "testcert-tls", KeyAlgorithm: cmapi.ECDSAKeyAlgorithm, - CommonName: s.newDomain(), DNSNames: []string{s.newDomain()}, IssuerRef: issuerRef, }, @@ -171,7 +169,56 @@ func (s *Suite) Define() { Expect(err).NotTo(HaveOccurred()) }) - It("should issue a certificate that defines a commonName and ipAddresses", func() { + It("should issue a basic, defaulted certificate for a single Common Name", func() { + s.checkFeatures(CommonNameFeature) + + testCertificate := &cmapi.Certificate{ + ObjectMeta: metav1.ObjectMeta{ + Name: "testcert", + Namespace: f.Namespace.Name, + }, + Spec: cmapi.CertificateSpec{ + SecretName: "testcert-tls", + IssuerRef: issuerRef, + CommonName: "test-common-name", + }, + } + By("Creating a Certificate") + err := f.CRClient.Create(ctx, testCertificate) + Expect(err).NotTo(HaveOccurred()) + + By("Waiting for the Certificate to be issued...") + err = f.Helper().WaitCertificateIssuedValid(f.Namespace.Name, "testcert", time.Minute*5) + Expect(err).NotTo(HaveOccurred()) + }) + + It("should issue an ECDSA, defaulted certificate for a single Common Name", func() { + s.checkFeatures(ECDSAFeature) + s.checkFeatures(CommonNameFeature) + + testCertificate := &cmapi.Certificate{ + ObjectMeta: metav1.ObjectMeta{ + Name: "testcert", + Namespace: f.Namespace.Name, + }, + Spec: cmapi.CertificateSpec{ + SecretName: "testcert-tls", + KeyAlgorithm: cmapi.ECDSAKeyAlgorithm, + CommonName: "test-common-name", + IssuerRef: issuerRef, + }, + } + By("Creating a Certificate") + err := f.CRClient.Create(ctx, testCertificate) + Expect(err).NotTo(HaveOccurred()) + + By("Waiting for the Certificate to be issued...") + err = f.Helper().WaitCertificateIssuedValid(f.Namespace.Name, "testcert", time.Minute*5) + Expect(err).NotTo(HaveOccurred()) + }) + + It("should issue a certificate that defines a Common Name and IP Address", func() { + s.checkFeatures(CommonNameFeature) s.checkFeatures(IPAddressFeature) testCertificate := &cmapi.Certificate{ @@ -181,7 +228,7 @@ func (s *Suite) Define() { }, Spec: cmapi.CertificateSpec{ SecretName: "testcert-tls", - CommonName: s.newDomain(), + CommonName: "test-common-name", IPAddresses: []string{"127.0.0.1"}, IssuerRef: issuerRef, }, @@ -195,8 +242,33 @@ func (s *Suite) Define() { Expect(err).NotTo(HaveOccurred()) }) - It("should issue a certificate that defines a commonName and sets a duration", func() { - s.checkFeatures(DurationFeature) + It("should issue a certificate that defines a URI Name and URI SAN", func() { + s.checkFeatures(URISANsFeature) + s.checkFeatures(CommonNameFeature) + + testCertificate := &cmapi.Certificate{ + ObjectMeta: metav1.ObjectMeta{ + Name: "testcert", + Namespace: f.Namespace.Name, + }, + Spec: cmapi.CertificateSpec{ + SecretName: "testcert-tls", + CommonName: "test-common-name", + URISANs: []string{"spiffe://cluster.local/ns/sandbox/sa/foo"}, + IssuerRef: issuerRef, + }, + } + By("Creating a Certificate") + err := f.CRClient.Create(ctx, testCertificate) + Expect(err).NotTo(HaveOccurred()) + + By("Waiting for the Certificate to be issued...") + err = f.Helper().WaitCertificateIssuedValid(f.Namespace.Name, "testcert", time.Minute*5) + Expect(err).NotTo(HaveOccurred()) + }) + + It("should issue a certificate that defines a 2 distinct DNS Name with one copied to the Common Name", func() { + s.checkFeatures(CommonNameFeature) testCertificate := &cmapi.Certificate{ ObjectMeta: metav1.ObjectMeta{ @@ -207,6 +279,33 @@ func (s *Suite) Define() { SecretName: "testcert-tls", CommonName: s.newDomain(), IssuerRef: issuerRef, + }, + } + testCertificate.Spec.DNSNames = []string{ + testCertificate.Spec.CommonName, s.newDomain(), + } + + By("Creating a Certificate") + err := f.CRClient.Create(ctx, testCertificate) + Expect(err).NotTo(HaveOccurred()) + + By("Waiting for the Certificate to be issued...") + err = f.Helper().WaitCertificateIssuedValid(f.Namespace.Name, "testcert", time.Minute*5) + Expect(err).NotTo(HaveOccurred()) + }) + + It("should issue a certificate that defines a DNS Name and sets a duration", func() { + s.checkFeatures(DurationFeature) + + testCertificate := &cmapi.Certificate{ + ObjectMeta: metav1.ObjectMeta{ + Name: "testcert", + Namespace: f.Namespace.Name, + }, + Spec: cmapi.CertificateSpec{ + SecretName: "testcert-tls", + IssuerRef: issuerRef, + DNSNames: []string{s.newDomain()}, Duration: &metav1.Duration{ Duration: time.Hour * 896, }, @@ -238,7 +337,6 @@ func (s *Suite) Define() { }, Spec: cmapi.CertificateSpec{ SecretName: "testcert-tls", - CommonName: s.newDomain(), IssuerRef: issuerRef, DNSNames: []string{"foo." + s.newDomain()}, }, @@ -287,7 +385,6 @@ func (s *Suite) Define() { }, Spec: cmapi.CertificateSpec{ SecretName: "testcert-tls", - CommonName: s.newDomain(), DNSNames: []string{s.newDomain()}, IssuerRef: issuerRef, }, From 80236351f605e26599a937ace34191b21f60c789 Mon Sep 17 00:00:00 2001 From: JoshVanL Date: Wed, 2 Oct 2019 12:04:39 +0100 Subject: [PATCH 19/23] Set the venafi ObjectName with the CN->DNS->URI as precedence Signed-off-by: JoshVanL --- pkg/internal/venafi/sign.go | 18 ++++++++++++++++++ pkg/internal/venafi/sign_test.go | 7 +++++++ 2 files changed, 25 insertions(+) diff --git a/pkg/internal/venafi/sign.go b/pkg/internal/venafi/sign.go index c0753b58d..66234869d 100644 --- a/pkg/internal/venafi/sign.go +++ b/pkg/internal/venafi/sign.go @@ -18,6 +18,7 @@ package venafi import ( "crypto/x509" + "errors" "strings" "time" @@ -63,6 +64,23 @@ func (v *Venafi) Sign(csrPEM []byte, duration time.Duration) (cert []byte, err e //// TODO: better set the timeout here. Right now, we'll block for this amount of time. vreq.Timeout = time.Minute * 5 + // Set the 'ObjectName' through the request friendly name. This is set in + // order of precedence CN->DNS->URI. + switch { + case len(tmpl.Subject.CommonName) > 0: + vreq.FriendlyName = tmpl.Subject.CommonName + break + case len(tmpl.DNSNames) > 0: + vreq.FriendlyName = tmpl.DNSNames[0] + break + case len(tmpl.URIs) > 0: + vreq.FriendlyName = tmpl.URIs[0].String() + break + default: + return nil, errors.New( + "certificate request contains no Common Name, DNS Name, nor URI SAN, therefore no ObjectName can be supplied") + } + // Set the request CSR with the passed value if err := vreq.SetCSR(csrPEM); err != nil { return nil, err diff --git a/pkg/internal/venafi/sign_test.go b/pkg/internal/venafi/sign_test.go index 84ab44b63..63f35763d 100644 --- a/pkg/internal/venafi/sign_test.go +++ b/pkg/internal/venafi/sign_test.go @@ -111,6 +111,8 @@ func TestSign(t *testing.T) { csrPEM := generateCSR(t, sk, "common-name", []string{ "foo.example.com", "bar.example.com"}) + csrNonePEM := generateCSR(t, sk, "", []string{}) + tests := map[string]testSignT{ "if reading the zone configuration fails then error": { csrPEM: csrPEM, @@ -161,6 +163,11 @@ func TestSign(t *testing.T) { checkFn: checkNoCetificateIssued, expectedErr: true, }, + "if no Common Name, DNS Name, or URI SANs in CSR then error": { + csrPEM: csrNonePEM, + checkFn: checkNoCetificateIssued, + expectedErr: true, + }, "obtain a certificate with DNS names specified": { csrPEM: csrPEM, checkFn: checkCertificateIssued, From 9ba973abc8b107c5f0615cb29af8aa40bebca87d Mon Sep 17 00:00:00 2001 From: JoshVanL Date: Wed, 2 Oct 2019 13:24:40 +0100 Subject: [PATCH 20/23] Rephrase venafi error with no ObjectName Signed-off-by: JoshVanL --- pkg/internal/venafi/sign.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/internal/venafi/sign.go b/pkg/internal/venafi/sign.go index 66234869d..e67150bac 100644 --- a/pkg/internal/venafi/sign.go +++ b/pkg/internal/venafi/sign.go @@ -78,7 +78,7 @@ func (v *Venafi) Sign(csrPEM []byte, duration time.Duration) (cert []byte, err e break default: return nil, errors.New( - "certificate request contains no Common Name, DNS Name, nor URI SAN, therefore no ObjectName can be supplied") + "certificate request contains no Common Name, DNS Name, nor URI SAN, at least one must be supplied to be used as the Venafi certificate objects name") } // Set the request CSR with the passed value From 7965be9b41bec46507e017d8a4f5b0f68dd5b012 Mon Sep 17 00:00:00 2001 From: JoshVanL Date: Wed, 2 Oct 2019 15:38:57 +0100 Subject: [PATCH 21/23] Adds from comments Signed-off-by: JoshVanL --- deploy/manifests/00-crds.yaml | 4 +- .../certmanager/v1alpha2/types_certificate.go | 7 ++-- .../certificaterequests/acme/acme.go | 7 ++-- .../certificaterequests/acme/acme_test.go | 14 +++---- pkg/util/pki/csr.go | 38 +++++++++++++++---- .../suite/conformance/certificates/suite.go | 25 ++++++++++++ .../conformance/certificates/venafi/venafi.go | 4 -- 7 files changed, 71 insertions(+), 28 deletions(-) diff --git a/deploy/manifests/00-crds.yaml b/deploy/manifests/00-crds.yaml index e2f5b4210..237dd9d5a 100644 --- a/deploy/manifests/00-crds.yaml +++ b/deploy/manifests/00-crds.yaml @@ -1825,7 +1825,9 @@ spec: metadata: type: object spec: - description: CertificateSpec defines the desired state of Certificate + description: CertificateSpec defines the desired state of Certificate. A + valid Certificate requires at least one of a CommonName, DNSName, or URISAN + to be valid. properties: commonName: description: CommonName is a common name to be used on the Certificate. diff --git a/pkg/apis/certmanager/v1alpha2/types_certificate.go b/pkg/apis/certmanager/v1alpha2/types_certificate.go index 058203db9..b453dd504 100644 --- a/pkg/apis/certmanager/v1alpha2/types_certificate.go +++ b/pkg/apis/certmanager/v1alpha2/types_certificate.go @@ -68,11 +68,10 @@ const ( PKCS8 KeyEncoding = "pkcs8" ) -// CertificateSpec defines the desired state of Certificate +// CertificateSpec defines the desired state of Certificate. +// A valid Certificate requires at least one of a CommonName, DNSName, or +// URISAN to be valid. type CertificateSpec struct { - // A valid Certificate requires at least one of a CommonName, DNSName, or - // URISAN to be valid. - // CommonName is a common name to be used on the Certificate. // The CommonName should have a length of 64 characters or fewer to avoid // generating invalid CSRs. diff --git a/pkg/controller/certificaterequests/acme/acme.go b/pkg/controller/certificaterequests/acme/acme.go index c1b36df61..ef2f23caf 100644 --- a/pkg/controller/certificaterequests/acme/acme.go +++ b/pkg/controller/certificaterequests/acme/acme.go @@ -96,12 +96,11 @@ func (a *ACME) Sign(ctx context.Context, cr *v1alpha2.CertificateRequest, issuer // If the CommonName is also not present in the DNS names of the CSR then hard fail. if len(csr.Subject.CommonName) > 0 && !util.Contains(csr.DNSNames, csr.Subject.CommonName) { err = fmt.Errorf("%q does not exist in %s", csr.Subject.CommonName, csr.DNSNames) - message := fmt.Sprintf("Requested certificate contains CommonName not present in the requested DNS Subject Alternative Names: %s", - err) + message := "The CSR PEM requests a commonName that is not present in the list of dnsNames. If a commonName is set, ACME requires that the value is also present in the list of dnsNames" - a.reporter.Failed(cr, err, "OrderBuildingError", message) + a.reporter.Failed(cr, err, "InvalidOrder", message) - log.Error(err, message) + log.V(4).Info(fmt.Sprintf("%s: %s", message, err)) return nil, nil } diff --git a/pkg/controller/certificaterequests/acme/acme_test.go b/pkg/controller/certificaterequests/acme/acme_test.go index 6a88855ce..6eb633582 100644 --- a/pkg/controller/certificaterequests/acme/acme_test.go +++ b/pkg/controller/certificaterequests/acme/acme_test.go @@ -50,15 +50,15 @@ var ( fixedClock = fakeclock.NewFakeClock(fixedClockStart) ) -func generateCSR(t *testing.T, secretKey crypto.Signer, extraDNSNames ...string) []byte { +func generateCSR(t *testing.T, secretKey crypto.Signer, commonName string, dnsNames ...string) []byte { // The CommonName of the certificate request must also be present in the DNS // Names. template := x509.CertificateRequest{ Subject: pkix.Name{ - CommonName: "example.com", + CommonName: commonName, }, SignatureAlgorithm: x509.SHA256WithRSA, - DNSNames: append(extraDNSNames, "foo.com"), + DNSNames: dnsNames, } csrBytes, err := x509.CreateCertificateRequest(rand.Reader, &template, secretKey) @@ -83,8 +83,8 @@ func TestSign(t *testing.T) { t.FailNow() } - csrPEM := generateCSR(t, sk, "example.com") - csrPEMExampleNotPresent := generateCSR(t, sk) + csrPEM := generateCSR(t, sk, "example.com", "example.com", "foo.com") + csrPEMExampleNotPresent := generateCSR(t, sk, "example.com", "foo.com") baseCR := gen.CertificateRequest("test-cr", gen.SetCertificateRequestCSR(csrPEM), @@ -160,7 +160,7 @@ func TestSign(t *testing.T) { builder: &testpkg.Builder{ CertManagerObjects: []runtime.Object{baseCR.DeepCopy(), baseIssuer.DeepCopy()}, ExpectedEvents: []string{ - `Warning OrderBuildingError Requested certificate contains CommonName not present in the requested DNS Subject Alternative Names: "example.com" does not exist in [foo.com]: "example.com" does not exist in [foo.com]`, + `Warning InvalidOrder The CSR PEM requests a commonName that is not present in the list of dnsNames. If a commonName is set, ACME requires that the value is also present in the list of dnsNames: "example.com" does not exist in [foo.com]`, }, ExpectedActions: []testpkg.Action{ testpkg.NewAction(coretesting.NewUpdateAction( @@ -172,7 +172,7 @@ func TestSign(t *testing.T) { Type: cmapi.CertificateRequestConditionReady, Status: cmmeta.ConditionFalse, Reason: cmapi.CertificateRequestReasonFailed, - Message: `Requested certificate contains CommonName not present in the requested DNS Subject Alternative Names: "example.com" does not exist in [foo.com]: "example.com" does not exist in [foo.com]`, + Message: `The CSR PEM requests a commonName that is not present in the list of dnsNames. If a commonName is set, ACME requires that the value is also present in the list of dnsNames: "example.com" does not exist in [foo.com]`, LastTransitionTime: &metaFixedClockStart, }), gen.SetCertificateRequestFailureTime(metaFixedClockStart), diff --git a/pkg/util/pki/csr.go b/pkg/util/pki/csr.go index b8db325f1..4331eb64e 100644 --- a/pkg/util/pki/csr.go +++ b/pkg/util/pki/csr.go @@ -48,25 +48,42 @@ func IPAddressesForCertificate(crt *v1alpha2.Certificate) []net.IP { } func URIsForCertificate(crt *v1alpha2.Certificate) ([]*url.URL, error) { - var uris []*url.URL + uris, err := URLsFromStrings(crt.Spec.URISANs) + if err != nil { + return nil, fmt.Errorf("failed to parse URIs: %s", err) + } + + return uris, nil +} + +func DNSNamesForCertificate(crt *v1alpha2.Certificate) ([]string, error) { + _, err := URLsFromStrings(crt.Spec.DNSNames) + if err != nil { + return nil, fmt.Errorf("failed to parse DNSNames: %s", err) + } + + return crt.Spec.DNSNames, nil +} + +func URLsFromStrings(urlStrs []string) ([]*url.URL, error) { + var urls []*url.URL var errs []string - for _, uriStr := range crt.Spec.URISANs { - uri, err := url.Parse(uriStr) + for _, urlStr := range urlStrs { + url, err := url.Parse(urlStr) if err != nil { errs = append(errs, err.Error()) continue } - uris = append(uris, uri) + urls = append(urls, url) } if len(errs) > 0 { - return nil, fmt.Errorf("failed to parse URIs: %s", - strings.Join(errs, ", ")) + return nil, errors.New(strings.Join(errs, ", ")) } - return uris, nil + return urls, nil } func IPAddressesToString(ipAddresses []net.IP) []string { @@ -148,9 +165,14 @@ func buildUsages(usages []v1alpha2.KeyUsage, isCA bool) (ku x509.KeyUsage, eku [ // to the x509.CreateCertificateRequest function. func GenerateCSR(crt *v1alpha2.Certificate) (*x509.CertificateRequest, error) { commonName := crt.Spec.CommonName - dnsNames := crt.Spec.DNSNames iPAddresses := IPAddressesForCertificate(crt) organization := OrganizationForCertificate(crt) + + dnsNames, err := DNSNamesForCertificate(crt) + if err != nil { + return nil, err + } + uriNames, err := URIsForCertificate(crt) if err != nil { return nil, err diff --git a/test/e2e/suite/conformance/certificates/suite.go b/test/e2e/suite/conformance/certificates/suite.go index 6439eabe0..5d2151655 100644 --- a/test/e2e/suite/conformance/certificates/suite.go +++ b/test/e2e/suite/conformance/certificates/suite.go @@ -294,6 +294,31 @@ func (s *Suite) Define() { Expect(err).NotTo(HaveOccurred()) }) + It("should issue a certificate that defines a distinct DNS Name and another distinct Common Name", func() { + s.checkFeatures(CommonNameFeature) + + testCertificate := &cmapi.Certificate{ + ObjectMeta: metav1.ObjectMeta{ + Name: "testcert", + Namespace: f.Namespace.Name, + }, + Spec: cmapi.CertificateSpec{ + SecretName: "testcert-tls", + CommonName: s.newDomain(), + IssuerRef: issuerRef, + DNSNames: []string{s.newDomain()}, + }, + } + + By("Creating a Certificate") + err := f.CRClient.Create(ctx, testCertificate) + Expect(err).NotTo(HaveOccurred()) + + By("Waiting for the Certificate to be issued...") + err = f.Helper().WaitCertificateIssuedValid(f.Namespace.Name, "testcert", time.Minute*5) + Expect(err).NotTo(HaveOccurred()) + }) + It("should issue a certificate that defines a DNS Name and sets a duration", func() { s.checkFeatures(DurationFeature) diff --git a/test/e2e/suite/conformance/certificates/venafi/venafi.go b/test/e2e/suite/conformance/certificates/venafi/venafi.go index 2424e2e85..380b9f340 100644 --- a/test/e2e/suite/conformance/certificates/venafi/venafi.go +++ b/test/e2e/suite/conformance/certificates/venafi/venafi.go @@ -38,10 +38,6 @@ var _ = framework.ConformanceDescribe("Certificates", func() { // key or using the same private key multiple times. certificates.ECDSAFeature, certificates.ReusePrivateKeyFeature, - - // Venafi does not support signing a certificate with only URISANs and an - // empty common name. - certificates.URISANsFeature, ) provisioner := new(venafiProvisioner) From dc7cc388e18a3205fc7f4000397a90cbb3113cb2 Mon Sep 17 00:00:00 2001 From: JoshVanL Date: Wed, 2 Oct 2019 17:51:37 +0100 Subject: [PATCH 22/23] Converts acme test to UpdateStatus Signed-off-by: JoshVanL --- pkg/controller/certificaterequests/acme/acme_test.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pkg/controller/certificaterequests/acme/acme_test.go b/pkg/controller/certificaterequests/acme/acme_test.go index 6eb633582..d265394f0 100644 --- a/pkg/controller/certificaterequests/acme/acme_test.go +++ b/pkg/controller/certificaterequests/acme/acme_test.go @@ -163,8 +163,9 @@ func TestSign(t *testing.T) { `Warning InvalidOrder The CSR PEM requests a commonName that is not present in the list of dnsNames. If a commonName is set, ACME requires that the value is also present in the list of dnsNames: "example.com" does not exist in [foo.com]`, }, ExpectedActions: []testpkg.Action{ - testpkg.NewAction(coretesting.NewUpdateAction( + testpkg.NewAction(coretesting.NewUpdateSubresourceAction( cmapi.SchemeGroupVersion.WithResource("certificaterequests"), + "status", gen.DefaultTestNamespace, gen.CertificateRequestFrom(baseCR, gen.SetCertificateRequestCSR(csrPEMExampleNotPresent), From 7d615ff8e4f89e67e447675427404067a8d23860 Mon Sep 17 00:00:00 2001 From: JoshVanL Date: Thu, 3 Oct 2019 09:47:41 +0100 Subject: [PATCH 23/23] Remove getting secret from lister in matches spec func Signed-off-by: JoshVanL --- pkg/controller/certificates/BUILD.bazel | 1 - pkg/controller/certificates/sync.go | 15 +++++++---- pkg/controller/certificates/util.go | 8 ++---- pkg/controller/certificates/util_test.go | 34 +++++++----------------- 4 files changed, 21 insertions(+), 37 deletions(-) diff --git a/pkg/controller/certificates/BUILD.bazel b/pkg/controller/certificates/BUILD.bazel index fc506b3f4..1b23b9c81 100644 --- a/pkg/controller/certificates/BUILD.bazel +++ b/pkg/controller/certificates/BUILD.bazel @@ -55,7 +55,6 @@ go_test( "//pkg/util:go_default_library", "//pkg/util/pki:go_default_library", "//test/unit/gen:go_default_library", - "//test/unit/listers:go_default_library", "@io_k8s_api//core/v1:go_default_library", "@io_k8s_apimachinery//pkg/apis/meta/v1:go_default_library", "@io_k8s_apimachinery//pkg/runtime:go_default_library", diff --git a/pkg/controller/certificates/sync.go b/pkg/controller/certificates/sync.go index 8f5a41545..eed08beda 100644 --- a/pkg/controller/certificates/sync.go +++ b/pkg/controller/certificates/sync.go @@ -102,7 +102,12 @@ func (c *certificateRequestManager) updateCertificateStatus(ctx context.Context, var matches bool var matchErrs []string if key != nil && cert != nil { - matches, matchErrs = certificateMatchesSpec(crt, key, cert, c.secretLister) + secret, err := c.secretLister.Secrets(crt.Namespace).Get(crt.Spec.SecretName) + if err != nil { + return err + } + + matches, matchErrs = certificateMatchesSpec(crt, key, cert, secret) } isTempCert := isTemporaryCertificate(cert) @@ -255,7 +260,7 @@ func (c *certificateRequestManager) processCertificate(ctx context.Context, crt // a valid partner to the stored certificate. var matchErrs []string dbg.Info("checking if existing certificate stored in Secret resource is not expiring soon and matches certificate spec") - needsIssue, matchErrs, err = c.certificateRequiresIssuance(ctx, crt, existingKey, existingCert) + needsIssue, matchErrs, err = c.certificateRequiresIssuance(ctx, crt, existingKey, existingCert, existingSecret) if err != nil && !errors.IsInvalidData(err) { return err } @@ -330,7 +335,7 @@ func (c *certificateRequestManager) processCertificate(ctx context.Context, crt } // We don't issue a temporary certificate if the existing stored // certificate already 'matches', even if it isn't a temporary certificate. - matches, _ := certificateMatchesSpec(crt, privateKey, existingX509Cert, c.secretLister) + matches, _ := certificateMatchesSpec(crt, privateKey, existingX509Cert, existingSecret) if !matches { log.Info("existing certificate fields do not match certificate spec, issuing temporary certificate") return c.issueTemporaryCertificate(ctx, existingSecret, crt, existingKey) @@ -556,7 +561,7 @@ func (c *certificateRequestManager) issueTemporaryCertificate(ctx context.Contex return nil } -func (c *certificateRequestManager) certificateRequiresIssuance(ctx context.Context, crt *cmapi.Certificate, keyBytes, certBytes []byte) (bool, []string, error) { +func (c *certificateRequestManager) certificateRequiresIssuance(ctx context.Context, crt *cmapi.Certificate, keyBytes, certBytes []byte, secret *corev1.Secret) (bool, []string, error) { key, err := pki.DecodePrivateKeyBytes(keyBytes) if err != nil { return false, nil, err @@ -568,7 +573,7 @@ func (c *certificateRequestManager) certificateRequiresIssuance(ctx context.Cont if isTemporaryCertificate(cert) { return true, nil, nil } - matches, matchErrs := certificateMatchesSpec(crt, key, cert, c.secretLister) + matches, matchErrs := certificateMatchesSpec(crt, key, cert, secret) if !matches { return true, matchErrs, nil } diff --git a/pkg/controller/certificates/util.go b/pkg/controller/certificates/util.go index 1c97fab8a..e5ada1489 100644 --- a/pkg/controller/certificates/util.go +++ b/pkg/controller/certificates/util.go @@ -27,6 +27,7 @@ import ( "time" "github.com/kr/pretty" + corev1 "k8s.io/api/core/v1" k8sErrors "k8s.io/apimachinery/pkg/api/errors" corelisters "k8s.io/client-go/listers/core/v1" "k8s.io/client-go/tools/cache" @@ -75,7 +76,7 @@ func certificateGetter(lister cmlisters.CertificateLister) func(namespace, name var keyFunc = controllerpkg.KeyFunc -func certificateMatchesSpec(crt *v1alpha2.Certificate, key crypto.Signer, cert *x509.Certificate, secretLister corelisters.SecretLister) (bool, []string) { +func certificateMatchesSpec(crt *v1alpha2.Certificate, key crypto.Signer, cert *x509.Certificate, secret *corev1.Secret) (bool, []string) { var errs []string // TODO: add checks for KeySize, KeyAlgorithm fields @@ -116,11 +117,6 @@ func certificateMatchesSpec(crt *v1alpha2.Certificate, key crypto.Signer, cert * errs = append(errs, fmt.Sprintf("IP addresses on TLS certificate not up to date: %q", pki.IPAddressesToString(cert.IPAddresses))) } - // get a copy of the current secret resource - // Note that we already know that it exists, no need to check for errors - // TODO: Refactor so that the secret is passed as argument? - secret, err := secretLister.Secrets(crt.Namespace).Get(crt.Spec.SecretName) - if secret.Annotations == nil { secret.Annotations = make(map[string]string) } diff --git a/pkg/controller/certificates/util_test.go b/pkg/controller/certificates/util_test.go index 12afc2c46..ac18e5b95 100644 --- a/pkg/controller/certificates/util_test.go +++ b/pkg/controller/certificates/util_test.go @@ -27,7 +27,6 @@ import ( cmmeta "github.com/jetstack/cert-manager/pkg/apis/meta/v1" "github.com/jetstack/cert-manager/pkg/util" "github.com/jetstack/cert-manager/test/unit/gen" - "github.com/jetstack/cert-manager/test/unit/listers" ) func TestCertificateMatchesSpec(t *testing.T) { @@ -55,7 +54,7 @@ func TestCertificateMatchesSpec(t *testing.T) { type testT struct { cb cryptoBundle certificate *cmapi.Certificate - fakeLister *listers.FakeSecretLister + secret *corev1.Secret expMatch bool expErrors []string } @@ -64,11 +63,8 @@ func TestCertificateMatchesSpec(t *testing.T) { "if all match then return matched": { cb: exampleBundle, certificate: exampleBundle.certificate, - fakeLister: listers.FakeSecretListerFrom(listers.NewFakeSecretLister(), - listers.SetFakeSecretNamespaceListerGet(secret, nil), - ), - expMatch: true, - expErrors: nil, + expMatch: true, + expErrors: nil, }, "if no common name but DNS and all match then return matched": { @@ -78,9 +74,6 @@ func TestCertificateMatchesSpec(t *testing.T) { certificate: gen.CertificateFrom(exampleBundle.certificate, gen.SetCertificateCommonName(""), ), - fakeLister: listers.FakeSecretListerFrom(listers.NewFakeSecretLister(), - listers.SetFakeSecretNamespaceListerGet(secret, nil), - ), expMatch: true, expErrors: nil, }, @@ -91,11 +84,8 @@ func TestCertificateMatchesSpec(t *testing.T) { gen.SetCertificateCommonName(""), )), certificate: gen.CertificateFrom(exampleBundle.certificate), - fakeLister: listers.FakeSecretListerFrom(listers.NewFakeSecretLister(), - listers.SetFakeSecretNamespaceListerGet(secret, nil), - ), - expMatch: true, - expErrors: nil, + expMatch: true, + expErrors: nil, }, "if common name random string but requested common name in DNS names then match": { @@ -104,11 +94,8 @@ func TestCertificateMatchesSpec(t *testing.T) { gen.SetCertificateCommonName("foobar"), )), certificate: gen.CertificateFrom(exampleBundle.certificate), - fakeLister: listers.FakeSecretListerFrom(listers.NewFakeSecretLister(), - listers.SetFakeSecretNamespaceListerGet(secret, nil), - ), - expMatch: true, - expErrors: nil, + expMatch: true, + expErrors: nil, }, "if common name random string and no request DNS names but request common name then error missing common name": { @@ -117,10 +104,7 @@ func TestCertificateMatchesSpec(t *testing.T) { gen.SetCertificateCommonName("foobar"), )), certificate: gen.CertificateFrom(exampleBundle.certificate), - fakeLister: listers.FakeSecretListerFrom(listers.NewFakeSecretLister(), - listers.SetFakeSecretNamespaceListerGet(secret, nil), - ), - expMatch: false, + expMatch: false, expErrors: []string{ `Common Name on TLS certificate not up to date ("common.name.example.com"): [foobar]`, "DNS names on TLS certificate not up to date: []", @@ -129,7 +113,7 @@ func TestCertificateMatchesSpec(t *testing.T) { } { t.Run(name, func(t *testing.T) { match, errs := certificateMatchesSpec( - test.certificate, test.cb.privateKey, test.cb.cert, test.fakeLister) + test.certificate, test.cb.privateKey, test.cb.cert, secret) if match != test.expMatch { t.Errorf("got unexpected match bool, exp=%t got=%t",