コード例 #1
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");
            }
        }
コード例 #2
0
 internal static void ReadRecipientInfo(IList infos, KeyAgreeRecipientInfo info, CmsSecureReadable secureReadable)
 {
     try
     {
         foreach (Asn1Encodable recipientEncryptedKey in info.RecipientEncryptedKeys)
         {
             RecipientEncryptedKey       instance    = RecipientEncryptedKey.GetInstance(recipientEncryptedKey.ToAsn1Object());
             RecipientID                 recipientID = new RecipientID();
             KeyAgreeRecipientIdentifier identifier  = instance.Identifier;
             Org.BouncyCastle.Asn1.Cms.IssuerAndSerialNumber issuerAndSerialNumber = identifier.IssuerAndSerialNumber;
             if (issuerAndSerialNumber != null)
             {
                 recipientID.Issuer       = issuerAndSerialNumber.Name;
                 recipientID.SerialNumber = issuerAndSerialNumber.SerialNumber.Value;
             }
             else
             {
                 RecipientKeyIdentifier rKeyID = identifier.RKeyID;
                 recipientID.SubjectKeyIdentifier = rKeyID.SubjectKeyIdentifier.GetOctets();
             }
             infos.Add(new KeyAgreeRecipientInformation(info, recipientID, instance.EncryptedKey, secureReadable));
         }
     }
     catch (IOException innerException)
     {
         throw new ArgumentException("invalid rid in KeyAgreeRecipientInformation", innerException);
     }
 }
コード例 #3
0
 internal RecipientInformation(
     AlgorithmIdentifier keyEncAlg,
     CmsSecureReadable secureReadable)
 {
     this.keyEncAlg      = keyEncAlg;
     this.secureReadable = secureReadable;
 }
コード例 #4
0
		internal RecipientInformation(
			AlgorithmIdentifier	keyEncAlg,
			CmsSecureReadable	secureReadable)
		{
			this.keyEncAlg = keyEncAlg;
			this.secureReadable = secureReadable;
		}
コード例 #5
0
        internal KeyTransRecipientInformation(KeyTransRecipientInfo info, CmsSecureReadable secureReadable) : base(info.KeyEncryptionAlgorithm, secureReadable)
        {
            this.info = info;
            this.rid  = new RecipientID();
            RecipientIdentifier recipientIdentifier = info.RecipientIdentifier;

            try
            {
                if (recipientIdentifier.IsTagged)
                {
                    Asn1OctetString instance = Asn1OctetString.GetInstance(recipientIdentifier.ID);
                    this.rid.SubjectKeyIdentifier = instance.GetOctets();
                }
                else
                {
                    Org.BouncyCastle.Asn1.Cms.IssuerAndSerialNumber instance2 = Org.BouncyCastle.Asn1.Cms.IssuerAndSerialNumber.GetInstance(recipientIdentifier.ID);
                    this.rid.Issuer       = instance2.Name;
                    this.rid.SerialNumber = instance2.SerialNumber.Value;
                }
            }
            catch (IOException)
            {
                throw new ArgumentException("invalid rid in KeyTransRecipientInformation");
            }
        }
コード例 #6
0
		internal PasswordRecipientInformation(
			PasswordRecipientInfo	info,
			CmsSecureReadable		secureReadable)
			: base(info.KeyEncryptionAlgorithm, secureReadable)
		{
			this.info = info;
			this.rid = new RecipientID();
		}
コード例 #7
0
        internal KekRecipientInformation(KekRecipientInfo info, CmsSecureReadable secureReadable) : base(info.KeyEncryptionAlgorithm, secureReadable)
        {
            this.info = info;
            this.rid  = new RecipientID();
            KekIdentifier kekID = info.KekID;

            this.rid.KeyIdentifier = kekID.KeyIdentifier.GetOctets();
        }
コード例 #8
0
 internal PasswordRecipientInformation(
     PasswordRecipientInfo info,
     CmsSecureReadable secureReadable)
     : base(info.KeyEncryptionAlgorithm, secureReadable)
 {
     this.info = info;
     this.rid  = new RecipientID();
 }
コード例 #9
0
 internal KeyAgreeRecipientInformation(
     KeyAgreeRecipientInfo	info,
     RecipientID				rid,
     Asn1OctetString			encryptedKey,
     CmsSecureReadable		secureReadable)
     : base(info.KeyEncryptionAlgorithm, secureReadable)
 {
     this.info = info;
     this.rid = rid;
     this.encryptedKey = encryptedKey;
 }
コード例 #10
0
 internal KeyAgreeRecipientInformation(
     KeyAgreeRecipientInfo info,
     RecipientID rid,
     Asn1OctetString encryptedKey,
     CmsSecureReadable secureReadable)
     : base(info.KeyEncryptionAlgorithm, secureReadable)
 {
     this.info         = info;
     this.rid          = rid;
     this.encryptedKey = encryptedKey;
 }
