Skip to content

Commit

Permalink
renaming provider to handler
Browse files Browse the repository at this point in the history
  • Loading branch information
gbbafna committed Aug 29, 2023
1 parent bc25387 commit 75f9881
Show file tree
Hide file tree
Showing 10 changed files with 71 additions and 71 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
* T - Encryption Metadata
* U - Parsed Encryption Metadata
*/
public interface CryptoProvider<T, U> {
public interface CryptoHandler<T, U> {

/**
* To initialise or create a new crypto metadata to be used in encryption. This is needed to set the context before
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@

package org.opensearch.encryption;

import org.opensearch.common.crypto.CryptoProvider;
import org.opensearch.common.crypto.CryptoHandler;
import org.opensearch.common.util.concurrent.RefCounted;

/**
Expand All @@ -29,5 +29,5 @@ public interface CryptoManager<T, U> extends RefCounted {
/**
* @return Crypto provider for encrypting or decrypting raw content.
*/
CryptoProvider<T, U> getCryptoProvider();
CryptoHandler<T, U> getCryptoProvider();
}
Original file line number Diff line number Diff line change
Expand Up @@ -11,11 +11,11 @@
import com.amazonaws.encryptionsdk.CryptoAlgorithm;
import com.amazonaws.encryptionsdk.caching.CachingCryptoMaterialsManager;
import com.amazonaws.encryptionsdk.caching.LocalCryptoMaterialsCache;
import org.opensearch.common.crypto.CryptoProvider;
import org.opensearch.common.crypto.CryptoHandler;
import org.opensearch.common.crypto.MasterKeyProvider;
import org.opensearch.common.unit.TimeValue;
import org.opensearch.common.util.concurrent.AbstractRefCounted;
import org.opensearch.encryption.frame.FrameCryptoProvider;
import org.opensearch.encryption.frame.FrameCryptoHandler;
import org.opensearch.encryption.frame.core.AwsCrypto;
import org.opensearch.encryption.keyprovider.CryptoMasterKey;

Expand Down Expand Up @@ -61,24 +61,24 @@ private String validateAndGetAlgorithmId(String algorithm) {
keyProviderName,
validateAndGetAlgorithmId(algorithm)
);
CryptoProvider<?, ?> cryptoProvider = createCryptoProvider(algorithm, materialsManager, keyProvider);
return createCryptoManager(cryptoProvider, keyProviderType, keyProviderName, onClose);
CryptoHandler<?, ?> cryptoHandler = createCryptoProvider(algorithm, materialsManager, keyProvider);
return createCryptoManager(cryptoHandler, keyProviderType, keyProviderName, onClose);
}

