public override bool Equals( Object o) { if (!(o is KeyTransRecipientID)) { return(false); } KeyTransRecipientID id = (KeyTransRecipientID)o; return(this.baseSelector.Equals(id.baseSelector)); }
/** * Return possible empty collection with recipients matching the passed in RecipientID * * @param selector a recipient id to select against. * @return a collection of RecipientInformation objects. */ public ICollection <RecipientInformation> GetMatches(ISelector <RecipientInformation> selector) { if (selector is KeyTransRecipientID) { KeyTransRecipientID keyTrans = (KeyTransRecipientID)selector; X500Name issuer = keyTrans.Issuer; byte[] subjectKeyId = keyTrans.GetSubjectKeyIdentifier(); if (issuer != null && subjectKeyId != null) { IList <RecipientInformation> results = new List <RecipientInformation>(); ICollection <RecipientInformation> match1 = GetMatches(new KeyTransRecipientID(issuer, keyTrans.SerialNumber)); if (match1 != null) { for (IEnumerator <RecipientInformation> en = match1.GetEnumerator(); en.MoveNext();) { results.Add(en.Current); } } ICollection <RecipientInformation> match2 = GetMatches(new KeyTransRecipientID(subjectKeyId)); if (match2 != null) { for (IEnumerator <RecipientInformation> en = match2.GetEnumerator(); en.MoveNext();) { results.Add(en.Current); } } return(results); } } IList <RecipientInformation> list = (IList <RecipientInformation>)table[selector]; return(list == null ? new List <RecipientInformation>(0) : new List <RecipientInformation>(list)); }
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>; } }