package org.bouncycastle.tsp.test; import java.io.ByteArrayOutputStream; import java.io.InputStream; import junit.framework.TestCase; import org.bouncycastle.operator.DigestCalculator; import org.bouncycastle.operator.DigestCalculatorProvider; import org.bouncycastle.operator.bc.BcDigestCalculatorProvider; import org.bouncycastle.tsp.TimeStampToken; import org.bouncycastle.tsp.cms.CMSTimeStampedData; public class CMSTimeStampedDataTest extends TestCase { CMSTimeStampedData cmsTimeStampedData = null; String fileInput = "FileDaFirmare.txt.tsd.der"; String fileOutput = fileInput.substring(0, fileInput.indexOf(".tsd")); private byte[] baseData; protected void setUp() throws Exception { ByteArrayOutputStream origStream = new ByteArrayOutputStream(); InputStream in = this.getClass().getResourceAsStream(fileInput); int ch; while ((ch = in.read()) >= 0) { origStream.write(ch); } origStream.close(); this.baseData = origStream.toByteArray(); cmsTimeStampedData = new CMSTimeStampedData(baseData); } protected void tearDown() throws Exception { cmsTimeStampedData = null; } public void testGetTimeStampTokens() throws Exception { TimeStampToken[] tokens = cmsTimeStampedData.getTimeStampTokens(); assertEquals(3, tokens.length); } public void testValidateAllTokens() throws Exception { DigestCalculatorProvider digestCalculatorProvider = new BcDigestCalculatorProvider(); DigestCalculator imprintCalculator = cmsTimeStampedData.getMessageImprintDigestCalculator(digestCalculatorProvider); imprintCalculator.getOutputStream().write(cmsTimeStampedData.getContent()); byte[] digest = imprintCalculator.getDigest(); TimeStampToken[] tokens = cmsTimeStampedData.getTimeStampTokens(); for (int i = 0; i < tokens.length; i++) { cmsTimeStampedData.validate(digestCalculatorProvider, digest, tokens[i]); } } public void testValidate() throws Exception { DigestCalculatorProvider digestCalculatorProvider = new BcDigestCalculatorProvider(); DigestCalculator imprintCalculator = cmsTimeStampedData.getMessageImprintDigestCalculator(digestCalculatorProvider); imprintCalculator.getOutputStream().write(cmsTimeStampedData.getContent()); cmsTimeStampedData.validate(digestCalculatorProvider, imprintCalculator.getDigest()); } }