summary refs log tree commit diff
path: root/crypto/src/asn1/DerBoolean.cs
diff options
context:
space:
mode:
Diffstat (limited to 'crypto/src/asn1/DerBoolean.cs')
-rw-r--r--crypto/src/asn1/DerBoolean.cs86
1 files changed, 49 insertions, 37 deletions
diff --git a/crypto/src/asn1/DerBoolean.cs b/crypto/src/asn1/DerBoolean.cs
index 41ccae8a1..66791d16c 100644
--- a/crypto/src/asn1/DerBoolean.cs
+++ b/crypto/src/asn1/DerBoolean.cs
@@ -7,10 +7,10 @@ namespace Org.BouncyCastle.Asn1
     {
         private readonly byte value;
 
-		public static readonly DerBoolean False = new DerBoolean(false);
+        public static readonly DerBoolean False = new DerBoolean(false);
         public static readonly DerBoolean True  = new DerBoolean(true);
 
-		/**
+        /**
          * return a bool from the passed in object.
          *
          * @exception ArgumentException if the object cannot be converted.
@@ -23,10 +23,10 @@ namespace Org.BouncyCastle.Asn1
                 return (DerBoolean) obj;
             }
 
-			throw new ArgumentException("illegal object in GetInstance: " + obj.GetType().Name);
+            throw new ArgumentException("illegal object in GetInstance: " + obj.GetType().Name);
         }
 
-		/**
+        /**
          * return a DerBoolean from the passed in bool.
          */
         public static DerBoolean GetInstance(
@@ -35,7 +35,7 @@ namespace Org.BouncyCastle.Asn1
             return value ? True : False;
         }
 
-		/**
+        /**
          * return a Boolean from a tagged object.
          *
          * @param obj the tagged object holding the object we want
@@ -48,63 +48,75 @@ namespace Org.BouncyCastle.Asn1
             Asn1TaggedObject	obj,
             bool				isExplicit)
         {
-			Asn1Object o = obj.GetObject();
+            Asn1Object o = obj.GetObject();
 
-			if (isExplicit || o is DerBoolean)
-			{
-				return GetInstance(o);
-			}
+            if (isExplicit || o is DerBoolean)
+            {
+                return GetInstance(o);
+            }
 
-			return new DerBoolean(((Asn1OctetString)o).GetOctets());
+            return FromOctetString(((Asn1OctetString)o).GetOctets());
         }
 
-		public DerBoolean(
+        public DerBoolean(
             byte[] val)
         {
-			if (val.Length != 1)
-				throw new ArgumentException("byte value should have 1 byte in it", "val");
+            if (val.Length != 1)
+                throw new ArgumentException("byte value should have 1 byte in it", "val");
 
-			// TODO Are there any constraints on the possible byte values?
+            // TODO Are there any constraints on the possible byte values?
             this.value = val[0];
         }
 
-		private DerBoolean(
+        private DerBoolean(
             bool value)
         {
             this.value = value ? (byte)0xff : (byte)0;
         }
 
-		public bool IsTrue
-		{
-			get { return value != 0; }
-		}
+        public bool IsTrue
+        {
+            get { return value != 0; }
+        }
 
-		internal override void Encode(
+        internal override void Encode(
             DerOutputStream derOut)
         {
-			// TODO Should we make sure the byte value is one of '0' or '0xff' here?
-			derOut.WriteEncoded(Asn1Tags.Boolean, new byte[]{ value });
+            // TODO Should we make sure the byte value is one of '0' or '0xff' here?
+            derOut.WriteEncoded(Asn1Tags.Boolean, new byte[]{ value });
         }
 
-		protected override bool Asn1Equals(
-			Asn1Object asn1Object)
+        protected override bool Asn1Equals(
+            Asn1Object asn1Object)
         {
-			DerBoolean other = asn1Object as DerBoolean;
+            DerBoolean other = asn1Object as DerBoolean;
 
-			if (other == null)
-				return false;
+            if (other == null)
+                return false;
 
-			return IsTrue == other.IsTrue;
+            return IsTrue == other.IsTrue;
+        }
+
+        protected override int Asn1GetHashCode()
+        {
+            return IsTrue.GetHashCode();
         }
 
-		protected override int Asn1GetHashCode()
-		{
-			return IsTrue.GetHashCode();
+        public override string ToString()
+        {
+            return IsTrue ? "TRUE" : "FALSE";
         }
 
-		public override string ToString()
-		{
-			return IsTrue ? "TRUE" : "FALSE";
-		}
-	}
+        internal static DerBoolean FromOctetString(byte[] value)
+        {
+            if (value.Length != 1)
+            {
+                throw new ArgumentException("BOOLEAN value should have 1 byte in it", "value");
+            }
+
+            byte b = value[0];
+
+            return b == 0 ? False : b == 0xFF ? True : new DerBoolean(value);
+        }
+    }
 }