blob: 68be7775990aa2cdf8ed019e6c2b7386339e13ee [file] [log] [blame]
package org.bouncycastle.dvcs;
import java.io.IOException;
import org.bouncycastle.asn1.ASN1Encoding;
import org.bouncycastle.cms.CMSException;
import org.bouncycastle.cms.CMSProcessableByteArray;
import org.bouncycastle.cms.CMSSignedData;
import org.bouncycastle.cms.CMSSignedDataGenerator;
public class SignedDVCSMessageGenerator
{
private final CMSSignedDataGenerator signedDataGen;
public SignedDVCSMessageGenerator(CMSSignedDataGenerator signedDataGen)
{
this.signedDataGen = signedDataGen;
}
/**
* Creates a CMSSignedData object containing the passed in DVCSMessage
*
* @param message the request to be signed.
* @return an encapsulating SignedData object.
* @throws DVCSException in the event of failure to encode the request or sign it.
*/
public CMSSignedData build(DVCSMessage message)
throws DVCSException
{
try
{
byte[] encapsulatedData = message.getContent().toASN1Primitive().getEncoded(ASN1Encoding.DER);
return signedDataGen.generate(new CMSProcessableByteArray(message.getContentType(), encapsulatedData), true);
}
catch (CMSException e)
{
throw new DVCSException("Could not sign DVCS request", e);
}
catch (IOException e)
{
throw new DVCSException("Could not encode DVCS request", e);
}
}
}