1 package org.bouncycastle.dvcs; 2 3 import java.io.IOException; 4 5 import org.bouncycastle.asn1.ASN1Encoding; 6 import org.bouncycastle.cms.CMSException; 7 import org.bouncycastle.cms.CMSProcessableByteArray; 8 import org.bouncycastle.cms.CMSSignedData; 9 import org.bouncycastle.cms.CMSSignedDataGenerator; 10 11 public class SignedDVCSMessageGenerator 12 { 13 private final CMSSignedDataGenerator signedDataGen; 14 SignedDVCSMessageGenerator(CMSSignedDataGenerator signedDataGen)15 public SignedDVCSMessageGenerator(CMSSignedDataGenerator signedDataGen) 16 { 17 this.signedDataGen = signedDataGen; 18 } 19 20 /** 21 * Creates a CMSSignedData object containing the passed in DVCSMessage 22 * 23 * @param message the request to be signed. 24 * @return an encapsulating SignedData object. 25 * @throws DVCSException in the event of failure to encode the request or sign it. 26 */ build(DVCSMessage message)27 public CMSSignedData build(DVCSMessage message) 28 throws DVCSException 29 { 30 try 31 { 32 byte[] encapsulatedData = message.getContent().toASN1Primitive().getEncoded(ASN1Encoding.DER); 33 34 return signedDataGen.generate(new CMSProcessableByteArray(message.getContentType(), encapsulatedData), true); 35 } 36 catch (CMSException e) 37 { 38 throw new DVCSException("Could not sign DVCS request", e); 39 } 40 catch (IOException e) 41 { 42 throw new DVCSException("Could not encode DVCS request", e); 43 } 44 } 45 } 46