// package private for tests
CryptoProvider<? , ?> createCryptoProvider(
CryptoHandler<? , ?> createCryptoProvider(
String algorithm,
CachingCryptoMaterialsManager materialsManager,
MasterKeyProvider masterKeyProvider
) {
switch (algorithm) {
case "ALG_AES_256_GCM_HKDF_SHA512_COMMIT_KEY":
return new FrameCryptoProvider(
return new FrameCryptoHandler(
new AwsCrypto(materialsManager, CryptoAlgorithm.ALG_AES_256_GCM_HKDF_SHA512_COMMIT_KEY),
masterKeyProvider.getEncryptionContext()
);
case "ALG_AES_256_GCM_HKDF_SHA512_COMMIT_KEY_ECDSA_P384":
return new FrameCryptoProvider(
return new FrameCryptoHandler(
new AwsCrypto(materialsManager, CryptoAlgorithm.ALG_AES_256_GCM_HKDF_SHA512_COMMIT_KEY_ECDSA_P384),
masterKeyProvider.getEncryptionContext()
);
Expand All @@ -103,7 +103,7 @@ CachingCryptoMaterialsManager createMaterialsManager(MasterKeyProvider masterKey
}

// package private for tests
<T, U> CryptoManager<?, ?> createCryptoManager(CryptoProvider<T, U> cryptoProvider, String keyProviderType, String keyProviderName, Runnable onClose) {
<T, U> CryptoManager<?, ?> createCryptoManager(CryptoHandler<T, U> cryptoHandler, String keyProviderType, String keyProviderName, Runnable onClose) {
return new CryptoManagerImpl<T, U>(keyProviderName, keyProviderType) {
@Override
protected void closeInternal() {
Expand All @@ -121,8 +121,8 @@ public String name() {
}

@Override
public CryptoProvider<T, U> getCryptoProvider() {
return cryptoProvider;
public CryptoHandler<T, U> getCryptoProvider() {
return cryptoHandler;
}
};
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
package org.opensearch.encryption.frame;

import com.amazonaws.encryptionsdk.ParsedCiphertext;
import org.opensearch.common.crypto.CryptoProvider;
import org.opensearch.common.crypto.CryptoHandler;
import org.opensearch.common.crypto.DecryptedRangedStreamProvider;
import org.opensearch.common.crypto.EncryptedHeaderContentSupplier;
import org.opensearch.encryption.frame.core.AwsCrypto;
Expand All @@ -20,14 +20,14 @@
import java.io.InputStream;
import java.util.Map;

public class FrameCryptoProvider implements CryptoProvider<EncryptionMetadata, ParsedCiphertext> {
public class FrameCryptoHandler implements CryptoHandler<EncryptionMetadata, ParsedCiphertext> {
private final AwsCrypto awsCrypto;
private final Map<String, String> encryptionContext;

// package private for tests
private final int FRAME_SIZE = 8 * 1024;

public FrameCryptoProvider(AwsCrypto awsCrypto, Map<String, String> encryptionContext) {
public FrameCryptoHandler(AwsCrypto awsCrypto, Map<String, String> encryptionContext) {
this.awsCrypto = awsCrypto;
this.encryptionContext = encryptionContext;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@

import com.amazonaws.encryptionsdk.caching.CachingCryptoMaterialsManager;
import org.junit.Before;
import org.opensearch.common.crypto.CryptoProvider;
import org.opensearch.common.crypto.CryptoHandler;
import org.opensearch.common.crypto.MasterKeyProvider;
import org.opensearch.common.unit.TimeValue;
import org.opensearch.test.OpenSearchTestCase;
Expand Down Expand Up @@ -48,13 +48,13 @@ public void testCreateCryptoProvider() {
MasterKeyProvider mockKeyProvider = mock(MasterKeyProvider.class);
when(mockKeyProvider.getEncryptionContext()).thenReturn(Collections.emptyMap());

CryptoProvider<?, ?> cryptoProvider = cryptoManagerFactory.createCryptoProvider(
CryptoHandler<?, ?> cryptoHandler = cryptoManagerFactory.createCryptoProvider(
"ALG_AES_256_GCM_HKDF_SHA512_COMMIT_KEY",
mockMaterialsManager,
mockKeyProvider
);

assertNotNull(cryptoProvider);
assertNotNull(cryptoHandler);
}

public void testCreateMaterialsManager() {
Expand All @@ -71,9 +71,9 @@ public void testCreateMaterialsManager() {
}

public void testCreateCryptoManager() {
CryptoProvider<?, ?> mockCryptoProvider = mock(CryptoProvider.class);
CryptoHandler<?, ?> mockCryptoHandler = mock(CryptoHandler.class);
CryptoManager<?, ?> cryptoManager = cryptoManagerFactory.createCryptoManager(
mockCryptoProvider,
mockCryptoHandler,
"keyProviderName",
"keyProviderType",
null
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -45,14 +45,14 @@

public class CryptoTests extends OpenSearchTestCase {

private static FrameCryptoProvider frameCryptoProvider;
private static FrameCryptoHandler frameCryptoProvider;

private static FrameCryptoProvider frameCryptoProviderTrailingAlgo;
private static FrameCryptoHandler frameCryptoProviderTrailingAlgo;

static class CustomFrameCryptoProviderTest extends FrameCryptoProvider {
static class CustomFrameCryptoHandlerTest extends FrameCryptoHandler {
private final int frameSize;

CustomFrameCryptoProviderTest(AwsCrypto awsCrypto, HashMap<String, String> config, int frameSize) {
CustomFrameCryptoHandlerTest(AwsCrypto awsCrypto, HashMap<String, String> config, int frameSize) {
super(awsCrypto, config);
this.frameSize = frameSize;
}
Expand All @@ -65,12 +65,12 @@ public int getFrameSize() {

@Before
public void setupResources() {
frameCryptoProvider = new CustomFrameCryptoProviderTest(
frameCryptoProvider = new CustomFrameCryptoHandlerTest(
createAwsCrypto(CryptoAlgorithm.ALG_AES_256_GCM_HKDF_SHA512_COMMIT_KEY),
new HashMap<>(),
100
);
frameCryptoProviderTrailingAlgo = new CustomFrameCryptoProviderTest(
frameCryptoProviderTrailingAlgo = new CustomFrameCryptoHandlerTest(
createAwsCrypto(CryptoAlgorithm.ALG_AES_256_GCM_HKDF_SHA512_COMMIT_KEY_ECDSA_P384),
new HashMap<>(),
100
Expand Down Expand Up @@ -99,7 +99,7 @@ private EncryptedStore verifyAndGetEncryptedContent() throws IOException, URISyn
return verifyAndGetEncryptedContent(false, frameCryptoProvider);
}

private EncryptedStore verifyAndGetEncryptedContent(boolean truncateRemainderPart, FrameCryptoProvider frameCryptoProvider)
private EncryptedStore verifyAndGetEncryptedContent(boolean truncateRemainderPart, FrameCryptoHandler frameCryptoProvider)
throws IOException, URISyntaxException {
String path = CryptoTests.class.getResource("/raw_content_for_crypto_test").toURI().getPath();
File file = new File(path);
Expand Down Expand Up @@ -141,7 +141,7 @@ public void testEncryptedDecryptedLengthEstimations() {
for (int i = 0; i < 100; i++) {
// Raw content size cannot be max value as encrypted size will overflow for the same.
long n = randomLongBetween(0, Long.MAX_VALUE / 2);
FrameCryptoProvider frameCryptoProvider = new CustomFrameCryptoProviderTest(
FrameCryptoHandler frameCryptoProvider = new CustomFrameCryptoHandlerTest(
createAwsCrypto(CryptoAlgorithm.ALG_AES_256_GCM_HKDF_SHA512_COMMIT_KEY),
new HashMap<>(),
randomIntBetween(10, 10240)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@

import org.opensearch.common.StreamContext;
import org.opensearch.common.blobstore.stream.write.WriteContext;
import org.opensearch.common.crypto.CryptoProvider;
import org.opensearch.common.crypto.CryptoHandler;
import org.opensearch.common.io.InputStreamContainer;
import org.opensearch.core.action.ActionListener;

Expand All @@ -25,17 +25,17 @@
public class AsyncMultiStreamEncryptedBlobContainer extends EncryptedBlobContainer implements AsyncMultiStreamBlobContainer {

private final AsyncMultiStreamBlobContainer blobContainer;
private final CryptoProvider cryptoProvider;
private final CryptoHandler cryptoHandler;

public AsyncMultiStreamEncryptedBlobContainer(AsyncMultiStreamBlobContainer blobContainer, CryptoProvider cryptoProvider) {
super(blobContainer, cryptoProvider);
public AsyncMultiStreamEncryptedBlobContainer(AsyncMultiStreamBlobContainer blobContainer, CryptoHandler cryptoHandler) {
super(blobContainer, cryptoHandler);
this.blobContainer = blobContainer;
this.cryptoProvider = cryptoProvider;
this.cryptoHandler = cryptoHandler;
}

@Override
public void asyncBlobUpload(WriteContext writeContext, ActionListener<Void> completionListener) throws IOException {
EncryptedWriteContext encryptedWriteContext = new EncryptedWriteContext(writeContext, cryptoProvider);
EncryptedWriteContext encryptedWriteContext = new EncryptedWriteContext(writeContext, cryptoHandler);
blobContainer.asyncBlobUpload(encryptedWriteContext, completionListener);
}

Expand All @@ -47,23 +47,23 @@ public boolean remoteIntegrityCheckSupported() {
static class EncryptedWriteContext extends WriteContext {

private final Object encryptionMetadata;
private final CryptoProvider cryptoProvider;
private final CryptoHandler cryptoHandler;
private final long fileSize;

/**
* Construct a new encrypted WriteContext object
*/
public EncryptedWriteContext(WriteContext writeContext, CryptoProvider cryptoProvider) {
public EncryptedWriteContext(WriteContext writeContext, CryptoHandler cryptoHandler) {
super(writeContext);
this.cryptoProvider = cryptoProvider;
this.encryptionMetadata = this.cryptoProvider.initEncryptionMetadata();
this.fileSize = this.cryptoProvider.estimateEncryptedLengthOfEntireContent(encryptionMetadata, writeContext.getFileSize());
this.cryptoHandler = cryptoHandler;
this.encryptionMetadata = this.cryptoHandler.initEncryptionMetadata();
this.fileSize = this.cryptoHandler.estimateEncryptedLengthOfEntireContent(encryptionMetadata, writeContext.getFileSize());
}

public StreamContext getStreamProvider(long partSize) {
long adjustedPartSize = cryptoProvider.adjustContentSizeForPartialEncryption(encryptionMetadata, partSize);
long adjustedPartSize = cryptoHandler.adjustContentSizeForPartialEncryption(encryptionMetadata, partSize);
StreamContext streamContext = super.getStreamProvider(adjustedPartSize);
return new EncryptedStreamContext(streamContext, cryptoProvider, encryptionMetadata);
return new EncryptedStreamContext(streamContext, cryptoHandler, encryptionMetadata);
}

/**
Expand All @@ -76,22 +76,22 @@ public long getFileSize() {

static class EncryptedStreamContext extends StreamContext {

private final CryptoProvider cryptoProvider;
private final CryptoHandler cryptoHandler;
private final Object encryptionMetadata;

/**
* Construct a new encrypted StreamContext object
*/
public EncryptedStreamContext(StreamContext streamContext, CryptoProvider cryptoProvider, Object encryptionMetadata) {
public EncryptedStreamContext(StreamContext streamContext, CryptoHandler cryptoHandler, Object encryptionMetadata) {
super(streamContext);
this.cryptoProvider = cryptoProvider;
this.cryptoHandler = cryptoHandler;
this.encryptionMetadata = encryptionMetadata;
}

@Override
public InputStreamContainer provideStream(int partNumber) throws IOException {
InputStreamContainer inputStreamContainer = super.provideStream(partNumber);
return cryptoProvider.createEncryptingStreamOfPart(encryptionMetadata, inputStreamContainer, getNumberOfParts(), partNumber);
return cryptoHandler.createEncryptingStreamOfPart(encryptionMetadata, inputStreamContainer, getNumberOfParts(), partNumber);
}

}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
package org.opensearch.common.blobstore;

import org.opensearch.common.CheckedBiConsumer;
import org.opensearch.common.crypto.CryptoProvider;
import org.opensearch.common.crypto.CryptoHandler;
import org.opensearch.common.crypto.DecryptedRangedStreamProvider;
import org.opensearch.common.crypto.EncryptedHeaderContentSupplier;
import org.opensearch.common.io.InputStreamContainer;
Expand All @@ -27,11 +27,11 @@
public class EncryptedBlobContainer implements BlobContainer {

private final BlobContainer blobContainer;
private final CryptoProvider cryptoProvider;
private final CryptoHandler cryptoHandler;

public EncryptedBlobContainer(BlobContainer blobContainer, CryptoProvider cryptoProvider) {
public EncryptedBlobContainer(BlobContainer blobContainer, CryptoHandler cryptoHandler) {
this.blobContainer = blobContainer;
this.cryptoProvider = cryptoProvider;
this.cryptoHandler = cryptoHandler;
}

@Override
Expand All @@ -47,7 +47,7 @@ public boolean blobExists(String blobName) throws IOException {
@Override
public InputStream readBlob(String blobName) throws IOException {
InputStream inputStream = blobContainer.readBlob(blobName);
return cryptoProvider.createDecryptingStream(inputStream);
return cryptoHandler.createDecryptingStream(inputStream);
}

private EncryptedHeaderContentSupplier getEncryptedHeaderContentSupplier(String blobName) {
Expand All @@ -64,8 +64,8 @@ private EncryptedHeaderContentSupplier getEncryptedHeaderContentSupplier(String

@Override
public InputStream readBlob(String blobName, long position, long length) throws IOException {
Object encryptionMetadata = cryptoProvider.loadEncryptionMetadata(getEncryptedHeaderContentSupplier(blobName));
DecryptedRangedStreamProvider decryptedStreamProvider = cryptoProvider.createDecryptingStreamOfRange(
Object encryptionMetadata = cryptoHandler.loadEncryptionMetadata(getEncryptedHeaderContentSupplier(blobName));
DecryptedRangedStreamProvider decryptedStreamProvider = cryptoHandler.createDecryptingStreamOfRange(
encryptionMetadata,
position,
position + length - 1
Expand All @@ -83,10 +83,10 @@ public long readBlobPreferredLength() {

private void executeWrite(InputStream inputStream, long blobSize, CheckedBiConsumer<InputStream, Long, IOException> writeConsumer)
throws IOException {
Object cryptoContext = cryptoProvider.initEncryptionMetadata();
Object cryptoContext = cryptoHandler.initEncryptionMetadata();
InputStreamContainer streamContainer = new InputStreamContainer(inputStream, blobSize, 0);
InputStreamContainer encryptedStream = cryptoProvider.createEncryptingStream(cryptoContext, streamContainer);
long cryptoLength = cryptoProvider.estimateEncryptedLengthOfEntireContent(cryptoContext, blobSize);
InputStreamContainer encryptedStream = cryptoHandler.createEncryptingStream(cryptoContext, streamContainer);
long cryptoLength = cryptoHandler.estimateEncryptedLengthOfEntireContent(cryptoContext, blobSize);
writeConsumer.accept(encryptedStream.getInputStream(), cryptoLength);
}

Expand Down Expand Up @@ -135,7 +135,7 @@ public Map<String, BlobContainer> children() throws IOException {
if (children != null) {
return children.entrySet()
.stream()
.collect(Collectors.toMap(Map.Entry::getKey, entry -> new EncryptedBlobContainer(entry.getValue(), cryptoProvider)));
.collect(Collectors.toMap(Map.Entry::getKey, entry -> new EncryptedBlobContainer(entry.getValue(), cryptoHandler)));
} else {
return null;
}
Expand All @@ -157,7 +157,7 @@ private Map<String, BlobMetadata> convertToEncryptedMetadataMap(Map<String, Blob
.collect(
Collectors.toMap(
Map.Entry::getKey,
entry -> new EncryptedBlobMetadata(entry.getValue(), cryptoProvider, getEncryptedHeaderContentSupplier(entry.getKey()))
entry -> new EncryptedBlobMetadata(entry.getValue(), cryptoHandler, getEncryptedHeaderContentSupplier(entry.getKey()))
)
);

Expand All @@ -178,7 +178,7 @@ public void listBlobsByPrefixInSortedOrder(
.map(
blobMetadata -> new EncryptedBlobMetadata(
blobMetadata,
cryptoProvider,
cryptoHandler,
getEncryptedHeaderContentSupplier(blobMetadata.name())
)
)
Expand Down
Loading

0 comments on commit 75f9881

Please sign in to comment.