1b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallampackage org.bouncycastle.asn1; 2b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam 3b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallamimport java.io.IOException; 4b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam 5b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam/** 6b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam * A NULL object. 7b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam */ 8b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallampublic abstract class ASN1Null 94c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom extends ASN1Primitive 10b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam{ 1170c8287138e69a98c2f950036f9f703ee37228c8Brian Carlstrom /** 1270c8287138e69a98c2f950036f9f703ee37228c8Brian Carlstrom * @deprecated use DERNull.INSTANCE 1370c8287138e69a98c2f950036f9f703ee37228c8Brian Carlstrom */ 14b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam // BEGIN android-changed 15b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam /*package*/ ASN1Null() 16b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam { 17b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam } 18b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam // END android-changed 19b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam 204c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom public static ASN1Null getInstance(Object o) 214c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom { 224c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom if (o instanceof ASN1Null) 234c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom { 244c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom return (ASN1Null)o; 254c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom } 264c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom 274c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom if (o != null) 284c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom { 294c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom try 304c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom { 314c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom return ASN1Null.getInstance(ASN1Primitive.fromByteArray((byte[])o)); 324c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom } 334c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom catch (IOException e) 344c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom { 354c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom throw new IllegalArgumentException("failed to construct NULL from byte[]: " + e.getMessage()); 364c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom } 374c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom catch (ClassCastException e) 384c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom { 394c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom throw new IllegalArgumentException("unknown object in getInstance(): " + o.getClass().getName()); 404c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom } 414c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom } 424c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom 434c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom return null; 444c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom } 454c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom 46b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam public int hashCode() 47b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam { 48c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom return -1; 49b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam } 50b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam 51c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom boolean asn1Equals( 524c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom ASN1Primitive o) 53b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam { 54c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom if (!(o instanceof ASN1Null)) 55b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam { 56b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam return false; 57b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam } 58b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam 59b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam return true; 60b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam } 61b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam 624c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom abstract void encode(ASN1OutputStream out) 63b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam throws IOException; 64b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam 65b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam public String toString() 66b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam { 67c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom return "NULL"; 68b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam } 69b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam} 70