1e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrompackage org.bouncycastle.asn1.cms; 2b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam 3b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallamimport org.bouncycastle.asn1.ASN1Encodable; 4b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallamimport org.bouncycastle.asn1.ASN1EncodableVector; 54c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstromimport org.bouncycastle.asn1.ASN1Object; 66e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstromimport org.bouncycastle.asn1.ASN1ObjectIdentifier; 74c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstromimport org.bouncycastle.asn1.ASN1Primitive; 8b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallamimport org.bouncycastle.asn1.ASN1Sequence; 9b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallamimport org.bouncycastle.asn1.ASN1Set; 10e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstromimport org.bouncycastle.asn1.DERObjectIdentifier; 11b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallamimport org.bouncycastle.asn1.DERSequence; 12b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam 13b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallampublic class Attribute 144c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom extends ASN1Object 15b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam{ 164c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom private ASN1ObjectIdentifier attrType; 17b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam private ASN1Set attrValues; 18b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam 19b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam /** 20b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam * return an Attribute object from the given object. 21b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam * 22b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam * @param o the object we want converted. 23b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam * @exception IllegalArgumentException if the object cannot be converted. 24b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam */ 25b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam public static Attribute getInstance( 26b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam Object o) 27b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam { 284c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom if (o instanceof Attribute) 29b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam { 30b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam return (Attribute)o; 31b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam } 32b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam 334c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom if (o != null) 34b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam { 354c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom return new Attribute(ASN1Sequence.getInstance(o)); 36b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam } 37b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam 384c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom return null; 39b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam } 40b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam 414c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom private Attribute( 42b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam ASN1Sequence seq) 43b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam { 44e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom attrType = (ASN1ObjectIdentifier)seq.getObjectAt(0); 45e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom attrValues = (ASN1Set)seq.getObjectAt(1); 46e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom } 47b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam 48e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom /** 49e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom * @deprecated use ASN1ObjectIdentifier 50e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom */ 51e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom public Attribute( 52e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom DERObjectIdentifier attrType, 53e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom ASN1Set attrValues) 54e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom { 55e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom this.attrType = new ASN1ObjectIdentifier(attrType.getId()); 56e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom this.attrValues = attrValues; 57b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam } 58b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam 59b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam public Attribute( 604c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom ASN1ObjectIdentifier attrType, 61b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam ASN1Set attrValues) 62b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam { 63b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam this.attrType = attrType; 64b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam this.attrValues = attrValues; 65b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam } 66b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam 676e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom public ASN1ObjectIdentifier getAttrType() 68b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam { 69e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom return attrType; 70b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam } 71e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom 72e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom public ASN1Set getAttrValues() 736e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom { 74e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom return attrValues; 756e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom } 766e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom 77e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom public ASN1Encodable[] getAttributeValues() 78b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam { 79e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom return attrValues.toArray(); 80b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam } 81b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam 82b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam /** 83b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam * Produce an object suitable for an ASN1OutputStream. 84b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam * <pre> 85b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam * Attribute ::= SEQUENCE { 86b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam * attrType OBJECT IDENTIFIER, 87b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam * attrValues SET OF AttributeValue 88b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam * } 89b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam * </pre> 90b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam */ 914c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom public ASN1Primitive toASN1Primitive() 92b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam { 93b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam ASN1EncodableVector v = new ASN1EncodableVector(); 94b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam 95b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam v.add(attrType); 96b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam v.add(attrValues); 97b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam 98b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam return new DERSequence(v); 99b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam } 100b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam} 101