MQVuserKeyingMaterial
namespace Org.BouncyCastle.Asn1.Cms.Ecc
{
    public class MQVuserKeyingMaterial : Asn1Encodable
    {
        private OriginatorPublicKey ephemeralPublicKey;
        private Asn1OctetString addedukm;
        public OriginatorPublicKey EphemeralPublicKey => ephemeralPublicKey;
        public Asn1OctetString AddedUkm => addedukm;
        public static MQVuserKeyingMaterial GetInstance(object obj)
        {
            if (obj == null)
                return null;
            MQVuserKeyingMaterial mQVuserKeyingMaterial = obj as MQVuserKeyingMaterial;
            if (mQVuserKeyingMaterial != null)
                return mQVuserKeyingMaterial;
            return new MQVuserKeyingMaterial(Asn1Sequence.GetInstance(obj));
        }
        public static MQVuserKeyingMaterial GetInstance(Asn1TaggedObject obj, bool isExplicit)
        {
            return new MQVuserKeyingMaterial(Asn1Sequence.GetInstance(obj, isExplicit));
        }
        public MQVuserKeyingMaterial(OriginatorPublicKey ephemeralPublicKey, Asn1OctetString addedukm)
        {
            this.ephemeralPublicKey = ephemeralPublicKey;
            this.addedukm = addedukm;
        }
        private MQVuserKeyingMaterial(Asn1Sequence seq)
        {
            ephemeralPublicKey = OriginatorPublicKey.GetInstance(seq[0]);
            if (seq.Count > 1)
                addedukm = Asn1OctetString.GetInstance((Asn1TaggedObject)seq[1], true);
        }
        public override Asn1Object ToAsn1Object()
        {
            Asn1EncodableVector asn1EncodableVector = new Asn1EncodableVector(ephemeralPublicKey);
            asn1EncodableVector.AddOptionalTagged(true, 0, addedukm);
            return new DerSequence(asn1EncodableVector);
        }
    }
}