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
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
42 public static DERBoolean getInstance(
43 boolean value)
44 {
45 return (value ? TRUE : FALSE);
46 }
47
48
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 }
104