Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
ITS - Intelligent Transport Systems
ITS
Commits
59215f8a
Commit
59215f8a
authored
Oct 26, 2016
by
garciay
Browse files
Bug fixed in encoding value > 127
parent
a06495c6
Changes
1
Hide whitespace changes
Inline
Side-by-side
javasrc/codec/org/etsi/ttcn/codec/its/security/IntX.java
View file @
59215f8a
...
@@ -5,6 +5,7 @@
...
@@ -5,6 +5,7 @@
*/
*/
package
org.etsi.ttcn.codec.its.security
;
package
org.etsi.ttcn.codec.its.security
;
import
org.etsi.common.ByteHelper
;
import
org.etsi.ttcn.codec.CodecBuffer
;
import
org.etsi.ttcn.codec.CodecBuffer
;
import
org.etsi.ttcn.codec.MainCodec
;
import
org.etsi.ttcn.codec.MainCodec
;
import
org.etsi.ttcn.codec.generic.Integer
;
import
org.etsi.ttcn.codec.generic.Integer
;
...
@@ -66,23 +67,11 @@ public class IntX extends Integer {
...
@@ -66,23 +67,11 @@ public class IntX extends Integer {
public
CodecBuffer
encode
(
Value
value
)
{
public
CodecBuffer
encode
(
Value
value
)
{
// TERFactory.getInstance().logDebug(">>> IntX.encode: " + value.getType().getName());
// TERFactory.getInstance().logDebug(">>> IntX.encode: " + value.getType().getName());
if
(
mainCodec
.
getTciCDRequired
().
getInteger
((
IntegerValue
)
value
)
<
128
)
{
int
iv
=
mainCodec
.
getTciCDRequired
().
getInteger
((
IntegerValue
)
value
);
mainCodec
.
setHint
(
"IntXLen"
,
"8"
);
byte
[]
result
=
TlsHelper
.
getInstance
().
size2tls
(
iv
);
return
super
.
encode
(
value
);
mainCodec
.
setHint
(
"integerLen"
,
String
.
valueOf
(
result
.
length
*
Byte
.
SIZE
));
}
else
{
IntegerValue
newValue
=
mainCodec
.
getTciCDRequired
().
setInteger
(
ByteHelper
.
byteArrayToInt
(
result
));
long
iv
=
mainCodec
.
getTciCDRequired
().
getInteger
((
IntegerValue
)
value
);
return
super
.
encode
(
newValue
);
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
));
return
super
.
encode
(
newValue
);
}
}
}
}
// End of class IntX
}
// End of class IntX
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment