1e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrompackage org.bouncycastle.cms;
2e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom
3e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstromimport java.io.ByteArrayInputStream;
4e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstromimport java.io.IOException;
5e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstromimport java.io.InputStream;
6e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstromimport java.io.OutputStream;
7e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom
8e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstromimport org.bouncycastle.asn1.ASN1ObjectIdentifier;
9e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstromimport org.bouncycastle.asn1.cms.CMSObjectIdentifiers;
1070c8287138e69a98c2f950036f9f703ee37228c8Brian Carlstromimport org.bouncycastle.util.Arrays;
11e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom
12e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom/**
13e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom * a holding class for a byte array of data to be processed.
14e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom */
15e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrompublic class CMSProcessableByteArray
16e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom    implements CMSTypedData, CMSReadable
17e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom{
18e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom    private final ASN1ObjectIdentifier type;
19e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom    private final byte[]  bytes;
20e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom
21e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom    public CMSProcessableByteArray(
22e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom        byte[]  bytes)
23e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom    {
24e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom        this(new ASN1ObjectIdentifier(CMSObjectIdentifiers.data.getId()), bytes);
25e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom    }
26e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom
27e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom    public CMSProcessableByteArray(
28e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom        ASN1ObjectIdentifier type,
29e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom        byte[]  bytes)
30e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom    {
31e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom        this.type = type;
32e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom        this.bytes = bytes;
33e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom    }
34e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom
35e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom    public InputStream getInputStream()
36e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom    {
37e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom        return new ByteArrayInputStream(bytes);
38e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom    }
39e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom
40e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom    public void write(OutputStream zOut)
41e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom        throws IOException, CMSException
42e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom    {
43e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom        zOut.write(bytes);
44e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom    }
45e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom
46e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom    public Object getContent()
47e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom    {
4870c8287138e69a98c2f950036f9f703ee37228c8Brian Carlstrom        return Arrays.clone(bytes);
49e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom    }
50e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom
51e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom    public ASN1ObjectIdentifier getContentType()
52e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom    {
53e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom        return type;
54e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom    }
55e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom}
56