コード例 #11
0
		internal KekRecipientInformation(
			KekRecipientInfo	info,
			CmsSecureReadable	secureReadable)
			: base(info.KeyEncryptionAlgorithm, secureReadable)
		{
            this.info = info;
            this.rid = new RecipientID();

			KekIdentifier kekId = info.KekID;

			rid.KeyIdentifier = kekId.KeyIdentifier.GetOctets();
        }
コード例 #12
0
        internal static RecipientInformationStore BuildRecipientInformationStore(
            Asn1Set recipientInfos, CmsSecureReadable secureReadable)
        {
            IList infos = Platform.CreateArrayList();
            for (int i = 0; i != recipientInfos.Count; i++)
            {
                RecipientInfo info = RecipientInfo.GetInstance(recipientInfos[i]);

                ReadRecipientInfo(infos, info, secureReadable);
            }
            return new RecipientInformationStore(infos);
        }
コード例 #13
0
        internal static RecipientInformationStore BuildRecipientInformationStore(
            Asn1Set recipientInfos, CmsSecureReadable secureReadable)
        {
            IList infos = Platform.CreateArrayList();

            for (int i = 0; i != recipientInfos.Count; i++)
            {
                RecipientInfo info = RecipientInfo.GetInstance(recipientInfos[i]);

                ReadRecipientInfo(infos, info, secureReadable);
            }
            return(new RecipientInformationStore(infos));
        }
コード例 #14
0
        internal static RecipientInformationStore BuildRecipientInformationStore(
            Asn1Set recipientInfos, CmsSecureReadable secureReadable)
        {
            IList infos = BestHTTP.SecureProtocol.Org.BouncyCastle.Utilities.Platform.CreateArrayList();

            for (int i = 0; i != recipientInfos.Count; i++)
            {
                RecipientInfo info = RecipientInfo.GetInstance(recipientInfos[i]);

                ReadRecipientInfo(infos, info, secureReadable);
            }
            return(new RecipientInformationStore(infos));
        }
コード例 #15
0
    private static void ReadRecipientInfo(IList infos, RecipientInfo info, CmsSecureReadable secureReadable)
    {
        Asn1Encodable info2 = info.Info;

        if (info2 is KeyTransRecipientInfo)
        {
            infos.Add(new KeyTransRecipientInformation((KeyTransRecipientInfo)info2, secureReadable));
        }
        else if (info2 is KekRecipientInfo)
        {
            infos.Add(new KekRecipientInformation((KekRecipientInfo)info2, secureReadable));
        }
        else if (info2 is KeyAgreeRecipientInfo)
        {
            KeyAgreeRecipientInformation.ReadRecipientInfo(infos, (KeyAgreeRecipientInfo)info2, secureReadable);
        }
        else if (info2 is PasswordRecipientInfo)
        {
            infos.Add(new PasswordRecipientInformation((PasswordRecipientInfo)info2, secureReadable));
        }
    }
コード例 #16
0
        internal static void ReadRecipientInfo(IList infos, KeyAgreeRecipientInfo info,
            CmsSecureReadable secureReadable)
        {
            try
            {
                foreach (Asn1Encodable rek in info.RecipientEncryptedKeys)
                {
                    RecipientEncryptedKey id = RecipientEncryptedKey.GetInstance(rek.ToAsn1Object());

                    RecipientID rid = new RecipientID();

                    Asn1.Cms.KeyAgreeRecipientIdentifier karid = id.Identifier;

                    Asn1.Cms.IssuerAndSerialNumber iAndSN = karid.IssuerAndSerialNumber;
                    if (iAndSN != null)
                    {
                        rid.Issuer = iAndSN.Name;
                        rid.SerialNumber = iAndSN.SerialNumber.Value;
                    }
                    else
                    {
                        Asn1.Cms.RecipientKeyIdentifier rKeyID = karid.RKeyID;

                        // Note: 'date' and 'other' fields of RecipientKeyIdentifier appear to be only informational 

                        rid.SubjectKeyIdentifier = rKeyID.SubjectKeyIdentifier.GetOctets();
                    }

                    infos.Add(new KeyAgreeRecipientInformation(info, rid, id.EncryptedKey,
                        secureReadable));
                }
            }
            catch (IOException e)
            {
                throw new ArgumentException("invalid rid in KeyAgreeRecipientInformation", e);
            }
        }
