Parcourir la source

Addresses #3 "SignedInfo tag namespace issue":
A new check for the type SignedInfoType to get the correct namespace deals with this issue
Tested with updated keystores and certificates

Marc Mültin il y a 10 ans
Parent
commit
72d0327a72

BIN
RISE-V2G-EVCC/evccKeystore.jks


BIN
RISE-V2G-EVCC/evccTruststore.jks


BIN
RISE-V2G-SECC/contractCert.p12


BIN
RISE-V2G-SECC/provServiceCert.p12


BIN
RISE-V2G-SECC/seccKeystore.jks


BIN
RISE-V2G-SECC/seccTruststore.jks


+ 9 - 2
RISE-V2G-Shared/src/main/java/org/eclipse/risev2g/shared/utils/MiscUtils.java

@@ -20,14 +20,17 @@ import java.net.SocketException;
 import java.util.ArrayList;
 import java.util.Enumeration;
 import java.util.Properties;
+
 import javax.xml.bind.JAXBElement;
 import javax.xml.namespace.QName;
+
 import org.apache.logging.log4j.Logger;
 import org.apache.logging.log4j.LogManager;
 import org.eclipse.risev2g.shared.enumerations.GlobalValues;
 import org.eclipse.risev2g.shared.enumerations.V2GMessages;
 import org.eclipse.risev2g.shared.v2gMessages.msgDef.EnergyTransferModeType;
 import org.eclipse.risev2g.shared.v2gMessages.msgDef.PaymentOptionType;
+import org.eclipse.risev2g.shared.v2gMessages.msgDef.SignedInfoType;
 import org.eclipse.risev2g.shared.v2gMessages.msgDef.SupportedEnergyTransferModeType;
 
 
@@ -256,14 +259,18 @@ public final class MiscUtils {
 	 * JAXBElement<SessionStopReqType>(new QName ... ) but this seems to work as well 
 	 * (I don't know how to infer the type correctly)
 	 * 
-	 * @param messageOrField
+	 * @param messageOrField The message or field for which a digest is to be generated
 	 * @return
 	 */
 	@SuppressWarnings({ "rawtypes", "unchecked" })
 	public static JAXBElement getJaxbElement(Object messageOrField) {
 		String messageName = messageOrField.getClass().getSimpleName().replace("Type", "");
+		String namespace = "";
+		
+		if (messageOrField instanceof SignedInfoType) namespace = "http://www.w3.org/2000/09/xmldsig#";
+		else namespace = "urn:iso:15118:2:2013:MsgBody";
 		
-		return new JAXBElement(new QName("urn:iso:15118:2:2013:MsgBody", messageName), 
+		return new JAXBElement(new QName(namespace, messageName), 
 				messageOrField.getClass(), 
 				messageOrField);
 	}

+ 1 - 1
RISE-V2G-Shared/src/main/java/org/eclipse/risev2g/shared/utils/SecurityUtils.java

@@ -263,7 +263,7 @@ public final class SecurityUtils {
 		} catch (InvalidKeyException | CertificateException | NoSuchAlgorithmException | 
 				 NoSuchProviderException | SignatureException e) {
 			getLogger().warn("Signature verification of certificate having distinguished name '" + 
-							  subject.getName() + "' with certificate having distinguished name '" + 
+							  subject.getName() + "' with certificate having distinguished name (the issuer) '" + 
 							  issuerSubject.getName() + "' failed. Expected issuer has distinguished name '" +
 							  expectedIssuerSubject.getName() + "' (" + e.getClass().getSimpleName() + ")", e);
 		}