1f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectpackage org.bouncycastle.asn1; 2f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 3f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project// BEGIN android-removed 4f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project//import java.io.ByteArrayOutputStream; 5f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project//import java.io.IOException; 6f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project// END android-removed 7f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.util.Enumeration; 8f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project// BEGIN android-removed 9f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project//import java.util.Vector; 10f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project// END android-removed; 11f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 12f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project// BEGIN android-note 13f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project// Changed inheritence of class. 14f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project// END android-note 15f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 16f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectabstract public class ASN1Set 17f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project extends ASN1Collection 18f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project{ 19f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // BEGIN android-removed 20f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project //protected Vector set = new Vector(); 21f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // END android-removed 22f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 23f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 24f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * return an ASN1Set from the given object. 25f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 26f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @param obj the object we want converted. 27f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @exception IllegalArgumentException if the object cannot be converted. 28f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 29f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public static ASN1Set getInstance( 30f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Object obj) 31f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project { 32f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (obj == null || obj instanceof ASN1Set) 33f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project { 34f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return (ASN1Set)obj; 35f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 36f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 37f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project throw new IllegalArgumentException("unknown object in getInstance"); 38f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 39f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 40f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 41f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Return an ASN1 set from a tagged object. There is a special 42f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * case here, if an object appears to have been explicitly tagged on 43f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * reading but we were expecting it to be implictly tagged in the 44f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * normal course of events it indicates that we lost the surrounding 45f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * set - so we need to add it back (this will happen if the tagged 46f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * object is a sequence that contains other sequences). If you are 47f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * dealing with implicitly tagged sets you really <b>should</b> 48f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * be using this method. 49f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 50f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @param obj the tagged object. 51f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @param explicit true if the object is meant to be explicitly tagged 52f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * false otherwise. 53f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @exception IllegalArgumentException if the tagged object cannot 54f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * be converted. 55f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 56f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public static ASN1Set getInstance( 57f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ASN1TaggedObject obj, 58f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project boolean explicit) 59f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project { 60f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (explicit) 61f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project { 62f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (!obj.isExplicit()) 63f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project { 64f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project throw new IllegalArgumentException("object implicit - explicit expected."); 65f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 66f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 67f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return (ASN1Set)obj.getObject(); 68f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 69f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project else 70f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project { 71f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // 72f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // constructed object which appears to be explicitly tagged 73f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // and it's really implicit means we have to add the 74f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // surrounding sequence. 75f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // 76f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (obj.isExplicit()) 77f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project { 78f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ASN1Set set = new DERSet(obj.getObject()); 79f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 80f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return set; 81f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 82f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project else 83f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project { 84f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (obj.getObject() instanceof ASN1Set) 85f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project { 86f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return (ASN1Set)obj.getObject(); 87f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 88f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 89f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // 90f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // in this case the parser returns a sequence, convert it 91f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // into a set. 92f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // 93f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ASN1EncodableVector v = new ASN1EncodableVector(); 94f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 95f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (obj.getObject() instanceof ASN1Sequence) 96f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project { 97f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ASN1Sequence s = (ASN1Sequence)obj.getObject(); 98f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Enumeration e = s.getObjects(); 99f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 100f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project while (e.hasMoreElements()) 101f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project { 102f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project v.add((DEREncodable)e.nextElement()); 103f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 104f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 105f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return new DERSet(v, false); 106f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 107f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 108f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 109f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 110f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project throw new IllegalArgumentException( 111f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project "unknown object in getInstanceFromTagged"); 112f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 113f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 114f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public ASN1Set() 115f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project { 116f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 117f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 118f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // BEGIN android-removed 119f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project //public Enumeration getObjects() 120f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project //{ 121f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // return set.elements(); 122f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project //} 123f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 124f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ///** 125f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // * return the object at the set postion indicated by index. 126f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // * 127f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // * @param index the set number (starting at zero) of the object 128f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // * @return the object at the set postion indicated by index. 129f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // */ 130f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project //public DEREncodable getObjectAt( 131f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // int index) 132f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project //{ 133f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // return (DEREncodable)set.elementAt(index); 134f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project //} 135f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 136f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ///** 137f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // * return the number of objects in this set. 138f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // * 139f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // * @return the number of objects in this set. 140f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // */ 141f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project //public int size() 142f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project //{ 143f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // return set.size(); 144f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project //} 145f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 146f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project //public int hashCode() 147f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project //{ 148f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // Enumeration e = this.getObjects(); 149f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // int hashCode = 0; 150f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 151f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // while (e.hasMoreElements()) 152f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // { 153f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // hashCode ^= e.nextElement().hashCode(); 154f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // } 155f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 156f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // return hashCode; 157f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project //} 158f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // END android-removed 159f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 160f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public boolean equals( 161f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Object o) 162f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project { 163f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (o == this) 164f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project { 165f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return true; 166f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 167f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 168f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (!(o instanceof DEREncodable)) 169f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project { 170f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return false; 171f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 172f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 173f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project DERObject dObj = ((DEREncodable)o).getDERObject(); 174f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 175f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (!(dObj instanceof ASN1Set)) 176f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project { 177f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return false; 178f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 179f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 180f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ASN1Set other = (ASN1Set)dObj; 181f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 182f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (this.size() != other.size()) 183f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project { 184f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return false; 185f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 186f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 187f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Enumeration s1 = this.getObjects(); 188f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Enumeration s2 = other.getObjects(); 189f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 190f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project while (s1.hasMoreElements()) 191f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project { 192f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (!s1.nextElement().equals(s2.nextElement())) 193f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project { 194f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return false; 195f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 196f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 197f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 198f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return true; 199f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 200f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 201f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // BEGIN android-removed 202f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ///** 203f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // * return true if a <= b (arrays are assumed padded with zeros). 204f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // */ 205f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project //private boolean lessThanOrEqual( 206f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // byte[] a, 207f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // byte[] b) 208f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project //{ 209f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // if (a.length <= b.length) 210f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // { 211f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // for (int i = 0; i != a.length; i++) 212f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // { 213f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // int l = a[i] & 0xff; 214f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // int r = b[i] & 0xff; 215f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // 216f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // if (r > l) 217f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // { 218f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // return true; 219f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // } 220f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // else if (l > r) 221f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // { 222f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // return false; 223f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // } 224f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // } 225f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 226f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // return true; 227f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // } 228f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // else 229f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // { 230f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // for (int i = 0; i != b.length; i++) 231f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // { 232f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // int l = a[i] & 0xff; 233f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // int r = b[i] & 0xff; 234f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // 235f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // if (r > l) 236f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // { 237f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // return true; 238f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // } 239f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // else if (l > r) 240f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // { 241f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // return false; 242f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // } 243f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // } 244f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 245f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // return false; 246f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // } 247f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project //} 248f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 249f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project //private byte[] getEncoded( 250f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // DEREncodable obj) 251f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project //{ 252f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // ByteArrayOutputStream bOut = new ByteArrayOutputStream(); 253f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // ASN1OutputStream aOut = new ASN1OutputStream(bOut); 254f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 255f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // try 256f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // { 257f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // aOut.writeObject(obj); 258f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // } 259f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // catch (IOException e) 260f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // { 261f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // throw new IllegalArgumentException("cannot encode object added to SET"); 262f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // } 263f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 264f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // return bOut.toByteArray(); 265f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project //} 266f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 267f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project //protected void sort() 268f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project //{ 269f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // if (set.size() > 1) 270f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // { 271f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // boolean swapped = true; 272f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 273f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // while (swapped) 274f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // { 275f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // int index = 0; 276f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // byte[] a = getEncoded((DEREncodable)set.elementAt(0)); 277f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // 278f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // swapped = false; 279f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // 280f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // while (index != set.size() - 1) 281f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // { 282f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // byte[] b = getEncoded((DEREncodable)set.elementAt(index + 1)); 283f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 284f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // if (lessThanOrEqual(a, b)) 285f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // { 286f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // a = b; 287f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // } 288f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // else 289f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // { 290f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // Object o = set.elementAt(index); 291f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 292f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // set.setElementAt(set.elementAt(index + 1), index); 293f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // set.setElementAt(o, index + 1); 294f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 295f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // swapped = true; 296f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // } 297f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 298f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // index++; 299f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // } 300f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // } 301f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // } 302f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project //} 303f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 304f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project //protected void addObject( 305f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // DEREncodable obj) 306f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project //{ 307f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // set.addElement(obj); 308f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project //} 309f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 310f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project //abstract void encode(DEROutputStream out) 311f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // throws IOException; 312f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 313f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project //public String toString() 314f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project //{ 315f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // return set.toString(); 316f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project //} 317f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // END android-removed 318f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project} 319