Move off deprecated Base64Utils.

Closes gh-874
This commit is contained in:
Mark Paluch
2024-08-07 08:45:16 +02:00
parent 3f3bc8aa30
commit ff43ffa1d0
10 changed files with 37 additions and 31 deletions

View File

@@ -16,6 +16,7 @@
package org.springframework.vault.authentication;
import java.io.ByteArrayInputStream;
import java.util.Base64;
import java.util.Collections;
import java.util.HashMap;
import java.util.LinkedHashMap;
@@ -37,7 +38,6 @@ import software.amazon.awssdk.regions.Region;
import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType;
import org.springframework.util.Assert;
import org.springframework.util.Base64Utils;
import org.springframework.util.ObjectUtils;
import org.springframework.util.StringUtils;
import org.springframework.vault.VaultException;
@@ -80,7 +80,8 @@ public class AwsIamAuthentication implements ClientAuthentication, Authenticatio
private static final String REQUEST_BODY = "Action=GetCallerIdentity&Version=2011-06-15";
private static final String REQUEST_BODY_BASE64_ENCODED = Base64Utils.encodeToString(REQUEST_BODY.getBytes());
private static final String REQUEST_BODY_BASE64_ENCODED = Base64.getEncoder()
.encodeToString(REQUEST_BODY.getBytes());
private final AwsIamAuthenticationOptions options;
@@ -195,12 +196,13 @@ public class AwsIamAuthentication implements ClientAuthentication, Authenticatio
Map<String, String> login = new HashMap<>();
login.put("iam_http_request_method", "POST");
login.put("iam_request_url", Base64Utils.encodeToString(options.getEndpointUri().toString().getBytes()));
login.put("iam_request_url",
Base64.getEncoder().encodeToString(options.getEndpointUri().toString().getBytes()));
login.put("iam_request_body", REQUEST_BODY_BASE64_ENCODED);
String headerJson = getSignedHeaders(options, credentials, region);
login.put("iam_request_headers", Base64Utils.encodeToString(headerJson.getBytes()));
login.put("iam_request_headers", Base64.getEncoder().encodeToString(headerJson.getBytes()));
if (!ObjectUtils.isEmpty(options.getRole())) {
login.put("role", options.getRole());

View File

@@ -20,6 +20,7 @@ import java.security.spec.RSAPrivateKeySpec;
import java.time.Clock;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Base64;
import java.util.HashMap;
import java.util.Map;
@@ -32,7 +33,6 @@ import org.bouncycastle.crypto.params.RSAKeyParameters;
import org.bouncycastle.crypto.signers.PSSSigner;
import org.springframework.util.Assert;
import org.springframework.util.Base64Utils;
import org.springframework.vault.VaultException;
import org.springframework.vault.support.PemObject;
import org.springframework.vault.support.VaultResponse;
@@ -165,7 +165,8 @@ public class PcfAuthentication implements ClientAuthentication, AuthenticationSt
signer.update(message, 0, message.length);
byte[] signature = signer.generateSignature();
return Base64Utils.encodeToUrlSafeString(signature);
return Base64.getUrlEncoder().encodeToString(signature);
}
}

View File

@@ -16,13 +16,13 @@
package org.springframework.vault.core;
import java.util.ArrayList;
import java.util.Base64;
import java.util.Collections;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import org.springframework.util.Assert;
import org.springframework.util.Base64Utils;
import org.springframework.util.ObjectUtils;
import org.springframework.util.StringUtils;
import org.springframework.vault.VaultException;
@@ -180,7 +180,7 @@ public class VaultTransformTemplate implements VaultTransformOperations {
}
if (!ObjectUtils.isEmpty(context.getTweak())) {
request.put("tweak", Base64Utils.encodeToString(context.getTweak()));
request.put("tweak", Base64.getEncoder().encodeToString(context.getTweak()));
}
}
@@ -260,7 +260,7 @@ public class VaultTransformTemplate implements VaultTransformOperations {
VaultTransformContext contextToUse = context;
if (data.containsKey("tweak")) {
byte[] tweak = Base64Utils.decodeFromString((String) data.get("tweak"));
byte[] tweak = Base64.getDecoder().decode((String) data.get("tweak"));
contextToUse = VaultTransformContext.builder()
.transformation(context.getTransformation())
.tweak(tweak)

View File

@@ -15,11 +15,11 @@
*/
package org.springframework.vault.security;
import java.util.Base64;
import java.util.Collections;
import org.springframework.security.crypto.keygen.BytesKeyGenerator;
import org.springframework.util.Assert;
import org.springframework.util.Base64Utils;
import org.springframework.vault.core.VaultOperations;
import org.springframework.vault.support.VaultResponse;
@@ -82,7 +82,7 @@ public class VaultBytesKeyGenerator implements BytesKeyGenerator {
Collections.singletonMap("format", "base64"));
String randomBytes = (String) response.getRequiredData().get("random_bytes");
return Base64Utils.decodeFromString(randomBytes);
return Base64.getDecoder().decode(randomBytes);
}
}

