initial checkin
[org.ibex.nanogoat.git] / src / org / bouncycastle / asn1 / DERBoolean.java
1 package org.bouncycastle.asn1;
2
3 import java.io.*;
4
5 public class DERBoolean
6     extends DERObject
7 {
8     byte         value;
9
10         public static final DERBoolean FALSE = new DERBoolean(false);
11         public static final DERBoolean TRUE  = new DERBoolean(true);
12
13     /**
14      * return a boolean from the passed in object.
15      *
16      * @exception IllegalArgumentException if the object cannot be converted.
17      */
18     public static DERBoolean getInstance(
19         Object  obj)
20     {
21         if (obj == null || obj instanceof DERBoolean)
22         {
23             return (DERBoolean)obj;
24         }
25
26         if (obj instanceof ASN1OctetString)
27         {
28             return new DERBoolean(((ASN1OctetString)obj).getOctets());
29         }
30
31         if (obj instanceof ASN1TaggedObject)
32         {
33             return getInstance(((ASN1TaggedObject)obj).getObject());
34         }
35
36         throw new IllegalArgumentException("illegal object in getInstance: " + obj.getClass().getName());
37     }
38
39     /**
40      * return a DERBoolean from the passed in boolean.
41      */
42     public static DERBoolean getInstance(
43         boolean  value)
44     {
45         return (value ? TRUE : FALSE);
46     }
47
48     /**
49      * return a Boolean from a tagged object.
50      *
51      * @param obj the tagged object holding the object we want
52      * @param explicit true if the object is meant to be explicitly
53      *              tagged false otherwise.
54      * @exception IllegalArgumentException if the tagged object cannot
55      *               be converted.
56      */
57     public static DERBoolean getInstance(
58         ASN1TaggedObject obj,
59         boolean          explicit)
60     {
61         return getInstance(obj.getObject());
62     }
63     
64     public DERBoolean(
65         byte[]       value)
66     {
67         this.value = value[0];
68     }
69
70     public DERBoolean(
71         boolean     value)
72     {
73         this.value = (value) ? (byte)0xff : (byte)0;
74     }
75
76     public boolean isTrue()
77     {
78         return (value != 0);
79     }
80
81     void encode(
82         DEROutputStream out)
83         throws IOException
84     {
85         byte[]  bytes = new byte[1];
86
87         bytes[0] = value;
88
89         out.writeEncoded(BOOLEAN, bytes);
90     }
91     
92     public boolean equals(
93         Object  o)
94     {
95         if ((o == null) || !(o instanceof DERBoolean))
96         {
97             return false;
98         }
99
100         return (value == ((DERBoolean)o).value);
101     }
102
103 }