コード例 #17
0
        internal static void ReadRecipientInfo(IList infos, KeyAgreeRecipientInfo info,
                                               CmsSecureReadable secureReadable)
        {
            try
            {
                foreach (Asn1Encodable rek in info.RecipientEncryptedKeys)
                {
                    RecipientEncryptedKey id = RecipientEncryptedKey.GetInstance(rek.ToAsn1Object());

                    RecipientID rid = new RecipientID();

                    Asn1.Cms.KeyAgreeRecipientIdentifier karid = id.Identifier;

                    Asn1.Cms.IssuerAndSerialNumber iAndSN = karid.IssuerAndSerialNumber;
                    if (iAndSN != null)
                    {
                        rid.Issuer       = iAndSN.Name;
                        rid.SerialNumber = iAndSN.SerialNumber.Value;
                    }
                    else
                    {
                        Asn1.Cms.RecipientKeyIdentifier rKeyID = karid.RKeyID;

                        // Note: 'date' and 'other' fields of RecipientKeyIdentifier appear to be only informational

                        rid.SubjectKeyIdentifier = rKeyID.SubjectKeyIdentifier.GetOctets();
                    }

                    infos.Add(new KeyAgreeRecipientInformation(info, rid, id.EncryptedKey,
                                                               secureReadable));
                }
            }
            catch (IOException e)
            {
                throw new ArgumentException("invalid rid in KeyAgreeRecipientInformation", e);
            }
        }
コード例 #18
0
		private static void ReadRecipientInfo(
			IList infos, RecipientInfo info, CmsSecureReadable secureReadable)
		{
			Asn1Encodable recipInfo = info.Info;
			if (recipInfo is KeyTransRecipientInfo)
			{
				infos.Add(new KeyTransRecipientInformation((KeyTransRecipientInfo)recipInfo, secureReadable));
			}
			else if (recipInfo is KekRecipientInfo)
			{
				infos.Add(new KekRecipientInformation((KekRecipientInfo)recipInfo, secureReadable));
			}
			else if (recipInfo is KeyAgreeRecipientInfo)
			{
				KeyAgreeRecipientInformation.ReadRecipientInfo(infos, (KeyAgreeRecipientInfo)recipInfo, secureReadable);
			}
			else if (recipInfo is PasswordRecipientInfo)
			{
				infos.Add(new PasswordRecipientInformation((PasswordRecipientInfo)recipInfo, secureReadable));
			}
		}
コード例 #19
0
 internal static RecipientInformationStore BuildRecipientInformationStore(Asn1Set recipientInfos, CmsSecureReadable secureReadable)
 {
     global::System.Collections.IList list = Platform.CreateArrayList();
     for (int i = 0; i != recipientInfos.Count; i++)
     {
         RecipientInfo instance = RecipientInfo.GetInstance(recipientInfos[i]);
         ReadRecipientInfo(list, instance, secureReadable);
     }
     return(new RecipientInformationStore((global::System.Collections.ICollection)list));
 }
コード例 #20
0
 internal static void ReadRecipientInfo(global::System.Collections.IList infos, KeyAgreeRecipientInfo info, CmsSecureReadable secureReadable)
 {
     //IL_00bb: Expected O, but got Unknown
     //IL_00c2: Unknown result type (might be due to invalid IL or missing references)
     try
     {
         global::System.Collections.IEnumerator enumerator = info.RecipientEncryptedKeys.GetEnumerator();
         try
         {
             while (enumerator.MoveNext())
             {
                 Asn1Encodable               asn1Encodable = (Asn1Encodable)enumerator.get_Current();
                 RecipientEncryptedKey       instance      = RecipientEncryptedKey.GetInstance(asn1Encodable.ToAsn1Object());
                 RecipientID                 recipientID   = new RecipientID();
                 KeyAgreeRecipientIdentifier identifier    = instance.Identifier;
                 Org.BouncyCastle.Asn1.Cms.IssuerAndSerialNumber issuerAndSerialNumber = identifier.IssuerAndSerialNumber;
                 if (issuerAndSerialNumber != null)
                 {
                     recipientID.Issuer       = issuerAndSerialNumber.Name;
                     recipientID.SerialNumber = issuerAndSerialNumber.SerialNumber.Value;
                 }
                 else
                 {
                     RecipientKeyIdentifier rKeyID = identifier.RKeyID;
                     recipientID.SubjectKeyIdentifier = rKeyID.SubjectKeyIdentifier.GetOctets();
                 }
                 infos.Add((object)new KeyAgreeRecipientInformation(info, recipientID, instance.EncryptedKey, secureReadable));
             }
         }
         finally
         {
             global::System.IDisposable disposable = enumerator as global::System.IDisposable;
             if (disposable != null)
             {
                 disposable.Dispose();
             }
         }
     }
     catch (IOException val)
     {
         IOException val2 = val;
         throw new ArgumentException("invalid rid in KeyAgreeRecipientInformation", (global::System.Exception)(object) val2);
     }
 }
コード例 #21
0
        internal static RecipientInformationStore BuildRecipientInformationStore(Asn1Set recipientInfos, CmsSecureReadable secureReadable)
        {
            IList list = Platform.CreateArrayList();

            for (int num = 0; num != recipientInfos.Count; num++)
            {
                RecipientInfo instance = RecipientInfo.GetInstance(recipientInfos[num]);
                CmsEnvelopedHelper.ReadRecipientInfo(list, instance, secureReadable);
            }
            return(new RecipientInformationStore(list));
        }