/** * 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); } }
/** * Return an ArchiveTimestampSequence from the given object. * * @param obj the object we want converted. * @return an ArchiveTimeStampSequence instance, or null. * @throws IllegalArgumentException if the object cannot be converted. */ public static ArchiveTimeStampSequence getInstance(final Object obj) { if (obj instanceof ArchiveTimeStampChain) { return (ArchiveTimeStampSequence)obj; } else if (obj != null) { return new ArchiveTimeStampSequence(ASN1Sequence.getInstance(obj)); } return null; }
archiveTimeStampSequence = ArchiveTimeStampSequence.getInstance(sequence.getObjectAt(sequence.size() - 1));
/** * Adds an {@link ArchiveTimeStampChain} to the ArchiveTimeStamp sequence. * * @param chain the {@link ArchiveTimeStampChain} to add * @return returns the modified sequence. */ public ArchiveTimeStampSequence append(ArchiveTimeStampChain chain) { ASN1EncodableVector v = new ASN1EncodableVector(); for (int i = 0; i != archiveTimeStampChains.size(); i++) { v.add(archiveTimeStampChains.getObjectAt(i)); } v.add(chain); return new ArchiveTimeStampSequence(new DERSequence(v)); }