blob: e238a38851a997943b2ec15e7b0fc6be9e90f4da [file] [log] [blame]
#!/usr/bin/python
import sys
import dbus
bus = dbus.SystemBus()
def extract_list(list):
val = "["
for i in list:
val += " " + str(i)
val += " ]"
return val
def usage():
print "Usage: %s <command>" % (sys.argv[0])
print ""
print " list"
print " enabled se/nfcX_<se_type>_seX [on/off]"
print " open_channel se/nfcX_<se_type>_seX <AID>"
print " close_channel se/nfcX_<se_type>_seX channelX"
sys.exit(1)
if (len(sys.argv) < 2):
usage()
if (sys.argv[1] == "list"):
if (len(sys.argv) != 2):
usage()
else:
manager = dbus.Interface(bus.get_object("org.neard.se", "/"),
"org.neard.se.Manager")
properties = manager.GetProperties()
for path in properties["SecureElements"]:
print "[ %s ]" % (path)
seel = dbus.Interface(bus.get_object("org.neard.se", path),
"org.neard.se.SecureElement")
properties = seel.GetProperties()
for key in properties.keys():
if key in ["Enabled"]:
if properties[key] == dbus.Boolean(1):
val = "true"
else:
val = "false"
print " %s = %s" % (key, val)
if key in ["Type"]:
print " %s = %s" % (key, str(properties[key]))
if key in ["Channels"]:
print " %s = %s" % (key, extract_list(properties[key]))
sys.exit(0)
if (sys.argv[1] == "enabled"):
if (len(sys.argv) < 4):
usage()
else:
path = "/org/neard/se/" + sys.argv[2]
seel = dbus.Interface(bus.get_object("org.neard.se", path),
"org.neard.se.SecureElement")
try:
if (sys.argv[3] == "on"):
val = seel.SetProperty("Enabled", dbus.Boolean(1), timeout = 10)
elif (sys.argv[3] == "off"):
val = seel.SetProperty("Enabled", dbus.Boolean(0), timeout = 10)
else:
print "Invalid option %s" % sys.argv[3]
except dbus.DBusException, error:
print "%s: %s" % (error._dbus_error_name, error.message)
sys.exit(0)
if (sys.argv[1] == "open_channel"):
if (len(sys.argv) < 4):
usage()
else:
path = "/org/neard/se/" + sys.argv[2]
seel = dbus.Interface(bus.get_object("org.neard.se", path),
"org.neard.se.SecureElement")
try:
channel = seel.OpenChannel(sys.argv[3].decode("hex"))
print "Opened channel: %s" % str(channel)
except dbus.DBusException, error:
print "%s: %s" % (error._dbus_error_name, error.message)
sys.exit(0)
if (sys.argv[1] == "close_channel"):
if (len(sys.argv) < 4):
usage()
else:
seel_path = "/org/neard/se/" + sys.argv[2]
channel_path = seel_path + "/" + sys.argv[3]
seel = dbus.Interface(bus.get_object("org.neard.se", seel_path),
"org.neard.se.SecureElement")
channel = dbus.Interface(bus.get_object("org.neard.se", channel_path),
"org.neard.se.Channel")
try:
seel.CloseChannel(channel)
except dbus.DBusException, error:
print "%s: %s" % (error._dbus_error_name, error.message)
sys.exit(0)
usage()