Skip Navigation Links | |
Exit Print View | |
![]() |
man pages section 3: Extended Library Functions Oracle Solaris 10 8/11 Information Library |
Extended Library Functions - Part 1
Extended Library Functions - Part 2
Extended Library Functions - Part 3
Extended Library Functions - Part 4
Extended Library Functions - Part 5
ptree_add_row_to_table(3PICLTREE)
ptree_create_and_add_node(3PICLTREE)
ptree_create_and_add_prop(3PICLTREE)
ptree_get_first_prop(3PICLTREE)
ptree_get_frutree_parent(3PICLTREE)
ptree_get_next_by_col(3PICLTREE)
ptree_get_next_by_row(3PICLTREE)
ptree_get_next_prop(3PICLTREE)
ptree_get_node_by_path(3PICLTREE)
ptree_get_prop_by_name(3PICLTREE)
ptree_get_propinfo_by_name(3PICLTREE)
ptree_get_propval_by_name(3PICLTREE)
ptree_init_propinfo(3PICLTREE)
ptree_register_handler(3PICLTREE)
ptree_unregister_handler(3PICLTREE)
ptree_update_propval(3PICLTREE)
ptree_update_propval_by_name(3PICLTREE)
ptree_walk_tree_by_class(3PICLTREE)
rsm_create_localmemory_handle(3RSM)
rsm_free_interconnect_topology(3RSM)
rsm_free_localmemory_handle(3RSM)
rsm_get_interconnect_topology(3RSM)
rsm_intr_signal_wait_pollfd(3RSM)
rsm_memseg_export_create(3RSM)
rsm_memseg_export_destroy(3RSM)
rsm_memseg_export_publish(3RSM)
rsm_memseg_export_rebind(3RSM)
rsm_memseg_export_republish(3RSM)
rsm_memseg_export_unpublish(3RSM)
rsm_memseg_import_close_barrier(3RSM)
rsm_memseg_import_connect(3RSM)
rsm_memseg_import_destroy_barrier(3RSM)
rsm_memseg_import_disconnect(3RSM)
rsm_memseg_import_get_mode(3RSM)
rsm_memseg_import_init_barrier(3RSM)
rsm_memseg_import_open_barrier(3RSM)
rsm_memseg_import_order_barrier(3RSM)
rsm_memseg_import_set_mode(3RSM)
rsm_memseg_release_pollfd(3RSM)
SCF_Card_exchangeAPDU(3SMARTCARD)
SCF_Card_waitForCardRemoved(3SMARTCARD)
scf_entry_destroy_children(3SCF)
scf_instance_get_pg_composed(3SCF)
scf_instance_get_snapshot(3SCF)
scf_iter_instance_pgs_composed(3SCF)
scf_iter_instance_pgs_typed(3SCF)
scf_iter_instance_pgs_typed_composed(3SCF)
scf_iter_instance_snapshots(3SCF)
scf_iter_property_values(3SCF)
scf_iter_service_instances(3SCF)
scf_iter_service_pgs_typed(3SCF)
scf_iter_snaplevel_pgs_typed(3SCF)
scf_pg_get_parent_instance(3SCF)
scf_pg_get_parent_service(3SCF)
scf_pg_get_parent_snaplevel(3SCF)
scf_pg_get_underlying_pg(3SCF)
scf_service_add_instance(3SCF)
scf_service_get_instance(3SCF)
SCF_Session_freeInfo(3SMARTCARD)
SCF_Session_getSession(3SMARTCARD)
SCF_Session_getTerminal(3SMARTCARD)
scf_simple_app_props_free(3SCF)
scf_simple_app_props_get(3SCF)
scf_simple_app_props_next(3SCF)
scf_simple_app_props_search(3SCF)
scf_simple_prop_next_astring(3SCF)
scf_simple_prop_next_boolean(3SCF)
scf_simple_prop_next_count(3SCF)
scf_simple_prop_next_integer(3SCF)
scf_simple_prop_next_opaque(3SCF)
scf_simple_prop_next_reset(3SCF)
scf_simple_prop_next_time(3SCF)
scf_simple_prop_next_ustring(3SCF)
scf_simple_prop_numvalues(3SCF)
scf_simple_walk_instances(3SCF)
scf_snaplevel_get_instance_name(3SCF)
scf_snaplevel_get_next_snaplevel(3SCF)
scf_snaplevel_get_parent(3SCF)
scf_snaplevel_get_scope_name(3SCF)
scf_snaplevel_get_service_name(3SCF)
scf_snapshot_get_base_snaplevel(3SCF)
SCF_Terminal_addEventListener(3SMARTCARD)
SCF_Terminal_close(3SMARTCARD)
SCF_Terminal_freeInfo(3SMARTCARD)
SCF_Terminal_getCard(3SMARTCARD)
SCF_Terminal_getInfo(3SMARTCARD)
SCF_Terminal_removeEventListener(3SMARTCARD)
SCF_Terminal_updateEventListener(3SMARTCARD)
SCF_Terminal_waitForCardAbsent(3SMARTCARD)
SCF_Terminal_waitForCardPresent(3SMARTCARD)
scf_transaction_destroy_children(3SCF)
scf_transaction_property_change(3SCF)
scf_transaction_property_change_type(3SCF)
scf_transaction_property_delete(3SCF)
scf_transaction_property_new(3SCF)
scf_transaction_reset_all(3SCF)
scf_value_get_as_string_typed(3SCF)
- retrieve information about a session, terminal, or card
cc [ flag… ] file… -lsmartcard [ library…] #include <smartcard/scf.h> SCF_Status_t SCF_Session_getInfo(SCF_Session_t session, const char *name, void *value);
SCF_Status_t SCF_Terminal_getInfo(SCF_Terminal_t terminal, const char *name, void *value);
SCF_Status_t SCF_Card_getInfo(SCF_Card_t card, const char *name, void *value);
An object that was returned from SCF_Terminal_getCard(3SMARTCARD).
The name of a property for which a value is to be returned. The name is case-sensitive.
An object that was returned from SCF_Session_getSession(3SMARTCARD).
An object that was returned from SCF_Session_getTerminal(3SMARTCARD).
The value of the property. The actual type of the value depends on what property was being queried.
These functions obtain information about a session, terminal, or card. The information returned represents the current state of the object and can change between calls.
Each call allocates new storage for the returned result. This storage is tracked internally and is deallocated when the object is closed. An application repeatedly asking for information can cause memory bloat until the object is closed. The application can optionally call SCF_Session_freeInfo(3SMARTCARD), SCF_Terminal_freeInfo(3SMARTCARD), or SCF_Card_freeInfo(3SMARTCARD) to cause immediate deallocation of the value. Applications must not use other means such asfree(3C) to deallocate the memory.
Applications must not access values that have been deallocated. For example, accessing a Card's ATR after the card has been closed results in undefined behavior.
For a session, the valid property names and value types are:
The list of terminal names that can currently be used in this session. The returned value is an array of char *, each element of the list is a pointer to a terminal name. The end of the array is denoted by a null pointer. The first element of the list is the default terminal for the session, which will be used when SCF_Session_getTerminal() is called with a null pointer for the terminal name.
For a terminal, the standard property names and value types are as follows. Some terminal drivers can define additional driver-specific properties.
The name of the terminal. If the default terminal was used (a null pointer was passed to SCF_Session_getTerminal()), the value will contain the actual name of the default terminal. For example, “MyInternalCardReader”.
The type of the terminal. For example, “SunISCRI”.
Information about how the device is attached to the system. This can be a UNIX device name (for example, “/dev/scmi2c0”) or some other terminal-specific string describing its relation to the system.
For a card, the valid property names and value types are:
The type of the smartcard, as recognized by the framework (For example, “Cyberflex”). If the framework does not recognize the card type, “UnknownCard” is returned.
The Answer To Reset (ATR) data returned by the card when it was last inserted or reset. The structure member length denotes how many bytes are in the ATR. The structure member data is a pointer to the actual ATR bytes.
Upon success, SCF_STATUS_SUCCESS is returned and value will contain the requested information. Otherwise, an error value is returned and value remains unaltered.
These functions will fail if:
Either name or value is a null pointer.
The session, terminal, or card has been closed or is invalid.
An internal error occurred.
The property specified by name was not found.
Example 1 Simple string information.
SCF_Status_t status; SCF_Terminal_t myTerminal; const char *myName, *myType; /* (...call SCF_Session_getTerminal to open myTerminal...) */ status = SCF_Terminal_getInfo(myTerminal, "name", &myName); if (status != SCF_STATUS_SUCCESS) exit(1); status = SCF_Terminal_getInfo(myTerminal, "type", &myType); if (status != SCF_STATUS_SUCCESS) exit(1); printf("The terminal called %s is a %s\n", myName, myType);
Example 2 Display the names of all terminals available in the session.
SCF_Status_t status; SCF_Session_t mySession; const char **myList; /* Technically "const char * const *". */ int i; /* (...call SCF_Session_getSession to open mySession...) */ status = SCF_Session_getInfo(mySession, "terminalnames", &myList); if (status != SCF_STATUS_SUCCESS) exit(1); printf("The following terminals are available:\n"); for (i=0; myList[i] != NULL; i++) { printf("%d: %s\n", i, myList[i]); }
Example 3 Display the card's ATR.
SCF_Status_t status; SCF_Card_t myCard; struct SCF_BinaryData_t *myATR; int i; /* (...call SCF_Terminal_getCard to open myCard...) */ status = SCF_Card_getInfo(myCard, "atr", &myATR); if (status != SCF_STATUS_SUCCESS) exit(1); printf("The card's ATR is: 0x"); for(i=0; i < myATR->length; i++) { printf("%02.2x", myATR->data[i]); } printf("\n");
See attributes(5) for descriptions of the following attributes:
|
libsmartcard(3LIB), SCF_Session_freeInfo(3SMARTCARD), SCF_Session_getSession(3SMARTCARD), SCF_Session_getTerminal(3SMARTCARD), SCF_Terminal_getCard(3SMARTCARD), attributes(5)