/** * Return an ArchiveTimeStampChain from the given object. * * @param obj the object we want converted. * @return an ArchiveTimeStampChain instance, or null. * @throws IllegalArgumentException if the object cannot be converted. */ public static ArchiveTimeStampChain getInstance(final Object obj) { if (obj instanceof ArchiveTimeStampChain) { return (ArchiveTimeStampChain)obj; } else if (obj != null) { return new ArchiveTimeStampChain(ASN1Sequence.getInstance(obj)); } return null; }
/** * Returns the sequence of ArchiveTimeStamp chains that compose the ArchiveTimeStamp sequence. * * @return the {@link ASN1Sequence} containing the ArchiveTimeStamp chains. */ public ArchiveTimeStampChain[] getArchiveTimeStampChains() { ArchiveTimeStampChain[] rv = new ArchiveTimeStampChain[archiveTimeStampChains.size()]; for (int i = 0; i != rv.length; i++) { rv[i] = ArchiveTimeStampChain.getInstance(archiveTimeStampChains.getObjectAt(i)); } return rv; }
/** * Return a new EvidenceRecord with an added ArchiveTimeStamp * * @param ats the archive timestamp to add * @param newChain states whether this new archive timestamp must be added as part of a * new sequence (i.e. in the case of hashtree renewal) or not (i.e. in the case of timestamp * renewal) * @return the new EvidenceRecord */ public EvidenceRecord addArchiveTimeStamp(final ArchiveTimeStamp ats, final boolean newChain) { if (newChain) { ArchiveTimeStampChain chain = new ArchiveTimeStampChain(ats); return new EvidenceRecord(this, archiveTimeStampSequence.append(chain), ats); } else { ArchiveTimeStampChain[] chains = archiveTimeStampSequence.getArchiveTimeStampChains(); chains[chains.length - 1] = chains[chains.length - 1].append(ats); return new EvidenceRecord(this, new ArchiveTimeStampSequence(chains), null); } }
private ArchiveTimeStampSequence(final ASN1Sequence sequence) throws IllegalArgumentException { final ASN1EncodableVector vector = new ASN1EncodableVector(); Enumeration objects = sequence.getObjects(); while (objects.hasMoreElements()) { vector.add(ArchiveTimeStampChain.getInstance(objects.nextElement())); } this.archiveTimeStampChains = new DERSequence(vector); }
/** * Adds an {@link ArchiveTimeStamp} object to the archive timestamp chain. * * @param archiveTimeStamp the {@link ArchiveTimeStamp} to add. * @return returns the modified chain. */ public ArchiveTimeStampChain append(final ArchiveTimeStamp archiveTimeStamp) { ASN1EncodableVector v = new ASN1EncodableVector(); for (int i = 0; i != archiveTimestamps.size(); i++) { v.add(archiveTimestamps.getObjectAt(i)); } v.add(archiveTimeStamp); return new ArchiveTimeStampChain(new DERSequence(v)); }