01: // CMP implementation copyright (c) 2003 NOVOSEC AG (http://www.novosec.com)
02: //
03: // Author: Maik Stohn
04: //
05: // Permission is hereby granted, free of charge, to any person obtaining a copy of this
06: // software and associated documentation files (the "Software"), to deal in the Software
07: // without restriction, including without limitation the rights to use, copy, modify, merge,
08: // publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons
09: // to whom the Software is furnished to do so, subject to the following conditions:
10: //
11: // The above copyright notice and this permission notice shall be included in all copies or
12: // substantial portions of the Software.
13: //
14: // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
15: // BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
16: // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
17: // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18: // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
19:
20: package com.novosec.pkix.asn1.cmp;
21:
22: import org.bouncycastle.asn1.ASN1EncodableVector;
23: import org.bouncycastle.asn1.ASN1Sequence;
24: import org.bouncycastle.asn1.ASN1TaggedObject;
25: import org.bouncycastle.asn1.DEREncodable;
26: import org.bouncycastle.asn1.DERObject;
27: import org.bouncycastle.asn1.DERSequence;
28:
29: /**
30: * ASN.1 structure DER En/DeCoder.
31: *
32: * <pre>
33: * ProtectedPart ::= SEQUENCE {
34: * header PKIHeader,
35: * body PKIBody
36: * }
37: *
38: * </pre>
39: */
40: public class ProtectedPart implements DEREncodable {
41: PKIHeader header;
42: PKIBody body;
43:
44: public static ProtectedPart getInstance(ASN1TaggedObject obj,
45: boolean explicit) {
46: return getInstance(ASN1Sequence.getInstance(obj, explicit));
47: }
48:
49: public static ProtectedPart getInstance(Object obj) {
50: if (obj instanceof ProtectedPart) {
51: return (ProtectedPart) obj;
52: } else if (obj instanceof ASN1Sequence) {
53: return new ProtectedPart((ASN1Sequence) obj);
54: }
55:
56: throw new IllegalArgumentException("unknown object in factory");
57: }
58:
59: public ProtectedPart(ASN1Sequence seq) {
60: this .header = PKIHeader.getInstance(seq.getObjectAt(0));
61: this .body = PKIBody.getInstance((ASN1TaggedObject) seq
62: .getObjectAt(1));
63: }
64:
65: public ProtectedPart(PKIHeader header, PKIBody body) {
66: this .header = header;
67: this .body = body;
68: }
69:
70: public PKIHeader getHeader() {
71: return header;
72: }
73:
74: public PKIBody getBody() {
75: return body;
76: }
77:
78: public DERObject getDERObject() {
79: ASN1EncodableVector v = new ASN1EncodableVector();
80:
81: v.add(header);
82: v.add(body);
83:
84: return new DERSequence(v);
85: }
86:
87: public String toString() {
88: return "ProtectedPart: (header = " + this .getHeader()
89: + ", body = " + this .getBody() + ")";
90: }
91: }
|