View File

@@ -22,13 +22,13 @@ import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;
import java.time.Instant;
import java.util.ArrayList;
import java.util.Base64;
import java.util.List;
import com.fasterxml.jackson.annotation.JsonProperty;
import org.springframework.lang.Nullable;
import org.springframework.util.Assert;
import org.springframework.util.Base64Utils;
import org.springframework.vault.VaultException;
/**
@@ -227,7 +227,7 @@ public class Certificate {
}
}
else {
result.addAll(KeystoreUtil.getCertificates(Base64Utils.decodeFromString(certificates)));
result.addAll(KeystoreUtil.getCertificates(Base64.getDecoder().decode(certificates)));
}
return result;

View File

@@ -21,6 +21,7 @@ import java.security.KeyStore;
import java.security.cert.X509Certificate;
import java.security.spec.KeySpec;
import java.util.ArrayList;
import java.util.Base64;
import java.util.Collections;
import java.util.List;
import java.util.Locale;
@@ -30,7 +31,6 @@ import com.fasterxml.jackson.annotation.JsonProperty;
import org.springframework.lang.Nullable;
import org.springframework.util.Assert;
import org.springframework.util.Base64Utils;
import org.springframework.vault.VaultException;
/**
@@ -319,7 +319,7 @@ public class CertificateBundle extends Certificate {
throw new IllegalArgumentException("No private key found in PEM-encoded key spec");
}
return getPrivateKey(Base64Utils.decodeFromString(privateKey), keyType);
return getPrivateKey(Base64.getDecoder().decode(privateKey), keyType);
}
private static KeySpec getPrivateKey(byte[] privateKey, String keyType)

View File

@@ -24,6 +24,7 @@ import java.security.cert.X509Certificate;
import java.security.spec.RSAPrivateCrtKeySpec;
import java.security.spec.RSAPublicKeySpec;
import java.util.ArrayList;
import java.util.Base64;
import java.util.Collections;
import java.util.List;
import java.util.regex.Matcher;
@@ -31,7 +32,6 @@ import java.util.regex.Pattern;
import org.springframework.lang.Nullable;
import org.springframework.util.Assert;
import org.springframework.util.Base64Utils;
/**
* Represents a PEM object that is internally decoded to a DER object. Typically, used to
@@ -56,7 +56,7 @@ public class PemObject {
this.objectType = objectType;
String sanitized = content.replaceAll("\r", "").replaceAll("\n", "");
this.content = Base64Utils.decodeFromString(sanitized);
this.content = Base64.getDecoder().decode(sanitized);
}
/**

View File

@@ -16,7 +16,6 @@
package org.springframework.vault.support;
import com.fasterxml.jackson.databind.util.StdConverter;
import org.springframework.util.Base64Utils;
import java.util.Base64;

View File

@@ -24,7 +24,6 @@ import org.junit.jupiter.api.extension.ExtendWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit.jupiter.SpringExtension;
import org.springframework.util.Base64Utils;
import org.springframework.vault.support.VaultMount;
import org.springframework.vault.support.VaultResponse;
import org.springframework.vault.util.IntegrationTestSupport;
@@ -33,6 +32,8 @@ import org.springframework.vault.util.Version;
import static org.assertj.core.api.Assertions.assertThat;
import java.util.Base64;
/**
* Integration tests for {@link VaultTemplate} using the {@code transform} backend.
*
@@ -77,8 +78,9 @@ class VaultTemplateTransformIntegrationTests extends IntegrationTestSupport {
@Test
void shouldEncode() {
VaultResponse response = this.vaultOperations.write("transform/encode/myrole", String.format(
"{\"value\": \"123-45-6789\", \"tweak\": \"%s\"}", Base64Utils.encodeToString("somenum".getBytes())));
VaultResponse response = this.vaultOperations.write("transform/encode/myrole",
String.format("{\"value\": \"123-45-6789\", \"tweak\": \"%s\"}",
Base64.getEncoder().encodeToString("somenum".getBytes())));
assertThat((String) response.getRequiredData().get("encoded_value")).isNotEmpty();
}
@@ -87,12 +89,14 @@ class VaultTemplateTransformIntegrationTests extends IntegrationTestSupport {
void shouldEncodeAndDecode() {
String value = "123-45-6789";
VaultResponse response = this.vaultOperations.write("transform/encode/myrole", String
.format("{\"value\": \"%s\", \"tweak\": \"%s\"}", value, Base64Utils.encodeToString("somenum".getBytes())));
VaultResponse response = this.vaultOperations.write("transform/encode/myrole",
String.format("{\"value\": \"%s\", \"tweak\": \"%s\"}", value,
Base64.getEncoder().encodeToString("somenum".getBytes())));
String encoded = (String) response.getRequiredData().get("encoded_value");
VaultResponse decoded = this.vaultOperations.write("transform/decode/myrole", String.format(
"{\"value\": \"%s\", \"tweak\": \"%s\"}", encoded, Base64Utils.encodeToString("somenum".getBytes())));
VaultResponse decoded = this.vaultOperations.write("transform/decode/myrole",
String.format("{\"value\": \"%s\", \"tweak\": \"%s\"}", encoded,
Base64.getEncoder().encodeToString("somenum".getBytes())));
assertThat((String) decoded.getRequiredData().get("decoded_value")).isEqualTo(value);
}

View File

@@ -15,6 +15,7 @@
*/
package org.springframework.vault.core;
import java.util.Base64;
import java.util.Collections;
import java.util.List;
@@ -26,7 +27,6 @@ import org.junit.jupiter.api.extension.ExtendWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit.jupiter.SpringExtension;
import org.springframework.util.Base64Utils;
import org.springframework.vault.support.VaultMount;
import org.springframework.vault.support.VaultResponse;
import org.springframework.vault.support.VaultTransitKeyConfiguration;
@@ -101,8 +101,8 @@ class VaultTemplateTransitIntegrationTests extends IntegrationTestSupport {
@Test
void shouldEncrypt() {
VaultResponse response = this.vaultOperations.write("transit/encrypt/mykey",
Collections.singletonMap("plaintext", Base64Utils.encodeToString("that message is secret".getBytes())));
VaultResponse response = this.vaultOperations.write("transit/encrypt/mykey", Collections
.singletonMap("plaintext", Base64.getEncoder().encodeToString("that message is secret".getBytes())));
assertThat((String) response.getRequiredData().get("ciphertext")).isNotEmpty();
}
@@ -110,14 +110,14 @@ class VaultTemplateTransitIntegrationTests extends IntegrationTestSupport {
@Test
void shouldEncryptAndDecrypt() {
VaultResponse response = this.vaultOperations.write("transit/encrypt/mykey",
Collections.singletonMap("plaintext", Base64Utils.encodeToString("that message is secret".getBytes())));
VaultResponse response = this.vaultOperations.write("transit/encrypt/mykey", Collections
.singletonMap("plaintext", Base64.getEncoder().encodeToString("that message is secret".getBytes())));
VaultResponse decrypted = this.vaultOperations.write("transit/decrypt/mykey",
Collections.singletonMap("ciphertext", response.getRequiredData().get("ciphertext")));
assertThat((String) decrypted.getRequiredData().get("plaintext"))
.isEqualTo(Base64Utils.encodeToString("that message is secret".getBytes()));
.isEqualTo(Base64.getEncoder().encodeToString("that message is secret".getBytes()));
}
}