16e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrompackage org.bouncycastle.asn1.x500; 26e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom 36e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstromimport java.util.Vector; 46e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom 56e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstromimport org.bouncycastle.asn1.ASN1Encodable; 66e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstromimport org.bouncycastle.asn1.ASN1ObjectIdentifier; 770c8287138e69a98c2f950036f9f703ee37228c8Brian Carlstromimport org.bouncycastle.asn1.x500.style.BCStyle; 86e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom 96e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrompublic class X500NameBuilder 106e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom{ 116e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom private X500NameStyle template; 126e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom private Vector rdns = new Vector(); 136e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom 1470c8287138e69a98c2f950036f9f703ee37228c8Brian Carlstrom public X500NameBuilder() 1570c8287138e69a98c2f950036f9f703ee37228c8Brian Carlstrom { 1670c8287138e69a98c2f950036f9f703ee37228c8Brian Carlstrom this(BCStyle.INSTANCE); 1770c8287138e69a98c2f950036f9f703ee37228c8Brian Carlstrom } 1870c8287138e69a98c2f950036f9f703ee37228c8Brian Carlstrom 196e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom public X500NameBuilder(X500NameStyle template) 206e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom { 216e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom this.template = template; 226e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom } 236e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom 246e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom public X500NameBuilder addRDN(ASN1ObjectIdentifier oid, String value) 256e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom { 266e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom this.addRDN(oid, template.stringToValue(oid, value)); 276e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom 286e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom return this; 296e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom } 306e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom 316e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom public X500NameBuilder addRDN(ASN1ObjectIdentifier oid, ASN1Encodable value) 326e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom { 336e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom rdns.addElement(new RDN(oid, value)); 346e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom 356e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom return this; 366e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom } 376e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom 386e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom public X500NameBuilder addRDN(AttributeTypeAndValue attrTAndV) 396e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom { 406e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom rdns.addElement(new RDN(attrTAndV)); 416e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom 426e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom return this; 436e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom } 446e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom 456e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom public X500NameBuilder addMultiValuedRDN(ASN1ObjectIdentifier[] oids, String[] values) 466e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom { 476e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom ASN1Encodable[] vals = new ASN1Encodable[values.length]; 486e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom 496e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom for (int i = 0; i != vals.length; i++) 506e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom { 516e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom vals[i] = template.stringToValue(oids[i], values[i]); 526e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom } 536e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom 546e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom return addMultiValuedRDN(oids, vals); 556e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom } 566e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom 576e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom public X500NameBuilder addMultiValuedRDN(ASN1ObjectIdentifier[] oids, ASN1Encodable[] values) 586e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom { 596e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom AttributeTypeAndValue[] avs = new AttributeTypeAndValue[oids.length]; 606e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom 616e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom for (int i = 0; i != oids.length; i++) 626e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom { 636e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom avs[i] = new AttributeTypeAndValue(oids[i], values[i]); 646e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom } 656e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom 666e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom return addMultiValuedRDN(avs); 676e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom } 686e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom 696e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom public X500NameBuilder addMultiValuedRDN(AttributeTypeAndValue[] attrTAndVs) 706e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom { 716e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom rdns.addElement(new RDN(attrTAndVs)); 726e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom 736e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom return this; 746e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom } 756e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom 766e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom public X500Name build() 776e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom { 786e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom RDN[] vals = new RDN[rdns.size()]; 796e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom 806e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom for (int i = 0; i != vals.length; i++) 816e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom { 826e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom vals[i] = (RDN)rdns.elementAt(i); 836e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom } 846e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom 856e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom return new X500Name(template, vals); 866e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom } 876e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom} 88