Skip to content

Commit 6bc0899

Browse files
committed
Refactor multi cert support signature validation
1 parent 1a0e808 commit 6bc0899

File tree

3 files changed

+18
-17
lines changed

3 files changed

+18
-17
lines changed

core/src/main/java/com/onelogin/saml2/authn/SamlResponse.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -298,7 +298,7 @@ public boolean isValid(String requestId) {
298298
List<X509Certificate> multipleCertList = settings.getIdpx509certMulti();
299299

300300
if (multipleCertList != null && multipleCertList.size() != 0) {
301-
certList = multipleCertList;
301+
certList.addAll(multipleCertList);
302302
}
303303

304304
if (cert != null && !certList.contains(cert)) {

core/src/main/java/com/onelogin/saml2/logout/LogoutRequest.java

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -363,14 +363,15 @@ public Boolean isValid() throws Exception {
363363
throw new SettingsException("In order to validate the sign on the Logout Request, the x509cert of the IdP is required", SettingsException.CERT_NOT_FOUND);
364364
}
365365

366-
List<X509Certificate> certList = settings.getIdpx509certMulti();
367-
if (certList != null) {
368-
if (!certList.contains(cert)) {
369-
certList.add(0, cert);
370-
}
371-
} else {
372-
certList = new ArrayList<X509Certificate>();
373-
certList.add(cert);
366+
List<X509Certificate> certList = new ArrayList<X509Certificate>();
367+
List<X509Certificate> multipleCertList = settings.getIdpx509certMulti();
368+
369+
if (multipleCertList != null && multipleCertList.size() != 0) {
370+
certList.addAll(multipleCertList);
371+
}
372+
373+
if (certList.isEmpty() || !certList.contains(cert)) {
374+
certList.add(0, cert);
374375
}
375376

376377
String signAlg = request.getParameter("SigAlg");

core/src/main/java/com/onelogin/saml2/logout/LogoutResponse.java

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -233,16 +233,16 @@ public Boolean isValid(String requestId) {
233233
throw new SettingsException("In order to validate the sign on the Logout Response, the x509cert of the IdP is required", SettingsException.CERT_NOT_FOUND);
234234
}
235235

236-
List<X509Certificate> certList = settings.getIdpx509certMulti();
237-
if (certList != null) {
238-
if (!certList.contains(cert)) {
239-
certList.add(0, cert);
240-
}
241-
} else {
242-
certList = new ArrayList<X509Certificate>();
243-
certList.add(cert);
236+
List<X509Certificate> certList = new ArrayList<X509Certificate>();
237+
List<X509Certificate> multipleCertList = settings.getIdpx509certMulti();
238+
239+
if (multipleCertList != null && multipleCertList.size() != 0) {
240+
certList.addAll(multipleCertList);
244241
}
245242

243+
if (certList.isEmpty() || !certList.contains(cert)) {
244+
certList.add(0, cert);
245+
}
246246

247247
String signAlg = request.getParameter("SigAlg");
248248
if (signAlg == null || signAlg.isEmpty()) {

0 commit comments

Comments
 (0)