diff --git a/javasrc/adapter/org/etsi/adapter/ITERequired.java b/javasrc/adapter/org/etsi/adapter/ITERequired.java index fddc6b2e116eb1e016a81264dd8aaef3d479d94b..f663cbd319819d817702bce5fe60f21fcf51864b 100644 --- a/javasrc/adapter/org/etsi/adapter/ITERequired.java +++ b/javasrc/adapter/org/etsi/adapter/ITERequired.java @@ -60,4 +60,15 @@ public interface ITERequired { * @return Value associated to the TA parameter */ Value getTaParameter(String param); + + /** + * Logs the debug message. + */ + void logDebug(String debugMessage); + + /** + * Logs the error message. + */ + void logError(String errorMessage); + } diff --git a/javasrc/adapter/org/etsi/its/adapter/ComponentMgr.java b/javasrc/adapter/org/etsi/its/adapter/ComponentMgr.java index f2dda88ff178d7bd7b56e05a9c1ff1b5e973327b..715f84bf19e148cde2aa39dc8b60a46cbef90989 100644 --- a/javasrc/adapter/org/etsi/its/adapter/ComponentMgr.java +++ b/javasrc/adapter/org/etsi/its/adapter/ComponentMgr.java @@ -12,6 +12,7 @@ import java.util.LinkedHashMap; import java.util.Map; import java.util.Observer; +import org.etsi.adapter.TERFactory; import org.etsi.common.ITuple; import org.etsi.common.Tuple; import org.etsi.its.adapter.ports.IObservable; @@ -58,7 +59,7 @@ public class ComponentMgr{ public void addComponent(TriComponentId component) { // Sanity check if(component == null) { - System.err.println("Error: Trying to add null component"); + TERFactory.getInstance().logError("Error: Trying to add null component"); return; } @@ -81,11 +82,11 @@ public class ComponentMgr{ public void addPort(final String componentName, final TriPortId ttcnPort, final IPort port) { // Sanity checks if(componentName.isEmpty() || (ttcnPort == null) || (port == null)) { - System.err.println("Wrong parameters"); + TERFactory.getInstance().logError("Wrong parameters"); return; } if(!mapCompNameToTriComp.containsKey(componentName)) { - System.err.println("Error: Trying to add port to unknown component"); + TERFactory.getInstance().logError("Error: Trying to add port to unknown component"); return; } if(!mapTriPortToTuple.containsKey(componentName)) { @@ -110,7 +111,7 @@ public class ComponentMgr{ // Sanity checks if(componentName == null || componentName.isEmpty()) { - System.err.println("Invalid component"); + TERFactory.getInstance().logError("Invalid component"); return null; } @@ -127,15 +128,15 @@ public class ComponentMgr{ // Sanity checks if(componentName.isEmpty() || portName.isEmpty()) { - System.err.println("Wrong parameters"); + TERFactory.getInstance().logError("Wrong parameters"); return null; } if(!mapCompNameToTriComp.containsKey(componentName)) { - System.err.println("Unknown component"); + TERFactory.getInstance().logError("Unknown component"); return null; } if(!mapTriPortToTuple.containsKey(componentName)) { - System.err.println("No port list entry"); + TERFactory.getInstance().logError("No port list entry"); return null; } @@ -160,15 +161,15 @@ public class ComponentMgr{ // Sanity checks if(componentName.isEmpty() || portName.isEmpty()) { - System.err.println("Wrong parameters"); + TERFactory.getInstance().logError("Wrong parameters"); return null; } if(!mapCompNameToTriComp.containsKey(componentName)) { - System.err.println("Unknown component"); + TERFactory.getInstance().logError("Unknown component"); return null; } if(!mapTriPortToTuple.containsKey(componentName)) { - System.err.println("No port list entry"); + TERFactory.getInstance().logError("No port list entry"); return null; } @@ -204,15 +205,15 @@ public class ComponentMgr{ // Sanity checks if(componentName.isEmpty() || portName.isEmpty()) { - System.err.println("Wrong parameters"); + TERFactory.getInstance().logError("Wrong parameters"); return; } if(!mapCompNameToTriComp.containsKey(componentName)) { - System.err.println("Unknown component"); + TERFactory.getInstance().logError("Unknown component"); return; } if(!mapTriPortToTuple.containsKey(componentName)) { - System.err.println("No port list entry"); + TERFactory.getInstance().logError("No port list entry"); return; } diff --git a/javasrc/adapter/org/etsi/its/adapter/Management.java b/javasrc/adapter/org/etsi/its/adapter/Management.java index ff611d9da941df8f83bb890c5bfec7365e908b00..2fce87f9f2055ede0b9e822c5cca59e14414698b 100644 --- a/javasrc/adapter/org/etsi/its/adapter/Management.java +++ b/javasrc/adapter/org/etsi/its/adapter/Management.java @@ -48,7 +48,7 @@ public class Management implements IManagementTA, IManagementLayers { /** * Maximum time for getting Long position vector (in seconds) */ - private static final int GET_LPV_TIMEOUT = 10; + private static final int GET_LPV_TIMEOUT = 10; //FIXME: Might be a parameter rather than a constant /** * Interval for polling the location table during GetLpv (in ms) @@ -353,6 +353,8 @@ public class Management implements IManagementTA, IManagementLayers { // Ensure that management settings are reset beaconHeader = null; enqueueBeacon = null; + + locTable.clear(); } @Override diff --git a/javasrc/adapter/org/etsi/its/adapter/PcapMultiplexer.java b/javasrc/adapter/org/etsi/its/adapter/PcapMultiplexer.java index b5fe2fcce21e130f325ff9c467f888afae50ad41..32816a7dcc0c56cb08a9854fa14c71593b65d70d 100644 --- a/javasrc/adapter/org/etsi/its/adapter/PcapMultiplexer.java +++ b/javasrc/adapter/org/etsi/its/adapter/PcapMultiplexer.java @@ -49,7 +49,7 @@ public class PcapMultiplexer implements Runnable { int r = Pcap.findAllDevs(alldevs, errbuf); if (r == Pcap.NOT_OK || alldevs.isEmpty()) { - System.err.printf("Can't read list of devices, error is %s", errbuf.toString()); + TERFactory.getInstance().logError("Can't read list of devices, error is %s" + errbuf.toString()); return; } @@ -72,7 +72,7 @@ public class PcapMultiplexer implements Runnable { } device = alldevs.get(ifaceIndex); - System.out.println("Listening: " + device.getName()); +// TERFactory.getInstance().logDebug("Listening: " + device.getName()); } /** @@ -84,7 +84,7 @@ public class PcapMultiplexer implements Runnable { } public synchronized void register(Layer client, byte[] macAddress, short frameType) { - System.out.println(">>>PcapMultiplexer.registering: " + frameType); +// TERFactory.getInstance().logDebug(">>>PcapMultiplexer.registering: " + frameType); if(clientsToMacs.isEmpty()) { // Open interface @@ -94,7 +94,7 @@ public class PcapMultiplexer implements Runnable { pcap = Pcap.openLive(device.getName(), snaplen, flags, timeout, errbuf); if (pcap == null) { - System.err.printf("Error while opening device for capture: " + TERFactory.getInstance().logError("Error while opening device for capture: " + errbuf.toString()); return; } @@ -103,7 +103,7 @@ public class PcapMultiplexer implements Runnable { filter = ""; } else { - System.out.println("Another Client !"); +// TERFactory.getInstance().logDebug("Another Client !"); filter = filter + " and "; } @@ -114,7 +114,7 @@ public class PcapMultiplexer implements Runnable { } filter = filter + "not ether src " + strMacAddress; - System.out.println("New filter: " + filter); +// TERFactory.getInstance().logDebug("New filter: " + filter); // Apply filter PcapBpfProgram bpfFilter = new PcapBpfProgram(); @@ -122,7 +122,7 @@ public class PcapMultiplexer implements Runnable { int netmask = 0; int r = pcap.compile(bpfFilter, filter, optimize, netmask); if (r != Pcap.OK) { - System.out.println("Filter error: " + pcap.getErr()); +// TERFactory.getInstance().logDebug("Filter error: " + pcap.getErr()); } pcap.setFilter(bpfFilter); diff --git a/javasrc/adapter/org/etsi/its/adapter/SecurityHelper.java b/javasrc/adapter/org/etsi/its/adapter/SecurityHelper.java index e4819a4bf3ea1afd77b6a7fb78668a1c8de8da27..a365829f8df0d153813e8a65ff95c0e377a00489 100644 --- a/javasrc/adapter/org/etsi/its/adapter/SecurityHelper.java +++ b/javasrc/adapter/org/etsi/its/adapter/SecurityHelper.java @@ -11,7 +11,11 @@ import java.io.IOException; import java.util.HashMap; import java.util.Map; +import org.etsi.adapter.TERFactory; import org.etsi.common.ByteHelper; +//import org.etsi.its.adapter.layers.ETSI; + + import de.fraunhofer.sit.c2x.CryptoLib; @@ -21,6 +25,18 @@ public class SecurityHelper { public static SecurityHelper getInstance() { return Instance; } + /** + * SSP value + * @see ETSI TS 103 097 + */ + public static final String SEC_SSP = "SSP"; + + /** + * ITS-AID value + * @see ETSI TS 103 097 + */ + public static final String SEC_ITS_AID = "ITS_AID"; + /** * Storage for received certificates */ @@ -86,14 +102,14 @@ public class SecurityHelper { return (long) Math.ceil(d / Byte.SIZE); } - public byte[] checkSecuredProfileAndExtractPayload(final byte[] p_message, final int p_offset, final boolean p_enforceSecurityCheck, final int p_itsAidOther) { - System.out.println(">>> SecurityHelper.checkSecuredProfileAndExtractPayload: " + ByteHelper.byteArrayToString(p_message)); + public byte[] checkSecuredProfileAndExtractPayload(final byte[] p_message, final int p_offset, final boolean p_enforceSecurityCheck, final int p_itsAidOther, Map lowerInfo) { + TERFactory.getInstance().logDebug(">>> SecurityHelper.checkSecuredProfileAndExtractPayload: " + ByteHelper.byteArrayToString(p_message)); ByteArrayInputStream decvalue = new ByteArrayInputStream(p_message, p_offset, p_message.length - p_offset); // Check version if (decvalue.read() != 2) { - System.err.println("SecurityHelper.checkSecuredProfileAndExtractPayload: Drop packet - Wrong version number"); + TERFactory.getInstance().logError("SecurityHelper.checkSecuredProfileAndExtractPayload: Drop packet - Wrong version number"); if (p_enforceSecurityCheck) { // Drop it return null; @@ -101,12 +117,12 @@ public class SecurityHelper { } // Extract header fields length and header fields long headerFieldsLength = tls2size(decvalue); - System.out.println("SecurityHelper.checkSecuredProfileAndExtractPayload: headerFieldsLength:" + headerFieldsLength); + TERFactory.getInstance().logDebug("SecurityHelper.checkSecuredProfileAndExtractPayload: headerFieldsLength:" + headerFieldsLength); byte[] headerFields = new byte[(int) headerFieldsLength]; decvalue.read(headerFields, 0, (int) headerFieldsLength); ByteArrayOutputStream certificateKeys = new ByteArrayOutputStream(); - if (!checkHeaderfields(headerFields, certificateKeys, p_enforceSecurityCheck, p_itsAidOther)) { - System.err.println("SecurityHelper.checkSecuredProfileAndExtractPayload: Drop packet - Wrong Headerfields"); + if (!checkHeaderfields(headerFields, certificateKeys, p_enforceSecurityCheck, p_itsAidOther, lowerInfo)) { + TERFactory.getInstance().logError("SecurityHelper.checkSecuredProfileAndExtractPayload: Drop packet - Wrong Headerfields"); if (p_enforceSecurityCheck) { // Drop it return null; @@ -116,28 +132,28 @@ public class SecurityHelper { byte[] keys = certificateKeys.toByteArray(); if ((keys[0] == 0x02) || (keys[0] == 0x03)) { // Key length = 32 bytes aaSigningPublicKeyX = ByteHelper.extract(keys, 1, 32); - System.out.println("SecurityHelper.checkSecuredProfileAndExtractPayload: aaSigningPublicKeyX:" + ByteHelper.byteArrayToString(aaSigningPublicKeyX)); + TERFactory.getInstance().logDebug("SecurityHelper.checkSecuredProfileAndExtractPayload: aaSigningPublicKeyX:" + ByteHelper.byteArrayToString(aaSigningPublicKeyX)); } else { // Key length = 64 bytes aaSigningPublicKeyX = ByteHelper.extract(keys, 1, 32); - System.out.println("SecurityHelper.checkSecuredProfileAndExtractPayload: aaSigningPublicKeyX:" + ByteHelper.byteArrayToString(aaSigningPublicKeyX)); - aaSigningPublicKeyY = ByteHelper.extract(keys, 33, 32); - System.out.println("SecurityHelper.checkSecuredProfileAndExtractPayload: aaSigningPublicKeyX:" + ByteHelper.byteArrayToString(aaSigningPublicKeyX)); + TERFactory.getInstance().logDebug("SecurityHelper.checkSecuredProfileAndExtractPayload: aaSigningPublicKeyX:" + ByteHelper.byteArrayToString(aaSigningPublicKeyX)); + aaSigningPublicKeyY = ByteHelper.extract(keys, 33, 32); + TERFactory.getInstance().logDebug("SecurityHelper.checkSecuredProfileAndExtractPayload: aaSigningPublicKeyX:" + ByteHelper.byteArrayToString(aaSigningPublicKeyX)); } // FIXME Add encryption support - System.out.println("SecurityHelper.checkSecuredProfileAndExtractPayload: headerFields:" + ByteHelper.byteArrayToString(headerFields)); + TERFactory.getInstance().logDebug("SecurityHelper.checkSecuredProfileAndExtractPayload: headerFields:" + ByteHelper.byteArrayToString(headerFields)); // Extract payload, decvalue is updated with the payload if (decvalue.read() != 1) { - System.err.println("SecurityHelper.checkSecuredProfileAndExtractPayload: Drop packet - Wrong Payload type"); + TERFactory.getInstance().logError("SecurityHelper.checkSecuredProfileAndExtractPayload: Drop packet - Wrong Payload type"); if (p_enforceSecurityCheck) { // Drop it return null; } } long payloadLength = tls2size(decvalue); - System.out.println("SecurityHelper.checkSecuredProfileAndExtractPayload: payloadLength:" + payloadLength); + TERFactory.getInstance().logDebug("SecurityHelper.checkSecuredProfileAndExtractPayload: payloadLength:" + payloadLength); byte[] payload = new byte[(int) payloadLength]; decvalue.read(payload, 0, (int) payloadLength); - System.out.println("SecurityHelper.checkSecuredProfileAndExtractPayload: payload:" + ByteHelper.byteArrayToString(payload)); + TERFactory.getInstance().logDebug("SecurityHelper.checkSecuredProfileAndExtractPayload: payload:" + ByteHelper.byteArrayToString(payload)); if (p_enforceSecurityCheck) { // Extract Secure Trailer long secureTrailerLength = tls2size(decvalue); byte[] secureTrailer = new byte[(int) secureTrailerLength]; @@ -145,39 +161,39 @@ public class SecurityHelper { ByteArrayOutputStream signature = new ByteArrayOutputStream(); if (!extractMessageSignature(secureTrailer, signature)) { // Drop it - System.err.println("SecurityHelper.checkSecuredProfileAndExtractPayload: Drop packet - Wrong Signatures"); + TERFactory.getInstance().logError("SecurityHelper.checkSecuredProfileAndExtractPayload: Drop packet - Wrong Signatures"); return null; } - System.out.println("SecurityHelper.checkSecuredProfileAndExtractPayload: signature:" + ByteHelper.byteArrayToString(signature.toByteArray())); + TERFactory.getInstance().logDebug("SecurityHelper.checkSecuredProfileAndExtractPayload: signature:" + ByteHelper.byteArrayToString(signature.toByteArray())); // Build signed data byte[] toBeVerifiedData = ByteHelper.extract( p_message, p_offset, p_message.length - (int)(p_offset + secureTrailerLength - 1 /* Exclude signature structure but keep signature type and signature length */) ); - System.out.println("SecurityHelper.checkSecuredProfileAndExtractPayload:" + ByteHelper.byteArrayToString(toBeVerifiedData)); + TERFactory.getInstance().logDebug("SecurityHelper.checkSecuredProfileAndExtractPayload:" + ByteHelper.byteArrayToString(toBeVerifiedData)); boolean result; try { - if (aaSigningPublicKeyY == null) { - // FIXME FSCOM: Check how t verify compressed signature - return payload; - } + if (aaSigningPublicKeyY == null) { + // FIXME FSCOM: Check how t verify compressed signature + return payload; + } result = CryptoLib.verifyWithEcdsaNistp256WithSha256( toBeVerifiedData, signature.toByteArray(), aaSigningPublicKeyX, aaSigningPublicKeyY ); - System.out.println("SecurityHelper.checkSecuredProfileAndExtractPayload: Verify signature: " + new Boolean(result)); + TERFactory.getInstance().logDebug("SecurityHelper.checkSecuredProfileAndExtractPayload: Verify signature: " + new Boolean(result)); if (!result) { // Drop packet - System.out.println("SecurityHelper.checkSecuredProfileAndExtractPayload: toBeVerifiedData :" + ByteHelper.byteArrayToString(toBeVerifiedData)); + TERFactory.getInstance().logDebug("SecurityHelper.checkSecuredProfileAndExtractPayload: toBeVerifiedData :" + ByteHelper.byteArrayToString(toBeVerifiedData)); // Calculate Digest digest from the buffer toBeVerifiedData - System.out.println("SecurityHelper.checkSecuredProfileAndExtractPayload: Hash :" + ByteHelper.byteArrayToString(CryptoLib.hashWithSha256(toBeVerifiedData))); - System.out.println("SecurityHelper.checkSecuredProfileAndExtractPayload: signature :" + ByteHelper.byteArrayToString(signature.toByteArray())); - System.out.println("SecurityHelper.checkSecuredProfileAndExtractPayload: aaSigningPublicKeyX:" + ByteHelper.byteArrayToString(aaSigningPublicKeyX)); - System.out.println("SecurityHelper.checkSecuredProfileAndExtractPayload: aaSigningPublicKeyY:" + ByteHelper.byteArrayToString(aaSigningPublicKeyY)); - System.err.println("SecurityHelper.checkSecuredProfileAndExtractPayload: Drop packet - Invalid signature"); + TERFactory.getInstance().logDebug("SecurityHelper.checkSecuredProfileAndExtractPayload: Hash :" + ByteHelper.byteArrayToString(CryptoLib.hashWithSha256(toBeVerifiedData))); + TERFactory.getInstance().logDebug("SecurityHelper.checkSecuredProfileAndExtractPayload: signature :" + ByteHelper.byteArrayToString(signature.toByteArray())); + TERFactory.getInstance().logDebug("SecurityHelper.checkSecuredProfileAndExtractPayload: aaSigningPublicKeyX:" + ByteHelper.byteArrayToString(aaSigningPublicKeyX)); + TERFactory.getInstance().logDebug("SecurityHelper.checkSecuredProfileAndExtractPayload: aaSigningPublicKeyY:" + ByteHelper.byteArrayToString(aaSigningPublicKeyY)); + TERFactory.getInstance().logError("SecurityHelper.checkSecuredProfileAndExtractPayload: Drop packet - Invalid signature"); return null; } @@ -187,19 +203,19 @@ public class SecurityHelper { } // Drop packet - System.err.println("<<< SecurityHelper.checkSecuredProfileAndExtractPayload: dropped"); + TERFactory.getInstance().logError("<<< SecurityHelper.checkSecuredProfileAndExtractPayload: dropped"); return null; } return payload; } - public boolean checkHeaderfields(final byte[] p_headerfields, final ByteArrayOutputStream p_keys, final boolean p_enforceSecurityCheck, final int p_itsAidOther) { - System.out.println(">>> SecurityHelper.checkHeaderfields: " + ByteHelper.byteArrayToString(p_headerfields)); + public boolean checkHeaderfields(final byte[] p_headerfields, final ByteArrayOutputStream p_keys, final boolean p_enforceSecurityCheck, final int p_itsAidOther, Map lowerInfo) { + TERFactory.getInstance().logDebug(">>> SecurityHelper.checkHeaderfields: " + ByteHelper.byteArrayToString(p_headerfields)); // Sanity check if (p_headerfields.length == 0) { - System.err.println("SecurityHelper.checkHeaderfields: Drop packet - Invalid header fields"); + TERFactory.getInstance().logError("SecurityHelper.checkHeaderfields: Drop packet - Invalid header fields"); return false; } // Extract digest or certificate @@ -212,7 +228,7 @@ public class SecurityHelper { (p_headerfields[signerInfoTypeIndex + 1] != 0x03) // SignerInfo Type: certificate chain (3) ) ) { - System.err.println("SecurityHelper.checkHeaderfields: Drop packet - Certificate"); + TERFactory.getInstance().logError("SecurityHelper.checkHeaderfields: Drop packet - Certificate"); if (p_enforceSecurityCheck) { // Drop it return false; @@ -222,19 +238,19 @@ public class SecurityHelper { if (p_headerfields[signerInfoTypeIndex] == 0x02) { // SignerInfo Type: Certificate (2) signerInfoTypeIndex += 1; // Extract certificate because of it is an Other message profile - byte[] certificate = decodeCertificate(p_headerfields, signerInfoTypeIndex, p_keys, p_enforceSecurityCheck); + byte[] certificate = decodeCertificate(p_headerfields, signerInfoTypeIndex, p_keys, p_enforceSecurityCheck, lowerInfo); if (certificate == null) { - System.err.println("SecurityHelper.checkHeaderfields: Drop packet - Certificate not decoded"); + TERFactory.getInstance().logError("SecurityHelper.checkHeaderfields: Drop packet - Certificate not decoded"); if (p_enforceSecurityCheck) { // Drop it return false; } } - System.out.println("SecurityHelper.checkHeaderfields: Certificate=" + ByteHelper.byteArrayToString(certificate)); + TERFactory.getInstance().logDebug("SecurityHelper.checkHeaderfields: Certificate=" + ByteHelper.byteArrayToString(certificate)); // Add it in our map Long lKey = ByteHelper.byteArrayToLong(calculateDigestFromCertificate(certificate)); if (!_neighborsCertificates.containsKey(lKey)) { - System.out.println("SecurityHelper.checkHeaderfields: Add keys for " + ByteHelper.byteArrayToString(calculateDigestFromCertificate(certificate)) + " / " + lKey); + TERFactory.getInstance().logDebug("SecurityHelper.checkHeaderfields: Add keys for " + ByteHelper.byteArrayToString(calculateDigestFromCertificate(certificate)) + " / " + lKey); _neighborsCertificates.put(lKey, p_keys); } signerInfoTypeIndex += certificate.length; @@ -243,9 +259,9 @@ public class SecurityHelper { byte[] hashedid8 = ByteHelper.extract(p_headerfields, signerInfoTypeIndex, Long.SIZE / Byte.SIZE); signerInfoTypeIndex += (Long.SIZE / Byte.SIZE); Long lKey = ByteHelper.byteArrayToLong(hashedid8); - System.out.println("SecurityHelper.checkHeaderfields: Certificate digest with SHA256=" + lKey + "/ " + ByteHelper.byteArrayToString(hashedid8)); - if (!_neighborsCertificates.containsKey(lKey) || (_neighborsCertificates.get(lKey) == null)) { - System.err.println("SecurityHelper.checkHeaderfields: Drop packet - Unknown HahedId8"); + TERFactory.getInstance().logDebug("SecurityHelper.checkHeaderfields: Certificate digest with SHA256=" + lKey + "/ " + ByteHelper.byteArrayToString(hashedid8)); + if (!_neighborsCertificates.containsKey(lKey) || (_neighborsCertificates.get(lKey) == null)) { //FIXME as long as the cert chain is not complete, it should not be seen as error -> raise CR + TERFactory.getInstance().logError("SecurityHelper.checkHeaderfields: Drop packet - Unknown HahedId8"); if (p_enforceSecurityCheck) { // Drop it return false; @@ -265,42 +281,42 @@ public class SecurityHelper { signerInfoTypeIndex += 1; ByteArrayInputStream ba = new ByteArrayInputStream(ByteHelper.extract(p_headerfields, signerInfoTypeIndex, p_headerfields.length - signerInfoTypeIndex)); int certChainLength = (int) this.tls2size(ba); - System.out.println("SecurityHelper.checkHeaderfields: Certchain length = " + certChainLength); + TERFactory.getInstance().logDebug("SecurityHelper.checkHeaderfields: Certchain length = " + certChainLength); signerInfoTypeIndex += this.size2tls(certChainLength).length; ByteArrayOutputStream keys; do { // Extract certificate because of it is an Other message profile keys = new ByteArrayOutputStream(); - byte[] certificate = decodeCertificate(p_headerfields, signerInfoTypeIndex, keys, p_enforceSecurityCheck); + byte[] certificate = decodeCertificate(p_headerfields, signerInfoTypeIndex, keys, p_enforceSecurityCheck, lowerInfo); if (certificate == null) { // Drop it - System.err.println("SecurityHelper.checkHeaderfields: Drop packet - Failed to decode chain of certificate"); + TERFactory.getInstance().logError("SecurityHelper.checkHeaderfields: Drop packet - Failed to decode chain of certificate"); return false; } - System.out.println("SecurityHelper.checkHeaderfields: Certificate=" + ByteHelper.byteArrayToString(certificate)); + TERFactory.getInstance().logDebug("SecurityHelper.checkHeaderfields: Certificate=" + ByteHelper.byteArrayToString(certificate)); // Add it in our map Long lKey = ByteHelper.byteArrayToLong(calculateDigestFromCertificate(certificate)); if (!_neighborsCertificates.containsKey(lKey)) { - System.out.println("SecurityHelper.checkHeaderfields: Add keys for " + ByteHelper.byteArrayToString(calculateDigestFromCertificate(certificate)) + " / " + lKey); + TERFactory.getInstance().logDebug("SecurityHelper.checkHeaderfields: Add keys for " + ByteHelper.byteArrayToString(calculateDigestFromCertificate(certificate)) + " / " + lKey); _neighborsCertificates.put(lKey, p_keys); } certChainLength -= certificate.length; signerInfoTypeIndex += certificate.length; - System.out.println("SecurityHelper.checkHeaderfields: Extracted certificate = " + ByteHelper.byteArrayToString(certificate)); + TERFactory.getInstance().logDebug("SecurityHelper.checkHeaderfields: Extracted certificate = " + ByteHelper.byteArrayToString(certificate)); } while (certChainLength > 0); } // Check generation time if (p_headerfields[signerInfoTypeIndex++] != 0x00) { // Header Field: Generation Time (0) if (p_enforceSecurityCheck) { // Drop it - System.err.println("SecurityHelper.checkHeaderfields: Drop packet - GenerationTime not found"); + TERFactory.getInstance().logError("SecurityHelper.checkHeaderfields: Drop packet - GenerationTime not found"); return false; } } long generationTime = ByteHelper.byteArrayToLong(ByteHelper.extract(p_headerfields, signerInfoTypeIndex, Long.SIZE / Byte.SIZE)); - System.out.println("SecurityHelper.checkHeaderfields: generationTime=" + generationTime); + TERFactory.getInstance().logDebug("SecurityHelper.checkHeaderfields: generationTime=" + generationTime); if (Math.abs(System.currentTimeMillis() - generationTime) < 1000) { - System.err.println("SecurityHelper.checkHeaderfields: Drop packet - GenerationTime out of range"); + TERFactory.getInstance().logError("SecurityHelper.checkHeaderfields: Drop packet - GenerationTime out of range"); if (p_enforceSecurityCheck) { // Drop it return false; @@ -309,22 +325,22 @@ public class SecurityHelper { signerInfoTypeIndex += (Long.SIZE / Byte.SIZE); if (signerInfoTypeIndex < p_headerfields.length) { - System.out.println("SecurityHelper.checkHeaderfields: dump #1=" + ByteHelper.byteArrayToString(ByteHelper.extract(p_headerfields, signerInfoTypeIndex, p_headerfields.length - signerInfoTypeIndex))); + TERFactory.getInstance().logDebug("SecurityHelper.checkHeaderfields: dump #1=" + ByteHelper.byteArrayToString(ByteHelper.extract(p_headerfields, signerInfoTypeIndex, p_headerfields.length - signerInfoTypeIndex))); if (p_headerfields[signerInfoTypeIndex] == 0x03) { // Header Field: Generation Location (3) signerInfoTypeIndex += 1; byte[] lat = ByteHelper.extract(p_headerfields, signerInfoTypeIndex, 4); signerInfoTypeIndex += 4; - System.out.println("SecurityHelper.checkHeaderfields: latitude=" + ByteHelper.byteArrayToString(lat)); + TERFactory.getInstance().logDebug("SecurityHelper.checkHeaderfields: latitude=" + ByteHelper.byteArrayToString(lat)); byte[] lon = ByteHelper.extract(p_headerfields, signerInfoTypeIndex, 4); signerInfoTypeIndex += 4; - System.out.println("SecurityHelper.checkHeaderfields: longitude=" + ByteHelper.byteArrayToString(lon)); + TERFactory.getInstance().logDebug("SecurityHelper.checkHeaderfields: longitude=" + ByteHelper.byteArrayToString(lon)); byte[] ele = ByteHelper.extract(p_headerfields, signerInfoTypeIndex, 2); signerInfoTypeIndex += 2; - System.out.println("SecurityHelper.checkHeaderfields: elevation=" + ByteHelper.byteArrayToString(ele)); + TERFactory.getInstance().logDebug("SecurityHelper.checkHeaderfields: elevation=" + ByteHelper.byteArrayToString(ele)); } } if (signerInfoTypeIndex < p_headerfields.length) { - System.out.println("SecurityHelper.checkHeaderfields: dump #2=" + ByteHelper.byteArrayToString(ByteHelper.extract(p_headerfields, signerInfoTypeIndex, p_headerfields.length - signerInfoTypeIndex))); + TERFactory.getInstance().logDebug("SecurityHelper.checkHeaderfields: dump #2=" + ByteHelper.byteArrayToString(ByteHelper.extract(p_headerfields, signerInfoTypeIndex, p_headerfields.length - signerInfoTypeIndex))); if (p_headerfields[signerInfoTypeIndex] == 0x05) { // Header Field: Its AID (5) signerInfoTypeIndex += 1; // Check ItsAid @@ -332,40 +348,43 @@ public class SecurityHelper { if ( (p_headerfields[signerInfoTypeIndex] != 0x24) && // CAM (p_headerfields[signerInfoTypeIndex] != 0x25) && // DENM + // TODO Add MAPEM/SPATEM, IVIM & SREM/SSEM (p_headerfields[signerInfoTypeIndex] != p_itsAidOther) ) { - System.err.println("SecurityHelper.checkHeaderfields: Drop packet - Unknown ItsAid value"); + TERFactory.getInstance().logError("SecurityHelper.checkHeaderfields: Drop packet - Unknown ItsAid value"); if (p_enforceSecurityCheck) { // Drop it return false; } } - System.out.println("SecurityHelper.checkHeaderfields: ItsAid=" + p_headerfields[signerInfoTypeIndex]); + TERFactory.getInstance().logDebug("SecurityHelper.checkHeaderfields: ItsAid=" + p_headerfields[signerInfoTypeIndex]); + lowerInfo.put(SecurityHelper.SEC_ITS_AID, ByteHelper.intToByteArray(p_headerfields[signerInfoTypeIndex], Integer.SIZE / Byte.SIZE)); signerInfoTypeIndex += 1; } else { // FIXME to be continued + } } } if (signerInfoTypeIndex < p_headerfields.length) { // TODO check other fields - System.out.println("SecurityHelper.checkHeaderfields: dump #3=" + ByteHelper.byteArrayToString(ByteHelper.extract(p_headerfields, signerInfoTypeIndex, p_headerfields.length - signerInfoTypeIndex))); + TERFactory.getInstance().logDebug("SecurityHelper.checkHeaderfields: dump #3=" + ByteHelper.byteArrayToString(ByteHelper.extract(p_headerfields, signerInfoTypeIndex, p_headerfields.length - signerInfoTypeIndex))); } return true; } - public byte[] decodeCertificate(final byte[] p_headerfields, final int p_offset, final ByteArrayOutputStream p_keys, final boolean p_enforceSecurityCheck) { - System.out.println(">>> SecurityHelper.decodeCertificate: " + ByteHelper.byteArrayToString(ByteHelper.extract(p_headerfields, p_offset, p_headerfields.length - p_offset))); + public byte[] decodeCertificate(final byte[] p_headerfields, final int p_offset, final ByteArrayOutputStream p_keys, final boolean p_enforceSecurityCheck, Map p_lowerInfo) { + TERFactory.getInstance().logDebug(">>> SecurityHelper.decodeCertificate: " + ByteHelper.byteArrayToString(ByteHelper.extract(p_headerfields, p_offset, p_headerfields.length - p_offset))); ByteArrayInputStream headerfields = new ByteArrayInputStream(p_headerfields, p_offset, p_headerfields.length - p_offset); - System.out.println("SecurityHelper.decodeCertificate: headerfields length=" + headerfields.available()); + TERFactory.getInstance().logDebug("SecurityHelper.decodeCertificate: headerfields length=" + headerfields.available()); ByteArrayOutputStream cert = new ByteArrayOutputStream(); // FIXME To be removed try { // Version cert.write((byte)headerfields.read()); if (cert.toByteArray()[0] != 0x02) { - System.err.println("SecurityHelper.decodeCertificate: Wrong version number"); + TERFactory.getInstance().logError("SecurityHelper.decodeCertificate: Wrong version number"); if (p_enforceSecurityCheck) { // Drop it return null; @@ -378,7 +397,7 @@ public class SecurityHelper { case 0x01: byte[] digest = new byte[8]; headerfields.read(digest, 0, digest.length); - System.out.println("SecurityHelper.decodeCertificate: hashedid8=" + ByteHelper.byteArrayToString(digest)); + TERFactory.getInstance().logDebug("SecurityHelper.decodeCertificate: hashedid8=" + ByteHelper.byteArrayToString(digest)); cert.write(digest); break; // FIXME To be continued @@ -389,7 +408,7 @@ public class SecurityHelper { (subjectInfoType != 0x01) && // Subject Info: authorization ticket (1) (subjectInfoType != 0x02) // Subject Info: authorization authority (2) ) { - System.err.println("SecurityHelper.decodeCertificate: Subject Info: authorization authority/ticket expected - " + ByteHelper.byteArrayToString(cert.toByteArray())); + TERFactory.getInstance().logError("SecurityHelper.decodeCertificate: Subject Info: authorization authority/ticket expected - " + ByteHelper.byteArrayToString(cert.toByteArray())); return null; } cert.write(subjectInfoType); @@ -399,7 +418,7 @@ public class SecurityHelper { byte[] subjectInfo = new byte[(int) length]; headerfields.read(subjectInfo, 0, subjectInfo.length); cert.write(subjectInfo); - System.out.println("SecurityHelper.decodeCertificate: subjectInfo: " + ByteHelper.byteArrayToString(subjectInfo)); + TERFactory.getInstance().logDebug("SecurityHelper.decodeCertificate: subjectInfo: " + ByteHelper.byteArrayToString(subjectInfo)); } else { cert.write(0x00); } @@ -410,30 +429,30 @@ public class SecurityHelper { byte[] b = new byte[(int) length]; headerfields.read(b, 0, b.length); cert.write(b); - System.out.println("SecurityHelper.decodeCertificate: Subject Attributes length=" + length + " / " + headerfields.available()); + TERFactory.getInstance().logDebug("SecurityHelper.decodeCertificate: Subject Attributes length=" + length + " / " + headerfields.available()); ByteArrayInputStream subjectAttributes = new ByteArrayInputStream(b); if (subjectAttributes.read() == 0x00) { // Subject Attribute: verification key (0) - Mandatory if (subjectAttributes.read() == 0x00) { // Public Key Alg: ecdsa nistp256 with sha256 (0) - byte v = (byte) subjectAttributes.read(); + byte v = (byte) subjectAttributes.read(); p_keys.write(v); - System.out.println("SecurityHelper.decodeCertificate: ECC Point Type: =" + v); + TERFactory.getInstance().logDebug("SecurityHelper.decodeCertificate: ECC Point Type: =" + v); if (v == 0x02) { // ECC Point Type: compressed lsb y-0(2) byte[] key = new byte[32]; subjectAttributes.read(key, 0, 32); - System.out.println("SecurityHelper.decodeCertificate: Verification lsb y-1 key=" + ByteHelper.byteArrayToString(key)); + TERFactory.getInstance().logDebug("SecurityHelper.decodeCertificate: Verification lsb y-1 key=" + ByteHelper.byteArrayToString(key)); p_keys.write(key); } else if (v == 0x03) { // ECC Point Type: compressed lsb y-1(3) byte[] key = new byte[32]; subjectAttributes.read(key, 0, 32); - System.out.println("SecurityHelper.decodeCertificate: Verification lsb y-1 key=" + ByteHelper.byteArrayToString(key)); + TERFactory.getInstance().logDebug("SecurityHelper.decodeCertificate: Verification lsb y-1 key=" + ByteHelper.byteArrayToString(key)); p_keys.write(key); } else if (v == 0x04) { // ECC Point Type: uncompressed (4) byte[] key = new byte[32]; subjectAttributes.read(key, 0, 32); - System.out.println("SecurityHelper.decodeCertificate: Verification key1=" + ByteHelper.byteArrayToString(key)); + TERFactory.getInstance().logDebug("SecurityHelper.decodeCertificate: Verification key1=" + ByteHelper.byteArrayToString(key)); p_keys.write(key); subjectAttributes.read(key, 0, 32); - System.out.println("SecurityHelper.decodeCertificate: Verification key2=" + ByteHelper.byteArrayToString(key)); + TERFactory.getInstance().logDebug("SecurityHelper.decodeCertificate: Verification key2=" + ByteHelper.byteArrayToString(key)); p_keys.write(key); } // FIXME To be continued } // FIXME To be continued @@ -444,26 +463,26 @@ public class SecurityHelper { if (v == 0x01) { // // Subject Attribute: encryption key (1) if (subjectAttributes.read() == 0x01) { // Public Key Alg: ecdsa nistp256 (1) if (subjectAttributes.read() == 0x00) { // Symmetric Algorithm: aes 128 ccm (0) - v = (byte) subjectAttributes.read(); + v = (byte) subjectAttributes.read(); p_keys.write(v); - System.out.println("SecurityHelper.decodeCertificate: ECC Point Type: =" + v); + TERFactory.getInstance().logDebug("SecurityHelper.decodeCertificate: ECC Point Type: =" + v); if (v == 0x02) { // ECC Point Type: compressed lsb y-0(2) byte[] key = new byte[32]; subjectAttributes.read(key, 0, 32); - System.out.println("SecurityHelper.decodeCertificate: Encryption lsb y-0 key=" + ByteHelper.byteArrayToString(key)); + TERFactory.getInstance().logDebug("SecurityHelper.decodeCertificate: Encryption lsb y-0 key=" + ByteHelper.byteArrayToString(key)); p_keys.write(key); } else if (v == 0x03) { // ECC Point Type: compressed lsb y-1(3) byte[] key = new byte[32]; subjectAttributes.read(key, 0, 32); - System.out.println("SecurityHelper.decodeCertificate: Encryption lsb y-1 key=" + ByteHelper.byteArrayToString(key)); + TERFactory.getInstance().logDebug("SecurityHelper.decodeCertificate: Encryption lsb y-1 key=" + ByteHelper.byteArrayToString(key)); p_keys.write(key); } else if (v == 0x04) { // ECC Point Type: uncompressed (4) byte[] key = new byte[32]; subjectAttributes.read(key, 0, 32); - System.out.println("SecurityHelper.decodeCertificate: Encryption key1=" + ByteHelper.byteArrayToString(key)); + TERFactory.getInstance().logDebug("SecurityHelper.decodeCertificate: Encryption key1=" + ByteHelper.byteArrayToString(key)); p_keys.write(key); subjectAttributes.read(key, 0, 32); - System.out.println("SecurityHelper.decodeCertificate: Encryption key2=" + ByteHelper.byteArrayToString(key)); + TERFactory.getInstance().logDebug("SecurityHelper.decodeCertificate: Encryption key2=" + ByteHelper.byteArrayToString(key)); p_keys.write(key); } // FIXME To be continued } // FIXME To be continued @@ -475,41 +494,42 @@ public class SecurityHelper { // Assurance level if (v != 0x02) { - System.err.println("SecurityHelper.decodeCertificate: Assurance level expected - " + ByteHelper.byteArrayToString(cert.toByteArray())); + TERFactory.getInstance().logError("SecurityHelper.decodeCertificate: Assurance level expected - " + ByteHelper.byteArrayToString(cert.toByteArray())); return null; } v = (byte) subjectAttributes.read(); // Skip assurance level value - System.out.println("SecurityHelper.decodeCertificate: assurance level value=" + v); + TERFactory.getInstance().logDebug("SecurityHelper.decodeCertificate: assurance level value=" + v); if (subjectInfoType == 0x01) { // Authorization Ticket if (subjectAttributes.read() != 0x21) { // Subject Attribute: its aid ssp list (33) - System.err.println("SecurityHelper.decodeCertificate: Its aid ssp list expected - " + ByteHelper.byteArrayToString(cert.toByteArray())); + TERFactory.getInstance().logError("SecurityHelper.decodeCertificate: Its aid ssp list expected - " + ByteHelper.byteArrayToString(cert.toByteArray())); return null; } length = tls2size(subjectAttributes); - System.out.println("SecurityHelper.decodeCertificate: Its aid ssp length=" + length); + TERFactory.getInstance().logDebug("SecurityHelper.decodeCertificate: Its aid ssp length=" + length); byte[] its_aid_ssp_list = new byte[(int) length]; subjectAttributes.read(its_aid_ssp_list, 0, (int) length); - System.out.println("SecurityHelper.decodeCertificate: its_aid_list=" + ByteHelper.byteArrayToString(its_aid_ssp_list)); + TERFactory.getInstance().logDebug("SecurityHelper.decodeCertificate: its_aid_list=" + ByteHelper.byteArrayToString(its_aid_ssp_list)); + p_lowerInfo.put(SecurityHelper.SEC_SSP, ByteHelper.fill(its_aid_ssp_list, 16, (byte)0x00)); // TODO Process ATS AID list } else if (subjectInfoType == 0x02) { // Authorization Authority if (subjectAttributes.read() != 0x20) { // Subject Attribute: its aid ssp (32) - System.err.println("SecurityHelper.decodeCertificate: Its aid list expected - " + ByteHelper.byteArrayToString(cert.toByteArray())); + TERFactory.getInstance().logError("SecurityHelper.decodeCertificate: Its aid list expected - " + ByteHelper.byteArrayToString(cert.toByteArray())); return null; } length = tls2size(subjectAttributes); - System.out.println("SecurityHelper.decodeCertificate: its_aid_list length=" + length); + TERFactory.getInstance().logDebug("SecurityHelper.decodeCertificate: its_aid_list length=" + length); byte[] its_aid_list = new byte[(int) length]; subjectAttributes.read(its_aid_list, 0, (int) length); - System.out.println("SecurityHelper.decodeCertificate: its_aid_list=" + ByteHelper.byteArrayToString(its_aid_list)); + TERFactory.getInstance().logDebug("SecurityHelper.decodeCertificate: its_aid_list=" + ByteHelper.byteArrayToString(its_aid_list)); // TODO Process ATS AID list } else { - System.err.println("SecurityHelper.decodeCertificate: Unknown subjectInfoType - " + subjectInfoType); + TERFactory.getInstance().logError("SecurityHelper.decodeCertificate: Unknown subjectInfoType - " + subjectInfoType); return null; } // Validity restrictions length = tls2size(headerfields); - System.out.println("SecurityHelper.decodeCertificate: Length=" + length + " / " + headerfields.available()); + TERFactory.getInstance().logDebug("SecurityHelper.decodeCertificate: Length=" + length + " / " + headerfields.available()); cert.write(size2tls((int)length)); v = (byte)headerfields.read(); if (v == 0x00) { // Validity Restriction: time end (0) @@ -518,11 +538,11 @@ public class SecurityHelper { headerfields.read(time, 0, 4); cert.write(time); int endTime = ByteHelper.byteArrayToInt(time); - System.out.println("SecurityHelper.decodeCertificate: Validity Restriction: endTime=" + endTime); + TERFactory.getInstance().logDebug("SecurityHelper.decodeCertificate: Validity Restriction: endTime=" + endTime); // Check times long currentTime = (System.currentTimeMillis() - 1072915200000L) / 1000L; if (currentTime > endTime) { - System.err.println("SecurityHelper.decodeCertificate: Validity Restriction: time end not matched"); + TERFactory.getInstance().logError("SecurityHelper.decodeCertificate: Validity Restriction: time end not matched"); return null; } v = (byte)headerfields.read(); @@ -533,16 +553,16 @@ public class SecurityHelper { headerfields.read(time, 0, 4); cert.write(time); int startTime = ByteHelper.byteArrayToInt(time); - System.out.println("SecurityHelper.decodeCertificate: Validity Restriction: startTime=" + startTime); + TERFactory.getInstance().logDebug("SecurityHelper.decodeCertificate: Validity Restriction: startTime=" + startTime); headerfields.read(time, 0, 4); cert.write(time); int endTime = ByteHelper.byteArrayToInt(time); - System.out.println("SecurityHelper.decodeCertificate: Validity Restriction: endTime=" + endTime); + TERFactory.getInstance().logDebug("SecurityHelper.decodeCertificate: Validity Restriction: endTime=" + endTime); // Check times long currentTime = (System.currentTimeMillis() - 1072915200000L) / 1000L; - System.out.println("SecurityHelper.decodeCertificate: Validity Restriction: currentTime=" + currentTime); + TERFactory.getInstance().logDebug("SecurityHelper.decodeCertificate: Validity Restriction: currentTime=" + currentTime); if ((currentTime < startTime) || (currentTime > endTime)) { - System.err.println("SecurityHelper.decodeCertificate: Validity Restriction: time start and end not matched"); + TERFactory.getInstance().logError("SecurityHelper.decodeCertificate: Validity Restriction: time start and end not matched"); return null; } v = (byte)headerfields.read(); @@ -553,14 +573,14 @@ public class SecurityHelper { headerfields.read(time, 0, 4); cert.write(time); int startTime = ByteHelper.byteArrayToInt(time); - System.out.println("SecurityHelper.decodeCertificate: Validity Restriction: startTime=" + startTime); + TERFactory.getInstance().logDebug("SecurityHelper.decodeCertificate: Validity Restriction: startTime=" + startTime); byte[] dur = new byte[2]; headerfields.read(dur, 0, 2); cert.write(dur); short duration = ByteHelper.byteArrayToShort(dur); - System.out.println("SecurityHelper.decodeCertificate: Validity Restriction: duration=" + duration); + TERFactory.getInstance().logDebug("SecurityHelper.decodeCertificate: Validity Restriction: duration=" + duration); int unit = (duration & 0xe0000) >>> 13; - System.out.println("SecurityHelper.decodeCertificate: Validity Restriction: unit=" + unit); + TERFactory.getInstance().logDebug("SecurityHelper.decodeCertificate: Validity Restriction: unit=" + unit); long value = (duration & 0x1fff); switch (unit) { case 0: @@ -573,14 +593,14 @@ public class SecurityHelper { value *= 3600; break; default: - System.err.println("SecurityHelper.decodeCertificate: Validity Restriction: time start and duration not processed"); + TERFactory.getInstance().logError("SecurityHelper.decodeCertificate: Validity Restriction: time start and duration not processed"); value = Long.MAX_VALUE; } // End of 'switch' statement - System.out.println("SecurityHelper.decodeCertificate: Validity Restriction: value=" + value); + TERFactory.getInstance().logDebug("SecurityHelper.decodeCertificate: Validity Restriction: value=" + value); // Check times long currentTime = (System.currentTimeMillis() - 1072915200000L) / 1000L; if ((currentTime < startTime) || (currentTime > (startTime + value))) { - System.err.println("SecurityHelper.decodeCertificate: Validity Restriction: time start and duration not matched"); + TERFactory.getInstance().logError("SecurityHelper.decodeCertificate: Validity Restriction: time start and duration not matched"); return null; } v = (byte)headerfields.read(); @@ -596,15 +616,15 @@ public class SecurityHelper { byte[] lat = new byte[4]; headerfields.read(lat, 0, lat.length); cert.write(lat); - System.out.println("SecurityHelper.decodeCertificate: Circle lat=" + ByteHelper.byteArrayToString(lat)); + TERFactory.getInstance().logDebug("SecurityHelper.decodeCertificate: Circle lat=" + ByteHelper.byteArrayToString(lat)); byte[] lon = new byte[4]; headerfields.read(lon, 0, lon.length); cert.write(lon); - System.out.println("SecurityHelper.decodeCertificate: Circle lon=" + ByteHelper.byteArrayToString(lon)); + TERFactory.getInstance().logDebug("SecurityHelper.decodeCertificate: Circle lon=" + ByteHelper.byteArrayToString(lon)); byte[] rad = new byte[2]; headerfields.read(rad, 0, rad.length); cert.write(rad); - System.out.println("SecurityHelper.decodeCertificate: Circle rad=" + ByteHelper.byteArrayToInt(rad)); + TERFactory.getInstance().logDebug("SecurityHelper.decodeCertificate: Circle rad=" + ByteHelper.byteArrayToInt(rad)); } else if (v == 0x02) { // rectangle (2) int rlength = (int) tls2size(headerfields); cert.write(size2tls(rlength)); @@ -621,10 +641,10 @@ public class SecurityHelper { byte[] llon = new byte[4]; headerfields.read(llon, 0, llon.length); cert.write(llon); - System.out.println("SecurityHelper.decodeCertificate: Rectangle ulat=" + ByteHelper.byteArrayToString(ulat)); - System.out.println("SecurityHelper.decodeCertificate: Rectangle ulon=" + ByteHelper.byteArrayToString(ulon)); - System.out.println("SecurityHelper.decodeCertificate: Rectangle llat=" + ByteHelper.byteArrayToString(llat)); - System.out.println("SecurityHelper.decodeCertificate: Rectangle llon=" + ByteHelper.byteArrayToString(llon)); + TERFactory.getInstance().logDebug("SecurityHelper.decodeCertificate: Rectangle ulat=" + ByteHelper.byteArrayToString(ulat)); + TERFactory.getInstance().logDebug("SecurityHelper.decodeCertificate: Rectangle ulon=" + ByteHelper.byteArrayToString(ulon)); + TERFactory.getInstance().logDebug("SecurityHelper.decodeCertificate: Rectangle llat=" + ByteHelper.byteArrayToString(llat)); + TERFactory.getInstance().logDebug("SecurityHelper.decodeCertificate: Rectangle llon=" + ByteHelper.byteArrayToString(llon)); rlength -= 4 * 4; } } else if (v == 0x03) { // polygon (3) @@ -638,14 +658,14 @@ public class SecurityHelper { byte[] lon = new byte[4]; headerfields.read(lon, 0, lon.length); cert.write(lon); - System.out.println("SecurityHelper.decodeCertificate: poly point lat=" + ByteHelper.byteArrayToString(lat)); - System.out.println("SecurityHelper.decodeCertificate: poly point lon=" + ByteHelper.byteArrayToString(lon)); + TERFactory.getInstance().logDebug("SecurityHelper.decodeCertificate: poly point lat=" + ByteHelper.byteArrayToString(lat)); + TERFactory.getInstance().logDebug("SecurityHelper.decodeCertificate: poly point lon=" + ByteHelper.byteArrayToString(lon)); plength -= 2 * 4; } headerfields.read(polygonalRegion, 0, polygonalRegion.length); cert.write(polygonalRegion); // TODO Process Validity Restriction - System.out.println("SecurityHelper.decodeCertificate: polygonal=" + ByteHelper.byteArrayToString(polygonalRegion)); + TERFactory.getInstance().logDebug("SecurityHelper.decodeCertificate: polygonal=" + ByteHelper.byteArrayToString(polygonalRegion)); } else if (v == 0x04) { // id (4) v = (byte)headerfields.read(); @@ -656,15 +676,15 @@ public class SecurityHelper { int lr = (int) tls2size(headerfields); cert.write(size2tls((int) lr)); // TODO Process Validity Restriction - System.out.println("SecurityHelper.decodeCertificate: Region t=" + v); - System.out.println("SecurityHelper.decodeCertificate: Region ri=" + ByteHelper.byteArrayToString(ri)); - System.out.println("SecurityHelper.decodeCertificate: Region lr=" + lr); + TERFactory.getInstance().logDebug("SecurityHelper.decodeCertificate: Region t=" + v); + TERFactory.getInstance().logDebug("SecurityHelper.decodeCertificate: Region ri=" + ByteHelper.byteArrayToString(ri)); + TERFactory.getInstance().logDebug("SecurityHelper.decodeCertificate: Region lr=" + lr); } else { - System.err.println("SecurityHelper.decodeCertificate: Unexpected geographical region"); + TERFactory.getInstance().logError("SecurityHelper.decodeCertificate: Unexpected geographical region"); return null; } } - System.out.println("SecurityHelper.decodeCertificate: Before signature: " + ByteHelper.byteArrayToString(cert.toByteArray())); + TERFactory.getInstance().logDebug("SecurityHelper.decodeCertificate: Before signature: " + ByteHelper.byteArrayToString(cert.toByteArray())); // Signature byte publicKeyAlg = (byte)headerfields.read(); cert.write(publicKeyAlg); @@ -677,25 +697,25 @@ public class SecurityHelper { byte[] key = new byte[64]; headerfields.read(key, 0, key.length); cert.write(key); - System.out.println("SecurityHelper.decodeCertificate: Signature=" + ByteHelper.byteArrayToString(key)); + TERFactory.getInstance().logDebug("SecurityHelper.decodeCertificate: Signature=" + ByteHelper.byteArrayToString(key)); break; } // End of 'switch' statement break; } // End of 'switch' statement // TODO Check certificate signature - System.out.println("SecurityHelper.decodeCertificate: Processed cert=" + ByteHelper.byteArrayToString(cert.toByteArray())); + TERFactory.getInstance().logDebug("SecurityHelper.decodeCertificate: Processed cert=" + ByteHelper.byteArrayToString(cert.toByteArray())); return cert.toByteArray(); } catch (IOException e) { e.printStackTrace(); } - System.err.println("SecurityHelper.decodeCertificate: Unsupported certificate - " + ByteHelper.byteArrayToString(cert.toByteArray())); + TERFactory.getInstance().logError("SecurityHelper.decodeCertificate: Unsupported certificate - " + ByteHelper.byteArrayToString(cert.toByteArray())); return null; } public boolean extractMessageSignature(final byte[] p_secureTrailer, final ByteArrayOutputStream p_signature) { - System.out.println(">>> SecurityHelper.extractMessageSignature: " + ByteHelper.byteArrayToString(p_secureTrailer)); + TERFactory.getInstance().logDebug(">>> SecurityHelper.extractMessageSignature: " + ByteHelper.byteArrayToString(p_secureTrailer)); // Sanity check if (p_secureTrailer.length == 0) { @@ -706,15 +726,15 @@ public class SecurityHelper { int secureTrailerIndex = 0; if (p_secureTrailer[secureTrailerIndex++] == 0x01) { // Trailer Type: signature (1) if (p_secureTrailer[secureTrailerIndex++] == 0x00) { // Public Key Alg: ecdsa nistp256 with sha256 (0) - byte v = p_secureTrailer[secureTrailerIndex++]; - if ((v == 0x00) || (v == 0x02)) { // ECC Point Type: compressed lsb y-0 (2) + byte v = p_secureTrailer[secureTrailerIndex++]; + if ((v == 0x00) || (v == 0x02)) { // ECC Point Type: compressed lsb y-0 (2) if (p_secureTrailer.length == (3 + 2 * 32)) { // Build the signature vector try { p_signature.write(new byte[] { (byte)0x00, (byte)0x00 }); p_signature.write(ByteHelper.extract(p_secureTrailer, 3, 64)); - System.out.println("<<< SecurityHelper.extractMessageSignature: true"); + TERFactory.getInstance().logDebug("<<< SecurityHelper.extractMessageSignature: true"); return true; } catch (IOException e) { e.printStackTrace(); @@ -725,14 +745,14 @@ public class SecurityHelper { } // FIXME To be continued // Else, drop it - System.err.println("SecurityHelper.extractMessageSignature: Drop packet - Wrong signature"); + TERFactory.getInstance().logError("SecurityHelper.extractMessageSignature: Drop packet - Wrong signature"); return false; } public byte[] calculateDigestFromCertificate(final byte[] p_toBeHashedData) { - System.out.println("SecurityHelper.calculateDigestFromCertificate: " + ByteHelper.byteArrayToString(p_toBeHashedData)); + TERFactory.getInstance().logDebug("SecurityHelper.calculateDigestFromCertificate: " + ByteHelper.byteArrayToString(p_toBeHashedData)); byte[] hash = CryptoLib.hashWithSha256(p_toBeHashedData); - System.out.println("SecurityHelper.calculateDigestFromCertificate: " + ByteHelper.byteArrayToString(hash)); + TERFactory.getInstance().logDebug("SecurityHelper.calculateDigestFromCertificate: " + ByteHelper.byteArrayToString(hash)); return ByteHelper.extract(hash, hash.length - 8, 8); } diff --git a/javasrc/adapter/org/etsi/its/adapter/layers/BtpLayer.java b/javasrc/adapter/org/etsi/its/adapter/layers/BtpLayer.java index 8c4d593a2e26d799b84f3a5059e918207a402375..ee098d08bf8d3f69e31eb38ed74fe6e6ba2d0783 100644 --- a/javasrc/adapter/org/etsi/its/adapter/layers/BtpLayer.java +++ b/javasrc/adapter/org/etsi/its/adapter/layers/BtpLayer.java @@ -23,108 +23,108 @@ public class BtpLayer extends Layer { /** * Parameter name for BTP packet type */ - public static final String BTP_TYPE = "BtpType"; - + public static final String BTP_TYPE = "BtpType"; + /** * Parameter name for BTP destination port - */ - public static final String BTP_DSTPORT = "BtpDstPort"; + */ + public static final String BTP_DSTPORT = "BtpDstPort"; /** * Parameter name for BTP source port - */ - public static final String BTP_SRCPORT = "BtpSrcPort"; - + */ + public static final String BTP_SRCPORT = "BtpSrcPort"; + /** * Parameter name for BTP destination port information - */ - public static final String BTP_DSTPORTINFO = "BtpDstPortInfo"; - + */ + public static final String BTP_DSTPORTINFO = "BtpDstPortInfo"; + /** * BTP packet type A */ - public static final int TYPE_A = 0; - + public static final int TYPE_A = 0; + /** * BTP packet type B - */ - public static final int TYPE_B = 1; - + */ + public static final int TYPE_B = 1; + /** * Constructor * @param management Layer management instance * @param lowerStack Lower protocol stack */ - public BtpLayer(IManagementLayers management, Stack lowerStack) { - super(management, lowerStack); - } + public BtpLayer(IManagementLayers management, Stack lowerStack) { + super(management, lowerStack); + } - /* (non-Javadoc) - * @see org.etsi.its.adapter.layers.Layer#send(byte[], java.util.Map) - */ - @Override - public boolean send(byte[] message, Map params) { - - // Destination Port (16 bits) - int dstPort; - try { - dstPort = (Integer)params.get(BTP_DSTPORT); - } - catch (NullPointerException e) { - dstPort = 0; - } - byte[] encapsulated = ByteHelper.intToByteArray(dstPort, 2); - - if(params.get(BTP_TYPE).equals(TYPE_A)) { - // Source Port (16 bits) - int srcPort; - try { - srcPort = (Integer)params.get(BTP_SRCPORT); - } - catch (NullPointerException e) { - srcPort = 0; - } - encapsulated = ByteHelper.concat(encapsulated, ByteHelper.intToByteArray(srcPort, 2)); - } - else { - // Destination port info (16 bits) - int dstPortInfo; - try { - dstPortInfo = (Integer)params.get(BTP_DSTPORTINFO); - } - catch (NullPointerException e) { - dstPortInfo = 0; - } - encapsulated = ByteHelper.concat(encapsulated, ByteHelper.intToByteArray(dstPortInfo, 2)); - } + /* (non-Javadoc) + * @see org.etsi.its.adapter.layers.Layer#send(byte[], java.util.Map) + */ + @Override + public boolean send(byte[] message, Map params) { + + // Destination Port (16 bits) + int dstPort; + try { + dstPort = (Integer)params.get(BTP_DSTPORT); + } + catch (NullPointerException e) { + dstPort = 0; + } + byte[] encapsulated = ByteHelper.intToByteArray(dstPort, 2); + + if(params.get(BTP_TYPE).equals(TYPE_A)) { + // Source Port (16 bits) + int srcPort; + try { + srcPort = (Integer)params.get(BTP_SRCPORT); + } + catch (NullPointerException e) { + srcPort = 0; + } + encapsulated = ByteHelper.concat(encapsulated, ByteHelper.intToByteArray(srcPort, 2)); + } + else { + // Destination port info (16 bits) + int dstPortInfo; + try { + dstPortInfo = (Integer)params.get(BTP_DSTPORTINFO); + } + catch (NullPointerException e) { + dstPortInfo = 0; + } + encapsulated = ByteHelper.concat(encapsulated, ByteHelper.intToByteArray(dstPortInfo, 2)); + } - // Update params -// if(lowerLayerName != null && lowerLayerName.equals("GN")) { -// params.put(GnLayer.GN_NEXTHEADER, "BTP-A"); // TODO Alex to confirm removal -// } - - return super.send(ByteHelper.concat(encapsulated, message), params); - } - - /* (non-Javadoc) - * @see org.etsi.its.adapter.layers.Layer#receive(byte[]) - */ - @Override - public void receive(byte[] message, Map lowerInfo) { - - byte[] dstPort = new byte[2]; - System.arraycopy(message, 0, dstPort, 0, 2); - - byte[] srcPort = new byte[2]; - System.arraycopy(message, 2, srcPort, 0, 2); - - int payloadLength = message.length - 4; - byte[] payload = new byte[payloadLength]; - System.arraycopy(message, 4, payload, 0, payloadLength); - + // Update params +// if(lowerLayerName != null && lowerLayerName.equals("GN")) { +// params.put(GnLayer.GN_NEXTHEADER, "BTP-A"); // TODO Alex to confirm removal +// } + + return super.send(ByteHelper.concat(encapsulated, message), params); + } + + /* (non-Javadoc) + * @see org.etsi.its.adapter.layers.Layer#receive(byte[]) + */ + @Override + public void receive(byte[] message, Map lowerInfo) { + + byte[] dstPort = new byte[2]; + System.arraycopy(message, 0, dstPort, 0, 2); + + byte[] srcPort = new byte[2]; + System.arraycopy(message, 2, srcPort, 0, 2); + + int payloadLength = message.length - 4; + byte[] payload = new byte[payloadLength]; + System.arraycopy(message, 4, payload, 0, payloadLength); + lowerInfo.put(BTP_DSTPORT, dstPort); lowerInfo.put(BTP_DSTPORTINFO, srcPort); - - super.receive(payload, lowerInfo); - } + + super.receive(payload, lowerInfo); + } } diff --git a/javasrc/adapter/org/etsi/its/adapter/layers/GnLayer.java b/javasrc/adapter/org/etsi/its/adapter/layers/GnLayer.java index b6e5450348389dec7a23e02c1d814052480ae74d..9b7d2b62aeb3f92a4d7e60e18ecd8f6abce6505d 100644 --- a/javasrc/adapter/org/etsi/its/adapter/layers/GnLayer.java +++ b/javasrc/adapter/org/etsi/its/adapter/layers/GnLayer.java @@ -90,7 +90,7 @@ public class GnLayer extends Layer implements Runnable, IEthernetSpecific { * Parameter name for packet's lifetime */ public static final String GN_LIFETIME = "GnLifetime"; - + /** * GeoNetworking header type for unknown messages */ @@ -237,7 +237,7 @@ public class GnLayer extends Layer implements Runnable, IEthernetSpecific { */ @Override public boolean send(byte[] message, Map params) { - System.out.println(">>> GnLayer.send: " + ByteHelper.byteArrayToString(message)); +// TERFactory.getInstance().logDebug(">>> GnLayer.send: " + ByteHelper.byteArrayToString(message)); byte [] extHdr = null; int ht; @@ -299,7 +299,7 @@ public class GnLayer extends Layer implements Runnable, IEthernetSpecific { toBeSent = createSecuredMessage(basicHdr, commonHdr, extHdr, message); } - System.out.println("<<< GnLayer.send: " + ByteHelper.byteArrayToString(toBeSent)); +// TERFactory.getInstance().logDebug("<<< GnLayer.send: " + ByteHelper.byteArrayToString(toBeSent)); return super.send(toBeSent, params); } @@ -308,7 +308,7 @@ public class GnLayer extends Layer implements Runnable, IEthernetSpecific { */ @Override public void receive(byte[] message, Map lowerInfo) { - System.out.println(">>> GnLayer.receive: " + ByteHelper.byteArrayToString(message)); +// TERFactory.getInstance().logDebug(">>> GnLayer.receive: " + ByteHelper.byteArrayToString(message)); byte[] basicHdr = new byte[4]; System.arraycopy(message, 0, basicHdr, 0, 4); @@ -350,7 +350,7 @@ public class GnLayer extends Layer implements Runnable, IEthernetSpecific { params.put(GN_DEPV, depv); params.put(GN_TYPE, HT_LS); params.put(GN_SUBTYPE, HST_LSREPLY); - System.out.println("GnLayer.receive: Send LS_REPLAY in unsecured mode"); +// TERFactory.getInstance().logDebug("GnLayer.receive: Send LS_REPLAY in unsecured mode"); send(null, params); } } @@ -371,13 +371,16 @@ public class GnLayer extends Layer implements Runnable, IEthernetSpecific { super.receive(payload, lowerInfo); } } + // Security disable, null will be translated into omit + lowerInfo.put(SecurityHelper.SEC_SSP, null); + lowerInfo.put(SecurityHelper.SEC_ITS_AID, null); } else if (nextHeader == 0x02) { // Secured tag - byte[] payload = SecurityHelper.getInstance().checkSecuredProfileAndExtractPayload(message, basicHdr.length, management.isEnforceSecuredModeSet(), management.getItsAidOther()); + byte[] payload = SecurityHelper.getInstance().checkSecuredProfileAndExtractPayload(message, basicHdr.length, management.isEnforceSecuredModeSet(), management.getItsAidOther(), lowerInfo); if (payload != null) { -// System.out.println("GnLayer.receive: payload=" + ByteHelper.byteArrayToString(payload)); +// TERFactory.getInstance().logDebug("GnLayer.receive: payload=" + ByteHelper.byteArrayToString(payload)); byte[] commonHdr = new byte[8]; System.arraycopy(payload, 0, commonHdr, 0, 8); -// System.out.println("GnLayer.receive: commonHdr=" + ByteHelper.byteArrayToString(commonHdr)); +// TERFactory.getInstance().logDebug("GnLayer.receive: commonHdr=" + ByteHelper.byteArrayToString(commonHdr)); nextHeader = (byte)((commonHdr[0] & (byte)0xF0) >> 4); int trafficClass = (int)(commonHdr[2]); @@ -408,7 +411,7 @@ public class GnLayer extends Layer implements Runnable, IEthernetSpecific { params.put(GN_DEPV, depv); params.put(GN_TYPE, HT_LS); params.put(GN_SUBTYPE, HST_LSREPLY); - System.out.println("GnLayer.receive: Send LS_REPLAY in secured mode"); + TERFactory.getInstance().logDebug("GnLayer.receive: Send LS_REPLAY in secured mode"); send(null, params); } } else { @@ -430,7 +433,9 @@ public class GnLayer extends Layer implements Runnable, IEthernetSpecific { } } else { // Drop it - System.err.println("GnLayer.receive: Invalid basic header type"); + // //FIXME as long as the cert chain is not complete, it should not be seen as error -> raise CR +// TERFactory.getInstance().logError("GnLayer.receive: Invalid basic header type"); + TERFactory.getInstance().logDebug("GnLayer.receive: Invalid basic header type"); return; } } @@ -634,7 +639,7 @@ public class GnLayer extends Layer implements Runnable, IEthernetSpecific { } private byte[] createSecuredMessage(final byte[] basicHdr, final byte[] commonHdr, final byte[] extHdr, final byte[] message) { - System.out.println(">>> GnLayer.createSecuredMessage: "+ ByteHelper.byteArrayToString(message)); +// TERFactory.getInstance().logDebug(">>> GnLayer.createSecuredMessage"); // SecuredMessage payload length int payloadLength = commonHdr.length + extHdr.length + message.length; @@ -642,7 +647,7 @@ public class GnLayer extends Layer implements Runnable, IEthernetSpecific { // Build the generation time value long curtime = System.currentTimeMillis(); byte[] generationTime = ByteHelper.longToByteArray((long)(curtime - 1072915200000L) * 1000L, Long.SIZE / Byte.SIZE); // In microseconds - System.out.println("GnLayer.createSecuredMessage: generationTime=" + ByteHelper.byteArrayToString(generationTime)); +// TERFactory.getInstance().logDebug("GnLayer.createSecuredMessage: generationTime=" + ByteHelper.byteArrayToString(generationTime)); // Build the payload to be signed byte[] headersField = ByteHelper.concat( ByteHelper.concat( // SecuredMessage HeaderFields @@ -727,16 +732,16 @@ public class GnLayer extends Layer implements Runnable, IEthernetSpecific { new byte[] { (byte)0x01 }, // Signature new byte[] { (byte)0x43 } // Signature length ); - System.out.println("GnLayer.createSecuredMessage: toBeSignedData=" + ByteHelper.byteArrayToString(toBeSignedData)); +// TERFactory.getInstance().logDebug("GnLayer.createSecuredMessage: toBeSignedData=" + ByteHelper.byteArrayToString(toBeSignedData)); byte[] toBeSent = null; try { // Calculate the hash byte[] hash = CryptoLib.hashWithSha256(toBeSignedData); - System.out.println("GnLayer.createSecuredMessage: hash=" + ByteHelper.byteArrayToString(hash)); +// TERFactory.getInstance().logDebug("GnLayer.createSecuredMessage: hash=" + ByteHelper.byteArrayToString(hash)); // Signed the hash byte[] signatureBytes = CryptoLib.signWithEcdsaNistp256WithSha256(hash, management.getSigningPrivateKey()); - System.out.println("GnLayer.createSecuredMessage: signatureBytes=" + ByteHelper.byteArrayToString(signatureBytes)); +// TERFactory.getInstance().logDebug("GnLayer.createSecuredMessage: signatureBytes=" + ByteHelper.byteArrayToString(signatureBytes)); // Add signature toBeSent = ByteHelper.concat( basicHdr, @@ -748,7 +753,7 @@ public class GnLayer extends Layer implements Runnable, IEthernetSpecific { e.printStackTrace(); } - System.out.println("GnLayer.createSecuredMessage: toBeSent=" + ByteHelper.byteArrayToString(toBeSent)); +// TERFactory.getInstance().logDebug("GnLayer.createSecuredMessage: toBeSent=" + ByteHelper.byteArrayToString(toBeSent)); return toBeSent; } diff --git a/javasrc/adapter/org/etsi/its/adapter/layers/LayerFactory.java b/javasrc/adapter/org/etsi/its/adapter/layers/LayerFactory.java index 79fe65d5a87e57b30cb2231e9a048bcac9c96bce..bbad2d5e3bf2d64f65e74183fdfb9bcab68b6013 100644 --- a/javasrc/adapter/org/etsi/its/adapter/layers/LayerFactory.java +++ b/javasrc/adapter/org/etsi/its/adapter/layers/LayerFactory.java @@ -13,14 +13,8 @@ import java.util.Map; import java.util.Stack; import java.util.TreeMap; +import org.etsi.adapter.TERFactory; import org.etsi.its.adapter.IManagementLayers; -import org.etsi.its.adapter.layers.test.BtpSourceLayer; -import org.etsi.its.adapter.layers.test.CamSourceLayer; -import org.etsi.its.adapter.layers.test.DebugLayer; -import org.etsi.its.adapter.layers.test.DenmSourceLayer; -import org.etsi.its.adapter.layers.test.Gn6SourceLayer; -import org.etsi.its.adapter.layers.test.GnSourceLayer; -import org.etsi.its.adapter.layers.test.LoopbackLayer; /** * Layer factory (Singleton) @@ -72,7 +66,7 @@ public class LayerFactory { * @return Protocol port instance */ public Layer createLayer(IManagementLayers management, String layerName, Stack lowerStack) { -// System.out.println(">>> LayerFactory.createLayer: " + layerName); + //TERFactory.getInstance().logDebug(">>> LayerFactory.createLayer: " + layerName); Layer layer = null; Class[] ctorParams = {IManagementLayers.class, lowerStack.getClass()}; diff --git a/javasrc/adapter/org/etsi/its/adapter/layers/UdpIpLayer.java b/javasrc/adapter/org/etsi/its/adapter/layers/UdpIpLayer.java index fd8ccefb7a74687ed02444b171c9b672ce66b443..f006b80d8b42e596ea49432a5ec21c6bc36c3894 100644 --- a/javasrc/adapter/org/etsi/its/adapter/layers/UdpIpLayer.java +++ b/javasrc/adapter/org/etsi/its/adapter/layers/UdpIpLayer.java @@ -9,6 +9,7 @@ import java.util.Map; import java.util.Stack; import org.etsi.common.ByteHelper; +import org.etsi.adapter.TERFactory; import org.etsi.its.adapter.IManagementLayers; public class UdpIpLayer extends Layer { @@ -41,7 +42,7 @@ public class UdpIpLayer extends Layer { super.register(upperLayer); try { iutAddress = InetAddress.getByName("127.0.0.1"); - //System.out.println("IUT Address: " + iutAddress.getHostAddress()); + //TERFactory.getInstance().logDebug("IUT Address: " + iutAddress.getHostAddress()); iutPort = 3750; iutSocket = new DatagramSocket(3751); iutThread = new UdpThread(iutSocket); diff --git a/javasrc/adapter/org/etsi/its/adapter/ports/AdapterControlPort.java b/javasrc/adapter/org/etsi/its/adapter/ports/AdapterControlPort.java index 05ce2026efc285830d8cdfbaf7d9d1177d123fdb..44dccb6ea49347a86ddcda1b83c1f40ebf4a025b 100644 --- a/javasrc/adapter/org/etsi/its/adapter/ports/AdapterControlPort.java +++ b/javasrc/adapter/org/etsi/its/adapter/ports/AdapterControlPort.java @@ -26,12 +26,14 @@ public class AdapterControlPort extends AdapterPort implements IPort, IObservabl private static final byte AcGnPrimitive = 0; private static final byte AcGn6Primitive = 1; private static final byte AcGnssPrimitive = 2; + private static final byte AcSecPrimitive = 3; /* AdapterControl Response */ private static final byte AcGnResponse = 0; //private static final byte AcGn6Response = 1; public static final byte AcGnssResponse = 2; public static final byte AcGnssDistanceCovered = 3; + public static final byte AcSecResponse = 4; /* GN Commands */ private static final byte AcStartBeaconing = 0; @@ -41,9 +43,7 @@ public class AdapterControlPort extends AdapterPort implements IPort, IObservabl private static final byte AcStartBeaconingMultipleNeighbour = 4; private static final byte AcStopBeaconingMultipleNeighbour = 5; private static final byte AcGetLongPosVector = 6; - private static final byte AcEnableSecurity = 7; - private static final byte AcDisableSecurity = 8; - + /* GN Responses */ protected static final byte AcGnResponseFailure = 0; protected static final byte AcLongPosVector = 6; @@ -56,6 +56,11 @@ public class AdapterControlPort extends AdapterPort implements IPort, IObservabl private static final byte AcChangeSpead = 0x74; private static final byte AcChangeHeading = 0x75; + /* Set the certificate to be used by the Test Adapter */ + private static final byte AcEnableSecurity = 0x7a; + private static final byte AcDisableSecurity = 0x7b; + + public static final byte AcTrue = 0x01; public static final byte AcFalse = 0x00; @@ -112,12 +117,6 @@ public class AdapterControlPort extends AdapterPort implements IPort, IObservabl case AcStopBeaconingMultipleNeighbour: // TODO break; - case AcEnableSecurity: - Management.getInstance(getComponentName()).setSecuredMode(data); - break; - case AcDisableSecurity: - Management.getInstance(getComponentName()).unsetSecuredMode(); - break; } } break; @@ -180,6 +179,17 @@ public class AdapterControlPort extends AdapterPort implements IPort, IObservabl result = false; } break; + case AcSecPrimitive: + switch (message[1]) { + case AcEnableSecurity: + byte[] data = ByteHelper.extract(message, 2, message.length - 2); + ProcessAcEnableSecurity(data); + break; + case AcDisableSecurity: + ProcessAcDisableSecurity(); + break; + } // End of 'switch' statement + break; default: ByteHelper.dump("Unsupported AC primitive", message); break; @@ -283,6 +293,32 @@ public class AdapterControlPort extends AdapterPort implements IPort, IObservabl }).start(); } + private void ProcessAcEnableSecurity(final byte[] data) { + new Thread(new Runnable() { + @Override + public void run() { + Management.getInstance(getComponentName()).setSecuredMode(data); + byte[] response = {(byte)AcSecResponse, (byte)AcTrue }; + + setChanged(); + notifyObservers(new PortEvent(response, getPortName(), getComponentName())); + } + }).start(); + } + + private void ProcessAcDisableSecurity() { + new Thread(new Runnable() { + @Override + public void run() { + Management.getInstance(getComponentName()).unsetSecuredMode(); + byte[] response = {(byte)AcSecResponse, (byte)AcTrue }; + + setChanged(); + notifyObservers(new PortEvent(response, getPortName(), getComponentName())); + } + }).start(); + } + @Override public void dispose() { if (gnssScenarioSupport) { diff --git a/javasrc/adapter/org/etsi/its/adapter/ports/BtpPort.java b/javasrc/adapter/org/etsi/its/adapter/ports/BtpPort.java index 3a101683955dde01ce4bdea0a043b5f5c53a096c..6229e38c1420e22f807abc3e0bb4e2bb8aa40b36 100644 --- a/javasrc/adapter/org/etsi/its/adapter/ports/BtpPort.java +++ b/javasrc/adapter/org/etsi/its/adapter/ports/BtpPort.java @@ -39,7 +39,7 @@ public class BtpPort extends ProtocolPort { // Encode with GN next header info - BTP A or BTP B byte[] msgInd = ByteHelper.concat( - new byte[] { (byte) lowerInfo.get(GnLayer.GN_NEXTHEADER) }, + new byte[] { ((Byte)(lowerInfo.get(GnLayer.GN_NEXTHEADER))).byteValue() }, message ); super.receive(msgInd, lowerInfo); diff --git a/javasrc/adapter/org/etsi/its/adapter/ports/CamPort.java b/javasrc/adapter/org/etsi/its/adapter/ports/CamPort.java index 4c4a090006af3c9417404e0835202ff625454425..8e62cdf07894b912447fdb172437b7701ab3aa26 100644 --- a/javasrc/adapter/org/etsi/its/adapter/ports/CamPort.java +++ b/javasrc/adapter/org/etsi/its/adapter/ports/CamPort.java @@ -11,7 +11,9 @@ package org.etsi.its.adapter.ports; import java.util.HashMap; import java.util.Map; +import org.etsi.adapter.TERFactory; import org.etsi.common.ByteHelper; +import org.etsi.its.adapter.SecurityHelper; import org.etsi.its.adapter.layers.BtpLayer; import org.etsi.its.adapter.layers.GnLayer; @@ -36,24 +38,37 @@ public class CamPort extends ProtocolPort { */ @Override public void receive(byte[] message, Map lowerInfo) { -// System.out.println(">>> denmPort.receive: " + ByteHelper.byteArrayToString(message)); +// TERFactory.getInstance().logDebug(">>> denmPort.receive: " + ByteHelper.byteArrayToString(message)); if (message[1] != 0x02) { // Check that received packet has CAM message id - System.err.println("camPort.receive: drop packet " + ByteHelper.byteArrayToString(message)); + TERFactory.getInstance().logDebug("camPort.receive: drop packet " + ByteHelper.byteArrayToString(message)); return; // Drop it } // Encode with CAM indication header byte[] msgInd = ByteHelper.concat( message, - new byte[] { (byte) lowerInfo.get(GnLayer.GN_NEXTHEADER) }, - ByteHelper.intToByteArray((int) lowerInfo.get(GnLayer.GN_TYPE), 1), - ByteHelper.intToByteArray((int) lowerInfo.get(GnLayer.GN_SUBTYPE), 1), - ByteHelper.intToByteArray((int) lowerInfo.get(GnLayer.GN_LIFETIME), Integer.SIZE / Byte.SIZE), - ByteHelper.intToByteArray((int) lowerInfo.get(GnLayer.GN_TRAFFICCLASS), 1), + new byte[] { (Byte) lowerInfo.get(GnLayer.GN_NEXTHEADER) }, + ByteHelper.intToByteArray((Integer) lowerInfo.get(GnLayer.GN_TYPE), 1), + ByteHelper.intToByteArray((Integer) lowerInfo.get(GnLayer.GN_SUBTYPE), 1), + ByteHelper.intToByteArray((Integer) lowerInfo.get(GnLayer.GN_LIFETIME), Integer.SIZE / Byte.SIZE), + ByteHelper.intToByteArray((Integer) lowerInfo.get(GnLayer.GN_TRAFFICCLASS), 1), (byte[]) lowerInfo.get(BtpLayer.BTP_DSTPORT), (byte[]) lowerInfo.get(BtpLayer.BTP_DSTPORTINFO) ); + // Add security info to pass to the ATS + if (lowerInfo.get(SecurityHelper.SEC_SSP) == null) { + byte[] buf = new byte[16]; + msgInd = ByteHelper.concat(msgInd, buf); + } else { + msgInd = ByteHelper.concat(msgInd, (byte[])lowerInfo.get(SecurityHelper.SEC_SSP)); + } + if (lowerInfo.get(SecurityHelper.SEC_ITS_AID) == null) { // It shall not be possible to have SSP absent and ATS_AID present but... + msgInd = ByteHelper.concat(msgInd, new byte[] { (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00 }); + + } else { + msgInd = ByteHelper.concat(msgInd, (byte[])lowerInfo.get(SecurityHelper.SEC_ITS_AID)); + } super.receive(msgInd, lowerInfo); } diff --git a/javasrc/adapter/org/etsi/its/adapter/ports/DenmPort.java b/javasrc/adapter/org/etsi/its/adapter/ports/DenmPort.java index 47703be450ed7edb5e627ac010a87cbaec867eb1..3093bd72e29bcb81f59d0d03470c36624d4f2a76 100644 --- a/javasrc/adapter/org/etsi/its/adapter/ports/DenmPort.java +++ b/javasrc/adapter/org/etsi/its/adapter/ports/DenmPort.java @@ -11,7 +11,9 @@ package org.etsi.its.adapter.ports; import java.util.HashMap; import java.util.Map; +import org.etsi.adapter.TERFactory; import org.etsi.common.ByteHelper; +import org.etsi.its.adapter.SecurityHelper; import org.etsi.its.adapter.layers.BtpLayer; import org.etsi.its.adapter.layers.GnLayer; @@ -36,24 +38,37 @@ public class DenmPort extends ProtocolPort { */ @Override public void receive(byte[] message, Map lowerInfo) { -// System.out.println(">>> denmPort.receive: " + ByteHelper.byteArrayToString(message)); +// TERFactory.getInstance().logDebug(">>> denmPort.receive: " + ByteHelper.byteArrayToString(message)); if (message[1] != 0x01) { // Check that received packet has DENM message id - System.err.println("denmPort.receive: drop packet " + ByteHelper.byteArrayToString(message)); + TERFactory.getInstance().logDebug("denmPort.receive: drop packet " + ByteHelper.byteArrayToString(message)); return; // Drop it } // Encode with DENM indication header byte[] msgInd = ByteHelper.concat( message, - new byte[] { (byte) lowerInfo.get(GnLayer.GN_NEXTHEADER) }, - ByteHelper.intToByteArray((int) lowerInfo.get(GnLayer.GN_TYPE), 1), - ByteHelper.intToByteArray((int) lowerInfo.get(GnLayer.GN_SUBTYPE), 1), - ByteHelper.intToByteArray((int) lowerInfo.get(GnLayer.GN_LIFETIME), Integer.SIZE / Byte.SIZE), - ByteHelper.intToByteArray((int) lowerInfo.get(GnLayer.GN_TRAFFICCLASS), 1), + new byte[] { (Byte) lowerInfo.get(GnLayer.GN_NEXTHEADER) }, + ByteHelper.intToByteArray((Integer) lowerInfo.get(GnLayer.GN_TYPE), 1), + ByteHelper.intToByteArray((Integer) lowerInfo.get(GnLayer.GN_SUBTYPE), 1), + ByteHelper.intToByteArray((Integer) lowerInfo.get(GnLayer.GN_LIFETIME), Integer.SIZE / Byte.SIZE), + ByteHelper.intToByteArray((Integer) lowerInfo.get(GnLayer.GN_TRAFFICCLASS), 1), (byte[]) lowerInfo.get(BtpLayer.BTP_DSTPORT), (byte[]) lowerInfo.get(BtpLayer.BTP_DSTPORTINFO) ); + // Add security info to pass to the ATS + if (lowerInfo.get(SecurityHelper.SEC_SSP) == null) { + byte[] buf = new byte[16]; + msgInd = ByteHelper.concat(msgInd, buf); + } else { + msgInd = ByteHelper.concat(msgInd, (byte[])lowerInfo.get(SecurityHelper.SEC_SSP)); + } + if (lowerInfo.get(SecurityHelper.SEC_ITS_AID) == null) { // It shall not be possible to have SSP absent and ATS_AID present but... + msgInd = ByteHelper.concat(msgInd, new byte[] { (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00 }); + + } else { + msgInd = ByteHelper.concat(msgInd, (byte[])lowerInfo.get(SecurityHelper.SEC_ITS_AID)); + } super.receive(msgInd, lowerInfo); } diff --git a/javasrc/adapter/org/etsi/its/adapter/ports/GnPort.java b/javasrc/adapter/org/etsi/its/adapter/ports/GnPort.java index b43c1160e348ba0f2e6469deed274062baff6db9..4717bc34e0aa08a12c5b5861c9a0d32a91173cff 100644 --- a/javasrc/adapter/org/etsi/its/adapter/ports/GnPort.java +++ b/javasrc/adapter/org/etsi/its/adapter/ports/GnPort.java @@ -119,7 +119,7 @@ public class GnPort extends ProtocolPort implements Runnable, IEthernetSpecific } private byte[] buildSecuredBeacon(final byte[] p_beacon, byte[] p_tst, final long p_currentTime, final boolean p_sendDigest) { - //System.out.println("GnPort.buildSecuredBeacon (1): " + ByteHelper.byteArrayToString(p_beacon)); +// TERFactory.getInstance().logDebug("GnPort.buildSecuredBeacon (1): " + ByteHelper.byteArrayToString(p_beacon)); byte[] basicHeader = ByteHelper.extract(p_beacon, 0, 4); basicHeader[0] &= 0xFE; @@ -131,10 +131,10 @@ public class GnPort extends ProtocolPort implements Runnable, IEthernetSpecific p_tst, // Update the timestamp field ByteHelper.extract(p_beacon, 20, p_beacon.length - 4 - 20) // Add remaining bytes ); - //System.out.println("GnPort.buildSecuredBeacon (2): " + ByteHelper.byteArrayToString(beacon)); +// TERFactory.getInstance().logDebug("GnPort.buildSecuredBeacon (2): " + ByteHelper.byteArrayToString(beacon)); // Prepare the message to be signed byte[] toBeSignedData = buildToBeSignedData(beacon, p_currentTime, p_sendDigest); - //System.out.println("GnPort.buildSecuredBeacon: toBeSignedData " + ByteHelper.byteArrayToString(toBeSignedData)); +// TERFactory.getInstance().logDebug("GnPort.buildSecuredBeacon: toBeSignedData " + ByteHelper.byteArrayToString(toBeSignedData)); // Sign the message byte[] securedBeaconHeader = signSecuredMessage(toBeSignedData); @@ -143,7 +143,7 @@ public class GnPort extends ProtocolPort implements Runnable, IEthernetSpecific } private byte[] buildToBeSignedData(final byte[] p_beacon, final long p_currentTime, final boolean p_sendDigest) { - //System.out.println("GnPort.buildToBeSignedData: " + ByteHelper.byteArrayToString(p_beacon)); +// TERFactory.getInstance().logDebug("GnPort.buildToBeSignedData: " + ByteHelper.byteArrayToString(p_beacon)); // Build the SignerInfo field byte[] signerInfo = null; @@ -167,7 +167,7 @@ public class GnPort extends ProtocolPort implements Runnable, IEthernetSpecific // Build the generation time value byte[] generationTime = ByteHelper.longToByteArray((long)(p_currentTime - 1072915200000L) * 1000L, Long.SIZE / Byte.SIZE); // In microseconds - //System.out.println("GnPort.buildToBeSignedData: generationTime=" + ByteHelper.byteArrayToString(generationTime)); +// TERFactory.getInstance().logDebug("GnPort.buildToBeSignedData: generationTime=" + ByteHelper.byteArrayToString(generationTime)); byte[] headersField = ByteHelper.concat( ByteHelper.concat( // SecuredMessage HeaderFields signerInfo, // signerInfo @@ -209,7 +209,7 @@ public class GnPort extends ProtocolPort implements Runnable, IEthernetSpecific b ); byte[] headersFieldLength = SecurityHelper.getInstance().size2tls(headersField.length); - //System.out.println("GnPort.buildToBeSignedData: headersField=" + ByteHelper.byteArrayToString(headersField)); +// TERFactory.getInstance().logDebug("GnPort.buildToBeSignedData: headersField=" + ByteHelper.byteArrayToString(headersField)); byte[] toBeSignedData = ByteHelper.concat( new byte[] { // SecuredMessage version (byte)0x02 // version @@ -224,23 +224,23 @@ public class GnPort extends ProtocolPort implements Runnable, IEthernetSpecific new byte[] { (byte)0x43 }, // Signature length new byte[] { (byte)0x01 } // Signature ); - //System.out.println("GnPort.buildToBeSignedData: toBeSignedData=" + ByteHelper.byteArrayToString(toBeSignedData)); +// TERFactory.getInstance().logDebug("GnPort.buildToBeSignedData: toBeSignedData=" + ByteHelper.byteArrayToString(toBeSignedData)); return toBeSignedData; } private byte[] signSecuredMessage(final byte[] p_toBeSignedData) { - //System.out.println("GnPort.signSecuredMessage: toBeSignedData: " + ByteHelper.byteArrayToString(p_toBeSignedData)); +// TERFactory.getInstance().logDebug("GnPort.signSecuredMessage: toBeSignedData: " + ByteHelper.byteArrayToString(p_toBeSignedData)); // Calculate the hash byte[] hash = CryptoLib.hashWithSha256(p_toBeSignedData); - //System.out.println("GnPort.signSecuredMessage: hash=" + ByteHelper.byteArrayToString(hash)); +// TERFactory.getInstance().logDebug("GnPort.signSecuredMessage: hash=" + ByteHelper.byteArrayToString(hash)); byte[] securedBeaconHeader = null; // Signed the hash byte[] signatureBytes; try { signatureBytes = CryptoLib.signWithEcdsaNistp256WithSha256(hash, management.getSigningPrivateKey()); - //System.out.println("GnPort.signSecuredMessage: signatureBytes=" + ByteHelper.byteArrayToString(signatureBytes)); +// TERFactory.getInstance().logDebug("GnPort.signSecuredMessage: signatureBytes=" + ByteHelper.byteArrayToString(signatureBytes)); // Add signature securedBeaconHeader = ByteHelper.concat( p_toBeSignedData, @@ -253,11 +253,11 @@ public class GnPort extends ProtocolPort implements Runnable, IEthernetSpecific /* boolean result = CryptoLib.verifyWithEcdsaNistp256WithSha256(p_toBeSignedData, signatureBytes, management.getSigningPublicKeyX(), management.getSigningPublicKeyY()); - //System.out.println("GnPort.signSecuredMessage: Verify signature: pubX" + ByteHelper.byteArrayToString(management.getSigningPublicKeyX())); - //System.out.println("GnPort.signSecuredMessage: Verify signature: pubY" + ByteHelper.byteArrayToString(management.getSigningPublicKeyY())); - //System.out.println("GnPort.signSecuredMessage: Verify signature: " + new Boolean(result));*/ + TERFactory.getInstance().logDebug("GnPort.signSecuredMessage: Verify signature: pubX" + ByteHelper.byteArrayToString(management.getSigningPublicKeyX())); + TERFactory.getInstance().logDebug("GnPort.signSecuredMessage: Verify signature: pubY" + ByteHelper.byteArrayToString(management.getSigningPublicKeyY())); + TERFactory.getInstance().logDebug("GnPort.signSecuredMessage: Verify signature: " + new Boolean(result));*/ - //System.out.println("<<< GnPort.signSecuredMessage: sendBeacon: " + ByteHelper.byteArrayToString(securedBeaconHeader)); +// TERFactory.getInstance().logDebug("<<< GnPort.signSecuredMessage: sendBeacon: " + ByteHelper.byteArrayToString(securedBeaconHeader)); return securedBeaconHeader; } catch (Exception e) { e.printStackTrace(); @@ -271,7 +271,7 @@ public class GnPort extends ProtocolPort implements Runnable, IEthernetSpecific */ @Override public boolean send(byte[] message) { - //System.out.println(">>> GnPort.send: " + ByteHelper.byteArrayToString(message)); +// TERFactory.getInstance().logDebug(">>> GnPort.send: " + ByteHelper.byteArrayToString(message)); HashMap params = new HashMap(); @@ -292,7 +292,7 @@ public class GnPort extends ProtocolPort implements Runnable, IEthernetSpecific */ @Override public void receive(byte[] message, Map lowerInfo) { - //System.out.println(">>> GnPort.receive: " + ByteHelper.byteArrayToString(message)); +// TERFactory.getInstance().logDebug(">>> GnPort.receive: " + ByteHelper.byteArrayToString(message)); byte[] basicHdr = new byte[4]; System.arraycopy(message, 0, basicHdr, 0, 4); @@ -312,13 +312,16 @@ public class GnPort extends ProtocolPort implements Runnable, IEthernetSpecific sopvPos += 4; } System.arraycopy(message, sopvPos, sopv, 0, 24); + // Security disable, null will be translated into omit + lowerInfo.put(SecurityHelper.SEC_SSP, null); + lowerInfo.put(SecurityHelper.SEC_ITS_AID, null); } else if ((basicHdr[0] & 0x0f) == 0x02) { // Secured tag - byte[] payload = SecurityHelper.getInstance().checkSecuredProfileAndExtractPayload(message, basicHdr.length, management.isEnforceSecuredModeSet(), management.getItsAidOther()); + byte[] payload = SecurityHelper.getInstance().checkSecuredProfileAndExtractPayload(message, basicHdr.length, management.isEnforceSecuredModeSet(), management.getItsAidOther(), lowerInfo); if (payload != null) { - //System.out.println("GnPort.receive: payload=" + ByteHelper.byteArrayToString(payload)); +// TERFactory.getInstance().logDebug("GnPort.receive: payload=" + ByteHelper.byteArrayToString(payload)); byte[] commonHdr = new byte[8]; System.arraycopy(payload, 0, commonHdr, 0, 8); - //System.out.println("GnPort.receive: commonHdr=" + ByteHelper.byteArrayToString(commonHdr)); +// TERFactory.getInstance().logDebug("GnPort.receive: commonHdr=" + ByteHelper.byteArrayToString(commonHdr)); byte[] htHst = new byte[1]; System.arraycopy(commonHdr, 1, htHst, 0, 1); headerType = (int)(htHst[0] >> 4); @@ -331,15 +334,15 @@ public class GnPort extends ProtocolPort implements Runnable, IEthernetSpecific System.arraycopy(payload, sopvPos, sopv, 0, 24); } else { // Drop it - System.err.println("GnPort.receive: Invalid packet"); + TERFactory.getInstance().logError("GnPort.receive: Invalid packet"); return; } } else { // Drop it - System.err.println("GnPort.receive: Invalid basic header type"); + TERFactory.getInstance().logError("GnPort.receive: Invalid basic header type"); return; } - //System.out.println("GnPort.receive: sopv=" + ByteHelper.byteArrayToString(sopv)); +// TERFactory.getInstance().logDebug("GnPort.receive: sopv=" + ByteHelper.byteArrayToString(sopv)); byte[] gn = new byte[8]; System.arraycopy(sopv, 0, gn, 0, 8); @@ -363,6 +366,19 @@ public class GnPort extends ProtocolPort implements Runnable, IEthernetSpecific // Encode with GN indication header // Extract LINK_LAYER_DESTINATION byte[] msgInd = ByteHelper.concat(message, (byte[])lowerInfo.get(EthernetLayer.LINK_LAYER_DESTINATION)); + // Add security info to pass to the ATS + if (lowerInfo.get(SecurityHelper.SEC_SSP) == null) { + byte[] buf = new byte[16]; + msgInd = ByteHelper.concat(msgInd, buf); + } else { + msgInd = ByteHelper.concat(msgInd, (byte[])lowerInfo.get(SecurityHelper.SEC_SSP)); + } + if (lowerInfo.get(SecurityHelper.SEC_ITS_AID) == null) { // It shall not be possible to have SSP absent and ATS_AID present but... + msgInd = ByteHelper.concat(msgInd, new byte[] { (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00 }); + + } else { + msgInd = ByteHelper.concat(msgInd, (byte[])lowerInfo.get(SecurityHelper.SEC_ITS_AID)); + } super.receive(msgInd, lowerInfo); } } @@ -384,7 +400,7 @@ public class GnPort extends ProtocolPort implements Runnable, IEthernetSpecific } private byte[] createSecuredMessage(final byte[] message) { - System.out.println(">>> GnPort.createSecuredMessage: " + ByteHelper.byteArrayToString(message)); +// TERFactory.getInstance().logDebug(">>> GnPort.createSecuredMessage:" + ByteHelper.byteArrayToString(message)); // Extract and update the basicHeader byte[] basicHdr = ByteHelper.extract(message, 0, 4); @@ -394,11 +410,11 @@ public class GnPort extends ProtocolPort implements Runnable, IEthernetSpecific // Set nextHeader to secured basicHdr[0] &= 0xFE; basicHdr[0] |= 0x02; - //System.out.println("GnPort.createSecuredMessage: basicHdr=" + ByteHelper.byteArrayToString(basicHdr)); +// TERFactory.getInstance().logDebug("GnPort.createSecuredMessage: basicHdr=" + ByteHelper.byteArrayToString(basicHdr)); // Extract and update the basicHeader byte[] commonHdr = ByteHelper.extract(message, 4, 8); - //System.out.println("GnPort.createSecuredMessage: commonHdr=" + ByteHelper.byteArrayToString(commonHdr)); +// TERFactory.getInstance().logDebug("GnPort.createSecuredMessage: commonHdr=" + ByteHelper.byteArrayToString(commonHdr)); // Extract SecuredMessage payload byte[] securedPayload = ByteHelper.extract(message, 4, message.length - 4); @@ -489,16 +505,16 @@ public class GnPort extends ProtocolPort implements Runnable, IEthernetSpecific new byte[] { (byte)0x01 }, // Signature new byte[] { (byte)0x43 } // Signature length ); - //System.out.println("GnPort.createSecuredMessage: toBeSignedData=" + ByteHelper.byteArrayToString(toBeSignedData)); +// TERFactory.getInstance().logDebug("GnPort.createSecuredMessage: toBeSignedData=" + ByteHelper.byteArrayToString(toBeSignedData)); byte[] toBeSent = null; try { // Calculate the hash byte[] hash = CryptoLib.hashWithSha256(toBeSignedData); - //System.out.println("GnPort.createSecuredMessage: hash=" + ByteHelper.byteArrayToString(hash)); +// TERFactory.getInstance().logDebug("GnPort.createSecuredMessage: hash=" + ByteHelper.byteArrayToString(hash)); // Signed the hash byte[] signatureBytes = CryptoLib.signWithEcdsaNistp256WithSha256(hash, management.getSigningPrivateKey()); - //System.out.println("GnPort.createSecuredMessage: signatureBytes=" + ByteHelper.byteArrayToString(signatureBytes)); +// TERFactory.getInstance().logDebug("GnPort.createSecuredMessage: signatureBytes=" + ByteHelper.byteArrayToString(signatureBytes)); // Add signature toBeSent = ByteHelper.concat( basicHdr, @@ -510,8 +526,7 @@ public class GnPort extends ProtocolPort implements Runnable, IEthernetSpecific e.printStackTrace(); } - //System.out.println("GnPort.createSecuredMessage: toBeSent=" + ByteHelper.byteArrayToString(toBeSent)); - //System.out.println("\n\n"); +// TERFactory.getInstance().logDebug("GnPort.createSecuredMessage: toBeSent=" + ByteHelper.byteArrayToString(toBeSent)); return toBeSent; } diff --git a/javasrc/adapter/org/etsi/its/adapter/ports/IvimPort.java b/javasrc/adapter/org/etsi/its/adapter/ports/IvimPort.java new file mode 100644 index 0000000000000000000000000000000000000000..68f1997e63b3c183e7aab49ef161e5b4fc02f8d4 --- /dev/null +++ b/javasrc/adapter/org/etsi/its/adapter/ports/IvimPort.java @@ -0,0 +1,90 @@ +/** + * CAM port implementation + * + * @author ETSI / STF424 + * @version $URL$ + * $Id$ + * + */ +package org.etsi.its.adapter.ports; + +import java.util.HashMap; +import java.util.Map; + +import org.etsi.adapter.TERFactory; +import org.etsi.common.ByteHelper; +import org.etsi.its.adapter.SecurityHelper; +import org.etsi.its.adapter.layers.BtpLayer; +import org.etsi.its.adapter.layers.GnLayer; + +/** + * CAM port implementation + */ +public class IvimPort extends ProtocolPort { + + /** + * Constructor + * @param portName Name of the port + * @param componentName Name of the component owning this port instance + * @param lowerStackDesc Description of the port's lower stack in the form "Layer/Layer/Layer/..." + * @param linkLayerAddress Link-layer address to be used by this port as source address (null if not applicable) + */ + public IvimPort(String portName, String componentName, String lowerStackDesc, String linkLayerAddress) { + super(portName, componentName, lowerStackDesc, linkLayerAddress); + } + + /* (non-Javadoc) + * @see org.etsi.its.adapter.ports.ProtocolPort#receive(byte[], java.util.Map) + */ + @Override + public void receive(byte[] message, Map lowerInfo) { +// TERFactory.getInstance().logDebug(">>> denmPort.receive: " + ByteHelper.byteArrayToString(message)); + + if (message[1] != 0x02) { // Check that received packet has CAM message id + TERFactory.getInstance().logDebug("ivimPort.receive: drop packet " + ByteHelper.byteArrayToString(message)); + return; // Drop it + } + + // Encode with CAM indication header + byte[] msgInd = ByteHelper.concat( + message, + new byte[] { (Byte) lowerInfo.get(GnLayer.GN_NEXTHEADER) }, + ByteHelper.intToByteArray((Integer) lowerInfo.get(GnLayer.GN_TYPE), 1), + ByteHelper.intToByteArray((Integer) lowerInfo.get(GnLayer.GN_SUBTYPE), 1), + ByteHelper.intToByteArray((Integer) lowerInfo.get(GnLayer.GN_LIFETIME), Integer.SIZE / Byte.SIZE), + ByteHelper.intToByteArray((Integer) lowerInfo.get(GnLayer.GN_TRAFFICCLASS), 1), + (byte[]) lowerInfo.get(BtpLayer.BTP_DSTPORT), + (byte[]) lowerInfo.get(BtpLayer.BTP_DSTPORTINFO) + ); + // Add security info to pass to the ATS + if (lowerInfo.get(SecurityHelper.SEC_SSP) == null) { + byte[] buf = new byte[16]; + msgInd = ByteHelper.concat(msgInd, buf); + } else { + msgInd = ByteHelper.concat(msgInd, (byte[])lowerInfo.get(SecurityHelper.SEC_SSP)); + } + if (lowerInfo.get(SecurityHelper.SEC_ITS_AID) == null) { // It shall not be possible to have SSP absent and ATS_AID present but... + msgInd = ByteHelper.concat(msgInd, new byte[] { (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00 }); + + } else { + msgInd = ByteHelper.concat(msgInd, (byte[])lowerInfo.get(SecurityHelper.SEC_ITS_AID)); + } + super.receive(msgInd, lowerInfo); + } + + /* (non-Javadoc) + * @see org.etsi.its.adapter.ports.IPort#send(byte[]) + */ + @Override + public boolean send(byte[] message) { + + HashMap params = new HashMap(); + params.put(BtpLayer.BTP_TYPE, BtpLayer.TYPE_B); + params.put(BtpLayer.BTP_DSTPORT, 2001); + params.put(BtpLayer.BTP_SRCPORT, 500); + params.put(GnLayer.GN_TYPE, GnLayer.HT_TSB); + params.put(GnLayer.GN_SUBTYPE, GnLayer.HST_SINGLEHOP); + params.put(GnLayer.GN_NEXTHEADER, "BTP-B"); + return send(message, params); + } +} diff --git a/javasrc/adapter/org/etsi/its/adapter/ports/MapSpatPort.java b/javasrc/adapter/org/etsi/its/adapter/ports/MapemSpatemPort.java similarity index 55% rename from javasrc/adapter/org/etsi/its/adapter/ports/MapSpatPort.java rename to javasrc/adapter/org/etsi/its/adapter/ports/MapemSpatemPort.java index 4bf5e27aaa1911c7254ad5eaf643ef116e01da19..68b5f1ae792df4376b368abef4bf123ec9d94f35 100644 --- a/javasrc/adapter/org/etsi/its/adapter/ports/MapSpatPort.java +++ b/javasrc/adapter/org/etsi/its/adapter/ports/MapemSpatemPort.java @@ -4,10 +4,11 @@ import java.util.HashMap; import java.util.Map; import org.etsi.common.ByteHelper; +import org.etsi.its.adapter.SecurityHelper; import org.etsi.its.adapter.layers.BtpLayer; import org.etsi.its.adapter.layers.GnLayer; -public class MapSpatPort extends ProtocolPort { +public class MapemSpatemPort extends ProtocolPort { /** * Constructor @@ -16,7 +17,7 @@ public class MapSpatPort extends ProtocolPort { * @param lowerStackDesc Description of the port's lower stack in the form "Layer/Layer/Layer/..." * @param linkLayerAddress Link-layer address to be used by this port as source address (null if not applicable) */ - public MapSpatPort(String portName, String componentName, String lowerStackDesc, String linkLayerAddress) { + public MapemSpatemPort(String portName, String componentName, String lowerStackDesc, String linkLayerAddress) { super(portName, componentName, lowerStackDesc, linkLayerAddress); } @@ -29,14 +30,27 @@ public class MapSpatPort extends ProtocolPort { // Encode with CAM indication header byte[] msgInd = ByteHelper.concat( message, - new byte[] { (byte) lowerInfo.get(GnLayer.GN_NEXTHEADER) }, - ByteHelper.intToByteArray((int) lowerInfo.get(GnLayer.GN_TYPE), 1), - ByteHelper.intToByteArray((int) lowerInfo.get(GnLayer.GN_SUBTYPE), 1), - ByteHelper.intToByteArray((int) lowerInfo.get(GnLayer.GN_LIFETIME), Integer.SIZE / Byte.SIZE), - ByteHelper.intToByteArray((int) lowerInfo.get(GnLayer.GN_TRAFFICCLASS), 1), + new byte[] { (Byte) lowerInfo.get(GnLayer.GN_NEXTHEADER) }, + ByteHelper.intToByteArray((Integer) lowerInfo.get(GnLayer.GN_TYPE), 1), + ByteHelper.intToByteArray((Integer) lowerInfo.get(GnLayer.GN_SUBTYPE), 1), + ByteHelper.intToByteArray((Integer) lowerInfo.get(GnLayer.GN_LIFETIME), Integer.SIZE / Byte.SIZE), + ByteHelper.intToByteArray((Integer) lowerInfo.get(GnLayer.GN_TRAFFICCLASS), 1), (byte[]) lowerInfo.get(BtpLayer.BTP_DSTPORT), (byte[]) lowerInfo.get(BtpLayer.BTP_DSTPORTINFO) ); + // Add security info to pass to the ATS + if (lowerInfo.get(SecurityHelper.SEC_SSP) == null) { + byte[] buf = new byte[16]; + msgInd = ByteHelper.concat(msgInd, buf); + } else { + msgInd = ByteHelper.concat(msgInd, (byte[])lowerInfo.get(SecurityHelper.SEC_SSP)); + } + if (lowerInfo.get(SecurityHelper.SEC_ITS_AID) == null) { // It shall not be possible to have SSP absent and ATS_AID present but... + msgInd = ByteHelper.concat(msgInd, new byte[] { (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00 }); + + } else { + msgInd = ByteHelper.concat(msgInd, (byte[])lowerInfo.get(SecurityHelper.SEC_ITS_AID)); + } super.receive(msgInd, lowerInfo); } @@ -48,13 +62,14 @@ public class MapSpatPort extends ProtocolPort { HashMap params = new HashMap(); params.put(BtpLayer.BTP_TYPE, BtpLayer.TYPE_B); - if (message[1] == 0x5) { + if (message[1] == 0x5) { // MAPEM, see ITS-Container params.put(BtpLayer.BTP_DSTPORT, 2003); - } - else { + } else if (message[1] == 0x4) { // SPATEM, see ITS-Container params.put(BtpLayer.BTP_DSTPORT, 2004); + } else { + params.put(BtpLayer.BTP_DSTPORT, 0); } - params.put(BtpLayer.BTP_SRCPORT, 500); + params.put(BtpLayer.BTP_SRCPORT, 0); params.put(GnLayer.GN_TYPE, GnLayer.HT_TSB); params.put(GnLayer.GN_SUBTYPE, GnLayer.HST_MULTIHOP); params.put(GnLayer.GN_LATITUDE, ByteHelper.byteArrayToLong(management.getLatitude())); diff --git a/javasrc/adapter/org/etsi/its/adapter/ports/ProtocolPortFactory.java b/javasrc/adapter/org/etsi/its/adapter/ports/ProtocolPortFactory.java index 565a585bf1dba1ed036634fcba99dda2b37929a2..bb2cc5b7d6a28894f104169894c8f269c4ea7d5e 100644 --- a/javasrc/adapter/org/etsi/its/adapter/ports/ProtocolPortFactory.java +++ b/javasrc/adapter/org/etsi/its/adapter/ports/ProtocolPortFactory.java @@ -12,6 +12,8 @@ import java.lang.reflect.Constructor; import java.util.Map; import java.util.TreeMap; +import org.etsi.adapter.TERFactory; + /** * Protocol port factory (Singleton) */ @@ -34,7 +36,9 @@ public class ProtocolPortFactory { // Register the ports - Refer to TTCN-3 component LibIts_TestSystem.ItsSystem for ports name ports.put("camPort", CamPort.class); ports.put("denmPort", DenmPort.class); - ports.put("mapSpatPort", MapSpatPort.class); + ports.put("mapemSpatemPort", MapemSpatemPort.class); + ports.put("ivimPort", IvimPort.class); + ports.put("sremSsemPort", SremSsemPort.class); ports.put("btpPort", BtpPort.class); ports.put("geoNetworkingPort", GnPort.class); ports.put("ipv6OverGeoNetworkingPort", Gn6Port.class); @@ -60,7 +64,7 @@ public class ProtocolPortFactory { * @return Protocol port instance */ public ProtocolPort createPort(String portName, String componentName, String lowerStackDesc, String linkLayerAddress) { -// System.out.println(">>> ProtocolPortFactory.createPort: " + portName + ", " + componentName + ", " + lowerStackDesc + ", " + linkLayerAddress); + //TERFactory.getInstance().logDebug(">>> ProtocolPortFactory.createPort: " + portName + ", " + componentName + ", " + lowerStackDesc + ", " + linkLayerAddress); ProtocolPort port = null; Class[] ctorParams = {portName.getClass(), componentName.getClass(), lowerStackDesc.getClass(), linkLayerAddress.getClass()}; diff --git a/javasrc/adapter/org/etsi/its/adapter/ports/SremSsemPort.java b/javasrc/adapter/org/etsi/its/adapter/ports/SremSsemPort.java new file mode 100644 index 0000000000000000000000000000000000000000..8db602edb34d8177eda9526aab97d239cf1eb2d4 --- /dev/null +++ b/javasrc/adapter/org/etsi/its/adapter/ports/SremSsemPort.java @@ -0,0 +1,81 @@ +package org.etsi.its.adapter.ports; + +import java.util.HashMap; +import java.util.Map; + +import org.etsi.common.ByteHelper; +import org.etsi.its.adapter.SecurityHelper; +import org.etsi.its.adapter.layers.BtpLayer; +import org.etsi.its.adapter.layers.GnLayer; + +public class SremSsemPort extends ProtocolPort { + + /** + * Constructor + * @param portName Name of the port + * @param componentName Name of the component owning this port instance + * @param lowerStackDesc Description of the port's lower stack in the form "Layer/Layer/Layer/..." + * @param linkLayerAddress Link-layer address to be used by this port as source address (null if not applicable) + */ + public SremSsemPort(String portName, String componentName, String lowerStackDesc, String linkLayerAddress) { + super(portName, componentName, lowerStackDesc, linkLayerAddress); + } + + /* (non-Javadoc) + * @see org.etsi.its.adapter.ports.ProtocolPort#receive(byte[], java.util.Map) + */ + @Override + public void receive(byte[] message, Map lowerInfo) { + + // Encode with CAM indication header + byte[] msgInd = ByteHelper.concat( + message, + new byte[] { (Byte) lowerInfo.get(GnLayer.GN_NEXTHEADER) }, + ByteHelper.intToByteArray((Integer) lowerInfo.get(GnLayer.GN_TYPE), 1), + ByteHelper.intToByteArray((Integer) lowerInfo.get(GnLayer.GN_SUBTYPE), 1), + ByteHelper.intToByteArray((Integer) lowerInfo.get(GnLayer.GN_LIFETIME), Integer.SIZE / Byte.SIZE), + ByteHelper.intToByteArray((Integer) lowerInfo.get(GnLayer.GN_TRAFFICCLASS), 1), + (byte[]) lowerInfo.get(BtpLayer.BTP_DSTPORT), + (byte[]) lowerInfo.get(BtpLayer.BTP_DSTPORTINFO) + ); + // Add security info to pass to the ATS + if (lowerInfo.get(SecurityHelper.SEC_SSP) == null) { + byte[] buf = new byte[16]; + msgInd = ByteHelper.concat(msgInd, buf); + } else { + msgInd = ByteHelper.concat(msgInd, (byte[])lowerInfo.get(SecurityHelper.SEC_SSP)); + } + if (lowerInfo.get(SecurityHelper.SEC_ITS_AID) == null) { // It shall not be possible to have SSP absent and ATS_AID present but... + msgInd = ByteHelper.concat(msgInd, new byte[] { (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00 }); + + } else { + msgInd = ByteHelper.concat(msgInd, (byte[])lowerInfo.get(SecurityHelper.SEC_ITS_AID)); + } + super.receive(msgInd, lowerInfo); + } + + /* (non-Javadoc) + * @see org.etsi.its.adapter.ports.IPort#send(byte[]) + */ + @Override + public boolean send(byte[] message) { + + HashMap params = new HashMap(); + params.put(BtpLayer.BTP_TYPE, BtpLayer.TYPE_B); + if (message[1] == 0x9) { // SREM, see ITS-Container + params.put(BtpLayer.BTP_DSTPORT, 2007); + } else if (message[1] == 0xa) { // SSEM, see ITS-Container + params.put(BtpLayer.BTP_DSTPORT, 2008); + } else { + params.put(BtpLayer.BTP_DSTPORT, 0); + } + params.put(BtpLayer.BTP_SRCPORT, 0); + params.put(GnLayer.GN_TYPE, GnLayer.HT_TSB); + params.put(GnLayer.GN_SUBTYPE, GnLayer.HST_MULTIHOP); + params.put(GnLayer.GN_LATITUDE, ByteHelper.byteArrayToLong(management.getLatitude())); + params.put(GnLayer.GN_LONGITUDE, ByteHelper.byteArrayToLong(management.getLongitude())); + params.put(GnLayer.GN_NEXTHEADER, "BTP-B"); + return send(message, params); + } +} // End of class MapSpatPort + diff --git a/javasrc/adapter/org/etsi/its/adapter/ports/UpperTesterPort.java b/javasrc/adapter/org/etsi/its/adapter/ports/UpperTesterPort.java index 87f2a9f8c78ae7b2d7f7f8e5fa19384de66b534f..bd656eeec879381d68b26ef7793b1390d52d3c4c 100644 --- a/javasrc/adapter/org/etsi/its/adapter/ports/UpperTesterPort.java +++ b/javasrc/adapter/org/etsi/its/adapter/ports/UpperTesterPort.java @@ -250,7 +250,7 @@ public class UpperTesterPort extends AdapterPort implements IPort, IObservable { } // End of class UdpThread private byte[] checkSecuredOtherProfileAndExtractPayload(final byte[] p_message) { - System.out.println(">>> UpperTesterPort.checkSecuredOtherProfileAndExtractPayload: " + ByteHelper.byteArrayToString(p_message)); + TERFactory.getInstance().logDebug(">>> UpperTesterPort.checkSecuredOtherProfileAndExtractPayload: " + ByteHelper.byteArrayToString(p_message)); ByteHelper.dump("UpperTesterPort.checkSecuredOtherProfileAndExtractPayload: ", p_message); ByteArrayInputStream decvalue = new ByteArrayInputStream(p_message); @@ -258,37 +258,37 @@ public class UpperTesterPort extends AdapterPort implements IPort, IObservable { // Check version if (decvalue.read() != 2) { // Drop it - System.err.println("UpperTesterPort.checkSecuredOtherProfileAndExtractPayload: Drop packet - Wrong version number"); + TERFactory.getInstance().logError("UpperTesterPort.checkSecuredOtherProfileAndExtractPayload: Drop packet - Wrong version number"); return null; } // Extract header fields length and header fields long headerFieldsLength = SecurityHelper.getInstance().tls2size(decvalue); - System.out.println("UpperTesterPort.checkSecuredOtherProfileAndExtractPayload: headerFieldsLength:" + headerFieldsLength); + TERFactory.getInstance().logDebug("UpperTesterPort.checkSecuredOtherProfileAndExtractPayload: headerFieldsLength:" + headerFieldsLength); byte[] headerFields = new byte[(int) headerFieldsLength]; decvalue.read(headerFields, 0, (int) headerFieldsLength); ByteArrayOutputStream certificateKeys = new ByteArrayOutputStream(); if (!checkHeaderfields(headerFields, certificateKeys)) { // Drop it - System.err.println("UpperTesterPort.checkSecuredOtherProfileAndExtractPayload: Drop packet - Wrong Headerfields"); + TERFactory.getInstance().logError("UpperTesterPort.checkSecuredOtherProfileAndExtractPayload: Drop packet - Wrong Headerfields"); return null; } byte[] aaSigningPublicKeyX, aaSigningPublicKeyY; aaSigningPublicKeyX = ByteHelper.extract(certificateKeys.toByteArray(), 0, 32); - System.out.println("UpperTesterPort.checkSecuredOtherProfileAndExtractPayload: aaSigningPublicKeyX:" + ByteHelper.byteArrayToString(aaSigningPublicKeyX)); + TERFactory.getInstance().logDebug("UpperTesterPort.checkSecuredOtherProfileAndExtractPayload: aaSigningPublicKeyX:" + ByteHelper.byteArrayToString(aaSigningPublicKeyX)); aaSigningPublicKeyY = ByteHelper.extract(certificateKeys.toByteArray(), 32, 32); - System.out.println("UpperTesterPort.checkSecuredOtherProfileAndExtractPayload: aaSigningPublicKeyX:" + ByteHelper.byteArrayToString(aaSigningPublicKeyX)); - System.out.println("UpperTesterPort.checkSecuredOtherProfileAndExtractPayload: headerFields:" + ByteHelper.byteArrayToString(headerFields)); + TERFactory.getInstance().logDebug("UpperTesterPort.checkSecuredOtherProfileAndExtractPayload: aaSigningPublicKeyX:" + ByteHelper.byteArrayToString(aaSigningPublicKeyX)); + TERFactory.getInstance().logDebug("UpperTesterPort.checkSecuredOtherProfileAndExtractPayload: headerFields:" + ByteHelper.byteArrayToString(headerFields)); // Extract payload, decvalue is updated with the payload if (decvalue.read() != 1) { // Drop it - System.err.println("UpperTesterPort.checkSecuredOtherProfileAndExtractPayload: Drop packet - Wrong Payload type"); + TERFactory.getInstance().logError("UpperTesterPort.checkSecuredOtherProfileAndExtractPayload: Drop packet - Wrong Payload type"); return null; } long payloadLength = SecurityHelper.getInstance().tls2size(decvalue); - System.out.println("UpperTesterPort.checkSecuredOtherProfileAndExtractPayload: payloadLength:" + payloadLength); + TERFactory.getInstance().logDebug("UpperTesterPort.checkSecuredOtherProfileAndExtractPayload: payloadLength:" + payloadLength); byte[] payload = new byte[(int) payloadLength]; decvalue.read(payload, 0, (int) payloadLength); - System.out.println("UpperTesterPort.checkSecuredOtherProfileAndExtractPayload: payload:" + ByteHelper.byteArrayToString(payload)); + TERFactory.getInstance().logDebug("UpperTesterPort.checkSecuredOtherProfileAndExtractPayload: payload:" + ByteHelper.byteArrayToString(payload)); // Extract Secure Trailer long secureTrailerLength = SecurityHelper.getInstance().tls2size(decvalue); byte[] secureTrailer = new byte[(int) secureTrailerLength]; @@ -296,17 +296,17 @@ public class UpperTesterPort extends AdapterPort implements IPort, IObservable { ByteArrayOutputStream signature = new ByteArrayOutputStream(); if (!extractMessageSignature(secureTrailer, signature)) { // Drop it - System.err.println("UpperTesterPort.checkSecuredOtherProfileAndExtractPayload: Drop packet - Wrong Signatures"); + TERFactory.getInstance().logError("UpperTesterPort.checkSecuredOtherProfileAndExtractPayload: Drop packet - Wrong Signatures"); return null; } - System.out.println("UpperTesterPort.checkSecuredOtherProfileAndExtractPayload: signature:" + ByteHelper.byteArrayToString(signature.toByteArray())); + TERFactory.getInstance().logDebug("UpperTesterPort.checkSecuredOtherProfileAndExtractPayload: signature:" + ByteHelper.byteArrayToString(signature.toByteArray())); // Build signed data byte[] toBeVerifiedData = ByteHelper.extract( p_message, 0, p_message.length - (int)(secureTrailerLength - 1 /* Exclude signature structure but keep signature type and signature length */) ); - System.out.println("UpperTesterPort.checkSecuredOtherProfileAndExtractPayload:" + ByteHelper.byteArrayToString(toBeVerifiedData)); + TERFactory.getInstance().logDebug("UpperTesterPort.checkSecuredOtherProfileAndExtractPayload:" + ByteHelper.byteArrayToString(toBeVerifiedData)); // Calculate Digest digest from the buffer toBeVerifiedData byte[] hash = CryptoLib.hashWithSha256(toBeVerifiedData); boolean result; @@ -317,15 +317,15 @@ public class UpperTesterPort extends AdapterPort implements IPort, IObservable { aaSigningPublicKeyX, aaSigningPublicKeyY ); - System.out.println("UpperTesterPort.checkSecuredOtherProfileAndExtractPayload: Verify signature: " + new Boolean(result)); + TERFactory.getInstance().logDebug("UpperTesterPort.checkSecuredOtherProfileAndExtractPayload: Verify signature: " + new Boolean(result)); if (!result) { // Drop packet - System.out.println("UpperTesterPort.checkSecuredOtherProfileAndExtractPayload: toBeVerifiedData :" + ByteHelper.byteArrayToString(toBeVerifiedData)); - System.out.println("UpperTesterPort.checkSecuredOtherProfileAndExtractPayload: Hash :" + ByteHelper.byteArrayToString(hash)); - System.out.println("UpperTesterPort.checkSecuredOtherProfileAndExtractPayload: signature :" + ByteHelper.byteArrayToString(signature.toByteArray())); - System.out.println("UpperTesterPort.checkSecuredOtherProfileAndExtractPayload: aaSigningPublicKeyX:" + ByteHelper.byteArrayToString(aaSigningPublicKeyX)); - System.out.println("UpperTesterPort.checkSecuredOtherProfileAndExtractPayload: aaSigningPublicKeyY:" + ByteHelper.byteArrayToString(aaSigningPublicKeyY)); - System.err.println("UpperTesterPort.checkSecuredOtherProfileAndExtractPayload: Drop packet - Invalid signature"); + TERFactory.getInstance().logDebug("UpperTesterPort.checkSecuredOtherProfileAndExtractPayload: toBeVerifiedData :" + ByteHelper.byteArrayToString(toBeVerifiedData)); + TERFactory.getInstance().logDebug("UpperTesterPort.checkSecuredOtherProfileAndExtractPayload: Hash :" + ByteHelper.byteArrayToString(hash)); + TERFactory.getInstance().logDebug("UpperTesterPort.checkSecuredOtherProfileAndExtractPayload: signature :" + ByteHelper.byteArrayToString(signature.toByteArray())); + TERFactory.getInstance().logDebug("UpperTesterPort.checkSecuredOtherProfileAndExtractPayload: aaSigningPublicKeyX:" + ByteHelper.byteArrayToString(aaSigningPublicKeyX)); + TERFactory.getInstance().logDebug("UpperTesterPort.checkSecuredOtherProfileAndExtractPayload: aaSigningPublicKeyY:" + ByteHelper.byteArrayToString(aaSigningPublicKeyY)); + TERFactory.getInstance().logError("UpperTesterPort.checkSecuredOtherProfileAndExtractPayload: Drop packet - Invalid signature"); return null; } @@ -339,7 +339,7 @@ public class UpperTesterPort extends AdapterPort implements IPort, IObservable { } private boolean checkHeaderfields(byte[] p_headerfields, final ByteArrayOutputStream p_keys) { // TODO Common with GnLayer and UpperTester, to be grouped - System.out.println(">>> UpperTesterPort.checkHeaderfields: " + ByteHelper.byteArrayToString(p_headerfields)); + TERFactory.getInstance().logDebug(">>> UpperTesterPort.checkHeaderfields: " + ByteHelper.byteArrayToString(p_headerfields)); // Sanity check if (p_headerfields.length == 0) { @@ -352,20 +352,20 @@ public class UpperTesterPort extends AdapterPort implements IPort, IObservable { (p_headerfields[signerInfoTypeIndex++] != 0x02) // SignerInfo Type: certificate (2) ) { // Drop it - System.err.println("UpperTesterPort.checkHeaderfields: Drop packet - Certificate"); + TERFactory.getInstance().logError("UpperTesterPort.checkHeaderfields: Drop packet - Certificate"); return false; } // Extract certificate because of it is an Other message profile byte[] certificate = decodeCertificate(p_headerfields, signerInfoTypeIndex, p_keys); signerInfoTypeIndex += certificate.length; - System.out.println("UpperTesterPort.checkHeaderfields: Certificate:" + ByteHelper.byteArrayToString(certificate)); + TERFactory.getInstance().logDebug("UpperTesterPort.checkHeaderfields: Certificate:" + ByteHelper.byteArrayToString(certificate)); // TODO check other fields return true; } private byte[] decodeCertificate(final byte[] p_headerfields, final int p_offset, final ByteArrayOutputStream p_keys) { // TODO Common with GnLayer and UpperTester, to be grouped - System.out.println("UpperTesterPort.decodeCertificate"); + TERFactory.getInstance().logDebug("UpperTesterPort.decodeCertificate"); ByteArrayInputStream headerfields = new ByteArrayInputStream(p_headerfields, p_offset, p_headerfields.length - p_offset); ByteArrayOutputStream cert = new ByteArrayOutputStream(); // FIXME To be removed @@ -373,7 +373,7 @@ public class UpperTesterPort extends AdapterPort implements IPort, IObservable { // Version cert.write((byte)headerfields.read()); if (cert.toByteArray()[0] != 0x02) { - System.out.println("UpperTesterPort.decodeCertificate: Wrong version number"); + TERFactory.getInstance().logDebug("UpperTesterPort.decodeCertificate: Wrong version number"); return null; } // SignerInfo type @@ -460,12 +460,12 @@ public class UpperTesterPort extends AdapterPort implements IPort, IObservable { e.printStackTrace(); } - System.out.println("UpperTesterPort.decodeCertificate: Unsupported certificate"); + TERFactory.getInstance().logDebug("UpperTesterPort.decodeCertificate: Unsupported certificate"); return null; } private boolean extractMessageSignature(final byte[] p_secureTrailer, final ByteArrayOutputStream p_signature) { // TODO Common with GnLayer and UpperTester, to be grouped - System.out.println(">>> UpperTesterPort.extractMessageSignature: " + ByteHelper.byteArrayToString(p_secureTrailer)); + TERFactory.getInstance().logDebug(">>> UpperTesterPort.extractMessageSignature: " + ByteHelper.byteArrayToString(p_secureTrailer)); // Sanity check if (p_secureTrailer.length == 0) { @@ -483,7 +483,7 @@ public class UpperTesterPort extends AdapterPort implements IPort, IObservable { p_signature.write(new byte[] { (byte)0x00, (byte)0x00 }); p_signature.write(ByteHelper.extract(p_secureTrailer, 3, 64)); - System.out.println("UpperTesterPort.extractMessageSignature: true"); + TERFactory.getInstance().logDebug("UpperTesterPort.extractMessageSignature: true"); return true; } catch (IOException e) { e.printStackTrace(); @@ -494,7 +494,7 @@ public class UpperTesterPort extends AdapterPort implements IPort, IObservable { } // FIXME To be continued // Else, drop it - System.err.println("UpperTesterPort.extractMessageSignature: Drop packet - Wrong signature"); + TERFactory.getInstance().logError("UpperTesterPort.extractMessageSignature: Drop packet - Wrong signature"); return false; } diff --git a/javasrc/adapter/org/etsi/its/adapter/ports/V2GPort.java b/javasrc/adapter/org/etsi/its/adapter/ports/V2GPort.java index 5677064550bfacae63420031d59c234da2604014..dd16d3740b736ad7b81e4141affe8fb22ab7ae3b 100644 --- a/javasrc/adapter/org/etsi/its/adapter/ports/V2GPort.java +++ b/javasrc/adapter/org/etsi/its/adapter/ports/V2GPort.java @@ -118,7 +118,7 @@ public class V2GPort extends ProtocolPort { } } - System.out.println("V2Gport initialized"); + TERFactory.getInstance().logDebug("V2Gport initialized"); } /* (non-Javadoc) diff --git a/javasrc/certificatesio/org/etsi/certificates/Helpers.java b/javasrc/certificatesio/org/etsi/certificates/Helpers.java index a250c33faf8b4c09adaa66c2084497bd74cea857..128a06badb68d9f37a235e4874ed0d87bd1ef8c2 100644 --- a/javasrc/certificatesio/org/etsi/certificates/Helpers.java +++ b/javasrc/certificatesio/org/etsi/certificates/Helpers.java @@ -87,7 +87,7 @@ public final class Helpers { @Override public boolean accept(final File p_dirName, final String p_fileName) { String name = p_fileName.toLowerCase(); -// System.out.println("getFileListingNoSort: " + name + " - " + p_extension + " - " + name.endsWith(p_extension)); +// TERFactory.getInstance().logDebug("getFileListingNoSort: " + name + " - " + p_extension + " - " + name.endsWith(p_extension)); if (!p_extension.isEmpty() && !name.endsWith(p_extension)) { return false; } @@ -95,7 +95,7 @@ public final class Helpers { if (p_excludedPatterns != null) { for (String excludePattern : p_excludedPatterns) { if (name.indexOf(excludePattern) != -1) { -// System.out.println("getFileListingNoSort: exclusion criteria=" + excludePattern); +// TERFactory.getInstance().logDebug("getFileListingNoSort: exclusion criteria=" + excludePattern); return false; } } diff --git a/javasrc/certificatesio/org/etsi/certificates/io/CertificatesIO.java b/javasrc/certificatesio/org/etsi/certificates/io/CertificatesIO.java index 46de4eea31e48cb5283b02455b15d5e79a22adb1..dc9110d03dacb67fcfcf4d1bd7a2d6a7a4619aa3 100644 --- a/javasrc/certificatesio/org/etsi/certificates/io/CertificatesIO.java +++ b/javasrc/certificatesio/org/etsi/certificates/io/CertificatesIO.java @@ -15,6 +15,7 @@ import java.util.List; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; +import org.etsi.adapter.TERFactory; import org.etsi.certificates.Helpers; import org.etsi.common.ByteHelper; @@ -85,7 +86,7 @@ public class CertificatesIO implements ICertificatesIO { */ @Override public boolean loadCertificates(final String p_rootDirectory, final String p_configId) { // E.g. , cfg01 -// System.out.println(">>> CertificatesIO.loadCertificates: " + p_rootDirectory + ", " + p_configId + " - " + _areCertificatesLoaded); + TERFactory.getInstance().logDebug(">>> CertificatesIO.loadCertificates: " + p_rootDirectory + ", " + p_configId + " - " + _areCertificatesLoaded); // Sanity check if (_areCertificatesLoaded) { @@ -104,7 +105,7 @@ public class CertificatesIO implements ICertificatesIO { File certsPath = new File(_fullPathCerts); if (!certsPath.exists()) { - System.err.println("CertificatesIO.loadCertificates: path '" + _fullPathCerts + "' does not found"); + TERFactory.getInstance().logError("CertificatesIO.loadCertificates: path '" + _fullPathCerts + "' does not found"); return false; } @@ -114,7 +115,7 @@ public class CertificatesIO implements ICertificatesIO { String path = new String(_fullPathCerts + "/" + p_configId); certsPath = new File(path); if (!certsPath.exists()) { - System.err.println("CertificatesIO.loadCertificates: path '" + path + "' does not found"); + TERFactory.getInstance().logError("CertificatesIO.loadCertificates: path '" + path + "' does not found"); return false; } loadMemoryCache(certsPath); // Load certificates and keys and return @@ -165,7 +166,7 @@ public class CertificatesIO implements ICertificatesIO { e.printStackTrace(); } }else{ - System.err.println("CertificatesIO.readCertificate: key '" + key + "' not found"); + TERFactory.getInstance().logError("CertificatesIO.readCertificate: key '" + key + "' not found"); } return false; } @@ -176,7 +177,7 @@ public class CertificatesIO implements ICertificatesIO { // Sanity check if (!_cachedCertificatesDigest.containsKey(certificateId)) { - System.err.println("CertificatesIO.readCertificateDigest: key '" + certificateId + "' not found"); + TERFactory.getInstance().logError("CertificatesIO.readCertificateDigest: key '" + certificateId + "' not found"); return false; } @@ -300,7 +301,7 @@ public class CertificatesIO implements ICertificatesIO { }else if(n == 8){ bytes = Arrays.copyOfRange(bytes, 0, 8); }else{ - System.err.println("CertificatesIO: " + filename + ": wrong digest file length\n"); + TERFactory.getInstance().logError("CertificatesIO: " + filename + ": wrong digest file length\n"); return; } _cachedCertificatesDigest.put(certName, bytes); @@ -348,13 +349,13 @@ public class CertificatesIO implements ICertificatesIO { l = 32; } if(l != 32){ - System.err.println("CertificatesIO: " + f.getName() + ": wrong data length[" + l + "\n"); + TERFactory.getInstance().logError("CertificatesIO: " + f.getName() + ": wrong data length[" + l + "\n"); } if (!_cachedSigningPrivateKey.containsKey(certName)) { _cachedSigningPrivateKey.put(certName, bytes); } }else{ - System.err.println("CertificatesIO: " + f.getName() + ": wrong key file length\n"); + TERFactory.getInstance().logError("CertificatesIO: " + f.getName() + ": wrong key file length\n"); } } }catch(FileNotFoundException e){} diff --git a/javasrc/codec/org/etsi/ttcn/codec/CodecBuffer.java b/javasrc/codec/org/etsi/ttcn/codec/CodecBuffer.java index f6bac23662a5b3c51dd38cc80c4b532ad610a4e8..30f0c1dfc96fba0e18e196c923c5925b54f3a479 100644 --- a/javasrc/codec/org/etsi/ttcn/codec/CodecBuffer.java +++ b/javasrc/codec/org/etsi/ttcn/codec/CodecBuffer.java @@ -8,6 +8,7 @@ package org.etsi.ttcn.codec; import java.util.Map; import java.util.TreeMap; +import org.etsi.adapter.TERFactory; import org.etsi.ttcn.common.ByteHelper; public class CodecBuffer { @@ -362,16 +363,16 @@ public class CodecBuffer { public byte[] getBytes(int start, int nbBytes) { if(start > buffer.length) { - System.err.println("bad start: " + start); + TERFactory.getInstance().logDebug("bad start: " + start); return null; } if((start + nbBytes) > buffer.length) { - System.err.println("bad length: " + (start + nbBytes) + " (" + buffer.length + " bytes remaining)"); + TERFactory.getInstance().logDebug("bad length: " + (start + nbBytes) + " (" + buffer.length + " bytes remaining)"); return null; } if(nbBytes < 0) { - System.err.println("bad length: " + (nbBytes) + " (" + buffer.length + " bytes remaining)"); + TERFactory.getInstance().logDebug("bad length: " + (nbBytes) + " (" + buffer.length + " bytes remaining)"); return null; } @@ -408,11 +409,11 @@ public class CodecBuffer { // leading partial byte complete bytes trailing partial byte if(byteIndex > buffer.length) { - System.err.println("bad start: " + byteIndex + "(" + start + ")" + " (" + buffer.length + " bytes remaining)"); + TERFactory.getInstance().logDebug("bad start: " + byteIndex + "(" + start + ")" + " (" + buffer.length + " bytes remaining)"); return null; } if((byteIndex + nbBytes) > buffer.length) { - System.err.println("bad length: " + (byteIndex + nbBytes) + "(" + nbBits + ")" + " (" + buffer.length + " bytes remaining)"); + TERFactory.getInstance().logDebug("bad length: " + (byteIndex + nbBytes) + "(" + nbBits + ")" + " (" + buffer.length + " bytes remaining)"); return null; } diff --git a/javasrc/codec/org/etsi/ttcn/codec/CodecFactory.java b/javasrc/codec/org/etsi/ttcn/codec/CodecFactory.java index 30e261b485cfaf5b5175d9506d9c56f5315cd179..a341cb2bf0ef081ad254da96609f273d81e4f2ba 100644 --- a/javasrc/codec/org/etsi/ttcn/codec/CodecFactory.java +++ b/javasrc/codec/org/etsi/ttcn/codec/CodecFactory.java @@ -9,6 +9,7 @@ import java.lang.reflect.Constructor; import java.util.Map; import java.util.TreeMap; +import org.etsi.adapter.TERFactory; import org.etsi.ttcn.tci.TciCDProvided; import org.etsi.ttcn.tci.TciTypeClass; import org.etsi.ttcn.codec.generic.Bitstring; @@ -76,11 +77,11 @@ public class CodecFactory { return null; } -// System.out.println("getExternalCodec: Search external codec for " + encoding); +// TERFactory.getInstance().logDebug("getExternalCodec: Search external codec for " + encoding); codec = externalCodecs.get(encoding); if(codec != null) { - System.out.print(String.format("%50s", encoding)); - System.out.println(" ==> " + codec.getClass().getName()); + TERFactory.getInstance().logDebug(String.format("%50s", encoding)); + TERFactory.getInstance().logDebug(" ==> " + codec.getClass().getName()); return codec; } return null; @@ -88,11 +89,11 @@ public class CodecFactory { public ICodec getCodec(MainCodec mainCodec, int classType, String encoding, String typeName) { - System.out.print(String.format("%50s", typeName + "(" + encoding + ")")); + TERFactory.getInstance().logDebug(String.format("%50s", typeName + "(" + encoding + ")")); Class cls = null; Class[] ctorParams = {MainCodec.class}; - System.out.println("getCodec: Search internal codec for " + classType + '/' + encoding + '/' + typeName); + TERFactory.getInstance().logDebug("getCodec: Search internal codec for " + classType + '/' + encoding + '/' + typeName); cls = codecs.get(classType + '/' + encoding + '/' + typeName); if(cls == null) { cls = codecs.get(classType + '/' + encoding + '/'); @@ -102,7 +103,7 @@ public class CodecFactory { } if(cls != null) { - System.out.println(" ==> " + cls.getName()); + TERFactory.getInstance().logDebug(" ==> " + cls.getName()); try { Constructor ctor = cls.getConstructor(ctorParams); return ctor.newInstance(mainCodec); @@ -112,12 +113,12 @@ public class CodecFactory { } } - System.out.println(" ==> No codec found !"); + TERFactory.getInstance().logDebug(" ==> No codec found !"); return new Dummy(mainCodec); } public void setCodec(int classType, String encoding, String typeName, Class codec) { -// System.out.println("setCodec: add " + classType + "/" + encoding + "/" + typeName + "/" + codec); +// TERFactory.getInstance().logDebug("setCodec: add " + classType + "/" + encoding + "/" + typeName + "/" + codec); codecs.put(classType + '/' + encoding + '/' + typeName, codec); } diff --git a/javasrc/codec/org/etsi/ttcn/codec/MainCodec.java b/javasrc/codec/org/etsi/ttcn/codec/MainCodec.java index 87a2666dbb006e08f932cdb634431769692438c3..cbedc08b8f0adda22026ffb68baa8cceb5d64a10 100644 --- a/javasrc/codec/org/etsi/ttcn/codec/MainCodec.java +++ b/javasrc/codec/org/etsi/ttcn/codec/MainCodec.java @@ -23,13 +23,13 @@ public class MainCodec extends ICodec { } public Value triDecode(TriMessage message, Type decodingHypothesis) { -// System.out.println("############################################################################################"); +// TERFactory.getInstance().logDebug("############################################################################################"); return decode(new CodecBuffer(message.getEncodedMessage()), decodingHypothesis); } public TriMessage triEncode(Value value) { -// System.out.println("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"); +// TERFactory.getInstance().logDebug("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"); CodecBuffer encoded = encode(value); encoded.runCallbacks(); @@ -38,7 +38,7 @@ public class MainCodec extends ICodec { @Override public Value decode(CodecBuffer buf, Type decodingHypothesis) { -// System.out.println(">>> MainCodec.decode: " + decodingHypothesis.getName()); +// TERFactory.getInstance().logDebug(">>> MainCodec.decode: " + decodingHypothesis.getName()); // ByteHelper.dump(">>> MainCodec.decode: ", buf.getBytes()); CodecFactory cf = CodecFactory.getInstance(); @@ -57,7 +57,7 @@ public class MainCodec extends ICodec { // TODO To be removed, for debug purpose only // Value decValue = codec.decode(buf, decodingHypothesis); -// System.out.println("<<< MainCodec.decode: " + decValue); +// TERFactory.getInstance().logDebug("<<< MainCodec.decode: " + decValue); // return decValue; return codec.decode(buf, decodingHypothesis); } @@ -95,22 +95,22 @@ public class MainCodec extends ICodec { } public String getHint(String key) { -// System.out.println("getHint: " + key + ": " + hints.get(key)); +// TERFactory.getInstance().logDebug("getHint: " + key + ": " + hints.get(key)); return hints.get(key); } public void setHint(String key, String value) { -// System.out.println("setHint: " + key + ", " + value); +// TERFactory.getInstance().logDebug("setHint: " + key + ", " + value); hints.put(key, value); } public java.lang.Boolean getPresenceHint(String key) { -// System.out.println("getPresenceHint: " + key + ": " + presenceHints.get(key)); +// TERFactory.getInstance().logDebug("getPresenceHint: " + key + ": " + presenceHints.get(key)); return presenceHints.get(key); } public void setPresenceHint(String key, java.lang.Boolean value) { -// System.out.println("setPresenceHint: " + key + ", " + value); +// TERFactory.getInstance().logDebug("setPresenceHint: " + key + ", " + value); presenceHints.put(key, value); } diff --git a/javasrc/codec/org/etsi/ttcn/codec/generic/Bitstring.java b/javasrc/codec/org/etsi/ttcn/codec/generic/Bitstring.java index 5ec901f1243e2f7898e954e3e0fc2cdd73f3e8c3..ab44105670785d3995e046e850f137aebb4df24c 100644 --- a/javasrc/codec/org/etsi/ttcn/codec/generic/Bitstring.java +++ b/javasrc/codec/org/etsi/ttcn/codec/generic/Bitstring.java @@ -21,11 +21,11 @@ public class Bitstring extends ICodec { @Override public Value decode(CodecBuffer buf, Type decodingHypothesis) { -// System.out.println(">>> Bitstring.decode: " + decodingHypothesis.getTypeEncoding()); +// TERFactory.getInstance().logDebug(">>> Bitstring.decode: " + decodingHypothesis.getTypeEncoding()); BitstringValue bv = (BitstringValue)decodingHypothesis.newInstance(); int lengthInBits = getEncodingLength(decodingHypothesis.getTypeEncoding()); -// System.out.println("Bitstring.decode: lengthInBits=" + lengthInBits); +// TERFactory.getInstance().logDebug("Bitstring.decode: lengthInBits=" + lengthInBits); CodecBuffer value = new CodecBuffer(); value.setBits(buf.readBits(lengthInBits), lengthInBits); @@ -40,7 +40,7 @@ public class Bitstring extends ICodec { @Override public CodecBuffer encode(Value value) { -// System.out.println(">>> Bitstring.encode: " + value); +// TERFactory.getInstance().logDebug(">>> Bitstring.encode: " + value); BitstringValue bv = (BitstringValue)value; CodecBuffer encoded = new CodecBuffer(); diff --git a/javasrc/codec/org/etsi/ttcn/codec/generic/Enumerated.java b/javasrc/codec/org/etsi/ttcn/codec/generic/Enumerated.java index 0f4349850c98ec880b4f37658f4397d2b7c60a68..63d280984ca56c79ab7a27a79038c4349270d06a 100644 --- a/javasrc/codec/org/etsi/ttcn/codec/generic/Enumerated.java +++ b/javasrc/codec/org/etsi/ttcn/codec/generic/Enumerated.java @@ -21,7 +21,7 @@ public class Enumerated extends ICodec { @Override public Value decode(CodecBuffer buf, Type decodingHypothesis) { -// System.out.println(">>> Enumerated.decode: " + decodingHypothesis.getName()); +// TERFactory.getInstance().logDebug(">>> Enumerated.decode: " + decodingHypothesis.getName()); EnumeratedValue ev = (EnumeratedValue)decodingHypothesis.newInstance(); int lengthInBits = 0; @@ -43,7 +43,7 @@ public class Enumerated extends ICodec { @Override public CodecBuffer encode(Value value) { -// System.out.println(">>> Enumerated.encode: " + value.getType().getName()); +// TERFactory.getInstance().logDebug(">>> Enumerated.encode: " + value.getType().getName()); EnumeratedValue ev = (EnumeratedValue)value; int lengthInBits = 0; diff --git a/javasrc/codec/org/etsi/ttcn/codec/generic/Float.java b/javasrc/codec/org/etsi/ttcn/codec/generic/Float.java index c227c2c919e619b30a0b320b891a51afd4457f72..c135f7da19af90de3505677c527986009022d9ba 100644 --- a/javasrc/codec/org/etsi/ttcn/codec/generic/Float.java +++ b/javasrc/codec/org/etsi/ttcn/codec/generic/Float.java @@ -21,21 +21,21 @@ public class Float extends ICodec { @Override public Value decode(CodecBuffer buf, Type decodingHypothesis) { -// System.out.println(">>> Float.decode: " + decodingHypothesis.getName()); +// TERFactory.getInstance().logDebug(">>> Float.decode: " + decodingHypothesis.getName()); FloatValue fv = mainCodec.getTciCDRequired().getFloat(); fv.setFloat(ByteHelper.byteArrayToFloat(buf.readBits(java.lang.Float.SIZE))); -// System.out.println("<<< Float.decode: " + fv.getFloat()); +// TERFactory.getInstance().logDebug("<<< Float.decode: " + fv.getFloat()); return fv; } @Override public CodecBuffer encode(Value value) { -// System.out.println(">>> Float.encode: " + value.getType().getName()); +// TERFactory.getInstance().logDebug(">>> Float.encode: " + value.getType().getName()); FloatValue fv = (FloatValue)value; -// System.out.println("Float.encode: " + fv.getFloat()); +// TERFactory.getInstance().logDebug("Float.encode: " + fv.getFloat()); byte[] encoded = ByteHelper.floatToByteArray(fv.getFloat()); CodecBuffer res = new CodecBuffer(); res.setBits(encoded, encoded.length * Byte.SIZE); diff --git a/javasrc/codec/org/etsi/ttcn/codec/generic/Integer.java b/javasrc/codec/org/etsi/ttcn/codec/generic/Integer.java index acde3fc9ab38e639e6262682a3cdb8d3718ba1ff..95ac15120c106b026d629a4ee54cb028baa82b78 100644 --- a/javasrc/codec/org/etsi/ttcn/codec/generic/Integer.java +++ b/javasrc/codec/org/etsi/ttcn/codec/generic/Integer.java @@ -91,8 +91,8 @@ public class Integer extends ICodec { // Get length String hint = mainCodec.getHint(value.getType().getName() + "Len"); if(hint == null) { -// System.out.println("Integer.encode: " + value.getValueEncodingVariant() + ", " + value.getValueEncoding()); -// System.out.println("Integer.encode: " + value.getType().getTypeEncodingVariant() + ", " + value.getType().getTypeEncoding()); +// TERFactory.getInstance().logDebug("Integer.encode: " + value.getValueEncodingVariant() + ", " + value.getValueEncoding()); +// TERFactory.getInstance().logDebug("Integer.encode: " + value.getType().getTypeEncodingVariant() + ", " + value.getType().getTypeEncoding()); if (value.getType().getTypeEncodingVariant() != null) { lengthInBits = getVariantBitLength(value.getType().getTypeEncodingVariant()); } else { @@ -104,7 +104,7 @@ public class Integer extends ICodec { } lengthInBytes = lengthInBits / 8 + (((lengthInBits % 8) > 0)?1:0); -// System.out.println(String.format("Integer.encode: length: %d", lengthInBytes)); +// TERFactory.getInstance().logDebug(String.format("Integer.encode: length: %d", lengthInBytes)); if (lengthInBits > java.lang.Integer.SIZE) { encoded = ByteHelper.longToByteArray(mainCodec.getTciCDRequired().getBigInteger(iv), lengthInBytes); } else { diff --git a/javasrc/codec/org/etsi/ttcn/codec/generic/Octetstring.java b/javasrc/codec/org/etsi/ttcn/codec/generic/Octetstring.java index acb960224f3b246fd77c89a7c2f5d1fbd3c07ccb..e03770124b7bc93ac972d688bdf65b503eabe9e6 100644 --- a/javasrc/codec/org/etsi/ttcn/codec/generic/Octetstring.java +++ b/javasrc/codec/org/etsi/ttcn/codec/generic/Octetstring.java @@ -20,7 +20,7 @@ public class Octetstring extends ICodec { @Override public Value decode(CodecBuffer buf, Type decodingHypothesis) { -// System.out.println(">>> Octetstring.decode: " + decodingHypothesis.getName()); +// TERFactory.getInstance().logDebug(">>> Octetstring.decode: " + decodingHypothesis.getName()); OctetstringValue ov = (OctetstringValue)decodingHypothesis.newInstance(); byte[] value = null; @@ -31,7 +31,7 @@ public class Octetstring extends ICodec { if(hint == null) { lengthInBytes = getEncodingLength(decodingHypothesis.getTypeEncoding()); if (lengthInBytes == 0) { -// System.out.println("Octetstring.decode: Decode full buffer"); +// TERFactory.getInstance().logDebug("Octetstring.decode: Decode full buffer"); lengthInBytes = buf.getNbBytes(); } } @@ -50,7 +50,7 @@ public class Octetstring extends ICodec { @Override public CodecBuffer encode(Value value) { -// System.out.println(">>> Octetstring.encode: " + value.getType().getName()); +// TERFactory.getInstance().logDebug(">>> Octetstring.encode: " + value.getType().getName()); OctetstringValue ov = (OctetstringValue)value; byte[] encoded = new byte[ov.getLength()]; diff --git a/javasrc/codec/org/etsi/ttcn/codec/generic/Record.java b/javasrc/codec/org/etsi/ttcn/codec/generic/Record.java index e047b86afe72cd90f664ff2058fb9aeb14214aa8..2d41c46adde82a0cd5c8a9f61d625f030c101294 100644 --- a/javasrc/codec/org/etsi/ttcn/codec/generic/Record.java +++ b/javasrc/codec/org/etsi/ttcn/codec/generic/Record.java @@ -5,6 +5,7 @@ */ package org.etsi.ttcn.codec.generic; +import org.etsi.adapter.TERFactory; import org.etsi.ttcn.tci.Type; import org.etsi.ttcn.tci.Value; import org.etsi.ttcn.tci.RecordValue; @@ -37,7 +38,7 @@ public class Record extends ICodec { if(fv == null) { if(mainCodec.getHint(fields[i] + "IgnoreErrorOnOptionalField") != null) { // Set to omit + warning if optional - System.err.println("Unable to decode optional field '" + fields[i] + "'. Setting to 'omit'"); + TERFactory.getInstance().logDebug("Unable to decode optional field '" + fields[i] + "'. Setting to 'omit'"); rv.setFieldOmitted(fields[i]); } else { diff --git a/javasrc/codec/org/etsi/ttcn/codec/generic/RecordOf.java b/javasrc/codec/org/etsi/ttcn/codec/generic/RecordOf.java index d9c1075855802fc84eaf6e8978d3d43de4cf94b6..b308fc4cfc3d4c32aa7513406dc0e3a02265bdba 100644 --- a/javasrc/codec/org/etsi/ttcn/codec/generic/RecordOf.java +++ b/javasrc/codec/org/etsi/ttcn/codec/generic/RecordOf.java @@ -20,7 +20,7 @@ public class RecordOf extends ICodec { @Override public Value decode(CodecBuffer buf, Type decodingHypothesis) { -// System.out.println(">>> RecordOf.decode: " + decodingHypothesis.getName()); +// TERFactory.getInstance().logDebug(">>> RecordOf.decode: " + decodingHypothesis.getName()); RecordOfValue rov = (RecordOfValue)decodingHypothesis.newInstance(); String lenHint = mainCodec.getHint(decodingHypothesis.getName() + "Len"); @@ -48,7 +48,7 @@ public class RecordOf extends ICodec { @Override public CodecBuffer encode(Value value) { -// System.out.println(">>> RecordOf.encode: " + value.getType().getName()); +// TERFactory.getInstance().logDebug(">>> RecordOf.encode: " + value.getType().getName()); RecordOfValue rov = (RecordOfValue)value; CodecBuffer buf = new CodecBuffer(); diff --git a/javasrc/codec/org/etsi/ttcn/codec/generic/Union.java b/javasrc/codec/org/etsi/ttcn/codec/generic/Union.java index 04556c4912b0f5bac05100b4aaa27d9a7c78643d..347f9eb11c6344b34739066a6ae0639ea0135353 100644 --- a/javasrc/codec/org/etsi/ttcn/codec/generic/Union.java +++ b/javasrc/codec/org/etsi/ttcn/codec/generic/Union.java @@ -25,19 +25,19 @@ public class Union extends ICodec { String variant = ""; variant = mainCodec.getHint(decodingHypothesis.getName()); -// System.out.println("Union: Looking for variant " + decodingHypothesis.getName() + "/" + variant); +// TERFactory.getInstance().logDebug("Union: Looking for variant " + decodingHypothesis.getName() + "/" + variant); if(variant != null) { Value value = uv.getVariant(variant); if (value == null) { value = mainCodec.getTciCDRequired().getUnionValue(decodingHypothesis, variant); if (value != null) { -// System.out.println("Union (TCT3): " + value.getType().getName()); +// TERFactory.getInstance().logDebug("Union (TCT3): " + value.getType().getName()); uv.setVariant(variant, mainCodec.decode(buf, value.getType())); return uv; } } else { -// System.out.println("Union (TTWB): " + value.getType().getName()); +// TERFactory.getInstance().logDebug("Union (TTWB): " + value.getType().getName()); uv.setVariant(variant, mainCodec.decode(buf, value.getType())); return uv; } @@ -57,11 +57,11 @@ public class Union extends ICodec { if (value == null) { value = mainCodec.getTciCDRequired().getUnionValue(decodingHypothesis, mainCodec.getHint(variants[i])); if (value != null) { -// System.out.println("Union (TCT3): " + value.getType().getName()); +// TERFactory.getInstance().logDebug("Union (TCT3): " + value.getType().getName()); vv = mainCodec.decode(buf, value.getType()); } } else { -// System.out.println("Union (TTWB): " + value.getType().getName()); +// TERFactory.getInstance().logDebug("Union (TTWB): " + value.getType().getName()); vv = mainCodec.decode(buf, value.getType()); } } else { diff --git a/javasrc/codec/org/etsi/ttcn/codec/its/security/AcEnableSecurity.java b/javasrc/codec/org/etsi/ttcn/codec/its/adapter/AcEnableSecurity.java similarity index 68% rename from javasrc/codec/org/etsi/ttcn/codec/its/security/AcEnableSecurity.java rename to javasrc/codec/org/etsi/ttcn/codec/its/adapter/AcEnableSecurity.java index 6fb59bcf94c49b1f97ae252893d1a2e43c39cf7d..1cb61fa3332bd58c7dbc14527a10dc8495367b3a 100644 --- a/javasrc/codec/org/etsi/ttcn/codec/its/security/AcEnableSecurity.java +++ b/javasrc/codec/org/etsi/ttcn/codec/its/adapter/AcEnableSecurity.java @@ -3,12 +3,11 @@ * @version $URL$ * $Id$ */ -package org.etsi.ttcn.codec.its.security; +package org.etsi.ttcn.codec.its.adapter; import org.etsi.ttcn.codec.CodecBuffer; import org.etsi.ttcn.codec.MainCodec; import org.etsi.ttcn.codec.generic.Record; -import org.etsi.ttcn.common.ByteHelper; import org.etsi.ttcn.tci.RecordValue; import org.etsi.ttcn.tci.Type; @@ -20,13 +19,13 @@ public class AcEnableSecurity extends Record { @Override protected void postEncodeField(String fieldName, CodecBuffer buf) { -// System.out.println(">>> AcEnableSecurity.postEncodeField: " + fieldName); +// TERFactory.getInstance().logDebug(">>> AcEnableSecurity.postEncodeField: " + fieldName); } @Override protected void preDecodeField(String fieldName, CodecBuffer buf, Type decodingHypothesis, RecordValue rv) { -// System.out.println(">>> AcEnableSecurity.preDecodeField: " + fieldName + ", " + decodingHypothesis.getName() + ", " + rv.getType().getName()); +// TERFactory.getInstance().logDebug(">>> AcEnableSecurity.preDecodeField: " + fieldName + ", " + decodingHypothesis.getName() + ", " + rv.getType().getName()); if (fieldName.equals("certificateId")) { mainCodec.setHint(decodingHypothesis.getName() + "Len", String.valueOf(buf.getNbBytes())); @@ -35,7 +34,7 @@ public class AcEnableSecurity extends Record { @Override protected void postDecodeField(String fieldName, CodecBuffer buf, Type decodingHypothesis, RecordValue rv) { -// System.out.println(">>> AcEnableSecurity.postDecodeField: " + fieldName + ", " + decodingHypothesis.getName() + ", " + rv.getType().getName()); +// TERFactory.getInstance().logDebug(">>> AcEnableSecurity.postDecodeField: " + fieldName + ", " + decodingHypothesis.getName() + ", " + rv.getType().getName()); } } // End of class AcEnableSecurity diff --git a/javasrc/codec/org/etsi/ttcn/codec/its/adapter/AcGnPrimitive.java b/javasrc/codec/org/etsi/ttcn/codec/its/adapter/AcGnPrimitive.java index 922dc5e5c7b452637880028c14e1f89e35773a50..3dfebd64db2476b02fcc54d40dab74118de72c4a 100644 --- a/javasrc/codec/org/etsi/ttcn/codec/its/adapter/AcGnPrimitive.java +++ b/javasrc/codec/org/etsi/ttcn/codec/its/adapter/AcGnPrimitive.java @@ -52,12 +52,6 @@ public class AcGnPrimitive extends Union { case 6: primitive = "getLongPosVector"; break; - case 7: - primitive = "enableSecurity"; - break; - case 8: - primitive = "disableSecurity"; - break; } mainCodec.setHint(decodingHypothesis.getName(), primitive); @@ -93,12 +87,6 @@ public class AcGnPrimitive extends Union { else if(variant.equals("getLongPosVector")) { primitiveId = 6; } - else if(variant.equals("acEnableSecurity")) { - primitiveId = 7; - } - else if(variant.equals("acDisableSecurity")) { - primitiveId = 8; - } buf.appendBytes(ByteHelper.intToByteArray(primitiveId, 1)); } } diff --git a/javasrc/codec/org/etsi/ttcn/codec/its/adapter/AcGnResponse.java b/javasrc/codec/org/etsi/ttcn/codec/its/adapter/AcGnResponse.java index c51ca16fdc8c3d46330f27d15857a85d8dee022c..e4c53ceb5b3fc9f7b7ed0e428adcd29c73735eae 100644 --- a/javasrc/codec/org/etsi/ttcn/codec/its/adapter/AcGnResponse.java +++ b/javasrc/codec/org/etsi/ttcn/codec/its/adapter/AcGnResponse.java @@ -5,6 +5,7 @@ */ package org.etsi.ttcn.codec.its.adapter; +import org.etsi.adapter.TERFactory; import org.etsi.ttcn.tci.Type; import org.etsi.ttcn.tci.UnionValue; import org.etsi.ttcn.codec.generic.Union; @@ -23,7 +24,7 @@ public class AcGnResponse extends Union { // Read message id (AcGnResponse) if(0x00 != (0x00FF & buf.readBytes(1)[0])) { - System.out.println("Bad hypothesis"); + TERFactory.getInstance().logDebug("Bad hypothesis"); return; } diff --git a/javasrc/codec/org/etsi/ttcn/codec/its/adapter/AcSecPrimitive.java b/javasrc/codec/org/etsi/ttcn/codec/its/adapter/AcSecPrimitive.java new file mode 100644 index 0000000000000000000000000000000000000000..0084e984ee25ebe7afbbe86f8c7eba59325aad52 --- /dev/null +++ b/javasrc/codec/org/etsi/ttcn/codec/its/adapter/AcSecPrimitive.java @@ -0,0 +1,57 @@ +package org.etsi.ttcn.codec.its.adapter; + +import org.etsi.ttcn.codec.CodecBuffer; +import org.etsi.ttcn.codec.MainCodec; +import org.etsi.ttcn.codec.generic.Union; +import org.etsi.ttcn.common.ByteHelper; +import org.etsi.ttcn.tci.Type; +import org.etsi.ttcn.tci.UnionValue; + +public class AcSecPrimitive extends Union { + + public AcSecPrimitive(MainCodec mainCodec) { + super(mainCodec); + } + + @Override + protected void preDecode(CodecBuffer buf, Type decodingHypothesis) { + + // Read message id (AcSecPrimitive) + if(0x00 != (0x00FF & buf.readBytes(1)[0])) { + return; + } + + // Read primitive id + int primitiveId = 0x00FF & buf.readBytes(1)[0]; + String primitive = ""; + + switch(primitiveId) { + case 0x7a: + primitive = "acEnableSecurity"; + break; + case 0x7b: + primitive = "acDisableSecurity"; + break; + } + + mainCodec.setHint(decodingHypothesis.getName(), primitive); + } + + @Override + protected void preEncode(CodecBuffer buf, UnionValue uv) { + String variant = uv.getPresentVariantName(); + int primitiveId = -1; + + buf.appendBytes(ByteHelper.intToByteArray(2, 1)); + + // Append primitive id + if(variant.equals("acEnableSecurity")) { + primitiveId = 0x7a; + mainCodec.setHint("ScenarioLen", "16"); + } + else if(variant.equals("acDisableSecurity")) { + primitiveId = 0x7b; + } + buf.appendBytes(ByteHelper.intToByteArray(primitiveId, 1)); + } +} diff --git a/javasrc/codec/org/etsi/ttcn/codec/its/adapter/AcSecResponse.java b/javasrc/codec/org/etsi/ttcn/codec/its/adapter/AcSecResponse.java new file mode 100644 index 0000000000000000000000000000000000000000..1d5ff5c29fa168d6da38c5d843497c50af04243a --- /dev/null +++ b/javasrc/codec/org/etsi/ttcn/codec/its/adapter/AcSecResponse.java @@ -0,0 +1,33 @@ +package org.etsi.ttcn.codec.its.adapter; + +import org.etsi.ttcn.codec.CodecBuffer; +import org.etsi.ttcn.codec.MainCodec; +import org.etsi.ttcn.codec.generic.Boolean; +import org.etsi.ttcn.tci.Type; +import org.etsi.ttcn.tci.Value; + +public class AcSecResponse extends Boolean { + + private static final int AcSecResponse = 0x04; + + public AcSecResponse(MainCodec mainCodec) { + super(mainCodec); + } + + @Override + public Value decode(CodecBuffer buf, Type decodingHypothesis) { + + byte[] readId = buf.readBytes(1); + if(readId[0] != AcSecResponse) { + return null; + } + + return super.decode(buf, decodingHypothesis); + } + + @Override + public CodecBuffer preEncode(Value value) { + return new CodecBuffer(new byte[] {0x02}); + } + +} // End of class AcSecResponse diff --git a/javasrc/codec/org/etsi/ttcn/codec/its/adapter/Plugin.java b/javasrc/codec/org/etsi/ttcn/codec/its/adapter/Plugin.java index 04a7c23ceec9fe10c6be52d30d0cfca119352a31..fdb3cc20d63207f51305ede951e52a33f016c293 100644 --- a/javasrc/codec/org/etsi/ttcn/codec/its/adapter/Plugin.java +++ b/javasrc/codec/org/etsi/ttcn/codec/its/adapter/Plugin.java @@ -13,10 +13,13 @@ public class Plugin { public static void init() { CodecFactory cf = CodecFactory.getInstance(); + cf.setCodec(TciTypeClass.RECORD, "AdapterControl", "AcEnableSecurity", AcEnableSecurity.class); cf.setCodec(TciTypeClass.UNION, "AdapterControl", "AcGnPrimitive", AcGnPrimitive.class); cf.setCodec(TciTypeClass.UNION, "AdapterControl", "AcGnResponse", AcGnResponse.class); cf.setCodec(TciTypeClass.UNION, "AdapterControl", "AcFsapPrimitive", AcFsapPrimitive.class); cf.setCodec(TciTypeClass.UNION, "AdapterControl", "AcGnssPrimitive", AcGnssPrimitive.class); cf.setCodec(TciTypeClass.BOOLEAN, "AdapterControl", "AcGnssResponse", AcGnssResponse.class); + cf.setCodec(TciTypeClass.UNION, "AdapterControl", "AcSecPrimitive", AcSecPrimitive.class); + cf.setCodec(TciTypeClass.BOOLEAN, "AdapterControl", "AcSecResponse", AcSecResponse.class); } } \ No newline at end of file diff --git a/javasrc/codec/org/etsi/ttcn/codec/its/btp/BtpPacket.java b/javasrc/codec/org/etsi/ttcn/codec/its/btp/BtpPacket.java index 9bfd3cf3ac5fe697a99b1e45807bcdb15ff50af1..77318820a5a63fa69b94849750b3a4c089c5b396 100644 --- a/javasrc/codec/org/etsi/ttcn/codec/its/btp/BtpPacket.java +++ b/javasrc/codec/org/etsi/ttcn/codec/its/btp/BtpPacket.java @@ -20,7 +20,7 @@ public class BtpPacket extends Record { @Override protected void preDecodeField(String fieldName, CodecBuffer buf, Type decodingHypothesis, RecordValue rv) { -// System.out.println(">>> BtpPacket.preDecodeField: " + fieldName + ", " + decodingHypothesis); +// TERFactory.getInstance().logDebug(">>> BtpPacket.preDecodeField: " + fieldName + ", " + decodingHypothesis); if(fieldName.equals("payload")) { if (buf.getNbBytes() == 0) { diff --git a/javasrc/codec/org/etsi/ttcn/codec/its/btp/DecodedBtpPayload.java b/javasrc/codec/org/etsi/ttcn/codec/its/btp/DecodedBtpPayload.java index f8b5f746294f973ca8c2ad0febeb863febe525d9..bd2bbbb4f4e4c487e77af7f3802fd832bba54e98 100644 --- a/javasrc/codec/org/etsi/ttcn/codec/its/btp/DecodedBtpPayload.java +++ b/javasrc/codec/org/etsi/ttcn/codec/its/btp/DecodedBtpPayload.java @@ -19,7 +19,7 @@ public class DecodedBtpPayload extends Union { @Override protected void preDecode(CodecBuffer buf, Type decodingHypothesis) { -// System.out.println(">>> DecodedBtpPayload.preDecode: " + decodingHypothesis); +// TERFactory.getInstance().logDebug(">>> DecodedBtpPayload.preDecode: " + decodingHypothesis); } } // End of class DecodedBtpPayload diff --git a/javasrc/codec/org/etsi/ttcn/codec/its/facilities/FacilitiesInd.java b/javasrc/codec/org/etsi/ttcn/codec/its/facilities/FacilitiesInd.java index 5ed22a88b2034365ca7e555c6d3284205acbad3a..46b260c94209f81a64609b8d918f83a6fe77ed45 100644 --- a/javasrc/codec/org/etsi/ttcn/codec/its/facilities/FacilitiesInd.java +++ b/javasrc/codec/org/etsi/ttcn/codec/its/facilities/FacilitiesInd.java @@ -39,7 +39,7 @@ public class FacilitiesInd extends Record { @Override protected void preDecodeField(String fieldName, CodecBuffer buf, Type decodingHypothesis, RecordValue rv) { -// System.out.println(">>> FacilitiesInd.preDecodeField: " + fieldName + " - " + decodingHypothesis); +// TERFactory.getInstance().logDebug(">>> FacilitiesInd.preDecodeField: " + fieldName + " - " + decodingHypothesis); if(fieldName.equals("gnNextHeader")) { buf.overwriteWith(gnNh); diff --git a/javasrc/codec/org/etsi/ttcn/codec/its/geonetworking/BasicHeader.java b/javasrc/codec/org/etsi/ttcn/codec/its/geonetworking/BasicHeader.java index 380aa94754e63aeb0f12784877943fa9109f0129..cc49f737b09acc12ad1d8208e5f851eeeb3c0e90 100644 --- a/javasrc/codec/org/etsi/ttcn/codec/its/geonetworking/BasicHeader.java +++ b/javasrc/codec/org/etsi/ttcn/codec/its/geonetworking/BasicHeader.java @@ -28,7 +28,7 @@ public class BasicHeader extends Record { @Override protected void postEncodeField(String fieldName, CodecBuffer buf) { -// System.out.println(">>> BasicHeader.postEncodeField: " + fieldName); +// TERFactory.getInstance().logDebug(">>> BasicHeader.postEncodeField: " + fieldName); if(fieldName.equals("nextHeader")) { mainCodec.setHint("GnNextHeader", Integer.toString(buf.getBytes(buf.getNbBytes() - 1, 1)[0])); @@ -37,12 +37,12 @@ public class BasicHeader extends Record { @Override protected void preDecodeField(String fieldName, CodecBuffer buf, Type decodingHypothesis, RecordValue rv) { -// System.out.println(">>> BasicHeader.preDecodeField: " + fieldName + ", " + decodingHypothesis); +// TERFactory.getInstance().logDebug(">>> BasicHeader.preDecodeField: " + fieldName + ", " + decodingHypothesis); } @Override protected void postDecodeField(String fieldName, CodecBuffer buf, Type decodingHypothesis, RecordValue rv) { -// System.out.println(">>> BasicHeader.postDecodeField: " + fieldName + ", " + decodingHypothesis); +// TERFactory.getInstance().logDebug(">>> BasicHeader.postDecodeField: " + fieldName + ", " + decodingHypothesis); if(fieldName.equals("nextHeader")) { int nh = ((EnumeratedValue)(rv.getField(fieldName))).getInt(); diff --git a/javasrc/codec/org/etsi/ttcn/codec/its/geonetworking/CommonHeader.java b/javasrc/codec/org/etsi/ttcn/codec/its/geonetworking/CommonHeader.java index ff08131b3f371524219a0854ef63fb7b21852678..e81b95fc3c940c7d45a13c45bc0ac2ae4e3f81d1 100644 --- a/javasrc/codec/org/etsi/ttcn/codec/its/geonetworking/CommonHeader.java +++ b/javasrc/codec/org/etsi/ttcn/codec/its/geonetworking/CommonHeader.java @@ -15,6 +15,7 @@ import org.etsi.ttcn.tci.EnumeratedValue; import org.etsi.ttcn.tci.IntegerValue; import org.etsi.ttcn.tci.RecordValue; import org.etsi.ttcn.tci.Type; +import org.etsi.ttcn.tci.UnionValue; public class CommonHeader extends Record implements IMarkerCallback { @@ -55,6 +56,13 @@ public class CommonHeader extends Record implements IMarkerCallback { mainCodec.setHint("GnNextHeader", Integer.toString(nh)); } + else if(fieldName.equals("headerTST")) { + String headerTST = ((UnionValue)(rv.getField(fieldName))).getPresentVariantName(); + if (headerTST.equals("beaconHdr")) { + mainCodec.setHint("IsBeacon", "true"); + } + } + else if(fieldName.equals("plLength")) { // int pl = ((IntegerValue)(rv.getField(fieldName))).getInteger(); TTWB iterface is getInt, TCI shall be getInteger int pl = mainCodec.getTciCDRequired().getInteger((IntegerValue)(rv.getField(fieldName))); diff --git a/javasrc/codec/org/etsi/ttcn/codec/its/geonetworking/GN_Address.java b/javasrc/codec/org/etsi/ttcn/codec/its/geonetworking/GN_Address.java index 6d8143b5db0ace8ce4dbb2c77211c14619870c5a..55af58cf658f64ff0832fd50dade85e5c14d7500 100644 --- a/javasrc/codec/org/etsi/ttcn/codec/its/geonetworking/GN_Address.java +++ b/javasrc/codec/org/etsi/ttcn/codec/its/geonetworking/GN_Address.java @@ -21,18 +21,18 @@ public class GN_Address extends Record { @Override protected void postEncodeField(String fieldName, CodecBuffer buf) { -// System.out.println(">>> GN_Address.postEncodeField: " + fieldName); +// TERFactory.getInstance().logDebug(">>> GN_Address.postEncodeField: " + fieldName); } @Override protected void preDecodeField(String fieldName, CodecBuffer buf, Type decodingHypothesis, RecordValue rv) { -// System.out.println(">>> GN_Address.preDecodeField: " + fieldName + ", " + decodingHypothesis); +// TERFactory.getInstance().logDebug(">>> GN_Address.preDecodeField: " + fieldName + ", " + decodingHypothesis); } @Override protected void postDecodeField(String fieldName, CodecBuffer buf, Type decodingHypothesis, RecordValue rv) { -// System.out.println(">>> GN_Address.postDecodeField: " + fieldName + ", " + decodingHypothesis); +// TERFactory.getInstance().logDebug(">>> GN_Address.postDecodeField: " + fieldName + ", " + decodingHypothesis); } } diff --git a/javasrc/codec/org/etsi/ttcn/codec/its/geonetworking/GeoNetworkingPacket.java b/javasrc/codec/org/etsi/ttcn/codec/its/geonetworking/GeoNetworkingPacket.java index ebe8e8019c965c534b10b66f8ccc7527e21149b9..961763ffc9aa88223d654fdbbe34736286e0745b 100644 --- a/javasrc/codec/org/etsi/ttcn/codec/its/geonetworking/GeoNetworkingPacket.java +++ b/javasrc/codec/org/etsi/ttcn/codec/its/geonetworking/GeoNetworkingPacket.java @@ -29,14 +29,14 @@ public class GeoNetworkingPacket extends Record { @Override public CodecBuffer encode(Value value) { -// System.out.println(">>> GeoNetworkingPacket.encode: " + value); +// TERFactory.getInstance().logDebug(">>> GeoNetworkingPacket.encode: " + value); return super.encode(value); } @Override public CodecBuffer preEncode(Value value) { -// System.out.println(">>> GeoNetworkingPacket.preEncode: " + value); +// TERFactory.getInstance().logDebug(">>> GeoNetworkingPacket.preEncode: " + value); String gnNextHeader = mainCodec.getHint("GnNextHeader"); isSecuredMode = (boolean)((gnNextHeader != null) && gnNextHeader.equals("32")); @@ -46,7 +46,7 @@ public class GeoNetworkingPacket extends Record { @Override protected void postEncodeField(String fieldName, CodecBuffer buf) { -// System.out.println(">>> GeoNetworkingPacket.postEncodeField: " + fieldName + ", " + isSecuredMode); +// TERFactory.getInstance().logDebug(">>> GeoNetworkingPacket.postEncodeField: " + fieldName + ", " + isSecuredMode); if (isSecuredMode && fieldName.equals("packet")) { // Ignore 'packet' encoding by reseting the CodecBuffer content @@ -56,33 +56,33 @@ public class GeoNetworkingPacket extends Record { @Override public Value decode(CodecBuffer buf, Type decodingHypothesis) { -// System.out.println(">>> GeoNetworkingPacket.decode: " + decodingHypothesis + ", " + isSecuredMode); +// TERFactory.getInstance().logDebug(">>> GeoNetworkingPacket.decode: " + decodingHypothesis + ", " + isSecuredMode); packetValue = null; // Reset value Value result = super.decode(buf, decodingHypothesis); // Normal decoding -// System.out.println("GeoNetworkingPacket.decode: Normal decoding=" + result); +// TERFactory.getInstance().logDebug("GeoNetworkingPacket.decode: Normal decoding=" + result); if(isSecuredMode) { // Override 'packet' field RecordValue rv = (RecordValue) result; rv.setField("packet", packetValue); } -// System.out.println("<<< GeoNetworkingPacket.decode: " + result); +// TERFactory.getInstance().logDebug("<<< GeoNetworkingPacket.decode: " + result); return result; } @Override protected void preDecode(CodecBuffer buf, Type decodingHypothesis) { -// System.out.println(">>> GeoNetworkingPacket.preDecode: " + decodingHypothesis); +// TERFactory.getInstance().logDebug(">>> GeoNetworkingPacket.preDecode: " + decodingHypothesis); String gnNextHeader = mainCodec.getHint("GnNextHeader"); isSecuredMode = (boolean)((gnNextHeader != null) && gnNextHeader.equals("2")); -// System.out.println("GeoNetworkingPacket.preDecode: isSecuredMode=" + isSecuredMode); +// TERFactory.getInstance().logDebug("GeoNetworkingPacket.preDecode: isSecuredMode=" + isSecuredMode); } @Override protected void preDecodeField(String fieldName, CodecBuffer buf, Type decodingHypothesis, RecordValue rv) { -// System.out.println(">>> GeoNetworkingPacket.preDecodeField: " + fieldName + ", " + decodingHypothesis + ", " + isSecuredMode); +// TERFactory.getInstance().logDebug(">>> GeoNetworkingPacket.preDecodeField: " + fieldName + ", " + decodingHypothesis + ", " + isSecuredMode); if(isSecuredMode) { if (fieldName.equals("packet")) { @@ -97,7 +97,7 @@ public class GeoNetworkingPacket extends Record { @Override protected void postDecodeField(String fieldName, CodecBuffer buf, Type decodingHypothesis, RecordValue rv) { -// System.out.println(">>> GeoNetworkingPacket.postDecodeField: " + fieldName + ", " + rv); +// TERFactory.getInstance().logDebug(">>> GeoNetworkingPacket.postDecodeField: " + fieldName + ", " + rv); if(isSecuredMode) { if(fieldName.equals("securedMsg")) { diff --git a/javasrc/codec/org/etsi/ttcn/codec/its/geonetworking/GeoNetworkingPdu.java b/javasrc/codec/org/etsi/ttcn/codec/its/geonetworking/GeoNetworkingPdu.java index 593aff7aec4b227914c8f1792c0ad8fe0d2d7692..625b95f804b7dbb42107fa2679600ea9c721b0d0 100644 --- a/javasrc/codec/org/etsi/ttcn/codec/its/geonetworking/GeoNetworkingPdu.java +++ b/javasrc/codec/org/etsi/ttcn/codec/its/geonetworking/GeoNetworkingPdu.java @@ -18,7 +18,7 @@ public class GeoNetworkingPdu extends Record { @Override protected void postEncodeField(String fieldName, CodecBuffer buf) { -// System.out.println(">>> GeoNetworkingPdu.postEncodeField: " + fieldName); +// TERFactory.getInstance().logDebug(">>> GeoNetworkingPdu.postEncodeField: " + fieldName); } @Override diff --git a/javasrc/codec/org/etsi/ttcn/codec/its/geonetworking/GnIndReq.java b/javasrc/codec/org/etsi/ttcn/codec/its/geonetworking/GnIndReq.java index a136be53af69523cd2519b5cdce7fee55b155c5e..025354552ca539ef7b2a0deba55d529a3ecd6fee 100644 --- a/javasrc/codec/org/etsi/ttcn/codec/its/geonetworking/GnIndReq.java +++ b/javasrc/codec/org/etsi/ttcn/codec/its/geonetworking/GnIndReq.java @@ -20,7 +20,7 @@ public class GnIndReq extends Record { @Override protected void preDecode(CodecBuffer buf, Type decodingHypothesis) { -// System.out.println(">>> GnIndReq.preDecode: " + decodingHypothesis); +// TERFactory.getInstance().logDebug(">>> GnIndReq.preDecode: " + decodingHypothesis); int msgLen = buf.getNbBits() - 48; @@ -30,7 +30,7 @@ public class GnIndReq extends Record { @Override protected void preDecodeField(String fieldName, CodecBuffer buf, Type decodingHypothesis, RecordValue rv) { -// System.out.println(">>> GnIndReq.preDecodeField: " + fieldName + ", " + decodingHypothesis); +// TERFactory.getInstance().logDebug(">>> GnIndReq.preDecodeField: " + fieldName + ", " + decodingHypothesis); if(fieldName.equals("macDestinationAddress")) { buf.overwriteWith(macBuffer); @@ -42,13 +42,13 @@ public class GnIndReq extends Record { @Override protected void postDecodeField(String fieldName, CodecBuffer buf, Type decodingHypothesis, RecordValue rv) { -// System.out.println(">>> GnIndReq.postDecodeField: " + fieldName + ", " + decodingHypothesis); +// TERFactory.getInstance().logDebug(">>> GnIndReq.postDecodeField: " + fieldName + ", " + decodingHypothesis); } @Override public CodecBuffer encode(Value value) { -// System.out.println("GnIndReq.encode: " + value); +// TERFactory.getInstance().logDebug("GnIndReq.encode: " + value); return super.encode(value); } diff --git a/javasrc/codec/org/etsi/ttcn/codec/its/geonetworking/GnNonSecuredPacket.java b/javasrc/codec/org/etsi/ttcn/codec/its/geonetworking/GnNonSecuredPacket.java index 5f7152dc5db3078c2eaf520b2dd3c9734f302777..875db85398bb8b836410992e5e77383752ddab5b 100644 --- a/javasrc/codec/org/etsi/ttcn/codec/its/geonetworking/GnNonSecuredPacket.java +++ b/javasrc/codec/org/etsi/ttcn/codec/its/geonetworking/GnNonSecuredPacket.java @@ -23,13 +23,13 @@ public class GnNonSecuredPacket extends Record { @Override protected void preDecode(CodecBuffer buf, Type decodingHypothesis) { -// System.out.println(">>> GnNonSecuredPacket.preDecode: " + decodingHypothesis); +// TERFactory.getInstance().logDebug(">>> GnNonSecuredPacket.preDecode: " + decodingHypothesis); } @Override protected void preDecodeField(String fieldName, CodecBuffer buf, Type decodingHypothesis, RecordValue rv) { -// System.out.println(">>> GnNonSecuredPacket.preDecodeField: " + fieldName + ", " + decodingHypothesis); +// TERFactory.getInstance().logDebug(">>> GnNonSecuredPacket.preDecodeField: " + fieldName + ", " + decodingHypothesis); // FIXME Yann if payload length is 0, why payload is not set to omit? // if(fieldName.equals("payload")) { @@ -41,13 +41,13 @@ public class GnNonSecuredPacket extends Record { @Override protected void postDecodeField(String fieldName, CodecBuffer buf, Type decodingHypothesis, RecordValue rv) { -// System.out.println(">>> GnNonSecuredPacket.postDecodeField: " + fieldName + ", " + decodingHypothesis); +// TERFactory.getInstance().logDebug(">>> GnNonSecuredPacket.postDecodeField: " + fieldName + ", " + decodingHypothesis); } @Override protected void postEncodeField(String fieldName, CodecBuffer buf) { -// System.out.println(">>> GnNonSecuredPacket.postEncodeField: " + fieldName); +// TERFactory.getInstance().logDebug(">>> GnNonSecuredPacket.postEncodeField: " + fieldName); if(fieldName.equals("payload")) { // Compute Payload's length and set a hint @@ -58,14 +58,14 @@ public class GnNonSecuredPacket extends Record { @Override public CodecBuffer encode(Value value) { -// System.out.println(">>> GnNonSecuredPacket.encode: " + value); +// TERFactory.getInstance().logDebug(">>> GnNonSecuredPacket.encode: " + value); return super.encode(value); } @Override public CodecBuffer preEncode(Value value) { -// System.out.println(">>> GnNonSecuredPacket.preEncode: " + value); +// TERFactory.getInstance().logDebug(">>> GnNonSecuredPacket.preEncode: " + value); mainCodec.setHint("payloadLength", Integer.toString(0)); return new CodecBuffer(); diff --git a/javasrc/codec/org/etsi/ttcn/codec/its/geonetworking/HeaderTST.java b/javasrc/codec/org/etsi/ttcn/codec/its/geonetworking/HeaderTST.java index c481eea836b4633d186c6c8eefd76d7362fccf83..2fbddd80c428040f23a5a3bf3a08a62eb17c30ef 100644 --- a/javasrc/codec/org/etsi/ttcn/codec/its/geonetworking/HeaderTST.java +++ b/javasrc/codec/org/etsi/ttcn/codec/its/geonetworking/HeaderTST.java @@ -18,7 +18,7 @@ public class HeaderTST extends Union { @Override protected void preDecode(CodecBuffer buf, Type decodingHypothesis) { -// System.out.println(">>> HeaderTST.preDecode: " + decodingHypothesis); +// TERFactory.getInstance().logDebug(">>> HeaderTST.preDecode: " + decodingHypothesis); int hdrType = 0x00FF & buf.getBits(0, 4)[0]; String variant = ""; diff --git a/javasrc/codec/org/etsi/ttcn/codec/its/geonetworking/LongPosVector.java b/javasrc/codec/org/etsi/ttcn/codec/its/geonetworking/LongPosVector.java index 10a309db7177060ce80fe59eabaec9a7b38d7206..9aa048a1a2cb802b43f850ccf7c3b9e38af0f973 100644 --- a/javasrc/codec/org/etsi/ttcn/codec/its/geonetworking/LongPosVector.java +++ b/javasrc/codec/org/etsi/ttcn/codec/its/geonetworking/LongPosVector.java @@ -19,17 +19,17 @@ public class LongPosVector extends Record { @Override protected void postEncodeField(String fieldName, CodecBuffer buf) { -// System.out.println(">>> LongPosVector.postEncodeField: " + fieldName); +// TERFactory.getInstance().logDebug(">>> LongPosVector.postEncodeField: " + fieldName); } @Override protected void preDecodeField(String fieldName, CodecBuffer buf, Type decodingHypothesis, RecordValue rv) { -// System.out.println(">>> LongPosVector.preDecodeField: " + fieldName + ", " + decodingHypothesis.getName() + ", " + rv.getType().getName()); +// TERFactory.getInstance().logDebug(">>> LongPosVector.preDecodeField: " + fieldName + ", " + decodingHypothesis.getName() + ", " + rv.getType().getName()); } @Override protected void postDecodeField(String fieldName, CodecBuffer buf, Type decodingHypothesis, RecordValue rv) { -// System.out.println(">>> LongPosVector.postDecodeField: " + fieldName + ", " + decodingHypothesis.getName() + ", " + rv.getType().getName()); +// TERFactory.getInstance().logDebug(">>> LongPosVector.postDecodeField: " + fieldName + ", " + decodingHypothesis.getName() + ", " + rv.getType().getName()); } } // End of class LongPosVector diff --git a/javasrc/codec/org/etsi/ttcn/codec/its/geonetworking/Payload.java b/javasrc/codec/org/etsi/ttcn/codec/its/geonetworking/Payload.java index 944564d15065e8d6d2f8d89d085fc0f2feabb4e0..d45c6541e6b5c3f32a36f5f7345886a1423accec 100644 --- a/javasrc/codec/org/etsi/ttcn/codec/its/geonetworking/Payload.java +++ b/javasrc/codec/org/etsi/ttcn/codec/its/geonetworking/Payload.java @@ -5,6 +5,7 @@ */ package org.etsi.ttcn.codec.its.geonetworking; +import org.etsi.adapter.TERFactory; import org.etsi.ttcn.codec.CodecBuffer; import org.etsi.ttcn.codec.MainCodec; import org.etsi.ttcn.codec.generic.Record; @@ -53,14 +54,15 @@ public class Payload extends Record { @Override protected void preDecode(CodecBuffer buf, Type decodingHypothesis) { -// System.out.println(">>> Payload.preDecode: " + decodingHypothesis); +// TERFactory.getInstance().logDebug(">>> Payload.preDecode: " + decodingHypothesis); // Sanity check on pl int pl = java.lang.Integer.parseInt(mainCodec.getHint("payloadLength")); int remainingBytesForPayload = buf.getNbBytes(); - if(pl != remainingBytesForPayload) { - System.err.println("Error: bad payload length or message truncated " + String hint = mainCodec.getHint("IsBeacon"); + if(pl != remainingBytesForPayload && hint==null) { + TERFactory.getInstance().logDebug("Error: bad payload length or message truncated " + "(indicated: " + pl + " - real: " + remainingBytesForPayload + ")"); pl = Math.min(remainingBytesForPayload, pl); } diff --git a/javasrc/codec/org/etsi/ttcn/codec/its/geonetworking/TrafficClass.java b/javasrc/codec/org/etsi/ttcn/codec/its/geonetworking/TrafficClass.java index 405a64dfdd25c0acf1352258745006fb206a7f63..42c1e430493ada07c90f0cd81680c1cdb5ee3f77 100644 --- a/javasrc/codec/org/etsi/ttcn/codec/its/geonetworking/TrafficClass.java +++ b/javasrc/codec/org/etsi/ttcn/codec/its/geonetworking/TrafficClass.java @@ -21,18 +21,18 @@ public class TrafficClass extends Record { @Override protected void postEncodeField(String fieldName, CodecBuffer buf) { -// System.out.println(">>> TrafficClass.postEncodeField: " + fieldName); +// TERFactory.getInstance().logDebug(">>> TrafficClass.postEncodeField: " + fieldName); } @Override protected void preDecodeField(String fieldName, CodecBuffer buf, Type decodingHypothesis, RecordValue rv) { -// System.out.println(">>> TrafficClass.preDecodeField: " + fieldName + ", " + decodingHypothesis); +// TERFactory.getInstance().logDebug(">>> TrafficClass.preDecodeField: " + fieldName + ", " + decodingHypothesis); } @Override protected void postDecodeField(String fieldName, CodecBuffer buf, Type decodingHypothesis, RecordValue rv) { -// System.out.println(">>> TrafficClass.postDecodeField: " + fieldName + ", " + decodingHypothesis); +// TERFactory.getInstance().logDebug(">>> TrafficClass.postDecodeField: " + fieldName + ", " + decodingHypothesis); } } diff --git a/javasrc/codec/org/etsi/ttcn/codec/its/mapspat/MapSpatIndReq.java b/javasrc/codec/org/etsi/ttcn/codec/its/mapspat/MapSpatIndReq.java index 8460f9ae188a94fc3d24a05f4838d713e73d7357..210dd185df4c3aeeea5b12d92f3e4a8117be924d 100644 --- a/javasrc/codec/org/etsi/ttcn/codec/its/mapspat/MapSpatIndReq.java +++ b/javasrc/codec/org/etsi/ttcn/codec/its/mapspat/MapSpatIndReq.java @@ -1,53 +1,54 @@ package org.etsi.ttcn.codec.its.mapspat; -import org.etsi.ttcn.codec.CodecBuffer; -import org.etsi.ttcn.codec.MainCodec; -import org.etsi.ttcn.codec.generic.Record; -import org.etsi.ttcn.tci.RecordValue; -import org.etsi.ttcn.tci.Type; -import org.etsi.ttcn.tci.Value; +// TODO To be removed +//import org.etsi.ttcn.codec.CodecBuffer; +//import org.etsi.ttcn.codec.MainCodec; +//import org.etsi.ttcn.codec.generic.Record; +//import org.etsi.ttcn.tci.RecordValue; +//import org.etsi.ttcn.tci.Type; +//import org.etsi.ttcn.tci.Value; -public class MapSpatIndReq extends Record { - - public MapSpatIndReq(MainCodec mainCodec) { - super(mainCodec); - } - - @Override - protected void preDecode(CodecBuffer buf, Type decodingHypothesis) { -// System.out.println(">>> MapSpatIndReq.preDecode: " + decodingHypothesis); - - int msgLen = buf.getNbBits() - 48; - - messageBuffer = buf.getBuffer(0, msgLen); - macBuffer = buf.getBuffer(msgLen, 48); - } - - @Override - protected void preDecodeField(String fieldName, CodecBuffer buf, Type decodingHypothesis, RecordValue rv) { -// System.out.println(">>> MapSpatIndReq.preDecodeField: " + fieldName + ", " + decodingHypothesis); - - if(fieldName.equals("macDestinationAddress")) { - buf.overwriteWith(macBuffer); - } - else { - buf.overwriteWith(messageBuffer); - } - } - - @Override - protected void postDecodeField(String fieldName, CodecBuffer buf, Type decodingHypothesis, RecordValue rv) { -// System.out.println(">>> MapSpatIndReq.postDecodeField: " + fieldName + ", " + decodingHypothesis); - - } - - @Override - public CodecBuffer encode(Value value) { -// System.out.println("MapSpatIndReq.encode: " + value); - - return super.encode(value); - } - - private CodecBuffer messageBuffer = null; - private CodecBuffer macBuffer = null; -} // End of class MapSpatIndReq +//public class MapSpatIndReq extends Record { +// +// public MapSpatIndReq(MainCodec mainCodec) { +// super(mainCodec); +// } +// +// @Override +// protected void preDecode(CodecBuffer buf, Type decodingHypothesis) { +//// System.out.println(">>> MapSpatIndReq.preDecode: " + decodingHypothesis); +// +// int msgLen = buf.getNbBits() - 48; +// +// messageBuffer = buf.getBuffer(0, msgLen); +// macBuffer = buf.getBuffer(msgLen, 48); +// } +// +// @Override +// protected void preDecodeField(String fieldName, CodecBuffer buf, Type decodingHypothesis, RecordValue rv) { +//// System.out.println(">>> MapSpatIndReq.preDecodeField: " + fieldName + ", " + decodingHypothesis); +// +// if(fieldName.equals("macDestinationAddress")) { +// buf.overwriteWith(macBuffer); +// } +// else { +// buf.overwriteWith(messageBuffer); +// } +// } +// +// @Override +// protected void postDecodeField(String fieldName, CodecBuffer buf, Type decodingHypothesis, RecordValue rv) { +//// System.out.println(">>> MapSpatIndReq.postDecodeField: " + fieldName + ", " + decodingHypothesis); +// +// } +// +// @Override +// public CodecBuffer encode(Value value) { +//// System.out.println("MapSpatIndReq.encode: " + value); +// +// return super.encode(value); +// } +// +// private CodecBuffer messageBuffer = null; +// private CodecBuffer macBuffer = null; +//} // End of class MapSpatIndReq diff --git a/javasrc/codec/org/etsi/ttcn/codec/its/mapspat/Plugin.java b/javasrc/codec/org/etsi/ttcn/codec/its/mapspat/Plugin.java index 184ab901914faf429c2caad51ff3a4e942f242b3..931e075a71c016c20466ea66e80bfb304cd9cf78 100644 --- a/javasrc/codec/org/etsi/ttcn/codec/its/mapspat/Plugin.java +++ b/javasrc/codec/org/etsi/ttcn/codec/its/mapspat/Plugin.java @@ -5,15 +5,16 @@ */ package org.etsi.ttcn.codec.its.mapspat; -import org.etsi.ttcn.tci.TciTypeClass; -import org.etsi.ttcn.codec.CodecFactory; - -public class Plugin { - - public static void init() { - - CodecFactory cf = CodecFactory.getInstance(); - cf.setCodec(TciTypeClass.RECORD, "LibIts_Interface", "MapReq", MapSpatIndReq.class); - cf.setCodec(TciTypeClass.RECORD, "LibIts_Interface", "SpatReq", MapSpatIndReq.class); - } -} \ No newline at end of file +//TODO To be removed +//import org.etsi.ttcn.tci.TciTypeClass; +//import org.etsi.ttcn.codec.CodecFactory; +// +//public class Plugin { +// +// public static void init() { +// +// CodecFactory cf = CodecFactory.getInstance(); +// cf.setCodec(TciTypeClass.RECORD, "LibIts_Interface", "MapReq", MapSpatIndReq.class); +// cf.setCodec(TciTypeClass.RECORD, "LibIts_Interface", "SpatReq", MapSpatIndReq.class); +// } +//} \ No newline at end of file diff --git a/javasrc/codec/org/etsi/ttcn/codec/its/security/AesCcm.java b/javasrc/codec/org/etsi/ttcn/codec/its/security/AesCcm.java index 8eb63f7c401ba821407838c9eacd813d5b7faea2..dd0c1283e775ee5b005bfbe1302a45e5298f2533 100644 --- a/javasrc/codec/org/etsi/ttcn/codec/its/security/AesCcm.java +++ b/javasrc/codec/org/etsi/ttcn/codec/its/security/AesCcm.java @@ -33,17 +33,17 @@ public class AesCcm extends Record { @Override protected void postEncodeField(String fieldName, CodecBuffer buf) { -// System.out.println(">>> AesCcm.postEncodeField: " + fieldName); +// TERFactory.getInstance().logDebug(">>> AesCcm.postEncodeField: " + fieldName); } @Override protected void preDecodeField(String fieldName, CodecBuffer buf, Type decodingHypothesis, RecordValue rv) { -// System.out.println(">>> AesCcm.preDecodeField: " + fieldName + ", " + decodingHypothesis.getName() + ", " + rv.getType().getName()); +// TERFactory.getInstance().logDebug(">>> AesCcm.preDecodeField: " + fieldName + ", " + decodingHypothesis.getName() + ", " + rv.getType().getName()); } @Override protected void postDecodeField(String fieldName, CodecBuffer buf, Type decodingHypothesis, RecordValue rv) { -// System.out.println(">>> AesCcm.postDecodeField: " + fieldName + ", " + decodingHypothesis.getName() + ", " + rv.getType().getName()); +// TERFactory.getInstance().logDebug(">>> AesCcm.postDecodeField: " + fieldName + ", " + decodingHypothesis.getName() + ", " + rv.getType().getName()); } } // End of class AesCcm diff --git a/javasrc/codec/org/etsi/ttcn/codec/its/security/Certificate.java b/javasrc/codec/org/etsi/ttcn/codec/its/security/Certificate.java index 8625a5c20b0b69470d1fd51c5296630ea2b9edac..e2a2ffe4dbb4d192faf3e9d6c6701be32824c967 100644 --- a/javasrc/codec/org/etsi/ttcn/codec/its/security/Certificate.java +++ b/javasrc/codec/org/etsi/ttcn/codec/its/security/Certificate.java @@ -19,17 +19,17 @@ public class Certificate extends Record { @Override protected void postEncodeField(String fieldName, CodecBuffer buf) { -// System.out.println(">>> Certificate.postEncodeField: " + fieldName); +// TERFactory.getInstance().logDebug(">>> Certificate.postEncodeField: " + fieldName); } @Override protected void preDecodeField(String fieldName, CodecBuffer buf, Type decodingHypothesis, RecordValue rv) { -// System.out.println(">>> Certificate.preDecodeField: " + fieldName + ", " + decodingHypothesis.getName() + ", " + rv.getType().getName()); +// TERFactory.getInstance().logDebug(">>> Certificate.preDecodeField: " + fieldName + ", " + decodingHypothesis.getName() + ", " + rv.getType().getName()); } @Override protected void postDecodeField(String fieldName, CodecBuffer buf, Type decodingHypothesis, RecordValue rv) { -// System.out.println(">>> Certificate.postDecodeField: " + fieldName + ", " + decodingHypothesis.getName() + ", " + rv.getType().getName()); +// TERFactory.getInstance().logDebug(">>> Certificate.postDecodeField: " + fieldName + ", " + decodingHypothesis.getName() + ", " + rv.getType().getName()); } } // End of class Certificate \ No newline at end of file diff --git a/javasrc/codec/org/etsi/ttcn/codec/its/security/CertificateWithAlgo.java b/javasrc/codec/org/etsi/ttcn/codec/its/security/CertificateWithAlgo.java index b1e460f05c07ac3d462a03392e51a8029124f965..af2307cded12beda8cf9e70a43d0b5a0d55bdfdf 100644 --- a/javasrc/codec/org/etsi/ttcn/codec/its/security/CertificateWithAlgo.java +++ b/javasrc/codec/org/etsi/ttcn/codec/its/security/CertificateWithAlgo.java @@ -19,17 +19,17 @@ public class CertificateWithAlgo extends Record { @Override protected void postEncodeField(String fieldName, CodecBuffer buf) { -// System.out.println(">>> CertificateWithAlgo.postEncodeField: " + fieldName); +// TERFactory.getInstance().logDebug(">>> CertificateWithAlgo.postEncodeField: " + fieldName); } @Override protected void preDecodeField(String fieldName, CodecBuffer buf, Type decodingHypothesis, RecordValue rv) { -// System.out.println(">>> CertificateWithAlgo.preDecodeField: " + fieldName + ", " + decodingHypothesis.getName() + ", " + rv.getType().getName()); +// TERFactory.getInstance().logDebug(">>> CertificateWithAlgo.preDecodeField: " + fieldName + ", " + decodingHypothesis.getName() + ", " + rv.getType().getName()); } @Override protected void postDecodeField(String fieldName, CodecBuffer buf, Type decodingHypothesis, RecordValue rv) { -// System.out.println(">>> CertificateWithAlgo.postDecodeField: " + fieldName + ", " + decodingHypothesis.getName() + ", " + rv.getType().getName()); +// TERFactory.getInstance().logDebug(">>> CertificateWithAlgo.postDecodeField: " + fieldName + ", " + decodingHypothesis.getName() + ", " + rv.getType().getName()); } } // End of class CertificateWithAlgo diff --git a/javasrc/codec/org/etsi/ttcn/codec/its/security/Duration.java b/javasrc/codec/org/etsi/ttcn/codec/its/security/Duration.java index 7d550f5635923480e643389340523035d5cc424b..fe46041b93c9d796f5bc107ba6bba14bb059f738 100644 --- a/javasrc/codec/org/etsi/ttcn/codec/its/security/Duration.java +++ b/javasrc/codec/org/etsi/ttcn/codec/its/security/Duration.java @@ -24,17 +24,17 @@ public class Duration extends Record { @Override protected void postEncodeField(String fieldName, CodecBuffer buf) { -// System.out.println(">>> Duration.postEncodeField: " + fieldName); +// TERFactory.getInstance().logDebug(">>> Duration.postEncodeField: " + fieldName); } @Override protected void preDecodeField(String fieldName, CodecBuffer buf, Type decodingHypothesis, RecordValue rv) { -// System.out.println(">>> Duration.preDecodeField: " + fieldName + ", " + decodingHypothesis.getName() + ", " + rv.getType().getName()); +// TERFactory.getInstance().logDebug(">>> Duration.preDecodeField: " + fieldName + ", " + decodingHypothesis.getName() + ", " + rv.getType().getName()); } @Override protected void postDecodeField(String fieldName, CodecBuffer buf, Type decodingHypothesis, RecordValue rv) { -// System.out.println(">>> Duration.postDecodeField: " + fieldName + ", " + decodingHypothesis.getName() + ", " + rv.getType().getName()); +// TERFactory.getInstance().logDebug(">>> Duration.postDecodeField: " + fieldName + ", " + decodingHypothesis.getName() + ", " + rv.getType().getName()); } } // End of class Duration \ No newline at end of file diff --git a/javasrc/codec/org/etsi/ttcn/codec/its/security/EccPoint.java b/javasrc/codec/org/etsi/ttcn/codec/its/security/EccPoint.java index 3b16007ba8913394617835e270bbc86a2ceb57d8..19f8f8dcb631c67d91130f449d4ba37fec37f194 100644 --- a/javasrc/codec/org/etsi/ttcn/codec/its/security/EccPoint.java +++ b/javasrc/codec/org/etsi/ttcn/codec/its/security/EccPoint.java @@ -30,7 +30,7 @@ public class EccPoint extends Record { @Override protected void postEncodeField(String fieldName, CodecBuffer buf) { -// System.out.println(">>> EccPoint.postEncodeField: " + fieldName); +// TERFactory.getInstance().logDebug(">>> EccPoint.postEncodeField: " + fieldName); if (fieldName.equals("type_")) { // Store EccPointType value @@ -49,7 +49,7 @@ public class EccPoint extends Record { @Override protected void preDecodeField(String fieldName, CodecBuffer buf, Type decodingHypothesis, RecordValue rv) { -// System.out.println(">>> EccPoint.preDecodeField: " + fieldName + ", " + decodingHypothesis.getName() + ", " + rv.getType().getName()); +// TERFactory.getInstance().logDebug(">>> EccPoint.preDecodeField: " + fieldName + ", " + decodingHypothesis.getName() + ", " + rv.getType().getName()); if (fieldName.equals("type_")) { byte type = buf.getBytes(0, 1)[0]; @@ -90,7 +90,7 @@ public class EccPoint extends Record { @Override protected void postDecodeField(String fieldName, CodecBuffer buf, Type decodingHypothesis, RecordValue rv) { -// System.out.println(">>> EccPoint.postDecodeField: " + fieldName + ", " + decodingHypothesis.getName() + ", " + rv.getType().getName()); +// TERFactory.getInstance().logDebug(">>> EccPoint.postDecodeField: " + fieldName + ", " + decodingHypothesis.getName() + ", " + rv.getType().getName()); } } // End of class EccPoint diff --git a/javasrc/codec/org/etsi/ttcn/codec/its/security/EcdsaSignature.java b/javasrc/codec/org/etsi/ttcn/codec/its/security/EcdsaSignature.java index f58d5339927293a91e622cbd7861d78dcbbe511c..ac5b030216a6a9b077ec82c9292684b2a92a0ce6 100644 --- a/javasrc/codec/org/etsi/ttcn/codec/its/security/EcdsaSignature.java +++ b/javasrc/codec/org/etsi/ttcn/codec/its/security/EcdsaSignature.java @@ -33,7 +33,7 @@ public class EcdsaSignature extends Record { */ @Override protected void postEncodeField(String fieldName, CodecBuffer buf) { -// System.out.println(">>> EcdsaSignature.postEncodeField: " + fieldName); +// TERFactory.getInstance().logDebug(">>> EcdsaSignature.postEncodeField: " + fieldName); if (fieldName.equals("s")) { int type = Integer.parseInt(mainCodec.getHint("EccPointType")); @@ -48,7 +48,7 @@ public class EcdsaSignature extends Record { @Override protected void preDecodeField(String fieldName, CodecBuffer buf, Type decodingHypothesis, RecordValue rv) { -// System.out.println(">>> EcdsaSignature.preDecodeField: " + fieldName + ", " + decodingHypothesis.getName() + ", " + rv.getType().getName()); +// TERFactory.getInstance().logDebug(">>> EcdsaSignature.preDecodeField: " + fieldName + ", " + decodingHypothesis.getName() + ", " + rv.getType().getName()); if (fieldName.equals("s")) { int type = Integer.parseInt(mainCodec.getHint("EccPointType")); @@ -63,7 +63,7 @@ public class EcdsaSignature extends Record { @Override protected void postDecodeField(String fieldName, CodecBuffer buf, Type decodingHypothesis, RecordValue rv) { -// System.out.println(">>> EcdsaSignature.postDecodeField: " + fieldName + ", " + decodingHypothesis.getName() + ", " + rv.getType().getName()); +// TERFactory.getInstance().logDebug(">>> EcdsaSignature.postDecodeField: " + fieldName + ", " + decodingHypothesis.getName() + ", " + rv.getType().getName()); } } // End of class EcdsaSignature \ No newline at end of file diff --git a/javasrc/codec/org/etsi/ttcn/codec/its/security/EciesEncryptedKey.java b/javasrc/codec/org/etsi/ttcn/codec/its/security/EciesEncryptedKey.java index 0369be9a62e87655abe1c7d0b3079154f94e1113..f48ac1a98a4ce40b65c12fb588ef2f39e3d18e5b 100644 --- a/javasrc/codec/org/etsi/ttcn/codec/its/security/EciesEncryptedKey.java +++ b/javasrc/codec/org/etsi/ttcn/codec/its/security/EciesEncryptedKey.java @@ -26,7 +26,7 @@ public class EciesEncryptedKey extends Record { @Override protected void postEncodeField(String fieldName, CodecBuffer buf) { -// System.out.println(">>> EciesEncryptedKey.postEncodeField: " + fieldName); +// TERFactory.getInstance().logDebug(">>> EciesEncryptedKey.postEncodeField: " + fieldName); if (fieldName.equals("c")) { int type = Integer.parseInt(mainCodec.getHint("SymmetricAlgorithm")); @@ -40,7 +40,7 @@ public class EciesEncryptedKey extends Record { @Override protected void preDecodeField(String fieldName, CodecBuffer buf, Type decodingHypothesis, RecordValue rv) { -// System.out.println(">>> EciesEncryptedKey.preDecodeField: " + fieldName + ", " + decodingHypothesis.getName() + ", " + rv.getType().getName()); +// TERFactory.getInstance().logDebug(">>> EciesEncryptedKey.preDecodeField: " + fieldName + ", " + decodingHypothesis.getName() + ", " + rv.getType().getName()); if (fieldName.equals("c")) { int type = Integer.parseInt(mainCodec.getHint("SymmetricAlgorithm")); @@ -56,7 +56,7 @@ public class EciesEncryptedKey extends Record { @Override protected void postDecodeField(String fieldName, CodecBuffer buf, Type decodingHypothesis, RecordValue rv) { -// System.out.println(">>> EciesEncryptedKey.postDecodeField: " + fieldName + ", " + decodingHypothesis.getName() + ", " + rv.getType().getName()); +// TERFactory.getInstance().logDebug(">>> EciesEncryptedKey.postDecodeField: " + fieldName + ", " + decodingHypothesis.getName() + ", " + rv.getType().getName()); } } // End of class EciesEncryptedKey \ No newline at end of file diff --git a/javasrc/codec/org/etsi/ttcn/codec/its/security/EncryptionParameters.java b/javasrc/codec/org/etsi/ttcn/codec/its/security/EncryptionParameters.java index 6efab9aa3db6c38a70f4ef680ac9833994696837..c2572bec060a3f7d78ed127ad49f16c888ed5ad5 100644 --- a/javasrc/codec/org/etsi/ttcn/codec/its/security/EncryptionParameters.java +++ b/javasrc/codec/org/etsi/ttcn/codec/its/security/EncryptionParameters.java @@ -26,7 +26,7 @@ public class EncryptionParameters extends Record { @Override protected void preDecodeField(String fieldName, CodecBuffer buf, Type decodingHypothesis, RecordValue rv) { -// System.out.println(">>> EncryptionParameters.preDecodeField: " + fieldName + ", " + decodingHypothesis.getName() + ", " + rv.getType().getName()); +// TERFactory.getInstance().logDebug(">>> EncryptionParameters.preDecodeField: " + fieldName + ", " + decodingHypothesis.getName() + ", " + rv.getType().getName()); if (fieldName.equals("symm_algorithm")) { byte type_ = buf.getBytes(0, 1)[0]; mainCodec.setHint("SymmetricAlgorithm", String.valueOf(type_)); diff --git a/javasrc/codec/org/etsi/ttcn/codec/its/security/EncryptionParametersContainer.java b/javasrc/codec/org/etsi/ttcn/codec/its/security/EncryptionParametersContainer.java index 4a80b6ef2bea585755730492134d595a085c4a71..f652531c669e9c5e870fd2e127f06c36553f835a 100644 --- a/javasrc/codec/org/etsi/ttcn/codec/its/security/EncryptionParametersContainer.java +++ b/javasrc/codec/org/etsi/ttcn/codec/its/security/EncryptionParametersContainer.java @@ -24,7 +24,7 @@ public class EncryptionParametersContainer extends Union { @Override protected void preEncode(CodecBuffer buf, UnionValue uv) { -// System.out.println(">>> EncryptionParametersContainer.preEncode: " + uv.getType().getName() + ", " + uv.getPresentVariantName()); +// TERFactory.getInstance().logDebug(">>> EncryptionParametersContainer.preEncode: " + uv.getType().getName() + ", " + uv.getPresentVariantName()); if (uv.getPresentVariantName().equals("params")) { buf.appendBytes(new byte[] { (byte)((OctetstringValue)(uv.getVariant(uv.getPresentVariantName()))).getLength() } ); diff --git a/javasrc/codec/org/etsi/ttcn/codec/its/security/GeographicRegion.java b/javasrc/codec/org/etsi/ttcn/codec/its/security/GeographicRegion.java index e0076375c6b85813e129dc9e6ea1e3c7ae48c6b0..1f8783928a9d5307c4c80e5f455cec414d04f17b 100644 --- a/javasrc/codec/org/etsi/ttcn/codec/its/security/GeographicRegion.java +++ b/javasrc/codec/org/etsi/ttcn/codec/its/security/GeographicRegion.java @@ -41,7 +41,7 @@ public class GeographicRegion extends Record { */ @Override protected void preDecodeField(String fieldName, CodecBuffer buf, Type decodingHypothesis, RecordValue rv) { -// System.out.println(">>> GeographicRegion.preDecodeField: " + fieldName + ", " + decodingHypothesis.getName() + ", " + rv.getType().getName()); +// TERFactory.getInstance().logDebug(">>> GeographicRegion.preDecodeField: " + fieldName + ", " + decodingHypothesis.getName() + ", " + rv.getType().getName()); if (fieldName.equals("region_type")) { byte type_ = buf.getBytes(0, 1)[0]; mainCodec.setPresenceHint("region", true); diff --git a/javasrc/codec/org/etsi/ttcn/codec/its/security/GnSecurityInd.java b/javasrc/codec/org/etsi/ttcn/codec/its/security/GnSecurityInd.java index 82639a90aefbb37fc579ae5b101fcbb422b7fcda..be3aa102554981d9df387cd5f1a7a6940415f45a 100644 --- a/javasrc/codec/org/etsi/ttcn/codec/its/security/GnSecurityInd.java +++ b/javasrc/codec/org/etsi/ttcn/codec/its/security/GnSecurityInd.java @@ -19,17 +19,17 @@ public class GnSecurityInd extends Record { @Override protected void preDecodeField(String fieldName, CodecBuffer buf, Type decodingHypothesis, RecordValue rv) { -// System.out.println(">>> GnSecurityInd.preDecodeField: " + fieldName + ", " + decodingHypothesis.getName() + ", " + rv.getType().getName()); +// TERFactory.getInstance().logDebug(">>> GnSecurityInd.preDecodeField: " + fieldName + ", " + decodingHypothesis.getName() + ", " + rv.getType().getName()); } @Override protected void preDecode(CodecBuffer buf, Type decodingHypothesis) { -// System.out.println(">>> GnSecurityInd.postDecode: " + decodingHypothesis.getName()); +// TERFactory.getInstance().logDebug(">>> GnSecurityInd.postDecode: " + decodingHypothesis.getName()); } @Override protected void postDecodeField(String fieldName, CodecBuffer buf, Type decodingHypothesis, RecordValue rv) { -// System.out.println(">>> GnSecurityInd.postDecodeField: " + fieldName + ", " + decodingHypothesis.getName() + ", " + rv.getType().getName()); +// TERFactory.getInstance().logDebug(">>> GnSecurityInd.postDecodeField: " + fieldName + ", " + decodingHypothesis.getName() + ", " + rv.getType().getName()); } } // End of class GnSecurityInd diff --git a/javasrc/codec/org/etsi/ttcn/codec/its/security/HashedId3.java b/javasrc/codec/org/etsi/ttcn/codec/its/security/HashedId3.java index fa114bb94cc5cb8585e8fbc87bf798aed361dc52..c6251a87a88cab6f17d64e7f443712efe5082d2f 100644 --- a/javasrc/codec/org/etsi/ttcn/codec/its/security/HashedId3.java +++ b/javasrc/codec/org/etsi/ttcn/codec/its/security/HashedId3.java @@ -23,7 +23,7 @@ public class HashedId3 extends Octetstring { @Override protected void preDecode(CodecBuffer buf, Type decodingHypothesis) { -// System.out.println(">>> HashedId3.preDecode: " + decodingHypothesis.getName()); +// TERFactory.getInstance().logDebug(">>> HashedId3.preDecode: " + decodingHypothesis.getName()); } } // End of class HashedId3 \ No newline at end of file diff --git a/javasrc/codec/org/etsi/ttcn/codec/its/security/HeaderField.java b/javasrc/codec/org/etsi/ttcn/codec/its/security/HeaderField.java index f054e794c353cbd3b8b5213e2ea0b099f1a53a03..ce1a604f8a3081f204b6cf7526a287c4d438fb46 100644 --- a/javasrc/codec/org/etsi/ttcn/codec/its/security/HeaderField.java +++ b/javasrc/codec/org/etsi/ttcn/codec/its/security/HeaderField.java @@ -50,7 +50,7 @@ public class HeaderField extends Record { */ @Override protected void preDecodeField(String fieldName, CodecBuffer buf, Type decodingHypothesis, RecordValue rv) { -// System.out.println(">>> HeaderField.preDecodeField: " + fieldName + ", " + decodingHypothesis.getName() + ", " + rv.getType().getName()); +// TERFactory.getInstance().logDebug(">>> HeaderField.preDecodeField: " + fieldName + ", " + decodingHypothesis.getName() + ", " + rv.getType().getName()); if (fieldName.equals("type_")) { byte type_ = buf.getBytes(0, 1)[0]; switch (type_) { diff --git a/javasrc/codec/org/etsi/ttcn/codec/its/security/HeaderFieldContainer.java b/javasrc/codec/org/etsi/ttcn/codec/its/security/HeaderFieldContainer.java index d52d4a54f1ccdcd41d6409c1f9446637870f8c32..71dd838b80f6659cce1cfa7e734362002d7e9c20 100644 --- a/javasrc/codec/org/etsi/ttcn/codec/its/security/HeaderFieldContainer.java +++ b/javasrc/codec/org/etsi/ttcn/codec/its/security/HeaderFieldContainer.java @@ -24,7 +24,7 @@ public class HeaderFieldContainer extends Union { @Override protected void preEncode(CodecBuffer buf, UnionValue uv) { -// System.out.println(">>> HeaderFieldContainer.preEncode: " + uv.getType().getName() + ", " + uv.getPresentVariantName()); +// TERFactory.getInstance().logDebug(">>> HeaderFieldContainer.preEncode: " + uv.getType().getName() + ", " + uv.getPresentVariantName()); if (uv.getPresentVariantName().equals("other_header")) { buf.appendBytes(new byte[] { (byte)((OctetstringValue)(uv.getVariant(uv.getPresentVariantName()))).getLength() } ); @@ -33,7 +33,7 @@ public class HeaderFieldContainer extends Union { @Override protected void preDecode(CodecBuffer buf, Type decodingHypothesis) { -// System.out.println(">>> HeaderFieldContainer.preDecode: " + decodingHypothesis.getName()); +// TERFactory.getInstance().logDebug(">>> HeaderFieldContainer.preDecode: " + decodingHypothesis.getName()); } } // End of class HeaderFieldContainer diff --git a/javasrc/codec/org/etsi/ttcn/codec/its/security/IntX.java b/javasrc/codec/org/etsi/ttcn/codec/its/security/IntX.java index 916a12ec42855e408c493ff01ad22fe0f51d86ff..3cded744bb57c3e326b6d87fd1e78a4b465cc967 100644 --- a/javasrc/codec/org/etsi/ttcn/codec/its/security/IntX.java +++ b/javasrc/codec/org/etsi/ttcn/codec/its/security/IntX.java @@ -31,7 +31,7 @@ public class IntX extends Integer { */ @Override public Value decode(CodecBuffer buf, Type decodingHypothesis) { -// System.out.println(">>> IntX.decode: " + decodingHypothesis.getName()); +// TERFactory.getInstance().logDebug(">>> IntX.decode: " + decodingHypothesis.getName()); // Read the first byte byte msb = buf.getBytes(0, 1)[0]; @@ -62,7 +62,7 @@ public class IntX extends Integer { */ @Override public CodecBuffer encode(Value value) { -// System.out.println(">>> IntX.encode: " + value.getType().getName()); +// TERFactory.getInstance().logDebug(">>> IntX.encode: " + value.getType().getName()); if (mainCodec.getTciCDRequired().getInteger((IntegerValue)value) < 128) { mainCodec.setHint("IntXLen", "8"); diff --git a/javasrc/codec/org/etsi/ttcn/codec/its/security/ItsAidSsp.java b/javasrc/codec/org/etsi/ttcn/codec/its/security/ItsAidSsp.java index 401d50072125a4f00d6439d89f1c286aeb33e88e..ba59bacffe592c903a3c1cfbeebd0a91babfe6ab 100644 --- a/javasrc/codec/org/etsi/ttcn/codec/its/security/ItsAidSsp.java +++ b/javasrc/codec/org/etsi/ttcn/codec/its/security/ItsAidSsp.java @@ -26,11 +26,11 @@ public class ItsAidSsp extends Record { // @Override protected void postEncodeField(String fieldName, CodecBuffer buf) { -// System.out.println(">>> ItsAidSsp.postEncodeField: " + fieldName); +// TERFactory.getInstance().logDebug(">>> ItsAidSsp.postEncodeField: " + fieldName); if (fieldName.equals("service_specific_permissions")) { CodecBuffer bufLen = new CodecBuffer(new byte[] { (byte)buf.getNbBytes() } ); -// System.out.println("ItsAidSsp.postEncodeField: bufLen = " + bufLen); +// TERFactory.getInstance().logDebug("ItsAidSsp.postEncodeField: bufLen = " + bufLen); bufLen.append(buf); buf.overwriteWith(bufLen); } @@ -38,20 +38,20 @@ public class ItsAidSsp extends Record { @Override protected void preDecodeField(String fieldName, CodecBuffer buf, Type decodingHypothesis, RecordValue rv) { -// System.out.println(">>> ItsAidSsp.preDecodeField: " + fieldName + ", " + decodingHypothesis.getName() + ", " + rv.getType().getName()); +// TERFactory.getInstance().logDebug(">>> ItsAidSsp.preDecodeField: " + fieldName + ", " + decodingHypothesis.getName() + ", " + rv.getType().getName()); if (fieldName.equals("service_specific_permissions")) { int len = buf.readBits(Byte.SIZE)[0]; // FIXME It depends of the len value : <= 127 or > 127 // FIXME Check for opaque length encoding //int len = ByteHelper.byteArrayToInt(buf.readBits(Integer.SIZE)); // field_sizeLen is 1 bytes -// System.out.println("ItsAidSsp.preDecodeField: len = " + len); +// TERFactory.getInstance().logDebug("ItsAidSsp.preDecodeField: len = " + len); mainCodec.setHint("Oct1to31Len", Integer.toString(len)); } } @Override protected void postDecodeField(String fieldName, CodecBuffer buf, Type decodingHypothesis, RecordValue rv) { -// System.out.println(">>> ItsAidSsp.postDecodeField: " + fieldName + ", " + decodingHypothesis.getName() + ", " + rv.getType().getName()); +// TERFactory.getInstance().logDebug(">>> ItsAidSsp.postDecodeField: " + fieldName + ", " + decodingHypothesis.getName() + ", " + rv.getType().getName()); if (fieldName.equals("its_aid")) { //int itsaid = ((IntegerValue)(rv.getField(fieldName))).getInt(); diff --git a/javasrc/codec/org/etsi/ttcn/codec/its/security/Plugin.java b/javasrc/codec/org/etsi/ttcn/codec/its/security/Plugin.java index fa7af9640532d3ba0c41375719049fddc4614f02..5c8749366327c73afeb5936fdab52a519f44ff8f 100644 --- a/javasrc/codec/org/etsi/ttcn/codec/its/security/Plugin.java +++ b/javasrc/codec/org/etsi/ttcn/codec/its/security/Plugin.java @@ -13,7 +13,6 @@ public class Plugin { public static void init() { CodecFactory cf = CodecFactory.getInstance(); - cf.setCodec(TciTypeClass.RECORD, "LibItsSecurity", "AcEnableSecurity", AcEnableSecurity.class); // Draft ETSI TS 103 097 V1.1.14 Clause 4.2 Specification of basic format elements cf.setCodec(TciTypeClass.RECORD, "LibItsSecurity", "PublicKey", PublicKey.class); cf.setCodec(TciTypeClass.RECORD, "LibItsSecurity", "EccPoint", EccPoint.class); diff --git a/javasrc/codec/org/etsi/ttcn/codec/its/security/PublicKey.java b/javasrc/codec/org/etsi/ttcn/codec/its/security/PublicKey.java index f3179567d0ad4f24024b16b58f87995f0ec85932..ce6b60c3129a952f1a28ddfd2311ae3b6da7564f 100644 --- a/javasrc/codec/org/etsi/ttcn/codec/its/security/PublicKey.java +++ b/javasrc/codec/org/etsi/ttcn/codec/its/security/PublicKey.java @@ -33,7 +33,7 @@ public class PublicKey extends Record { @Override protected void preDecodeField(String fieldName, CodecBuffer buf, Type decodingHypothesis, RecordValue rv) { -// System.out.println(">>> PublicKey.preDecodeField: " + fieldName + ", " + decodingHypothesis.getName() + ", " + rv.getType().getName()); +// TERFactory.getInstance().logDebug(">>> PublicKey.preDecodeField: " + fieldName + ", " + decodingHypothesis.getName() + ", " + rv.getType().getName()); if (fieldName.equals("algorithm")) { if (buf.getBytes(0, 1)[0] == c_ecdsa_nistp256_with_sha256) { diff --git a/javasrc/codec/org/etsi/ttcn/codec/its/security/RecipientInfo.java b/javasrc/codec/org/etsi/ttcn/codec/its/security/RecipientInfo.java index dfd1be930cf8cd5626694b236778e3d554c07681..8671dcfebbf62f994aecaac39eaf87c198533f56 100644 --- a/javasrc/codec/org/etsi/ttcn/codec/its/security/RecipientInfo.java +++ b/javasrc/codec/org/etsi/ttcn/codec/its/security/RecipientInfo.java @@ -27,7 +27,7 @@ public class RecipientInfo extends Record { } protected void preDecodeField(String fieldName, CodecBuffer buf, Type decodingHypothesis, RecordValue rv) { -// System.out.println(">>> RecipientInfo.preDecodeField: " + fieldName + ", " + decodingHypothesis.getName() + ", " + rv.getType().getName()); +// TERFactory.getInstance().logDebug(">>> RecipientInfo.preDecodeField: " + fieldName + ", " + decodingHypothesis.getName() + ", " + rv.getType().getName()); if (fieldName.equals("pk_encryption")) { if (buf.getBytes(0, 1)[0] == c_ecies_nistp2561) { @@ -39,10 +39,10 @@ public class RecipientInfo extends Record { } protected void postDecodeField(String fieldName, CodecBuffer buf, Type decodingHypothesis, RecordValue rv) { -// System.out.println(">>> RecipientInfo.postDecodeField: " + fieldName + ", " + decodingHypothesis.getName() + ", " + rv.getType().getName()); +// TERFactory.getInstance().logDebug(">>> RecipientInfo.postDecodeField: " + fieldName + ", " + decodingHypothesis.getName() + ", " + rv.getType().getName()); } protected void postEncodeField(String fieldName, CodecBuffer buf) { -// System.out.println(">>> RecipientInfo.postEncodeField: " + fieldName); +// TERFactory.getInstance().logDebug(">>> RecipientInfo.postEncodeField: " + fieldName); } } // End of class RecipientInfo \ No newline at end of file diff --git a/javasrc/codec/org/etsi/ttcn/codec/its/security/RecipientInfoContainer.java b/javasrc/codec/org/etsi/ttcn/codec/its/security/RecipientInfoContainer.java index 91eb620e8425d9c4cb016f631e68fa6dcd59e318..a7ec0d5bb8c348455eca62b2832f05441e60c31f 100644 --- a/javasrc/codec/org/etsi/ttcn/codec/its/security/RecipientInfoContainer.java +++ b/javasrc/codec/org/etsi/ttcn/codec/its/security/RecipientInfoContainer.java @@ -19,7 +19,7 @@ public class RecipientInfoContainer extends Union { @Override protected void preEncode(CodecBuffer buf, UnionValue uv) { -// System.out.println(">>> RecipientInfoContainer.preEncode: " + uv.getType().getName() + ", " + uv.getPresentVariantName()); +// TERFactory.getInstance().logDebug(">>> RecipientInfoContainer.preEncode: " + uv.getType().getName() + ", " + uv.getPresentVariantName()); if (uv.getPresentVariantName().equals("enc_key_other")) { // FIXME Check for opaque length encoding depending of the length value : <= 127 or > 127 diff --git a/javasrc/codec/org/etsi/ttcn/codec/its/security/RecordOf.java b/javasrc/codec/org/etsi/ttcn/codec/its/security/RecordOf.java index e3cbabb07c61a1e369afca8b6dc401882e0d64d2..18fd01fa1a7f6fb47d5bab806b5f38540129a14e 100644 --- a/javasrc/codec/org/etsi/ttcn/codec/its/security/RecordOf.java +++ b/javasrc/codec/org/etsi/ttcn/codec/its/security/RecordOf.java @@ -21,10 +21,10 @@ public class RecordOf extends org.etsi.ttcn.codec.generic.RecordOf { @Override public Value decode(CodecBuffer buf, Type decodingHypothesis) { -// System.out.println(">>> security.RecordOf.decode: " + decodingHypothesis.getName()); +// TERFactory.getInstance().logDebug(">>> security.RecordOf.decode: " + decodingHypothesis.getName()); int len = (int) TlsHelper.getInstance().tls2size(buf);// buf.readBytes(1)[0]; // Get number of items into the RecordOf -// System.out.println("security.RecordOf.decode: length=" + len); +// TERFactory.getInstance().logDebug("security.RecordOf.decode: length=" + len); if (len == 0) { RecordOfValue rov = (RecordOfValue)decodingHypothesis.newInstance(); rov.setLength(0); @@ -50,7 +50,7 @@ public class RecordOf extends org.etsi.ttcn.codec.generic.RecordOf { @Override public CodecBuffer encode(Value value) { -// System.out.println(">>> security.RecordOf.encode: " + value.getType().getName()); +// TERFactory.getInstance().logDebug(">>> security.RecordOf.encode: " + value.getType().getName()); CodecBuffer buf = super.encode(value); CodecBuffer bufLen = new CodecBuffer(TlsHelper.getInstance().size2tls(buf.getNbBytes())); diff --git a/javasrc/codec/org/etsi/ttcn/codec/its/security/SecPayload.java b/javasrc/codec/org/etsi/ttcn/codec/its/security/SecPayload.java index d7cd5a0d7c8fd46f152c29ab2df4cae265b6017f..b70242079d686e56fb0eb0d219dc3c492e34f773 100644 --- a/javasrc/codec/org/etsi/ttcn/codec/its/security/SecPayload.java +++ b/javasrc/codec/org/etsi/ttcn/codec/its/security/SecPayload.java @@ -26,7 +26,7 @@ public class SecPayload extends Record { @Override protected void postEncodeField(String fieldName, CodecBuffer buf) { -// System.out.println(">>> SecPayload.postEncodeField: " + fieldName); +// TERFactory.getInstance().logDebug(">>> SecPayload.postEncodeField: " + fieldName); if (fieldName.equals("data")) { // Store first the octetstring length as specified in Draft ETSI TS 103 097 V1.1.14 Clause 4.2 @@ -37,20 +37,20 @@ public class SecPayload extends Record { } protected void preDecodeField(String fieldName, CodecBuffer buf, Type decodingHypothesis, RecordValue rv) { -// System.out.println(">>> SecPayload.preDecodeField: " + fieldName + ", " + decodingHypothesis.getName() + ", " + rv.getType().getName()); +// TERFactory.getInstance().logDebug(">>> SecPayload.preDecodeField: " + fieldName + ", " + decodingHypothesis.getName() + ", " + rv.getType().getName()); if (fieldName.equals("type_")) { mainCodec.setPresenceHint("data", buf.getBytes(0, 1)[0] != c_signed_external); } else if (fieldName.equals("data") && (mainCodec.getPresenceHint("data") == true)) { int len = (int) TlsHelper.getInstance().tls2size(buf); -// System.out.println("SecPayload.preDecodeField: len = " + len); +// TERFactory.getInstance().logDebug("SecPayload.preDecodeField: len = " + len); mainCodec.setHint("octetstringLen", Integer.toString(len)); } } @Override protected void postDecodeField(String fieldName, CodecBuffer buf, Type decodingHypothesis, RecordValue rv) { -// System.out.println(">>> SecPayload.postDecodeField: " + fieldName + ", " + decodingHypothesis.getName() + ", " + rv.getType().getName()); +// TERFactory.getInstance().logDebug(">>> SecPayload.postDecodeField: " + fieldName + ", " + decodingHypothesis.getName() + ", " + rv.getType().getName()); } } // End of class SecPayload \ No newline at end of file diff --git a/javasrc/codec/org/etsi/ttcn/codec/its/security/SecuredMessage.java b/javasrc/codec/org/etsi/ttcn/codec/its/security/SecuredMessage.java index 06a9a9290b4e68bfb29cdf8ea3b481906d62790c..82103061abffbcfbb1bfc1391f4c651dbc416dc6 100644 --- a/javasrc/codec/org/etsi/ttcn/codec/its/security/SecuredMessage.java +++ b/javasrc/codec/org/etsi/ttcn/codec/its/security/SecuredMessage.java @@ -17,7 +17,7 @@ public class SecuredMessage extends Record { @Override protected void postEncodeField(String fieldName, CodecBuffer buf) { -// System.out.println(">>> SecuredMessage.postEncodeField: " + fieldName); +// TERFactory.getInstance().logDebug(">>> SecuredMessage.postEncodeField: " + fieldName); } diff --git a/javasrc/codec/org/etsi/ttcn/codec/its/security/ServiceSpecificPermissions.java b/javasrc/codec/org/etsi/ttcn/codec/its/security/ServiceSpecificPermissions.java index 5a87c51f9e9784719033153b140311f4817b3fba..c0c2f97c7c0b769eef6d96923d9a5d2770839a0e 100644 --- a/javasrc/codec/org/etsi/ttcn/codec/its/security/ServiceSpecificPermissions.java +++ b/javasrc/codec/org/etsi/ttcn/codec/its/security/ServiceSpecificPermissions.java @@ -25,13 +25,13 @@ public class ServiceSpecificPermissions extends Record { @Override protected void postEncodeField(String fieldName, CodecBuffer buf) { -// System.out.println(">>> ServiceSpecificPermissions.postEncodeField: " + fieldName); +// TERFactory.getInstance().logDebug(">>> ServiceSpecificPermissions.postEncodeField: " + fieldName); } @Override protected void preDecodeField(String fieldName, CodecBuffer buf, Type decodingHypothesis, RecordValue rv) { -// System.out.println(">>> ServiceSpecificPermissions.preDecodeField: " + fieldName + ", " + decodingHypothesis.getName() + ", " + rv.getType().getName()); +// TERFactory.getInstance().logDebug(">>> ServiceSpecificPermissions.preDecodeField: " + fieldName + ", " + decodingHypothesis.getName() + ", " + rv.getType().getName()); if (fieldName.equals("version")) { byte version = buf.getBytes(0, 1)[0]; @@ -52,7 +52,7 @@ public class ServiceSpecificPermissions extends Record { @Override protected void postDecodeField(String fieldName, CodecBuffer buf, Type decodingHypothesis, RecordValue rv) { -// System.out.println(">>> ServiceSpecificPermissions.postDecodeField: " + fieldName + ", " + decodingHypothesis.getName() + ", " + rv.getType().getName()); +// TERFactory.getInstance().logDebug(">>> ServiceSpecificPermissions.postDecodeField: " + fieldName + ", " + decodingHypothesis.getName() + ", " + rv.getType().getName()); } } // End of class ServiceSpecificPermissions diff --git a/javasrc/codec/org/etsi/ttcn/codec/its/security/Signature.java b/javasrc/codec/org/etsi/ttcn/codec/its/security/Signature.java index e996661d0a8408c0c88ea57ab86fb961a0042fa4..3db11f07fd69059d8b48d49b4908b89e021d54bd 100644 --- a/javasrc/codec/org/etsi/ttcn/codec/its/security/Signature.java +++ b/javasrc/codec/org/etsi/ttcn/codec/its/security/Signature.java @@ -33,7 +33,7 @@ public class Signature extends Record { @Override protected void preDecodeField(String fieldName, CodecBuffer buf, Type decodingHypothesis, RecordValue rv) { -// System.out.println(">>> Signature.preDecodeField: " + fieldName + ", " + decodingHypothesis.getName() + ", " + rv.getType().getName()); +// TERFactory.getInstance().logDebug(">>> Signature.preDecodeField: " + fieldName + ", " + decodingHypothesis.getName() + ", " + rv.getType().getName()); if (fieldName.equals("algorithm")) { if (buf.getBytes(0, 1)[0] == e_ecdsa_nistp256_with_sha256) { mainCodec.setHint("SignatureContainer", "ecdsa_signature"); diff --git a/javasrc/codec/org/etsi/ttcn/codec/its/security/SignerInfo.java b/javasrc/codec/org/etsi/ttcn/codec/its/security/SignerInfo.java index c1c46a66279379ec5c66a39d890280df19e89e32..11faba49d400dc40abbdfc1c35fdd4ac8edbe87d 100644 --- a/javasrc/codec/org/etsi/ttcn/codec/its/security/SignerInfo.java +++ b/javasrc/codec/org/etsi/ttcn/codec/its/security/SignerInfo.java @@ -46,7 +46,7 @@ public class SignerInfo extends Record { */ @Override protected void preDecodeField(String fieldName, CodecBuffer buf, Type decodingHypothesis, RecordValue rv) { -// System.out.println(">>> SignerInfo.preDecodeField: " + fieldName + ", " + decodingHypothesis.getName() + ", " + rv.getType().getName()); +// TERFactory.getInstance().logDebug(">>> SignerInfo.preDecodeField: " + fieldName + ", " + decodingHypothesis.getName() + ", " + rv.getType().getName()); if (fieldName.equals("type_")) { byte type_ = buf.getBytes(0, 1)[0]; diff --git a/javasrc/codec/org/etsi/ttcn/codec/its/security/SignerInfoContainer.java b/javasrc/codec/org/etsi/ttcn/codec/its/security/SignerInfoContainer.java index 81734622e25251f666591014b1e5caf71ff6ac61..d4aeadf8db174c0a88d504e46c35cd6f15375a40 100644 --- a/javasrc/codec/org/etsi/ttcn/codec/its/security/SignerInfoContainer.java +++ b/javasrc/codec/org/etsi/ttcn/codec/its/security/SignerInfoContainer.java @@ -19,7 +19,7 @@ public class SignerInfoContainer extends Union { @Override protected void preEncode(CodecBuffer buf, UnionValue uv) { -// System.out.println(">>> SignerInfoContainer.preEncode: " + uv.getType().getName() + ", " + uv.getPresentVariantName()); +// TERFactory.getInstance().logDebug(">>> SignerInfoContainer.preEncode: " + uv.getType().getName() + ", " + uv.getPresentVariantName()); if (uv.getPresentVariantName().equals("certificates")) { // TODO To be continued diff --git a/javasrc/codec/org/etsi/ttcn/codec/its/security/SspCAM.java b/javasrc/codec/org/etsi/ttcn/codec/its/security/SspCAM.java index a312d64070a0ee0ae78c90518534aa574076680f..7b2eeeb98fabe4e1c184599bff0f54328c00ff7f 100644 --- a/javasrc/codec/org/etsi/ttcn/codec/its/security/SspCAM.java +++ b/javasrc/codec/org/etsi/ttcn/codec/its/security/SspCAM.java @@ -20,19 +20,19 @@ public class SspCAM extends Record { @Override protected void postEncodeField(String fieldName, CodecBuffer buf) { -// System.out.println(">>> SspCAM.postEncodeField: " + fieldName); +// TERFactory.getInstance().logDebug(">>> SspCAM.postEncodeField: " + fieldName); } @Override protected void preDecodeField(String fieldName, CodecBuffer buf, Type decodingHypothesis, RecordValue rv) { -// System.out.println(">>> SspCAM.preDecodeField: " + fieldName + ", " + decodingHypothesis.getName() + ", " + rv.getType().getName()); +// TERFactory.getInstance().logDebug(">>> SspCAM.preDecodeField: " + fieldName + ", " + decodingHypothesis.getName() + ", " + rv.getType().getName()); } @Override protected void postDecodeField(String fieldName, CodecBuffer buf, Type decodingHypothesis, RecordValue rv) { -// System.out.println(">>> SspCAM.postDecodeField: " + fieldName + ", " + decodingHypothesis.getName() + ", " + rv.getType().getName()); +// TERFactory.getInstance().logDebug(">>> SspCAM.postDecodeField: " + fieldName + ", " + decodingHypothesis.getName() + ", " + rv.getType().getName()); } diff --git a/javasrc/codec/org/etsi/ttcn/codec/its/security/SspDENM.java b/javasrc/codec/org/etsi/ttcn/codec/its/security/SspDENM.java index bbb0c6af0da35414f4f292bcc27ee483e43d0a23..cc30e7e315d7f3611d5c9faed3a8ce92496e4dd0 100644 --- a/javasrc/codec/org/etsi/ttcn/codec/its/security/SspDENM.java +++ b/javasrc/codec/org/etsi/ttcn/codec/its/security/SspDENM.java @@ -20,19 +20,19 @@ public class SspDENM extends Record { @Override protected void postEncodeField(String fieldName, CodecBuffer buf) { -// System.out.println(">>> SspDENM.postEncodeField: " + fieldName); +// TERFactory.getInstance().logDebug(">>> SspDENM.postEncodeField: " + fieldName); } @Override protected void preDecodeField(String fieldName, CodecBuffer buf, Type decodingHypothesis, RecordValue rv) { -// System.out.println(">>> SspDENM.preDecodeField: " + fieldName + ", " + decodingHypothesis.getName() + ", " + rv.getType().getName()); +// TERFactory.getInstance().logDebug(">>> SspDENM.preDecodeField: " + fieldName + ", " + decodingHypothesis.getName() + ", " + rv.getType().getName()); } @Override protected void postDecodeField(String fieldName, CodecBuffer buf, Type decodingHypothesis, RecordValue rv) { -// System.out.println(">>> SspDENM.postDecodeField: " + fieldName + ", " + decodingHypothesis.getName() + ", " + rv.getType().getName()); +// TERFactory.getInstance().logDebug(">>> SspDENM.postDecodeField: " + fieldName + ", " + decodingHypothesis.getName() + ", " + rv.getType().getName()); } diff --git a/javasrc/codec/org/etsi/ttcn/codec/its/security/SubjectAssurance.java b/javasrc/codec/org/etsi/ttcn/codec/its/security/SubjectAssurance.java index 1cd77c3d9c6b4afb6c2a0aee024aa206b72c829a..b694b401287fca1417c4f3d4849f134facf0479b 100644 --- a/javasrc/codec/org/etsi/ttcn/codec/its/security/SubjectAssurance.java +++ b/javasrc/codec/org/etsi/ttcn/codec/its/security/SubjectAssurance.java @@ -25,17 +25,17 @@ public class SubjectAssurance extends Record { @Override protected void postEncodeField(String fieldName, CodecBuffer buf) { -// System.out.println(">>> SubjectAssurance.postEncodeField: " + fieldName); +// TERFactory.getInstance().logDebug(">>> SubjectAssurance.postEncodeField: " + fieldName); } @Override protected void preDecodeField(String fieldName, CodecBuffer buf, Type decodingHypothesis, RecordValue rv) { -// System.out.println(">>> SubjectAssurance.preDecodeField: " + fieldName + ", " + decodingHypothesis.getName() + ", " + rv.getType().getName()); +// TERFactory.getInstance().logDebug(">>> SubjectAssurance.preDecodeField: " + fieldName + ", " + decodingHypothesis.getName() + ", " + rv.getType().getName()); } @Override protected void postDecodeField(String fieldName, CodecBuffer buf, Type decodingHypothesis, RecordValue rv) { -// System.out.println(">>> SubjectAssurance.postDecodeField: " + fieldName + ", " + decodingHypothesis.getName() + ", " + rv.getType().getName()); +// TERFactory.getInstance().logDebug(">>> SubjectAssurance.postDecodeField: " + fieldName + ", " + decodingHypothesis.getName() + ", " + rv.getType().getName()); } } // End of class SubjectAssurance \ No newline at end of file diff --git a/javasrc/codec/org/etsi/ttcn/codec/its/security/SubjectAttribute.java b/javasrc/codec/org/etsi/ttcn/codec/its/security/SubjectAttribute.java index eddecdf2749f29d367a8de2a2800e8a97fdf9876..96ee2126e524a903789b1db868b1777626afe57e 100644 --- a/javasrc/codec/org/etsi/ttcn/codec/its/security/SubjectAttribute.java +++ b/javasrc/codec/org/etsi/ttcn/codec/its/security/SubjectAttribute.java @@ -31,12 +31,12 @@ public class SubjectAttribute extends Record { @Override protected void postEncodeField(String fieldName, CodecBuffer buf) { -// System.out.println(">>> SubjectAttribute.postEncodeField: " + fieldName); +// TERFactory.getInstance().logDebug(">>> SubjectAttribute.postEncodeField: " + fieldName); } @Override protected void preDecodeField(String fieldName, CodecBuffer buf, Type decodingHypothesis, RecordValue rv) { -// System.out.println(">>> SubjectAttribute.preDecodeField: " + fieldName + ", " + decodingHypothesis.getName() + ", " + rv.getType().getName()); +// TERFactory.getInstance().logDebug(">>> SubjectAttribute.preDecodeField: " + fieldName + ", " + decodingHypothesis.getName() + ", " + rv.getType().getName()); if (fieldName.equals("type_")) { byte type_ = buf.getBytes(0, 1)[0]; @@ -67,7 +67,7 @@ public class SubjectAttribute extends Record { @Override protected void postDecodeField(String fieldName, CodecBuffer buf, Type decodingHypothesis, RecordValue rv) { -// System.out.println(">>> SubjectAttribute.postDecodeField: " + fieldName + ", " + decodingHypothesis.getName() + ", " + rv.getType().getName()); +// TERFactory.getInstance().logDebug(">>> SubjectAttribute.postDecodeField: " + fieldName + ", " + decodingHypothesis.getName() + ", " + rv.getType().getName()); } } // End of class SubjectAttribute \ No newline at end of file diff --git a/javasrc/codec/org/etsi/ttcn/codec/its/security/SubjectAttributeContainer.java b/javasrc/codec/org/etsi/ttcn/codec/its/security/SubjectAttributeContainer.java index c6e2fa3e65ea84f86edfef84ba0b8e97d30dbdcb..fbc4acc7aa3afdd9374a68dbd4e016bd950e10f1 100644 --- a/javasrc/codec/org/etsi/ttcn/codec/its/security/SubjectAttributeContainer.java +++ b/javasrc/codec/org/etsi/ttcn/codec/its/security/SubjectAttributeContainer.java @@ -19,7 +19,7 @@ public class SubjectAttributeContainer extends Union { @Override protected void preEncode(CodecBuffer buf, UnionValue uv) { -// System.out.println(">>> SubjectAttributeContainer.preEncode: " + uv.getType().getName() + ", " + uv.getPresentVariantName()); +// TERFactory.getInstance().logDebug(">>> SubjectAttributeContainer.preEncode: " + uv.getType().getName() + ", " + uv.getPresentVariantName()); if (uv.getPresentVariantName().equals("other_attribute")) { buf.appendBytes(new byte[] { (byte)((OctetstringValue)(uv.getVariant(uv.getPresentVariantName()))).getLength() } ); diff --git a/javasrc/codec/org/etsi/ttcn/codec/its/security/SubjectInfo.java b/javasrc/codec/org/etsi/ttcn/codec/its/security/SubjectInfo.java index 30aad76a176f1de6d55c160771b5eae96be4f772..7f406806c4137723ec3890a44ae34720efffc3eb 100644 --- a/javasrc/codec/org/etsi/ttcn/codec/its/security/SubjectInfo.java +++ b/javasrc/codec/org/etsi/ttcn/codec/its/security/SubjectInfo.java @@ -24,7 +24,7 @@ public class SubjectInfo extends Record { @Override protected void postEncodeField(String fieldName, CodecBuffer buf) { -// System.out.println(">>> SubjectInfo.postEncodeField: " + fieldName); +// TERFactory.getInstance().logDebug(">>> SubjectInfo.postEncodeField: " + fieldName); if (fieldName.equals("subject_name")) { CodecBuffer bufLen = new CodecBuffer(new byte[] { (byte)buf.getNbBytes() } ); @@ -35,20 +35,20 @@ public class SubjectInfo extends Record { @Override protected void preDecodeField(String fieldName, CodecBuffer buf, Type decodingHypothesis, RecordValue rv) { -// System.out.println(">>> SubjectInfo.preDecodeField: " + fieldName + ", " + decodingHypothesis.getName() + ", " + rv.getType().getName()); +// TERFactory.getInstance().logDebug(">>> SubjectInfo.preDecodeField: " + fieldName + ", " + decodingHypothesis.getName() + ", " + rv.getType().getName()); if (fieldName.equals("subject_name")) { int len = buf.readBits(Byte.SIZE)[0]; // FIXME It depends of the len value : <= 127 or > 127 // FIXME Check for opaque length encoding //int len = ByteHelper.byteArrayToInt(buf.readBits(Integer.SIZE)); // field_sizeLen is 1 bytes -// System.out.println("SubjectInfo.preDecodeField: len = " + len); +// TERFactory.getInstance().logDebug("SubjectInfo.preDecodeField: len = " + len); mainCodec.setHint("Oct0to31Len", Integer.toString(len)); } } @Override protected void postDecodeField(String fieldName, CodecBuffer buf, Type decodingHypothesis, RecordValue rv) { -// System.out.println(">>> SubjectInfo.postDecodeField: " + fieldName + ", " + decodingHypothesis.getName() + ", " + rv.getType().getName()); +// TERFactory.getInstance().logDebug(">>> SubjectInfo.postDecodeField: " + fieldName + ", " + decodingHypothesis.getName() + ", " + rv.getType().getName()); } } // End of class SubjectInfo \ No newline at end of file diff --git a/javasrc/codec/org/etsi/ttcn/codec/its/security/ThreeDLocation.java b/javasrc/codec/org/etsi/ttcn/codec/its/security/ThreeDLocation.java index e77aafa3b7ac7a1ad30dcd8cc72946e323dbe84e..f048953c03c99efda408705ecd15c93b29c5ecd1 100644 --- a/javasrc/codec/org/etsi/ttcn/codec/its/security/ThreeDLocation.java +++ b/javasrc/codec/org/etsi/ttcn/codec/its/security/ThreeDLocation.java @@ -25,7 +25,7 @@ public class ThreeDLocation extends Record { @Override protected void preDecodeField(String fieldName, CodecBuffer buf, Type decodingHypothesis, RecordValue rv) { -// System.out.println(">>> ThreeDLocation.preDecodeField: " + fieldName + ", " + decodingHypothesis.getName() + ", " + rv.getType().getName()); +// TERFactory.getInstance().logDebug(">>> ThreeDLocation.preDecodeField: " + fieldName + ", " + decodingHypothesis.getName() + ", " + rv.getType().getName()); if (fieldName.equals("elevation")) { mainCodec.setHint("Oct2Len", "2"); } diff --git a/javasrc/codec/org/etsi/ttcn/codec/its/security/ToBeSignedCertificate.java b/javasrc/codec/org/etsi/ttcn/codec/its/security/ToBeSignedCertificate.java index 4a2f3eb2e4ffc9fd509a92a62b5f749c0995e31f..e797b4d9565f93da2fd1a726da7a90559a3b42b0 100644 --- a/javasrc/codec/org/etsi/ttcn/codec/its/security/ToBeSignedCertificate.java +++ b/javasrc/codec/org/etsi/ttcn/codec/its/security/ToBeSignedCertificate.java @@ -28,17 +28,17 @@ public class ToBeSignedCertificate extends Record { @Override protected void postEncodeField(String fieldName, CodecBuffer buf) { -// System.out.println(">>> ToBeSignedCertificate.postEncodeField: " + fieldName); +// TERFactory.getInstance().logDebug(">>> ToBeSignedCertificate.postEncodeField: " + fieldName); } @Override protected void preDecodeField(String fieldName, CodecBuffer buf, Type decodingHypothesis, RecordValue rv) { -// System.out.println(">>> ToBeSignedCertificate.preDecodeField: " + fieldName + ", " + decodingHypothesis.getName() + ", " + rv.getType().getName()); +// TERFactory.getInstance().logDebug(">>> ToBeSignedCertificate.preDecodeField: " + fieldName + ", " + decodingHypothesis.getName() + ", " + rv.getType().getName()); } @Override protected void postDecodeField(String fieldName, CodecBuffer buf, Type decodingHypothesis, RecordValue rv) { -// System.out.println(">>> ToBeSignedCertificate.postDecodeField: " + fieldName + ", " + decodingHypothesis.getName() + ", " + rv.getType().getName()); +// TERFactory.getInstance().logDebug(">>> ToBeSignedCertificate.postDecodeField: " + fieldName + ", " + decodingHypothesis.getName() + ", " + rv.getType().getName()); } } // End of class ToBeSignedCertificate diff --git a/javasrc/codec/org/etsi/ttcn/codec/its/security/TrailerField.java b/javasrc/codec/org/etsi/ttcn/codec/its/security/TrailerField.java index 33227d3262ccb6f4b24371aa90c5b1f0878b1d6a..2deed5267be0ff9c258ab14737f9f4d0f3f44b1d 100644 --- a/javasrc/codec/org/etsi/ttcn/codec/its/security/TrailerField.java +++ b/javasrc/codec/org/etsi/ttcn/codec/its/security/TrailerField.java @@ -41,7 +41,7 @@ public class TrailerField extends Record { */ @Override protected void preDecodeField(String fieldName, CodecBuffer buf, Type decodingHypothesis, RecordValue rv) { -// System.out.println(">>> TrailerField.preDecodeField: " + fieldName + ", " + decodingHypothesis.getName() + ", " + rv.getType().getName()); +// TERFactory.getInstance().logDebug(">>> TrailerField.preDecodeField: " + fieldName + ", " + decodingHypothesis.getName() + ", " + rv.getType().getName()); if (fieldName.equals("type_")) { byte type_ = buf.getBytes(0, 1)[0]; diff --git a/javasrc/codec/org/etsi/ttcn/codec/its/security/TrailerFieldContainer.java b/javasrc/codec/org/etsi/ttcn/codec/its/security/TrailerFieldContainer.java index e783c8066f4378319ba6d7d54582280174e42f4d..9a634947f19ca6708e0f4f1027a6d6873a1a80e0 100644 --- a/javasrc/codec/org/etsi/ttcn/codec/its/security/TrailerFieldContainer.java +++ b/javasrc/codec/org/etsi/ttcn/codec/its/security/TrailerFieldContainer.java @@ -19,7 +19,7 @@ public class TrailerFieldContainer extends Union { @Override protected void preEncode(CodecBuffer buf, UnionValue uv) { -// System.out.println(">>> TrailerFieldContainer.preEncode: " + uv.getType().getName() + ", " + uv.getPresentVariantName()); +// TERFactory.getInstance().logDebug(">>> TrailerFieldContainer.preEncode: " + uv.getType().getName() + ", " + uv.getPresentVariantName()); if (uv.getPresentVariantName().equals("security_field")) { // FIXME Check for opaque length encoding depending of the length value : <= 127 or > 127 diff --git a/javasrc/codec/org/etsi/ttcn/codec/its/security/ValidityRestriction.java b/javasrc/codec/org/etsi/ttcn/codec/its/security/ValidityRestriction.java index 56ce8161af940a92bc4b9190575662e0165aee10..87b96756232af253b0e26e7e3fd0a7863bdeac38 100644 --- a/javasrc/codec/org/etsi/ttcn/codec/its/security/ValidityRestriction.java +++ b/javasrc/codec/org/etsi/ttcn/codec/its/security/ValidityRestriction.java @@ -29,12 +29,12 @@ public class ValidityRestriction extends Record { @Override protected void postEncodeField(String fieldName, CodecBuffer buf) { -// System.out.println(">>> ValidityRestriction.postEncodeField: " + fieldName); +// TERFactory.getInstance().logDebug(">>> ValidityRestriction.postEncodeField: " + fieldName); } @Override protected void preDecodeField(String fieldName, CodecBuffer buf, Type decodingHypothesis, RecordValue rv) { -// System.out.println(">>> ValidityRestriction.preDecodeField: " + fieldName + ", " + decodingHypothesis.getName() + ", " + rv.getType().getName()); +// TERFactory.getInstance().logDebug(">>> ValidityRestriction.preDecodeField: " + fieldName + ", " + decodingHypothesis.getName() + ", " + rv.getType().getName()); if (fieldName.equals("type_")) { byte type_ = buf.getBytes(0, 1)[0]; @@ -60,7 +60,7 @@ public class ValidityRestriction extends Record { @Override protected void postDecodeField(String fieldName, CodecBuffer buf, Type decodingHypothesis, RecordValue rv) { -// System.out.println(">>> ValidityRestriction.postDecodeField: " + fieldName + ", " + decodingHypothesis.getName() + ", " + rv.getType().getName()); +// TERFactory.getInstance().logDebug(">>> ValidityRestriction.postDecodeField: " + fieldName + ", " + decodingHypothesis.getName() + ", " + rv.getType().getName()); } } // End of class ValidityRestriction \ No newline at end of file diff --git a/javasrc/codec/org/etsi/ttcn/codec/its/security/ValidityRestrictionContainer.java b/javasrc/codec/org/etsi/ttcn/codec/its/security/ValidityRestrictionContainer.java index c256de4f2db37f39c5782680493a91fe20317bfa..7330c9df09de73065646f257495a74ae4972a053 100644 --- a/javasrc/codec/org/etsi/ttcn/codec/its/security/ValidityRestrictionContainer.java +++ b/javasrc/codec/org/etsi/ttcn/codec/its/security/ValidityRestrictionContainer.java @@ -19,7 +19,7 @@ public class ValidityRestrictionContainer extends Union { @Override protected void preEncode(CodecBuffer buf, UnionValue uv) { -// System.out.println(">>> ValidityRestrictionContainer.preEncode: " + uv.getType().getName() + ", " + uv.getPresentVariantName()); +// TERFactory.getInstance().logDebug(">>> ValidityRestrictionContainer.preEncode: " + uv.getType().getName() + ", " + uv.getPresentVariantName()); if (uv.getPresentVariantName().equals("data")) { buf.appendBytes(new byte[] { (byte)((OctetstringValue)(uv.getVariant(uv.getPresentVariantName()))).getLength() } ); diff --git a/javasrc/codec/org/etsi/ttcn/codec/its/uppertester/Plugin.java b/javasrc/codec/org/etsi/ttcn/codec/its/uppertester/Plugin.java index c42d1acd421e43544068e8b779b528801dc06a10..dadc10859defd726c04cd90a99ece5b046c38a92 100644 --- a/javasrc/codec/org/etsi/ttcn/codec/its/uppertester/Plugin.java +++ b/javasrc/codec/org/etsi/ttcn/codec/its/uppertester/Plugin.java @@ -12,26 +12,41 @@ import org.etsi.ttcn.codec.generic.Record; public class Plugin { public static void init() { - + // Basics CodecFactory cf = CodecFactory.getInstance(); cf.setCodec(TciTypeClass.RECORD, "UpperTester", "", UtRecord.class); cf.setCodec(TciTypeClass.UNION, "UpperTester", "", UtUnion.class); cf.setCodec(TciTypeClass.BOOLEAN, "UpperTester", "", UtBoolean.class); + // Gn + cf.setCodec(TciTypeClass.RECORD, "UpperTester", "UtGnEventInd", UtEventInd.class); + cf.setCodec(TciTypeClass.RECORD, "UpperTester", "Payload", UtPayload.class); + // Common + cf.setCodec(TciTypeClass.RECORD, "UpperTester", "UtChangePosition", UtChangePosition.class); + // DENM cf.setCodec(TciTypeClass.RECORD, "UpperTester", "SituationContainer", Record.class); cf.setCodec(TciTypeClass.RECORD, "UpperTester", "UtDenmTrigger", UtDenmTrigger.class); - cf.setCodec(TciTypeClass.RECORD, "UpperTester", "UtDenmUpdate", UtDenmUpdate.class); - cf.setCodec(TciTypeClass.RECORD, "UpperTester", "Payload", UtPayload.class); - cf.setCodec(TciTypeClass.RECORD, "UpperTester", "UtCamEventInd", UtEventInd.class); + cf.setCodec(TciTypeClass.RECORD, "UpperTester", "UtDenmUpdate", UtDenmUpdate.class); cf.setCodec(TciTypeClass.RECORD, "UpperTester", "UtDenmEventInd", UtEventInd.class); - cf.setCodec(TciTypeClass.RECORD, "UpperTester", "UtGnEventInd", UtEventInd.class); - cf.setCodec(TciTypeClass.RECORD, "UpperTester", "UtMapEventInd", UtEventInd.class); - cf.setCodec(TciTypeClass.RECORD, "UpperTester", "UtSpatEventInd", UtEventInd.class); cf.setCodec(TciTypeClass.RECORD, "UpperTester", "UtDenmTermination", UtDenmTermination.class); cf.setCodec(TciTypeClass.RECORD, "UpperTester", "UtDenmTriggerResult", UtDenmTermination.class); - cf.setCodec(TciTypeClass.RECORD, "UpperTester", "UtDenmUpdateResult", UtDenmTermination.class); - cf.setCodec(TciTypeClass.RECORD, "UpperTester", "UtChangePosition", UtChangePosition.class); - cf.setCodec(TciTypeClass.RECORD, "UpperTester", "UtMapSpatTrigger", UtMapSpatTrigger.class); - cf.setCodec(TciTypeClass.RECORD, "UpperTester", "UtMapSpatTriggerResult", UtMapSpatTriggerResult.class); + cf.setCodec(TciTypeClass.RECORD, "UpperTester", "UtDenmUpdateResult", UtDenmTermination.class); + // CAM cf.setCodec(TciTypeClass.UNION, "UpperTester", "UtCamTrigger", UtCamTrigger.class); + cf.setCodec(TciTypeClass.RECORD, "UpperTester", "UtCamEventInd", UtEventInd.class); + // MAPEM/SPATEM + cf.setCodec(TciTypeClass.RECORD, "UpperTester", "UtMapemEventInd", UtEventInd.class); + cf.setCodec(TciTypeClass.RECORD, "UpperTester", "UtSpatemEventInd", UtEventInd.class); + cf.setCodec(TciTypeClass.RECORD, "UpperTester", "UtMapemSpatemTrigger", UtMapemSpatemTrigger.class); + cf.setCodec(TciTypeClass.RECORD, "UpperTester", "UtMapemSpatemTriggerResult", UtMapemSpatemTriggerResult.class); + // IVIM + cf.setCodec(TciTypeClass.RECORD, "UpperTester", "UtIvimTrigger", UtIvimTrigger.class); + cf.setCodec(TciTypeClass.RECORD, "UpperTester", "UtIvimUpdate", UtIvimUpdate.class); + cf.setCodec(TciTypeClass.RECORD, "UpperTester", "UtIvimEventInd", UtEventInd.class); + cf.setCodec(TciTypeClass.RECORD, "UpperTester", "UtIvimTermination", UtIvimTermination.class); + cf.setCodec(TciTypeClass.RECORD, "UpperTester", "UtIvimTriggerResult", UtIvimTermination.class); + cf.setCodec(TciTypeClass.RECORD, "UpperTester", "UtIvimUpdateResult", UtIvimTermination.class); + // SREM/SSEM + // TODO + } } \ No newline at end of file diff --git a/javasrc/codec/org/etsi/ttcn/codec/its/uppertester/UtEventInd.java b/javasrc/codec/org/etsi/ttcn/codec/its/uppertester/UtEventInd.java index a3d8776dc5e7cb8ff811c7de1258dd2497697b78..03143bec4eabc8fa693f2f91dc881483b12daac4 100644 --- a/javasrc/codec/org/etsi/ttcn/codec/its/uppertester/UtEventInd.java +++ b/javasrc/codec/org/etsi/ttcn/codec/its/uppertester/UtEventInd.java @@ -15,7 +15,7 @@ public class UtEventInd extends UtRecord { @Override protected void preDecodeField(String fieldName, CodecBuffer buf, Type decodingHypothesis, RecordValue rv) { int length = ByteHelper.byteArrayToInt(buf.readBytes(Short.SIZE / Byte.SIZE)); - // TODO Check payload length + mainCodec.setHint(decodingHypothesis.getName() + "Len", Integer.toString(length)); } } diff --git a/javasrc/codec/org/etsi/ttcn/codec/its/uppertester/UtIvimTermination.java b/javasrc/codec/org/etsi/ttcn/codec/its/uppertester/UtIvimTermination.java new file mode 100644 index 0000000000000000000000000000000000000000..a2c86d1cef1e502b5cf6940cf9fcb469cc595703 --- /dev/null +++ b/javasrc/codec/org/etsi/ttcn/codec/its/uppertester/UtIvimTermination.java @@ -0,0 +1,12 @@ +package org.etsi.ttcn.codec.its.uppertester; + +import org.etsi.ttcn.codec.MainCodec; + +public class UtIvimTermination extends UtRecord { + + public UtIvimTermination(MainCodec mainCodec) { + super(mainCodec); + // TODO Auto-generated constructor stub + } + +} diff --git a/javasrc/codec/org/etsi/ttcn/codec/its/uppertester/UtIvimTrigger.java b/javasrc/codec/org/etsi/ttcn/codec/its/uppertester/UtIvimTrigger.java new file mode 100644 index 0000000000000000000000000000000000000000..cfc5df0f71afa1740686068b6bc4a709a266faf9 --- /dev/null +++ b/javasrc/codec/org/etsi/ttcn/codec/its/uppertester/UtIvimTrigger.java @@ -0,0 +1,12 @@ +package org.etsi.ttcn.codec.its.uppertester; + +import org.etsi.ttcn.codec.MainCodec; + +public class UtIvimTrigger extends UtRecord { + + public UtIvimTrigger(MainCodec mainCodec) { + super(mainCodec); + // TODO Auto-generated constructor stub + } + +} diff --git a/javasrc/codec/org/etsi/ttcn/codec/its/uppertester/UtIvimUpdate.java b/javasrc/codec/org/etsi/ttcn/codec/its/uppertester/UtIvimUpdate.java new file mode 100644 index 0000000000000000000000000000000000000000..ba63427d1dd4863d597297552518699ed84ff897 --- /dev/null +++ b/javasrc/codec/org/etsi/ttcn/codec/its/uppertester/UtIvimUpdate.java @@ -0,0 +1,12 @@ +package org.etsi.ttcn.codec.its.uppertester; + +import org.etsi.ttcn.codec.MainCodec; + +public class UtIvimUpdate extends UtRecord { + + public UtIvimUpdate(MainCodec mainCodec) { + super(mainCodec); + // TODO Auto-generated constructor stub + } + +} diff --git a/javasrc/codec/org/etsi/ttcn/codec/its/uppertester/UtMapSpatTriggerResult.java b/javasrc/codec/org/etsi/ttcn/codec/its/uppertester/UtMapSpatTriggerResult.java index cb228f2c9c1049acb86554b363e70a86374d48d2..5764202e68e7cc7aedaae3346c05ec854162ec46 100644 --- a/javasrc/codec/org/etsi/ttcn/codec/its/uppertester/UtMapSpatTriggerResult.java +++ b/javasrc/codec/org/etsi/ttcn/codec/its/uppertester/UtMapSpatTriggerResult.java @@ -1,16 +1,16 @@ -package org.etsi.ttcn.codec.its.uppertester; - -import org.etsi.ttcn.codec.MainCodec; - -public class UtMapSpatTriggerResult extends UtRecord { - - public UtMapSpatTriggerResult(MainCodec mainCodec) { - super(mainCodec); - setLengths(); - } - - private void setLengths() { - mainCodec.setHint("MsgCountLen", "8"); - } - -} // End of class UtMapSpatTriggerResult +//package org.etsi.ttcn.codec.its.uppertester; +// +//import org.etsi.ttcn.codec.MainCodec; +// +//public class UtMapSpatTriggerResult extends UtRecord { +// +// public UtMapSpatTriggerResult(MainCodec mainCodec) { +// super(mainCodec); +// setLengths(); +// } +// +// private void setLengths() { +// mainCodec.setHint("MsgCountLen", "8"); +// } +// +//} // End of class UtMapSpatTriggerResult diff --git a/javasrc/codec/org/etsi/ttcn/codec/its/uppertester/UtMapemSpatemTrigger.java b/javasrc/codec/org/etsi/ttcn/codec/its/uppertester/UtMapemSpatemTrigger.java new file mode 100644 index 0000000000000000000000000000000000000000..03fba6afd8855c44b93922c79de55821687ca4a3 --- /dev/null +++ b/javasrc/codec/org/etsi/ttcn/codec/its/uppertester/UtMapemSpatemTrigger.java @@ -0,0 +1,16 @@ +package org.etsi.ttcn.codec.its.uppertester; + +import org.etsi.ttcn.codec.MainCodec; + +public class UtMapemSpatemTrigger extends UtRecord { + + public UtMapemSpatemTrigger(MainCodec mainCodec) { + super(mainCodec); + setLengths(); + } + + private void setLengths() { + mainCodec.setHint("EventLen", "8"); + } + +} // End of class UtMapSpatTrigger diff --git a/javasrc/codec/org/etsi/ttcn/codec/its/uppertester/UtMapemSpatemTriggerResult.java b/javasrc/codec/org/etsi/ttcn/codec/its/uppertester/UtMapemSpatemTriggerResult.java new file mode 100644 index 0000000000000000000000000000000000000000..3a741460e9f62a37449adcea2b960cb4a6b4a167 --- /dev/null +++ b/javasrc/codec/org/etsi/ttcn/codec/its/uppertester/UtMapemSpatemTriggerResult.java @@ -0,0 +1,12 @@ +package org.etsi.ttcn.codec.its.uppertester; + +import org.etsi.ttcn.codec.MainCodec; + +public class UtMapemSpatemTriggerResult extends UtRecord { + + public UtMapemSpatemTriggerResult(MainCodec mainCodec) { + super(mainCodec); + // TODO Auto-generated constructor stub + } + +} diff --git a/javasrc/codec/org/etsi/ttcn/codec/its/v2g/ExiHelper.java b/javasrc/codec/org/etsi/ttcn/codec/its/v2g/ExiHelper.java index e962088fd1226e4cb36264a8092b276af7cb9b1a..4bfaebeba11f5c5d16c5bace8977ac4b456013ea 100644 --- a/javasrc/codec/org/etsi/ttcn/codec/its/v2g/ExiHelper.java +++ b/javasrc/codec/org/etsi/ttcn/codec/its/v2g/ExiHelper.java @@ -16,6 +16,7 @@ import javax.xml.transform.TransformerFactory; import javax.xml.transform.sax.SAXSource; import javax.xml.transform.stream.StreamResult; +import org.etsi.adapter.TERFactory; import org.etsi.common.ByteHelper; import org.xml.sax.InputSource; import org.xml.sax.XMLReader; @@ -35,165 +36,165 @@ import com.siemens.ct.exi.helpers.DefaultEXIFactory; public class ExiHelper { - private static String schemaId = "v2g"; - private static boolean locked = false; - protected static String handshakeSchemaName = "ttcn_PowerUp\\xsd\\V2G_CI_AppProtocol.xsd"; - protected static String v2gSchemaName = "ttcn_PowerUp\\xsd\\V2G_CI_MsgBody.xsd"; + private static String schemaId = "v2g"; + private static boolean locked = false; + protected static String handshakeSchemaName = "ttcn_PowerUp\\xsd\\V2G_CI_AppProtocol.xsd"; + protected static String v2gSchemaName = "ttcn_PowerUp\\xsd\\V2G_CI_MsgBody.xsd"; - public static void setSchemaId(String schemaName) { - while(locked) { - try { + public static void setSchemaId(String schemaName) { + while(locked) { + try { Thread.sleep(100); } catch (InterruptedException e) { e.printStackTrace(); } - } - System.err.println("Changing Schema ID:" +schemaName); - schemaId = schemaName; - } + } + TERFactory.getInstance().logError("Changing Schema ID:" +schemaName); + schemaId = schemaName; + } - public static void lockSchemaId() { - locked = true; - } + public static void lockSchemaId() { + locked = true; + } - private static void unlockSchemaId() { - locked = false; - } - - public static byte[] encode(byte[] xmlInput) { - InputStream xmlIn = new ByteArrayInputStream(xmlInput); - ByteArrayOutputStream exiOut = new ByteArrayOutputStream(); - - //ByteHelper.dump("encode EXI", xmlInput); - System.out.println("encode XML:" + new String(xmlInput)); + private static void unlockSchemaId() { + locked = false; + } + + public static byte[] encode(byte[] xmlInput) { + InputStream xmlIn = new ByteArrayInputStream(xmlInput); + ByteArrayOutputStream exiOut = new ByteArrayOutputStream(); + + //ByteHelper.dump("encode EXI", xmlInput); + TERFactory.getInstance().logDebug("encode XML:" + new String(xmlInput)); + + EXIFactory exiFactory = createEXIFactory(); + try { + EXIResult exiResult = new EXIResult(exiFactory); + exiResult.setOutputStream(exiOut); + XMLReader xmlReader = XMLReaderFactory.createXMLReader(); + xmlReader.setContentHandler(exiResult.getHandler()); + xmlReader.setProperty("http://xml.org/sax/properties/lexical-handler", + exiResult.getLexicalHandler()); + xmlReader.setProperty("http://xml.org/sax/properties/declaration-handler", + exiResult.getLexicalHandler()); + xmlReader.parse(new InputSource(xmlIn)); + } catch (Exception e) { + TERFactory.getInstance().logError("ERROR: Unable to EXI-encode message: " + e.getMessage()); + e.printStackTrace(); + return xmlInput; + } + + ByteHelper.dump("encode EXI", exiOut.toByteArray()); - EXIFactory exiFactory = createEXIFactory(); - try { - EXIResult exiResult = new EXIResult(exiFactory); - exiResult.setOutputStream(exiOut); - XMLReader xmlReader = XMLReaderFactory.createXMLReader(); - xmlReader.setContentHandler(exiResult.getHandler()); - xmlReader.setProperty("http://xml.org/sax/properties/lexical-handler", - exiResult.getLexicalHandler()); - xmlReader.setProperty("http://xml.org/sax/properties/declaration-handler", - exiResult.getLexicalHandler()); - xmlReader.parse(new InputSource(xmlIn)); - } catch (Exception e) { - System.err.println("ERROR: Unable to EXI-encode message: " + e.getMessage()); - e.printStackTrace(); - return xmlInput; - } - - ByteHelper.dump("encode EXI", exiOut.toByteArray()); - - return exiOut.toByteArray(); - } + return exiOut.toByteArray(); + } - public static byte[] decode(byte[] exiInput) { - InputStream exiIn = new ByteArrayInputStream(exiInput); - ByteArrayOutputStream xmlOut = new ByteArrayOutputStream(); + public static byte[] decode(byte[] exiInput) { + InputStream exiIn = new ByteArrayInputStream(exiInput); + ByteArrayOutputStream xmlOut = new ByteArrayOutputStream(); - ByteHelper.dump("decode EXI", exiInput); - - EXIFactory exiFactory = createEXIFactory(); - try { - EXISource exiSource = new EXISource(exiFactory); - XMLReader xmlReader = exiSource.getXMLReader(); - TransformerFactory transformerFactory = TransformerFactory.newInstance(); - Transformer transformer = transformerFactory.newTransformer(); - SAXSource saxSource = new SAXSource(new InputSource(exiIn)); - saxSource.setXMLReader(xmlReader); - transformer.transform(saxSource, new StreamResult(xmlOut)); - } catch (Exception e) { - System.err.println("ERROR: Unable to EXI-decode message: " + e.getMessage()); - e.printStackTrace(); - unlockSchemaId(); - return exiInput; - } - - //ByteHelper.dump("decode XML:", xmlOut.toByteArray()); - try { - System.out.println("decode XML:" + xmlOut.toString("UTF-8")); + ByteHelper.dump("decode EXI", exiInput); + + EXIFactory exiFactory = createEXIFactory(); + try { + EXISource exiSource = new EXISource(exiFactory); + XMLReader xmlReader = exiSource.getXMLReader(); + TransformerFactory transformerFactory = TransformerFactory.newInstance(); + Transformer transformer = transformerFactory.newTransformer(); + SAXSource saxSource = new SAXSource(new InputSource(exiIn)); + saxSource.setXMLReader(xmlReader); + transformer.transform(saxSource, new StreamResult(xmlOut)); + } catch (Exception e) { + TERFactory.getInstance().logError("ERROR: Unable to EXI-decode message: " + e.getMessage()); + e.printStackTrace(); + unlockSchemaId(); + return exiInput; + } + + //ByteHelper.dump("decode XML:", xmlOut.toByteArray()); + try { + TERFactory.getInstance().logDebug("decode XML:" + xmlOut.toString("UTF-8")); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } - unlockSchemaId(); - return xmlOut.toByteArray(); - } - - private static EXIFactory createEXIFactory() { + unlockSchemaId(); + return xmlOut.toByteArray(); + } + + private static EXIFactory createEXIFactory() { - EXIFactory exiFactory = DefaultEXIFactory.newInstance(); - - try { - // Encoding options - EncodingOptions encodingOptions = EncodingOptions.createDefault(); - exiFactory.setEncodingOptions(encodingOptions); - - // Fidelity options - FidelityOptions fidelityOptions = FidelityOptions.createDefault(); - fidelityOptions.setFidelity(FidelityOptions.FEATURE_STRICT, false); - fidelityOptions.setFidelity(FidelityOptions.FEATURE_PREFIX, false); - fidelityOptions.setFidelity(FidelityOptions.FEATURE_DTD, false); - fidelityOptions.setFidelity(FidelityOptions.FEATURE_LEXICAL_VALUE, false); - fidelityOptions.setFidelity(FidelityOptions.FEATURE_COMMENT, false); - fidelityOptions.setFidelity(FidelityOptions.FEATURE_PI, false); - fidelityOptions.setFidelity(FidelityOptions.FEATURE_SC, false); - exiFactory.setFidelityOptions(fidelityOptions); - } - catch(Exception e) { - System.err.println("ERROR: Unable to setup EXIFactory: " + e.getMessage()); - e.printStackTrace(); - } - - // Coding mode - exiFactory.setCodingMode(CodingMode.BIT_PACKED); - - // Value partition capacity - exiFactory.setValuePartitionCapacity(0); - - // SCHEMA OPTIONS - loadGrammar(exiFactory); + EXIFactory exiFactory = DefaultEXIFactory.newInstance(); + + try { + // Encoding options + EncodingOptions encodingOptions = EncodingOptions.createDefault(); + exiFactory.setEncodingOptions(encodingOptions); + + // Fidelity options + FidelityOptions fidelityOptions = FidelityOptions.createDefault(); + fidelityOptions.setFidelity(FidelityOptions.FEATURE_STRICT, false); + fidelityOptions.setFidelity(FidelityOptions.FEATURE_PREFIX, false); + fidelityOptions.setFidelity(FidelityOptions.FEATURE_DTD, false); + fidelityOptions.setFidelity(FidelityOptions.FEATURE_LEXICAL_VALUE, false); + fidelityOptions.setFidelity(FidelityOptions.FEATURE_COMMENT, false); + fidelityOptions.setFidelity(FidelityOptions.FEATURE_PI, false); + fidelityOptions.setFidelity(FidelityOptions.FEATURE_SC, false); + exiFactory.setFidelityOptions(fidelityOptions); + } + catch(Exception e) { + TERFactory.getInstance().logError("ERROR: Unable to setup EXIFactory: " + e.getMessage()); + e.printStackTrace(); + } + + // Coding mode + exiFactory.setCodingMode(CodingMode.BIT_PACKED); + + // Value partition capacity + exiFactory.setValuePartitionCapacity(0); + + // SCHEMA OPTIONS + loadGrammar(exiFactory); - return exiFactory; - } - - private static void loadGrammar(EXIFactory exiFactory) { - GrammarFactory grammarFactory = GrammarFactory.newInstance(); - Grammars grammars = null; - MySchemaIdResolver schemaIdResolver = new MySchemaIdResolver(grammarFactory); - exiFactory.setSchemaIdResolver(schemaIdResolver); - try { - grammars = schemaIdResolver.resolveSchemaId(schemaId); - if (grammars != null) - exiFactory.setGrammars(grammars); - } catch (EXIException e) { - e.printStackTrace(); - } - } - - - private static class MySchemaIdResolver implements SchemaIdResolver { + return exiFactory; + } + + private static void loadGrammar(EXIFactory exiFactory) { + GrammarFactory grammarFactory = GrammarFactory.newInstance(); + Grammars grammars = null; + MySchemaIdResolver schemaIdResolver = new MySchemaIdResolver(grammarFactory); + exiFactory.setSchemaIdResolver(schemaIdResolver); + try { + grammars = schemaIdResolver.resolveSchemaId(schemaId); + if (grammars != null) + exiFactory.setGrammars(grammars); + } catch (EXIException e) { + e.printStackTrace(); + } + } + + + private static class MySchemaIdResolver implements SchemaIdResolver { - private GrammarFactory grammarFactory; - - public MySchemaIdResolver(GrammarFactory grammarFactory) { - this.grammarFactory = grammarFactory; - } - - @Override - public Grammars resolveSchemaId(String schemaId) throws EXIException { - Grammars grammars = null; - String explicitSchemaName = null; - if(schemaId.equals("handshake")) { - explicitSchemaName = handshakeSchemaName; - } - if(schemaId.equals("v2g")) { - explicitSchemaName = v2gSchemaName; - } - File schemaFile = new File(explicitSchemaName); - grammars = grammarFactory.createGrammars(schemaFile.getAbsolutePath()); - return grammars; - } - } + private GrammarFactory grammarFactory; + + public MySchemaIdResolver(GrammarFactory grammarFactory) { + this.grammarFactory = grammarFactory; + } + + @Override + public Grammars resolveSchemaId(String schemaId) throws EXIException { + Grammars grammars = null; + String explicitSchemaName = null; + if(schemaId.equals("handshake")) { + explicitSchemaName = handshakeSchemaName; + } + if(schemaId.equals("v2g")) { + explicitSchemaName = v2gSchemaName; + } + File schemaFile = new File(explicitSchemaName); + grammars = grammarFactory.createGrammars(schemaFile.getAbsolutePath()); + return grammars; + } + } } diff --git a/javasrc/codec/org/etsi/ttcn/codec/its/v2g/Sdp_Payload.java b/javasrc/codec/org/etsi/ttcn/codec/its/v2g/Sdp_Payload.java index ab2aba3065690209ccbeae21bba7c2b165674c70..65ee39b16034314cc519421c9289ad4eb53c9ec5 100644 --- a/javasrc/codec/org/etsi/ttcn/codec/its/v2g/Sdp_Payload.java +++ b/javasrc/codec/org/etsi/ttcn/codec/its/v2g/Sdp_Payload.java @@ -5,6 +5,7 @@ */ package org.etsi.ttcn.codec.its.v2g; +import org.etsi.adapter.TERFactory; import org.etsi.ttcn.codec.CodecBuffer; import org.etsi.ttcn.codec.MainCodec; import org.etsi.ttcn.codec.generic.Union; @@ -28,7 +29,7 @@ public class Sdp_Payload extends Union { variant = "sdpResponse"; break; default: - System.err.println("Unable to decode " + decodingHypothesis.getName()); + TERFactory.getInstance().logError("Unable to decode " + decodingHypothesis.getName()); return; } mainCodec.setHint(decodingHypothesis.getName(), variant); diff --git a/javasrc/codec/org/etsi/ttcn/common/ByteHelper.java b/javasrc/codec/org/etsi/ttcn/common/ByteHelper.java index 0541d6d0de1cbca3798a5f8f260ffd2c076be8f3..51c347e8ef527f3f540661b3aa4fd519b20e2459 100644 --- a/javasrc/codec/org/etsi/ttcn/common/ByteHelper.java +++ b/javasrc/codec/org/etsi/ttcn/common/ByteHelper.java @@ -7,6 +7,8 @@ package org.etsi.ttcn.common; import java.nio.ByteBuffer; +import org.etsi.adapter.TERFactory; + /* FIXME: to be merged with org.etsi.common.ByteHelper */ public class ByteHelper { @@ -147,6 +149,23 @@ public class ByteHelper { System.arraycopy(array, offset, result, 0, length); return result; } + + public static byte[] fill(final byte[] buffer, final int length, final byte pattern) { + byte[] result = new byte[length]; + if (buffer == null) { // Fill it + for(int i = 0; i < length; ++i) { + result[i] = pattern; + } // End of 'for' statement + } else { // + for(int i = 0; i < length - buffer.length; ++i) { + result[length - i - 1] = pattern; + } // End of 'for' statement + System.arraycopy(buffer, 0, result, 0, buffer.length); + } + + return result; + } + /** * Dump a byte array in hex/ascii mode. * @param label The dump label @@ -156,14 +175,14 @@ public class ByteHelper { { if ((buffer != null) && (buffer.length != 0)) { - System.out.println(label); + TERFactory.getInstance().logDebug(label); StringBuilder finalHexLine = new StringBuilder(); StringBuilder finalCharLine = new StringBuilder(); int nCounter = 0; int nOffset = 0; // Flush header. - System.out.println(" HEX | 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F : 0 1 2 3 4 5 6 7 8 9 A B C D E F "); - System.out.println("-----|+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+-:--+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+"); + TERFactory.getInstance().logDebug(" HEX | 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F : 0 1 2 3 4 5 6 7 8 9 A B C D E F "); + TERFactory.getInstance().logDebug("-----|+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+-:--+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+"); for (int i = 0; i < buffer.length; ++i) { byte c = (byte)buffer[i]; @@ -181,7 +200,7 @@ public class ByteHelper { if (nCounter == 15) { // Flush line. - System.out.println(String.format("%s : %s", finalHexLine.toString(), finalCharLine.toString())); + TERFactory.getInstance().logDebug(String.format("%s : %s", finalHexLine.toString(), finalCharLine.toString())); // Reset buffer. finalHexLine.delete(0, finalHexLine.length()); finalCharLine.delete(0, finalCharLine.length()); @@ -203,7 +222,7 @@ public class ByteHelper { finalCharLine.append(" "); } // Flush line. - System.out.println(String.format("%s : %s", finalHexLine.toString(), finalCharLine.toString())); + TERFactory.getInstance().logDebug(String.format("%s : %s", finalHexLine.toString(), finalCharLine.toString())); } } } diff --git a/javasrc/common/org/etsi/common/ByteHelper.java b/javasrc/common/org/etsi/common/ByteHelper.java index bcfc64f2261b468a757d9f16421d85324503faf5..50fe64716f82fc13c86ba881764b3fd3a466b4f0 100644 --- a/javasrc/common/org/etsi/common/ByteHelper.java +++ b/javasrc/common/org/etsi/common/ByteHelper.java @@ -8,6 +8,8 @@ package org.etsi.common; import java.nio.ByteBuffer; import java.nio.ByteOrder; +import org.etsi.adapter.TERFactory; + public class ByteHelper { public static byte[] changeEndianness(byte [] in) { @@ -259,6 +261,22 @@ public class ByteHelper { return result; } + public static byte[] fill(final byte[] buffer, final int length, final byte pattern) { + byte[] result = new byte[length]; + if (buffer == null) { // Fill it + for(int i = 0; i < length; ++i) { + result[i] = pattern; + } // End of 'for' statement + } else { // + for(int i = 0; i < length - buffer.length; ++i) { + result[length - i - 1] = pattern; + } // End of 'for' statement + System.arraycopy(buffer, 0, result, 0, buffer.length); + } + + return result; + } + /** * Dump a byte array in hex/ascii mode. * @param label The dump label @@ -268,14 +286,14 @@ public class ByteHelper { { if ((buffer != null) && (buffer.length != 0)) { - System.out.println(label); + TERFactory.getInstance().logDebug(label); StringBuilder finalHexLine = new StringBuilder(); StringBuilder finalCharLine = new StringBuilder(); int nCounter = 0; int nOffset = 0; // Flush header. - System.out.println(" HEX | 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F : 0 1 2 3 4 5 6 7 8 9 A B C D E F "); - System.out.println("-----|+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+-:--+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+"); + TERFactory.getInstance().logDebug(" HEX | 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F : 0 1 2 3 4 5 6 7 8 9 A B C D E F "); + TERFactory.getInstance().logDebug("-----|+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+-:--+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+"); for (int i = 0; i < buffer.length; ++i) { byte c = (byte)buffer[i]; @@ -293,7 +311,7 @@ public class ByteHelper { if (nCounter == 15) { // Flush line. - System.out.println(String.format("%s : %s", finalHexLine.toString(), finalCharLine.toString())); + TERFactory.getInstance().logDebug(String.format("%s : %s", finalHexLine.toString(), finalCharLine.toString())); // Reset buffer. finalHexLine.delete(0, finalHexLine.length()); finalCharLine.delete(0, finalCharLine.length()); @@ -315,7 +333,7 @@ public class ByteHelper { finalCharLine.append(" "); } // Flush line. - System.out.println(String.format("%s : %s", finalHexLine.toString(), finalCharLine.toString())); + TERFactory.getInstance().logDebug(String.format("%s : %s", finalHexLine.toString(), finalCharLine.toString())); } } } diff --git a/javasrc/extfunc/org/etsi/its/extfunc/ItsExternalFunctionsProvider.java b/javasrc/extfunc/org/etsi/its/extfunc/ItsExternalFunctionsProvider.java index 5ec5503c150fd5d3735c2f1b2f9013893866c642..0e2258b53118a30b2cb6feff1c938f257b9d715d 100644 --- a/javasrc/extfunc/org/etsi/its/extfunc/ItsExternalFunctionsProvider.java +++ b/javasrc/extfunc/org/etsi/its/extfunc/ItsExternalFunctionsProvider.java @@ -119,7 +119,7 @@ public class ItsExternalFunctionsProvider implements IItsExternalFunctionsProvid String datestr="01/01/2004 00:00:00 +0000"; DateFormat formatter = new SimpleDateFormat("MM/dd/yyyy hh:mm:ss Z"); try { -// System.out.println("ItsExternalFunctionsProvider.fx_getCurrentTime: " + ((java.util.Date)formatter.parse(datestr)).getTime()); + // TERFactory.getInstance().logDebug("ItsExternalFunctionsProvider.fx_getCurrentTime: " + ((java.util.Date)formatter.parse(datestr)).getTime()); now = _tcicdWrapper.setInteger( new BigInteger( 1, @@ -456,8 +456,8 @@ public class ItsExternalFunctionsProvider implements IItsExternalFunctionsProvid } // End 'for' statement byte[] signed; try { -// System.out.println("fx_signWithEcdsaNistp256WithSha256: toBeSignedData=" + ByteHelper.byteArrayToString(toBeSignedData) + " - " + toBeSignedData.length); -// System.out.println("fx_signWithEcdsaNistp256WithSha256: ts103097SignatureEncodedAsByteArray=" + new BigInteger(privateKey)); +// TERFactory.getInstance().logDebug("fx_signWithEcdsaNistp256WithSha256: toBeSignedData=" + ByteHelper.byteArrayToString(toBeSignedData) + " - " + toBeSignedData.length); +// TERFactory.getInstance().logDebug("fx_signWithEcdsaNistp256WithSha256: ts103097SignatureEncodedAsByteArray=" + new BigInteger(privateKey)); signed = CryptoLib.signWithEcdsaNistp256WithSha256(toBeSignedData, new BigInteger(privateKey)); } catch (Exception e) { e.printStackTrace(); @@ -503,10 +503,10 @@ public class ItsExternalFunctionsProvider implements IItsExternalFunctionsProvid ecdsaNistp256PublicKeyY[i] = (byte) p_ecdsaNistp256PublicKeyY.getOctet(i); } // End 'for' statement try { -// System.out.println("fx_verifyWithEcdsaNistp256WithSha256: toBeVerifiedData=" + ByteHelper.byteArrayToString(toBeVerifiedData) + " - " + toBeVerifiedData.length); -// System.out.println("fx_verifyWithEcdsaNistp256WithSha256: ts103097SignatureEncodedAsByteArray=" + ByteHelper.byteArrayToString(ts103097SignatureEncodedAsByteArray)); -// System.out.println("fx_verifyWithEcdsaNistp256WithSha256: ecdsaNistp256PublicKeyX=" + ByteHelper.byteArrayToString(ecdsaNistp256PublicKeyX)); -// System.out.println("fx_verifyWithEcdsaNistp256WithSha256: ecdsaNistp256PublicKeyY=" + ByteHelper.byteArrayToString(ecdsaNistp256PublicKeyY)); +// TERFactory.getInstance().logDebug("fx_verifyWithEcdsaNistp256WithSha256: toBeVerifiedData=" + ByteHelper.byteArrayToString(toBeVerifiedData) + " - " + toBeVerifiedData.length); +// TERFactory.getInstance().logDebug("fx_verifyWithEcdsaNistp256WithSha256: ts103097SignatureEncodedAsByteArray=" + ByteHelper.byteArrayToString(ts103097SignatureEncodedAsByteArray)); +// TERFactory.getInstance().logDebug("fx_verifyWithEcdsaNistp256WithSha256: ecdsaNistp256PublicKeyX=" + ByteHelper.byteArrayToString(ecdsaNistp256PublicKeyX)); +// TERFactory.getInstance().logDebug("fx_verifyWithEcdsaNistp256WithSha256: ecdsaNistp256PublicKeyY=" + ByteHelper.byteArrayToString(ecdsaNistp256PublicKeyY)); boolean ret = CryptoLib.verifyWithEcdsaNistp256WithSha256(toBeVerifiedData, ts103097SignatureEncodedAsByteArray, ecdsaNistp256PublicKeyX, ecdsaNistp256PublicKeyY); result.setBoolean(ret); } catch (Exception e) { diff --git a/javasrc/geodesic/org/etsi/geodesic/CountriesAreas.java b/javasrc/geodesic/org/etsi/geodesic/CountriesAreas.java index 6f7d676a8d9c1c4b95df51cb03447215b86fb1ec..dacead1def0abbd51a4950e4e5cf5a5b69dbdd0d 100644 --- a/javasrc/geodesic/org/etsi/geodesic/CountriesAreas.java +++ b/javasrc/geodesic/org/etsi/geodesic/CountriesAreas.java @@ -16,6 +16,8 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.Map; +import org.etsi.adapter.TERFactory; + import com.google.gson.JsonArray; import com.google.gson.JsonElement; import com.google.gson.JsonObject; @@ -432,7 +434,7 @@ public class CountriesAreas implements ICountriesAreas { @Override public boolean isLocationInsideIdentifiedRegion(final int p_regionDictionary, final int p_regionId, final long p_localRegion, final WGS84 p_location) { -// System.out.println(">>> CountriesAreas.isLocationInsideIdentifiedRegion: " + p_regionDictionary + ", " + p_regionId + ", " + p_localRegion + ", " + p_location); +// TERFactory.getInstance().logDebug(">>> CountriesAreas.isLocationInsideIdentifiedRegion: " + p_regionDictionary + ", " + p_regionId + ", " + p_localRegion + ", " + p_location); boolean result = false; if (p_regionDictionary == Iso_3166_1) { @@ -449,7 +451,7 @@ public class CountriesAreas implements ICountriesAreas { } public boolean process(final String p_regionId, final long p_localRegion, final WGS84 p_location) { -// System.out.println(">>> CountriesAreas.process: " + p_regionId + ", " + p_localRegion + ", " + p_location); +// TERFactory.getInstance().logDebug(">>> CountriesAreas.process: " + p_regionId + ", " + p_localRegion + ", " + p_location); if (_countriesPolygons.containsKey(p_regionId)) { ArrayList> areas = _countriesPolygons.get(p_regionId); diff --git a/javasrc/geodesic/org/etsi/geodesic/Positioning.java b/javasrc/geodesic/org/etsi/geodesic/Positioning.java index 904cf192255547028552ea128fd5c96cddff3f4a..714c9c0877d2e28638a6bfe9e34a0352341ec2ea 100644 --- a/javasrc/geodesic/org/etsi/geodesic/Positioning.java +++ b/javasrc/geodesic/org/etsi/geodesic/Positioning.java @@ -2,6 +2,8 @@ package org.etsi.geodesic; import java.util.ArrayList; +import org.etsi.adapter.TERFactory; + /** * @desc * @see To validate GPS location: http://www.gps-coordinates.net @@ -35,7 +37,7 @@ public class Positioning implements IPositioning { @Override public boolean isLocationInsideEllipticArea(final WGS84 p_location, final ArrayList p_ellipticArea) { -// System.out.println(">>> Positioning.isLocationInsideEllipticArea: " + p_location); +// TERFactory.getInstance().logDebug(">>> Positioning.isLocationInsideEllipticArea: " + p_location); // TODO: implement it // Do not forget aboout passing throw 0 meridian @@ -44,7 +46,7 @@ public class Positioning implements IPositioning { @Override public boolean isLocationInsidePolygonalArea(final WGS84 p_location, final ArrayList p_polygonalArea) { -// System.out.println(">>> Positioning.isLocationInsidePolygonalArea: " + p_location + ", " + p_polygonalArea); +// TERFactory.getInstance().logDebug(">>> Positioning.isLocationInsidePolygonalArea: " + p_location + ", " + p_polygonalArea); // TODO: Check passing throw 0 meridian and Equador @@ -64,13 +66,13 @@ public class Positioning implements IPositioning { angle += calcAngle(delta1, delta2); } // End of 'for' statement -// System.out.println("<<< Positioning.isLocationInsidePolygonalArea: " + (boolean)((Math.abs(angle) < Math.PI) ? false : true)); +// TERFactory.getInstance().logDebug("<<< Positioning.isLocationInsidePolygonalArea: " + (boolean)((Math.abs(angle) < Math.PI) ? false : true)); return (boolean)((Math.abs(angle) < Math.PI) ? false : true); } @Override public boolean isLocationInsidePolygonalAreas(final WGS84 p_location, final ArrayList< ArrayList > p_polygonalAreas) { -// System.out.println(">>> Positioning.isLocationInsidePolygonalAreas: " + p_location); +// TERFactory.getInstance().logDebug(">>> Positioning.isLocationInsidePolygonalAreas: " + p_location); for (int index = 0; index < p_polygonalAreas.size(); index++) { if (isLocationInsidePolygonalArea(p_location, p_polygonalAreas.get(index))) { @@ -83,7 +85,7 @@ public class Positioning implements IPositioning { @Override public boolean isLocationInsideCircularArea(final WGS84 p_location, final WGS84 p_center, final int p_radius) { -// System.out.println(">>> Positioning.isLocationInsideCircularArea: " + p_location + ", " + p_center + ", " + p_radius); +// TERFactory.getInstance().logDebug(">>> Positioning.isLocationInsideCircularArea: " + p_location + ", " + p_center + ", " + p_radius); // TODO: Check passing throw 0 meridian and Equador @@ -93,15 +95,15 @@ public class Positioning implements IPositioning { Math.cos(dd2rad(p_center.getLatitude())) * Math.cos(dd2rad(p_location.getLatitude())) * Math.cos(dd2rad(theta)); distance = rad2dd(Math.acos(distance)); distance *= 60 * 1.1515 * 1.609344 /*Kilometers*/; -// System.out.println("Positioning.isLocationInsideCircularArea: distance=" + distance); +// TERFactory.getInstance().logDebug("Positioning.isLocationInsideCircularArea: distance=" + distance); -// System.out.println("<<< Positioning.isLocationInsideCircularArea: " + (boolean)(distance <= (p_radius / 1000.0))); +// TERFactory.getInstance().logDebug("<<< Positioning.isLocationInsideCircularArea: " + (boolean)(distance <= (p_radius / 1000.0))); return (boolean)(distance <= (p_radius / 1000.0)); } @Override public boolean isValidPolygonArea(final ArrayList p_polygonalArea) { -// System.out.println(">>> Positioning.isValidPolygonArea"); +// TERFactory.getInstance().logDebug(">>> Positioning.isValidPolygonArea"); // Check if polygon coordinates are valid for (int i = 0; i < p_polygonalArea.size(); i++) { @@ -115,14 +117,14 @@ public class Positioning implements IPositioning { @Override public boolean isLocationInsideIdentifiedRegion(final int p_regionDictionary, final int p_regionId, final long p_localRegion, final WGS84 p_location) { -// System.out.println(">>> Positioning.isLocationInsideIdentifiedRegion: " + p_regionDictionary + ", " + p_regionId + ", " + p_localRegion + ", " + p_location); +// TERFactory.getInstance().logDebug(">>> Positioning.isLocationInsideIdentifiedRegion: " + p_regionDictionary + ", " + p_regionId + ", " + p_localRegion + ", " + p_location); return CountriesAreas.getInstance().isLocationInsideIdentifiedRegion(p_regionDictionary, p_regionId, p_localRegion, p_location); } @Override public boolean isPolygonalRegionInside(final ArrayList p_parentArea, final ArrayList p_regionArea) { -// System.out.println(">>> Positioning.isPolygonalRegionInside: " + p_parentArea + ", " + p_regionArea); +// TERFactory.getInstance().logDebug(">>> Positioning.isPolygonalRegionInside: " + p_parentArea + ", " + p_regionArea); for (int i = 0; i < p_regionArea.size(); i++) { if (!isLocationInsidePolygonalArea(p_regionArea.get(i), p_parentArea)) { @@ -134,13 +136,13 @@ public class Positioning implements IPositioning { } private double calcAngle(final WGS84 p_origin, final WGS84 p_end) { -// System.out.println(">>> calcAngle: " + p_origin.getLatitude() + " - " + p_origin.getLongitude() + " - " + p_end.getLatitude() + " - " + p_end.getLongitude()); +// TERFactory.getInstance().logDebug(">>> calcAngle: " + p_origin.getLatitude() + " - " + p_origin.getLongitude() + " - " + p_end.getLatitude() + " - " + p_end.getLongitude()); double theta1 = Math.atan2(p_origin.getLatitude(), p_origin.getLongitude()); -// System.out.println("Angle2D: theta1=" + theta1); +// TERFactory.getInstance().logDebug("Angle2D: theta1=" + theta1); double theta2 = Math.atan2(p_end.getLatitude(), p_end.getLongitude()); -// System.out.println("Angle2D: theta2=" + theta2); +// TERFactory.getInstance().logDebug("Angle2D: theta2=" + theta2); double dtheta = theta2 - theta1; -// System.out.println("calcAngle: dtheta" + dtheta); +// TERFactory.getInstance().logDebug("calcAngle: dtheta" + dtheta); while (dtheta > Math.PI) { dtheta -= TWOPI; } // End of 'while' statement @@ -148,7 +150,7 @@ public class Positioning implements IPositioning { dtheta += TWOPI; } // End of 'while' statement -// System.out.println("<<< calcAngle: " + dtheta); +// TERFactory.getInstance().logDebug("<<< calcAngle: " + dtheta); return dtheta; } diff --git a/javasrc/tool/org/etsi/its/tool/elvior/BuiltInCodec.java b/javasrc/tool/org/etsi/its/tool/elvior/BuiltInCodec.java index be6fc7c8f3a94e6401e481c0bbf5629dce43f1ff..e7c4b02a3b30af9d30e7e680e365db515dadb3bc 100644 --- a/javasrc/tool/org/etsi/its/tool/elvior/BuiltInCodec.java +++ b/javasrc/tool/org/etsi/its/tool/elvior/BuiltInCodec.java @@ -37,8 +37,12 @@ public class BuiltInCodec implements TciCDProvided { _encodingName = "DENM_PDU_Descriptions"; } else if (encodingName.equals("LibItsCam_asn1")) { _encodingName = "CAM_PDU_Descriptions"; - } else if (encodingName.equals("LibItsMapSpat_asn1")) { - _encodingName = "MAP_SPAT_ETSI"; + } else if (encodingName.equals("LibItsMapem_asn1")) { + _encodingName = "MAPEM_PDU_Descriptions"; + } else if (encodingName.equals("LibItsSpatem_asn1")) { + _encodingName = "SPATEM_PDU_Descriptions"; + } else if (encodingName.equals("LibItsIvim_asn1")) { + _encodingName = "IVIM_PDU_Descriptions"; } else if (encodingName.equals("LibItsCALMmsap_asn1")) { _encodingName = "CALMmsap"; } else if (encodingName.equals("LibItsCALMllsap_asn1")) { diff --git a/javasrc/tool/org/etsi/its/tool/elvior/GetValueStructure.java b/javasrc/tool/org/etsi/its/tool/elvior/GetValueStructure.java index ddf96420437d7d321a3b7d9a2b36129ce16a25be..07dabec0ffabf940584f0b863bf99b379dd63e3d 100644 --- a/javasrc/tool/org/etsi/its/tool/elvior/GetValueStructure.java +++ b/javasrc/tool/org/etsi/its/tool/elvior/GetValueStructure.java @@ -1,5 +1,7 @@ package org.etsi.its.tool.elvior; +import org.etsi.adapter.TERFactory; + import org.elvior.ttcn.tritci.IntegerValueEx; import org.etsi.ttcn.tci.BitstringValue; import org.etsi.ttcn.tci.BooleanValue; @@ -23,7 +25,7 @@ public class GetValueStructure { buffer = new StringBuilder(); indent = ""; LogValueDataStructure(value); -// System.out.println(buffer.toString()); +// TERFactory.getInstance().logDebug(buffer.toString()); } static public String getValueStructure(final Value value) { diff --git a/javasrc/tool/org/etsi/its/tool/elvior/Its_CodecProvider.java b/javasrc/tool/org/etsi/its/tool/elvior/Its_CodecProvider.java index 0c9cb1c27de5a331b49dd0e4527c51a3d31b7841..582532f3179af087ceb3ecdd7bdc76c69eb11275 100644 --- a/javasrc/tool/org/etsi/its/tool/elvior/Its_CodecProvider.java +++ b/javasrc/tool/org/etsi/its/tool/elvior/Its_CodecProvider.java @@ -52,7 +52,7 @@ public class Its_CodecProvider implements TciCDProvided, ChannelEventHandler, IT } else if (debugLevel.equalsIgnoreCase("SEVERE")) { level = Level.SEVERE; } else if (!debugLevel.equalsIgnoreCase("OFF")) { - System.err.println("Unsupported logging level: " + debugLevel); + TERFactory.getInstance().logError("Unsupported logging level: " + debugLevel); } _logger.addHandler(new ConsoleHandler()); _logger.setLevel(level); @@ -162,7 +162,7 @@ public class Its_CodecProvider implements TciCDProvided, ChannelEventHandler, IT (value.notPresent() == true) ? "true" : "false" ) );*/ -// System.out.println(">>> encode: " + value.getType().getName()); +// TERFactory.getInstance().logDebug(">>> encode: " + value.getType().getName()); String encodingName = value.getType().getTypeEncoding(); if ((encodingName != null) && !encodingName.startsWith("Lib")) { encodingName = value.getType().getDefiningModule().getModuleName(); diff --git a/javasrc/tool/org/etsi/its/tool/elvior/PluginAdapter.java b/javasrc/tool/org/etsi/its/tool/elvior/PluginAdapter.java index 3540b22e8d4e4acdbf82e83683a6b433339d1d9e..d1d43596c7de532cc6f4b52929d6684e1b3097bf 100644 --- a/javasrc/tool/org/etsi/its/tool/elvior/PluginAdapter.java +++ b/javasrc/tool/org/etsi/its/tool/elvior/PluginAdapter.java @@ -96,7 +96,7 @@ public class PluginAdapter implements TriCommunicationSA, TriCommunicationTE, xT } else if (debugLevel.equalsIgnoreCase("SEVERE")) { level = Level.SEVERE; } else if (!debugLevel.equalsIgnoreCase("OFF")) { - System.err.println("Unsupported logging level: " + debugLevel); + TERFactory.getInstance().logError("Unsupported logging level: " + debugLevel); } _logger.addHandler(new ConsoleHandler()); _logger.setLevel(level); @@ -158,7 +158,7 @@ public class PluginAdapter implements TriCommunicationSA, TriCommunicationTE, xT } public TriStatus triExecuteTestCase(TriTestCaseId testCaseId, TriPortIdList tsiPorts) { -// System.out.println("triExecuteTestCase"); +// TERFactory.getInstance().logDebug("triExecuteTestCase"); // Disable XTRI functionality for all ports, so that existing SA implementation can be reused for(int i = 0; i < tsiPorts.size(); i++) { TriTciChannel.getInstance().enableXTriForPort(tsiPorts.get(i), false); @@ -167,40 +167,40 @@ public class PluginAdapter implements TriCommunicationSA, TriCommunicationTE, xT } public TriStatus triMap(TriPortId compPortId, TriPortId tsiPortId) { -// System.out.println("triMap: " + compPortId.getComponent().getComponentName() + " - " + tsiPortId.getPortName()); +// TERFactory.getInstance().logDebug("triMap: " + compPortId.getComponent().getComponentName() + " - " + tsiPortId.getPortName()); return _itsTestAdapter.triMap(compPortId, tsiPortId); } public TriStatus triRaise(TriComponentId componentId, TriPortId tsiPortId, TriAddress sutAddress, TriSignatureId signatureId, TriException exception) { -// System.out.println("triRaise"); +// TERFactory.getInstance().logDebug("triRaise"); return _itsTestAdapter.triRaise(componentId, tsiPortId, sutAddress, signatureId, exception); } public TriStatus triRaiseBC(TriComponentId componentId, TriPortId tsiPortId, TriSignatureId signatureId, TriException exc) { -// System.out.println("triRaiseBC"); +// TERFactory.getInstance().logDebug("triRaiseBC"); return _itsTestAdapter.triRaiseBC(componentId, tsiPortId, signatureId, exc); } public TriStatus triRaiseMC(TriComponentId componentId, TriPortId tsiPortId, TriAddressList sutAddresses, TriSignatureId signatureId, TriException exc) { -// System.out.println("triRaiseMC"); +// TERFactory.getInstance().logDebug("triRaiseMC"); return _itsTestAdapter.triRaiseMC(componentId, tsiPortId, sutAddresses, signatureId, exc); } public TriStatus triReply(TriComponentId componentId, TriPortId tsiPortId, TriAddress sutAddress, TriSignatureId signatureId, TriParameterList parameterList, TriParameter returnValue) { -// System.out.println("triReply"); +// TERFactory.getInstance().logDebug("triReply"); return _itsTestAdapter.triReply(componentId, tsiPortId, sutAddress, signatureId, parameterList, returnValue); } public TriStatus triReplyBC(TriComponentId componentId, TriPortId tsiPortId, TriSignatureId signatureId, TriParameterList parameterList, TriParameter returnValue) { -// System.out.println("triReplyBC"); +// TERFactory.getInstance().logDebug("triReplyBC"); return _itsTestAdapter.triReplyBC(componentId, tsiPortId, signatureId, parameterList, returnValue); } @@ -208,40 +208,40 @@ public class PluginAdapter implements TriCommunicationSA, TriCommunicationTE, xT TriPortId tsiPortId, TriAddressList sutAddresses, TriSignatureId signatureId, TriParameterList parameterList, TriParameter returnValue) { -// System.out.println("triReplyMC"); +// TERFactory.getInstance().logDebug("triReplyMC"); return _itsTestAdapter.triReplyMC(componentId, tsiPortId, sutAddresses, signatureId, parameterList, returnValue); } public TriStatus triSAReset() { -// System.out.println("triSAReset"); +// TERFactory.getInstance().logDebug("triSAReset"); return _itsTestAdapter.triSAReset(); } public TriStatus triSend(TriComponentId componentId, TriPortId tsiPortId, TriAddress address, TriMessage sendMessage) { -// System.out.println("triSend"); +// TERFactory.getInstance().logDebug("triSend"); return _itsTestAdapter.triSend(componentId, tsiPortId, address, sendMessage); } public TriStatus triSendBC(TriComponentId componentId, TriPortId tsiPortId, TriMessage sendMessage) { -// System.out.println("triSendBC"); +// TERFactory.getInstance().logDebug("triSendBC"); return _itsTestAdapter.triSendBC(componentId, tsiPortId, sendMessage); } public TriStatus triSendMC(TriComponentId componentId, TriPortId tsiPortId, TriAddressList addresses, TriMessage sendMessage) { -// System.out.println("triSendMC"); +// TERFactory.getInstance().logDebug("triSendMC"); return _itsTestAdapter.triSendMC(componentId, tsiPortId, addresses, sendMessage); } public TriStatus triSutActionInformal(String description) { -// System.out.println("triSutActionInformal"); +// TERFactory.getInstance().logDebug("triSutActionInformal"); return _itsTestAdapter.triSutActionInformal(description); } public TriStatus triUnmap(TriPortId compPortId, TriPortId tsiPortId) { -// System.out.println("triUnmap"); +// TERFactory.getInstance().logDebug("triUnmap"); return _itsTestAdapter.triUnmap(compPortId, tsiPortId); } @@ -334,7 +334,7 @@ public class PluginAdapter implements TriCommunicationSA, TriCommunicationTE, xT @Override public TriStatus triPAReset() { -// System.out.println("triPAReset"); +// TERFactory.getInstance().logDebug("triPAReset"); return m_triOK; } @@ -775,7 +775,7 @@ public class PluginAdapter implements TriCommunicationSA, TriCommunicationTE, xT // Return code returnValue.setParameterPassingMode(TriParameterPassingMode.TRI_OUT); returnValue.setNumberOfBits(result.getLength() * Byte.SIZE); -// System.out.println("Result length = " + result.getLength()); +// TERFactory.getInstance().logDebug("Result length = " + result.getLength()); value = new byte[result.getLength()]; for (int i = 0; i < value.length; i++) { value[i] = (byte) result.getOctet(i); diff --git a/javasrc/tool/org/etsi/its/tool/testingtech/GnssRemoteControl.java b/javasrc/tool/org/etsi/its/tool/testingtech/GnssRemoteControl.java index 9e6ef0c9c31bdd7697c354387eba15e6ddf5cee0..f710e17b975883ca5c54fc77eeb7c97a6a9053d4 100644 --- a/javasrc/tool/org/etsi/its/tool/testingtech/GnssRemoteControl.java +++ b/javasrc/tool/org/etsi/its/tool/testingtech/GnssRemoteControl.java @@ -112,9 +112,9 @@ public class GnssRemoteControl implements IGnssSupport { public void dispose() { try { - System.out.println("+++++++++++++++++++++++++++++++++++++++++++++"); - System.out.println("CLOSING"); - System.out.println("+++++++++++++++++++++++++++++++++++++++++++++"); + TERFactory.getInstance().logDebug("+++++++++++++++++++++++++++++++++++++++++++++"); + TERFactory.getInstance().logDebug("CLOSING"); + TERFactory.getInstance().logDebug("+++++++++++++++++++++++++++++++++++++++++++++"); if (soc!=null) { soc.close(); soc = null; @@ -289,13 +289,13 @@ public class GnssRemoteControl implements IGnssSupport { double curLongitude = Double.longBitsToDouble(tmp.longValue()); if (debug) { - System.out.println("Type : " + type); - System.out.println("Version : " + version); - System.out.println("Time(into run) : " + time_into_run); - System.out.println("Time(validity) : " + time_of_validity); - System.out.println("VehicleNumber : " + vehicleNumber); - System.out.println("Latitude : " + curLatitude); - System.out.println("Longitude : " + curLongitude); + TERFactory.getInstance().logDebug("Type : " + type); + TERFactory.getInstance().logDebug("Version : " + version); + TERFactory.getInstance().logDebug("Time(into run) : " + time_into_run); + TERFactory.getInstance().logDebug("Time(validity) : " + time_of_validity); + TERFactory.getInstance().logDebug("VehicleNumber : " + vehicleNumber); + TERFactory.getInstance().logDebug("Latitude : " + curLatitude); + TERFactory.getInstance().logDebug("Longitude : " + curLongitude); } if (prevLatitude != null && prevLongitude != null) { @@ -305,7 +305,7 @@ public class GnssRemoteControl implements IGnssSupport { prevLongitude = curLongitude; if (debug) { - System.out.println("Distance: " + distanceCovered); + TERFactory.getInstance().logDebug("Distance: " + distanceCovered); } if (distanceCovered>=distance) { @@ -375,17 +375,17 @@ public class GnssRemoteControl implements IGnssSupport { ByteHelper.longToByteArray(time - ((java.util.Date)formatter.parse(itsdatestr)).getTime(), Long.SIZE / Byte.SIZE) ); if (debug) { - System.out.println("timeGps : " + time); + TERFactory.getInstance().logDebug("timeGps : " + time); time = System.currentTimeMillis(); - System.out.println("timeSys : " + time); - System.out.println("now : " + now); - System.out.println("ref : " + + TERFactory.getInstance().logDebug("timeSys : " + time); + TERFactory.getInstance().logDebug("now : " + now); + TERFactory.getInstance().logDebug("ref : " + new BigInteger( 1, ByteHelper.longToByteArray(time - ((java.util.Date)formatter.parse(itsdatestr)).getTime(), Long.SIZE / Byte.SIZE) ).longValue() ); - System.out.println("date : " + + TERFactory.getInstance().logDebug("date : " + new BigInteger( 1, ByteHelper.longToByteArray(((java.util.Date)formatter.parse("12/15/2015 00:00:00 +0000")).getTime() - ((java.util.Date)formatter.parse(itsdatestr)).getTime(), Long.SIZE / Byte.SIZE) @@ -422,10 +422,10 @@ public class GnssRemoteControl implements IGnssSupport { } try { command += "\r"; - System.out.println(new Date().toString()); - System.out.println("+++++++++++++++++++++++++++++++++++++++++++++"); - System.out.println(command); - System.out.println("+++++++++++++++++++++++++++++++++++++++++++++"); + TERFactory.getInstance().logDebug(new Date().toString()); + TERFactory.getInstance().logDebug("+++++++++++++++++++++++++++++++++++++++++++++"); + TERFactory.getInstance().logDebug(command); + TERFactory.getInstance().logDebug("+++++++++++++++++++++++++++++++++++++++++++++"); soc.getOutputStream().write(command.getBytes()); soc.getOutputStream().flush(); int read=0; @@ -435,7 +435,7 @@ public class GnssRemoteControl implements IGnssSupport { sb.append(new String(new byte[] {(byte) read})); } while(read!='\r'); String response = sb.toString(); - System.out.println(response); + TERFactory.getInstance().logDebug(response); int statusStart = response.indexOf(STATUS_START); @@ -519,22 +519,22 @@ public class GnssRemoteControl implements IGnssSupport { localName = getLocalName(localName, qName); if (localName.equals("status")) { inStatus=false; - System.out.println("status: " + sb.toString()); + TERFactory.getInstance().logDebug("status: " + sb.toString()); sb.setLength(0); } else if (localName.equals("data")) { inData=false; - System.out.println("data: " + sb.toString()); + TERFactory.getInstance().logDebug("data: " + sb.toString()); sb.setLength(0); } else if (localName.equals("error")) { inError=false; - System.out.println("error: " + sb.toString()); + TERFactory.getInstance().logError("error: " + sb.toString()); sb.setLength(0); } else if (localName.equals("fatal")) { inFatal=false; - System.out.println("fatal: " + sb.toString()); + TERFactory.getInstance().logError("fatal: " + sb.toString()); sb.setLength(0); } super.endElement(uri, localName, qName); diff --git a/javasrc/tool/org/etsi/its/tool/testingtech/Its_CodecProvider.java b/javasrc/tool/org/etsi/its/tool/testingtech/Its_CodecProvider.java index 8fb1cd4df5d72ef2926e59fc4fa858fa9c714c82..7a6efdc01aabaa3461c16b61638dbcfa7123eb4d 100644 --- a/javasrc/tool/org/etsi/its/tool/testingtech/Its_CodecProvider.java +++ b/javasrc/tool/org/etsi/its/tool/testingtech/Its_CodecProvider.java @@ -39,7 +39,9 @@ public class Its_CodecProvider implements CodecProvider { TTWBCodecSupport cs = new TTWBCodecSupport(rb); cf.setExternalCodec("LibItsCam_asn1", cs.getCodec("LibItsCam_asn1")); cf.setExternalCodec("LibItsDenm_asn1", cs.getCodec("LibItsDenm_asn1")); - cf.setExternalCodec("LibItsMapSpat_asn1", cs.getCodec("LibItsMapSpat_asn1")); + cf.setExternalCodec("LibItsMapemSpatem_asn1", cs.getCodec("LibItsMapemSpatem_asn1")); + cf.setExternalCodec("LibItsIvim_asn1", cs.getCodec("LibItsIvim_asn1")); + cf.setExternalCodec("LibItsSremSsem_asn1", cs.getCodec("LibItsSremSsem_asn1")); //TODO: add V2G external codecs (xsd) //TODO: Yann add CALM external codecs (ASN.1) return new Codec(); diff --git a/javasrc/tool/org/etsi/tool/elvior/TciCDWrapper.java b/javasrc/tool/org/etsi/tool/elvior/TciCDWrapper.java index 3f806cae4945f3690b6c5b1f2f3fa61e8908c243..9153ae6f6e4ebc258b92be61301b68204f5ee135 100644 --- a/javasrc/tool/org/etsi/tool/elvior/TciCDWrapper.java +++ b/javasrc/tool/org/etsi/tool/elvior/TciCDWrapper.java @@ -49,17 +49,17 @@ public class TciCDWrapper implements ITciCDWrapper { @Override public IntegerValue setInteger(final BigInteger value) { -// System.out.println(">>> getBigInteger: " + value); +// TERFactory.getInstance().logDebug(">>> getBigInteger: " + value); IntegerValueEx bi = (IntegerValueEx) _tciFactory.getInteger().newInstance(); //_tciFactory.getTypeForName("org.elvior.ttcn.tritci.IntegerValueEx"); if (bi != null) { -// System.out.println("getBigInteger: then"); +// TERFactory.getInstance().logDebug("getBigInteger: then"); bi.setInt64(value.longValue()); -// System.out.println("getBigInteger: bi=" + bi.getInt64()); +// TERFactory.getInstance().logDebug("getBigInteger: bi=" + bi.getInt64()); return (IntegerValue)bi; } else { -// System.out.println("getBigInteger: else"); +// TERFactory.getInstance().logDebug("getBigInteger: else"); IntegerValue i = (IntegerValue) _tciFactory.getInteger().newInstance(); -// System.out.println("getBigInteger: i=" + i); +// TERFactory.getInstance().logDebug("getBigInteger: i=" + i); i.setInteger(value.intValue()); return i; } @@ -96,30 +96,30 @@ public class TciCDWrapper implements ITciCDWrapper { @Override public Value getUnionValue(final Type decodingHypothesis, final String variantName) { -// System.out.println(">>> getUnionValue: " + decodingHypothesis.getName() + ", " + variantName); +// TERFactory.getInstance().logDebug(">>> getUnionValue: " + decodingHypothesis.getName() + ", " + variantName); String variantTypeName = decodingHypothesis.getDefiningModule().getModuleName() + "." + decodingHypothesis.getName() + "." + variantName; -// System.out.println("variantTypeName is " + variantTypeName); +// TERFactory.getInstance().logDebug("variantTypeName is " + variantTypeName); Type variantType = _tciFactory.getTypeForName(variantTypeName); if(variantType != null) { Value testVal = variantType.newInstance(); if(testVal != null) { -// System.out.println("Variant value has been created."); +// TERFactory.getInstance().logDebug("Variant value has been created."); return testVal; } } - System.err.println("variantType is null"); + TERFactory.getInstance().logError("variantType is null"); - System.out.println("Variant value hasn't been created."); + TERFactory.getInstance().logDebug("Variant value hasn't been created."); return null; } @Override public Type getTypeForName(final String type) { // return TciProvider.getInstance().getTciCDRequired().getTypeForName(type); -// System.out.println("TciCDWrapper.getTypeForName" + type); +// TERFactory.getInstance().logDebug("TciCDWrapper.getTypeForName" + type); Type originalType = TciProvider.getInstance().getTciCDRequired().getTypeForName(type); -// System.out.println("TciCDWrapper.getTypeForName" + originalType.getName()); +// TERFactory.getInstance().logDebug("TciCDWrapper.getTypeForName" + originalType.getName()); return originalType; } // End of method getTypeForName diff --git a/javasrc/tool/org/etsi/tool/testingtech/TeRequiredImpl.java b/javasrc/tool/org/etsi/tool/testingtech/TeRequiredImpl.java index f9dba71372f66759a938ec7a7c0bc4ec63844922..7c870f2e3a0abf262c3beb800b67c4046cba85a9 100644 --- a/javasrc/tool/org/etsi/tool/testingtech/TeRequiredImpl.java +++ b/javasrc/tool/org/etsi/tool/testingtech/TeRequiredImpl.java @@ -1,6 +1,12 @@ package org.etsi.tool.testingtech; +import java.util.logging.ConsoleHandler; +import java.util.logging.Level; +import java.util.logging.LogRecord; +import java.util.logging.Logger; + import org.etsi.adapter.ITERequired; +import org.etsi.ttcn.tci.CharstringValue; import org.etsi.ttcn.tci.Value; import org.etsi.ttcn.tri.TriAddress; import org.etsi.ttcn.tri.TriCommunicationTE; @@ -21,10 +27,46 @@ public class TeRequiredImpl implements ITERequired { private RB RB; private final PluginIdentifier pluginId; + private Logger _logger; public TeRequiredImpl(RB rB, PluginIdentifier pluginId) { RB = rB; this.pluginId = pluginId; + + Value debugLevelValue = getTaParameter("DEBUG_ENABLED"); + String debugLevel = "OFF"; + if (debugLevelValue!=null) { + debugLevel = ((CharstringValue)debugLevelValue).getString(); + } + Level level = Level.OFF; + if (debugLevel.equalsIgnoreCase("ALL")) { + level = Level.ALL; + } else if (debugLevel.equalsIgnoreCase("INFO")) { + level = Level.INFO; + } else if (!debugLevel.equalsIgnoreCase("OFF")) { + RB.getTciTLProvided_Latest().tliInfo("", + de.tu_berlin.cs.uebb.muttcn.runtime.RB.currentTimeNanos(), "", + -1, RB.self(), RTLoggingConstants.RT_LOG_ERROR, "Unsupported logging level: " + debugLevel); + } + _logger = Logger.getLogger("org.etsi.its"); //$NON-NLS-1$ + _logger.addHandler(new ConsoleHandler() { + /* (non-Javadoc) + * @see java.util.logging.ConsoleHandler#publish(java.util.logging.LogRecord) + */ + @Override + public void publish(LogRecord logRecord) { + int level = RTLoggingConstants.RT_LOG_DEBUG; + if (logRecord.getLevel().intValue() == Level.SEVERE.intValue()) { + level = RTLoggingConstants.RT_LOG_ERROR; + } + RB.getTciTLProvided_Latest().tliInfo("", + de.tu_berlin.cs.uebb.muttcn.runtime.RB.currentTimeNanos(), "", + -1, RB.self(), level, logRecord.getMessage()); + } + + }); + _logger.setUseParentHandlers(false); + _logger.setLevel(level); } @Override @@ -49,7 +91,7 @@ public class TeRequiredImpl implements ITERequired { @Override public TriMessage getTriMessage(byte[] message) { - return new TriMessageImpl(message); + return TriMessageImpl.valueOf(message); } @Override @@ -57,16 +99,26 @@ public class TeRequiredImpl implements ITERequired { return new TriStatusImpl(statusCode); } - @SuppressWarnings("deprecation") @Override public TriStatus getTriStatus(int statusCode, String message) { switch(statusCode) { case TriStatus.TRI_OK: - RB.getTciTLProvidedV321TT().tliRT("", System.nanoTime(), "", -1, null, RTLoggingConstants.RT_LOG_INFO, message); + RB.getTciTLProvided_Latest().tliInfo("", de.tu_berlin.cs.uebb.muttcn.runtime.RB.currentTimeNanos(), "", -1, null, RTLoggingConstants.RT_LOG_INFO, message); return new TriStatusImpl(); default: return new TriStatusImpl(message); } } + + @Override + public void logDebug(String debugMessage) { + _logger.log(Level.ALL, debugMessage); + } + + @Override + public void logError(String errorMessage) { + _logger.log(Level.SEVERE, errorMessage); + } + } diff --git a/requality/TS103301/.settings/org.eclipse.core.resources.prefs b/requality/TS103301/.settings/org.eclipse.core.resources.prefs index 0b89d63a4cd17c6ebbb1fd9818e2b658f7f13d64..ed45f73f98d7ed5f4842bdb2e83ed428746aecb2 100644 --- a/requality/TS103301/.settings/org.eclipse.core.resources.prefs +++ b/requality/TS103301/.settings/org.eclipse.core.resources.prefs @@ -74,6 +74,8 @@ encoding//root/Reports/TPs/AllTPs(2016-07-15_08-17-17).json=UTF-8 encoding//root/Reports/TPs/AllTPs(2016-07-15_08-17-17)_resources/tps.html=UTF-8 encoding//root/Reports/TPs/AllTPs(2016-07-15_08-43-26).json=UTF-8 encoding//root/Reports/TPs/AllTPs(2016-07-15_08-43-26)_resources/tps.html=UTF-8 +encoding//root/Reports/TPs/AllTPs(2016-07-25_03-44-23).json=UTF-8 +encoding//root/Reports/TPs/AllTPs(2016-07-25_03-44-23)_resources/tps.html=UTF-8 encoding//root/Reports/TPs/AllTPs.json=UTF-8 encoding//root/Requirements.json=UTF-8 encoding//root/Requirements/IS_IVI.json=UTF-8 diff --git a/ttcn/AtsCAM/ItsCam_TpFunctions.ttcn b/ttcn/AtsCAM/ItsCam_TpFunctions.ttcn index b8430122b4321a38e24149e966264e3bbb0fa5d1..b06ec590fb804cc2580d0c2eaaa8b5faa8320acc 100644 --- a/ttcn/AtsCAM/ItsCam_TpFunctions.ttcn +++ b/ttcn/AtsCAM/ItsCam_TpFunctions.ttcn @@ -3020,13 +3020,14 @@ module ItsCam_TpFunctions { f_cfUp(); // Test adapter configuration - f_acTriggerSecEvent(m_setAtCertificate("")); // TODO Set constants for the certificate names // Preamble // TODO: initialize IUT with given certificate - f_prInitialState( e_staticPosition, true, { - hashedId8 := p_certHashedId8 - }); + f_prInitialState( + e_staticPosition, + true, + { hashedId8 := p_certHashedId8 } + ); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); @@ -3109,7 +3110,7 @@ module ItsCam_TpFunctions { log("*** " & testcasename() & ": PICS_CAM_RECEPTION required for executing the TC ***"); setverdict(inconc); stop; - } + } // Test component configuration f_cfUp(); diff --git a/ttcn/AtsDENM/ItsDenm_TpFunctions.ttcn b/ttcn/AtsDENM/ItsDenm_TpFunctions.ttcn index 308abe6effb51bbd64169476a7138429fa8853ab..c3881ce4a07e89c4e0c488e5968299988a3b7fa3 100644 --- a/ttcn/AtsDENM/ItsDenm_TpFunctions.ttcn +++ b/ttcn/AtsDENM/ItsDenm_TpFunctions.ttcn @@ -2324,12 +2324,12 @@ module ItsDenm_TpFunctions { f_cfUp(); // Test adapter configuration - f_acTriggerSecEvent(m_setAtCertificate("")); // TODO Set constants for the certificate names // Preamble - f_prInitialState(e_staticPosition, { - hashedId8 := p_certHashedId8 - }); + f_prInitialState( + e_staticPosition, + { hashedId8 := p_certHashedId8 } + ); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); diff --git a/ttcn/AtsSremSsem/ItsSrem_TpFunctions.ttcn b/ttcn/AtsSremSsem/ItsSrem_TpFunctions.ttcn index 13ea9f890f7b87ae8aceecee5cb472621a8c9a52..c73de1a6d0f2e8d8713630a271443ccf95bdbbff 100644 --- a/ttcn/AtsSremSsem/ItsSrem_TpFunctions.ttcn +++ b/ttcn/AtsSremSsem/ItsSrem_TpFunctions.ttcn @@ -153,7 +153,7 @@ module ItsSrem_TpFunctions { } var boolean v_success := true; var RequestIDList v_requestIDLists; - var SremInds v_sremInds; + var SremInds v_sremInds := {}; var integer i; // Test control diff --git a/unittests/codec/ttcn/test_LibItsCam_TypesAndValues.ttcn b/unittests/codec/ttcn/test_LibItsCam_TypesAndValues.ttcn index 3bef5f7e69a5f10c9051107e996f0c7181ccd029..3da095cddc2b64a266d390a5b9825c4e7abbff8f 100644 --- a/unittests/codec/ttcn/test_LibItsCam_TypesAndValues.ttcn +++ b/unittests/codec/ttcn/test_LibItsCam_TypesAndValues.ttcn @@ -7,6 +7,7 @@ module test_LibItsCam_TypesAndValues /*language "TTCN-3:2009 Advanced Parameteri // LibItsCommon import from LibItsCommon_TypesAndValues all; + import from LibItsCommon_Templates all; // AtsCam import from LibItsCam_TestSystem all; @@ -95,7 +96,20 @@ module test_LibItsCam_TypesAndValues /*language "TTCN-3:2009 Advanced Parameteri } // End of group camTemplates + group testAcEvent { + + testcase tc_acSetAtCertificate() runs on TCType system TCType { + test_PDU(m_acEnableSecurity("AT_IUT_1"), false); + } + + testcase tc_acSecResponse() runs on TCType system TCType { + test_decodePDU(AcSecResponse:?, '040101'O); + } + + } // End of group testAcEvent + group testUtEvent { + testcase tc_UtCamInitialize() runs on TCType system TCType { test_PDU(m_camInitialize, false); } diff --git a/unittests/codec/ttcn/test_LibItsGeoNetworking_TypesAndValues.ttcn b/unittests/codec/ttcn/test_LibItsGeoNetworking_TypesAndValues.ttcn index 10ec8a22b82a510923e32ac88db7b5343f9e4641..291615d4ce2778ee2da9952d9089597dbc962d92 100644 --- a/unittests/codec/ttcn/test_LibItsGeoNetworking_TypesAndValues.ttcn +++ b/unittests/codec/ttcn/test_LibItsGeoNetworking_TypesAndValues.ttcn @@ -11,6 +11,7 @@ module test_LibItsGeoNetworking_TypesAndValues /*language "TTCN-3:2009 Advanced // LibItsCommon import from LibItsCommon_TypesAndValues all; + import from LibItsCommon_Templates all; import from LibItsCommon_Functions all; // LibItsExternal @@ -72,7 +73,7 @@ module test_LibItsGeoNetworking_TypesAndValues /*language "TTCN-3:2009 Advanced */ template (value) LongPosVector m_dummyLongPosVectorIut := { gnAddr := m_dummyGnAddrIut, - timestamp := 123456, + timestamp_ := 123456, latitude := 4856, longitude := 675, pai := '1'B, @@ -103,7 +104,7 @@ module test_LibItsGeoNetworking_TypesAndValues /*language "TTCN-3:2009 Advanced template (value) LongPosVector m_dummyLongPosVectorNodeA := { gnAddr := m_dummyGnAddrNodeA, - timestamp := 875, + timestamp_ := 875, latitude := 265, longitude := 789, pai := '0'B, @@ -113,7 +114,7 @@ module test_LibItsGeoNetworking_TypesAndValues /*language "TTCN-3:2009 Advanced template (value) LongPosVector m_dummyLongPosVectorNodeB := { gnAddr := m_dummyGnAddrNodeB, - timestamp := 4585, + timestamp_ := 4585, latitude := 126, longitude := 123, pai := '0'B, @@ -123,7 +124,7 @@ module test_LibItsGeoNetworking_TypesAndValues /*language "TTCN-3:2009 Advanced template (value) LongPosVector m_dummyLongPosVectorNodeC := { gnAddr := m_dummyGnAddrNodeC, - timestamp := 23644, + timestamp_ := 23644, latitude := 23754, longitude := 49645, pai := '0'B, @@ -404,10 +405,10 @@ module test_LibItsGeoNetworking_TypesAndValues /*language "TTCN-3:2009 Advanced f_getTsLongitude() ); - test_PDU( - AcGnPrimitive:{ acEnableSecurity := m_enableSecurity( + test_PDU( + m_acEnableSecurity( "TA_CERT_A" - ) }, + ), false ); } @@ -417,8 +418,8 @@ module test_LibItsGeoNetworking_TypesAndValues /*language "TTCN-3:2009 Advanced * @verdict Pass on success, Fail otherwise */ testcase tc_disableSecurity() runs on TCType system TCType { - test_PDU( - AcGnPrimitive:{ acDisableSecurity := m_disableSecurity }, + test_PDU( + m_acDisableSecurity, false ); } diff --git a/unittests/codec/ttcn/test_LibItsMapSpat_TypesAndValues.ttcn3 b/unittests/codec/ttcn/test_LibItsMapSpat_TypesAndValues.ttcn3 index 2c649569b882f2430885f45b0327623f73be11ce..bf748178e5a0a069bd6e608f3c783d499c2b78ee 100644 --- a/unittests/codec/ttcn/test_LibItsMapSpat_TypesAndValues.ttcn3 +++ b/unittests/codec/ttcn/test_LibItsMapSpat_TypesAndValues.ttcn3 @@ -1,4 +1,4 @@ -module test_LibItsMapSpat_TypesAndValues { +module test_LibItsMapemSpatem_TypesAndValues { // LibCommon import from LibCommon_BasicTypesAndValues all; @@ -6,26 +6,26 @@ module test_LibItsMapSpat_TypesAndValues { // LibIts import from ITS_Container language "ASN.1:1997" all; + import from MAPEM_PDU_Descriptions language "ASN.1:1997" all; + import from SPATEM_PDU_Descriptions language "ASN.1:1997" all; import from DSRC language "ASN.1:1997" all; - import from REG_D language "ASN.1:1997" all; - import from MAP_SPAT_ETSI language "ASN.1:1997" all; // LibItsCommon import from LibItsCommon_TypesAndValues all; // LibItsMapSpat - import from LibItsMapSpat_TypesAndValues all; - import from LibItsMapSpat_Templates all; - import from LibItsMapSpat_TestSystem all; + import from LibItsMapemSpatem_TypesAndValues all; + import from LibItsMapemSpatem_Templates all; + import from LibItsMapemSpatem_TestSystem all; import from test_CommonCodec all; - group LibItsMapSpat_testCases { + group LibItsMapemSpatem_testCases { group utPrimitives { testcase tc_UtInitialize() runs on TCType system TCType { - test_PDU(m_mapSpatInitialize, false); + test_PDU(m_mapemSpatemInitialize, false); } testcase tc_UtInitializeResult() runs on TCType system TCType { @@ -33,25 +33,25 @@ module test_LibItsMapSpat_TypesAndValues { } testcase tc_UtMapSpatTrigger_01() runs on TCType system TCType { - test_PDU( + test_PDU( m_utTriggerEvent( - spatMsg + startTLMService ), false ); } testcase tc_UtMapSpatTrigger_02() runs on TCType system TCType { - test_PDU( + test_PDU( m_utTriggerEvent( - mapNewContent + spatemNewContent ), false ); } testcase tc_UtMapSpatTriggerResult() runs on TCType system TCType { - test_decodePDU(UtMapSpatTriggerResult:?, 'A10105'O); + test_decodePDU(UtMapemSpatemTriggerResult:?, 'A10105'O); } } // End of group utPrimitives @@ -59,38 +59,34 @@ module test_LibItsMapSpat_TypesAndValues { group testMapSpatPrimitiveMessages { testcase tc_MapSpatReq_01() runs on TCType system TCType { - var MapReq v_mapReq; + var MapemReq v_mapReq; - v_mapReq := valueof( - m_mapReq( - m_mapPdu( - m_map - ))); + v_mapReq := valueof(m_mapemReq(m_mapemPdu(m_defaultMapem))); log("v_mapReq=", v_mapReq); - test_PDU( + test_PDU( v_mapReq, false ); - test_decodePDU( + test_decodePDU( v_mapReq, '01050001B2074004800500FFFFFFFFFFFFFFFFFFFFFFFF'O ) } testcase tc_MapSpatReq_02() runs on TCType system TCType { - var SpatReq v_spatReq; + var SpatemReq v_spatReq; v_spatReq := valueof( - m_spatReq( - m_spatPdu( + m_spatemReq( + m_spatemPdu( m_spat ))); log("v_spatReq=", v_spatReq); - test_PDU( + test_PDU( v_spatReq, false ); - test_decodePDU( + test_decodePDU( v_spatReq, '01040001B2074130000000BB8520000002000080FFFFFFFFFFFFFFFFFFFFFFFF'O ) @@ -98,22 +94,22 @@ module test_LibItsMapSpat_TypesAndValues { testcase tc_MapSpatInd_01() runs on TCType system TCType { - test_decodePDU( - mw_mapInd(mw_mapPdu), + test_decodePDU( + mw_mapemInd(mw_mapemPdu), '01050001B2074004800500FFFFFFFFFFFFFFFFFFFFFFFF'O ); } testcase tc_MapSpatInd_02() runs on TCType system TCType { - test_decodePDU( - mw_spatInd(mw_spatPdu), + test_decodePDU( + mw_spatemInd(mw_spatemPdu), '01040001B2074130000000BB8520000002000080FFFFFFFFFFFFFFFFFFFFFFFF'O ); } } // End of group testMapSpatPrimitiveMessages - } // End of group LibItsMapSpat_testCases + } // End of group LibItsMapemSpatem_testCases -} // End of module test_LibItsMapSpat_TypesAndValues \ No newline at end of file +} // End of module test_LibItsMapemSpatem_TypesAndValues \ No newline at end of file diff --git a/unittests/codec/ttcn/test_LibItsSecurity_TypesAndValues.ttcn3 b/unittests/codec/ttcn/test_LibItsSecurity_TypesAndValues.ttcn3 index d961d1860bd8c6073c41203128e4bbfbec6f3e37..561439d368898935928acc296d80695e08d27653 100644 --- a/unittests/codec/ttcn/test_LibItsSecurity_TypesAndValues.ttcn3 +++ b/unittests/codec/ttcn/test_LibItsSecurity_TypesAndValues.ttcn3 @@ -1,12 +1,17 @@ module test_LibItsSecurity_TypesAndValues { // LibCommon - import from LibItsCommon_Functions {function f_getCurrentTime;} + import from LibItsCommon_Functions all; import from LibCommon_DataStrings all; + // LibItsCommon + import from LibItsCommon_TypesAndValues all; + import from LibItsCommon_Templates all; + import from LibItsCommon_Functions all; + // LibItsSecurity import from LibItsSecurity_TypesAndValues all; - import from LibItsSecurity_Templates {template all;} + import from LibItsSecurity_Templates all; import from LibItsSecurity_Functions all; import from LibItsSecurity_Pixits all; @@ -29,12 +34,12 @@ module test_LibItsSecurity_TypesAndValues { '0000'O }; - test_PDU( - m_enableSecurity( + test_PDU( + m_acEnableSecurity( "TA_CERT_A" - ), + ), false - ); + ); } } // End of group securityAcPrimitives diff --git a/unittests/codec/ttcn/test_all.ttcn3 b/unittests/codec/ttcn/test_all.ttcn3 index 73877c49a627ba5be7993d14c930db6df645f2e5..0cc79ad5ebefeb9d111d0a6489ed2049c88d44dc 100644 --- a/unittests/codec/ttcn/test_all.ttcn3 +++ b/unittests/codec/ttcn/test_all.ttcn3 @@ -2,22 +2,26 @@ module test_all /*language "TTCN-3:2009 Advanced Parameterization"*/ { import from test_LibItsGeoNetworking_TypesAndValues all; - import from test_LibItsIpv6OverGeoNetworking_TypesAndValues all; +// import from test_LibItsIpv6OverGeoNetworking_TypesAndValues all; - import from test_LibItsBtp_TypesAndValues all; +// import from test_LibItsBtp_TypesAndValues all; import from test_LibItsCam_TypesAndValues all; - import from test_LibItsDenm_TypesAndValues all; +// import from test_LibItsDenm_TypesAndValues all; - import from test_LibItsFntp_TypesAndValues all; +// import from test_LibItsFntp_TypesAndValues all; +// +// import from test_LibItsFsap_TypesAndValues all; - import from test_LibItsFsap_TypesAndValues all; - - import from test_LibItsExternalFunctions all; +// import from test_LibItsExternalFunctions all; import from test_LibItsSecurity_TypesAndValues all; - import from test_LibItsMapSpat_TypesAndValues all; +// import from test_LibItsMapemSpatem_TypesAndValues all; +// import from test_LibItsIvim_TypesAndValues all; +// +// import from test_LibItsSremSsem_TypesAndValues all; +// } // End of module test_all \ No newline at end of file