1 package org.bouncycastle.asn1; 2 3 import java.io.IOException; 4 5 /** 6 * A NULL object - use DERNull.INSTANCE for populating structures. 7 */ 8 public abstract class ASN1Null 9 extends ASN1Primitive 10 { 11 // BEGIN android-added 12 /*package*/ ASN1Null() 13 { 14 } 15 16 // END android-added 17 /** 18 * Return an instance of ASN.1 NULL from the passed in object. 19 * <p> 20 * Accepted inputs: 21 * <ul> 22 * <li> null → null 23 * <li> {@link ASN1Null} object 24 * <li> a byte[] containing ASN.1 NULL object 25 * </ul> 26 * </p> 27 * 28 * @param o object to be converted. 29 * @return an instance of ASN1Null, or null. 30 * @exception IllegalArgumentException if the object cannot be converted. 31 */ 32 public static ASN1Null getInstance(Object o) 33 { 34 if (o instanceof ASN1Null) 35 { 36 return (ASN1Null)o; 37 } 38 39 if (o != null) 40 { 41 try 42 { 43 return ASN1Null.getInstance(ASN1Primitive.fromByteArray((byte[])o)); 44 } 45 catch (IOException e) 46 { 47 throw new IllegalArgumentException("failed to construct NULL from byte[]: " + e.getMessage()); 48 } 49 catch (ClassCastException e) 50 { 51 throw new IllegalArgumentException("unknown object in getInstance(): " + o.getClass().getName()); 52 } 53 } 54 55 return null; 56 } 57 58 public int hashCode() 59 { 60 return -1; 61 } 62 63 boolean asn1Equals( 64 ASN1Primitive o) 65 { 66 if (!(o instanceof ASN1Null)) 67 { 68 return false; 69 } 70 71 return true; 72 } 73 74 abstract void encode(ASN1OutputStream out) 75 throws IOException; 76 77 public String toString() 78 { 79 return "NULL"; 80 } 81 } 82