summaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorPaul Kocialkowski <contact@paulk.fr>2013-02-09 23:43:19 +0100
committerPaul Kocialkowski <contact@paulk.fr>2013-02-09 23:43:19 +0100
commitde38fb7cf9714b36af74aa603090c1cf58833217 (patch)
tree67369732a497927408d8952d66c0d485961403f1 /include
parent1875ad88e925296397c93396871d7a3fd1c6ef79 (diff)
downloadhardware_ril_samsung-ril-de38fb7cf9714b36af74aa603090c1cf58833217.zip
hardware_ril_samsung-ril-de38fb7cf9714b36af74aa603090c1cf58833217.tar.gz
hardware_ril_samsung-ril-de38fb7cf9714b36af74aa603090c1cf58833217.tar.bz2
sec: Handle various SIM I/O message formats based on SIM ICC type
Also make request id registration override older requests. Signed-off-by: Paul Kocialkowski <contact@paulk.fr>
Diffstat (limited to 'include')
-rw-r--r--include/sim.h104
1 files changed, 104 insertions, 0 deletions
diff --git a/include/sim.h b/include/sim.h
new file mode 100644
index 0000000..f071bf1
--- /dev/null
+++ b/include/sim.h
@@ -0,0 +1,104 @@
+/**
+ * This file is part of samsung-ril.
+ *
+ * Copyright (C) 2013 Paul Kocialkowski <contact@paulk.fr>
+ *
+ * samsung-ril is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * samsung-ril is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with samsung-ril. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+#ifndef _SIM_H_
+#define _SIM_H_
+
+// Values from TS 11.11
+#define SIM_COMMAND_READ_BINARY 0xB0
+#define SIM_COMMAND_UPDATE_BINARY 0xD6
+#define SIM_COMMAND_READ_RECORD 0xB2
+#define SIM_COMMAND_UPDATE_RECORD 0xDC
+#define SIM_COMMAND_SEEK 0xA2
+#define SIM_COMMAND_GET_RESPONSE 0xC0
+
+#define SIM_FILE_STRUCTURE_TRANSPARENT 0x00
+#define SIM_FILE_STRUCTURE_LINEAR_FIXED 0x01
+#define SIM_FILE_STRUCTURE_CYCLIC 0x03
+
+#define SIM_FILE_TYPE_RFU 0x00
+#define SIM_FILE_TYPE_MF 0x01
+#define SIM_FILE_TYPE_DF 0x02
+#define SIM_FILE_TYPE_EF 0x04
+
+struct sim_file_id {
+ unsigned short file_id;
+ unsigned char type;
+};
+
+struct sim_file_id sim_file_ids[] = {
+ { 0x2F05, SIM_FILE_TYPE_EF },
+ { 0x2FE2, SIM_FILE_TYPE_EF },
+ { 0x3F00, SIM_FILE_TYPE_MF },
+ { 0x4F20, SIM_FILE_TYPE_EF },
+ { 0x5F3A, SIM_FILE_TYPE_DF },
+ { 0x6F05, SIM_FILE_TYPE_EF },
+ { 0x6F06, SIM_FILE_TYPE_EF },
+ { 0x6F07, SIM_FILE_TYPE_EF },
+ { 0x6F11, SIM_FILE_TYPE_EF },
+ { 0x6F13, SIM_FILE_TYPE_EF },
+ { 0x6F14, SIM_FILE_TYPE_EF },
+ { 0x6F15, SIM_FILE_TYPE_EF },
+ { 0x6F16, SIM_FILE_TYPE_EF },
+ { 0x6F17, SIM_FILE_TYPE_EF },
+ { 0x6F18, SIM_FILE_TYPE_EF },
+ { 0x6F38, SIM_FILE_TYPE_EF },
+ { 0x6F38, SIM_FILE_TYPE_EF },
+ { 0x6F3A, SIM_FILE_TYPE_EF },
+ { 0x6F40, SIM_FILE_TYPE_EF },
+ { 0x6F42, SIM_FILE_TYPE_EF },
+ { 0x6F45, SIM_FILE_TYPE_EF },
+ { 0x6F46, SIM_FILE_TYPE_EF },
+ { 0x6F48, SIM_FILE_TYPE_EF },
+ { 0x6F49, SIM_FILE_TYPE_EF },
+ { 0x6F4A, SIM_FILE_TYPE_EF },
+ { 0x6F4D, SIM_FILE_TYPE_EF },
+ { 0x6F50, SIM_FILE_TYPE_EF },
+ { 0x6F56, SIM_FILE_TYPE_EF },
+ { 0x6FAD, SIM_FILE_TYPE_EF },
+ { 0x6FAE, SIM_FILE_TYPE_EF },
+ { 0x6FB7, SIM_FILE_TYPE_EF },
+ { 0x6FC5, SIM_FILE_TYPE_EF },
+ { 0x6FC6, SIM_FILE_TYPE_EF },
+ { 0x6FC7, SIM_FILE_TYPE_EF },
+ { 0x6FC9, SIM_FILE_TYPE_EF },
+ { 0x6FCA, SIM_FILE_TYPE_EF },
+ { 0x6FCB, SIM_FILE_TYPE_EF },
+ { 0x6FCD, SIM_FILE_TYPE_EF },
+ { 0x7F10, SIM_FILE_TYPE_DF },
+ { 0x7F20, SIM_FILE_TYPE_DF },
+};
+
+int sim_file_ids_count = sizeof(sim_file_ids) / sizeof(sim_file_ids[0]);
+
+struct sim_file_response {
+ unsigned char rfu12[2];
+ unsigned char file_size[2];
+ unsigned char file_id[2];
+ unsigned char file_type;
+ unsigned char rfu3;
+ unsigned char access_condition[3];
+ unsigned char file_status;
+ unsigned char file_length;
+ unsigned char file_structure;
+ unsigned char record_length;
+} __attribute__((__packed__));
+
+#endif