The simple use of this library is really simple, you only need to write a Scheme script and run it with
load.scm contained in the library. Let me introduce a simple script.
(import (rnrs)
(pcsc operations control) ;; for apdu-pretty-print
(pcsc shell commands)
(pcsc dictionary gp)
(srfi :39))
(establish-context)
(card-connect)
;; transmit a select command without any parameter
(select)
(define key #xFFFFFFFFFFFFFFFFFFFFFF) ;; your key must be here
(channel :security *security-level-mac*
:option #x55
:enc-key key
:mac-key key
:dek-key key)
(parameterize ((*tag-dictionary* *gp-dictionary*))
(print "applications")
(apdu-pretty-print (strip-return-code
(invoke-command get-status applications))))
(card-disconnect)
(release-context)
Looks really a Scheme code right? The commands are influenced by GPShell, so if you know it, it would be familiar for you. The result would be like this;
$ sash.exe -Lsrc -Lcontrib load.scm -f status.scm
applications
[Tag] E3: GlobalPlatform Registry related data
[Tag] 4F: AID
[Data] �0��: A0 00 00 00 30 80 00 00 00 04 A6 00 01
[Tag] 9F70: Life Cycle State
[Data] 07 01
[Tag] C5: Privileges
[Data] 00 00 00
[Tag] EA: TS 102 226 specific template
[Tag] 80
[Data]
[Tag] C4: Application's Executable Load File AID
[Data] A0 00 00 00 30 80 00 00 00 04 A6 00
[Tag] CC: Associated Security Domain AID
[Data] A0 00 00 01 51 00 00 00
... so on if you've got any result
The Sagittarius version must be 0.4.2 (current HEAD version) otherwise apdu-pretty-print raises an error. The document is not really done yet. There are 2 ways to refer which command does what, 1 is looking up the code, the other one is starting the REPL and type (help 'command) like this;$ sash.exe -Lsrc -Lcontrib start.scm
pcsc> (help 'select)
select :key aid
Sends select command.
;; If you evaluate (help), the it will show all defined commands.
pcsc> (help)
help [command]
Show help message.
When [command] option is given, show the help of given command.
Following commands are defined:
card-connect
card-disconnect
card-readers
card-status
channel
close-channel
establish-context
exit
get-status
help
load-script
release-context
select
send-apdu
set-keys!
trace-off
trace-on
Note: even though it shows the help string, it is better to look up the code when you really want to understand for now. I will write the document later.There are a lot of missing features such as DELETE commands or LOAD, INSTALL etc. I will add those eventually.
Again, it's still under development state, so your feedback and contribution are always welcome :-)