You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by or...@apache.org on 2016/04/19 16:23:26 UTC

svn commit: r1739934 - in /qpid/java/trunk/broker-core/src: main/java/org/apache/qpid/server/model/AttributeValueConverter.java test/java/org/apache/qpid/server/model/AttributeValueConverterTest.java

Author: orudyy
Date: Tue Apr 19 14:23:26 2016
New Revision: 1739934

URL: http://svn.apache.org/viewvc?rev=1739934&view=rev
Log:
QPID-7174: Fix conversion of string certificate in PEM format

Modified:
    qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/AttributeValueConverter.java
    qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/model/AttributeValueConverterTest.java

Modified: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/AttributeValueConverter.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/AttributeValueConverter.java?rev=1739934&r1=1739933&r2=1739934&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/AttributeValueConverter.java (original)
+++ qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/AttributeValueConverter.java Tue Apr 19 14:23:26 2016
@@ -29,6 +29,7 @@ import java.lang.reflect.Proxy;
 import java.lang.reflect.Type;
 import java.lang.reflect.TypeVariable;
 import java.net.URI;
+import java.nio.charset.StandardCharsets;
 import java.security.cert.Certificate;
 import java.security.cert.CertificateException;
 import java.security.cert.CertificateFactory;
@@ -168,6 +169,7 @@ abstract class AttributeValueConverter<T
         }
     };
 
+    public static final String BEGIN_CERTIFICATE = "-----BEGIN CERTIFICATE-----";
 
     static final AttributeValueConverter<Certificate> CERTIFICATE_CONVERTER = new AttributeValueConverter<Certificate>()
     {
@@ -205,8 +207,15 @@ abstract class AttributeValueConverter<T
             else if(value instanceof String)
             {
                 String strValue = AbstractConfiguredObject.interpolate(object, (String) value);
-                byte[] certificateBytes = BINARY_CONVERTER.convert(strValue, object);
-                return convert(certificateBytes, object);
+                if (strValue.startsWith(BEGIN_CERTIFICATE))
+                {
+                    return convert(strValue.getBytes(StandardCharsets.UTF_8), object);
+                }
+                else
+                {
+                    byte[] certificateBytes = BINARY_CONVERTER.convert(strValue, object);
+                    return convert(certificateBytes, object);
+                }
             }
             else if(value == null)
             {

Modified: qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/model/AttributeValueConverterTest.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/model/AttributeValueConverterTest.java?rev=1739934&r1=1739933&r2=1739934&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/model/AttributeValueConverterTest.java (original)
+++ qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/model/AttributeValueConverterTest.java Tue Apr 19 14:23:26 2016
@@ -259,4 +259,25 @@ public class AttributeValueConverterTest
         assertEquals("CN=app2@acme.org,OU=art,O=acme,L=Toronto,ST=ON,C=CA", x509Certificate.getSubjectX500Principal().getName());
         assertEquals("CN=MyRootCA,O=ACME,ST=Ontario,C=CA", x509Certificate.getIssuerX500Principal().getName());
     }
+
+    public void testPEMCertificateConverter() throws ParseException
+    {
+        ConfiguredObject object = _objectFactory.create(TestCar.class, _attributes);
+        AttributeValueConverter<Certificate> certificateConverter = getConverter(Certificate.class, Certificate.class);
+        StringBuffer pemCertificate = new StringBuffer("-----BEGIN CERTIFICATE-----\n");
+        int offset = 0;
+        while(BASE_64_ENCODED_CERTIFICATE.length() - offset > 64)
+        {
+            pemCertificate.append(BASE_64_ENCODED_CERTIFICATE.substring(offset, offset + 64)).append('\n');
+            offset += 64;
+        }
+        pemCertificate.append(BASE_64_ENCODED_CERTIFICATE.substring(offset));
+        pemCertificate.append("\n-----END CERTIFICATE-----\n");
+
+        Certificate certificate = certificateConverter.convert(pemCertificate.toString(), object);
+        assertTrue("Unexpected certificate", certificate instanceof X509Certificate);
+        X509Certificate x509Certificate = (X509Certificate)certificate;
+        assertEquals("CN=app2@acme.org,OU=art,O=acme,L=Toronto,ST=ON,C=CA", x509Certificate.getSubjectX500Principal().getName());
+        assertEquals("CN=MyRootCA,O=ACME,ST=Ontario,C=CA", x509Certificate.getIssuerX500Principal().getName());
+    }
 }



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org