package org.bouncycastle.asn1.bc;
import java.math.BigInteger;
import java.util.Date;
import org.bouncycastle.asn1.ASN1EncodableVector;
import org.bouncycastle.asn1.ASN1GeneralizedTime;
import org.bouncycastle.asn1.ASN1Integer;
import org.bouncycastle.asn1.ASN1Object;
import org.bouncycastle.asn1.ASN1OctetString;
import org.bouncycastle.asn1.ASN1Primitive;
import org.bouncycastle.asn1.ASN1Sequence;
import org.bouncycastle.asn1.DERGeneralizedTime;
import org.bouncycastle.asn1.DEROctetString;
import org.bouncycastle.asn1.DERSequence;
import org.bouncycastle.asn1.DERUTF8String;
import org.bouncycastle.util.Arrays;
ObjectData ::= SEQUENCE {
type INTEGER,
identifier UTF8String,
creationDate GeneralizedTime,
lastModifiedDate GeneralizedTime,
data OCTET STRING,
comment UTF8String OPTIONAL
}
/**
* <pre>
* ObjectData ::= SEQUENCE {
* type INTEGER,
* identifier UTF8String,
* creationDate GeneralizedTime,
* lastModifiedDate GeneralizedTime,
* data OCTET STRING,
* comment UTF8String OPTIONAL
* }
* </pre>
*/
public class ObjectData
extends ASN1Object
{
private final BigInteger type;
private final String identifier;
private final ASN1GeneralizedTime creationDate;
private final ASN1GeneralizedTime lastModifiedDate;
private final ASN1OctetString data;
private final String comment;
private ObjectData(ASN1Sequence seq)
{
this.type = ASN1Integer.getInstance(seq.getObjectAt(0)).getValue();
this.identifier = DERUTF8String.getInstance(seq.getObjectAt(1)).getString();
this.creationDate = ASN1GeneralizedTime.getInstance(seq.getObjectAt(2));
this.lastModifiedDate = ASN1GeneralizedTime.getInstance(seq.getObjectAt(3));
this.data = ASN1OctetString.getInstance(seq.getObjectAt(4));
this.comment = (seq.size() == 6) ? DERUTF8String.getInstance(seq.getObjectAt(5)).getString() : null;
}
public ObjectData(BigInteger type, String identifier, Date creationDate, Date lastModifiedDate, byte[] data, String comment)
{
this.type = type;
this.identifier = identifier;
this.creationDate = new DERGeneralizedTime(creationDate);
this.lastModifiedDate = new DERGeneralizedTime(lastModifiedDate);
this.data = new DEROctetString(Arrays.clone(data));
this.comment = comment;
}
public static ObjectData getInstance(
Object obj)
{
if (obj instanceof ObjectData)
{
return (ObjectData)obj;
}
else if (obj != null)
{
return new ObjectData(ASN1Sequence.getInstance(obj));
}
return null;
}
public String getComment()
{
return comment;
}
public ASN1GeneralizedTime getCreationDate()
{
return creationDate;
}
public byte[] getData()
{
return Arrays.clone(data.getOctets());
}
public String getIdentifier()
{
return identifier;
}
public ASN1GeneralizedTime getLastModifiedDate()
{
return lastModifiedDate;
}
public BigInteger getType()
{
return type;
}
public ASN1Primitive toASN1Primitive()
{
ASN1EncodableVector v = new ASN1EncodableVector();
v.add(new ASN1Integer(type));
v.add(new DERUTF8String(identifier));
v.add(creationDate);
v.add(lastModifiedDate);
v.add(data);
if (comment != null)
{
v.add(new DERUTF8String(comment));
}
return new DERSequence(v);
}
}