
org.spongycastle.asn1.tsp.Accuracy Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of core Show documentation
Show all versions of core Show documentation
Spongy Castle is a package-rename (org.bouncycastle.* to org.spongycastle.*) of Bouncy Castle
intended for the Android platform. Android unfortunately ships with a stripped-down version of
Bouncy Castle, which prevents easy upgrades - Spongy Castle overcomes this and provides a full,
up-to-date version of the Bouncy Castle cryptographic libs.
The newest version!
package org.spongycastle.asn1.tsp;
import org.spongycastle.asn1.ASN1EncodableVector;
import org.spongycastle.asn1.ASN1Integer;
import org.spongycastle.asn1.ASN1Object;
import org.spongycastle.asn1.ASN1Primitive;
import org.spongycastle.asn1.ASN1Sequence;
import org.spongycastle.asn1.ASN1TaggedObject;
import org.spongycastle.asn1.DERSequence;
import org.spongycastle.asn1.DERTaggedObject;
public class Accuracy
extends ASN1Object
{
ASN1Integer seconds;
ASN1Integer millis;
ASN1Integer micros;
// constantes
protected static final int MIN_MILLIS = 1;
protected static final int MAX_MILLIS = 999;
protected static final int MIN_MICROS = 1;
protected static final int MAX_MICROS = 999;
protected Accuracy()
{
}
public Accuracy(
ASN1Integer seconds,
ASN1Integer millis,
ASN1Integer micros)
{
this.seconds = seconds;
//Verifications
if (millis != null
&& (millis.getValue().intValue() < MIN_MILLIS || millis
.getValue().intValue() > MAX_MILLIS))
{
throw new IllegalArgumentException(
"Invalid millis field : not in (1..999)");
}
else
{
this.millis = millis;
}
if (micros != null
&& (micros.getValue().intValue() < MIN_MICROS || micros
.getValue().intValue() > MAX_MICROS))
{
throw new IllegalArgumentException(
"Invalid micros field : not in (1..999)");
}
else
{
this.micros = micros;
}
}
private Accuracy(ASN1Sequence seq)
{
seconds = null;
millis = null;
micros = null;
for (int i = 0; i < seq.size(); i++)
{
// seconds
if (seq.getObjectAt(i) instanceof ASN1Integer)
{
seconds = (ASN1Integer) seq.getObjectAt(i);
}
else if (seq.getObjectAt(i) instanceof ASN1TaggedObject)
{
ASN1TaggedObject extra = (ASN1TaggedObject)seq.getObjectAt(i);
switch (extra.getTagNo())
{
case 0:
millis = ASN1Integer.getInstance(extra, false);
if (millis.getValue().intValue() < MIN_MILLIS
|| millis.getValue().intValue() > MAX_MILLIS)
{
throw new IllegalArgumentException(
"Invalid millis field : not in (1..999).");
}
break;
case 1:
micros = ASN1Integer.getInstance(extra, false);
if (micros.getValue().intValue() < MIN_MICROS
|| micros.getValue().intValue() > MAX_MICROS)
{
throw new IllegalArgumentException(
"Invalid micros field : not in (1..999).");
}
break;
default:
throw new IllegalArgumentException("Invalig tag number");
}
}
}
}
public static Accuracy getInstance(Object o)
{
if (o instanceof Accuracy)
{
return (Accuracy) o;
}
if (o != null)
{
return new Accuracy(ASN1Sequence.getInstance(o));
}
return null;
}
public ASN1Integer getSeconds()
{
return seconds;
}
public ASN1Integer getMillis()
{
return millis;
}
public ASN1Integer getMicros()
{
return micros;
}
/**
*
* Accuracy ::= SEQUENCE {
* seconds INTEGER OPTIONAL,
* millis [0] INTEGER (1..999) OPTIONAL,
* micros [1] INTEGER (1..999) OPTIONAL
* }
*
*/
public ASN1Primitive toASN1Primitive()
{
ASN1EncodableVector v = new ASN1EncodableVector();
if (seconds != null)
{
v.add(seconds);
}
if (millis != null)
{
v.add(new DERTaggedObject(false, 0, millis));
}
if (micros != null)
{
v.add(new DERTaggedObject(false, 1, micros));
}
return new DERSequence(v);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy