Loading javasrc/codec/org/etsi/ttcn/codec/its/security/IntX.java +6 −17 Original line number Diff line number Diff line Loading @@ -5,6 +5,7 @@ */ package org.etsi.ttcn.codec.its.security; import org.etsi.common.ByteHelper; import org.etsi.ttcn.codec.CodecBuffer; import org.etsi.ttcn.codec.MainCodec; import org.etsi.ttcn.codec.generic.Integer; Loading Loading @@ -66,23 +67,11 @@ public class IntX extends Integer { public CodecBuffer encode(Value value) { // TERFactory.getInstance().logDebug(">>> IntX.encode: " + value.getType().getName()); if (mainCodec.getTciCDRequired().getInteger((IntegerValue)value) < 128) { mainCodec.setHint("IntXLen", "8"); return super.encode(value); } else { long iv = mainCodec.getTciCDRequired().getInteger((IntegerValue)value); long bitLen = TlsHelper.getInstance().bitLength(iv); long byteLen = TlsHelper.getInstance().byteLength(bitLen); long flags = (long) ((byteLen | 1) << (byteLen * Byte.SIZE - TlsHelper.getInstance().bitLength(byteLen) - 1)); long len = (long) (byteLen << (byteLen * Byte.SIZE - TlsHelper.getInstance().bitLength(byteLen) - 1)); if ((flags & iv) != 0) { // We can encode the length on the MSB part byteLen += 1; len = (long) (byteLen << (byteLen * Byte.SIZE - TlsHelper.getInstance().bitLength(byteLen))); } mainCodec.setHint("integerLen", String.valueOf(byteLen * Byte.SIZE )); IntegerValue newValue = mainCodec.getTciCDRequired().setInteger((int)(iv | len)); int iv = mainCodec.getTciCDRequired().getInteger((IntegerValue)value); byte[] result = TlsHelper.getInstance().size2tls(iv); mainCodec.setHint("integerLen", String.valueOf(result.length * Byte.SIZE )); IntegerValue newValue = mainCodec.getTciCDRequired().setInteger(ByteHelper.byteArrayToInt(result)); return super.encode(newValue); } } } // End of class IntX Loading
javasrc/codec/org/etsi/ttcn/codec/its/security/IntX.java +6 −17 Original line number Diff line number Diff line Loading @@ -5,6 +5,7 @@ */ package org.etsi.ttcn.codec.its.security; import org.etsi.common.ByteHelper; import org.etsi.ttcn.codec.CodecBuffer; import org.etsi.ttcn.codec.MainCodec; import org.etsi.ttcn.codec.generic.Integer; Loading Loading @@ -66,23 +67,11 @@ public class IntX extends Integer { public CodecBuffer encode(Value value) { // TERFactory.getInstance().logDebug(">>> IntX.encode: " + value.getType().getName()); if (mainCodec.getTciCDRequired().getInteger((IntegerValue)value) < 128) { mainCodec.setHint("IntXLen", "8"); return super.encode(value); } else { long iv = mainCodec.getTciCDRequired().getInteger((IntegerValue)value); long bitLen = TlsHelper.getInstance().bitLength(iv); long byteLen = TlsHelper.getInstance().byteLength(bitLen); long flags = (long) ((byteLen | 1) << (byteLen * Byte.SIZE - TlsHelper.getInstance().bitLength(byteLen) - 1)); long len = (long) (byteLen << (byteLen * Byte.SIZE - TlsHelper.getInstance().bitLength(byteLen) - 1)); if ((flags & iv) != 0) { // We can encode the length on the MSB part byteLen += 1; len = (long) (byteLen << (byteLen * Byte.SIZE - TlsHelper.getInstance().bitLength(byteLen))); } mainCodec.setHint("integerLen", String.valueOf(byteLen * Byte.SIZE )); IntegerValue newValue = mainCodec.getTciCDRequired().setInteger((int)(iv | len)); int iv = mainCodec.getTciCDRequired().getInteger((IntegerValue)value); byte[] result = TlsHelper.getInstance().size2tls(iv); mainCodec.setHint("integerLen", String.valueOf(result.length * Byte.SIZE )); IntegerValue newValue = mainCodec.getTciCDRequired().setInteger(ByteHelper.byteArrayToInt(result)); return super.encode(newValue); } } } // End of class IntX