All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.bouncycastle.oer.its.VerificationKeyIndicator Maven / Gradle / Ivy

package org.bouncycastle.oer.its;

import org.bouncycastle.asn1.ASN1Choice;
import org.bouncycastle.asn1.ASN1Encodable;
import org.bouncycastle.asn1.ASN1Object;
import org.bouncycastle.asn1.ASN1Primitive;
import org.bouncycastle.asn1.ASN1TaggedObject;
import org.bouncycastle.asn1.DEROctetString;
import org.bouncycastle.asn1.DERTaggedObject;

/**
 * 
 *     VerificationKeyIndicator ::= CHOICE {
 *         verificationKey PublicVerificationKey,
 *         reconstructionValue EccP256CurvePoint,
 *         ...
 *     }
 * 
*/ public class VerificationKeyIndicator extends ASN1Object implements ASN1Choice { public static final int verificationKey = 0; public static final int reconstructionValue = 1; public static final int extension = 2; private final int choice; private final ASN1Encodable object; public VerificationKeyIndicator(int choice, ASN1Encodable object) { this.choice = choice; this.object = object; } public static VerificationKeyIndicator getInstance(Object objectAt) { if (objectAt instanceof VerificationKeyIndicator) { return (VerificationKeyIndicator)objectAt; } ASN1TaggedObject taggedObject = ASN1TaggedObject.getInstance(objectAt); switch (taggedObject.getTagNo()) { case verificationKey: return new Builder() .setChoice(verificationKey) .setObject(PublicVerificationKey.getInstance(taggedObject.getObject())) .createVerificationKeyIndicator(); case reconstructionValue: return new Builder() .setChoice(reconstructionValue) .setObject(EccP256CurvePoint.getInstance(taggedObject.getObject())) .createVerificationKeyIndicator(); case extension: return new VerificationKeyIndicator(extension, DEROctetString.getInstance(taggedObject.getLoadedObject()) ); default: throw new IllegalArgumentException("unhandled tag " + taggedObject.getTagNo()); } } public static Builder builder() { return new Builder(); } public int getChoice() { return choice; } public ASN1Encodable getObject() { return object; } public ASN1Primitive toASN1Primitive() { return new DERTaggedObject(choice, object); } public static class Builder { private int choice; private ASN1Encodable object; public Builder setChoice(int choice) { this.choice = choice; return this; } public Builder setObject(ASN1Encodable object) { this.object = object; return this; } public Builder publicVerificationKey(PublicVerificationKey publicVerificationKey) { this.object = publicVerificationKey; this.choice = verificationKey; return this; } public Builder reconstructionValue(EccP256CurvePoint curvePoint) { this.object = curvePoint; this.choice = reconstructionValue; return this; } public Builder extension(byte[] value) { this.object = new DEROctetString(value); this.choice = extension; return this; } public VerificationKeyIndicator createVerificationKeyIndicator() { return new VerificationKeyIndicator(choice, object); } } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy