private byte[][] ComputeRecipientsField(byte[] seed) { byte[][] recipientsField = new byte[policy.NumberOfRecipients][]; var it = policy.RecipientsIterator; int i = 0; while (it.MoveNext()) { PublicKeyRecipient recipient = it.Current; X509Certificate certificate = recipient.X509; int permission = recipient.Permission.PermissionBytesForPublicKey; byte[] pkcs7input = new byte[24]; byte one = (byte)(permission); byte two = (byte)((uint)permission >> 8); byte three = (byte)((uint)permission >> 16); byte four = (byte)((uint)permission >> 24); // put this seed in the pkcs7 input Array.Copy(seed, 0, pkcs7input, 0, 20); pkcs7input[20] = four; pkcs7input[21] = three; pkcs7input[22] = two; pkcs7input[23] = one; var obj = CreateDERForRecipient(pkcs7input, certificate); recipientsField[i] = obj.GetDerEncoded(); i++; } return(recipientsField); }
/** * Removes a recipient from the recipients list. * @param recipient The recipient to remove. * @return true If a recipient was found and removed. */ public bool RemoveRecipient(PublicKeyRecipient recipient) { return(recipients.Remove(recipient)); }
/** * Adds a new recipient to the recipients list. * @param recipient A new recipient. */ public void AddRecipient(PublicKeyRecipient recipient) { recipients.Add(recipient); }