DERGeneralString.java revision 4c111300c39cb2e27f07fc2ae3b00e23ed4443b2
1b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallampackage org.bouncycastle.asn1; 2b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam 3b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallamimport java.io.IOException; 4b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam 54c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstromimport org.bouncycastle.util.Arrays; 64c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstromimport org.bouncycastle.util.Strings; 74c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom 8b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallampublic class DERGeneralString 94c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom extends ASN1Primitive 104c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom implements ASN1String 11b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam{ 124c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom private byte[] string; 13b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam 14b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam public static DERGeneralString getInstance( 15b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam Object obj) 16b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam { 17b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam if (obj == null || obj instanceof DERGeneralString) 18b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam { 19b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam return (DERGeneralString) obj; 20b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam } 216e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom 22b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam throw new IllegalArgumentException("illegal object in getInstance: " 23b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam + obj.getClass().getName()); 24b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam } 25b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam 26b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam public static DERGeneralString getInstance( 27b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam ASN1TaggedObject obj, 28b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam boolean explicit) 29b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam { 304c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom ASN1Primitive o = obj.getObject(); 316e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom 326e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom if (explicit || o instanceof DERGeneralString) 336e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom { 346e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom return getInstance(o); 356e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom } 366e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom else 376e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom { 386e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom return new DERGeneralString(((ASN1OctetString)o).getOctets()); 396e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom } 40b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam } 41b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam 424c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom DERGeneralString(byte[] string) 43b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam { 444c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom this.string = string; 45b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam } 46b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam 47b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam public DERGeneralString(String string) 48b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam { 494c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom this.string = Strings.toByteArray(string); 50b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam } 51b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam 52b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam public String getString() 53b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam { 544c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom return Strings.fromByteArray(string); 55b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam } 56c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom 57c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom public String toString() 58c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom { 594c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom return getString(); 60c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom } 61c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom 62b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam public byte[] getOctets() 63b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam { 644c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom return Arrays.clone(string); 65b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam } 664c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom 674c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom boolean isConstructed() 684c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom { 694c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom return false; 704c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom } 714c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom 724c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom int encodedLength() 734c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom { 744c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom return 1 + StreamUtil.calculateBodyLength(string.length) + string.length; 754c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom } 764c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom 774c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom void encode(ASN1OutputStream out) 78b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam throws IOException 79b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam { 804c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom out.writeEncoded(BERTags.GENERAL_STRING, string); 81b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam } 82b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam 83b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam public int hashCode() 84b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam { 854c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom return Arrays.hashCode(string); 86b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam } 87b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam 884c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom boolean asn1Equals(ASN1Primitive o) 89b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam { 90b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam if (!(o instanceof DERGeneralString)) 91b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam { 92b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam return false; 93b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam } 944c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom DERGeneralString s = (DERGeneralString)o; 954c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom 964c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom return Arrays.areEqual(string, s.string); 97b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam } 98b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam} 99