Skip to content

Commit d0e93c4

Browse files
committed
update
1 parent aee228c commit d0e93c4

File tree

1 file changed

+28
-1
lines changed

1 file changed

+28
-1
lines changed

lambda-api/src/main/java/com/formkiq/stacks/api/handler/ConfigurationRequestHandler.java

Lines changed: 28 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,8 @@
3434
import static com.formkiq.stacks.dynamodb.ConfigService.MAX_WEBHOOKS;
3535
import static com.formkiq.stacks.dynamodb.ConfigService.NOTIFICATION_EMAIL;
3636

37+
import java.io.IOException;
38+
import java.io.StringReader;
3739
import java.security.KeyFactory;
3840
import java.security.NoSuchAlgorithmException;
3941
import java.security.PrivateKey;
@@ -45,6 +47,8 @@
4547
import java.util.HashMap;
4648
import java.util.Map;
4749
import java.util.Optional;
50+
import java.util.Properties;
51+
4852
import com.amazonaws.services.lambda.runtime.LambdaLogger;
4953
import com.formkiq.aws.dynamodb.DynamicObject;
5054
import com.formkiq.aws.dynamodb.objects.Strings;
@@ -300,7 +304,8 @@ private void validateDocusign(final Map<String, Object> map,
300304
private boolean isValidRsaPrivateKey(final String privateKeyPem) {
301305
try {
302306
// Remove the PEM header and footer
303-
String privateKeyPemStripped = privateKeyPem.replace("-----BEGIN RSA PRIVATE KEY-----", "")
307+
String privateKeyPemStripped = decodeUnicode(privateKeyPem)
308+
.replace("-----BEGIN RSA PRIVATE KEY-----", "")
304309
.replace("-----END RSA PRIVATE KEY-----", "").replace("\\n", "").replaceAll("\\s+", "");
305310

306311
byte[] privateKeyBytes = Base64.getDecoder().decode(privateKeyPemStripped);
@@ -315,4 +320,26 @@ private boolean isValidRsaPrivateKey(final String privateKeyPem) {
315320
return false;
316321
}
317322
}
323+
324+
/**
325+
* Decode Unicode sequences.
326+
*
327+
* @param input {@link String}
328+
* @return String
329+
*/
330+
private String decodeUnicode(final String input) {
331+
332+
String result = input;
333+
if (input != null) {
334+
Properties properties = new Properties();
335+
try {
336+
properties.load(new StringReader("key=" + input));
337+
result = properties.getProperty("key");
338+
} catch (IOException e) {
339+
// ignore
340+
}
341+
}
342+
343+
return result;
344+
}
318345
}

0 commit comments

Comments
 (0)