Ejemplo n.º 1
0
        public KeyTransRecipientInformation(
            KeyTransRecipientInfo info,
            AlgorithmIdentifier encAlg,
            AlgorithmIdentifier macAlg,
            AlgorithmIdentifier authEncAlg,
            Stream data)
            : base(encAlg, macAlg, authEncAlg, info.KeyEncryptionAlgorithm, data)
        {
            this.info = info;
            this.rid  = new RecipientID();

            RecipientIdentifier r = info.RecipientIdentifier;

            try
            {
                if (r.IsTagged)
                {
                    Asn1OctetString octs = Asn1OctetString.GetInstance(r.ID);

                    rid.SubjectKeyIdentifier = octs.GetOctets();
                }
                else
                {
                    IssuerAndSerialNumber iAnds = IssuerAndSerialNumber.GetInstance(r.ID);

                    rid.Issuer       = iAnds.Name;
                    rid.SerialNumber = iAnds.SerialNumber.Value;
                }
            }
            catch (IOException)
            {
                throw new ArgumentException("invalid rid in KeyTransRecipientInformation");
            }
        }
Ejemplo n.º 2
0
        internal KeyTransRecipientInformation(
            KeyTransRecipientInfo info,
            CmsSecureReadable secureReadable)
            : base(info.KeyEncryptionAlgorithm, secureReadable)
        {
            this.info = info;
            this.rid  = new RecipientID();

            RecipientIdentifier r = info.RecipientIdentifier;

            try
            {
                if (r.IsTagged)
                {
                    Asn1OctetString octs = Asn1OctetString.GetInstance(r.ID);

                    rid.SubjectKeyIdentifier = octs.GetOctets();
                }
                else
                {
                    IssuerAndSerialNumber iAnds = IssuerAndSerialNumber.GetInstance(r.ID);

                    rid.Issuer       = iAnds.Name;
                    rid.SerialNumber = iAnds.SerialNumber.Value;
                }
            }
            catch (IOException)
            {
                throw new ArgumentException("invalid rid in KeyTransRecipientInformation");
            }
        }
        internal KeyTransRecipientInformation(
            KeyTransRecipientInfo info,
            AlgorithmIdentifier messageAlgorithm,
            ICmsSecureReadable secureReadable,
            IAuthAttributesProvider additionalData) : base(info.KeyEncryptionAlgorithm, messageAlgorithm, secureReadable, additionalData)

        {
            this.info = info;

            RecipientIdentifier r = info.RecipientIdentifier;

            if (r.IsTagged)
            {
                Asn1OctetString octs = Asn1OctetString.GetInstance(r.ID);

                rid = new KeyTransRecipientID(octs.GetOctets()) as IRecipientID <RecipientInformation>;
            }
            else
            {
                IssuerAndSerialNumber iAnds = IssuerAndSerialNumber.GetInstance(r.ID);

                rid = new KeyTransRecipientID(iAnds.Name, iAnds.SerialNumber.Value) as IRecipientID <RecipientInformation>;
            }
        }