summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoranil.hiranniah <anil.hiranniah@nxp.com>2022-01-06 14:32:57 +0530
committeranil.hiranniah <anil.hiranniah@nxp.com>2022-01-06 14:32:57 +0530
commit5cddac99d0596bfe397d5c9b52debf2814347772 (patch)
treed36fa3ae3d7f1a21935fab4d5a1f2975227df0ff
parent885f55e85f3de18db6b2243bbdcbf9699b4299a7 (diff)
downloadSecureElement-5cddac99d0596bfe397d5c9b52debf2814347772.tar.gz
Fix CLA byte encoded with wrong SM bit
As per GP Specification 2.2.0.7: 11.1.4 Class Byte Coding, Secure Messaging bit b3, b4 should be considered only if b7 is equal to 0. Calculation corrected accordingly Bug: 210781080 Test: Test transmit for multiple logical channels(From 1 to 8) Change-Id: I4fb1176c5bfd5426832c3482fa1c8edd5d133ec8
-rwxr-xr-x[-rw-r--r--]src/com/android/se/Channel.java2
-rwxr-xr-xsrc/com/android/se/internal/Util.java2
2 files changed, 2 insertions, 2 deletions
diff --git a/src/com/android/se/Channel.java b/src/com/android/se/Channel.java
index d6df415..33327ed 100644..100755
--- a/src/com/android/se/Channel.java
+++ b/src/com/android/se/Channel.java
@@ -213,7 +213,7 @@ public class Channel implements IBinder.DeathRecipient {
cla = (byte) ((cla & 0xBC) | channelNumber);
} else if (channelNumber < 20) {
// b7 = 1 indicates the further interindustry class byte coding
- boolean isSm = (cla & 0x0C) != 0;
+ boolean isSm = (((cla & 0x40) == 0x00) && ((cla & 0x0C) != 0));
cla = (byte) ((cla & 0xB0) | 0x40 | (channelNumber - 4));
if (isSm) {
cla |= 0x20;
diff --git a/src/com/android/se/internal/Util.java b/src/com/android/se/internal/Util.java
index 8e9cfe3..8a52962 100755
--- a/src/com/android/se/internal/Util.java
+++ b/src/com/android/se/internal/Util.java
@@ -135,7 +135,7 @@ public class Util {
cla = (byte) ((cla & 0xBC) | channelNumber);
} else if (channelNumber < 20) {
// b7 = 1 indicates the further interindustry class byte coding
- boolean isSM = (cla & 0x0C) != 0;
+ boolean isSM = (((cla & 0x40) == 0x00) && ((cla & 0x0C) != 0));
cla = (byte) ((cla & 0xB0) | 0x40 | (channelNumber - 4));
if (isSM) {
cla |= 0x20;