<PackageReference Include="BouncyCastle.Cryptography" Version="2.3.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 => 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 GetInstance(Asn1Sequence.GetInstance(taggedObject, declaredExplicit)); } public static SubjectAltPublicKeyInfo FromExtensions(X509Extensions extensions) { return GetInstance(X509Extensions.GetExtensionParsedValue(extensions, X509Extensions.SubjectAltPublicKeyInfo)); } private SubjectAltPublicKeyInfo(Asn1Sequence seq) { if (seq.Count != 2) throw new ArgumentException("extension should contain only 2 elements"); m_algorithm = AlgorithmIdentifier.GetInstance(seq[0]); m_subjectAltPublicKey = DerBitString.GetInstance(seq[1]); } public SubjectAltPublicKeyInfo(AlgorithmIdentifier algorithm, DerBitString subjectAltPublicKey) { m_algorithm = algorithm; m_subjectAltPublicKey = subjectAltPublicKey; } public SubjectAltPublicKeyInfo(SubjectPublicKeyInfo subjectPublicKeyInfo) { m_algorithm = subjectPublicKeyInfo.Algorithm; m_subjectAltPublicKey = subjectPublicKeyInfo.PublicKey; } public override Asn1Object ToAsn1Object() { return new DerSequence(m_algorithm, m_subjectAltPublicKey); } } }