Components All New MacOS Windows Linux iOS
Examples Mac & Win Server Client Guides Statistic FMM Blog Deprecated Old

SmartCard.ReadFile

Read file from smart card with APDU protocol.

Component Version macOS Windows Linux Server iOS SDK
SmartCard 8.5 ✅ Yes ✅ Yes ❌ No ✅ Yes, on macOS and Windows ❌ No
MBS( "SmartCard.ReadFile"; SmartCardContext; FileID; ResultType )   More

Parameters

Parameter Description Example
SmartCardContext The smartcard context reference number. $SmartCardContext
FileID The fileID of the file to retrieve.
Given as hex string.
"2F07"
ResultType How to return data.
Can be JPEG, Hex or Base64.
"Hex"

Result

Returns data or error.

Description

Read file from smart card with APDU protocol.
Returns data in desired encoding or error message.
The first two bytes (4 Hex characters) are status code.
For JPEG we remove status code to return only image.
For Swiss health cards, the relevant IDs are 2F06 and 2F07.

For Belgian EID:

4031ID RN
4032SGN RN
4033ID Address
4034SGN Address
4035ID Photo

You find the IDs for files usually in documentation or your card!
For some cards you may first need to move down a hierarchy of folders to get an item via SmartCard.Transmit.

Examples

Read file from smartcard with APDU protocol:

Set Variable [ $result ; Value: MBS( "SmartCard.ReadFile"; $$SmartCard; Card::FileID) ]
If [ MBS("IsError") ]
    Set Field [ Card::Status ; $result ]
    Show Custom Dialog [ "Error" ; $result ]
Else
    Set Field [ Card::FileData ; $result ]
    Set Field [ Card::Status ; "OK " & Left ( $result ; 4 ) ]
    #
    Perform Script [ Specified: From list ; “Split” ; Parameter: ]
End If

Query name from Swiss health card:

# Initialize smart card:
Set Variable [ $$SmartCard ; Value: MBS( "SmartCard.Init" ) ]
If [ MBS("IsError") ]
    Show Custom Dialog [ "Failed to initialize SmartCard" ; $$SmartCard ]
    Exit Script [ Text Result: ]
End If
#
# Connect to a reader
Set Variable [ $reader ; Value: "Identiv SCR3310 uTrust 2700 R" ]
Set Variable [ $r ; Value: MBS( "SmartCard.Connect"; $$SmartCard; $Reader; "Shared"; "any" ) ]
If [ MBS("IsError") ]
    Show Custom Dialog [ "Connect failed" ; $r ]
    Exit Script [ Text Result: ]
End If
#
# Read file from smartcard with APDU protocol.
#
# Read record with name
Set Variable [ $result ; Value: MBS( "SmartCard.ReadFile"; $$SmartCard; "2F06") ]
If [ MBS("IsError") ]
    Set Field [ Card::Status ; $result ]
    Show Custom Dialog [ "Error" ; $result ]
    Exit Script [ Text Result: ]
End If
# Pick result
Set Variable [ $filedata ; Value: $result ]
#
# Split in values
Set Variable [ $json ; Value: MBS("SmartCard.SplitValues"; $FileData) ]
# Get item 128, which is full name
Set Variable [ $name ; Value: JSONGetElement ( $json ; "128" ) ]
Set Variable [ $NameList ; Value: Substitute($name; ", "; ¶) ]
Set Variable [ $LastName ; Value: GetValue($nameList; 1) ]
Set Variable [ $FirstName ; Value: GetValue($nameList; 2) ]
#
Show Custom Dialog [ "Name" ; $FirstName & " " & $LastName ]
Set Variable [ $r ; Value: MBS( "SmartCard.Disconnect"; $$SmartCard; "Eject") ]

See also

Release notes

Example Databases

Blog Entries

This function checks for a license.

Created 19th October 2018, last changed 6th December 2019


SmartCard.ReadCertificate - SmartCard.Reconnect