14a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projectpackage org.bouncycastle.asn1.x509; 24a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 34a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projectimport org.bouncycastle.asn1.ASN1Choice; 44a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projectimport org.bouncycastle.asn1.ASN1Encodable; 54a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projectimport org.bouncycastle.asn1.ASN1Object; 64a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projectimport org.bouncycastle.asn1.ASN1Primitive; 74a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projectimport org.bouncycastle.asn1.ASN1Set; 84a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projectimport org.bouncycastle.asn1.ASN1TaggedObject; 94a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projectimport org.bouncycastle.asn1.DERTaggedObject; 104a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 114a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/** 124a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * The DistributionPointName object. 134a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * <pre> 144a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * DistributionPointName ::= CHOICE { 154a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * fullName [0] GeneralNames, 164a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * nameRelativeToCRLIssuer [1] RDN 174a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * } 184a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * </pre> 194a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project */ 204a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projectpublic class DistributionPointName 214a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project extends ASN1Object 224a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project implements ASN1Choice 234a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project{ 244a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project ASN1Encodable name; 254a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project int type; 264a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 274a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project public static final int FULL_NAME = 0; 284a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project public static final int NAME_RELATIVE_TO_CRL_ISSUER = 1; 294a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 304a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project public static DistributionPointName getInstance( 314a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project ASN1TaggedObject obj, 324a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project boolean explicit) 334a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project { 344a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return getInstance(ASN1TaggedObject.getInstance(obj, true)); 354a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project } 364a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 374a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project public static DistributionPointName getInstance( 384a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project Object obj) 394a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project { 404a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project if (obj == null || obj instanceof DistributionPointName) 414a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project { 424a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return (DistributionPointName)obj; 434a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project } 444a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project else if (obj instanceof ASN1TaggedObject) 454a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project { 464a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return new DistributionPointName((ASN1TaggedObject)obj); 474a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project } 484a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 494a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project throw new IllegalArgumentException("unknown object in factory: " + obj.getClass().getName()); 504a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project } 514a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 524a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project public DistributionPointName( 534a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project int type, 544a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project ASN1Encodable name) 554a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project { 564a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project this.type = type; 574a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project this.name = name; 584a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project } 594a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 604a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project public DistributionPointName( 614a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project GeneralNames name) 624a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project { 634a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project this(FULL_NAME, name); 644a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project } 654a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 664a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project /** 674a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * Return the tag number applying to the underlying choice. 684a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * 694a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @return the tag number for this point name. 704a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project */ 714a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project public int getType() 724a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project { 734a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return this.type; 744a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project } 754a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 764a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project /** 774a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * Return the tagged object inside the distribution point name. 784a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * 794a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @return the underlying choice item. 804a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project */ 814a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project public ASN1Encodable getName() 824a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project { 834a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return (ASN1Encodable)name; 844a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project } 854a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 864a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project public DistributionPointName( 874a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project ASN1TaggedObject obj) 88 { 89 this.type = obj.getTagNo(); 90 91 if (type == 0) 92 { 93 this.name = GeneralNames.getInstance(obj, false); 94 } 95 else 96 { 97 this.name = ASN1Set.getInstance(obj, false); 98 } 99 } 100 101 public ASN1Primitive toASN1Primitive() 102 { 103 return new DERTaggedObject(false, type, name); 104 } 105 106 public String toString() 107 { 108 String sep = System.getProperty("line.separator"); 109 StringBuffer buf = new StringBuffer(); 110 buf.append("DistributionPointName: ["); 111 buf.append(sep); 112 if (type == FULL_NAME) 113 { 114 appendObject(buf, sep, "fullName", name.toString()); 115 } 116 else 117 { 118 appendObject(buf, sep, "nameRelativeToCRLIssuer", name.toString()); 119 } 120 buf.append("]"); 121 buf.append(sep); 122 return buf.toString(); 123 } 124 125 private void appendObject(StringBuffer buf, String sep, String name, String value) 126 { 127 String indent = " "; 128 129 buf.append(indent); 130 buf.append(name); 131 buf.append(":"); 132 buf.append(sep); 133 buf.append(indent); 134 buf.append(indent); 135 buf.append(value); 136 buf.append(sep); 137 } 138} 139