package org.bouncycastle.dvcs;

import org.bouncycastle.asn1.ASN1Encodable;
import org.bouncycastle.asn1.ASN1OctetString;
import org.bouncycastle.asn1.ASN1Sequence;
import org.bouncycastle.asn1.cms.ContentInfo;
import org.bouncycastle.asn1.cms.SignedData;
import org.bouncycastle.asn1.dvcs.DVCSObjectIdentifiers;
import org.bouncycastle.asn1.dvcs.ServiceType;
import org.bouncycastle.asn1.x509.GeneralName;
import org.bouncycastle.cms.CMSSignedData;

DVCRequest is general request to DVCS (RFC 3029). It represents requests for all types of services. Requests for different services differ in DVCData structure.
/** * DVCRequest is general request to DVCS (RFC 3029). * It represents requests for all types of services. * Requests for different services differ in DVCData structure. */
public class DVCSRequest extends DVCSMessage { private org.bouncycastle.asn1.dvcs.DVCSRequest asn1; private DVCSRequestInfo reqInfo; private DVCSRequestData data;
Constructs DVCRequest from CMS SignedData object.
Params:
  • signedData – the CMS SignedData object containing the request
Throws:
/** * Constructs DVCRequest from CMS SignedData object. * * @param signedData the CMS SignedData object containing the request * @throws DVCSConstructionException */
public DVCSRequest(CMSSignedData signedData) throws DVCSConstructionException { this(SignedData.getInstance(signedData.toASN1Structure().getContent()).getEncapContentInfo()); }
Construct a DVCS Request from a ContentInfo
Params:
  • contentInfo – the contentInfo representing the DVCSRequest
Throws:
/** * Construct a DVCS Request from a ContentInfo * * @param contentInfo the contentInfo representing the DVCSRequest * @throws DVCSConstructionException */
public DVCSRequest(ContentInfo contentInfo) throws DVCSConstructionException { super(contentInfo); if (!DVCSObjectIdentifiers.id_ct_DVCSRequestData.equals(contentInfo.getContentType())) { throw new DVCSConstructionException("ContentInfo not a DVCS Request"); } try { if (contentInfo.getContent().toASN1Primitive() instanceof ASN1Sequence) { this.asn1 = org.bouncycastle.asn1.dvcs.DVCSRequest.getInstance(contentInfo.getContent()); } else { this.asn1 = org.bouncycastle.asn1.dvcs.DVCSRequest.getInstance(ASN1OctetString.getInstance(contentInfo.getContent()).getOctets()); } } catch (Exception e) { throw new DVCSConstructionException("Unable to parse content: " + e.getMessage(), e); } this.reqInfo = new DVCSRequestInfo(asn1.getRequestInformation()); int service = reqInfo.getServiceType(); if (service == ServiceType.CPD.getValue().intValue()) { this.data = new CPDRequestData(asn1.getData()); } else if (service == ServiceType.VSD.getValue().intValue()) { this.data = new VSDRequestData(asn1.getData()); } else if (service == ServiceType.VPKC.getValue().intValue()) { this.data = new VPKCRequestData(asn1.getData()); } else if (service == ServiceType.CCPD.getValue().intValue()) { this.data = new CCPDRequestData(asn1.getData()); } else { throw new DVCSConstructionException("Unknown service type: " + service); } }
Return the ASN.1 DVCSRequest structure making up the body of this request.
Returns:an org.bouncycastle.asn1.dvcs.DVCSRequest object.
/** * Return the ASN.1 DVCSRequest structure making up the body of this request. * * @return an org.bouncycastle.asn1.dvcs.DVCSRequest object. */
public ASN1Encodable getContent() { return asn1; }
Get RequestInformation envelope.
Returns:the request info object.
/** * Get RequestInformation envelope. * * @return the request info object. */
public DVCSRequestInfo getRequestInfo() { return reqInfo; }
Get data of DVCRequest. Depending on type of the request it could be different subclasses of DVCRequestData.
Returns:the request Data object.
/** * Get data of DVCRequest. * Depending on type of the request it could be different subclasses of DVCRequestData. * * @return the request Data object. */
public DVCSRequestData getData() { return data; }
Get the transaction identifier of request.
Returns:the GeneralName representing the Transaction Identifier.
/** * Get the transaction identifier of request. * * @return the GeneralName representing the Transaction Identifier. */
public GeneralName getTransactionIdentifier() { return asn1.getTransactionIdentifier(); } }