From da57816ac47b92b0000ae8efb23bd4db2f305471 Mon Sep 17 00:00:00 2001 From: Peter Dettman Date: Tue, 7 Feb 2023 15:20:51 +0700 Subject: Improve CmpCertificate.GetInstance --- crypto/src/asn1/cmp/CmpCertificate.cs | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/crypto/src/asn1/cmp/CmpCertificate.cs b/crypto/src/asn1/cmp/CmpCertificate.cs index bc9844911..e30eccca4 100644 --- a/crypto/src/asn1/cmp/CmpCertificate.cs +++ b/crypto/src/asn1/cmp/CmpCertificate.cs @@ -13,9 +13,25 @@ namespace Org.BouncyCastle.Asn1.Cmp return null; if (obj is CmpCertificate cmpCertificate) return cmpCertificate; + if (obj is X509CertificateStructure certificate) + return new CmpCertificate(certificate); if (obj is Asn1TaggedObject taggedObject) return new CmpCertificate(taggedObject); - return new CmpCertificate(X509CertificateStructure.GetInstance(obj)); + + Asn1Object asn1Object = null; + if (obj is IAsn1Convertible asn1Convertible) + { + asn1Object = asn1Convertible.ToAsn1Object(); + } + else if (obj is byte[] bytes) + { + asn1Object = Asn1Object.FromByteArray(bytes); + } + + if (asn1Object is Asn1TaggedObject asn1TaggedObject) + return new CmpCertificate(asn1TaggedObject); + + return new CmpCertificate(X509CertificateStructure.GetInstance(asn1Object ?? obj)); } public static CmpCertificate GetInstance(Asn1TaggedObject taggedObject, bool declaredExplicit) -- cgit 1.4.1