The following code demonstrates how to seal a file using the seal
method. The content to seal can be provided as any type of java.io.InputStream
; this example uses a file input stream. Similarly, the sealed content can be written out to any output stream; this example writes the sealed content as a file whose file name is derived from the unsealed file name. When a file is sealed, a Classification
must be specified. In this sample the file is sealed using the context classification system, specifying a context with a known UUID value and a fixed item code value.
import static oracle.irm.engine.classifications.context.ContextConstants.CONTEXT_CLASSIFICATION_SYSTEM; import static oracle.irm.engine.classifications.context.ContextCookieFactory.createContextCookie; import static oracle.irm.engine.classifications.context.ContextFactory.createContext; import static oracle.irm.engine.classifications.item.ItemCodeFactory.createItemCode; import static oracle.irm.engine.content.sealing.SealingOperationsInstance.seal; import static oracle.irm.engine.content.sealing.SealingOptionsFactory.createSealingOptions; import static oracle.irm.engine.content.source.FileSourceFactory.createFileSource; import static oracle.irm.engine.content.type.ContentTypeOperationsInstance.getSealedFileName; import static oracle.irm.engine.core.classification.ClassificationFactory.createClassification; import static oracle.irm.engine.core.general.LabelCollectionFactory.EMPTY_LABELS; import java.io.FileOutputStream; import java.net.Authenticator; import java.net.PasswordAuthentication; import java.net.URI; import java.util.Date; import java.util.UUID; import oracle.irm.engine.classifications.context.Context; import oracle.irm.engine.classifications.context.ContextCookie; import oracle.irm.engine.classifications.item.ItemCode; import oracle.irm.engine.content.sealing.SealingOptions; import oracle.irm.engine.content.source.FileSource; import oracle.irm.engine.core.classification.Classification; public class SealFile { public static void main(String[] args) throws Exception { // The user name and password are provided on the command line. In a production // system these details should be provided in a more secure manner, such // as prompting from the console, or reading from a secure source. final String username = args[0]; final String password = args[1]; // Configure an authenticator to provide the credentials for any network access Authenticator.setDefault(new Authenticator() { @Override protected PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication(username, password.toCharArray()); } }); // Provide an explicit item code for the document ItemCode itemCode = createItemCode("sample document"); // Context UUID is fixed for sample code Context context = createContext(UUID.fromString("46f910d9-dd30-476e-b060-4d01f88f8b05")); // Context cookie specifying the context and the item code ContextCookie cookie = createContextCookie( context, itemCode); // The server address e.g. https://irm.example.com/irm_desktop URI serverURI = URI.create(args[2]); // Create the classification details used in the sealing options Classification classification = createClassification( "46f910d9-dd30-476e-b060-4d01f88f8b05", CONTEXT_CLASSIFICATION_SYSTEM, null, // automatically fill in key set serverURI, new Date(), EMPTY_LABELS, // automatically fill in labels cookie); // Create the sealing options SealingOptions sealingOptions = createSealingOptions(classification); // Create a file source from the file name String unsealedFilename = args[3]; FileSource fileSource = createFileSource(unsealedFilename); // Get the sealed equivalent of the unsealed filename String sealedFilename = getSealedFileName(unsealedFilename); // Write the sealed stream out to a file FileOutputStream sealedOutputStream = new FileOutputStream(sealedFilename); // Seal the file seal(fileSource, sealedOutputStream, sealingOptions); // Close the streams sealedOutputStream.close(); } }