au.gov.nehta.vendorlibrary.clinicalpackage.util
Class PackagingUtility

java.lang.Object
  extended by au.gov.nehta.vendorlibrary.clinicalpackage.util.PackagingUtility

public final class PackagingUtility
extends java.lang.Object

Provides various utility methods required to create and extract a package.


Method Summary
static byte[] createZip(SubmissionSet submissionSet)
          Creates ZIP file byte array.
static SubmissionSet extractPackage(java.lang.String path)
          Extract a package from a collection of fully qualified file names and file content.
static java.util.Map<java.lang.String,byte[]> extractZipEntries(java.lang.String path)
          Read ZIP entries and file content into memory.
static byte[] generateSignature(byte[] fileContent, java.security.cert.X509Certificate signingCert, java.security.PrivateKey privateKey, java.lang.String approverId, au.net.electronichealth.ns.cdapackage.xsd.esignature._2012.PersonNameType approverName)
          Creates a signature of the package's root CDA document.
static void verifyPackage(SubmissionSet submissionSet, au.gov.nehta.xsp.CertificateVerifier verifier)
          Verifies a package, comparing root hash and certificate verification.
static void writeZip(SubmissionSet submissionSet, java.lang.String outputFilePath)
          Helper method to output a SubmissionSet ZIP file to a specific file path.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Method Detail

createZip

public static byte[] createZip(SubmissionSet submissionSet)
                        throws java.io.IOException
Creates ZIP file byte array.

Parameters:
submissionSet - Populated Submission set.
Returns:
byte array
Throws:
java.io.IOException - Thrown if problem occurs creating ZIP file.

writeZip

public static void writeZip(SubmissionSet submissionSet,
                            java.lang.String outputFilePath)
                     throws java.io.IOException
Helper method to output a SubmissionSet ZIP file to a specific file path.

Parameters:
submissionSet - SubmissionSet
outputFilePath - Fully qualified file path to create the output ZIP file.
Throws:
java.io.IOException - Thrown if I/O operations fail.

extractPackage

public static SubmissionSet extractPackage(java.lang.String path)
                                    throws java.io.IOException
Extract a package from a collection of fully qualified file names and file content.

Parameters:
path - Output path.
Returns:
Populated SubmissionSet or null.
Throws:
java.io.IOException - Thrown if package cannot be extracted.

extractZipEntries

public static java.util.Map<java.lang.String,byte[]> extractZipEntries(java.lang.String path)
                                                                throws java.io.IOException
Read ZIP entries and file content into memory.

Parameters:
path - Location of the package ZIP file.
Returns:
Map containing list of matching file names and file content byte arrays, or null.
Throws:
java.io.IOException - Thrown if ZIP I/O operations fail.

generateSignature

public static byte[] generateSignature(byte[] fileContent,
                                       java.security.cert.X509Certificate signingCert,
                                       java.security.PrivateKey privateKey,
                                       java.lang.String approverId,
                                       au.net.electronichealth.ns.cdapackage.xsd.esignature._2012.PersonNameType approverName)
                                throws SignatureGenerationException
Creates a signature of the package's root CDA document.

Parameters:
fileContent - Root document member file content to sign.
signingCert - Signing certificate.
privateKey - Private key used to sign payload.
approverId - Approver ID URI.
approverName - Aprrover name object.
Returns:
Byte array of signed payload container XML.
Throws:
SignatureGenerationException - Thrown when signature generation fails.

verifyPackage

public static void verifyPackage(SubmissionSet submissionSet,
                                 au.gov.nehta.xsp.CertificateVerifier verifier)
                          throws SignatureGenerationException,
                                 PackageExtractionException,
                                 VerificationException
Verifies a package, comparing root hash and certificate verification.

Parameters:
submissionSet - Extracted package.
verifier - Optional CertificateVerifier implementation.
Throws:
SignatureGenerationException - Thrown if signature generation fails.
PackageExtractionException - Thrown if signature extraction fails.
VerificationException - Thrown if package verification fails.