<PackageReference Include="BouncyCastle.Cryptography" Version="2.6.0" />

SubjectAltPublicKeyInfo

using System; namespace Org.BouncyCastle.Asn1.X509 { public class SubjectAltPublicKeyInfo : Asn1Encodable { private readonly AlgorithmIdentifier m_algorithm; private readonly DerBitString m_subjectAltPublicKey; public AlgorithmIdentifier Algorithm => m_algorithm; public DerBitString SubjectAltPublicKey => m_subjectAltPublicKey; public static SubjectAltPublicKeyInfo GetInstance(object obj) { if (obj == null) return null; SubjectAltPublicKeyInfo subjectAltPublicKeyInfo = obj as SubjectAltPublicKeyInfo; if (subjectAltPublicKeyInfo != null) return subjectAltPublicKeyInfo; return new SubjectAltPublicKeyInfo(Asn1Sequence.GetInstance(obj)); } public static SubjectAltPublicKeyInfo GetInstance(Asn1TaggedObject taggedObject, bool declaredExplicit) { return new SubjectAltPublicKeyInfo(Asn1Sequence.GetInstance(taggedObject, declaredExplicit)); } public static SubjectAltPublicKeyInfo GetTagged(Asn1TaggedObject taggedObject, bool declaredExplicit) { return new SubjectAltPublicKeyInfo(Asn1Sequence.GetTagged(taggedObject, declaredExplicit)); } public static SubjectAltPublicKeyInfo FromExtensions(X509Extensions extensions) { return GetInstance(X509Extensions.GetExtensionParsedValue(extensions, X509Extensions.SubjectAltPublicKeyInfo)); } private SubjectAltPublicKeyInfo(Asn1Sequence seq) { int count = seq.Count; if (count != 2) throw new ArgumentException("Bad sequence size: " + count.ToString(), "seq"); m_algorithm = AlgorithmIdentifier.GetInstance(seq[0]); m_subjectAltPublicKey = DerBitString.GetInstance(seq[1]); } public SubjectAltPublicKeyInfo(AlgorithmIdentifier algorithm, DerBitString subjectAltPublicKey) { if (algorithm == null) throw new ArgumentNullException("algorithm"); m_algorithm = algorithm; if (subjectAltPublicKey == null) throw new ArgumentNullException("subjectAltPublicKey"); m_subjectAltPublicKey = subjectAltPublicKey; } public SubjectAltPublicKeyInfo(SubjectPublicKeyInfo subjectPublicKeyInfo) { if (subjectPublicKeyInfo == null) throw new ArgumentNullException("subjectPublicKeyInfo"); m_algorithm = subjectPublicKeyInfo.Algorithm; m_subjectAltPublicKey = subjectPublicKeyInfo.PublicKey; } public override Asn1Object ToAsn1Object() { return new DerSequence(m_algorithm, m_subjectAltPublicKey); } } }