--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/wim/inc/Wimi.h Tue Jan 26 15:20:08 2010 +0200
@@ -0,0 +1,963 @@
+/*
+* Copyright (c) 2003 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: WIMI definitions used by WimServer and WimClient.
+* All WIMI.lib API functions are described in this file.
+*
+*/
+
+
+#ifndef WIMI_H
+#define WIMI_H
+
+#include <e32base.h>
+#include <libc/stddef.h> // For size_t
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+// CONSTANTS
+
+/* CDF of certificate */
+const TUint WIMLIB_CERTIFICATES_CDF = 0x20;
+const TUint WIMLIB_TRUSTEDCERTS_CDF = 0x40;
+const TUint WIMLIB_USEFULCERTS_CDF = 0x80;
+
+/* PIN flags */
+const TUint8 WIMI_PF_DisableAllowed = 0x10;
+const TUint8 WIMI_PF_UnblockDisabled = 0x20;
+const TUint8 WIMI_PF_ChangeDisabled = 0x40;
+const TUint8 WIMI_PF_Enabled = 0x80;
+
+
+/* Certificate usage */
+const TUint WIMI_CU_Client = 0;
+const TUint WIMI_CU_CA = 1;
+
+/* Certificate type */
+const TUint WIMI_CT_WTLS = 1;
+const TUint WIMI_CT_X509 = 2;
+const TUint WIMI_CT_X968 = 3;
+const TUint WIMI_CT_URL = 4;
+const TUint WIMI_CT_UNKNOWN = 255;
+
+/* APDU driver status codes */
+const TUint8 WIMI_APDU_OK = 0;
+const TUint8 WIMI_APDU_TRANSMISSION_ERROR = 1;
+
+
+// DATA TYPES
+
+/* Return type for status codes */
+typedef TUint16 WIMI_STAT;
+
+/* Reference types */
+typedef void WIMI_Ref_t;
+typedef WIMI_Ref_t* WIMI_Ref_pt;
+
+/* Reference list */
+typedef WIMI_Ref_pt* WIMI_RefList_t;
+
+/* Binary data */
+typedef struct
+ {
+ TUint8* pb_buf;
+ TUint16 ui_buf_length;
+ TUint8 filler_byte[2]; /* filler byte to ensure alignment*/
+ } WIM_BIN_DATA;
+
+typedef WIM_BIN_DATA WIMI_BinData_t;
+
+/* Label list */
+typedef WIMI_BinData_t* WIMI_labelptr_t;
+typedef WIMI_labelptr_t* WIMI_labellist_t;
+
+/* Hash context type */
+typedef void WIMI_Hash_t;
+
+/* Transaction ID */
+typedef void *WIMI_TransactId_t;
+
+/* WTLS Certificate info structure */
+typedef struct
+ {
+ TUint16 ParsedLen;
+ TUint8 SignAlg;
+ TUint8* Issuer;
+ TUint16 IssuerLen;
+ TUint32 ValidNotBefore;
+ TUint32 ValidNotAfter;
+ TUint8* Subject;
+ TUint16 SubjectLen;
+ TUint8 PublicKeyType;
+ TUint16 exponentlen;
+ TUint8* exponent;
+ TUint16 moduluslen;
+ TUint8* modulus;
+ TUint16 signaturelen;
+ TUint8* signature;
+ } WIMI_WTLS_CertInfo_t;
+
+/* File info structure for Provisioning files */
+typedef struct
+ {
+ WIM_BIN_DATA t_label;
+ WIM_BIN_DATA t_oid;
+ WIM_BIN_DATA b_path;
+ TUint16 ui_flags; /* bitmask */
+ TUint16 ui_file_size;
+ TUint8 ui_pin_ref;
+ TUint8 filler_byte[3]; /* filler byte to ensure alignment*/
+ } WIMI_File_Info;
+
+/* Status codes */
+enum __WIMI_STATUS_CODES
+ {
+ WIMI_Ok = 0,
+ WIMI_Err,
+ WIMI_ERR_Internal,
+ WIMI_ERR_OutOfMemory,
+ WIMI_ERR_BadParameters,
+ WIMI_ERR_ServerCertRejected,
+ WIMI_ERR_WrongReference,
+ WIMI_ERR_CipherNotSupported,
+ WIMI_ERR_MACANotSupported,
+ WIMI_ERR_SessionNotSet,
+ WIMI_ERR_WrongKES,
+ WIMI_ERR_DecodeError,
+ WIMI_ERR_ExpiredReference,
+ WIMI_ERR_NoKey,
+ WIMI_ERR_CertNotYetValid,
+ WIMI_ERR_CertExpired,
+ WIMI_ERR_UnknownCA,
+ WIMI_ERR_CertParseError,
+ WIMI_ERR_UnsupportedCertificate,
+ WIMI_ERR_SignCheckFailed,
+ WIMI_ERR_NoWIM,
+ WIMI_ERR_NoKES,
+ WIMI_ERR_HashInitFailed,
+ WIMI_ERR_HashUpdateFailed,
+ WIMI_ERR_HashCopyFailed,
+ WIMI_ERR_HashFinalFailed,
+ WIMI_ERR_HashInvalidAlgorithm,
+ WIMI_ERR_UnknownKeyId,
+ WIMI_ERR_KeyStorageFull,
+ WIMI_ERR_BadKey,
+ WIMI_ERR_CertStorageFull,
+ WIMI_ERR_BadCert,
+ WIMI_ERR_PStorageError,
+ WIMI_ERR_CertNotFound,
+ WIMI_ERR_KeyNotFound,
+ WIMI_ERR_BadReference,
+ WIMI_ERR_OperNotSupported,
+ WIMI_ERR_BadPIN,
+ WIMI_ERR_CardDriverInitError,
+ WIMI_ERR_CardIOError,
+ WIMI_ERR_AlgorithmNotYetImplemented,
+ WIMI_ERR_PINBlocked,
+ WIMI_ERR_OperNotAllowed,
+ WIMI_ERR_NoCert,
+ WIMI_ERR_CAcertNotYetValid,
+ WIMI_ERR_CAcertExpired,
+ WIMI_ERR_BadCAcert,
+ WIMI_ERR_UserCancelled = 0x8F
+ };
+
+/* Operation codes for some WIMI calls */
+enum TWimiOpcodes
+ {
+ ENoOperation, // No operation
+ EInitializationCertListHashing, // Cert hash
+ EOMAProvContentSync // Synchronous OMA Provisioning file fetch
+ };
+
+
+// =============================================================================
+// Callback functions. User of WIMI (WimServer) has to implement these
+// functions.
+// =============================================================================
+
+/* ------------ WIMI initialization and closing --------------------------- */
+/**
+ WIMI init respond callback.
+ aStatus - operation status
+**/
+typedef void ( *WIMI_InitResp_t )( WIMI_STAT aStatus );
+
+/**
+ WIMI close respond callback
+ aStatus - operation status
+**/
+typedef void ( *WIMI_CloseDownResp_t )( WIMI_STAT aStatus );
+
+/* ------------ Digital signature ----------------------------------------- */
+/**
+ Respond to the digital signature operation
+ aTrId - transaction id
+ aStatus - operation status
+ aSignLen - signature length
+ aSign - signature
+**/
+typedef void ( *WIMI_SignResp_t )( WIMI_TransactId_t aTrId,
+ WIMI_STAT aStatus,
+ TUint8 aSignLen,
+ TUint8* aSign );
+
+/* ------------ Certificate management ------------------------------------ */
+/**
+ Respond to the certificate fetch operation
+ aTrId - transaction id
+ aStatus - operation status
+ aCertRef - the reference to certificate that was fetched
+ aCertLen - certificate content length
+ aCert - certificate content
+**/
+typedef void ( *WIMI_CertificateResp_t )( WIMI_TransactId_t aTrId,
+ WIMI_STAT aStatus,
+ WIMI_Ref_t* aCertRef,
+ TUint16 aCertLen,
+ TUint8* aCert );
+
+/**
+ Respond to the certificate delete operation
+ aTrId - transaction id
+ aStatus - operation status
+**/
+typedef void ( *WIMI_CertificateDeleteResp_t )( WIMI_TransactId_t aTrId,
+ WIMI_STAT aStatus );
+
+/**
+ Respond to the certificate store operation
+ aTrId - transaction id
+ aStatus - operation status
+ aCertRef - the reference to certificate that was stored
+**/
+typedef void ( *WIMI_CertificateStoreResp_t )( WIMI_TransactId_t aTrId,
+ WIMI_STAT aStatus,
+ WIMI_Ref_t* aCertRef );
+
+
+/* ------------ PIN management -------------------------------------------- */
+/**
+ Respond to the Verify PIN operation
+ aTrId - transaction id
+ aStatus - operation status
+**/
+typedef void ( *WIMI_VerifyPINResp_t )( WIMI_TransactId_t aTrId,
+ WIMI_STAT aStatus );
+
+/**
+ Respond to the Change PIN operation
+ aTrId - transaction id
+ aStatus - operation status
+**/
+typedef void ( *WIMI_ChangePINResp_t )( WIMI_TransactId_t aTrId,
+ WIMI_STAT aStatus );
+
+/**
+ Respond to the Unblock PIN operation
+ aTrId - transaction id
+ aStatus - operation status
+**/
+typedef void ( *WIMI_UnblockPINResp_t )( WIMI_TransactId_t aTrId,
+ WIMI_STAT aStatus );
+
+/**
+ Respond to the Enable PIN operation
+ aTrId - transaction id
+ aStatus - operation status
+**/
+typedef void ( *WIMI_EnablePINResp_t )( WIMI_TransactId_t aTrId,
+ WIMI_STAT aStatus );
+
+/* ------------ Hardware driver support ----------------------------------- */
+/**
+ Card inserted response
+ aReader - reader ID
+ aStatus - operation status
+ aWimReg - WIM reference
+**/
+typedef void ( *WIMI_CardInsertedResp_t )( TUint8 aReader,
+ WIMI_STAT aStatus,
+ WIMI_Ref_t* aWimRef );
+
+/**
+ Open WIM request (connection request)
+ aReader - reader ID
+**/
+typedef TUint8 ( *WIMI_Open_t )( TUint8 aReader );
+
+/**
+ Close WIM request (close connection)
+ aReader - reader ID
+**/
+typedef TUint8 ( *WIMI_Close_t )( TUint8 aReader );
+
+/**
+ APDU request
+ aReader - reader ID
+ aApdu - APDU
+ aApduLen - length of APDU
+**/
+typedef void ( *WIMI_APDUReq_t )( TUint8 aReader,
+ TUint8* aApdu,
+ TUint16 aApduLen );
+
+/**
+ Get ATR request
+ aReader - reader ID
+**/
+typedef void ( *WIMI_GetATRReq_t )( TUint8 aReader );
+
+/**
+ Get reader list request
+**/
+typedef void ( *WIMI_GetReaderListReq_t )( void );
+
+/**
+ Read SIM file request
+ aReader - reader ID
+ aPath - path to read from
+ aOffset - offset
+ aSize - size to be read
+**/
+typedef void ( *WIMI_ReadSimFileReq_t )( TUint8 aReader,
+ TUint8* aPath,
+ TUint16 aOffset,
+ TUint16 aSize );
+
+/**
+ Provisioning file response
+ aTrId - transaction ID
+ aStatus - operation status
+ aFileLen - lenght of file
+ aFile - file content
+**/
+typedef void (*WIMI_ProvSCFileResp_t)( WIMI_TransactId_t aTrId,
+ WIMI_STAT aStatus,
+ TUint16 aFileLen,
+ TUint8* aFile );
+
+/* WIMI Callbacks */
+typedef struct __WIMI_CALLBACKS
+ {
+ WIMI_InitResp_t InitOkResp;
+ WIMI_CloseDownResp_t CloseDownResp;
+ WIMI_SignResp_t SignResp;
+ WIMI_CertificateResp_t CertificateResp;
+ WIMI_CertificateDeleteResp_t CertificateDeleteResp;
+ WIMI_CertificateStoreResp_t CertificateStoreResp;
+ WIMI_VerifyPINResp_t VerifyPINResp;
+ WIMI_ChangePINResp_t ChangePINResp;
+ WIMI_UnblockPINResp_t UnblockPINResp;
+ WIMI_EnablePINResp_t EnablePINResp;
+ WIMI_CardInsertedResp_t CardInsertedResp;
+ WIMI_Open_t Open;
+ WIMI_Close_t Close;
+ WIMI_APDUReq_t APDUReq;
+ WIMI_GetATRReq_t GetATRReq;
+ WIMI_GetReaderListReq_t GetReaderListReq;
+ WIMI_ReadSimFileReq_t ReadSimFileReq;
+ WIMI_ProvSCFileResp_t ProvSCFileResp;
+ } WIMI_Callbacks_t;
+
+/* ------------ Memory allocation/deallocation functions ------------------ */
+
+/**
+ Allocate memory block
+ aMemorySize - size of memory block to be allocated
+**/
+void* WSL_OS_Malloc( size_t aMemorySize );
+
+/**
+ Deallocate memory block
+ aBuffer - Pointer to memory to be freed
+**/
+void WSL_OS_Free( void* aBuffer );
+
+/* ------------ WIMI initialization and closing --------------------------- */
+
+/**
+ WIMI initialization request.
+ WIMI should be initialized before WIM operations.
+ aCb parameter should point to the temporary structure
+ which can be deallocated after function call
+**/
+WIMI_STAT WIMI_InitializeReq( WIMI_Callbacks_t* aCb );
+
+/**
+ WIMI close request.
+**/
+WIMI_STAT WIMI_CloseDownReq( void );
+
+/* ------------ Referencies ----------------------------------------------- */
+/**
+ Copy and dealloc references
+ Creates a copy of reference. Function doesn't check reference validity.
+ Returns NULL in case of memory allocation failure.
+ aRef - reference to be copied
+**/
+WIMI_Ref_t* copy_WIMI_Ref_t( WIMI_Ref_t* aRef );
+
+/* Deallocates memory occupied by reference.
+ aRef - reference to be freed
+**/
+void free_WIMI_Ref_t( WIMI_Ref_t* aRef );
+
+/**
+ Creates a copy of reference list. Function doesn't check references
+ validity. Returns NULL in case of memory allocation failure.
+ aList - reference list to be copied
+**/
+WIMI_RefList_t copy_WIMI_RefList_t( WIMI_RefList_t aList );
+
+/**
+ Deallocates memory occupied by reference list.
+ aList - reference list to be freed
+**/
+void free_WIMI_RefList_t( WIMI_RefList_t aList );
+
+/* ------------ Digital signature ----------------------------------------- */
+/**
+ Digital signature request. Signed data is returned in callback.
+ aTrId - transaction id.
+ User application data that will be provided in respond callback
+ to match request/response.
+ aHash - SHA1 hash of data to be signed.
+ aHashLen - length of hash
+ aKeyRef - key reference which should be used for sign operaition.
+ aPin - PIN code for the referenced key.
+**/
+WIMI_STAT WIMI_SignReq( WIMI_TransactId_t aTrId,
+ TUint8* aHash,
+ TUint8 aHashLen,
+ WIMI_Ref_t* aKeyRef,
+ WIMI_BinData_t* aPin );
+
+/* ------------ Label list ------------------------------------------------ */
+/**
+ Returns label list for specified reference list.
+ All references in a list should be of one type.
+ Possible reference types are: PIN, KEY or Certificate.
+ aElNum - IN - number of elements
+ aRefList - IN - list of references
+ aLabelList - OUT - string list. Should be freed by caller.
+**/
+WIMI_STAT WIMI_GetLabelList( TUint8 aElNum,
+ WIMI_RefList_t aRefList,
+ WIMI_labellist_t* aLabelList );
+
+/* ------------ Key management -------------------------------------------- */
+/**
+ Returns key list for one WIM.
+ aWimRef - IN - WIM reference
+ aKeyNum - OUT - number of returned keys
+ aRefList - OUT - key list. Should be freed by caller.
+**/
+WIMI_STAT WIMI_GetKeyListByWIM( WIMI_Ref_t* aWimRef,
+ TUint16* aKeyNum,
+ WIMI_RefList_t* aRefList );
+
+/**
+Returns key reference by given key hash.
+ aHash - IN - SHA1 hash of the public key.
+ aKeyRef - OUT - Allocated key reference. Should be freed by caller.
+**/
+WIMI_STAT WIMI_GetKeyByHash( TUint8* aHash,
+ WIMI_Ref_t** aKeyRef );
+
+/**
+ Returns info for referenced key.
+ aKeyRef - IN - key reference
+ aWimRef - OUT - reference to WIM where certificate reside. Freed by caller
+ aPin - OUT - PIN code that protects key
+ aKeyType - OUT - key type (1 = RSA, 2 = ECC)
+ aKeyNumber - OUT - the number of current key
+ aPinNumber - OUT - PIN number
+ aUsage - OUT - PKCS15 key usage flags. See #defines in wimi_types.h
+ aKeyId - OUT - hash of public key. Should be deallocated by caller.
+ aLabel - OUT - key label. Should be deallocated by caller
+ aKeyLength - OUT - key length in bits
+**/
+WIMI_STAT WIMI_GetKeyInfo( WIMI_Ref_t* aKeyRef,
+ WIMI_Ref_t** aWimRef,
+ WIMI_Ref_t** aPin,
+ TUint8* aKeyType,
+ TUint8* aKeyNumber,
+ TUint8* aPinNumber,
+ TUint16* aUsage,
+ WIMI_BinData_t* aKeyId,
+ WIMI_BinData_t* aLabel,
+ TUint16* aKeyLength ); /* in bits */
+
+
+/* ------------ Certificate management ------------------------------------ */
+/**
+ Returns list of referencies to client certificates on all WIMs with
+ the same client key reference.
+ aKeyRef - IN - key reference
+ aCertCount - OUT - certificate number
+ aRefList - OUT - allocated reference list. Should be freed by caller
+**/
+WIMI_STAT WIMI_GetClCertificateListByKey( WIMI_Ref_t* aKeyRef,
+ TUint8* aCertCount,
+ WIMI_RefList_t* aRefList );
+
+/**
+ Returns list of referencies to certificates on all WIMs with the same
+ public key (hash).
+ aHash - IN - key hash
+ aUsage - IN - certificate purpose (0 = client, 1 = CA)
+ aCertCount - OUT - certificate count
+ aRefList - OUT - allocated reference list. Should be freed by caller
+**/
+WIMI_STAT WIMI_GetCertificateListByKeyHash( TUint8* aHash,
+ TUint8 aUsage,
+ TUint8* aCertCount,
+ WIMI_RefList_t* aRefList );
+
+/**
+ Returns list of referencies to certificates on all WIMs with the same
+ public key (hash).
+ aCAHash - IN - key hash
+ aUsage - IN - certificate purpose
+ aCertNum - OUT - certificate number
+ aRefList - OUT - allocated reference list. Should be freed by caller
+**/
+WIMI_STAT WIMI_GetCertificateListByCAKeyHash( TUint8* aCAHash,
+ TUint8 aUsage,
+ TUint8* aCertNum,
+ WIMI_RefList_t* aRefList );
+
+/**
+ Returns list of referencies to certificates on a WIM.
+ aWimRef - IN - WIM reference
+ aUsage - IN - Certificate usage (0 = client, 1 = CA)
+ aCertNum - OUT - certificate number
+ aRefList - OUT - allocated reference list. Should be freed by caller
+**/
+WIMI_STAT WIMI_GetCertificateListByWIM( WIMI_Ref_t* aWimRef,
+ TUint8 aUsage,
+ TUint8* aCertNum,
+ WIMI_RefList_t* aRefList );
+
+/**
+ Returns information about certificate stored in WIM
+ aCert - IN - cert. reference.
+ aWimRef - OUT - reference to WIM where cert is stored. Freed by caller
+ aLabel - OUT - certificate label. pb_buf pointer in structure
+ points to allocated buffer that should be deallocated by caller
+ aKeyId - OUT - hash of public key. pb_buf pointer in WIMI_BinData_t struct
+ points to allocated buffer that should be deallocated by caller
+ aCAId - OUT - hash of issuer public key. pb_buf pointer in WIMI_BinData_t
+ structure points to allocated buffer that should be deallocated by caller
+ aTrustedUsage - OUT - trusted usage OID's for this certificate
+ aCDFRefs - OUT - information about the CDF that the certificate was
+ referenced. Possible values: WIMLIB_CERTIFICATES_CDF,
+ WIMLIB_TRUSTEDCERTS_CDF, WIMLIB_USEFULCERTS_CDF
+ aUsage - OUT - 0 = client, 1 = CA
+ aType - OUT - WTLSCert(1), X509Cert(2), X968Cert(3), CertURL(4)
+ aCertlen - OUT - length of certificate content
+**/
+WIMI_STAT WIMI_GetCertificateInfo( WIMI_Ref_t* aCert,
+ WIMI_Ref_t** aWimRef,
+ WIMI_BinData_t* aLabel,
+ WIMI_BinData_t* aKeyID,
+ WIMI_BinData_t* aCAId,
+ WIMI_BinData_t* aIssuerNameHash,
+ WIMI_BinData_t* aTrustedUsage,
+ TUint8* aCDFRefs,
+ TUint8* aUsage,
+ TUint8* aType,
+ TUint16* aCertLen,
+ TUint8* aModifiable );
+
+/**
+ Requests certificate contents from WIM.
+ aTrId - transaction id.
+ User application data that will be provided in respond callback
+ to match request/response.
+ aCertRef - certificate reference
+ aCert - retrieved certificate
+**/
+WIMI_STAT WIMI_CertificateReqT( WIMI_TransactId_t aTrId,
+ WIMI_Ref_t* aCertRef,
+ WIMI_BinData_t* aCert );
+
+/**
+ Requests certificate contents from WIM.
+ aTrId - transaction id.
+ User application data that will be provided in respond callback
+ to match request/response.
+ aCertRef - certificate reference
+**/
+WIMI_STAT WIMI_CertificateReq( WIMI_TransactId_t aTrId,
+ WIMI_Ref_t* aCertRef );
+
+/**
+ Requests certificate to be deleted from WIM.
+ aTrId - transaction id.
+ User application data that will be provided in respond callback
+ to match request/response.
+ aCertRef - certificate reference
+**/
+WIMI_STAT WIMI_CertificateDeleteReq( WIMI_TransactId_t aTrId,
+ WIMI_Ref_t* aCertRef );
+/**
+ Requests certificate to be stored to WIM.
+ aTrId - transaction id.
+ User application data that will be provided in respond callback
+ to match request/response.
+ aWimRef - WIM reference where to store the certificate
+ aLabel - certificate label
+ aKeyId - hash of public key.
+ aCAId - hash of issuer public key.
+ aIssuerNameHash - Issuer name hash
+ aSubjectNameHash - Subject name hash
+ aUsage - 0 = client, 1 = CA
+ aType - WTLSCert(1), X509Cert(2), X968Cert(3), CertURL(4)
+ aCertLen - certificate contents len
+ aCert - certificate contents
+**/
+WIMI_STAT WIMI_CertificateStoreReq( WIMI_TransactId_t aTrId,
+ WIMI_Ref_t* aWimRef,
+ WIMI_BinData_t* aLabel,
+ WIMI_BinData_t* aKeyId,
+ WIMI_BinData_t* aCAId,
+ WIMI_BinData_t* aIssuerNameHash,
+ WIMI_BinData_t* aSubjectNameHash,
+ TUint8 aUsage,
+ TUint8 aType,
+ TUint16 aCertLen,
+ TUint8* aCert );
+
+/* ------------ PIN management -------------------------------------------- */
+/**
+ Returns status of PIN
+ aPinRef - IN - PIN reference
+ aWimRef - OUT - WIM reference. Should be freed by caller.
+ aFlags - OUT - bitmask WIMI_PF_Enabled, WIMI_PF_ChangeDisabled,
+ WIMI_PF_UnblockDisabled and WIMI_PF_DisableAllowed
+ minlength - OUT - minimal PIN length
+ aPinNumber - OUT - the number of the pin
+ aLabel - OUT - PIN label - Should be deallocated by caller.
+**/
+WIMI_STAT WIMI_GetPINStatus( WIMI_Ref_t* aPinRef,
+ WIMI_Ref_t** aWimRef,
+ TUint8* aFlags,
+ TUint8* aMinlength,
+ TUint8* aPinNumber,
+ WIMI_BinData_t* aLabel );
+
+/**
+ Returns Info of Authobj
+ pWIMref -IN WIM reference
+ authId -IN Authobj Id
+ pt_lable -OUT
+ flags -OUT
+ pinnumber -OUT
+ minlength -OUT
+ maxlength -OUT
+ pinType -OUT
+ storedlength -OUT
+ pinReference -OUT
+ padChar -OUT
+**/
+WIMI_STAT WIMI_GetAuthObjInfo( WIMI_Ref_t* pWIMref,
+ TUint32* authId,
+ WIMI_BinData_t* pt_label,
+ TUint16* flags,
+ TUint8* pinnumber,
+ TUint8* minLength,
+ TUint8* maxLength,
+ TUint8* pinType,
+ TUint8* storedLength,
+ TUint8* pinReference,
+ TUint8* padChar );
+
+/**
+ Returns the PINs list for one WIM.
+ If aWimRef is NULL, then returns the list for all WIMs.
+ aWimRef - IN - WIMI reference
+ aPinNum - OUT - number of PIN in list
+ aRefList - OUT - allocated PIN list. Should be freed by caller.
+**/
+WIMI_STAT WIMI_GetPINList( WIMI_Ref_t* aWimRef,
+ TUint16* aPinNum,
+ WIMI_RefList_t* aRefList );
+
+/**
+ PIN verify request. If WIM general PIN is given then WIM becomes open after
+ successful verify operation
+ aTrId - transaction id.
+ User application data that will be provided in respond callback to
+ match request/response.
+ aPinRrf - PIN reference
+ aPinLen - entered PIN length
+ aPin - entered PIN data
+**/
+WIMI_STAT WIMI_VerifyPINReq( WIMI_TransactId_t aTrId,
+ WIMI_Ref_t* aPinRef,
+ TUint8 aPinLen,
+ TUint8* aPin );
+
+/**
+ PIN change request.
+ aTrId - transaction id.
+ User application data that will be provided in respond callback
+ to match request/response.
+ aPinRef - PIN reference
+ aOldPinLen - old PIN length
+ aOldPin - old PIN for granting operation permission
+ aNewPinLen - new PIN length
+ aNewPin - new PIN that should replace old
+**/
+WIMI_STAT WIMI_ChangePINReq( WIMI_TransactId_t aTrId,
+ WIMI_Ref_t* aPinRef,
+ TUint8 aOldPinLen,
+ TUint8* aOldPin,
+ TUint8 aNewPinLen,
+ TUint8* aNewPin );
+
+/**
+ PIN unblock request.
+ aTrId - transaction id.
+ User application data that will be provided in respond
+ callback to match request/response.
+ aPinRef - PIN reference
+ aUnblockPinLen - length of unblocking code
+ aUnblockPin - unblocking code
+ aNewPinLen - new PIN length
+ aNewPin - new PIN that should replace old after unblocking
+**/
+WIMI_STAT WIMI_UnblockPINReq( WIMI_TransactId_t aTrId,
+ WIMI_Ref_t* aPinRef,
+ TUint8 aUnblockPinLen,
+ TUint8* aUnblockPin,
+ TUint8 aNewPinLen,
+ TUint8* aNewPin );
+
+/**
+ Enable or disable PIN request.
+ aTrId - transaction id.
+ User application data that will be provided in respond callback
+ to match request/response.
+ aPinRef - PIN reference
+ aPinLen - PIN length
+ aPin - PIN for granting operation permission
+ aEnable - if TRUE then enable else disable
+**/
+WIMI_STAT WIMI_EnablePINReq( WIMI_TransactId_t aTrId,
+ WIMI_Ref_t* aPinRef,
+ TUint8 aPinLen,
+ TUint8* aPin,
+ TBool aEnable );
+
+/* ------------ Hardware driver support ----------------------------------- */
+/**
+ Returns WIM information.
+ aWimRef - IN - WIM reference.
+ aFlags - OUT - reserved for future use
+ aSESet - OUT - security environments bitset. See WIMI_SE_ constants
+ aWimId - OUT - WIM serial number - pb_buf pointer in WIMI_BinData_t
+ should be deallocated by caller
+ aManufacturerId - OUT - manufacturer info - Should be
+ deallocated by caller
+ aLabel - OUT - WIM label - pb_buf pointer in WIMI_BinData_t structure
+ should be deallocated by caller
+ aReader - OUT - reader ID
+ aPinG - OUT - reference to PIN-G
+ aSim - OUT - if TRUE then WIM is SIM only
+ aVersion - OUT - version
+**/
+WIMI_STAT WIMI_GetWIMInfo( WIMI_Ref_t* aWimRef,
+ TUint16* aFlags,
+ TUint8* aSESet,
+ WIMI_BinData_t* aWimId,
+ WIMI_BinData_t* aManufacturerId,
+ WIMI_BinData_t* aLabel,
+ TUint8* aReader,
+ WIMI_Ref_t** aPinG,
+ TBool* aSim,
+ TUint8* aVersion);
+
+/**
+ Returns TRUE if WIM is already opened by general PIN
+ aWimRef - WIM reference
+**/
+TUint8 WIMI_IsWIMOpened( WIMI_Ref_t* aWimRef );
+
+/**
+ Closes the WIM. WIM can be reopened with VerifyPIN operation.
+ aWimRef - WIM reference
+**/
+WIMI_STAT WIMI_CloseWIM( WIMI_Ref_t* aWimRef );
+
+/**
+ Returns the reference of WIM currently associated with reader.
+ Returns valid reference if WIM card is inserted and initialized,
+ other case NULL.
+ aReader - reader number - 0-7
+**/
+WIMI_Ref_t* WIMI_GetWIMRef( TUint8 aReader );
+
+/**
+ Starts the initialization of newly inserted card.
+ aReader - reader number - 0-7
+**/
+WIMI_STAT WIMI_CardInsertedReq( TUint8 aReader );
+
+/**
+ Informs WIMI that card was removed from reader.
+ aReader - reader number - 0-7
+**/
+WIMI_STAT WIMI_CardRemoved( TUint8 aReader );
+
+/**
+ APDU respond from smartcard driver processing.
+ aReader - reader number - 0-7
+ aStatus - WIMI_APDU_ codes
+ aAPDU - received APDU
+ aSw - status word for APDU codec support
+**/
+void WIMI_APDUResp( TUint8 aReader,
+ TUint8 aStatus,
+ WIMI_BinData_t* aAPDU,
+ TUint16 aSw );
+
+/**
+ ATR respond from smartcard driver processing.
+ aReader - reader number - 0-7
+ aStatus - WIMI_APDU_ codes
+ aATR - ATR
+**/
+void WIMI_GetATRResp( TUint8 aReader,
+ TUint8 aStatus,
+ WIMI_BinData_t* aATR );
+
+/**
+ Respond for a reader list request.
+ aStatus - WIMI_APDU_ codes
+ aList - list of card reader statuses
+ Status = 0 \
+ 1 ) CardReaderIdentity 0-7
+ 2 /
+ 3 Card reader is not removable
+ 4 Card reader is present
+ 5 Card reader is ID-1 size
+ 6 Card is present in reader
+ 7 Card in reader is powered on
+**/
+void WIMI_GetReaderListResp( TUint8 aStatus,
+ WIMI_BinData_t* aList );
+
+/**
+ Free memory
+ aMem - Pointer to memory area to be freed
+**/
+void WIMI_Free( void* aMem );
+
+/**
+ Respond to ReadSimFileReq
+ aReader - reader number
+ aStatus - error code for file reading
+ aData - content of read file
+**/
+void WIMI_SIM_ReadFileResp( TUint8 aReader,
+ TUint8 aStatus,
+ WIMI_BinData_t* aData );
+
+/**
+ Return information of OMA Provisioning file on card
+ aWimRef - IN - WIM reference
+ aFileInfos - OUT - File info structure
+ aFileCount - OUT - Count of provisioning files
+**/
+WIMI_STAT WIMI_OMAFileInfo( WIMI_Ref_t* aWimRef,
+ WIMI_File_Info** aFileInfos,
+ TUint16* aFileCount );
+
+/**
+ Return information of Java Provisioning file on card
+ aWimRef - IN - WIM reference
+ aFileInfos - OUT - File info structure
+ aFileCount - OUT - Count of provisioning files
+**/
+WIMI_STAT WIMI_JAVAFileInfo( WIMI_Ref_t* aWIMref,
+ WIMI_File_Info** aFileInfos,
+ TUint16* aFileCount );
+/**
+ Get WIM count
+ aWimRef - IN - WIM reference.
+ aWimCount - OUT - count of WIMs
+**/
+WIMI_STAT WIMI_GetWIMCount( WIMI_Ref_t* aWimRef, TUint8* aWimCount );
+
+/**
+ Get content of OMA Provisioning file. Content is returned by callback.
+ aTrId - IN - Transaction ID
+ aWimRef - IN - WIM reference
+ aFileSize - IN - File size
+ aPath - IN - File path
+**/
+WIMI_STAT WIMI_GetOMAFile( WIMI_TransactId_t aTrId,
+ WIMI_Ref_t* aWimRef,
+ TUint16 aFileSize,
+ WIM_BIN_DATA* aPath );
+
+/**
+ Get content of OMA Provisioning file. Synchronous version.
+ aTrId - IN - Transaction ID
+ aWimRef - IN - WIM reference
+ aPath - IN - File path
+ aFileMaxSize - IN - Not used
+ aFileContent - OUT - File content. Buffer allocated by WIMI, must be freed
+ by caller.
+**/
+WIMI_STAT WIMI_GetOMAFileSync( WIMI_TransactId_t aTrId,
+ WIMI_Ref_t* aWimRef,
+ WIM_BIN_DATA* aPath,
+ TUint16 aFileMaxSize,
+ WIM_BIN_DATA* aFileContent );
+
+
+/**
+ Return content of JAVA Provisioning file on card
+ pWimRef - IN - WIM reference
+ pt_path - IN - File path
+ pt_file_content - OUT
+**/
+WIMI_STAT WIMI_GetJAVAFile( WIMI_Ref_t* pWIMref,
+ WIM_BIN_DATA* pt_path,
+ WIM_BIN_DATA* pt_file_content );
+
+
+/**
+ Return content of WIM label and path
+ pWimRef - IN - WIM reference
+ path - OUT - File path
+ label - OUT
+**/
+WIMI_STAT WIMI_GetLabelAndPath(WIMI_Ref_t* pWIMref,
+ WIM_BIN_DATA* path,
+ WIM_BIN_DATA* label );
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif // WIMI_H
+
+// End of File