diff --git a/services/keyvault/azure-keyvault-extensions/src/main/java/com/microsoft/azure/keyvault/extensions/AggregateKeyResolver.java b/services/keyvault/azure-keyvault-extensions/src/main/java/com/microsoft/azure/keyvault/extensions/AggregateKeyResolver.java index b125576a0835..bd55a075bdb1 100644 --- a/services/keyvault/azure-keyvault-extensions/src/main/java/com/microsoft/azure/keyvault/extensions/AggregateKeyResolver.java +++ b/services/keyvault/azure-keyvault-extensions/src/main/java/com/microsoft/azure/keyvault/extensions/AggregateKeyResolver.java @@ -19,6 +19,8 @@ package com.microsoft.azure.keyvault.extensions; import java.util.ArrayList; +import java.util.Collections; +import java.util.List; import java.util.concurrent.ExecutionException; import java.util.concurrent.Future; import java.util.concurrent.TimeUnit; @@ -70,15 +72,16 @@ public IKey get() throws InterruptedException, ExecutionException { throw new InterruptedException(); } - // TODO: Concurrency - for (IKeyResolver resolver : _resolvers) { - Future futureKey = resolver.resolveKeyAsync(_kid); - - _result = futureKey.get(); - - if (_result != null) { - break; - } + synchronized( _resolvers ) { + for (IKeyResolver resolver : _resolvers) { + Future futureKey = resolver.resolveKeyAsync(_kid); + + _result = futureKey.get(); + + if (_result != null) { + break; + } + } } // Mark done @@ -95,15 +98,16 @@ public IKey get(long timeout, TimeUnit unit) throws InterruptedException, Execut throw new InterruptedException(); } - // TODO: Concurrency - for (IKeyResolver resolver : _resolvers) { - Future futureKey = resolver.resolveKeyAsync(_kid); - - _result = futureKey.get(timeout, unit); - - if (_result != null) { - break; - } + synchronized( _resolvers ) { + for (IKeyResolver resolver : _resolvers) { + Future futureKey = resolver.resolveKeyAsync(_kid); + + _result = futureKey.get(timeout, unit); + + if (_result != null) { + break; + } + } } // Mark done @@ -113,16 +117,18 @@ public IKey get(long timeout, TimeUnit unit) throws InterruptedException, Execut } } - private final ArrayList _resolvers; + private final List _resolvers; public AggregateKeyResolver() { - // TODO: Concurrency - _resolvers = new ArrayList(); + + _resolvers = Collections.synchronizedList(new ArrayList()); } public void Add(IKeyResolver resolver) { - // TODO: Concurrency - _resolvers.add(resolver); + + synchronized( _resolvers ) { + _resolvers.add(resolver); + } } @Override diff --git a/services/keyvault/azure-keyvault-extensions/src/main/java/com/microsoft/azure/keyvault/extensions/KeyVaultKeyResolver.java b/services/keyvault/azure-keyvault-extensions/src/main/java/com/microsoft/azure/keyvault/extensions/KeyVaultKeyResolver.java index 7931956938ad..b16ba644d73c 100644 --- a/services/keyvault/azure-keyvault-extensions/src/main/java/com/microsoft/azure/keyvault/extensions/KeyVaultKeyResolver.java +++ b/services/keyvault/azure-keyvault-extensions/src/main/java/com/microsoft/azure/keyvault/extensions/KeyVaultKeyResolver.java @@ -18,6 +18,7 @@ package com.microsoft.azure.keyvault.extensions; +import java.security.Provider; import java.util.concurrent.Future; import org.apache.commons.codec.binary.Base64; @@ -32,6 +33,8 @@ public class KeyVaultKeyResolver implements IKeyResolver { + static final Base64 _base64 = new Base64(-1, null, true); + class FutureKeyFromKey extends FutureAdapter { protected FutureKeyFromKey(Future inner) { @@ -49,9 +52,8 @@ protected IKey translate(KeyBundle keyBundle) { } } - static class FutureKeyFromSecret extends FutureAdapter { + class FutureKeyFromSecret extends FutureAdapter { - static final Base64 _base64 = new Base64(-1, null, true); protected FutureKeyFromSecret(Future inner) { super(inner); @@ -64,7 +66,7 @@ protected IKey translate(Secret secretBundle) { byte[] keyBytes = _base64.decode(secretBundle.getValue()); if (keyBytes != null) { - return new SymmetricKey(secretBundle.getId(), keyBytes); + return new SymmetricKey(secretBundle.getId(), keyBytes, _provider ); } } @@ -73,9 +75,16 @@ protected IKey translate(Secret secretBundle) { } private final KeyVaultClient _client; + private final Provider _provider; public KeyVaultKeyResolver(KeyVaultClient client) { - _client = client; + _client = client; + _provider = null; + } + + public KeyVaultKeyResolver(KeyVaultClient client, Provider provider) { + _client = client; + _provider = provider; } private Future resolveKeyFromSecretAsync(String kid) { diff --git a/services/keyvault/azure-keyvault-extensions/src/main/java/com/microsoft/azure/keyvault/extensions/SymmetricKey.java b/services/keyvault/azure-keyvault-extensions/src/main/java/com/microsoft/azure/keyvault/extensions/SymmetricKey.java index 5dc4b6245d14..9f7a51786695 100644 --- a/services/keyvault/azure-keyvault-extensions/src/main/java/com/microsoft/azure/keyvault/extensions/SymmetricKey.java +++ b/services/keyvault/azure-keyvault-extensions/src/main/java/com/microsoft/azure/keyvault/extensions/SymmetricKey.java @@ -166,7 +166,7 @@ public Future decryptAsync(final byte[] ciphertext, final byte[] iv, fin ICryptoTransform transform = null; try { - transform = algo.CreateDecryptor(_key, iv, authenticationData); + transform = algo.CreateDecryptor(_key, iv, authenticationData, _provider ); } catch (Exception e) { return new FutureExecutionException(e); } @@ -219,7 +219,7 @@ public Future> encryptAsync(final byte[] plaintex ICryptoTransform transform = null; try { - transform = algo.CreateEncryptor(_key, iv, authenticationData); + transform = algo.CreateEncryptor(_key, iv, authenticationData, _provider); } catch (Exception e) { return new FutureExecutionException>(e); } @@ -320,13 +320,11 @@ public Future unwrapKeyAsync(final byte[] encryptedKey, final String alg @Override public Future> signAsync(final byte[] digest, final String algorithm) { - // TODO Auto-generated method stub return null; } @Override public Future verifyAsync(final byte[] digest, final byte[] signature, final String algorithm) { - // TODO Auto-generated method stub return null; } diff --git a/services/keyvault/azure-keyvault-extensions/src/main/java/com/microsoft/azure/keyvault/extensions/cryptography/SignatureAlgorithm.java b/services/keyvault/azure-keyvault-extensions/src/main/java/com/microsoft/azure/keyvault/extensions/cryptography/SignatureAlgorithm.java index c4f8f6ad3be7..a45825c752fb 100644 --- a/services/keyvault/azure-keyvault-extensions/src/main/java/com/microsoft/azure/keyvault/extensions/cryptography/SignatureAlgorithm.java +++ b/services/keyvault/azure-keyvault-extensions/src/main/java/com/microsoft/azure/keyvault/extensions/cryptography/SignatureAlgorithm.java @@ -22,7 +22,6 @@ public abstract class SignatureAlgorithm extends Algorithm { protected SignatureAlgorithm(String name) { super(name); - // TODO Auto-generated constructor stub } } diff --git a/services/keyvault/azure-keyvault-extensions/src/main/java/com/microsoft/azure/keyvault/extensions/cryptography/algorithms/AesCbc.java b/services/keyvault/azure-keyvault-extensions/src/main/java/com/microsoft/azure/keyvault/extensions/cryptography/algorithms/AesCbc.java index 41052f26511e..f246d8be4eb0 100644 --- a/services/keyvault/azure-keyvault-extensions/src/main/java/com/microsoft/azure/keyvault/extensions/cryptography/algorithms/AesCbc.java +++ b/services/keyvault/azure-keyvault-extensions/src/main/java/com/microsoft/azure/keyvault/extensions/cryptography/algorithms/AesCbc.java @@ -81,7 +81,6 @@ public byte[] doFinal(byte[] plaintext) throws IllegalBlockSizeException, BadPad protected AesCbc(String name) { super(name); - // TODO Auto-generated constructor stub } @Override diff --git a/services/keyvault/azure-keyvault-extensions/src/test/java/com/microsoft/azure/keyvault/extensions/test/KeyVaultKeyResolverTest.java b/services/keyvault/azure-keyvault-extensions/src/test/java/com/microsoft/azure/keyvault/extensions/test/KeyVaultKeyResolverBCProviderTest.java similarity index 91% rename from services/keyvault/azure-keyvault-extensions/src/test/java/com/microsoft/azure/keyvault/extensions/test/KeyVaultKeyResolverTest.java rename to services/keyvault/azure-keyvault-extensions/src/test/java/com/microsoft/azure/keyvault/extensions/test/KeyVaultKeyResolverBCProviderTest.java index 0cb864e6f61a..e6a26edf724c 100644 --- a/services/keyvault/azure-keyvault-extensions/src/test/java/com/microsoft/azure/keyvault/extensions/test/KeyVaultKeyResolverTest.java +++ b/services/keyvault/azure-keyvault-extensions/src/test/java/com/microsoft/azure/keyvault/extensions/test/KeyVaultKeyResolverBCProviderTest.java @@ -4,11 +4,16 @@ import static org.junit.Assert.fail; import java.security.NoSuchAlgorithmException; +import java.security.Provider; import java.util.concurrent.ExecutionException; import java.util.concurrent.Future; import org.apache.commons.codec.binary.Base64; +import org.junit.After; +import org.junit.AfterClass; import org.junit.Assert; +import org.junit.Before; +import org.junit.BeforeClass; import org.junit.Test; import com.microsoft.azure.keyvault.core.IKey; @@ -34,7 +39,34 @@ //See the Apache License, Version 2.0 for the specific language //governing permissions and limitations under the License. -public class KeyVaultKeyResolverTest extends KeyVaultExtensionsIntegrationTestBase { +public class KeyVaultKeyResolverBCProviderTest extends KeyVaultExtensionsIntegrationTestBase { + + private Provider _provider = null; + + @BeforeClass + public static void setUpBeforeClass() throws Exception { + } + + @AfterClass + public static void tearDownAfterClass() throws Exception { + } + + @Before + public void setUp() throws Exception { + try { + _provider = (Provider) Class.forName("org.bouncycastle.jce.provider.BouncyCastleProvider").newInstance(); + } catch (ClassNotFoundException ex) { + throw new RuntimeException(ex.getMessage()); + } catch (IllegalAccessException ex) { + throw new RuntimeException(ex.getMessage()); + } catch (InstantiationException ex) { + throw new RuntimeException(ex.getMessage()); + } + } + + @After + public void tearDown() throws Exception { + } private static final String KEY_NAME = "JavaExtensionKey"; private static final String SECRET_NAME = "JavaExtensionSecret"; @@ -53,7 +85,7 @@ public void KeyVault_KeyVaultKeyResolver_Key() throws InterruptedException, Exec try { // ctor with client - KeyVaultKeyResolver resolver = new KeyVaultKeyResolver( keyVaultClient ); + KeyVaultKeyResolver resolver = new KeyVaultKeyResolver( keyVaultClient, _provider ); Future baseKeyFuture = resolver.resolveKeyAsync( bundle.getKeyIdentifier().getBaseIdentifier() ); Future versionKeyFuture = resolver.resolveKeyAsync( bundle.getKeyIdentifier().getIdentifier() ); @@ -157,7 +189,7 @@ public void KeyVault_KeyVaultKeyResolver_Secret192Base64() throws InterruptedExc try { // ctor with client - KeyVaultKeyResolver resolver = new KeyVaultKeyResolver( keyVaultClient ); + KeyVaultKeyResolver resolver = new KeyVaultKeyResolver( keyVaultClient, _provider ); IKey baseKey = resolver.resolveKeyAsync( secret.getSecretIdentifier().getBaseIdentifier() ).get(); IKey versionKey = resolver.resolveKeyAsync( secret.getSecretIdentifier().getIdentifier() ).get(); @@ -221,7 +253,7 @@ public void KeyVault_KeyVaultKeyResolver_Secret256Base64() throws InterruptedExc try { // ctor with client - KeyVaultKeyResolver resolver = new KeyVaultKeyResolver( keyVaultClient ); + KeyVaultKeyResolver resolver = new KeyVaultKeyResolver( keyVaultClient, _provider ); IKey baseKey = resolver.resolveKeyAsync( secret.getSecretIdentifier().getBaseIdentifier() ).get(); IKey versionKey = resolver.resolveKeyAsync( secret.getSecretIdentifier().getIdentifier() ).get(); diff --git a/services/keyvault/azure-keyvault-extensions/src/test/java/com/microsoft/azure/keyvault/extensions/test/KeyVaultKeyResolverDefaultProviderTest.java b/services/keyvault/azure-keyvault-extensions/src/test/java/com/microsoft/azure/keyvault/extensions/test/KeyVaultKeyResolverDefaultProviderTest.java new file mode 100644 index 000000000000..78a147353ea6 --- /dev/null +++ b/services/keyvault/azure-keyvault-extensions/src/test/java/com/microsoft/azure/keyvault/extensions/test/KeyVaultKeyResolverDefaultProviderTest.java @@ -0,0 +1,324 @@ +package com.microsoft.azure.keyvault.extensions.test; + +import static org.junit.Assert.assertArrayEquals; +import static org.junit.Assert.fail; + +import java.security.InvalidKeyException; +import java.security.NoSuchAlgorithmException; +import java.util.concurrent.ExecutionException; +import java.util.concurrent.Future; + +import javax.crypto.Cipher; + +import org.apache.commons.codec.binary.Base64; +import org.junit.After; +import org.junit.AfterClass; +import org.junit.Assert; +import org.junit.Before; +import org.junit.BeforeClass; +import org.junit.Test; + +import com.microsoft.azure.keyvault.core.IKey; +import com.microsoft.azure.keyvault.extensions.KeyVaultKeyResolver; +import com.microsoft.azure.keyvault.extensions.SymmetricKey; +import com.microsoft.azure.keyvault.models.KeyBundle; +import com.microsoft.azure.keyvault.models.Secret; + +// +//Copyright © Microsoft Corporation, All Rights Reserved +// +//Licensed under the Apache License, Version 2.0 (the "License"); +//you may not use this file except in compliance with the License. +//You may obtain a copy of the License at +// +//http://www.apache.org/licenses/LICENSE-2.0 +// +//THIS CODE IS PROVIDED *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS +//OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION +//ANY IMPLIED WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A +//PARTICULAR PURPOSE, MERCHANTABILITY OR NON-INFRINGEMENT. +// +//See the Apache License, Version 2.0 for the specific language +//governing permissions and limitations under the License. + +public class KeyVaultKeyResolverDefaultProviderTest extends KeyVaultExtensionsIntegrationTestBase { + + private static boolean hasUnlimitedCrypto() { + try { + return Cipher.getMaxAllowedKeyLength("RC5") >= 256; + } catch (NoSuchAlgorithmException e) { + return false; + } + } + + @BeforeClass + public static void setUpBeforeClass() throws Exception { + } + + @AfterClass + public static void tearDownAfterClass() throws Exception { + } + + @Before + public void setUp() throws Exception { + } + + @After + public void tearDown() throws Exception { + } + + private static final boolean _unlimited = hasUnlimitedCrypto(); + + + private static final String KEY_NAME = "JavaExtensionKey"; + private static final String SECRET_NAME = "JavaExtensionSecret"; + + private static final Base64 _base64 = new Base64(-1, null, true); + + @Test + public void KeyVault_KeyVaultKeyResolver_Key() throws InterruptedException, ExecutionException + { + // Create a key on a vault. + Future result = keyVaultClient.createKeyAsync(getVaultUri(), KEY_NAME, "RSA", null, null, null, null); + KeyBundle bundle = result.get(); + + if ( bundle != null ) + { + try + { + // ctor with client + KeyVaultKeyResolver resolver = new KeyVaultKeyResolver( keyVaultClient ); + + Future baseKeyFuture = resolver.resolveKeyAsync( bundle.getKeyIdentifier().getBaseIdentifier() ); + Future versionKeyFuture = resolver.resolveKeyAsync( bundle.getKeyIdentifier().getIdentifier() ); + + IKey baseKey = baseKeyFuture.get(); + IKey versionKey = versionKeyFuture.get(); + + Assert.assertEquals( baseKey.getKid(), versionKey.getKid() ); + } + finally + { + // Delete the key + Future deletedKeyFuture = keyVaultClient.deleteKeyAsync( getVaultUri(), KEY_NAME ); + + deletedKeyFuture.get(); + } + } + } + + /* + * Test resolving a key from a 128bit secret encoded as base64 in a vault using various KeyVaultKeyResolver constructors. + */ + @Test + public void KeyVault_KeyVaultKeyResolver_Secret128Base64() throws InterruptedException, ExecutionException + { + // Arrange + byte[] keyBytes = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F }; + byte[] CEK = { 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, (byte) 0x88, (byte) 0x99, (byte) 0xAA, (byte) 0xBB, (byte) 0xCC, (byte) 0xDD, (byte) 0xEE, (byte) 0xFF }; + byte[] EK = { 0x1F, (byte) 0xA6, (byte) 0x8B, 0x0A, (byte) 0x81, 0x12, (byte) 0xB4, 0x47, (byte) 0xAE, (byte) 0xF3, 0x4B, (byte) 0xD8, (byte) 0xFB, 0x5A, 0x7B, (byte) 0x82, (byte) 0x9D, 0x3E, (byte) 0x86, 0x23, 0x71, (byte) 0xD2, (byte) 0xCF, (byte) 0xE5 }; + + + Future futureSecret = keyVaultClient.setSecretAsync(getVaultUri(), SECRET_NAME, _base64.encodeAsString(keyBytes), "application/octet-stream", null, null ); + Secret secret = futureSecret.get(); + + if ( secret != null ) + { + try + { + // ctor with client + KeyVaultKeyResolver resolver = new KeyVaultKeyResolver( keyVaultClient ); + + IKey baseKey = resolver.resolveKeyAsync( secret.getSecretIdentifier().getBaseIdentifier() ).get(); + IKey versionKey = resolver.resolveKeyAsync( secret.getSecretIdentifier().getIdentifier() ).get(); + + // Check for correct key identifiers + Assert.assertEquals( baseKey.getKid(), versionKey.getKid() ); + + // Ensure key operations give the expected results + byte[] encrypted = null; + + try { + encrypted = baseKey.wrapKeyAsync(CEK, "A128KW").get().getLeft(); + } catch (InterruptedException e) { + fail("InterrupedException"); + } catch (ExecutionException e) { + fail("ExecutionException"); + } catch (NoSuchAlgorithmException e) { + fail("NoSuchAlgorithmException"); + } + + // Assert + assertArrayEquals(EK, encrypted); + + try { + encrypted = versionKey.wrapKeyAsync(CEK, "A128KW").get().getLeft(); + } catch (InterruptedException e) { + fail("InterrupedException"); + } catch (ExecutionException e) { + fail("ExecutionException"); + } catch (NoSuchAlgorithmException e) { + fail("NoSuchAlgorithmException"); + } + + // Assert + assertArrayEquals(EK, encrypted); + } + finally + { + // Delete the key + keyVaultClient.deleteSecretAsync( getVaultUri(), SECRET_NAME ).get(); + } + } + } + + /* + * Test resolving a key from a 128bit secret encoded as base64 in a vault using various KeyVaultKeyResolver constructors. + */ + @Test + public void KeyVault_KeyVaultKeyResolver_Secret192Base64() throws InterruptedException, ExecutionException + { + // Arrange + byte[] keyBytes = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17 }; + byte[] CEK = { 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, (byte) 0x88, (byte) 0x99, (byte) 0xAA, (byte) 0xBB, (byte) 0xCC, (byte) 0xDD, (byte) 0xEE, (byte) 0xFF }; + byte[] EK = { (byte) 0x96, 0x77, (byte) 0x8B, 0x25, (byte) 0xAE, 0x6C, (byte) 0xA4, 0x35, (byte) 0xF9, 0x2B, 0x5B, (byte) 0x97, (byte) 0xC0, 0x50, (byte) 0xAE, (byte) 0xD2, 0x46, (byte) 0x8A, (byte) 0xB8, (byte) 0xA1, 0x7A, (byte) 0xD8, 0x4E, 0x5D }; + + Future futureSecret = keyVaultClient.setSecretAsync(getVaultUri(), SECRET_NAME, _base64.encodeAsString(keyBytes), "application/octet-stream", null, null ); + Secret secret = futureSecret.get(); + + if ( secret != null ) + { + try + { + // ctor with client + KeyVaultKeyResolver resolver = new KeyVaultKeyResolver( keyVaultClient ); + + IKey baseKey = resolver.resolveKeyAsync( secret.getSecretIdentifier().getBaseIdentifier() ).get(); + IKey versionKey = resolver.resolveKeyAsync( secret.getSecretIdentifier().getIdentifier() ).get(); + + // Check for correct key identifiers + Assert.assertEquals( baseKey.getKid(), versionKey.getKid() ); + + // Ensure key operations give the expected results + byte[] encrypted = null; + + try { + encrypted = baseKey.wrapKeyAsync(CEK, "A192KW").get().getLeft(); + + if (!_unlimited) fail("Expected ExecutionException"); + } catch (InterruptedException e) { + fail("InterrupedException"); + } catch (ExecutionException e) { + // In the limited case, the failure should be InvalidKeyException + // In the unlimited case, this should not fail + if (!_unlimited) { + Throwable cause = e.getCause(); + if (cause == null || !(cause instanceof InvalidKeyException)) fail("ExecutionException"); + } else { + fail("ExecutionException"); + } + } catch (NoSuchAlgorithmException e) { + fail("NoSuchAlgorithmException"); + } + + if ( _unlimited ) { + // Assert + assertArrayEquals(EK, encrypted); + + try { + encrypted = versionKey.wrapKeyAsync(CEK, "A192KW").get().getLeft(); + } catch (InterruptedException e) { + fail("InterrupedException"); + } catch (ExecutionException e) { + fail("ExecutionException"); + } catch (NoSuchAlgorithmException e) { + fail("NoSuchAlgorithmException"); + } + + // Assert + assertArrayEquals(EK, encrypted); + } + } + finally + { + // Delete the key + keyVaultClient.deleteSecretAsync( getVaultUri(), SECRET_NAME ).get(); + } + } + } + + /* + * Test resolving a key from a 256bit secret encoded as base64 in a vault using various KeyVaultKeyResolver constructors. + */ + @Test + public void KeyVault_KeyVaultKeyResolver_Secret256Base64() throws InterruptedException, ExecutionException + { + // Arrange + byte[] keyBytes = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x1F }; + byte[] CEK = { 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, (byte) 0x88, (byte) 0x99, (byte) 0xAA, (byte) 0xBB, (byte) 0xCC, (byte) 0xDD, (byte) 0xEE, (byte) 0xFF }; + byte[] EK = { 0x64, (byte) 0xE8, (byte) 0xC3, (byte) 0xF9, (byte) 0xCE, 0x0F, 0x5B, (byte) 0xA2, 0x63, (byte) 0xE9, 0x77, 0x79, 0x05, (byte) 0x81, (byte) 0x8A, 0x2A, (byte) 0x93, (byte) 0xC8, 0x19, 0x1E, 0x7D, 0x6E, (byte) 0x8A, (byte) 0xE7 }; + + Future futureSecret = keyVaultClient.setSecretAsync(getVaultUri(), SECRET_NAME, _base64.encodeAsString(keyBytes), "application/octet-stream", null, null ); + Secret secret = futureSecret.get(); + + if ( secret != null ) + { + try + { + // ctor with client + KeyVaultKeyResolver resolver = new KeyVaultKeyResolver( keyVaultClient ); + + IKey baseKey = resolver.resolveKeyAsync( secret.getSecretIdentifier().getBaseIdentifier() ).get(); + IKey versionKey = resolver.resolveKeyAsync( secret.getSecretIdentifier().getIdentifier() ).get(); + + // Check for correct key identifiers + Assert.assertEquals( baseKey.getKid(), versionKey.getKid() ); + + // Ensure key operations give the expected results + byte[] encrypted = null; + + try { + encrypted = baseKey.wrapKeyAsync(CEK, "A256KW").get().getLeft(); + + if (!_unlimited) fail("Expected ExecutionException"); + } catch (InterruptedException e) { + fail("InterrupedException"); + } catch (ExecutionException e) { + // In the limited case, the failure should be InvalidKeyException + // In the unlimited case, this should not fail + if (!_unlimited) { + Throwable cause = e.getCause(); + if (cause == null || !(cause instanceof InvalidKeyException)) fail("ExecutionException"); + } else { + fail("ExecutionException"); + } + } catch (NoSuchAlgorithmException e) { + fail("NoSuchAlgorithmException"); + } + + if ( _unlimited ) { + // Assert + assertArrayEquals(EK, encrypted); + + try { + encrypted = versionKey.wrapKeyAsync(CEK, "A256KW").get().getLeft(); + } catch (InterruptedException e) { + fail("InterrupedException"); + } catch (ExecutionException e) { + fail("ExecutionException"); + } catch (NoSuchAlgorithmException e) { + fail("NoSuchAlgorithmException"); + } + + // Assert + assertArrayEquals(EK, encrypted); + } + } + finally + { + // Delete the key + keyVaultClient.deleteSecretAsync( getVaultUri(), SECRET_NAME ).get(); + } + } + } +} diff --git a/services/keyvault/azure-keyvault-extensions/src/test/resources/session-records/KeyVaultKeyResolverBCProviderTest-KeyVault_KeyVaultKeyResolver_Key.json b/services/keyvault/azure-keyvault-extensions/src/test/resources/session-records/KeyVaultKeyResolverBCProviderTest-KeyVault_KeyVaultKeyResolver_Key.json new file mode 100644 index 000000000000..fccb281a7fc8 --- /dev/null +++ b/services/keyvault/azure-keyvault-extensions/src/test/resources/session-records/KeyVaultKeyResolverBCProviderTest-KeyVault_KeyVaultKeyResolver_Key.json @@ -0,0 +1 @@ +[{"User-Agent":"Azure-SDK-For-Java","Method":"POST","Uri":"/keys/JavaExtensionKey/create?api-version=2015-06-01","Content-Type":"application/json"},{"Server":"Microsoft-IIS/8.5","Pragma":"no-cache","StatusCode":"200","Date":"Wed, 09 Mar 2016 00:50:09 GMT","Strict-Transport-Security":"max-age=31536000;includeSubDomains","Cache-Control":"no-cache","X-AspNet-Version":"4.0.30319","x-ms-keyvault-region":"westus","Expires":"-1","Content-Length":"627","x-ms-request-id":"ac9b8f27-17c0-408a-900b-471103dde06b","x-ms-keyvault-service-version":"1.0.0.744","Body":"{\"key\":{\"kid\":\"https://javasdktestvault.vault.azure.net/keys/JavaExtensionKey/e8e1fc28e8854a388d37cba46b3756da\",\"kty\":\"RSA\",\"key_ops\":[\"encrypt\",\"decrypt\",\"sign\",\"verify\",\"wrapKey\",\"unwrapKey\"],\"n\":\"weY3fTeyiKngR-wsVeh_9O8H_RzjFHcri_v_C75sau7cNdXhbJFbwRsYDozaDmJzbczshoEQzfVil2X7yX_NXNNNDSIrODJzL20zbS59Db0_VGaxTXuO_89bd5gp2zaz46zNtNd2iDI6d8jgkM_z8gOycS7Lvy9kW4psV9okaj3BzjJLJy2VE6SoWhC63qQhef64XZx5UNYiO7P45jbWOUlTrEfGvwFPiQMYttVy6uvQ8tsj-CMzyPCtxkVuGfYKJ4DpobYMFNU181BvWV9dOU7lFjyAB14xeE7WWubH1nvLRH9oDooSNlyjUVegKwAjb5sGamImMKYeWGay3zPwuw\",\"e\":\"AQAB\"},\"attributes\":{\"enabled\":true,\"created\":1457484610,\"updated\":1457484610}}","Content-Type":"application/json; charset=utf-8","X-Powered-By":"ASP.NET"},{"User-Agent":"Azure-SDK-For-Java","Method":"GET","Uri":"/keys/JavaExtensionKey/?api-version=2015-06-01"},{"Server":"Microsoft-IIS/8.5","Pragma":"no-cache","StatusCode":"200","Date":"Wed, 09 Mar 2016 00:50:10 GMT","Strict-Transport-Security":"max-age=31536000;includeSubDomains","Cache-Control":"no-cache","X-AspNet-Version":"4.0.30319","x-ms-keyvault-region":"westus","Expires":"-1","Content-Length":"627","x-ms-request-id":"e3559769-fe54-46a2-9d57-0addd8c023c5","x-ms-keyvault-service-version":"1.0.0.744","Body":"{\"key\":{\"kid\":\"https://javasdktestvault.vault.azure.net/keys/JavaExtensionKey/e8e1fc28e8854a388d37cba46b3756da\",\"kty\":\"RSA\",\"key_ops\":[\"encrypt\",\"decrypt\",\"sign\",\"verify\",\"wrapKey\",\"unwrapKey\"],\"n\":\"weY3fTeyiKngR-wsVeh_9O8H_RzjFHcri_v_C75sau7cNdXhbJFbwRsYDozaDmJzbczshoEQzfVil2X7yX_NXNNNDSIrODJzL20zbS59Db0_VGaxTXuO_89bd5gp2zaz46zNtNd2iDI6d8jgkM_z8gOycS7Lvy9kW4psV9okaj3BzjJLJy2VE6SoWhC63qQhef64XZx5UNYiO7P45jbWOUlTrEfGvwFPiQMYttVy6uvQ8tsj-CMzyPCtxkVuGfYKJ4DpobYMFNU181BvWV9dOU7lFjyAB14xeE7WWubH1nvLRH9oDooSNlyjUVegKwAjb5sGamImMKYeWGay3zPwuw\",\"e\":\"AQAB\"},\"attributes\":{\"enabled\":true,\"created\":1457484610,\"updated\":1457484610}}","Content-Type":"application/json; charset=utf-8","X-Powered-By":"ASP.NET"},{"User-Agent":"Azure-SDK-For-Java","Method":"GET","Uri":"/keys/JavaExtensionKey/e8e1fc28e8854a388d37cba46b3756da/?api-version=2015-06-01"},{"Server":"Microsoft-IIS/8.5","Pragma":"no-cache","StatusCode":"200","Date":"Wed, 09 Mar 2016 00:50:10 GMT","Strict-Transport-Security":"max-age=31536000;includeSubDomains","Cache-Control":"no-cache","X-AspNet-Version":"4.0.30319","x-ms-keyvault-region":"westus","Expires":"-1","Content-Length":"627","x-ms-request-id":"b639596d-1d02-4927-9289-ba646e936f8e","x-ms-keyvault-service-version":"1.0.0.744","Body":"{\"key\":{\"kid\":\"https://javasdktestvault.vault.azure.net/keys/JavaExtensionKey/e8e1fc28e8854a388d37cba46b3756da\",\"kty\":\"RSA\",\"key_ops\":[\"encrypt\",\"decrypt\",\"sign\",\"verify\",\"wrapKey\",\"unwrapKey\"],\"n\":\"weY3fTeyiKngR-wsVeh_9O8H_RzjFHcri_v_C75sau7cNdXhbJFbwRsYDozaDmJzbczshoEQzfVil2X7yX_NXNNNDSIrODJzL20zbS59Db0_VGaxTXuO_89bd5gp2zaz46zNtNd2iDI6d8jgkM_z8gOycS7Lvy9kW4psV9okaj3BzjJLJy2VE6SoWhC63qQhef64XZx5UNYiO7P45jbWOUlTrEfGvwFPiQMYttVy6uvQ8tsj-CMzyPCtxkVuGfYKJ4DpobYMFNU181BvWV9dOU7lFjyAB14xeE7WWubH1nvLRH9oDooSNlyjUVegKwAjb5sGamImMKYeWGay3zPwuw\",\"e\":\"AQAB\"},\"attributes\":{\"enabled\":true,\"created\":1457484610,\"updated\":1457484610}}","Content-Type":"application/json; charset=utf-8","X-Powered-By":"ASP.NET"},{"User-Agent":"Azure-SDK-For-Java","Method":"DELETE","Uri":"/keys/JavaExtensionKey/delete?api-version=2015-06-01"},{"Server":"Microsoft-IIS/8.5","Pragma":"no-cache","StatusCode":"200","Date":"Wed, 09 Mar 2016 00:50:10 GMT","Strict-Transport-Security":"max-age=31536000;includeSubDomains","Cache-Control":"no-cache","X-AspNet-Version":"4.0.30319","x-ms-keyvault-region":"westus","Expires":"-1","Content-Length":"627","x-ms-request-id":"b02c07cd-c09f-4cf3-91c0-954d77e764b3","x-ms-keyvault-service-version":"1.0.0.744","Body":"{\"key\":{\"kid\":\"https://javasdktestvault.vault.azure.net/keys/JavaExtensionKey/e8e1fc28e8854a388d37cba46b3756da\",\"kty\":\"RSA\",\"key_ops\":[\"encrypt\",\"decrypt\",\"sign\",\"verify\",\"wrapKey\",\"unwrapKey\"],\"n\":\"weY3fTeyiKngR-wsVeh_9O8H_RzjFHcri_v_C75sau7cNdXhbJFbwRsYDozaDmJzbczshoEQzfVil2X7yX_NXNNNDSIrODJzL20zbS59Db0_VGaxTXuO_89bd5gp2zaz46zNtNd2iDI6d8jgkM_z8gOycS7Lvy9kW4psV9okaj3BzjJLJy2VE6SoWhC63qQhef64XZx5UNYiO7P45jbWOUlTrEfGvwFPiQMYttVy6uvQ8tsj-CMzyPCtxkVuGfYKJ4DpobYMFNU181BvWV9dOU7lFjyAB14xeE7WWubH1nvLRH9oDooSNlyjUVegKwAjb5sGamImMKYeWGay3zPwuw\",\"e\":\"AQAB\"},\"attributes\":{\"enabled\":true,\"created\":1457484610,\"updated\":1457484610}}","Content-Type":"application/json; charset=utf-8","X-Powered-By":"ASP.NET"}] \ No newline at end of file diff --git a/services/keyvault/azure-keyvault-extensions/src/test/resources/session-records/KeyVaultKeyResolverTest-KeyVault_KeyVaultKeyResolver_Secret128Base64.json b/services/keyvault/azure-keyvault-extensions/src/test/resources/session-records/KeyVaultKeyResolverBCProviderTest-KeyVault_KeyVaultKeyResolver_Secret128Base64.json similarity index 55% rename from services/keyvault/azure-keyvault-extensions/src/test/resources/session-records/KeyVaultKeyResolverTest-KeyVault_KeyVaultKeyResolver_Secret128Base64.json rename to services/keyvault/azure-keyvault-extensions/src/test/resources/session-records/KeyVaultKeyResolverBCProviderTest-KeyVault_KeyVaultKeyResolver_Secret128Base64.json index 16c3120df337..8ca100900660 100644 --- a/services/keyvault/azure-keyvault-extensions/src/test/resources/session-records/KeyVaultKeyResolverTest-KeyVault_KeyVaultKeyResolver_Secret128Base64.json +++ b/services/keyvault/azure-keyvault-extensions/src/test/resources/session-records/KeyVaultKeyResolverBCProviderTest-KeyVault_KeyVaultKeyResolver_Secret128Base64.json @@ -1 +1 @@ -[{"User-Agent":"Azure-SDK-For-Java","Method":"PUT","Uri":"/secrets/JavaExtensionSecret?api-version=2015-06-01","Content-Type":"application/json"},{"Server":"Microsoft-IIS/8.5","Pragma":"no-cache","StatusCode":"200","Date":"Thu, 14 Jan 2016 18:47:26 GMT","Strict-Transport-Security":"max-age=31536000;includeSubDomains","Cache-Control":"no-cache","X-AspNet-Version":"4.0.30319","x-ms-keyvault-region":"westus","Expires":"-1","Content-Length":"256","x-ms-request-id":"7aab733d-2360-44df-885a-e66280bc1ed1","x-ms-keyvault-service-version":"1.0.0.736","Body":"{\"value\":\"AAECAwQFBgcICQoLDA0ODw\",\"contentType\":\"application/octet-stream\",\"id\":\"https://javasdktestvault.vault.azure.net/secrets/JavaExtensionSecret/7109e36e2c674805b977787e22b1d337\",\"attributes\":{\"enabled\":true,\"created\":1452797246,\"updated\":1452797246}}","Content-Type":"application/json; charset=utf-8","X-Powered-By":"ASP.NET"},{"User-Agent":"Azure-SDK-For-Java","Method":"GET","Uri":"/secrets/JavaExtensionSecret?api-version=2015-06-01","Content-Type":"application/json"},{"Server":"Microsoft-IIS/8.5","Pragma":"no-cache","StatusCode":"200","Date":"Thu, 14 Jan 2016 18:47:26 GMT","Strict-Transport-Security":"max-age=31536000;includeSubDomains","Cache-Control":"no-cache","X-AspNet-Version":"4.0.30319","x-ms-keyvault-region":"westus","Expires":"-1","Content-Length":"256","x-ms-request-id":"14ad569e-47df-4836-a004-a15b8f86089e","x-ms-keyvault-service-version":"1.0.0.736","Body":"{\"value\":\"AAECAwQFBgcICQoLDA0ODw\",\"contentType\":\"application/octet-stream\",\"id\":\"https://javasdktestvault.vault.azure.net/secrets/JavaExtensionSecret/7109e36e2c674805b977787e22b1d337\",\"attributes\":{\"enabled\":true,\"created\":1452797246,\"updated\":1452797246}}","Content-Type":"application/json; charset=utf-8","X-Powered-By":"ASP.NET"},{"User-Agent":"Azure-SDK-For-Java","Method":"GET","Uri":"/secrets/JavaExtensionSecret/7109e36e2c674805b977787e22b1d337?api-version=2015-06-01","Content-Type":"application/json"},{"Server":"Microsoft-IIS/8.5","Pragma":"no-cache","StatusCode":"200","Date":"Thu, 14 Jan 2016 18:47:26 GMT","Strict-Transport-Security":"max-age=31536000;includeSubDomains","Cache-Control":"no-cache","X-AspNet-Version":"4.0.30319","x-ms-keyvault-region":"westus","Expires":"-1","Content-Length":"256","x-ms-request-id":"078c50d2-2561-471f-aafb-889e07cb066e","x-ms-keyvault-service-version":"1.0.0.736","Body":"{\"value\":\"AAECAwQFBgcICQoLDA0ODw\",\"contentType\":\"application/octet-stream\",\"id\":\"https://javasdktestvault.vault.azure.net/secrets/JavaExtensionSecret/7109e36e2c674805b977787e22b1d337\",\"attributes\":{\"enabled\":true,\"created\":1452797246,\"updated\":1452797246}}","Content-Type":"application/json; charset=utf-8","X-Powered-By":"ASP.NET"},{"User-Agent":"Azure-SDK-For-Java","Method":"DELETE","Uri":"/secrets/JavaExtensionSecret?api-version=2015-06-01","Content-Type":"application/json"},{"Server":"Microsoft-IIS/8.5","Pragma":"no-cache","StatusCode":"200","Date":"Thu, 14 Jan 2016 18:47:27 GMT","Strict-Transport-Security":"max-age=31536000;includeSubDomains","Cache-Control":"no-cache","X-AspNet-Version":"4.0.30319","x-ms-keyvault-region":"westus","Expires":"-1","Content-Length":"223","x-ms-request-id":"bc1fd826-11db-4537-9289-ab130aeb6a19","x-ms-keyvault-service-version":"1.0.0.736","Body":"{\"contentType\":\"application/octet-stream\",\"id\":\"https://javasdktestvault.vault.azure.net/secrets/JavaExtensionSecret/7109e36e2c674805b977787e22b1d337\",\"attributes\":{\"enabled\":true,\"created\":1452797246,\"updated\":1452797246}}","Content-Type":"application/json; charset=utf-8","X-Powered-By":"ASP.NET"}] \ No newline at end of file +[{"User-Agent":"Azure-SDK-For-Java","Method":"PUT","Uri":"/secrets/JavaExtensionSecret?api-version=2015-06-01","Content-Type":"application/json"},{"Server":"Microsoft-IIS/8.5","Pragma":"no-cache","StatusCode":"200","Date":"Wed, 09 Mar 2016 00:50:10 GMT","Strict-Transport-Security":"max-age=31536000;includeSubDomains","Cache-Control":"no-cache","X-AspNet-Version":"4.0.30319","x-ms-keyvault-region":"westus","Expires":"-1","Content-Length":"256","x-ms-request-id":"d286cbe6-1437-497a-a63d-e455abf7b048","x-ms-keyvault-service-version":"1.0.0.744","Body":"{\"value\":\"AAECAwQFBgcICQoLDA0ODw\",\"contentType\":\"application/octet-stream\",\"id\":\"https://javasdktestvault.vault.azure.net/secrets/JavaExtensionSecret/960755e71c464a9b969cf6af1efc6492\",\"attributes\":{\"enabled\":true,\"created\":1457484611,\"updated\":1457484611}}","Content-Type":"application/json; charset=utf-8","X-Powered-By":"ASP.NET"},{"User-Agent":"Azure-SDK-For-Java","Method":"GET","Uri":"/secrets/JavaExtensionSecret?api-version=2015-06-01","Content-Type":"application/json"},{"Server":"Microsoft-IIS/8.5","Pragma":"no-cache","StatusCode":"200","Date":"Wed, 09 Mar 2016 00:50:10 GMT","Strict-Transport-Security":"max-age=31536000;includeSubDomains","Cache-Control":"no-cache","X-AspNet-Version":"4.0.30319","x-ms-keyvault-region":"westus","Expires":"-1","Content-Length":"256","x-ms-request-id":"8fcf2537-8591-4723-91d6-c58e26b9e68c","x-ms-keyvault-service-version":"1.0.0.744","Body":"{\"value\":\"AAECAwQFBgcICQoLDA0ODw\",\"contentType\":\"application/octet-stream\",\"id\":\"https://javasdktestvault.vault.azure.net/secrets/JavaExtensionSecret/960755e71c464a9b969cf6af1efc6492\",\"attributes\":{\"enabled\":true,\"created\":1457484611,\"updated\":1457484611}}","Content-Type":"application/json; charset=utf-8","X-Powered-By":"ASP.NET"},{"User-Agent":"Azure-SDK-For-Java","Method":"GET","Uri":"/secrets/JavaExtensionSecret/960755e71c464a9b969cf6af1efc6492?api-version=2015-06-01","Content-Type":"application/json"},{"Server":"Microsoft-IIS/8.5","Pragma":"no-cache","StatusCode":"200","Date":"Wed, 09 Mar 2016 00:50:10 GMT","Strict-Transport-Security":"max-age=31536000;includeSubDomains","Cache-Control":"no-cache","X-AspNet-Version":"4.0.30319","x-ms-keyvault-region":"westus","Expires":"-1","Content-Length":"256","x-ms-request-id":"93edc192-ce14-4c1d-97e8-38af6f042d94","x-ms-keyvault-service-version":"1.0.0.744","Body":"{\"value\":\"AAECAwQFBgcICQoLDA0ODw\",\"contentType\":\"application/octet-stream\",\"id\":\"https://javasdktestvault.vault.azure.net/secrets/JavaExtensionSecret/960755e71c464a9b969cf6af1efc6492\",\"attributes\":{\"enabled\":true,\"created\":1457484611,\"updated\":1457484611}}","Content-Type":"application/json; charset=utf-8","X-Powered-By":"ASP.NET"},{"User-Agent":"Azure-SDK-For-Java","Method":"DELETE","Uri":"/secrets/JavaExtensionSecret?api-version=2015-06-01","Content-Type":"application/json"},{"Server":"Microsoft-IIS/8.5","Pragma":"no-cache","StatusCode":"200","Date":"Wed, 09 Mar 2016 00:50:12 GMT","Strict-Transport-Security":"max-age=31536000;includeSubDomains","Cache-Control":"no-cache","X-AspNet-Version":"4.0.30319","x-ms-keyvault-region":"westus","Expires":"-1","Content-Length":"223","x-ms-request-id":"9dc98370-bc48-433a-9890-2b3148034268","x-ms-keyvault-service-version":"1.0.0.744","Body":"{\"contentType\":\"application/octet-stream\",\"id\":\"https://javasdktestvault.vault.azure.net/secrets/JavaExtensionSecret/960755e71c464a9b969cf6af1efc6492\",\"attributes\":{\"enabled\":true,\"created\":1457484611,\"updated\":1457484611}}","Content-Type":"application/json; charset=utf-8","X-Powered-By":"ASP.NET"}] \ No newline at end of file diff --git a/services/keyvault/azure-keyvault-extensions/src/test/resources/session-records/KeyVaultKeyResolverTest-KeyVault_KeyVaultKeyResolver_Secret192Base64.json b/services/keyvault/azure-keyvault-extensions/src/test/resources/session-records/KeyVaultKeyResolverBCProviderTest-KeyVault_KeyVaultKeyResolver_Secret192Base64.json similarity index 52% rename from services/keyvault/azure-keyvault-extensions/src/test/resources/session-records/KeyVaultKeyResolverTest-KeyVault_KeyVaultKeyResolver_Secret192Base64.json rename to services/keyvault/azure-keyvault-extensions/src/test/resources/session-records/KeyVaultKeyResolverBCProviderTest-KeyVault_KeyVaultKeyResolver_Secret192Base64.json index 9809d3342980..7e5e5e6716a5 100644 --- a/services/keyvault/azure-keyvault-extensions/src/test/resources/session-records/KeyVaultKeyResolverTest-KeyVault_KeyVaultKeyResolver_Secret192Base64.json +++ b/services/keyvault/azure-keyvault-extensions/src/test/resources/session-records/KeyVaultKeyResolverBCProviderTest-KeyVault_KeyVaultKeyResolver_Secret192Base64.json @@ -1 +1 @@ -[{"User-Agent":"Azure-SDK-For-Java","Method":"PUT","Uri":"/secrets/JavaExtensionSecret?api-version=2015-06-01","Content-Type":"application/json"},{"Server":"Microsoft-IIS/8.5","Pragma":"no-cache","StatusCode":"200","Date":"Thu, 14 Jan 2016 18:47:24 GMT","Strict-Transport-Security":"max-age=31536000;includeSubDomains","Cache-Control":"no-cache","X-AspNet-Version":"4.0.30319","x-ms-keyvault-region":"westus","Expires":"-1","Content-Length":"266","x-ms-request-id":"31bc366b-e124-49f1-bfeb-dc7d4cce25f6","x-ms-keyvault-service-version":"1.0.0.736","Body":"{\"value\":\"AAECAwQFBgcICQoLDA0ODxAREhMUFRYX\",\"contentType\":\"application/octet-stream\",\"id\":\"https://javasdktestvault.vault.azure.net/secrets/JavaExtensionSecret/51888ccfeb1d4107b54cb68436ee3c14\",\"attributes\":{\"enabled\":true,\"created\":1452797244,\"updated\":1452797244}}","Content-Type":"application/json; charset=utf-8","X-Powered-By":"ASP.NET"},{"User-Agent":"Azure-SDK-For-Java","Method":"GET","Uri":"/secrets/JavaExtensionSecret?api-version=2015-06-01","Content-Type":"application/json"},{"Server":"Microsoft-IIS/8.5","Pragma":"no-cache","StatusCode":"200","Date":"Thu, 14 Jan 2016 18:47:24 GMT","Strict-Transport-Security":"max-age=31536000;includeSubDomains","Cache-Control":"no-cache","X-AspNet-Version":"4.0.30319","x-ms-keyvault-region":"westus","Expires":"-1","Content-Length":"266","x-ms-request-id":"8202b6fa-28ca-442c-bef6-95807bc7512b","x-ms-keyvault-service-version":"1.0.0.736","Body":"{\"value\":\"AAECAwQFBgcICQoLDA0ODxAREhMUFRYX\",\"contentType\":\"application/octet-stream\",\"id\":\"https://javasdktestvault.vault.azure.net/secrets/JavaExtensionSecret/51888ccfeb1d4107b54cb68436ee3c14\",\"attributes\":{\"enabled\":true,\"created\":1452797244,\"updated\":1452797244}}","Content-Type":"application/json; charset=utf-8","X-Powered-By":"ASP.NET"},{"User-Agent":"Azure-SDK-For-Java","Method":"GET","Uri":"/secrets/JavaExtensionSecret/51888ccfeb1d4107b54cb68436ee3c14?api-version=2015-06-01","Content-Type":"application/json"},{"Server":"Microsoft-IIS/8.5","Pragma":"no-cache","StatusCode":"200","Date":"Thu, 14 Jan 2016 18:47:24 GMT","Strict-Transport-Security":"max-age=31536000;includeSubDomains","Cache-Control":"no-cache","X-AspNet-Version":"4.0.30319","x-ms-keyvault-region":"westus","Expires":"-1","Content-Length":"266","x-ms-request-id":"392d258e-fb03-45f5-9ce4-0ce2d2e96eec","x-ms-keyvault-service-version":"1.0.0.736","Body":"{\"value\":\"AAECAwQFBgcICQoLDA0ODxAREhMUFRYX\",\"contentType\":\"application/octet-stream\",\"id\":\"https://javasdktestvault.vault.azure.net/secrets/JavaExtensionSecret/51888ccfeb1d4107b54cb68436ee3c14\",\"attributes\":{\"enabled\":true,\"created\":1452797244,\"updated\":1452797244}}","Content-Type":"application/json; charset=utf-8","X-Powered-By":"ASP.NET"},{"User-Agent":"Azure-SDK-For-Java","Method":"DELETE","Uri":"/secrets/JavaExtensionSecret?api-version=2015-06-01","Content-Type":"application/json"},{"Server":"Microsoft-IIS/8.5","Pragma":"no-cache","StatusCode":"200","Date":"Thu, 14 Jan 2016 18:47:24 GMT","Strict-Transport-Security":"max-age=31536000;includeSubDomains","Cache-Control":"no-cache","X-AspNet-Version":"4.0.30319","x-ms-keyvault-region":"westus","Expires":"-1","Content-Length":"223","x-ms-request-id":"7816c9e6-9bb4-4750-bce6-02a6f13b5bd6","x-ms-keyvault-service-version":"1.0.0.736","Body":"{\"contentType\":\"application/octet-stream\",\"id\":\"https://javasdktestvault.vault.azure.net/secrets/JavaExtensionSecret/51888ccfeb1d4107b54cb68436ee3c14\",\"attributes\":{\"enabled\":true,\"created\":1452797244,\"updated\":1452797244}}","Content-Type":"application/json; charset=utf-8","X-Powered-By":"ASP.NET"}] \ No newline at end of file +[{"User-Agent":"Azure-SDK-For-Java","Method":"PUT","Uri":"/secrets/JavaExtensionSecret?api-version=2015-06-01","Content-Type":"application/json"},{"Server":"Microsoft-IIS/8.5","Pragma":"no-cache","StatusCode":"200","Date":"Wed, 09 Mar 2016 00:50:07 GMT","Strict-Transport-Security":"max-age=31536000;includeSubDomains","Cache-Control":"no-cache","X-AspNet-Version":"4.0.30319","x-ms-keyvault-region":"westus","Expires":"-1","Content-Length":"266","x-ms-request-id":"0fd36c52-e5e7-4f8a-aec0-30dd15a31640","x-ms-keyvault-service-version":"1.0.0.744","Body":"{\"value\":\"AAECAwQFBgcICQoLDA0ODxAREhMUFRYX\",\"contentType\":\"application/octet-stream\",\"id\":\"https://javasdktestvault.vault.azure.net/secrets/JavaExtensionSecret/02a08ad769ef4fd48d1c1cfe735e6cd8\",\"attributes\":{\"enabled\":true,\"created\":1457484607,\"updated\":1457484607}}","Content-Type":"application/json; charset=utf-8","X-Powered-By":"ASP.NET"},{"User-Agent":"Azure-SDK-For-Java","Method":"GET","Uri":"/secrets/JavaExtensionSecret?api-version=2015-06-01","Content-Type":"application/json"},{"Server":"Microsoft-IIS/8.5","Pragma":"no-cache","StatusCode":"200","Date":"Wed, 09 Mar 2016 00:50:07 GMT","Strict-Transport-Security":"max-age=31536000;includeSubDomains","Cache-Control":"no-cache","X-AspNet-Version":"4.0.30319","x-ms-keyvault-region":"westus","Expires":"-1","Content-Length":"266","x-ms-request-id":"f57eb1f4-3c01-4281-96bd-882242ecc53f","x-ms-keyvault-service-version":"1.0.0.744","Body":"{\"value\":\"AAECAwQFBgcICQoLDA0ODxAREhMUFRYX\",\"contentType\":\"application/octet-stream\",\"id\":\"https://javasdktestvault.vault.azure.net/secrets/JavaExtensionSecret/02a08ad769ef4fd48d1c1cfe735e6cd8\",\"attributes\":{\"enabled\":true,\"created\":1457484607,\"updated\":1457484607}}","Content-Type":"application/json; charset=utf-8","X-Powered-By":"ASP.NET"},{"User-Agent":"Azure-SDK-For-Java","Method":"GET","Uri":"/secrets/JavaExtensionSecret/02a08ad769ef4fd48d1c1cfe735e6cd8?api-version=2015-06-01","Content-Type":"application/json"},{"Server":"Microsoft-IIS/8.5","Pragma":"no-cache","StatusCode":"200","Date":"Wed, 09 Mar 2016 00:50:07 GMT","Strict-Transport-Security":"max-age=31536000;includeSubDomains","Cache-Control":"no-cache","X-AspNet-Version":"4.0.30319","x-ms-keyvault-region":"westus","Expires":"-1","Content-Length":"266","x-ms-request-id":"eb38c9d0-1f79-4101-a7c5-b8f3f81d5ccf","x-ms-keyvault-service-version":"1.0.0.744","Body":"{\"value\":\"AAECAwQFBgcICQoLDA0ODxAREhMUFRYX\",\"contentType\":\"application/octet-stream\",\"id\":\"https://javasdktestvault.vault.azure.net/secrets/JavaExtensionSecret/02a08ad769ef4fd48d1c1cfe735e6cd8\",\"attributes\":{\"enabled\":true,\"created\":1457484607,\"updated\":1457484607}}","Content-Type":"application/json; charset=utf-8","X-Powered-By":"ASP.NET"},{"User-Agent":"Azure-SDK-For-Java","Method":"DELETE","Uri":"/secrets/JavaExtensionSecret?api-version=2015-06-01","Content-Type":"application/json"},{"Server":"Microsoft-IIS/8.5","Pragma":"no-cache","StatusCode":"200","Date":"Wed, 09 Mar 2016 00:50:08 GMT","Strict-Transport-Security":"max-age=31536000;includeSubDomains","Cache-Control":"no-cache","X-AspNet-Version":"4.0.30319","x-ms-keyvault-region":"westus","Expires":"-1","Content-Length":"223","x-ms-request-id":"8f56398d-0be0-4f8a-ba52-73559dd68ff4","x-ms-keyvault-service-version":"1.0.0.744","Body":"{\"contentType\":\"application/octet-stream\",\"id\":\"https://javasdktestvault.vault.azure.net/secrets/JavaExtensionSecret/02a08ad769ef4fd48d1c1cfe735e6cd8\",\"attributes\":{\"enabled\":true,\"created\":1457484607,\"updated\":1457484607}}","Content-Type":"application/json; charset=utf-8","X-Powered-By":"ASP.NET"}] \ No newline at end of file diff --git a/services/keyvault/azure-keyvault-extensions/src/test/resources/session-records/KeyVaultKeyResolverTest-KeyVault_KeyVaultKeyResolver_Secret256Base64.json b/services/keyvault/azure-keyvault-extensions/src/test/resources/session-records/KeyVaultKeyResolverBCProviderTest-KeyVault_KeyVaultKeyResolver_Secret256Base64.json similarity index 56% rename from services/keyvault/azure-keyvault-extensions/src/test/resources/session-records/KeyVaultKeyResolverTest-KeyVault_KeyVaultKeyResolver_Secret256Base64.json rename to services/keyvault/azure-keyvault-extensions/src/test/resources/session-records/KeyVaultKeyResolverBCProviderTest-KeyVault_KeyVaultKeyResolver_Secret256Base64.json index 349f820d802b..7793da0360f5 100644 --- a/services/keyvault/azure-keyvault-extensions/src/test/resources/session-records/KeyVaultKeyResolverTest-KeyVault_KeyVaultKeyResolver_Secret256Base64.json +++ b/services/keyvault/azure-keyvault-extensions/src/test/resources/session-records/KeyVaultKeyResolverBCProviderTest-KeyVault_KeyVaultKeyResolver_Secret256Base64.json @@ -1 +1 @@ -[{"User-Agent":"Azure-SDK-For-Java","Method":"PUT","Uri":"/secrets/JavaExtensionSecret?api-version=2015-06-01","Content-Type":"application/json"},{"Server":"Microsoft-IIS/8.5","Pragma":"no-cache","StatusCode":"200","Date":"Thu, 14 Jan 2016 18:47:23 GMT","Strict-Transport-Security":"max-age=31536000;includeSubDomains","Cache-Control":"no-cache","X-AspNet-Version":"4.0.30319","x-ms-keyvault-region":"westus","Expires":"-1","Content-Length":"277","x-ms-request-id":"ab3014a6-6e61-406e-879e-46f001f12acb","x-ms-keyvault-service-version":"1.0.0.736","Body":"{\"value\":\"AAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8\",\"contentType\":\"application/octet-stream\",\"id\":\"https://javasdktestvault.vault.azure.net/secrets/JavaExtensionSecret/398e67ebd476446f9e222b21ae11c135\",\"attributes\":{\"enabled\":true,\"created\":1452797242,\"updated\":1452797242}}","Content-Type":"application/json; charset=utf-8","X-Powered-By":"ASP.NET"},{"User-Agent":"Azure-SDK-For-Java","Method":"GET","Uri":"/secrets/JavaExtensionSecret?api-version=2015-06-01","Content-Type":"application/json"},{"Server":"Microsoft-IIS/8.5","Pragma":"no-cache","StatusCode":"200","Date":"Thu, 14 Jan 2016 18:47:23 GMT","Strict-Transport-Security":"max-age=31536000;includeSubDomains","Cache-Control":"no-cache","X-AspNet-Version":"4.0.30319","x-ms-keyvault-region":"westus","Expires":"-1","Content-Length":"277","x-ms-request-id":"d205129f-c400-4b59-9aa9-62a314aff0f8","x-ms-keyvault-service-version":"1.0.0.736","Body":"{\"value\":\"AAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8\",\"contentType\":\"application/octet-stream\",\"id\":\"https://javasdktestvault.vault.azure.net/secrets/JavaExtensionSecret/398e67ebd476446f9e222b21ae11c135\",\"attributes\":{\"enabled\":true,\"created\":1452797242,\"updated\":1452797242}}","Content-Type":"application/json; charset=utf-8","X-Powered-By":"ASP.NET"},{"User-Agent":"Azure-SDK-For-Java","Method":"GET","Uri":"/secrets/JavaExtensionSecret/398e67ebd476446f9e222b21ae11c135?api-version=2015-06-01","Content-Type":"application/json"},{"Server":"Microsoft-IIS/8.5","Pragma":"no-cache","StatusCode":"200","Date":"Thu, 14 Jan 2016 18:47:23 GMT","Strict-Transport-Security":"max-age=31536000;includeSubDomains","Cache-Control":"no-cache","X-AspNet-Version":"4.0.30319","x-ms-keyvault-region":"westus","Expires":"-1","Content-Length":"277","x-ms-request-id":"3fa4271d-b080-4e88-ad7b-4dea922dd027","x-ms-keyvault-service-version":"1.0.0.736","Body":"{\"value\":\"AAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8\",\"contentType\":\"application/octet-stream\",\"id\":\"https://javasdktestvault.vault.azure.net/secrets/JavaExtensionSecret/398e67ebd476446f9e222b21ae11c135\",\"attributes\":{\"enabled\":true,\"created\":1452797242,\"updated\":1452797242}}","Content-Type":"application/json; charset=utf-8","X-Powered-By":"ASP.NET"},{"User-Agent":"Azure-SDK-For-Java","Method":"DELETE","Uri":"/secrets/JavaExtensionSecret?api-version=2015-06-01","Content-Type":"application/json"},{"Server":"Microsoft-IIS/8.5","Pragma":"no-cache","StatusCode":"200","Date":"Thu, 14 Jan 2016 18:47:23 GMT","Strict-Transport-Security":"max-age=31536000;includeSubDomains","Cache-Control":"no-cache","X-AspNet-Version":"4.0.30319","x-ms-keyvault-region":"westus","Expires":"-1","Content-Length":"223","x-ms-request-id":"a8d2ee5f-9502-4945-9f24-c1489dc7fba7","x-ms-keyvault-service-version":"1.0.0.736","Body":"{\"contentType\":\"application/octet-stream\",\"id\":\"https://javasdktestvault.vault.azure.net/secrets/JavaExtensionSecret/398e67ebd476446f9e222b21ae11c135\",\"attributes\":{\"enabled\":true,\"created\":1452797242,\"updated\":1452797242}}","Content-Type":"application/json; charset=utf-8","X-Powered-By":"ASP.NET"}] \ No newline at end of file +[{"User-Agent":"Azure-SDK-For-Java","Method":"PUT","Uri":"/secrets/JavaExtensionSecret?api-version=2015-06-01","Content-Type":"application/json"},{"Server":"Microsoft-IIS/8.5","Pragma":"no-cache","StatusCode":"200","Date":"Wed, 09 Mar 2016 00:50:05 GMT","Strict-Transport-Security":"max-age=31536000;includeSubDomains","Cache-Control":"no-cache","X-AspNet-Version":"4.0.30319","x-ms-keyvault-region":"westus","Expires":"-1","Content-Length":"277","x-ms-request-id":"e32698c2-cca5-49c1-874f-a3fad18ef283","x-ms-keyvault-service-version":"1.0.0.744","Body":"{\"value\":\"AAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8\",\"contentType\":\"application/octet-stream\",\"id\":\"https://javasdktestvault.vault.azure.net/secrets/JavaExtensionSecret/a621892f19084858857c9f2aa4db2cb1\",\"attributes\":{\"enabled\":true,\"created\":1457484606,\"updated\":1457484606}}","Content-Type":"application/json; charset=utf-8","X-Powered-By":"ASP.NET"},{"User-Agent":"Azure-SDK-For-Java","Method":"GET","Uri":"/secrets/JavaExtensionSecret?api-version=2015-06-01","Content-Type":"application/json"},{"Server":"Microsoft-IIS/8.5","Pragma":"no-cache","StatusCode":"200","Date":"Wed, 09 Mar 2016 00:50:05 GMT","Strict-Transport-Security":"max-age=31536000;includeSubDomains","Cache-Control":"no-cache","X-AspNet-Version":"4.0.30319","x-ms-keyvault-region":"westus","Expires":"-1","Content-Length":"277","x-ms-request-id":"ecb8b8b3-579c-48fa-ae8e-80efecbb1a4f","x-ms-keyvault-service-version":"1.0.0.744","Body":"{\"value\":\"AAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8\",\"contentType\":\"application/octet-stream\",\"id\":\"https://javasdktestvault.vault.azure.net/secrets/JavaExtensionSecret/a621892f19084858857c9f2aa4db2cb1\",\"attributes\":{\"enabled\":true,\"created\":1457484606,\"updated\":1457484606}}","Content-Type":"application/json; charset=utf-8","X-Powered-By":"ASP.NET"},{"User-Agent":"Azure-SDK-For-Java","Method":"GET","Uri":"/secrets/JavaExtensionSecret/a621892f19084858857c9f2aa4db2cb1?api-version=2015-06-01","Content-Type":"application/json"},{"Server":"Microsoft-IIS/8.5","Pragma":"no-cache","StatusCode":"200","Date":"Wed, 09 Mar 2016 00:50:05 GMT","Strict-Transport-Security":"max-age=31536000;includeSubDomains","Cache-Control":"no-cache","X-AspNet-Version":"4.0.30319","x-ms-keyvault-region":"westus","Expires":"-1","Content-Length":"277","x-ms-request-id":"41cc1b67-1604-496c-aac6-220854706c9b","x-ms-keyvault-service-version":"1.0.0.744","Body":"{\"value\":\"AAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8\",\"contentType\":\"application/octet-stream\",\"id\":\"https://javasdktestvault.vault.azure.net/secrets/JavaExtensionSecret/a621892f19084858857c9f2aa4db2cb1\",\"attributes\":{\"enabled\":true,\"created\":1457484606,\"updated\":1457484606}}","Content-Type":"application/json; charset=utf-8","X-Powered-By":"ASP.NET"},{"User-Agent":"Azure-SDK-For-Java","Method":"DELETE","Uri":"/secrets/JavaExtensionSecret?api-version=2015-06-01","Content-Type":"application/json"},{"Server":"Microsoft-IIS/8.5","Pragma":"no-cache","StatusCode":"200","Date":"Wed, 09 Mar 2016 00:50:06 GMT","Strict-Transport-Security":"max-age=31536000;includeSubDomains","Cache-Control":"no-cache","X-AspNet-Version":"4.0.30319","x-ms-keyvault-region":"westus","Expires":"-1","Content-Length":"223","x-ms-request-id":"0ed9e56b-1fbc-4a6e-ae53-17f1eb75ba9e","x-ms-keyvault-service-version":"1.0.0.744","Body":"{\"contentType\":\"application/octet-stream\",\"id\":\"https://javasdktestvault.vault.azure.net/secrets/JavaExtensionSecret/a621892f19084858857c9f2aa4db2cb1\",\"attributes\":{\"enabled\":true,\"created\":1457484606,\"updated\":1457484606}}","Content-Type":"application/json; charset=utf-8","X-Powered-By":"ASP.NET"}] \ No newline at end of file diff --git a/services/keyvault/azure-keyvault-extensions/src/test/resources/session-records/KeyVaultKeyResolverDefaultProviderTest-KeyVault_KeyVaultKeyResolver_Key.json b/services/keyvault/azure-keyvault-extensions/src/test/resources/session-records/KeyVaultKeyResolverDefaultProviderTest-KeyVault_KeyVaultKeyResolver_Key.json new file mode 100644 index 000000000000..718f020d8585 --- /dev/null +++ b/services/keyvault/azure-keyvault-extensions/src/test/resources/session-records/KeyVaultKeyResolverDefaultProviderTest-KeyVault_KeyVaultKeyResolver_Key.json @@ -0,0 +1 @@ +[{"User-Agent":"Azure-SDK-For-Java","Method":"POST","Uri":"/keys/JavaExtensionKey/create?api-version=2015-06-01","Content-Type":"application/json"},{"Server":"Microsoft-IIS/8.5","Pragma":"no-cache","StatusCode":"200","Date":"Wed, 09 Mar 2016 00:50:16 GMT","Strict-Transport-Security":"max-age=31536000;includeSubDomains","Cache-Control":"no-cache","X-AspNet-Version":"4.0.30319","x-ms-keyvault-region":"westus","Expires":"-1","Content-Length":"627","x-ms-request-id":"1441d35e-2239-4814-a65f-8c1666647694","x-ms-keyvault-service-version":"1.0.0.744","Body":"{\"key\":{\"kid\":\"https://javasdktestvault.vault.azure.net/keys/JavaExtensionKey/a79ba2089f334f34a8ee68624d0d11fa\",\"kty\":\"RSA\",\"key_ops\":[\"encrypt\",\"decrypt\",\"sign\",\"verify\",\"wrapKey\",\"unwrapKey\"],\"n\":\"7Eq4KYTLItpSyawXjbRkZlS3zcAL24N_vhgDuXCijd1Ocw-CAatdsWRMTI8ZWQi2m1CuIRLh1uzbgEjywGRo0adfcEDTt-3VYUvF6dwIUzi9O4HNz-dty9uJboN2ybkDHv_vGz1QlYWuZKWmQ6XaW_Y-ua01lBLKd97CgnEwQ1FtU4StZfDUx-TFjkwe2j09rvvZst32Fr44n_1-AeBcpsJzzJuCASVBcK-mh1os537zvCDyCm-Ac_i2CDCbdp6sudcSf7OJ1FYkPmjIgKzoSxRimAUg-WEB1t-hXNCqGLo1xItp9h8kgRMt6ETewOSwLtqhtHB8_3UHuaB-gSqpAw\",\"e\":\"AQAB\"},\"attributes\":{\"enabled\":true,\"created\":1457484617,\"updated\":1457484617}}","Content-Type":"application/json; charset=utf-8","X-Powered-By":"ASP.NET"},{"User-Agent":"Azure-SDK-For-Java","Method":"GET","Uri":"/keys/JavaExtensionKey/?api-version=2015-06-01"},{"Server":"Microsoft-IIS/8.5","Pragma":"no-cache","StatusCode":"200","Date":"Wed, 09 Mar 2016 00:50:16 GMT","Strict-Transport-Security":"max-age=31536000;includeSubDomains","Cache-Control":"no-cache","X-AspNet-Version":"4.0.30319","x-ms-keyvault-region":"westus","Expires":"-1","Content-Length":"627","x-ms-request-id":"f018ea4a-fb04-4ee8-b45a-5862ced1c213","x-ms-keyvault-service-version":"1.0.0.744","Body":"{\"key\":{\"kid\":\"https://javasdktestvault.vault.azure.net/keys/JavaExtensionKey/a79ba2089f334f34a8ee68624d0d11fa\",\"kty\":\"RSA\",\"key_ops\":[\"encrypt\",\"decrypt\",\"sign\",\"verify\",\"wrapKey\",\"unwrapKey\"],\"n\":\"7Eq4KYTLItpSyawXjbRkZlS3zcAL24N_vhgDuXCijd1Ocw-CAatdsWRMTI8ZWQi2m1CuIRLh1uzbgEjywGRo0adfcEDTt-3VYUvF6dwIUzi9O4HNz-dty9uJboN2ybkDHv_vGz1QlYWuZKWmQ6XaW_Y-ua01lBLKd97CgnEwQ1FtU4StZfDUx-TFjkwe2j09rvvZst32Fr44n_1-AeBcpsJzzJuCASVBcK-mh1os537zvCDyCm-Ac_i2CDCbdp6sudcSf7OJ1FYkPmjIgKzoSxRimAUg-WEB1t-hXNCqGLo1xItp9h8kgRMt6ETewOSwLtqhtHB8_3UHuaB-gSqpAw\",\"e\":\"AQAB\"},\"attributes\":{\"enabled\":true,\"created\":1457484617,\"updated\":1457484617}}","Content-Type":"application/json; charset=utf-8","X-Powered-By":"ASP.NET"},{"User-Agent":"Azure-SDK-For-Java","Method":"GET","Uri":"/keys/JavaExtensionKey/a79ba2089f334f34a8ee68624d0d11fa/?api-version=2015-06-01"},{"Server":"Microsoft-IIS/8.5","Pragma":"no-cache","StatusCode":"200","Date":"Wed, 09 Mar 2016 00:50:17 GMT","Strict-Transport-Security":"max-age=31536000;includeSubDomains","Cache-Control":"no-cache","X-AspNet-Version":"4.0.30319","x-ms-keyvault-region":"westus","Expires":"-1","Content-Length":"627","x-ms-request-id":"fd41a62d-07e4-4e11-8b81-f69acd846961","x-ms-keyvault-service-version":"1.0.0.744","Body":"{\"key\":{\"kid\":\"https://javasdktestvault.vault.azure.net/keys/JavaExtensionKey/a79ba2089f334f34a8ee68624d0d11fa\",\"kty\":\"RSA\",\"key_ops\":[\"encrypt\",\"decrypt\",\"sign\",\"verify\",\"wrapKey\",\"unwrapKey\"],\"n\":\"7Eq4KYTLItpSyawXjbRkZlS3zcAL24N_vhgDuXCijd1Ocw-CAatdsWRMTI8ZWQi2m1CuIRLh1uzbgEjywGRo0adfcEDTt-3VYUvF6dwIUzi9O4HNz-dty9uJboN2ybkDHv_vGz1QlYWuZKWmQ6XaW_Y-ua01lBLKd97CgnEwQ1FtU4StZfDUx-TFjkwe2j09rvvZst32Fr44n_1-AeBcpsJzzJuCASVBcK-mh1os537zvCDyCm-Ac_i2CDCbdp6sudcSf7OJ1FYkPmjIgKzoSxRimAUg-WEB1t-hXNCqGLo1xItp9h8kgRMt6ETewOSwLtqhtHB8_3UHuaB-gSqpAw\",\"e\":\"AQAB\"},\"attributes\":{\"enabled\":true,\"created\":1457484617,\"updated\":1457484617}}","Content-Type":"application/json; charset=utf-8","X-Powered-By":"ASP.NET"},{"User-Agent":"Azure-SDK-For-Java","Method":"DELETE","Uri":"/keys/JavaExtensionKey/delete?api-version=2015-06-01"},{"Server":"Microsoft-IIS/8.5","Pragma":"no-cache","StatusCode":"200","Date":"Wed, 09 Mar 2016 00:50:17 GMT","Strict-Transport-Security":"max-age=31536000;includeSubDomains","Cache-Control":"no-cache","X-AspNet-Version":"4.0.30319","x-ms-keyvault-region":"westus","Expires":"-1","Content-Length":"627","x-ms-request-id":"65e7d6eb-09dc-4a9a-81ea-adf88b2c9917","x-ms-keyvault-service-version":"1.0.0.744","Body":"{\"key\":{\"kid\":\"https://javasdktestvault.vault.azure.net/keys/JavaExtensionKey/a79ba2089f334f34a8ee68624d0d11fa\",\"kty\":\"RSA\",\"key_ops\":[\"encrypt\",\"decrypt\",\"sign\",\"verify\",\"wrapKey\",\"unwrapKey\"],\"n\":\"7Eq4KYTLItpSyawXjbRkZlS3zcAL24N_vhgDuXCijd1Ocw-CAatdsWRMTI8ZWQi2m1CuIRLh1uzbgEjywGRo0adfcEDTt-3VYUvF6dwIUzi9O4HNz-dty9uJboN2ybkDHv_vGz1QlYWuZKWmQ6XaW_Y-ua01lBLKd97CgnEwQ1FtU4StZfDUx-TFjkwe2j09rvvZst32Fr44n_1-AeBcpsJzzJuCASVBcK-mh1os537zvCDyCm-Ac_i2CDCbdp6sudcSf7OJ1FYkPmjIgKzoSxRimAUg-WEB1t-hXNCqGLo1xItp9h8kgRMt6ETewOSwLtqhtHB8_3UHuaB-gSqpAw\",\"e\":\"AQAB\"},\"attributes\":{\"enabled\":true,\"created\":1457484617,\"updated\":1457484617}}","Content-Type":"application/json; charset=utf-8","X-Powered-By":"ASP.NET"}] \ No newline at end of file diff --git a/services/keyvault/azure-keyvault-extensions/src/test/resources/session-records/KeyVaultKeyResolverDefaultProviderTest-KeyVault_KeyVaultKeyResolver_Secret128Base64.json b/services/keyvault/azure-keyvault-extensions/src/test/resources/session-records/KeyVaultKeyResolverDefaultProviderTest-KeyVault_KeyVaultKeyResolver_Secret128Base64.json new file mode 100644 index 000000000000..74d9069ef442 --- /dev/null +++ b/services/keyvault/azure-keyvault-extensions/src/test/resources/session-records/KeyVaultKeyResolverDefaultProviderTest-KeyVault_KeyVaultKeyResolver_Secret128Base64.json @@ -0,0 +1 @@ +[{"User-Agent":"Azure-SDK-For-Java","Method":"PUT","Uri":"/secrets/JavaExtensionSecret?api-version=2015-06-01","Content-Type":"application/json"},{"Server":"Microsoft-IIS/8.5","Pragma":"no-cache","StatusCode":"200","Date":"Wed, 09 Mar 2016 00:50:17 GMT","Strict-Transport-Security":"max-age=31536000;includeSubDomains","Cache-Control":"no-cache","X-AspNet-Version":"4.0.30319","x-ms-keyvault-region":"westus","Expires":"-1","Content-Length":"256","x-ms-request-id":"6d2892dd-beb7-4a31-8782-5d317900ce40","x-ms-keyvault-service-version":"1.0.0.744","Body":"{\"value\":\"AAECAwQFBgcICQoLDA0ODw\",\"contentType\":\"application/octet-stream\",\"id\":\"https://javasdktestvault.vault.azure.net/secrets/JavaExtensionSecret/f7fb1460a3ae4f6a8bdb616cd179131c\",\"attributes\":{\"enabled\":true,\"created\":1457484617,\"updated\":1457484617}}","Content-Type":"application/json; charset=utf-8","X-Powered-By":"ASP.NET"},{"User-Agent":"Azure-SDK-For-Java","Method":"GET","Uri":"/secrets/JavaExtensionSecret?api-version=2015-06-01","Content-Type":"application/json"},{"Server":"Microsoft-IIS/8.5","Pragma":"no-cache","StatusCode":"200","Date":"Wed, 09 Mar 2016 00:50:17 GMT","Strict-Transport-Security":"max-age=31536000;includeSubDomains","Cache-Control":"no-cache","X-AspNet-Version":"4.0.30319","x-ms-keyvault-region":"westus","Expires":"-1","Content-Length":"256","x-ms-request-id":"9fec8aa4-6118-4f36-9ab3-bd74f209f1c8","x-ms-keyvault-service-version":"1.0.0.744","Body":"{\"value\":\"AAECAwQFBgcICQoLDA0ODw\",\"contentType\":\"application/octet-stream\",\"id\":\"https://javasdktestvault.vault.azure.net/secrets/JavaExtensionSecret/f7fb1460a3ae4f6a8bdb616cd179131c\",\"attributes\":{\"enabled\":true,\"created\":1457484617,\"updated\":1457484617}}","Content-Type":"application/json; charset=utf-8","X-Powered-By":"ASP.NET"},{"User-Agent":"Azure-SDK-For-Java","Method":"GET","Uri":"/secrets/JavaExtensionSecret/f7fb1460a3ae4f6a8bdb616cd179131c?api-version=2015-06-01","Content-Type":"application/json"},{"Server":"Microsoft-IIS/8.5","Pragma":"no-cache","StatusCode":"200","Date":"Wed, 09 Mar 2016 00:50:17 GMT","Strict-Transport-Security":"max-age=31536000;includeSubDomains","Cache-Control":"no-cache","X-AspNet-Version":"4.0.30319","x-ms-keyvault-region":"westus","Expires":"-1","Content-Length":"256","x-ms-request-id":"2934b645-e031-433e-abe2-0d07103f41dd","x-ms-keyvault-service-version":"1.0.0.744","Body":"{\"value\":\"AAECAwQFBgcICQoLDA0ODw\",\"contentType\":\"application/octet-stream\",\"id\":\"https://javasdktestvault.vault.azure.net/secrets/JavaExtensionSecret/f7fb1460a3ae4f6a8bdb616cd179131c\",\"attributes\":{\"enabled\":true,\"created\":1457484617,\"updated\":1457484617}}","Content-Type":"application/json; charset=utf-8","X-Powered-By":"ASP.NET"},{"User-Agent":"Azure-SDK-For-Java","Method":"DELETE","Uri":"/secrets/JavaExtensionSecret?api-version=2015-06-01","Content-Type":"application/json"},{"Server":"Microsoft-IIS/8.5","Pragma":"no-cache","StatusCode":"200","Date":"Wed, 09 Mar 2016 00:50:18 GMT","Strict-Transport-Security":"max-age=31536000;includeSubDomains","Cache-Control":"no-cache","X-AspNet-Version":"4.0.30319","x-ms-keyvault-region":"westus","Expires":"-1","Content-Length":"223","x-ms-request-id":"b41114ef-7a76-49aa-86cb-31c8a385e950","x-ms-keyvault-service-version":"1.0.0.744","Body":"{\"contentType\":\"application/octet-stream\",\"id\":\"https://javasdktestvault.vault.azure.net/secrets/JavaExtensionSecret/f7fb1460a3ae4f6a8bdb616cd179131c\",\"attributes\":{\"enabled\":true,\"created\":1457484617,\"updated\":1457484617}}","Content-Type":"application/json; charset=utf-8","X-Powered-By":"ASP.NET"}] \ No newline at end of file diff --git a/services/keyvault/azure-keyvault-extensions/src/test/resources/session-records/KeyVaultKeyResolverDefaultProviderTest-KeyVault_KeyVaultKeyResolver_Secret192Base64.json b/services/keyvault/azure-keyvault-extensions/src/test/resources/session-records/KeyVaultKeyResolverDefaultProviderTest-KeyVault_KeyVaultKeyResolver_Secret192Base64.json new file mode 100644 index 000000000000..4dbb38e7a629 --- /dev/null +++ b/services/keyvault/azure-keyvault-extensions/src/test/resources/session-records/KeyVaultKeyResolverDefaultProviderTest-KeyVault_KeyVaultKeyResolver_Secret192Base64.json @@ -0,0 +1 @@ +[{"User-Agent":"Azure-SDK-For-Java","Method":"PUT","Uri":"/secrets/JavaExtensionSecret?api-version=2015-06-01","Content-Type":"application/json"},{"Server":"Microsoft-IIS/8.5","Pragma":"no-cache","StatusCode":"200","Date":"Wed, 09 Mar 2016 00:50:14 GMT","Strict-Transport-Security":"max-age=31536000;includeSubDomains","Cache-Control":"no-cache","X-AspNet-Version":"4.0.30319","x-ms-keyvault-region":"westus","Expires":"-1","Content-Length":"266","x-ms-request-id":"c4f75b78-8a6d-42e7-8647-1b195d7ce814","x-ms-keyvault-service-version":"1.0.0.744","Body":"{\"value\":\"AAECAwQFBgcICQoLDA0ODxAREhMUFRYX\",\"contentType\":\"application/octet-stream\",\"id\":\"https://javasdktestvault.vault.azure.net/secrets/JavaExtensionSecret/e97d92808895480bbfc757f8bf7be663\",\"attributes\":{\"enabled\":true,\"created\":1457484614,\"updated\":1457484614}}","Content-Type":"application/json; charset=utf-8","X-Powered-By":"ASP.NET"},{"User-Agent":"Azure-SDK-For-Java","Method":"GET","Uri":"/secrets/JavaExtensionSecret?api-version=2015-06-01","Content-Type":"application/json"},{"Server":"Microsoft-IIS/8.5","Pragma":"no-cache","StatusCode":"200","Date":"Wed, 09 Mar 2016 00:50:14 GMT","Strict-Transport-Security":"max-age=31536000;includeSubDomains","Cache-Control":"no-cache","X-AspNet-Version":"4.0.30319","x-ms-keyvault-region":"westus","Expires":"-1","Content-Length":"266","x-ms-request-id":"a1c2a2f0-3163-4901-9aa5-19baa4641b39","x-ms-keyvault-service-version":"1.0.0.744","Body":"{\"value\":\"AAECAwQFBgcICQoLDA0ODxAREhMUFRYX\",\"contentType\":\"application/octet-stream\",\"id\":\"https://javasdktestvault.vault.azure.net/secrets/JavaExtensionSecret/e97d92808895480bbfc757f8bf7be663\",\"attributes\":{\"enabled\":true,\"created\":1457484614,\"updated\":1457484614}}","Content-Type":"application/json; charset=utf-8","X-Powered-By":"ASP.NET"},{"User-Agent":"Azure-SDK-For-Java","Method":"GET","Uri":"/secrets/JavaExtensionSecret/e97d92808895480bbfc757f8bf7be663?api-version=2015-06-01","Content-Type":"application/json"},{"Server":"Microsoft-IIS/8.5","Pragma":"no-cache","StatusCode":"200","Date":"Wed, 09 Mar 2016 00:50:14 GMT","Strict-Transport-Security":"max-age=31536000;includeSubDomains","Cache-Control":"no-cache","X-AspNet-Version":"4.0.30319","x-ms-keyvault-region":"westus","Expires":"-1","Content-Length":"266","x-ms-request-id":"2f27eb20-73b6-4d42-90d8-5ffa5d654e88","x-ms-keyvault-service-version":"1.0.0.744","Body":"{\"value\":\"AAECAwQFBgcICQoLDA0ODxAREhMUFRYX\",\"contentType\":\"application/octet-stream\",\"id\":\"https://javasdktestvault.vault.azure.net/secrets/JavaExtensionSecret/e97d92808895480bbfc757f8bf7be663\",\"attributes\":{\"enabled\":true,\"created\":1457484614,\"updated\":1457484614}}","Content-Type":"application/json; charset=utf-8","X-Powered-By":"ASP.NET"},{"User-Agent":"Azure-SDK-For-Java","Method":"DELETE","Uri":"/secrets/JavaExtensionSecret?api-version=2015-06-01","Content-Type":"application/json"},{"Server":"Microsoft-IIS/8.5","Pragma":"no-cache","StatusCode":"200","Date":"Wed, 09 Mar 2016 00:50:15 GMT","Strict-Transport-Security":"max-age=31536000;includeSubDomains","Cache-Control":"no-cache","X-AspNet-Version":"4.0.30319","x-ms-keyvault-region":"westus","Expires":"-1","Content-Length":"223","x-ms-request-id":"dc435328-62ce-4826-943e-086ce88da7d4","x-ms-keyvault-service-version":"1.0.0.744","Body":"{\"contentType\":\"application/octet-stream\",\"id\":\"https://javasdktestvault.vault.azure.net/secrets/JavaExtensionSecret/e97d92808895480bbfc757f8bf7be663\",\"attributes\":{\"enabled\":true,\"created\":1457484614,\"updated\":1457484614}}","Content-Type":"application/json; charset=utf-8","X-Powered-By":"ASP.NET"}] \ No newline at end of file diff --git a/services/keyvault/azure-keyvault-extensions/src/test/resources/session-records/KeyVaultKeyResolverDefaultProviderTest-KeyVault_KeyVaultKeyResolver_Secret256Base64.json b/services/keyvault/azure-keyvault-extensions/src/test/resources/session-records/KeyVaultKeyResolverDefaultProviderTest-KeyVault_KeyVaultKeyResolver_Secret256Base64.json new file mode 100644 index 000000000000..9383fb5ceb55 --- /dev/null +++ b/services/keyvault/azure-keyvault-extensions/src/test/resources/session-records/KeyVaultKeyResolverDefaultProviderTest-KeyVault_KeyVaultKeyResolver_Secret256Base64.json @@ -0,0 +1 @@ +[{"User-Agent":"Azure-SDK-For-Java","Method":"PUT","Uri":"/secrets/JavaExtensionSecret?api-version=2015-06-01","Content-Type":"application/json"},{"Server":"Microsoft-IIS/8.5","Pragma":"no-cache","StatusCode":"200","Date":"Wed, 09 Mar 2016 00:50:13 GMT","Strict-Transport-Security":"max-age=31536000;includeSubDomains","Cache-Control":"no-cache","X-AspNet-Version":"4.0.30319","x-ms-keyvault-region":"westus","Expires":"-1","Content-Length":"277","x-ms-request-id":"bb539585-179e-439f-bb5e-c9ed07a80f69","x-ms-keyvault-service-version":"1.0.0.744","Body":"{\"value\":\"AAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8\",\"contentType\":\"application/octet-stream\",\"id\":\"https://javasdktestvault.vault.azure.net/secrets/JavaExtensionSecret/e1e6b17419254b079a8c9e078735983f\",\"attributes\":{\"enabled\":true,\"created\":1457484613,\"updated\":1457484613}}","Content-Type":"application/json; charset=utf-8","X-Powered-By":"ASP.NET"},{"User-Agent":"Azure-SDK-For-Java","Method":"GET","Uri":"/secrets/JavaExtensionSecret?api-version=2015-06-01","Content-Type":"application/json"},{"Server":"Microsoft-IIS/8.5","Pragma":"no-cache","StatusCode":"200","Date":"Wed, 09 Mar 2016 00:50:13 GMT","Strict-Transport-Security":"max-age=31536000;includeSubDomains","Cache-Control":"no-cache","X-AspNet-Version":"4.0.30319","x-ms-keyvault-region":"westus","Expires":"-1","Content-Length":"277","x-ms-request-id":"60ae1899-925b-4d38-a0bd-ea9033739658","x-ms-keyvault-service-version":"1.0.0.744","Body":"{\"value\":\"AAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8\",\"contentType\":\"application/octet-stream\",\"id\":\"https://javasdktestvault.vault.azure.net/secrets/JavaExtensionSecret/e1e6b17419254b079a8c9e078735983f\",\"attributes\":{\"enabled\":true,\"created\":1457484613,\"updated\":1457484613}}","Content-Type":"application/json; charset=utf-8","X-Powered-By":"ASP.NET"},{"User-Agent":"Azure-SDK-For-Java","Method":"GET","Uri":"/secrets/JavaExtensionSecret/e1e6b17419254b079a8c9e078735983f?api-version=2015-06-01","Content-Type":"application/json"},{"Server":"Microsoft-IIS/8.5","Pragma":"no-cache","StatusCode":"200","Date":"Wed, 09 Mar 2016 00:50:13 GMT","Strict-Transport-Security":"max-age=31536000;includeSubDomains","Cache-Control":"no-cache","X-AspNet-Version":"4.0.30319","x-ms-keyvault-region":"westus","Expires":"-1","Content-Length":"277","x-ms-request-id":"4e8a3d34-28c5-4373-abac-4e6d909eada8","x-ms-keyvault-service-version":"1.0.0.744","Body":"{\"value\":\"AAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8\",\"contentType\":\"application/octet-stream\",\"id\":\"https://javasdktestvault.vault.azure.net/secrets/JavaExtensionSecret/e1e6b17419254b079a8c9e078735983f\",\"attributes\":{\"enabled\":true,\"created\":1457484613,\"updated\":1457484613}}","Content-Type":"application/json; charset=utf-8","X-Powered-By":"ASP.NET"},{"User-Agent":"Azure-SDK-For-Java","Method":"DELETE","Uri":"/secrets/JavaExtensionSecret?api-version=2015-06-01","Content-Type":"application/json"},{"Server":"Microsoft-IIS/8.5","Pragma":"no-cache","StatusCode":"200","Date":"Wed, 09 Mar 2016 00:50:13 GMT","Strict-Transport-Security":"max-age=31536000;includeSubDomains","Cache-Control":"no-cache","X-AspNet-Version":"4.0.30319","x-ms-keyvault-region":"westus","Expires":"-1","Content-Length":"223","x-ms-request-id":"810ef947-6074-4b0a-98e8-23d7a80b29ec","x-ms-keyvault-service-version":"1.0.0.744","Body":"{\"contentType\":\"application/octet-stream\",\"id\":\"https://javasdktestvault.vault.azure.net/secrets/JavaExtensionSecret/e1e6b17419254b079a8c9e078735983f\",\"attributes\":{\"enabled\":true,\"created\":1457484613,\"updated\":1457484613}}","Content-Type":"application/json; charset=utf-8","X-Powered-By":"ASP.NET"}] \ No newline at end of file diff --git a/services/keyvault/azure-keyvault-extensions/src/test/resources/session-records/KeyVaultKeyResolverTest-KeyVault_KeyVaultKeyResolver_Key.json b/services/keyvault/azure-keyvault-extensions/src/test/resources/session-records/KeyVaultKeyResolverTest-KeyVault_KeyVaultKeyResolver_Key.json deleted file mode 100644 index 46bf74ea79b0..000000000000 --- a/services/keyvault/azure-keyvault-extensions/src/test/resources/session-records/KeyVaultKeyResolverTest-KeyVault_KeyVaultKeyResolver_Key.json +++ /dev/null @@ -1 +0,0 @@ -[{"User-Agent":"Azure-SDK-For-Java","Method":"POST","Uri":"/keys/JavaExtensionKey/create?api-version=2015-06-01","Content-Type":"application/json"},{"Server":"Microsoft-IIS/8.5","Pragma":"no-cache","StatusCode":"200","Date":"Thu, 14 Jan 2016 18:47:25 GMT","Strict-Transport-Security":"max-age=31536000;includeSubDomains","Cache-Control":"no-cache","X-AspNet-Version":"4.0.30319","x-ms-keyvault-region":"westus","Expires":"-1","Content-Length":"627","x-ms-request-id":"86f8b8be-28c5-46ab-addb-ffc919659157","x-ms-keyvault-service-version":"1.0.0.736","Body":"{\"key\":{\"kid\":\"https://javasdktestvault.vault.azure.net/keys/JavaExtensionKey/d782a733999c42628ab0836db22cfc6a\",\"kty\":\"RSA\",\"key_ops\":[\"encrypt\",\"decrypt\",\"sign\",\"verify\",\"wrapKey\",\"unwrapKey\"],\"n\":\"vEbFzqpYU1YRYTGPtB9-4EDZx7OSVUc0BPWQxJloMhW6mplEQ72EWGv5aIK-EMZLsep8XWRHuDWIpuj7Dih-tmW-V5X9bK-kIk-n7hf10IaX9XI5YvjPXm-zazYfEnSZfM4SwYXRPRv-xCJ3wWrM9yeJBIyIyGL8G7Zxmga6cKB8NSa0W_Rxi5xOA2qlRF7e6C5_GlGmiBrySvBGQRvwwASNcb1h1hDY6sAjJaqjvLj90CwynH8AW3N5qjbYar98a8siSUsWAu7uzegJ8YoEqRJ2csb5CeG7_iQf1jeXRlC4hopdxcmldrsTobTkpqS-shuhTewNcWVtzlEgwuv_sw\",\"e\":\"AQAB\"},\"attributes\":{\"enabled\":true,\"created\":1452797245,\"updated\":1452797245}}","Content-Type":"application/json; charset=utf-8","X-Powered-By":"ASP.NET"},{"User-Agent":"Azure-SDK-For-Java","Method":"GET","Uri":"/keys/JavaExtensionKey/?api-version=2015-06-01"},{"Server":"Microsoft-IIS/8.5","Pragma":"no-cache","StatusCode":"200","Date":"Thu, 14 Jan 2016 18:47:25 GMT","Strict-Transport-Security":"max-age=31536000;includeSubDomains","Cache-Control":"no-cache","X-AspNet-Version":"4.0.30319","x-ms-keyvault-region":"westus","Expires":"-1","Content-Length":"627","x-ms-request-id":"3ae6d897-702f-4f89-8e1a-4aa06c2f055a","x-ms-keyvault-service-version":"1.0.0.736","Body":"{\"key\":{\"kid\":\"https://javasdktestvault.vault.azure.net/keys/JavaExtensionKey/d782a733999c42628ab0836db22cfc6a\",\"kty\":\"RSA\",\"key_ops\":[\"encrypt\",\"decrypt\",\"sign\",\"verify\",\"wrapKey\",\"unwrapKey\"],\"n\":\"vEbFzqpYU1YRYTGPtB9-4EDZx7OSVUc0BPWQxJloMhW6mplEQ72EWGv5aIK-EMZLsep8XWRHuDWIpuj7Dih-tmW-V5X9bK-kIk-n7hf10IaX9XI5YvjPXm-zazYfEnSZfM4SwYXRPRv-xCJ3wWrM9yeJBIyIyGL8G7Zxmga6cKB8NSa0W_Rxi5xOA2qlRF7e6C5_GlGmiBrySvBGQRvwwASNcb1h1hDY6sAjJaqjvLj90CwynH8AW3N5qjbYar98a8siSUsWAu7uzegJ8YoEqRJ2csb5CeG7_iQf1jeXRlC4hopdxcmldrsTobTkpqS-shuhTewNcWVtzlEgwuv_sw\",\"e\":\"AQAB\"},\"attributes\":{\"enabled\":true,\"created\":1452797245,\"updated\":1452797245}}","Content-Type":"application/json; charset=utf-8","X-Powered-By":"ASP.NET"},{"User-Agent":"Azure-SDK-For-Java","Method":"GET","Uri":"/keys/JavaExtensionKey/d782a733999c42628ab0836db22cfc6a/?api-version=2015-06-01"},{"Server":"Microsoft-IIS/8.5","Pragma":"no-cache","StatusCode":"200","Date":"Thu, 14 Jan 2016 18:47:25 GMT","Strict-Transport-Security":"max-age=31536000;includeSubDomains","Cache-Control":"no-cache","X-AspNet-Version":"4.0.30319","x-ms-keyvault-region":"westus","Expires":"-1","Content-Length":"627","x-ms-request-id":"cb343e86-2a84-49f9-8b81-63243c63ba7a","x-ms-keyvault-service-version":"1.0.0.736","Body":"{\"key\":{\"kid\":\"https://javasdktestvault.vault.azure.net/keys/JavaExtensionKey/d782a733999c42628ab0836db22cfc6a\",\"kty\":\"RSA\",\"key_ops\":[\"encrypt\",\"decrypt\",\"sign\",\"verify\",\"wrapKey\",\"unwrapKey\"],\"n\":\"vEbFzqpYU1YRYTGPtB9-4EDZx7OSVUc0BPWQxJloMhW6mplEQ72EWGv5aIK-EMZLsep8XWRHuDWIpuj7Dih-tmW-V5X9bK-kIk-n7hf10IaX9XI5YvjPXm-zazYfEnSZfM4SwYXRPRv-xCJ3wWrM9yeJBIyIyGL8G7Zxmga6cKB8NSa0W_Rxi5xOA2qlRF7e6C5_GlGmiBrySvBGQRvwwASNcb1h1hDY6sAjJaqjvLj90CwynH8AW3N5qjbYar98a8siSUsWAu7uzegJ8YoEqRJ2csb5CeG7_iQf1jeXRlC4hopdxcmldrsTobTkpqS-shuhTewNcWVtzlEgwuv_sw\",\"e\":\"AQAB\"},\"attributes\":{\"enabled\":true,\"created\":1452797245,\"updated\":1452797245}}","Content-Type":"application/json; charset=utf-8","X-Powered-By":"ASP.NET"},{"User-Agent":"Azure-SDK-For-Java","Method":"DELETE","Uri":"/keys/JavaExtensionKey/delete?api-version=2015-06-01"},{"Server":"Microsoft-IIS/8.5","Pragma":"no-cache","StatusCode":"200","Date":"Thu, 14 Jan 2016 18:47:26 GMT","Strict-Transport-Security":"max-age=31536000;includeSubDomains","Cache-Control":"no-cache","X-AspNet-Version":"4.0.30319","x-ms-keyvault-region":"westus","Expires":"-1","Content-Length":"627","x-ms-request-id":"ac7cb421-e450-49f6-a5d9-8199f8727ffd","x-ms-keyvault-service-version":"1.0.0.736","Body":"{\"key\":{\"kid\":\"https://javasdktestvault.vault.azure.net/keys/JavaExtensionKey/d782a733999c42628ab0836db22cfc6a\",\"kty\":\"RSA\",\"key_ops\":[\"encrypt\",\"decrypt\",\"sign\",\"verify\",\"wrapKey\",\"unwrapKey\"],\"n\":\"vEbFzqpYU1YRYTGPtB9-4EDZx7OSVUc0BPWQxJloMhW6mplEQ72EWGv5aIK-EMZLsep8XWRHuDWIpuj7Dih-tmW-V5X9bK-kIk-n7hf10IaX9XI5YvjPXm-zazYfEnSZfM4SwYXRPRv-xCJ3wWrM9yeJBIyIyGL8G7Zxmga6cKB8NSa0W_Rxi5xOA2qlRF7e6C5_GlGmiBrySvBGQRvwwASNcb1h1hDY6sAjJaqjvLj90CwynH8AW3N5qjbYar98a8siSUsWAu7uzegJ8YoEqRJ2csb5CeG7_iQf1jeXRlC4hopdxcmldrsTobTkpqS-shuhTewNcWVtzlEgwuv_sw\",\"e\":\"AQAB\"},\"attributes\":{\"enabled\":true,\"created\":1452797245,\"updated\":1452797245}}","Content-Type":"application/json; charset=utf-8","X-Powered-By":"ASP.NET"}] \ No newline at end of file