[Feature]add MT2731_MP2_MR2_SVN388 baseline version
Change-Id: Ief04314834b31e27effab435d3ca8ba33b499059
diff --git a/meta/meta-mediatek/recipes-bsp/bl33/files/pbp/hsm.py b/meta/meta-mediatek/recipes-bsp/bl33/files/pbp/hsm.py
new file mode 100755
index 0000000..be8d484
--- /dev/null
+++ b/meta/meta-mediatek/recipes-bsp/bl33/files/pbp/hsm.py
@@ -0,0 +1,78 @@
+import filecmp
+import os
+
+g_key_table = None
+
+class hsm_param:
+ def __init__(self):
+ #you can add parameter required by your HSM here
+ self.m_ref_key_path = ""
+ self.m_key_id = 0
+ self.m_attr1 = 0
+ self.m_attr2 = 0
+ self.m_padding_dict = {"raw": 0, "pss": 1}
+ self.m_padding = 0 #default: raw
+
+def create_key_table():
+ global g_key_table
+ if None == g_key_table:
+ #create key table
+ #here is reference design, please customize
+ #this part according to your HSM spec.
+ script_folder, script_name = os.path.split(os.path.realpath(__file__))
+ key_folder = os.path.join(script_folder, "keys")
+ key_folder = os.path.join(key_folder, "hsm")
+ g_key_table = list()
+ #key1 parameter
+ key1_param = hsm_param()
+ key1_param.m_ref_key_path = os.path.join(key_folder, 'pubk1.pem')
+ key1_param.m_key_id = 0
+ key1_param.m_attr1 = 1
+ key1_param.m_attr2 = 1
+ g_key_table.append(key1_param)
+ #key2 parameter
+ key2_param = hsm_param()
+ key2_param.m_ref_key_path = os.path.join(key_folder, 'pubk2.pem')
+ key2_param.m_key_id = 1
+ key2_param.m_attr1 = 2
+ key2_param.m_attr2 = 2
+ g_key_table.append(key2_param)
+ return
+
+def query_key_table(key):
+ global g_key_table
+ create_key_table()
+ for key_table_entry in g_key_table:
+ if filecmp.cmp(key, key_table_entry.m_ref_key_path):
+ print "key index: " + hex(key_table_entry.m_key_id)
+ return key_table_entry
+ print "no valid key entry found in table"
+ return None
+
+def hsm_rsa_sign(data, key, padding, sig):
+ hsm_param_obj = None
+
+ #note that key is pubk actually, use it as index for
+ #HSM parameters such as key selection
+ hsm_param_obj = query_key_table(key)
+ if None == hsm_param_obj:
+ return -1
+ hsm_param_obj.m_padding = hsm_param_obj.m_padding_dict[padding]
+
+ print "========================"
+ print "HSM parameter:"
+ print " m_key_id = " + hex(hsm_param_obj.m_key_id)
+ print " m_padding = " + hex(hsm_param_obj.m_padding)
+ print " m_attr1 = " + hex(hsm_param_obj.m_attr1)
+ print " m_attr2 = " + hex(hsm_param_obj.m_attr2)
+ print "========================"
+
+ #place hsm request here -- start
+ #create dummy sig for now
+ sig_file = open(sig, 'wb')
+ for i in range(0, 256):
+ sig_file.write(chr(0))
+ sig_file.close()
+ #place hsm request here -- end
+ return 0
+