Make sure the validTo and validFrom string formats are GMT timezone. Add filename to the certInfo object.
Project: http://git-wip-us.apache.org/repos/asf/usergrid/repo Commit: http://git-wip-us.apache.org/repos/asf/usergrid/commit/61c57c28 Tree: http://git-wip-us.apache.org/repos/asf/usergrid/tree/61c57c28 Diff: http://git-wip-us.apache.org/repos/asf/usergrid/diff/61c57c28 Branch: refs/heads/master Commit: 61c57c286e2694b5cb50ecdf3f4e60c263ad7f75 Parents: bc68332 Author: Michael Russo <michaelaru...@gmail.com> Authored: Tue Jan 12 09:15:05 2016 -0800 Committer: Michael Russo <michaelaru...@gmail.com> Committed: Tue Jan 12 09:15:05 2016 -0800 ---------------------------------------------------------------------- .../notifiers/NotifierResource.java | 25 ++++++++++++-------- .../notifiers/NotifiersResource.java | 14 ++++++++++- .../usergrid/rest/utils/CertificateUtils.java | 14 +++++++---- 3 files changed, 37 insertions(+), 16 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/usergrid/blob/61c57c28/stack/rest/src/main/java/org/apache/usergrid/rest/applications/notifiers/NotifierResource.java ---------------------------------------------------------------------- diff --git a/stack/rest/src/main/java/org/apache/usergrid/rest/applications/notifiers/NotifierResource.java b/stack/rest/src/main/java/org/apache/usergrid/rest/applications/notifiers/NotifierResource.java index 637f0a5..21d3d73 100644 --- a/stack/rest/src/main/java/org/apache/usergrid/rest/applications/notifiers/NotifierResource.java +++ b/stack/rest/src/main/java/org/apache/usergrid/rest/applications/notifiers/NotifierResource.java @@ -69,8 +69,8 @@ public class NotifierResource extends ServiceResource { logger.debug("NotifierResource.executeMultiPartPut"); } - String certInfo = getValueOrNull(multiPart, "certInfo"); - if (certInfo != null){ + String certInfoParam = getValueOrNull(multiPart, "certInfo"); + if (certInfoParam != null){ throw new IllegalArgumentException("Cannot create or update with certInfo parameter. It is derived."); } @@ -80,7 +80,9 @@ public class NotifierResource extends ServiceResource { InputStream is = null; Map<String, Object> certAttributes = null; + String filename = null; if (multiPart.getField("p12Certificate") != null) { + filename = multiPart.getField("p12Certificate").getContentDisposition().getFileName(); is = multiPart.getField("p12Certificate").getEntityAs(InputStream.class); certAttributes = CertificateUtils.getCertAtrributes(is, certPassword); }else{ @@ -92,26 +94,29 @@ public class NotifierResource extends ServiceResource { throw new IllegalArgumentException("p12Certificate is expired"); } - HashMap<String, Object> properties = new LinkedHashMap<String, Object>(); - properties.put("name", name); - properties.put("provider", provider); - properties.put("environment", "production"); - properties.put("certificatePassword", certPassword); + HashMap<String, Object> certProps = new LinkedHashMap<String, Object>(); + certProps.put("name", name); + certProps.put("provider", provider); + certProps.put("environment", "production"); + certProps.put("certificatePassword", certPassword); if (is != null) { byte[] certBytes = IOUtils.toByteArray(is); - properties.put("p12Certificate", certBytes); + certProps.put("p12Certificate", certBytes); is.close(); } + HashMap<String, Object> certInfo = new LinkedHashMap<String, Object>(); if (certAttributes != null){ - properties.put("certInfo", certAttributes); + certInfo.put("filename", filename); + certInfo.put("details", certAttributes); } + certProps.put("certInfo", certInfo); ApiResponse response = createApiResponse(); response.setAction("put"); response.setApplication(services.getApplication()); response.setParams(ui.getQueryParameters()); - ServicePayload payload = getPayload(properties); + ServicePayload payload = getPayload(certProps); executeServiceRequest(ui, response, ServiceAction.PUT, payload); return response; http://git-wip-us.apache.org/repos/asf/usergrid/blob/61c57c28/stack/rest/src/main/java/org/apache/usergrid/rest/applications/notifiers/NotifiersResource.java ---------------------------------------------------------------------- diff --git a/stack/rest/src/main/java/org/apache/usergrid/rest/applications/notifiers/NotifiersResource.java b/stack/rest/src/main/java/org/apache/usergrid/rest/applications/notifiers/NotifiersResource.java index 77dab9b..bd02c35 100644 --- a/stack/rest/src/main/java/org/apache/usergrid/rest/applications/notifiers/NotifiersResource.java +++ b/stack/rest/src/main/java/org/apache/usergrid/rest/applications/notifiers/NotifiersResource.java @@ -114,6 +114,11 @@ public class NotifiersResource extends ServiceResource { logger.debug("Notifiers.executeMultiPartPost"); } + String certInfoParam = getValueOrNull(multiPart, "certInfo"); + if (certInfoParam != null){ + throw new IllegalArgumentException("Cannot create or update with certInfo parameter. It is derived."); + } + String name = getValueOrNull(multiPart, "name"); String provider = getValueOrNull(multiPart, "provider"); String environment = getValueOrNull(multiPart, "environment"); @@ -121,7 +126,9 @@ public class NotifiersResource extends ServiceResource { InputStream is = null; Map<String, Object> certAttributes = null; + String filename = null; if (multiPart.getField("p12Certificate") != null) { + filename = multiPart.getField("p12Certificate").getContentDisposition().getFileName(); is = multiPart.getField("p12Certificate").getEntityAs(InputStream.class); certAttributes = CertificateUtils.getCertAtrributes(is, certPassword); }else{ @@ -133,7 +140,9 @@ public class NotifiersResource extends ServiceResource { throw new IllegalArgumentException("p12Certificate is expired."); } + HashMap<String, Object> certProps = new LinkedHashMap<String, Object>(); + certProps.put("name", name); certProps.put("provider", provider); certProps.put("environment", environment); @@ -142,9 +151,12 @@ public class NotifiersResource extends ServiceResource { byte[] certBytes = IOUtils.toByteArray(is); certProps.put("p12Certificate", certBytes); } + HashMap<String, Object> certInfo = new LinkedHashMap<String, Object>(); if (certAttributes != null){ - certProps.put("certInfo", certAttributes); + certInfo.put("filename", filename); + certInfo.put("details", certAttributes); } + certProps.put("certInfo", certInfo); ApiResponse response = createApiResponse(); response.setAction("post"); http://git-wip-us.apache.org/repos/asf/usergrid/blob/61c57c28/stack/rest/src/main/java/org/apache/usergrid/rest/utils/CertificateUtils.java ---------------------------------------------------------------------- diff --git a/stack/rest/src/main/java/org/apache/usergrid/rest/utils/CertificateUtils.java b/stack/rest/src/main/java/org/apache/usergrid/rest/utils/CertificateUtils.java index 3ee786b..6f4be92 100644 --- a/stack/rest/src/main/java/org/apache/usergrid/rest/utils/CertificateUtils.java +++ b/stack/rest/src/main/java/org/apache/usergrid/rest/utils/CertificateUtils.java @@ -22,13 +22,13 @@ import org.slf4j.LoggerFactory; import java.io.InputStream; import java.security.KeyStore; import java.security.cert.X509Certificate; +import java.text.SimpleDateFormat; import java.util.Enumeration; import java.util.HashMap; import java.util.Map; +import java.util.SimpleTimeZone; + -/** - * Created by michaelarusso on 1/11/16. - */ public class CertificateUtils { private static final Logger logger = LoggerFactory.getLogger(CertificateUtils.class); @@ -41,6 +41,10 @@ public class CertificateUtils { certPassword = ""; // if there is no password, pass in empty string } + SimpleDateFormat dateFormat = new SimpleDateFormat(); + dateFormat.setTimeZone(new SimpleTimeZone(0, "GMT")); + dateFormat.applyPattern("EEE dd MMM yyyy HH:mm:ss z"); // GMT String format + Map<String,Object> attributes = new HashMap<>(1); try{ KeyStore p12 = KeyStore.getInstance("pkcs12"); @@ -50,9 +54,9 @@ public class CertificateUtils { String alias = (String) aliases.nextElement(); X509Certificate cert = (X509Certificate) p12.getCertificate(alias); attributes.put("subject", cert.getSubjectDN().toString()); - attributes.put("validFrom", cert.getNotBefore()); + attributes.put("validFrom", dateFormat.format(cert.getNotBefore())); attributes.put("validFromTimestamp", cert.getNotBefore().getTime()); - attributes.put("validTo", cert.getNotAfter()); + attributes.put("validTo", dateFormat.format(cert.getNotAfter())); attributes.put("validToTimestamp", cert.getNotAfter().getTime()); attributes.put("issuer", cert.getIssuerDN().toString()); attributes.put("subjectAlternativeNames", cert.getSubjectAlternativeNames());