1 package org.bouncycastle.asn1.x509;
4 import java.util.Enumeration;
6 import org.bouncycastle.asn1.*;
8 public class AlgorithmIdentifier
9 implements DEREncodable
11 private DERObjectIdentifier objectId;
12 private DERObject parameters;
13 private boolean parametersDefined = false;
15 public AlgorithmIdentifier(
16 DERObjectIdentifier objectId)
18 this.objectId = objectId;
21 public AlgorithmIdentifier(
22 DERObjectIdentifier objectId,
25 parametersDefined = true;
27 this.objectId = objectId;
28 this.parameters = parameters;
31 public AlgorithmIdentifier(
32 DERConstructedSequence obj)
34 objectId = (DERObjectIdentifier)obj.getObjectAt(0);
36 if (obj.getSize() == 2)
38 parametersDefined = true;
39 parameters = (DERObject)obj.getObjectAt(1);
47 public DERObjectIdentifier getObjectId()
52 public DERObject getParameters()
59 * AlgorithmIdentifier ::= SEQUENCE {
60 * algorithm OBJECT IDENTIFIER,
61 * parameters ANY DEFINED BY algorithm OPTIONAL }
64 public DERObject getDERObject()
66 DERConstructedSequence seq = new DERConstructedSequence();
68 seq.addObject(objectId);
70 if (parametersDefined)
72 seq.addObject(parameters);
78 public boolean equals(
81 if ((o == null) || !(o instanceof AlgorithmIdentifier))
86 AlgorithmIdentifier other = (AlgorithmIdentifier)o;
88 if (!this.getObjectId().equals(other.getObjectId()))
93 if (this.getParameters() == null && other.getParameters() == null)
98 if (this.getParameters() == null || other.getParameters() == null)
103 ByteArrayOutputStream b1Out = new ByteArrayOutputStream();
104 ByteArrayOutputStream b2Out = new ByteArrayOutputStream();
105 DEROutputStream d1Out = new DEROutputStream(b1Out);
106 DEROutputStream d2Out = new DEROutputStream(b2Out);
110 d1Out.writeObject(this.getParameters());
111 d2Out.writeObject(other.getParameters());
113 byte[] b1 = b1Out.toByteArray();
114 byte[] b2 = b2Out.toByteArray();
116 if (b1.length != b2.length)
121 for (int i = 0; i != b1.length; i++)