package org.bouncycastle.cms;

import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

import org.bouncycastle.util.Iterable;

public class SignerInformationStore
    implements Iterable<SignerInformation>
{
    private List all = new ArrayList();
    private Map table = new HashMap();

    
Create a store containing a single SignerInformation object.
Params:
  • signerInfo – the signer information to contain.
/** * Create a store containing a single SignerInformation object. * * @param signerInfo the signer information to contain. */
public SignerInformationStore( SignerInformation signerInfo) { this.all = new ArrayList(1); this.all.add(signerInfo); SignerId sid = signerInfo.getSID(); table.put(sid, all); }
Create a store containing a collection of SignerInformation objects.
Params:
  • signerInfos – a collection signer information objects to contain.
/** * Create a store containing a collection of SignerInformation objects. * * @param signerInfos a collection signer information objects to contain. */
public SignerInformationStore( Collection<SignerInformation> signerInfos) { Iterator it = signerInfos.iterator(); while (it.hasNext()) { SignerInformation signer = (SignerInformation)it.next(); SignerId sid = signer.getSID(); List list = (ArrayList)table.get(sid); if (list == null) { list = new ArrayList(1); table.put(sid, list); } list.add(signer); } this.all = new ArrayList(signerInfos); }
Return the first SignerInformation object that matches the passed in selector. Null if there are no matches.
Params:
  • selector – to identify a signer
Returns:a single SignerInformation object. Null if none matches.
/** * Return the first SignerInformation object that matches the * passed in selector. Null if there are no matches. * * @param selector to identify a signer * @return a single SignerInformation object. Null if none matches. */
public SignerInformation get( SignerId selector) { Collection list = getSigners(selector); return list.size() == 0 ? null : (SignerInformation) list.iterator().next(); }
Return the number of signers in the collection.
Returns:number of signers identified.
/** * Return the number of signers in the collection. * * @return number of signers identified. */
public int size() { return all.size(); }
Return all signers in the collection
Returns:a collection of signers.
/** * Return all signers in the collection * * @return a collection of signers. */
public Collection<SignerInformation> getSigners() { return new ArrayList(all); }
Return possible empty collection with signers matching the passed in SignerId
Params:
  • selector – a signer id to select against.
Returns:a collection of SignerInformation objects.
/** * Return possible empty collection with signers matching the passed in SignerId * * @param selector a signer id to select against. * @return a collection of SignerInformation objects. */
public Collection<SignerInformation> getSigners( SignerId selector) { if (selector.getIssuer() != null && selector.getSubjectKeyIdentifier() != null) { List results = new ArrayList(); Collection match1 = getSigners(new SignerId(selector.getIssuer(), selector.getSerialNumber())); if (match1 != null) { results.addAll(match1); } Collection match2 = getSigners(new SignerId(selector.getSubjectKeyIdentifier())); if (match2 != null) { results.addAll(match2); } return results; } else { List list = (ArrayList)table.get(selector); return list == null ? new ArrayList() : new ArrayList(list); } }
Support method for Iterable where available.
/** * Support method for Iterable where available. */
public Iterator<SignerInformation> iterator() { return getSigners().iterator(); } }