sc-hsm-embedded
src/ctccid/ccidT1.c File Reference
#include <stdlib.h>
#include <string.h>
#include "ccidT1.h"
#include "ccid_usb.h"

Functions

void ccidT1InitProtocol (scr_t *ctx)
int ccidT1Term (struct scr *ctx)
int ccidT1ReceiveBlock (scr_t *ctx)
int ccidT1SendBlock (scr_t *ctx, unsigned char Nad, unsigned char Pcb, unsigned char *Buffer, int BuffLen)
int ccidT1Resynch (scr_t *ctx, int SrcNode, int DestNode)
int ccidT1AbortChain (scr_t *ctx, int SrcNode, int DestNode)
int ccidT1GetBlock (scr_t *ctx, int SrcNode, int DestNode)
int ccidT1SendData (scr_t *ctx, int HostMode, int SrcNode, int DestNode, unsigned char *Buffer, int BuffLen)
int ccidT1ReceiveData (scr_t *ctx, int SrcNode, int DestNode, unsigned char *Buffer, int BuffLen)
int ccidT1Transport (scr_t *ctx, int SrcNode, int DestNode, unsigned char *OBuffer, int OBuffLen, unsigned char *IBuffer, int IBuffLen)
int ccidT1Process (struct scr *ctx, unsigned int lc, unsigned char *cmd, unsigned int *lr, unsigned char *rsp)
int ccidT1Init (struct scr *ctx)

Function Documentation

int ccidT1AbortChain ( scr_t ctx,
int  SrcNode,
int  DestNode 
)

Abort a sequence of chained transmission blocks

Parameters:
ctxReader context
SrcNodeSource node
DestNodeDestination node
Returns:
0 on success, -1 on error
int ccidT1GetBlock ( scr_t ctx,
int  SrcNode,
int  DestNode 
)

Receive a transmission block and handle all S-block requests

Parameters:
ctxReader context
SrcNodeSource node
DestNodeDestination node
Returns:
0 on success, -1 on error
int ccidT1Init ( struct scr ctx)

Initialize T=1 protocol driver module

Parameters:
ctxReader context
void ccidT1InitProtocol ( scr_t ctx)

Initialize all T=1 protocol parameter to its default values

Parameters:
ctxReader context
int ccidT1Process ( struct scr ctx,
unsigned int  lc,
unsigned char *  cmd,
unsigned int *  lr,
unsigned char *  rsp 
)

Process a APDU using T=1 protocol

Parameters:
ctxReader context
lcLength of command APDU
cmdCommand APDU
lrLength of response APDU
rspResponse APDU
Returns:
0 on success, -1 on error
int ccidT1ReceiveBlock ( scr_t ctx)

Receive a block in T=1 protocol

Parameters:
ctxReader context
Returns:
0 on success, -1 or ERR_EDC on error
int ccidT1ReceiveData ( scr_t ctx,
int  SrcNode,
int  DestNode,
unsigned char *  Buffer,
int  BuffLen 
)

Decode a received block into the data buffer passed to the application

Parameters:
ctxReader context
SrcNodeSource node
DestNodeDestination node
BufferIncoming data buffer
BuffLenLength of incoming data buffer
Returns:
Length of data received
int ccidT1Resynch ( scr_t ctx,
int  SrcNode,
int  DestNode 
)

Synchronize sequence counter in both sender and receiver after a transmission error has occurred

Parameters:
ctxReader context
SrcNodeSource node
DestNodeDestination node
Returns:
0 on success, -1 on error
int ccidT1SendBlock ( scr_t ctx,
unsigned char  Nad,
unsigned char  Pcb,
unsigned char *  Buffer,
int  BuffLen 
)

Send a block in T=1 protocol

Parameters:
ctxReader context
NadNode address
PcbPCB address
BufferOutgoing buffer
BuffLenLength of outgoing data
Returns:
0 on success, -1 on error
int ccidT1SendData ( scr_t ctx,
int  HostMode,
int  SrcNode,
int  DestNode,
unsigned char *  Buffer,
int  BuffLen 
)

Send a block of data using T=1 protocol and handle large block with the chaining mechanism

Parameters:
ctxReader context
HostModeIndicator for host mode
SrcNodeSource node
DestNodeDestination node
BufferOutgoing data buffer
BuffLenLength of outgoing data
Returns:
0 on success, -1 on error
int ccidT1Term ( struct scr ctx)

Terminate driver module and release memory

Parameters:
ctxReader context
int ccidT1Transport ( scr_t ctx,
int  SrcNode,
int  DestNode,
unsigned char *  OBuffer,
int  OBuffLen,
unsigned char *  IBuffer,
int  IBuffLen 
)

Transport a data block using T=1 transmission protocol

Parameters:
ctxReader context
SrcNodeSource node
DestNodeDestination node
OBufferOutgoing data buffer
OBuffLenLength of outgoig data buffer
IBufferIncoming data buffer
IBuffLenLength of incoming data buffer
Returns:
Number of incoming bytes, negative value on error