~brian-thomason/+junk/bouncycastle

« back to all changes in this revision

Viewing changes to src/org/bouncycastle/asn1/cms/TimeStampedDataParser.java

  • Committer: Brian Thomason
  • Date: 2011-12-20 17:20:32 UTC
  • Revision ID: brian.thomason@canonical.com-20111220172032-rdtm13jgdxtksacr
Initial import

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
package org.bouncycastle.asn1.cms;
 
2
 
 
3
import java.io.IOException;
 
4
 
 
5
import org.bouncycastle.asn1.ASN1EncodableVector;
 
6
import org.bouncycastle.asn1.ASN1OctetStringParser;
 
7
import org.bouncycastle.asn1.ASN1Sequence;
 
8
import org.bouncycastle.asn1.ASN1SequenceParser;
 
9
import org.bouncycastle.asn1.BERSequence;
 
10
import org.bouncycastle.asn1.DEREncodable;
 
11
import org.bouncycastle.asn1.DERIA5String;
 
12
import org.bouncycastle.asn1.DERInteger;
 
13
import org.bouncycastle.asn1.DERObject;
 
14
 
 
15
public class TimeStampedDataParser
 
16
{
 
17
    private DERInteger version;
 
18
    private DERIA5String dataUri;
 
19
    private MetaData metaData;
 
20
    private ASN1OctetStringParser content;
 
21
    private Evidence temporalEvidence;
 
22
    private ASN1SequenceParser parser;
 
23
 
 
24
    private TimeStampedDataParser(ASN1SequenceParser parser)
 
25
        throws IOException
 
26
    {
 
27
        this.parser = parser;
 
28
        this.version = DERInteger.getInstance(parser.readObject());
 
29
 
 
30
        DEREncodable obj = parser.readObject();
 
31
 
 
32
        if (obj instanceof DERIA5String)
 
33
        {
 
34
            this.dataUri = DERIA5String.getInstance(obj);
 
35
            obj = parser.readObject();
 
36
        }
 
37
        if (obj instanceof MetaData || obj instanceof ASN1SequenceParser)
 
38
        {
 
39
            this.metaData = MetaData.getInstance(obj.getDERObject());
 
40
            obj = parser.readObject();
 
41
        }
 
42
        if (obj instanceof ASN1OctetStringParser)
 
43
        {
 
44
            this.content = (ASN1OctetStringParser)obj;
 
45
        }
 
46
    }
 
47
 
 
48
    public static TimeStampedDataParser getInstance(Object obj)
 
49
        throws IOException
 
50
    {
 
51
        if (obj instanceof ASN1Sequence)
 
52
        {
 
53
            return new TimeStampedDataParser(((ASN1Sequence)obj).parser());
 
54
        }
 
55
        if (obj instanceof ASN1SequenceParser)
 
56
        {
 
57
            return new TimeStampedDataParser((ASN1SequenceParser)obj);
 
58
        }
 
59
 
 
60
        return null;
 
61
    }
 
62
 
 
63
    public DERIA5String getDataUri()
 
64
    {
 
65
        return dataUri;
 
66
    }
 
67
 
 
68
    public MetaData getMetaData()
 
69
    {
 
70
        return metaData;
 
71
    }
 
72
 
 
73
    public ASN1OctetStringParser getContent()
 
74
    {
 
75
        return content;
 
76
    }
 
77
 
 
78
    public Evidence getTemporalEvidence()
 
79
        throws IOException
 
80
    {
 
81
        if (temporalEvidence == null)
 
82
        {
 
83
            temporalEvidence = Evidence.getInstance(parser.readObject().getDERObject());
 
84
        }
 
85
 
 
86
        return temporalEvidence;
 
87
    }
 
88
 
 
89
    /**
 
90
     * <pre>
 
91
     * TimeStampedData ::= SEQUENCE {
 
92
     *   version              INTEGER { v1(1) },
 
93
     *   dataUri              IA5String OPTIONAL,
 
94
     *   metaData             MetaData OPTIONAL,
 
95
     *   content              OCTET STRING OPTIONAL,
 
96
     *   temporalEvidence     Evidence
 
97
     * }
 
98
     * </pre>
 
99
     * @return
 
100
     */
 
101
    public DERObject toASN1Object()
 
102
    {
 
103
        ASN1EncodableVector v = new ASN1EncodableVector();
 
104
 
 
105
        v.add(version);
 
106
 
 
107
        if (dataUri != null)
 
108
        {
 
109
            v.add(dataUri);
 
110
        }
 
111
 
 
112
        if (metaData != null)
 
113
        {
 
114
            v.add(metaData);
 
115
        }
 
116
 
 
117
        if (content != null)
 
118
        {
 
119
            v.add(content);
 
120
        }
 
121
 
 
122
        v.add(temporalEvidence);
 
123
 
 
124
        return new BERSequence(v);
 
125
    }
 
126
}