All Downloads are FREE. Search and download functionalities are using the official Maven repository.

java.com.ionic.sdk.agent.cipher.file.data.FileCryptoDecryptAttributes Maven / Gradle / Ivy

Go to download

The Ionic Java SDK provides an easy-to-use interface to the Ionic Platform.

There is a newer version: 2.9.0
Show newest version
package com.ionic.sdk.agent.cipher.file.data;

import com.ionic.sdk.agent.cipher.data.DecryptAttributes;
import com.ionic.sdk.core.annotation.InternalUseOnly;
import com.ionic.sdk.error.IonicException;
import com.ionic.sdk.error.SdkData;
import com.ionic.sdk.error.SdkError;

/**
 * On an Ionic Machina Tools decrypt operation, this class provides the ability to exchange information with the
 * Machina server about the operation.
 * 

* Request metadata may be sent to the server along with the cryptography key request. This may specify information * about the client making the request. See Set * Request Metadata for more information. *

* The cryptography key used for the decryption might have associated key attributes (fixed and mutable). These are * used to indicate metadata that is associated with the encryption. For example, a 'classification' attribute may * indicate the desired security level of the encrypted data. The Machina key release policy may then be configured * to allow data access only to the devices of designated individuals and groups. This * information is communicated back to the SDK caller in this object. See * Fixed Attributes and * Mutable Attributes for more * information. *

* The usage pattern for this object is to supply a fresh instance to each API call. The Machina Tools SDK will reject * any decrypt() operation that is attempted using a previously used {@link FileCryptoDecryptAttributes}. *

* See Machina Developers for * more information on Machina file encryption. */ public final class FileCryptoDecryptAttributes extends DecryptAttributes { /** * The identifier for the Ionic file cipher family used in the decryption operation. */ private CipherFamily cipherFamily; /** * The identifier for the Ionic file cipher family version used in the decryption operation. */ private String version; /** * Value indicating whether denied page object should be populated if an access denied error is encountered. */ private boolean shouldProvideAccessDeniedPage; /** * The serialized byte stream to be supplied to the caller when a key request is denied. */ private byte[] accessDeniedPage; /** * Constructor. */ public FileCryptoDecryptAttributes() { this.cipherFamily = CipherFamily.FAMILY_UNKNOWN; this.version = ""; this.shouldProvideAccessDeniedPage = false; this.accessDeniedPage = null; } /** * Set the version of the file cipher used during the decryption operation. *

* Ionic SDK clients should not call this function. Any value set prior to the decryption operation will cause * an {@link com.ionic.sdk.error.IonicException} to be thrown by the operation. * * @param version the Ionic file cipher family version used in the decryption operation */ @InternalUseOnly public void setVersion(final String version) { this.version = version; } /** * @return the Ionic file cipher family version used in the decryption operation */ public String getVersion() { return version; } /** * Set the CipherFamily associated with the decryption. *

* Ionic SDK clients should not call this function. Any value set prior to the decryption operation will cause * an {@link com.ionic.sdk.error.IonicException} to be thrown by the operation. * * @param cipherFamily the file family to be used in the decryption operation */ @InternalUseOnly public void setFamily(final CipherFamily cipherFamily) { this.cipherFamily = cipherFamily; } /** * @return the file family to be used in the decryption operation */ public CipherFamily getFamily() { return cipherFamily; } /** * Get whether access denied page object should be populated in the event that an access denied error is * encountered. * * @return access denied page enablement option */ public boolean shouldProvideAccessDeniedPage() { return shouldProvideAccessDeniedPage; } /** * Indicate whether access denied page object should be populated in the event that * an access denied error is encountered. * * @param state access denied page enablement option */ public void setShouldProvideAccessDeniedPage(final boolean state) { shouldProvideAccessDeniedPage = state; } /** * Get the byte vector containing the access denied page for the appropriate document format. * * @return access denied page bytes */ public byte[] getAccessDeniedPageOut() { return (accessDeniedPage == null) ? null : accessDeniedPage.clone(); } /** * Set the byte vector containing the access denied page for the appropriate document format. * * @param accessDeniedPage access denied page bytes */ public void setAccessDeniedPageOut(final byte[] accessDeniedPage) { this.accessDeniedPage = (accessDeniedPage == null) ? null : accessDeniedPage.clone(); } /** * Verify that object is in the expected state prior to the Ionic server key request. *

* The usage pattern for this object is to supply a fresh instance to each SDK cryptography API call. The * Ionic SDK will reject an operation that is attempted using a previously used instance of this class. * * @throws IonicException on expectation failure */ public void validateInput() throws IonicException { final String className = getClass().getName(); SdkData.checkTrue(CipherFamily.FAMILY_UNKNOWN.equals(cipherFamily), SdkError.ISAGENT_INVALIDVALUE, className); SdkData.checkTrue("".equals(version), SdkError.ISAGENT_INVALIDVALUE, className); SdkData.checkTrue(null == getKeyResponse(), SdkError.ISAGENT_INVALIDVALUE, className); SdkData.checkTrue(null == getServerErrorResponse(), SdkError.ISAGENT_INVALIDVALUE, className); } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy