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

org.bouncycastle.asn1.cms.ecc.MQVuserKeyingMaterial Maven / Gradle / Ivy

Go to download

The Bouncy Castle Java APIs for ASN.1 extension and utility APIs used to support bcpkix and bctls with the BC FIPS provider. The APIs may also be used with other providers although if being used in a FIPS context it is the responsibility of the user to ensure that any other providers used are FIPS certified and used appropriately.

There is a newer version: 2.0.3
Show newest version
package org.bouncycastle.asn1.cms.ecc;

import org.bouncycastle.asn1.ASN1EncodableVector;
import org.bouncycastle.asn1.ASN1Object;
import org.bouncycastle.asn1.ASN1OctetString;
import org.bouncycastle.asn1.ASN1Primitive;
import org.bouncycastle.asn1.ASN1Sequence;
import org.bouncycastle.asn1.ASN1TaggedObject;
import org.bouncycastle.asn1.DERSequence;
import org.bouncycastle.asn1.DERTaggedObject;
import org.bouncycastle.asn1.cms.OriginatorPublicKey;

/**
 * RFC 5753/3278: MQVuserKeyingMaterial object.
 * 
 * MQVuserKeyingMaterial ::= SEQUENCE {
 *   ephemeralPublicKey OriginatorPublicKey,
 *   addedukm [0] EXPLICIT UserKeyingMaterial OPTIONAL  }
 * 
*/ public class MQVuserKeyingMaterial extends ASN1Object { private OriginatorPublicKey ephemeralPublicKey; private ASN1OctetString addedukm; public MQVuserKeyingMaterial( OriginatorPublicKey ephemeralPublicKey, ASN1OctetString addedukm) { if (ephemeralPublicKey == null) { throw new IllegalArgumentException("Ephemeral public key cannot be null"); } this.ephemeralPublicKey = ephemeralPublicKey; this.addedukm = addedukm; } private MQVuserKeyingMaterial( ASN1Sequence seq) { if (seq.size() != 1 && seq.size() != 2) { throw new IllegalArgumentException("Sequence has incorrect number of elements"); } this.ephemeralPublicKey = OriginatorPublicKey.getInstance( seq.getObjectAt(0)); if (seq.size() > 1) { this.addedukm = ASN1OctetString.getInstance( (ASN1TaggedObject)seq.getObjectAt(1), true); } } /** * Return an MQVuserKeyingMaterial object from a tagged object. * * @param obj the tagged object holding the object we want. * @param explicit true if the object is meant to be explicitly * tagged false otherwise. * @throws IllegalArgumentException if the object held by the * tagged object cannot be converted. */ public static MQVuserKeyingMaterial getInstance( ASN1TaggedObject obj, boolean explicit) { return getInstance(ASN1Sequence.getInstance(obj, explicit)); } /** * Return an MQVuserKeyingMaterial object from the given object. *

* Accepted inputs: *

    *
  • null → null *
  • {@link MQVuserKeyingMaterial} object *
  • {@link org.bouncycastle.asn1.ASN1Sequence ASN1Sequence} with MQVuserKeyingMaterial inside it. *
* * @param obj the object we want converted. * @throws IllegalArgumentException if the object cannot be converted. */ public static MQVuserKeyingMaterial getInstance( Object obj) { if (obj instanceof MQVuserKeyingMaterial) { return (MQVuserKeyingMaterial)obj; } else if (obj != null) { return new MQVuserKeyingMaterial(ASN1Sequence.getInstance(obj)); } return null; } public OriginatorPublicKey getEphemeralPublicKey() { return ephemeralPublicKey; } public ASN1OctetString getAddedukm() { return addedukm; } /** * Produce an object suitable for an ASN1OutputStream. */ public ASN1Primitive toASN1Primitive() { ASN1EncodableVector v = new ASN1EncodableVector(2); v.add(ephemeralPublicKey); if (addedukm != null) { v.add(new DERTaggedObject(true, 0, addedukm)); } return new DERSequence(v); } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy