SlideShare a Scribd company logo
1 of 30
Download to read offline
SMART-CARD

              Smart-




!"#$% 30




 2001
@          A
 ?DDKO C$>FGHD# "$CHMI!# $L!"?D!H QFD>T!O (% "#!PH @NK>? ), %U$C@V!U %
C!D?G!AH">! N?EMFI?HGFW J!JP!$#H>F xcdata.dll.
  M!%$C!#"@ DH$JU$C!G?@ "LM?%$AD?@ !DQ$MG?T!@, "%HCHD!@ $ %$NG$IDKU $S!J>?U,
%$ND!>?WV!U LM! M?J$#H QFD>T!O.




DSSSCT                   File :xcd_pg.doc                     Ref : XCDATAPG0000                 Revision:2.0          2 / 30
                                     Copyright © Dekart S.R.L (www.dekart.com) - 2001
                This document shall not be disclosed to a third party without prior written consent of Dekart S.R.L.
    !>?>?@ A?"#B C?DD$E$ C$>FGHD#? DH G$IH# JK#B %$"LM$!N%HCHD? % >?>$O JK #$ D! JKP$ Q$MGH ! >?>!G! JK, #$ D! JKP$
                           "MHC"#%?G! JHN L!"BGHDD$E$ M?NMHSHD!@ %P?CHPBT? ?%#$M">!U LM?%.
                                                 >                         ?         .
EP?%PHD!H


1.     C@DC@EFCGF HGHIGJKFLG XCDATA.DLL.............................................................................. 4

2.     JHOGF PFQFCGR ........................................................................................................................... 4

3.     J G @CGF STCLUGV HGHIGJKFLG XCDATA.DLL............................................................ 6
     3.1.      STCLUGR CHECKACCESSCARD ..................................................................................................... 6
     3.2.      STCLUGR CONNECTSAMCARD ..................................................................................................... 7
     3.3.      STCLUGR CONNECTUSERCARD ..................................................................................................... 7
     3.4.      STCLUGR CLOSECARD ................................................................................................................... 8
     3.5.      STCLUGR GETCARDSTAT............................................................................................................... 8
     3.6.      STCLUGR GETCHALLENGE ............................................................................................................ 8
     3.7.      STCLUGR SELECTFILEINCARD ...................................................................................................... 9
     3.8.      STCLUGR READFILERECORD....................................................................................................... 10
     3.9.      STCLUGR UPDATEFILERECORD................................................................................................... 10
     3.10.      STCLUGR STATICAUTH ............................................................................................................ 11
     3.11.      STCLUGR EXTERNALAUTH ...................................................................................................... 12
     3.12.      STCLUGR INTERNALAUTH........................................................................................................ 12
     3.13.      STCLUGR DEBITTRANSACTION ................................................................................................ 13
     3.14.      STCLUGR CREDITTRANSACTION ............................................................................................. 15
     3.15.      STCLUGR GETMAXAMOUNT .................................................................................................... 16
4.           GIJeFCGR................................................................................................................................... 17
     4.1.       JJHOFCGR JH JfGHL@g........................................................................................................... 17
     4.2.        G F PhDJP@ STCLUGV JQTIR GD                 Ji @           h (BORLAND C++ V.5.01) ....................... 20
     4.3.      PD@G J PRDn STCLUGV JQTIR XCDATA.DLL......................................................................... 29




DSSSCT                            File :xcd_pg.doc                                Ref : XCDATAPG0000                           Revision:2.0                   3 / 30
                                        Copyright © Dekart S.R.L (www.dekart.com) - 2001
                   This document shall not be disclosed to a third party without prior written consent of Dekart S.R.L.
       !>?>?@ A?"#B C?DD$E$ C$>FGHD#? DH G$IH# JK#B %$"LM$!N%HCHD? % >?>$O JK #$ D! JKP$ Q$MGH ! >?>!G! JK, #$ D! JKP$
                              "MHC"#%?G! JHN L!"BGHDD$E$ M?NMHSHD!@ %P?CHPBT? ?%#$M">!U LM?%.
                                                    >                         ?         .
1. C ?                                              xcdata.dll
     $CFPB - C!D?G!AH">! N?EMFI?HG?@ J!JP!$#H>? xcdata.dll - LMHCD?ND?AHD CP@
$ME?D!N?T!! LFD>#? L$L$PDHD!@ >$SHPB>$% >?M#K L$PBN$%?#HP@ D? $"D$%H
LHM"$D?PBD$E$ >$GLBW#HM?.

     "L$PDHD!H G$CFP@ % %!CH "#?DC?M#D$O C!D?G!AH">! N?EMFI?HG$O J!JP!$#H>!
Windows L$N%$P@H# !"L$PBN$%?#B H` !N "?GKU M?NDKU LM!P$IHD!O ! "!"#HG
LM$EM?GG!M$%?D!@, D?A!D?@ $# FoxPro, Visual Basic >$DA?@ Delphi ! ++ Builder.


2. J o
 ?J$M QFD>T!O C!D?G!AH">! N?EMFI?HG$O J!JP!$#H>! xcdata.dll %>PWA?H#: EMFLLF
QFD>T!O, LMHCD?ND?AHDDKU CP@ ?F#HD#!Q!>?T!! >?M# L$PBN$%?#HPHO, EMFLLF
QFD>T!O CP@ M?J$#K " jPH>#M$DDKG >$SHPB>$G ! M?NP!ADKH %"L$G$E?#HPBDKH
QFD>T!!.

kFD>T!!, %U$C@V!H % G$CFPB xcdata.dll, MH?P!N$%?DK D? @NK>?U LM$EM?GG!M$%?D!@
 , C++.

 H$JU$C!G$H $J$MFC$%?D!H:
•  l$GLBW#HM IBM PC (486 ! %KSH), !GHWV!O "%$J$CDKH L$"PHC$%?#HPBDKH
   L$M#K;
• Smart->?M#K: >?M#? C$"#FL?, >?M#? L$PBN$%?#HP@, SAM->?M#? (Secure Application
   Module);
• A!#K%?#HPB smart->?M# $CD$E$ !N "PHCFWV!U #!L$%: SCR-60, Reflex 60, Reflex 72
  (Schlumberger), TOWITOKO ChipDrive.

    H$JU$C!G$H LM$EM?GGD$H $JH"LHAHD!H:
•      LHM?T!$DD?@ "!"#HG? MS Windows 9x, NT;
•     CT API CP@ "A!#K%?#HPHO TOWITOKO ChipDrive ! Schlumberger Reflex 72;
•     k?OP " >PWA$G v /v l CA_ID.KEY.

  "#?D$%>? G$CFP@ xcdata.dll $"FVH"#%P@H#"@ LM$"#KG HE$ >$L!M$%?D!HG %
"$$#%H#"#%FWV!O >?#?P$E (SYSTEM, SYSTEM32) "!"#HGK Windows.

 N?!G$CHO"#%!H QFD>T!O G$CFP@ xcdata.dll LM!%HCHD$ D? M!"FD>H % LM!P$IHD!!
L.4.3.

                                       G        ?     > smart-         >      J        ?       >r         C      ?           >r
    q
           C ?                                                     $PBN$-                         >r                          >r
    /                                 C$"#FL?        SAM
                                                                  %?#HP@          >?       s   A r         >?    s         A r
    1      CheckAccessCard                 +           -             -        -
    2      ConnectSAMCard                  -           +             -        -                           CloseCard
    3      ConnectUserCard                 -           -            +         -                           CloseCard
DSSSCT                       File :xcd_pg.doc                     Ref : XCDATAPG0000                   Revision:2.0           4 / 30
                                         Copyright © Dekart S.R.L (www.dekart.com) - 2001
                    This document shall not be disclosed to a third party without prior written consent of Dekart S.R.L.
        !>?>?@ A?"#B C?DD$E$ C$>FGHD#? DH G$IH# JK#B %$"LM$!N%HCHD? % >?>$O JK #$ D! JKP$ Q$MGH ! >?>!G! JK, #$ D! JKP$
                               "MHC"#%?G! JHN L!"BGHDD$E$ M?NMHSHD!@ %P?CHPBT? ?%#$M">!U LM?%.
                                                     >                         ?         .
-            +             -        ConnectSAMCard/
 4       GetChallenge
                                                     -             +        ConnectUserCard
                                        -            +             -        ConnectSAMCard/
 5       SelectFileInCard
                                                     -             +        ConnectUserCard
                                        +                                   CheckAccessCard,
 6       StaticAuth                     -            +             -        ConnectSAMCard/
                                                     -             +        ConnectUserCard
                                        -            +             +        ConnectSAMCard,
 7       ExternalAuth
                                                                            ConnectUserCard
                                        -            +             +        ConnectSAMCard,
 8       InternalAuth
                                                                            ConnectUserCard
                                        -            +             -        ConnectSAMCard/
 9       ReadFileRecord                              -             +        ConnectUserCard,
                                                                            SelectFileInCard
                                        -            +             +        ConnectSAMCard,
                                                                            ConnectUserCard,
 10      UpdateFileRecord                                                   ExternalAuth,
                                                                            InternalAuth
                                                                            SelectFileInCard
                                        +                                   CheckAccessCard,           StaticAuth
                                                     +                      ConnectSAMCard,
 11      DebitTransaction                                          +        ConnectUserCard,
                                                                            ExternalAuth,
                                                                            InternalAuth,
                                        +                                   CheckAccessCard,           StaticAuth
                                                     +                      ConnectSAMCard,
 12      CreditTransaction                                         +        ConnectUserCard,
                                                                            ExternalAuth,
                                                                            InternalAuth
                                                     +             +        ConnectSAMCard,
 13      GetMaxAmount
                                                                            ConnectUserCard
 14      CloseCard
                                      $EF# %KL$PD@#B"@ L$"PH PWJ$O !N %KSHLHMHA!"PHDDKU QFD>T!O
 15      GetCardStat




DSSSCT                     File :xcd_pg.doc                     Ref : XCDATAPG0000                 Revision:2.0          5 / 30
                                       Copyright © Dekart S.R.L (www.dekart.com) - 2001
                  This document shall not be disclosed to a third party without prior written consent of Dekart S.R.L.
      !>?>?@ A?"#B C?DD$E$ C$>FGHD#? DH G$IH# JK#B %$"LM$!N%HCHD? % >?>$O JK #$ D! JKP$ Q$MGH ! >?>!G! JK, #$ D! JKP$
                             "MHC"#%?G! JHN L!"BGHDD$E$ M?NMHSHD!@ %P?CHPBT? ?%#$M">!U LM?%.
                                                   >                         ?         .
3. J                s        A r                          xcdata.dll
   3.1. S       A      CheckAccessCard

      !":   CheckAccessCard
     #" !": kFD>T!@ LM$%HM@H# D?P!A!H % "A!#K%?#HPH >?M#K C$"#FL?. "P! $D?
            LM!"F#"#%FH#, #$ HO LMHC}@%P@H#"@ F>?N?DDKO PIN->$C ! " >?M#K
            C$"#FL? "A!#K%?H#"@ H` "HM!ODKO D$GHM. kFD>T!@ #?>IH $LMHCHP@H#
            D?P!A!H Q?OP? " $#>MK#KG >PWA$G v /v l (CA_ID.KEY) !, H"P! $D
            $JD?MFIHD, #$ LM$!N%$C!#"@ HE$ «L$C>PWAHD!H» > G$CFPW.
            $%!&"# !": HMHC          N?%HMSHD!HG       >$GGFD!>?T!$DDKO    L$M#
            ("A!#K%?#HPB) $"%$J$IC?H#"@.
'()* !+ ,%!&" " !+:
              H$JU$C!G$ D?P!A!H >?M#K C$"#FL? ! Q?OP? " >PWA?G! THD#M?
            LP?#`ID$O "!"#HGK.
.! / 0(!(: #include "xCData.h"
            int CheckAccessCard(char *Port, short ReaderType, char *IccNo,
                                   char *KeyFile, char *PIN))
12*3 4" 3 4":
            Port – F>?N?#HPB D? "#M$>F "$CHMI?VFW !G@ >$GGFD!>?T!$DD$E$ L$M#?
            (D?LM!GHM COM1, COM2, COM3, COM4).
            ReaderType – THP$H A!"P$, F>?NK%?WVHH #!L "A!#K%?#HP@.
              $CCHMI!%?W#"@ 4 #!L? "A!#K%?#HPHO:

                         „ L.L.              M$!N%$C!#HPB / ?N%?D!H                        ReaderType
                           1                  Schlumberger / SCR 60                            0
                           2                 Schlumberger / Reflex 60                          1
                           3                 TOWITOKO / ChipDrive                              2
                           4                 Schlumberger / Reflex 72                          3

           KeyFile – F>?N?#HPB D? "#M$>F, "$CHMI?VFW LF#B ! !G@ Q?OP? "
           >PWA?G! THD#M? LP?#`ID$O "!"#HGK CA_ID.KEY, >$#$MKO
           !"L$PBNFH#"@ CP@ L$PFAHD!@ $#>MK#$E$ >PWA? THD#M? "!"#HGK.
           PIN – F>?N?#HPB D? "#M$>F, "$CHMI?VFW PIN–>$C >?M#K C$"#FL?. PIN–
           >$C G$IH# "$"#$@#B $# 4 C$ 8 CH"@#!ADKU T!QM.
142*3 4" 3 4":
           IccNo – F>?N?#HPB D? JFQHM ("#M$>F), % >$#$M$G JFCH# %$N%M?V`D
           "HM!ODKO D$GHM >?M#K C$"#FL?. ?NGHM JFQHM? C$PIHD JK#B DH GHDHH
           33 J?O#$%.
1* % 5 "&*"    #" !":
           1 – % "PFA?H F"LHSD$E$ N?%HMSHD!@ LM$EM?GGK, !D?AH $#M!T?#HPBD$H
           ND?AHD!H >$C? $S!J>! ("G. >$CK $S!J$> L.4.1).
$%!&"% 4 * 67 08!! ! ,%*9% &&4 (BC++ v.5.01) "G. L.4.2




DSSSCT                  File :xcd_pg.doc                     Ref : XCDATAPG0000                 Revision:2.0          6 / 30
                                    Copyright © Dekart S.R.L (www.dekart.com) - 2001
               This document shall not be disclosed to a third party without prior written consent of Dekart S.R.L.
   !>?>?@ A?"#B C?DD$E$ C$>FGHD#? DH G$IH# JK#B %$"LM$!N%HCHD? % >?>$O JK #$ D! JKP$ Q$MGH ! >?>!G! JK, #$ D! JKP$
                          "MHC"#%?G! JHN L!"BGHDD$E$ M?NMHSHD!@ %P?CHPBT? ?%#$M">!U LM?%.
                                                >                         ?         .
3.2. S       A      ConnectSAMCard

      !":   ConnectSAMCard
     #" !": kFD>T!@ LM$%HM@H# D?P!A!H % "A!#K%?#HPH SAM >?M#K. "P! >?M#?
            LM!"F#"#%FH#, #$ $D? "#?D$%!#"@ C$"#FLD$O CP@ CMFE!U QFD>T!O.
'()* !+ ,%!&" " !+: H$JU$C!G$ D?P!A!H SAM->?M#K.
.! / 0(!(: #include "xCData.h"
            HANDLE ConnectSAMCard (char *Port, short ReaderType)
12*3 4" 3 4":
            Port – F>?N?#HPB D? "#M$>F, "$CHMI?VFW !G@ >$GGFD!>?T!$DD$E$
            L$M#? ("G. L.3.1).
            ReaderType – THP$H A!"P$, F>?NK%?WVHH #!L "A!#K%?#HP@ ("G. L.3.1).
1* % 5 "&*"       #" !": HANDLE (CH">M!L#$M, P$E!AH">!O D$GHM, "%@N?DDKO "
            $#>MK#KG >$GGFD!>?T!$DDKG L$M#$G, > >$#$M$GF L$C>PWA`D
            "A!#K%?#HPB ! % >$#$M$G D?U$C!#"@ SAM->?M#?) – LM! F"LHSD$G
            N?%HMSHD!! LM$EM?GGK, !D?AH $#M!T?#HPBD$H ND?AHD!H >$C? $S!J>!
            ("G. >$CK $S!J$> % L.4.1)
              M!GHA?D!H.       HMHC $JM?VHD!HG > QFD>T!! ConnectSAMCard
            DH$JU$C!G$ LMHC%?M!#HPBD$ FC$"#$%HM!#B"@, A#$ >$GGFD!>?T!$DDKO
            L$M# DH JKP M?DHH $#>MK# CP@ M?J$#K " CMFE$O >?M#$O ("G. L.3.4).
C9% !#" !+: H$JU$C!G$ "$JPWCHD!@ "#M$E$E$ "$$#%H#"#%!@ #!L? "A!#K%?#HP@
            (ReaderType) " MH?PBDKG "A!#K%?#HPHG, L$C>PWA`DDKG > C?DD$GF
            L$"PHC$%?#HPBD$GF L$M#F. H"$JPWCHD!H j#$E$ $EM?D!AHD!@ LM!%$C!#
            > DHLMHC">?NFHGKG MHNFPB#?#?G.
$%!&"% 4 * 67 08!! ! ,%*9% &&4 (BC++ v.5.01) "G. L.4.2


   3.3. S       A      ConnectUserCard

      !":   ConnectUserCard
     #" !": kFD>T!@ LM$%HM@H# D?P!A!H % "A!#K%?#HPH >?M#K L$PBN$%?#HP@. "P!
            >?M#? LM!"F#"#%FH#, #$ $D? "#?D$%!#"@ C$"#FLD$O CP@ CMFE!U QFD>T!O.
'()* !+ ,%!&" " !+: H$JU$C!G$ D?P!A!H >?M#K L$PBN$%?#HP@.
.! / 0(!(: #include "xCData.h"
            HANDLE ConnectUserCard (char *Port, short ReaderType)
12*3 4" 3 4":
            Port – F>?N?#HPB D? "#M$>F, "$CHMI?VFW !G@ >$GGFD!>?T!$DD$E$
            L$M#? ("G. L.3.1).
            ReaderType – THP$H A!"P$, F>?NK%?WVHH #!L "A!#K%?#HP@ ("G. L.3.1).
1* % 5 "&*"      #" !": HANDLE (CH">M!L#$M, P$E!AH">!O D$GHM, "%@N?DDKO "
            $#>MK#KG >$GGFD!>?T!$DDKG L$M#$G, > >$#$M$GF L$C>PWA`D
            "A!#K%?#HPB ! % >$#$M$G D?U$C!#"@ >?M#? L$PBN$%?#HP@) – H"P!
            F"LHSD$H N?%HMSHD!H LM$EM?GGK, !D?AH $#M!T?#HPBD$H ND?AHD!H >$C?
            $S!J>! ("G. >$CK $S!J$> % L.4.1).
              M!GHA?D!H.       HMHC $JM?VHD!HG > QFD>T!! ConnectUserCard
            DH$JU$C!G$ LMHC%?M!#HPBD$ FC$"#$%HM!#B"@, A#$ >$GGFD!>?T!$DDKO
            L$M# DH JKP M?DHH $#>MK# CP@ M?J$#K " CMFE$O >?M#$O ("G. L.3.4).

DSSSCT                  File :xcd_pg.doc                     Ref : XCDATAPG0000                 Revision:2.0          7 / 30
                                    Copyright © Dekart S.R.L (www.dekart.com) - 2001
               This document shall not be disclosed to a third party without prior written consent of Dekart S.R.L.
   !>?>?@ A?"#B C?DD$E$ C$>FGHD#? DH G$IH# JK#B %$"LM$!N%HCHD? % >?>$O JK #$ D! JKP$ Q$MGH ! >?>!G! JK, #$ D! JKP$
                          "MHC"#%?G! JHN L!"BGHDD$E$ M?NMHSHD!@ %P?CHPBT? ?%#$M">!U LM?%.
                                                >                         ?         .
C9%  !#" !+: H$JU$C!G$ "$JPWCHD!@ "#M$E$E$ "$$#%H#"#%!@ #!L? "A!#K%?#HP@
            (ReaderType) " MH?PBDKG "A!#K%?#HPHG, L$C>PWA`DDKG > C?DD$GF
            L$"PHC$%?#HPBD$GF L$M#F. H"$JPWCHD!H j#$E$ $EM?D!AHD!@ LM!%$C!#
            > DHLMHC">?NFHGKG MHNFPB#?#?G.
$%!&"% 4 * 67 08!! ! ,%*9% &&4 (BC++ v.5.01) "G. L.4.2


   3.4. S       A      CloseCard

      !":   CloseCard
     #" !": kFD>T!@ N?%HMS?H# M?J$#F " >?M#$O, %"#?%PHDD$O % "A!#K%?#HPB,
            N?>MK%?H# ! $"%$J$IC?H# L$M#.
'()* !+ ,%!&" " !+:
              H$JU$C!G$ D?P!A!H PWJ$O !N %KSHLHMHA!"PHDDKU smart->?M#.
.! / 0(!(: #include "xCData.h"
            BOOL CloseCard (HANDLE hcd)
12*3 4" 3 4":
            hcd – P$E!AH">!O D$GHM (HANDLE), "%@N?DDKO " $#>MK#KG
            >$GGFD!>?T!$DDKG L$M#$G, > >$#$M$GF L$C>PWA`D "A!#K%?#HPB ! %
            >$#$M$G D?U$C!#"@ >?M#?.
1* % 5 "&*"     #" !": True, H"P! F"LHSD$H N?%HMSHD!H LM$EM?GGK, !D?AH – False.
$%!&"% 4 * 67 08!! ! ,%*9% &&4 (BC++ v.5.01) "G. L.4.2


   3.5. S       A      GetCardStat

      !":   GetCardStat
     #" !":     "$$#%H#"#%!! "$ ND?AHD!HG >$C? $S!J>! QFD>T!@ %KC?H#
            M?"S!MHDD$H "$$JVHD!H $J $S!J>H. ?DD?@ QFD>T!@ G$IH# JK#B
            !"L$PBN$%?D? L$"PH PWJ$O QFD>T!! G$CFP@ CP@ C!?ED$"#!>!
            %KL$PDHD!@ $LHM?T!! % >?M#H.
'()* !+ ,%!&" " !+:
              H$JU$C!G$ D?P!A!H PWJ$O !N %KSHLHMHA!"PHDDKU smart->?M#.
.! / 0(!(: #include "xCData.h"
            void GetCardStat (char *msgbuf)
12*3 4" 3 4":      $#"F#"#%FW#.
142*3 4" 3 4":
            msgbuf – F>?N?#HPB D? JFQHM ("#M$>F), % >$#$M$G JFCH# %$N%M?VHD$
            "$$JVHD!H $J $S!J>H. ?NGHM JFQHM? C$PIHD JK#B DH GHDHH 80 J?O#.
C9% !#" !+: kFD>T!@ C$PID? %KNK%?#B"@ DHL$"MHC"#%HDD$ N? QFD>T!HO,
            %KN%?%SHO $S!J>F % >?M#H, !D?AH %$N%M?V?HG$H "$$JVHD!H JFCH#
            "$CHMI?#B «GF"$M».
$%!&"% 4 * 67 08!! ! ,%*9% &&4 (BC++ v.5.01) "G. L.4.2


   3.6. S       A      GetChallenge


DSSSCT                  File :xcd_pg.doc                     Ref : XCDATAPG0000                 Revision:2.0          8 / 30
                                    Copyright © Dekart S.R.L (www.dekart.com) - 2001
               This document shall not be disclosed to a third party without prior written consent of Dekart S.R.L.
   !>?>?@ A?"#B C?DD$E$ C$>FGHD#? DH G$IH# JK#B %$"LM$!N%HCHD? % >?>$O JK #$ D! JKP$ Q$MGH ! >?>!G! JK, #$ D! JKP$
                          "MHC"#%?G! JHN L!"BGHDD$E$ M?NMHSHD!@ %P?CHPBT? ?%#$M">!U LM?%.
                                                >                         ?         .
!":   GetChallenge
     #" !":
            kFD>T!@ L$PFA?H# "PFA?OD$H A!"P$, Q$MG!MFHG$H >?M#$O, !
            N?L!"K%?H# HE$ % JFQHM. ?>IH G$IH# JK#B !"L$PBN$%?D? CP@
            $LMHCHPHD!@ D?P!A!@ >?M#K % "A!#K%?#HPH.
'()* !+ ,%!&" " !+:
              H$JU$C!G$ D?P!A!H SAM->?M#K !P! >?M#K L$PBN$%?#HP@. HMHC
            $JM?VHD!HG > QFD>T!! GetChallenge DH$JU$C!G$ LMHC%?M!#HPBD$
            %KN%?#B QFD>T!W ConnectUserCard !P! ConnectSAMCard (H"P! j#$
            DH JKP$ %KL$PDHD$ M?DHH).
.! / 0(!(: #include "xCData.h"
            BOOL GetChallenge (HANDLE hcd, char *buf)
12*3 4" 3 4":
            hcd – P$E!AH">!O D$GHM (HANDLE), "%@N?DDKO " $#>MK#KG
            >$GGFD!>?T!$DDKG L$M#$G, > >$#$M$GF L$C>PWA`D "A!#K%?#HPB ! %
            >$#$M$G D?U$C!#"@ >?M#?.
142*3 4" 3 4":
            buf - F>?N?#HPB D? JFQHM ("#M$>F), % >$#$M$G QFD>T!@ %$N%M?V?H#
            "PFA?ODFW L$"PHC$%?#HPBD$"#B % Q$MG?#H ASCII % SH"#D?CT?#HM!AD$G
            >$CH. ?NGHM JFQHM? C$PIHD JK#B DH GHDHH 17 J?O#.
1* % 5 "&*"     #" !": True, H"P! F"LHSD$H N?%HMSHD!H LM$EM?GGK, !D?AH – False.
              CD$O !N LM!A!D L$@%PHD!@ MHNFPB#?#? False G$IH# JK#B $#"F#"#%!H
            >?M#K % "A!#K%?#HPH.
$%!&"% 4 * 67 08!! ! ,%*9% &&4 (BC++ v.5.01) "G. L.4.2


   3.7. S       A      SelectFileInCard

      !":   SelectFileInCard
     #" !": kFD>T!@ LM$%HM@H# D?P!A!H % >?M#H F>?N?DD$E$ Q?OP?. "P! C?DDKO
            Q?OP LM!"F#"#%FH#, #$ $D CHP?H#"@ #H>FV!G.
'()* !+ ,%!&" " !+:
              H$JU$C!G$ D?P!A!H SAM->?M#K !P! >?M#K L$PBN$%?#HP@. HMHC
            $JM?VHD!HG > QFD>T!! SelectFileInCard DH$JU$C!G$ LMHC%?M!#HPBD$
            %KN%?#B QFD>T!W ConnectUserCard !P! ConnectSAMCard (H"P! j#$
            DH JKP$ %KL$PDHD$ M?DHH).
.! / 0(!(: #include "xCData.h"
            BOOL SelectFileInCard (HANDLE hcd, char *FID)
12*3 4" 3 4":
            hcd – P$E!AH">!O D$GHM (HANDLE), "%@N?DDKO " $#>MK#KG
            >$GGFD!>?T!$DDKG L$M#$G, > >$#$M$GF L$C>PWA`D "A!#K%?#HPB ! %
            >$#$M$G D?U$C!#"@ >?M#?.
            FID – F>?N?#HPB D? "#M$>F, "$CHMI?VFW !CHD#!Q!>?#$M (!G@) Q?OP?.
1* % 5 "&*"      #" !":   "PFA?H F"LHSD$E$ N?%HMSHD!@ LM$EM?GGK - True, !D?AH
            False, LM! j#$G M?"S!MHDD$H "$$JVHD!H $J $S!J>H >?M#K G$ID$
            L$PFA!#B " L$G$VBW QFD>T!! GetCardStat.
$%!&"% 4 * 67 08!! ! ,%*9% &&4 (BC++ v.5.01) "G. L.4.2

DSSSCT                  File :xcd_pg.doc                     Ref : XCDATAPG0000                 Revision:2.0          9 / 30
                                    Copyright © Dekart S.R.L (www.dekart.com) - 2001
               This document shall not be disclosed to a third party without prior written consent of Dekart S.R.L.
   !>?>?@ A?"#B C?DD$E$ C$>FGHD#? DH G$IH# JK#B %$"LM$!N%HCHD? % >?>$O JK #$ D! JKP$ Q$MGH ! >?>!G! JK, #$ D! JKP$
                          "MHC"#%?G! JHN L!"BGHDD$E$ M?NMHSHD!@ %P?CHPBT? ?%#$M">!U LM?%.
                                                >                         ?         .
3.8. S       A      ReadFileRecord

      !":   ReadFileRecord
     #" !": kFD>T!@ ReadFileRecord LM$%HM@H# D?P!A!H % >?M#H F>?N?DD$E$
            Q?OP?. "P! C?DDKO Q?OP LM!"F#"#%FH#, #$ LM$!N%$C!#"@ A#HD!H !N
            DHE$ %KJM?DD$O N?L!"!.
'()* !+ ,%!&" " !+:
              H$JU$C!G$ D?P!A!H SAM->?M#K !P! >?M#K L$PBN$%?#HP@. HMHC
            $JM?VHD!HG > QFD>T!! ReadFileRecord DH$JU$C!G$ LMHC%?M!#HPBD$
            %KN%?#B QFD>T!W ConnectUserCard !P! ConnectSAMCard (H"P! j#$
            DH JKP$ %KL$PDHD$ M?DHH), ? #?>IH %KJM?#B "$$#%H#"#%FWV!O FM$%HDB
            % !HM?MU!! Q?OP$% " L$G$VBW QFD>T!! SelectFileInCard.
.! / 0(!(: #include "xCData.h"
            BOOL ReadFileRecord (HANDLE hcd, short rcNo, short len, char *buf)
12*3 4" 3 4":
            hcd – P$E!AH">!O D$GHM (HANDLE), "%@N?DDKO " $#>MK#KG
            >$GGFD!>?T!$DDKG L$M#$G, > >$#$M$GF L$C>PWA`D "A!#K%?#HPB ! %
            >$#$M$G D?U$C!#"@ >?M#?.
            rcNo – D$GHM N?L!"! CP@ A#HD!@, THP$H A!"P$. M!GHA?D!H: DFGHM?T!@
            D?A!D?H#"@ " 1.
            len – CP!D? N?L!"! % J?O#?U, THP$H A!"P$.
            buf – F>?N?#HPB D? JFQHM ("#M$>?), % >$#$M$G JFCH# %$N%M?VHD?
            LM$A!#?DD?@ N?L!"B !N Q?OP?. ?NGHM JFQHM? C$PIHD JK#B DH GHDHH 2 *
            len + 1.
1* % 5 "&*"      #" !": True, H"P! F"LHSD$H N?%HMSHD!H LM$EM?GGK, !D?AH False.
            "PFA?H False, M?"S!MHDD$H "$$JVHD!H $J $S!J>H >?M#K G$ID$
            L$PFA!#B " L$G$VBW QFD>T!! GetCardStat.
C9% !#" !+: $GHM N?L!"B (rcNo) ! CP!D? N?L!"! (len) DH G$EF# JK#B J$PBSH 255.
            lM$GH #$E$, j#! %HP!A!DK C$PIDK #$AD$ "$$#%H#"#%$%?#B "#MF>#FMH
            %KJM?DD$E$ Q?OP?.
$%!&"% 4 * 67 08!! ! ,%*9% &&4 (BC++ v.5.01) "G. L.4.2


   3.9. S       A      UpdateFileRecord

      !":   UpdateFileRecord
     #" !": kFD>T!@ UpdateFileRecord LM$%HM@H# D?P!A!H % >?M#H F>?N?DD$E$
            Q?OP?. "P! C?DDKO Q?OP LM!"F#"#%FH#, #$ LM$!N%$C!#"@ N?GHD?
            %KJM?DD$O N?L!"!.
'()* !+ ,%!&" " !+:
              H$JU$C!G$ D?P!A!H SAM->?M#K !P! >?M#K L$PBN$%?#HP@. HMHC
            $JM?VHD!HG     >    QFD>T!!    UpdateFileRecord    DH$JU$C!G$
            LMHC%?M!#HPBD$    %KN%?#B   QFD>T!W    ConnectUserCard    !P!
            ConnectSAMCard (H"P! j#$ DH JKP$ %KL$PDHD$ M?DHH), ? #?>IH
            %KJM?#B "$$#%H#"#%FWV!O FM$%HDB % !HM?MU!! Q?OP$% " L$G$VBW

DSSSCT                  File :xcd_pg.doc                     Ref : XCDATAPG0000                 Revision:2.0          10 / 30
                                    Copyright © Dekart S.R.L (www.dekart.com) - 2001
               This document shall not be disclosed to a third party without prior written consent of Dekart S.R.L.
   !>?>?@ A?"#B C?DD$E$ C$>FGHD#? DH G$IH# JK#B %$"LM$!N%HCHD? % >?>$O JK #$ D! JKP$ Q$MGH ! >?>!G! JK, #$ D! JKP$
                          "MHC"#%?G! JHN L!"BGHDD$E$ M?NMHSHD!@ %P?CHPBT? ?%#$M">!U LM?%.
                                                >                         ?         .
QFD>T!! SelectFileInCard ! LMHC}@%!#B "$$#%H#"#%FWV!O >PWA.
             ?LM!GHM, CP@ N?GHDK N?L!"! % Q?OPH “8400” #MHJFH#"@ %KL$PD!#B
           %DHSDWW ! %DF#MHDDWW ?F#HD#!Q!>?T!W (QFD>T!! ExternalAuth !
           InternalAuth).
.! / 0(!(: #include "xCData.h"
           int UpdateFileRecord (HANDLE hcd, short rcNo, short len, char *buf)
12*3 4" 3 4":
           hcd – P$E!AH">!O D$GHM (HANDLE), "%@N?DDKO " $#>MK#KG
           >$GGFD!>?T!$DDKG L$M#$G, > >$#$M$GF L$C>PWA`D "A!#K%?#HPB ! %
           >$#$M$G D?U$C!#"@ >?M#?.
           rcNo – D$GHM N?L!"! CP@ A#HD!@, THP$H A!"P$. M!GHA?D!H: DFGHM?T!@
           D?A!D?H#"@ " 1.
           len – CP!D? N?L!"! % J?O#?U, THP$H A!"P$.
           buf – F>?N?#HPB D? JFQHM ("#M$>?), % >$#$M$G D?U$C!#"@ N?L!"B CP@
           N?GHDK (% Q$MG?#H ASCII).
1* % 5 "&*"     #" !": 1, H"P! F"LHSD$H N?%HMSHD!H LM$EM?GGK, !D?AH 0 ($S!J>?
           >?M#K) !P! $#M!T?#HPBD$H ND?AHD!H >$C? $S!J>! ("G. >$CK $S!J$>).
           "PFA?H 0 M?"S!MHDD$H "$$JVHD!H $J $S!J>H >?M#K G$ID$ L$PFA!#B "
           L$G$VBW QFD>T!! GetCardStat.
C9% !#" !+: $GHM N?L!"B (rcNo) ! CP!D? N?L!"! (len) DH G$EF# JK#B J$PBSH 255.
           lM$GH #$E$, j#! %HP!A!DK C$PIDK #$AD$ "$$#%H#"#%$%?#B "#MF>#FMH
           %KJM?DD$E$ Q?OP?.
$%!&"% 4 * 67 08!! ! ,%*9% &&4 (BC++ v.5.01) "G. L.4.2


   3.10.         S       A      StaticAuth

      !":   StaticAuth
     #" !": kFD>T!@ StaticAuth %KL$PD@H# "#?#!AH">FW ?F#HD#!Q!>?T!W >?M#K,
            >$#$M?@ %>PWA?H# LM$%HM>F %HMD$"#! "#?#!AH">!U C?DDKU D? >?M#H,
            LM!D?CPHID$"#B >?M#K C?DD$O "!"#HGH ! jG!#HD#F. ?DD?@ LM$%HM>?
            @%P@H#"@ «"!PBD$O», #.>., L$ "F#!, $"FVH"#%P@H#"@ LM$%HM>? T!QM$%$O
            L$CL!"!.
'()* !+ ,%!&" " !+:
              H$JU$C!G$ D?P!A!H SAM->?M#K !P! >?M#K L$PBN$%?#HP@. HMHC
            $JM?VHD!HG > QFD>T!! StaticAuth DH$JU$C!G$ LMHC%?M!#HPBD$
            «L$C>PWA!#B» Q?OP " >PWA?G! v /v l (QFD>T!@ CheckAccessCard)
            ! %KN%?#B QFD>T!W ConnectUserCard !P! ConnectSAMCard (H"P! j#$
            DH JKP$ %KL$PDHD$ M?DHH).
.! / 0(!(: #include "xCData.h"
            int StaticAuth (HANDLE hcd)
12*3 4" 3 4":
            hcd – P$E!AH">!O D$GHM (HANDLE), "%@N?DDKO " $#>MK#KG
            >$GGFD!>?T!$DDKG L$M#$G, > >$#$M$GF L$C>PWA`D "A!#K%?#HPB ! %
            >$#$M$G D?U$C!#"@ >?M#?.
1* % 5 "&*"      #" !":
            1 - F"LHSD$H N?%HMSHD!H LM$EM?GGK;

DSSSCT                  File :xcd_pg.doc                     Ref : XCDATAPG0000                 Revision:2.0          11 / 30
                                    Copyright © Dekart S.R.L (www.dekart.com) - 2001
               This document shall not be disclosed to a third party without prior written consent of Dekart S.R.L.
   !>?>?@ A?"#B C?DD$E$ C$>FGHD#? DH G$IH# JK#B %$"LM$!N%HCHD? % >?>$O JK #$ D! JKP$ Q$MGH ! >?>!G! JK, #$ D! JKP$
                          "MHC"#%?G! JHN L!"BGHDD$E$ M?NMHSHD!@ %P?CHPBT? ?%#$M">!U LM?%.
                                                >                         ?         .
0 - $S!J>? >?M#K (M?"S!MHDD$H "$$JVHD!H $J $S!J>H >?M#K G$ID$
          L$PFA!#B " L$G$VBW QFD>T!! GetCardStat);
          $#M!T?#HPBD$H ND?AHD!H >$C? $S!J>! ("G. >$CK $S!J$> % L.4.1).
$%!&"% 4 * 67 08!! ! ,%*9% &&4 (BC++ v.5.01) "G. L.4.2


   3.11.         S       A      ExternalAuth

      !":   ExternalAuth
     #" !": kFD>T!@ ExternalAuth %KL$PD@H# %DHSDWW ?F#HD#!Q!>?T!W,
            >$#$M?@ $ND?A?H#, A#$ >?M#? L$PBN$%?#HP@ LM$%HM@H#, @%P@H#"@ P!
            >$MMH>#D$O SAM >?M#?. F#HD#!Q!>?T!@ LMHC"#?%P@H# "$J$O LM$%HM>F
            %HMD$"#! >PWAHO % SAM G$CFPH. D? @%P@H#"@ LM$%HM>$O MAC
            ND?AHD!@ L$PFAHDD$E$ LM! L$G$V! ?PE$M!#G? DES. ˆ#? LM$%HM>?
            @%P@H#"@ J$PHH "P?J$O, AHG LM$%HM>?, %KL$PD@HG?@         QFD>T!HO
            StaticAuth.
'()* !+ ,%!&" " !+:
              H$JU$C!G$ D?P!A!H SAM->?M#K ! >?M#K L$PBN$%?#HP@.           HMHC
            $JM?VHD!HG > QFD>T!! ExternalAuth DH$JU$C!G$ LMHC%?M!#HPBD$
            %KN%?#B QFD>T!! ConnectUserCard ! ConnectSAMCard (H"P! j#$ DH
            JKP$ %KL$PDHD$ M?DHH).
.! / 0(!(: #include "xCData.h"
            BOOL ExternalAuth (HANDLE hcd_user, HANDLE hcd_SAM)
12*3 4" 3 4":
            hcd_user – P$E!AH">!O D$GHM (HANDLE), "%@N?DDKO " $#>MK#KG
            >$GGFD!>?T!$DDKG L$M#$G, > >$#$M$GF L$C>PWA`D "A!#K%?#HPB ! %
            >$#$M$G D?U$C!#"@ >?M#? L$PBN$%?#HP@.
            hcd_ SAM – P$E!AH">!O D$GHM (HANDLE), "%@N?DDKO " $#>MK#KG
            >$GGFD!>?T!$DDKG L$M#$G, > >$#$M$GF L$C>PWA`D "A!#K%?#HPB ! %
            >$#$M$G D?U$C!#"@ SAM->?M#?.
1* % 5 "&*"      #" !":
            True, H"P! F"LHSD$H N?%HMSHD!H LM$EM?GGK, !D?AH False.     "PFA?H
            False, M?"S!MHDD$H "$$JVHD!H $J $S!J>H >?M#K G$ID$ L$PFA!#B "
            L$G$VBW QFD>T!! GetCardStat.
C9% !#" !+: "P! >PWA! SAM >?M#K DH "$$#%H#"#%FW# >PWA?G >?M#K L$PBN$%?#HP@,
            #$ FGHDBS?H#"@ "A`#A!> L$LK#$> "$$#%H#"#%FWVHE$ >PWA? % >?M#H
            L$PBN$%?#HP@.    M! !"AHML?D!! %"HU ($JKAD$ 3-U) L$LK#$>
            "$$#%H#"#%FWV!O >PWA JP$>!MFH#"@. "P! ?F#HD#!Q!>?T!@ LM$U$C!#
            F"LHSD$,    #$    "A`#A!>   L$LK#$>     "$$#%H#"#%FWVHE$    >PWA?
            F"#?D?%P!%?H#"@ % G?>"!G?PBD$H ND?AHD!H ($JKAD$ 3).
$%!&"% 4 * 67 08!! ! ,%*9% &&4 (BC++ v.5.01) "G. L.4.2


   3.12.         S       A      InternalAuth

       !":       InternalAuth


DSSSCT                  File :xcd_pg.doc                     Ref : XCDATAPG0000                 Revision:2.0          12 / 30
                                    Copyright © Dekart S.R.L (www.dekart.com) - 2001
               This document shall not be disclosed to a third party without prior written consent of Dekart S.R.L.
   !>?>?@ A?"#B C?DD$E$ C$>FGHD#? DH G$IH# JK#B %$"LM$!N%HCHD? % >?>$O JK #$ D! JKP$ Q$MGH ! >?>!G! JK, #$ D! JKP$
                          "MHC"#%?G! JHN L!"BGHDD$E$ M?NMHSHD!@ %P?CHPBT? ?%#$M">!U LM?%.
                                                >                         ?         .
#" !": kFD>T!@ InternalAuth %KL$PD@H# %DF#MHDDWW ?F#HD#!Q!>?T!W,
            >$#$M?@ $ND?A?H#, A#$ SAM >?M#? LM$%HM@H#, @%P@H#"@ P! >$MMH>#D$O
            >?M#? L$PBN$%?#HP@. F#HD#!Q!>?T!@ LMHC"#?%P@H# "$J$O LM$%HM>F
            %HMD$"#! >PWAHO >?M#K L$PBN$%?#HP@. D? @%P@H#"@ LM$%HM>$O MAC
            ND?AHD!@, L$PFAHDD$E$ LM! L$G$V! ?PE$M!#G? DES. ?DD?@ LM$%HM>?
            @%P@H#"@ J$PHH "P?J$O, AHG LM$%HM>?, %KL$PD@HG?@        QFD>T!HO
            StaticAuth.
'()* !+ ,%!&" " !+:
              H$JU$C!G$ D?P!A!H SAM->?M#K ! >?M#K L$PBN$%?#HP@.          HMHC
            $JM?VHD!HG > QFD>T!! InternalAuth DH$JU$C!G$ LMHC%?M!#HPBD$
            %KN%?#B QFD>T!! ConnectUserCard ! ConnectSAMCard (H"P! j#$ DH
            JKP$ %KL$PDHD$ M?DHH).
.! / 0(!(: #include "xCData.h"
            BOOL InternalAuth (HANDLE hcd_user, HANDLE hcd_SAM)
12*3 4" 3 4":
            hcd_user – P$E!AH">!O D$GHM (HANDLE), "%@N?DDKO " $#>MK#KG
            >$GGFD!>?T!$DDKG L$M#$G, > >$#$M$GF L$C>PWA`D "A!#K%?#HPB ! %
            >$#$M$G D?U$C!#"@ >?M#? L$PBN$%?#HP@.
            hcd_ SAM – P$E!AH">!O D$GHM (HANDLE), "%@N?DDKO " $#>MK#KG
            >$GGFD!>?T!$DDKG L$M#$G, > >$#$M$GF L$C>PWA`D "A!#K%?#HPB ! %
            >$#$M$G D?U$C!#"@ SAM->?M#?.
1* % 5 "&*"      #" !":
            True, H"P! F"LHSD$H N?%HMSHD!H LM$EM?GGK, !D?AH False.     "PFA?H
            False, M?"S!MHDD$H "$$JVHD!H $J $S!J>H >?M#K G$ID$ L$PFA!#B "
            L$G$VBW QFD>T!! GetCardStat.
C9% !#" !+: "P! >PWA! >?M#K L$PBN$%?#HP@ DH "$$#%H#"#%FW# >PWA?G SAM >?M#K,
            #$ FGHDBS?H#"@ "A`#A!> L$LK#$> "$$#%H#"#%FWVHE$ >PWA? % SAM
            >?M#H. M! !"AHML?D!! %"HU ($JKAD$ 3-U) L$LK#$> "$$#%H#"#%FWV!O
            >PWA JP$>!MFH#"@. "P! ?F#HD#!Q!>?T!@ LM$U$C!# F"LHSD$, #$
            "A`#A!> L$LK#$> "$$#%H#"#%FWVHE$ >PWA? F"#?D?%P!%?H#"@ %
            G?>"!G?PBD$H ND?AHD!H ($JKAD$ 3).
$%!&"% 4 * 67 08!! ! ,%*9% &&4 (BC++ v.5.01) "G. L.4.2


   3.13.         S       A      DebitTransaction

      !":   DebitTransaction
     #" !": kFD>T!@ DebitTransaction %KL$PD@H# CHJH#$%?D!H %KJM?DD$E$
            >$SHPB>? >?M#K L$PBN$%?#HP@ D? F>?N?DDFW "FGGF.            LHM?T!@
            %KL$PD@H#"@ % C!?P$EH " SAM->?M#$O, % LM$TH""H >$#$M$E$ LM$!"U$C!#
            C!D?G!AH">?@ ?F#HD#!Q!>?T!@ >?M# ! "$NC?`#"@ "HM#!Q!>?# (L$CL!"B)
            $LHM?T!!.
'()* !+ ,%!&" " !+:
              H$JU$C!G$ D?P!A!H SAM->?M#K ! >?M#K L$PBN$%?#HP@.           HMHC
            $JM?VHD!HG > QFD>T!! DebitTransaction DH$JU$C!G$ LMHC%?M!#HPBD$
            «L$C>PWA!#B» Q?OP " >PWA?G! v /v l (QFD>T!@ CheckAccessCard),
            %KN%?#B QFD>T!! ConnectUserCard ! ConnectSAMCard (H"P! j#$ DH

DSSSCT                  File :xcd_pg.doc                     Ref : XCDATAPG0000                 Revision:2.0          13 / 30
                                    Copyright © Dekart S.R.L (www.dekart.com) - 2001
               This document shall not be disclosed to a third party without prior written consent of Dekart S.R.L.
   !>?>?@ A?"#B C?DD$E$ C$>FGHD#? DH G$IH# JK#B %$"LM$!N%HCHD? % >?>$O JK #$ D! JKP$ Q$MGH ! >?>!G! JK, #$ D! JKP$
                          "MHC"#%?G! JHN L!"BGHDD$E$ M?NMHSHD!@ %P?CHPBT? ?%#$M">!U LM?%.
                                                >                         ?         .
JKP$ %KL$PDHD$ M?DHH). ?#HG %KL$PD!#B %DHSDWW ! %DF#MHDDWW
           ?F#HD#!Q!>?T!W (InternalAuth, ExternalAuth).
.! / 0(!(: #include "xCData.h"
           int DebitTransaction (HANDLE hcd_user, HANDLE hcd_SAM, short
           purse, unsigned long amount, char *cur, char *merchantID,
           char *rnd, char *crt)
12*3 4" 3 4":
           hcd_user – P$E!AH">!O D$GHM (HANDLE), "%@N?DDKO " $#>MK#KG
           >$GGFD!>?T!$DDKG L$M#$G, > >$#$M$GF L$C>PWA`D "A!#K%?#HPB ! %
           >$#$M$G D?U$C!#"@ >?M#? L$PBN$%?#HP@.
           hcd_ SAM – P$E!AH">!O D$GHM (HANDLE), "%@N?DDKO " $#>MK#KG
           >$GGFD!>?T!$DDKG L$M#$G, > >$#$M$GF L$C>PWA`D "A!#K%?#HPB ! %
           >$#$M$G D?U$C!#"@ SAM->?M#?.
           MercantID – F>?N?#HPB D? "#M$>F, "$CHMI?VFW !CHD#!Q!>?#$M
           LM$C?%T? (8 SH"#D?CT?#HM!ADKU T!QM).
           purse – D$GHM jPH>#M$DD$E$ >$SHPB>? (THP$H A!"P$). M!GHA?D!H:
           DFGHM?T!@ D?A!D?H#"@ " 1.
           amount – CP!DD$H THP$H, $LMHCHP@WVHH "FGGF, D? >$#$MFW
           LM$!"U$C!# CHJH#$%?D!H >$SHPB>?. M!GHA?D!H: "FGG? CHJH#$%?D!@
           C$PID? JK#B #?>$O, A#$JK (J?P?D" >$SHPB>? L$PBN$%?#HP@- amount) >
           0;
           cur – F>?N?#HPB D? "#M$>F, "$CHMI?VFW >$C %?PW#K L$ ISO,
           LMHC"#?%PHDDKO % ASCII >$CH (3 J?O#?);
142*3 4" 3 4":
           rnd – F>?N?#HPB D? JFQHM (M?NGHM$G DH GHDHH 17 J?O#$%), % >$#$MKO
           QFD>T!@ %$N%M?V?H# "PFA?ODFW L$"PHC$%?#HPBD$"#B (8 – C%$!ADKU
           J?O#$%) % Q$MG?#H ASCII % SH"#D?CT?#HM!AD$G >$CH.
           crt – F>?N?#HPB D? JFQHM (M?NGHM$G DH GHDHH 13 J?O#$%), % >$#$MKO
           QFD>T!@ %$N%M?V?H# "HM#!Q!>?# (L$CL!"B) $LHM?T!! CHJH#$%?D!@
           >$SHPB>? (6 – C%$!ADKU J?O#$%) % Q$MG?#H ASCII %
           SH"#D?CT?#HM!AD$G >$CH.
1* % 5 "&*"     #" !":
           1 - F"LHSD$H N?%HMSHD!H LM$EM?GGK;
           0 - $S!J>? >?M#K (M?"S!MHDD$H "$$JVHD!H $J $S!J>H >?M#K G$ID$
           L$PFA!#B " L$G$VBW QFD>T!! GetCardStat);
           $#M!T?#HPBD$H ND?AHD!H >$C? $S!J>! ("G. >$CK $S!J$> % L.4.1).
C9% !#" !+: "P! >PWA! >?M#K L$PBN$%?#HP@ DH "$$#%H#"#%FW# >PWA?G SAM >?M#K,
           #$ FGHDBS?H#"@ "A`#A!> L$LK#$> "$$#%H#"#%FWVHE$ >PWA? % >?M#H
           L$PBN$%?#HP@ !P! SAM >?M#H. M! !"AHML?D!! %"HU ($JKAD$ 3-U)
           L$LK#$> "$$#%H#"#%FWV!O >PWA JP$>!MFH#"@. "P! C!D?G!AH">?@
           ?F#HD#!Q!>?T!@        LM$U$C!#    F"LHSD$,     #$    "A`#A!> L$LK#$>
           "$$#%H#"#%FWVHE$ >PWA? F"#?D?%P!%?H#"@ % G?>"!G?PBD$H ND?AHD!H
           ($JKAD$ 3).
$%!&"% 4 * 67 08!! ! ,%*9% &&4 (BC++ v.5.01) "G. L.4.2




DSSSCT                  File :xcd_pg.doc                     Ref : XCDATAPG0000                 Revision:2.0          14 / 30
                                    Copyright © Dekart S.R.L (www.dekart.com) - 2001
               This document shall not be disclosed to a third party without prior written consent of Dekart S.R.L.
   !>?>?@ A?"#B C?DD$E$ C$>FGHD#? DH G$IH# JK#B %$"LM$!N%HCHD? % >?>$O JK #$ D! JKP$ Q$MGH ! >?>!G! JK, #$ D! JKP$
                          "MHC"#%?G! JHN L!"BGHDD$E$ M?NMHSHD!@ %P?CHPBT? ?%#$M">!U LM?%.
                                                >                         ?         .
3.14.         S       A      CreditTransaction

      !":   CreditTransaction
     #" !": kFD>T!@ CreditTransaction %KL$PD@H# >MHC!#$%?D!H %KJM?DD$E$
            >$SHPB>? >?M#K L$PBN$%?#HP@ D? F>?N?DDFW "FGGF ! CHJH#$%?D!@
            "$$#%H#"#%FWVHE$ >$SHPB>? SAM->?M#K D? #FIH "FGGF. LHM?T!@
            %KL$PD@H#"@ % C!?P$EH " SAM->?M#$O, % LM$TH""H >$#$M$E$ LM$!"U$C!#
            C!D?G!AH">?@ ?F#HD#!Q!>?T!@ >?M# D? $"D$%H "HM#!Q!>?#$%
            (L$CL!"HO) $LHM?T!O.
'()* !+ ,%!&" " !+:
              H$JU$C!G$ D?P!A!H SAM->?M#K ! >?M#K L$PBN$%?#HP@.                  HMHC
            $JM?VHD!HG        >     QFD>T!!         CreditTransaction     DH$JU$C!G$
            LMHC%?M!#HPBD$ «L$C>PWA!#B» Q?OP " >PWA?G! v /v l (QFD>T!@
            CheckAccessCard),        %KN%?#B       QFD>T!!      ConnectUserCard     !
            ConnectSAMCard (H"P! j#$ DH JKP$ %KL$PDHD$ M?DHH). ?#HG
            %KL$PD!#B %DHSDWW ! %DF#MHDDWW ?F#HD#!Q!>?T!W (InternalAuth,
            ExternalAuth).
.! / 0(!(: #include "xCData.h"
            int CreditTransaction (HANDLE hcd_user, HANDLE hcd_SAM, short
            purse_user, short purse_SAM, unsigned long amount, char *cur,
            char *pointID, char *rnd, char *crt, char *rnd2, char *crt2)
12*3 4" 3 4":
            hcd_user – P$E!AH">!O D$GHM (HANDLE), "%@N?DDKO " $#>MK#KG
            >$GGFD!>?T!$DDKG L$M#$G, > >$#$M$GF L$C>PWA`D "A!#K%?#HPB ! %
            >$#$M$G D?U$C!#"@ >?M#? L$PBN$%?#HP@.
            hcd_ SAM – P$E!AH">!O D$GHM (HANDLE), "%@N?DDKO " $#>MK#KG
            >$GGFD!>?T!$DDKG L$M#$G, > >$#$M$GF L$C>PWA`D "A!#K%?#HPB ! %
            >$#$M$G D?U$C!#"@ SAM->?M#?.
            pointID – F>?N?#HPB D? "#M$>F, "$CHMI?VFW !CHD#!Q!>?#$M LFD>#?
            L$L$PDHD!@ (8 SH"#D?CT?#HM!ADKU T!QM).
            cur – F>?N?#HPB D? "#M$>F, "$CHMI?VFW >$C %?PW#K L$ ISO,
            LMHC"#?%PHDDKO % ASCII >$CH (3 J?O#?).
            purse_user – D$GHM jPH>#M$DD$E$ >$SHPB>? >?M#K L$PBN$%?#HP@ (THP$H
            A!"P$). M!GHA?D!H: DFGHM?T!@ D?A!D?H#"@ " 1.
            purse_SAM – D$GHM jPH>#M$DD$E$ >$SHPB>? SAM->?M#K (THP$H A!"P$).
              M!GHA?D!H: DFGHM?T!@ D?A!D?H#"@ " 1.
            amount – CP!DD$H THP$H, $LMHCHP@WVHH "FGGF, D? >$#$MFW
            LM$!"U$C!# >MHC!#$%?D!H >$SHPB>? >?M#K L$PBN$%?#HP@ ! CHJH#$%?D!H
            >$SHPB>? SAM->?M#K. M!GHA?D!H: "FGG? >MHC!#$%?D!@ C$PID? JK#B
            #?>$O, A#$JK (J?P?D" >$SHPB>? >?M#K L$PBN$%?#HP@ + amount) <
            L$#$P$> >?M#K L$PBN$%?#HP@, (J?P?D" >$SHPB>? SAM->?M#K - amount) >
            0.
142*3 4" 3 4":
            rnd – F>?N?#HPB D? JFQHM ("#M$>F), % >$#$M$G QFD>T!@ %$N%M?V?H#
            "PFA?ODFW L$"PHC$%?#HPBD$"#B % Q$MG?#H ASCII % SH"#D?CT?#HM!AD$G
            >$CH. ?NGHM JFQHM? C$PIHD JK#B DH GHDHH 17 J?O# (k           1).


DSSSCT                  File :xcd_pg.doc                     Ref : XCDATAPG0000                 Revision:2.0          15 / 30
                                    Copyright © Dekart S.R.L (www.dekart.com) - 2001
               This document shall not be disclosed to a third party without prior written consent of Dekart S.R.L.
   !>?>?@ A?"#B C?DD$E$ C$>FGHD#? DH G$IH# JK#B %$"LM$!N%HCHD? % >?>$O JK #$ D! JKP$ Q$MGH ! >?>!G! JK, #$ D! JKP$
                          "MHC"#%?G! JHN L!"BGHDD$E$ M?NMHSHD!@ %P?CHPBT? ?%#$M">!U LM?%.
                                                >                         ?         .
"rt - F>?N?#HPB D? JFQHM ("#M$>F), % >$#$M$G QFD>T!@ %$N%M?V?H#
           "HM#!Q!>?# (L$CL!"B) $LHM?T!! CHJH#$%?D!@ % Q$MG?#H ASCII %
           SH"#D?CT?#HM!AD$G >$CH. ?NGHM JFQHM? C$PIHD JK#B DH GHDHH 13
           J?O# (k     1).
           rnd2 – F>?N?#HPB D? JFQHM ("#M$>F), % >$#$M$G QFD>T!@ %$N%M?V?H#
           "PFA?ODFW L$"PHC$%?#HPBD$"#B % Q$MG?#H ASCII % SH"#D?CT?#HM!AD$G
           >$CH. ?NGHM JFQHM? C$PIHD JK#B DH GHDHH 17 J?O# (k     2).
           crt2 - F>?N?#HPB D? JFQHM ("#M$>F), % >$#$M$G QFD>T!@ %$N%M?V?H#
           "HM#!Q!>?# (L$CL!"B) $LHM?T!! CHJH#$%?D!@ % Q$MG?#H ASCII %
           SH"#D?CT?#HM!AD$G >$CH. ?NGHM JFQHM? C$PIHD JK#B DH GHDHH 13
           J?O# (k     2).
1* % 5 "&*"     #" !":
           1 - F"LHSD$H N?%HMSHD!H LM$EM?GGK;
           0 - $S!J>? >?M#K (M?"S!MHDD$H "$$JVHD!H $J $S!J>H >?M#K G$ID$
           L$PFA!#B " L$G$VBW QFD>T!! GetCardStat);
           $#M!T?#HPBD$H ND?AHD!H >$C? $S!J>! ("G. >$CK $S!J$> % L.4.1).
C9% !#" !+: "P! >PWA! >?M#K L$PBN$%?#HP@ DH "$$#%H#"#%FW# >PWA?G SAM >?M#K,
           #$ FGHDBS?H#"@ "A`#A!> L$LK#$> "$$#%H#"#%FWVHE$ >PWA? % >?M#H
           L$PBN$%?#HP@ !P! SAM >?M#H. M! !"AHML?D!! %"HU ($JKAD$ 3-U)
           L$LK#$> "$$#%H#"#%FWV!O >PWA JP$>!MFH#"@. "P! C!D?G!AH">?@
           ?F#HD#!Q!>?T!@     LM$U$C!#   F"LHSD$,     #$   "A`#A!>    L$LK#$>
           "$$#%H#"#%FWVHE$ >PWA? F"#?D?%P!%?H#"@ % G?>"!G?PBD$H ND?AHD!H
           ($JKAD$ 3).
$%!&"% 4 * 67 08!! ! ,%*9% &&4 (BC++ v.5.01) "G. L.4.2


   3.15.         S       A      GetMaxAmount

      !":   GetMaxAmount
     #" !": kFD>T!@ GetMaxAmount %KL$PD@H# A#HD!H ND?AHD!@ L$#$P>?
            %KJM?DD$E$ >$SHPB>? >?M#K.
'()* !+ ,%!&" " !+:
              H$JU$C!G$ D?P!A!H SAM->?M#K !P! >?M#K L$PBN$%?#HP@. HMHC
            $JM?VHD!HG > QFD>T!! GetMaxAmount DH$JU$C!G$ LMHC%?M!#HPBD$
            %KN%?#B QFD>T!W ConnectUserCard !P! ConnectSAMCard (H"P! j#$
            DH JKP$ %KL$PDHD$ M?DHH).
.! / 0(!(: #include "xCData.h"
            int GetMaxAmount (HANDLE hcd, short purse, unsigned long &amount)
12*3 4" 3 4":
            hcd – P$E!AH">!O D$GHM (HANDLE), "%@N?DDKO " $#>MK#KG
            >$GGFD!>?T!$DDKG L$M#$G, > >$#$M$GF L$C>PWA`D "A!#K%?#HPB ! %
            >$#$M$G D?U$C!#"@ >?M#? L$PBN$%?#HP@ !P! SAM->?M#?.
            purse – D$GHM jPH>#M$DD$E$ >$SHPB>? >?M#K L$PBN$%?#HP@ !P! SAM-
            >?M#K (THP$H A!"P$). M!GHA?D!H: DFGHM?T!@ D?A!D?H#"@ " 1.
142*3 4" 3 4":
            amount – CP!DD$H THP$H, $LMHCHP@WVHH ND?AHD!H L$#$P>? >$SHPB>?
            >?M#K L$PBN$%?#HP@ !P! SAM->?M#K.

DSSSCT                  File :xcd_pg.doc                     Ref : XCDATAPG0000                 Revision:2.0          16 / 30
                                    Copyright © Dekart S.R.L (www.dekart.com) - 2001
               This document shall not be disclosed to a third party without prior written consent of Dekart S.R.L.
   !>?>?@ A?"#B C?DD$E$ C$>FGHD#? DH G$IH# JK#B %$"LM$!N%HCHD? % >?>$O JK #$ D! JKP$ Q$MGH ! >?>!G! JK, #$ D! JKP$
                          "MHC"#%?G! JHN L!"BGHDD$E$ M?NMHSHD!@ %P?CHPBT? ?%#$M">!U LM?%.
                                                >                         ?         .
1* % 5 "&*"     #" !":
           1 - F"LHSD$H N?%HMSHD!H LM$EM?GGK;
          0 - $S!J>? >?M#K (M?"S!MHDD$H "$$JVHD!H $J $S!J>H >?M#K G$ID$
           L$PFA!#B " L$G$VBW QFD>T!! GetCardStat);
          $#M!T?#HPBD$H ND?AHD!H >$C? $S!J>! ("G. >$CK $S!J$> % L.4.1).
$%!&"% 4 * 67 08!! ! ,%*9% &&4 (BC++ v.5.01) "G. L.4.2



4.

      4.1.        o                x         y

 L
                            C                       x                       L                  r
 x
                 CD5!" 0*34 * % /
       0         XCDATA_NOK                                                   HD$MG?PBD$H           N?%HMSHD!H
                                                                            LM$EM?GGK. $ND!>P? $S!J>? LM!
                                                                            M?J$#H " >?M#$O.         H$JU$C!G$
                                                                            %$"L$PBN$%?#B"@           QFD>T!HO
                                                                            GetCardStat.
       1         XCDATA_OK                                                    $MG?PBD$H N?%HMSHD!H LM$EM?GGK.

                 CE!D0! *D5"9* 2 % 0/"%
       -1        ERR_PC_TIME_OUT                                             S!J>? %KN%?D? "J$HG % M?J$#H
                                                                            >$GLBW#HM?

     -2...-7                                                                  HNHM%

                 F"/% ()!%7"&4" 0*34 *E!D0!
                 ! /"%6"G( CT-API
       -8        ERR_CT_API_NOT_ACC                                         CT-API DHC$"#FLHD
      -10        ERR_CT_API_TRANSMIS                                         S!J>? LHMHC?A!
      -11        ERR_CT_API_MEM_ASIGN                                        S!J>? N?U%?#? L?G@#!

                 CE!D0!, * !0 M5!" ,%! % D*/" (
                 67 08!+&! &*37)+ xCData
      -12        ERR_FILE_NOT_FOUND                                           S!J>? %KN%?D? $#"F#"#%!HG Q?OP? "
                                                                            >PWA?G! "!"#HGK
      -13        ERR_READING_FILE                                             S!J>? LM! A#HD!! Q?OP? " >PWA?G!
                                                                            "!"#HGK
      -14        ERR_BAD_READER                                               $@%PHD!H C?DD$O $S!J>! G$IH#
                                                                            E$%$M!#B $ "PHCFWVHG:
                                                                            •    $#"F#"#%FH# "A!#K%?#HPB, !P!
                                                                            •    #!L     "A!#K%?#HP@       F>?N?D
                                                                            DHLM?%!PBD$, !P!
DSSSCT                     File :xcd_pg.doc                     Ref : XCDATAPG0000                 Revision:2.0          17 / 30
                                       Copyright © Dekart S.R.L (www.dekart.com) - 2001
                  This document shall not be disclosed to a third party without prior written consent of Dekart S.R.L.
      !>?>?@ A?"#B C?DD$E$ C$>FGHD#? DH G$IH# JK#B %$"LM$!N%HCHD? % >?>$O JK #$ D! JKP$ Q$MGH ! >?>!G! JK, #$ D! JKP$
                             "MHC"#%?G! JHN L!"BGHDD$E$ M?NMHSHD!@ %P?CHPBT? ?%#$M">!U LM?%.
                                                   >                         ?         .
•    $S!J>? LM! M?J$#H "A!#K%?#HP@,
                                                                         !P!
                                                                         •    F>?N?D DH%HMDKO       -L$M#.
  -15         ERR_NO_CARD_ON_READER                                        S!J>? %KN%?D? $#"F#"#%!HG >?M#K %
                                                                         "A!#K%?#HPH
  -16         ERR_BAD_ACCESS_CARD                                          S!J>? LM! M?J$#H " >?M#$O C$"#FL?,
                                                                         %$NG$ID$, %"#?%PHD? DH >?M#?
                                                                         C$"#FL?, ? !D?@.
  -17         ERR_INVALID_PIN_LEN                                          HLM?%!PBD?@ CP!D? PIN->$C?
  -18         ERR_INVALID_PIN_CHR                                          M!     %%$CH     PIN->$C?     JKP!
                                                                         !"L$PBN$%?DK DH #$PB>$ CH"@#!ADKH
                                                                         T!QMK
  -19         ERR_BAD_PIN_VERIFY                                         PIN->$C DH %HM!Q!T!M$%?D
  -20         ERR_BAD_PASSWORD                                             H%HMDKO     L?M$PB     C$"#FL?    >
                                                                         "H>MH#DKG >PWA?G "!"#HGK
  -21         ERR_BAD_SAM_CARD                                             S!J>? LM! M?J$#H " SAM >?M#$O,
                                                                         %$NG$ID$, %"#?%PHD? DH SAM >?M#?, ?
                                                                         !D?@.
  -22         ERR_BAD_USR_CARD                                             S!J>? LM! M?J$#H " >?M#$O
                                                                         L$PBN$%?#HP@, %$NG$ID$, %"#?%PHD?
                                                                         DH >?M#? L$PBN$%?#HP@, ? !D?@.
  -23         ERR_INV_REC_LEN                                              HLM?%!PBD?@ CP!D? N?L!"!
  -24         ERR_DNOT_FOUND_KEY                                           #"F#"#%FH# >PWA
  -25         ERR_APP_NOT_FOUND                                            #"F#"#%FH# LM!P$IHD!H
  -26         ERR_READ_CARD_FILE                                           S!J>? A#HD!@ Q?OP? D? >?M#H
  -27         ERR_IDENT_NOT_FOUND                                          ? >?M#H $#"F#"#%FH# Q?OP 8000
  -28         ERR_BAD_ISS_CERT                                             H%HMDKO "HM#!Q!>?# $#>MK#$E$
                                                                         >PWA? jG!#HD#?
  -29         ERR_BAD_ISS_IDEND                                            H%HMDKO jG!#HD#
  -30         ERR_AUTH_NOT_FOUND                                           ? >?M#H $#"F#"#%FH# Q?OP 8300
  -31         ERR_UNKNOWN_AUTH_ALG                                         H!N%H"#DKO                ?PE$M!#G
                                                                         ?F#HD#!Q!>?T!!
  -32         ERR_SN_NOT_FOUND                                             ? >?M#H $#"F#"#%FH# Q?OP 2F00
  -33         ERR_SAM_NOT_FOUND                                            #"F#"#%FH# SAM->?M#?
  -34         ERR_USR_NOT_FOUND                                            #"F#"#%FH# >?M#? L$PBN$%?#HP@
  -35         ERR_USR_PURS_NOTFOUND                                        ? >?M#H L$PBN$%?#HP@ $#"F#"#%FH#
                                                                         Q?OP " >$SHPB>$G
  -36         ERR_SAM_PURS_NOTFOUND                                        ? SAM->?M#H $#"F#"#%FH# Q?OP "
                                                                         >$SHPB>$G
  -37         ERR_USR_IS_BAD                                             « ?L$MAHD?» >?M#? L$PBN$%?#HP@ –
                                                                         L$CPHI!# !N}@#!W
  -38         ERR_SAM_IS_BAD                                             « ?L$MAHD?» SAM->?M#? – L$CPHI!#
                                                                         !N}@#!W
  -39         ERR_USR_CUR_NOT_MATCH                                        M!    %KN$%H     QFD>T!!     F>?N?D
                                                                         DH%HMDKO #!L %?PW#K % >$SHPB>H
                                                                         >?M#K L$PBN$%?#HP@

DSSSCT                  File :xcd_pg.doc                     Ref : XCDATAPG0000                 Revision:2.0          18 / 30
                                    Copyright © Dekart S.R.L (www.dekart.com) - 2001
               This document shall not be disclosed to a third party without prior written consent of Dekart S.R.L.
   !>?>?@ A?"#B C?DD$E$ C$>FGHD#? DH G$IH# JK#B %$"LM$!N%HCHD? % >?>$O JK #$ D! JKP$ Q$MGH ! >?>!G! JK, #$ D! JKP$
                          "MHC"#%?G! JHN L!"BGHDD$E$ M?NMHSHD!@ %P?CHPBT? ?%#$M">!U LM?%.
                                                >                         ?         .
-40         ERR_SAM_CUR_NOT_MATCH                                        M!    %KN$%H    QFD>T!!    F>?N?D
                                                                         DH%HMDKO #!L %?PW#K % >$SHPB>H
                                                                         SAM->?M#K
  -41         ERR_READ_USR_CARD                                            S!J>?     LM!     A#HD!!    >?M#K
                                                                         L$PBN$%?#HP@
  -42         ERR_READ_SAM_CARD                                            S!J>? LM! A#HD!! SAM->?M#K
  -43         ERR_USR_DEBIT_PURSE                                          S!J>? LM! CHJH#$%?D!! >$SHPB>?
                                                                         >?M#K L$PBN$%?#HP@
  -44         ERR_USR_CREDIT_PURSE                                         S!J>? LM! >MHC!#$%?D!! >$SHPB>?
                                                                         >?M#K L$PBN$%?#HP@
  -45         ERR_SAM_DEBIT_PURSE                                          S!J>? LM! CHJH#$%?D!! >$SHPB>?
                                                                         SAM->?M#K
  -46         ERR_INV_ID_LEN                                               H%HMD?@ CP!D? !CHD#!Q!>?#$M?

-47...-50                                                                  HNHM%

              CE!D0!, * !0 M5!" ,%! % D*/" (
              D!D)!*/"0*G mirlib (% D*/ (
              D*)OE!&! #!() &!)
  -51         ERR_BASE_TOO_BIG                                             "D$%?D!H A!"P? $AHDB J$PBS$H CP@
                                                                         LMHC"#?%PHD!@
  -52         ERR_DIV_BY_ZERO                                              HPHD!H D? D$PB (% J!JP!$#H>H
                                                                         J$PBS!U A!"HP)
  -53         ERR_OVERFLOW                                                 HMHL$PDHD!H     –   A!"P$    $AHDB
                                                                         J$PBS$H
  -54         ERR_NEG_RESULT                                               M!      %KA!"PHD!!        L$PFAHD$
                                                                         $#M!T?#HPBD$H ND?AHD!H
  -55         ERR_BAD_FORMAT                                               H%HMDKO %U$CD$O Q$MG?# A!"P?
  -56         ERR_BAD_BASE                                                 H%HMD$H $"D$%?D!H A!"P?
  -57         ERR_BAD_PARAMETERS                                           H%HMD$H !"L$PBN$%?D!H L?M?GH#M?
  -58         ERR_OUT_OF_MEMORY                                            HC$"#?#$AD$ $LHM?#!%D$O L?G@#!
  -59         ERR_NEG_ROOT                                                 H#DKO >$MHDB !N $#M!T?#HPBD$E$
                                                                         A!"P?
  -60         ERR_NEG_POWER                                                $N%HCHD!H A!"P? % $#M!T?#HPBDFW
                                                                         "#HLHDB
  -61         ERR_BAD_ROOT                                                 $LK#>? L$PFA!#B DH%HMDKO >$MHDB
  -62         ERR_INT_OP                                                   H%HMD?@ $LHM?T!@ D?C Flash A!"P$G
  -63         ERR_FLASH_OVERFLOW                                         Flash LHMHL$PDHD!H
  -64         ERR_TOO_BIG                                                  !"P? $AHDB J$PBS!H
  -65         ERR_NEG_LOG                                                  $E?M!QG !N $#M!T?#HPBD$E$ A!"P?
  -66         ERR_DOUBLE_FAIL                                              S!J>? LMH$JM?N$%?D!@ double %
                                                                         flash
  -67         ERR_IO_OVERFLOW                                              HMHL$PDHD!H JFQHM? %%$C?/%K%$C?
  -68         ERR_NO_MIRSYS                                                !JP!$#H>? J$PBS!U A!"HP DH
                                                                         LM$!D!T!?P!N!M$%?D?
  -69         ERR_BAD_MONT_MOD                                             H%HMDKO       $D#E$GHM!     G$CFPB

DSSSCT                  File :xcd_pg.doc                     Ref : XCDATAPG0000                 Revision:2.0          19 / 30
                                    Copyright © Dekart S.R.L (www.dekart.com) - 2001
               This document shall not be disclosed to a third party without prior written consent of Dekart S.R.L.
   !>?>?@ A?"#B C?DD$E$ C$>FGHD#? DH G$IH# JK#B %$"LM$!N%HCHD? % >?>$O JK #$ D! JKP$ Q$MGH ! >?>!G! JK, #$ D! JKP$
                          "MHC"#%?G! JHN L!"BGHDD$E$ M?NMHSHD!@ %P?CHPBT? ?%#$M">!U LM?%.
                                                >                         ?         .
(C$PIHD JK#B DHAH#DKG)
   -70         ERR_NO_MONT_MOD                                              H $LMHCHPHD $D#E$GHM! G$CFPB
   -71         ERR_EXP_TOO_BIG                                              P!S>$G J$PBS?@ j>"L$DHD#?
   -72         ERR_NBASE_MBP_P2                                             "D$%?D!H C$PID$ JK#B "#HLHDBW 2

-73...–124                                                                  HNHM%

   -125        ERR_FUNC_NOT_RELEASED
   -126        ERR_USR_ABORT                                               ?J$#?    LM$EM?GGK                 $"#?D$%PHD?
                                                                          L$PBN$%?#HPHG

               /* Rest of CT-API */
   -127        ERR_CT_API_ABORT                                            ?J$#?   LM$EM?GGK     $"#?D$%PHD?
                                                                          "HM%HM$G
   -128        ERR_CT_API_HTSI                                              S!J>? D!IDHE$ FM$%D@


   4.2.                 >?       s       A r                 ?                > (Borland C++ v.5.01)
//----------------------------------------------------------------------------
// Test BC++ built 32-bit DLL's (Example of xcdata.DLL call).
//
// Copyright (c) Dekart Ltd. All Rights Reserved
//
// This application tests calling into a 32-bit DLL built with Borland C++.
// Code was verified with Borland C++ 5.02
//
//----------------------------------------------------------------------------
#include <mfc/afxwin.h>    // For GetDlgItemText() + windows.h
#include <stdio.h>            // stdio.h
#include "xCData.h"           // functions from xcdata.dll
#include <stdlib.h>
#include <sys/stat.h>
#include <io.h>
#include <conio.h>
#include <dir.h>
#include <fstream.h>
#include <string.h>

//
// Declaration of DLL - functions
//
int    ( __stdcall *pCheckAccessCard)(char *Port, short ReaderType, char *IccNo,
                                       char *KeyFile, char *PIN);
int    (__stdcall *pConnectSAMCard)(char *Port, short ReaderType);
int    (__stdcall *pConnectUserCard)(char *Port, short ReaderType);
BOOL   (__stdcall *pCloseCard)(int hcd);
BOOL   (__stdcall *pSelectFileInCard)(int hcd, char *FID);
BOOL   (__stdcall *pReadFileRecord)(int hcd, short rcNo, short len, char *buf);
int    (__stdcall *pUpdateFileRecord)(int hcd, short rcNo, short len, char *buf);
int    (__stdcall *pStaticAuth)(int hcd);
BOOL   (__stdcall *pExternalAuth)(int hcd_user, int hcd_SAM);
BOOL   (__stdcall *pInternalAuth)(int hcd_user, int hcd_SAM);
int    (__stdcall *pDebitTransaction)(int hcd_user, int hcd_SAM,
                                                      short purse, unsigned long amount,
                        char *cur, char *mercantID, char *rnd, char *crt);
int    (__stdcall *pCreditTransaction)(int hcd_user, int hcd_SAM,
                                                       short purse_user, short purse_SAM,
                       unsigned long amount, char *cur, char *pointID,
                       char *rnd, char *crt,
                       char *rnd2, char *crt2);
BOOL   (__stdcall *pGetChallenge)(int hcd, char *buf);

DSSSCT                   File :xcd_pg.doc                     Ref : XCDATAPG0000                 Revision:2.0          20 / 30
                                     Copyright © Dekart S.R.L (www.dekart.com) - 2001
                This document shall not be disclosed to a third party without prior written consent of Dekart S.R.L.
    !>?>?@ A?"#B C?DD$E$ C$>FGHD#? DH G$IH# JK#B %$"LM$!N%HCHD? % >?>$O JK #$ D! JKP$ Q$MGH ! >?>!G! JK, #$ D! JKP$
                           "MHC"#%?G! JHN L!"BGHDD$E$ M?NMHSHD!@ %P?CHPBT? ?%#$M">!U LM?%.
                                                 >                         ?         .
void   (__stdcall *pGetCardStat)(char *msgbuf);
int    (__stdcall *pGetMaxAmount)(int hcd, short purse, unsigned long &amount);


char    xDll[] = "xcdata.dll";
///////////////////////////////////////////////////////////////////////////////
int main()
{

//
// Declaration & Initial Values of variables
//
   int status, i, user, sam;
   long int sum1=0;
   unsigned long amount_user=0, amount_sam=0;
   char cardnum[33]="                                 ";
   char port[20]="    ", port_sam[20]="    ",port_user[20]="    ", cardpin[32]="    ";
   char buf_err[80],buf_reader[2]=" ",buf_reader_sam[2]=" ",buf_reader_user[2]=" ";
   char buf_sum[80]="   ",buf_purse_sam[2]=" ",buf_purse_user[2]=" ";
   char card_file[5]="     ";
   char rand[17]="    ", str_buf[511]="   ";
   char rand1[17]="    ", rand2[17]="    ";
   char crt1[17]="    ", crt2[17]="    ";
   char cur[4]="   ",ident[9]="        ";
   short reader, reader_sam, reader_user, purse_sam, purse_user, purse_s, purse_u;
   char filename[MAXPATH];
   BOOL res;

//
// Load the Dynamic Link LIbrary xcdata.DLL
//
   HINSTANCE hLib = LoadLibrary(xDll);
   if ( (unsigned)hLib <= HINSTANCE_ERROR ) {
               printf("Failure loading library: %sn", xDll);
      return 0;
        }

//
// Get all the entry points for the functions we wish to test. Typedef's can
// be used to simplify casting the retrun value from GetProcAddress.
//
pCheckAccessCard =   (int( __stdcall*)(char *Port, short ReaderType, char *IccNo,char
*KeyFile, char *PIN))GetProcAddress(hLib, "CheckAccessCard");
pConnectSAMCard =    (int(__stdcall*)(char *Port, short ReaderType))GetProcAddress(hLib,
"ConnectSAMCard");
pConnectUserCard =   (int(__stdcall*)(char *Port, short ReaderType))GetProcAddress(hLib,
"ConnectUserCard");
pCloseCard =         (BOOL(__stdcall*)(int hcd))GetProcAddress(hLib, "CloseCard");
pSelectFileInCard = (BOOL(__stdcall*)(int hcd, char *FID))GetProcAddress(hLib,
"SelectFileInCard");
pReadFileRecord =    (BOOL(__stdcall*)(int hcd, short rcNo, short len, char
*buf))GetProcAddress(hLib, "ReadFileRecord");
pUpdateFileRecord = (int(__stdcall*)(int hcd, short rcNo, short len, char
*buf))GetProcAddress(hLib, "UpdateFileRecord");
pStaticAuth =        (int(__stdcall*)(int hcd))GetProcAddress(hLib, "StaticAuth");
pExternalAuth =      (BOOL(__stdcall*)(int hcd_user, int hcd_SAM))GetProcAddress(hLib,
"ExternalAuth");
pInternalAuth =      (BOOL(__stdcall*)(int hcd_user, int hcd_SAM))GetProcAddress(hLib,
"InternalAuth");
pDebitTransaction = (int(__stdcall*)(int hcd_user, int hcd_SAM,
                                                      short purse, unsigned long amount,
                        char *cur, char *mercantID, char *rnd, char
*crt))GetProcAddress(hLib, "DebitTransaction");
pCreditTransaction = (int(__stdcall*)(int hcd_user, int hcd_SAM,
                                                       short purse_user, short purse_SAM,
                       unsigned long amount, char *cur, char *pointID,
                       char *rnd, char *crt,
                       char *rnd2, char *crt2))GetProcAddress(hLib, "CreditTransaction");
pGetChallenge =      (BOOL(__stdcall*)(int hcd, char *buf))GetProcAddress(hLib,
"GetChallenge");
pGetCardStat =       (void(__stdcall*)(char *msgbuf))GetProcAddress(hLib, "GetCardStat");
pGetMaxAmount =      (int (__stdcall*)(int hcd, short purse, unsigned long
&amount))GetProcAddress(hLib,"GetMaxAmount");
DSSSCT                  File :xcd_pg.doc                     Ref : XCDATAPG0000                 Revision:2.0          21 / 30
                                    Copyright © Dekart S.R.L (www.dekart.com) - 2001
               This document shall not be disclosed to a third party without prior written consent of Dekart S.R.L.
   !>?>?@ A?"#B C?DD$E$ C$>FGHD#? DH G$IH# JK#B %$"LM$!N%HCHD? % >?>$O JK #$ D! JKP$ Q$MGH ! >?>!G! JK, #$ D! JKP$
                          "MHC"#%?G! JHN L!"BGHDD$E$ M?NMHSHD!@ %P?CHPBT? ?%#$M">!U LM?%.
                                                >                         ?         .
//
// GetProcAddress returns null on failure
//
   if( pCheckAccessCard == NULL || pConnectSAMCard == NULL                        ||   pConnectUserCard == NULL
   || pCloseCard == NULL         || pSelectFileInCard == NULL                     ||   pReadFileRecord == NULL
   || pUpdateFileRecord == NULL || pStaticAuth == NULL                            ||   pExternalAuth == NULL
   || pInternalAuth == NULL      || pDebitTransaction == NULL                     ||   pCreditTransaction ==
NULL
   || pGetChallenge == NULL      || pGetCardStat == NULL                          || pGetMaxAmount == NULL) {
      printf("Failure locating procedures.n");
      return 0;
        }

//
//   Check & load INI parameters from xcdata.ini
//
//   PORT - name of com-port connected to reader
//   PORT_SAM - name of com-port connected to reader with SAM-card
//   PORT_USER - name of com-port connected to reader with user card
//   READER - reader type
//   READER_SAM - type of reader with SAM-card
//   READER_USER - type of reader with user card
//   CA_CARD_PIN - PIN-code to access card (CA)
//   PURSE_SAM - number of purse on SAM-card
//   PURSE_USER - number of purse on user card
//   CUR - currency type
//   SUM - sum
//   ID - merchant identifier
//   CARD_FILE - name of card file
//   CA_KEY_FILE - name of file with keys of CA
//
        GetPrivateProfileString("COMMON", "PORT", "COM2", port, sizeof(port), "ex_xcd.ini");
   GetPrivateProfileString("COMMON", "PORT_SAM", "COM2", port_sam, sizeof(port_sam),
"ex_xcd.ini");
        GetPrivateProfileString("COMMON", "PORT_USER", "COM2", port_user, sizeof(port_user),
"ex_xcd.ini");
        GetPrivateProfileString("COMMON", "CA_CARD_PIN", "1111", cardpin, sizeof(cardpin),
"ex_xcd.ini");
        GetPrivateProfileString("COMMON", "READER", "2", buf_reader, sizeof(buf_reader),
"ex_xcd.ini");
   GetPrivateProfileString("COMMON", "READER_SAM", "2", buf_reader_sam,
sizeof(buf_reader_sam), "ex_xcd.ini");
   GetPrivateProfileString("COMMON", "READER_USER", "2", buf_reader_user,
sizeof(buf_reader_user), "ex_xcd.ini");
   GetPrivateProfileString("COMMON", "PURSE_SAM", "2", buf_purse_sam,
sizeof(buf_purse_sam), "ex_xcd.ini");
   GetPrivateProfileString("COMMON", "PURSE_USER", "2", buf_purse_user,
sizeof(buf_purse_user), "ex_xcd.ini");
   GetPrivateProfileString("COMMON", "CUR", "498", cur, sizeof(cur), "ex_xcd.ini");
        GetPrivateProfileString("COMMON", "ID", "11111111", ident, sizeof(ident),
"ex_xcd.ini");
   GetPrivateProfileString("COMMON", "CA_KEY_FILE", ".94980000.KEY", filename,
sizeof(filename), "ex_xcd.ini");
   GetPrivateProfileString("COMMON", "CARD_FILE", "3F00", card_file, sizeof(card_file),
"ex_xcd.ini");
   GetPrivateProfileString("COMMON", "SUM", "3", buf_sum, sizeof(buf_sum), "ex_xcd.ini");

//
// char-to-integer conversion
//
   reader_sam=atoi(buf_reader_sam);
   reader_user=atoi(buf_reader_user);
   purse_sam=atoi(buf_purse_sam);
   purse_user=atoi(buf_purse_user);
   sum1=atoi(buf_sum);


//
//     Test of XCDATA
//

//
DSSSCT                    File :xcd_pg.doc                     Ref : XCDATAPG0000                 Revision:2.0          22 / 30
                                      Copyright © Dekart S.R.L (www.dekart.com) - 2001
                 This document shall not be disclosed to a third party without prior written consent of Dekart S.R.L.
     !>?>?@ A?"#B C?DD$E$ C$>FGHD#? DH G$IH# JK#B %$"LM$!N%HCHD? % >?>$O JK #$ D! JKP$ Q$MGH ! >?>!G! JK, #$ D! JKP$
                            "MHC"#%?G! JHN L!"BGHDD$E$ M?NMHSHD!@ %P?CHPBT? ?%#$M">!U LM?%.
                                                  >                         ?         .
// Keys Reading from CA_KEY_FILE
//
//     pCloseCard(1);
     printf("n Test of CheckAccessCard n");
     printf("nn Insert Acces Card in Reader"); getch();
     status = pCheckAccessCard(port_user, reader_user, cardnum, filename,                            cardpin);
     pGetCardStat(buf_err);
     printf("n Result of Keys Reading: %d ", status);
     if(status!=1) {printf("n Card status: %s", buf_err); return 0;}

//
// Connecting to reader with user card
//
//     pCloseCard(1); pCloseCard(2);
     printf("n Test of ConnectUserCard n");
     printf("n Insert User Card in Reader"); getch();
     user = pConnectUserCard(port_user, reader_user);
     pGetCardStat(buf_err);
     if(user<0) {
         printf("n Error: %d ", user); printf("n Card status: %s", buf_err);                                  //
card status printing
         return 0;}
     else
         printf("n User_handle: %d ", user);

           printf("n ....."); getch();
//
//   GetChallenge operation for user card
//
    printf("n Test of GetChallenge (user card)n");
    res=pGetChallenge(user,rand);
    pGetCardStat(buf_err);
    if(res!=1) {
         printf("n Error: %d ", res); printf("n Card status: %s", buf_err);                                 //
card status printing
         return 0;}
     else
         printf("n User_random: %s ", rand);    // operation result printing

           printf("n ....."); getch();

//
//   GetMaxAmount operation
//
     printf("n Test of GetMaxAmount (user card)n");
     purse_u=1;                  // purse 1
     i=pGetMaxAmount(user, purse_u, amount_user);
     pGetCardStat(buf_err);
     if(i!=1) {
         printf("n Error: %d ", res); printf("n Card status: %s", buf_err);                                 //
card status printing
         return 0;}
     else
     printf("n GetMaxAmount1: %d ", amount_user);

     purse_u=2;                  // purse 2
     i=pGetMaxAmount(user, purse_u, amount_user);
     pGetCardStat(buf_err);
     if(i!=1) {
         printf("n Error: %d ", res); printf("n Card status: %s", buf_err);                                 //
card status printing
         return 0;}
     else
     printf("n GetMaxAmount2: %d ", amount_user);

     purse_u=3;                  // purse 3
     i=pGetMaxAmount(user, purse_u, amount_user);
     pGetCardStat(buf_err);
     if(i!=1) {
         printf("n Error: %d ", res); printf("n Card status: %s", buf_err);                                 //
card status printing
         return 0;}
     else
DSSSCT                    File :xcd_pg.doc                     Ref : XCDATAPG0000                 Revision:2.0          23 / 30
                                      Copyright © Dekart S.R.L (www.dekart.com) - 2001
                 This document shall not be disclosed to a third party without prior written consent of Dekart S.R.L.
     !>?>?@ A?"#B C?DD$E$ C$>FGHD#? DH G$IH# JK#B %$"LM$!N%HCHD? % >?>$O JK #$ D! JKP$ Q$MGH ! >?>!G! JK, #$ D! JKP$
                            "MHC"#%?G! JHN L!"BGHDD$E$ M?NMHSHD!@ %P?CHPBT? ?%#$M">!U LM?%.
                                                  >                         ?         .
printf("n GetMaxAmount3: %d ", amount_user);

    printf("n ....."); getch();

//
// SelectFileInCard operation for user card
//
    printf("n Test of SelectFileInCard (user card)n");
    res=pSelectFileInCard(user, "3F00");    // card file select
    pGetCardStat(buf_err);
    if(res!=1) {
         printf("n Error: %d ", res); printf("n Card status: %s", buf_err);                               //
card status printing
         return 0;}
     else
         printf("n 3F00 - %d ", res);

    res=pSelectFileInCard(user, "7F10");    // card file select
    pGetCardStat(buf_err);
    if(res!=1) {
         printf("n Error: %d ", res); printf("n Card status: %s", buf_err);                               //
card status printing
         return 0;}
     else
         printf("n 7F10 - %d ", res);

    res=pSelectFileInCard(user, "8100");    // card file select (purse descriptors)
    pGetCardStat(buf_err);
    if(res!=1) {
         printf("n Error: %d ", res); printf("n Card status: %s", buf_err);       //
card status printing
         return 0;}
     else
         printf("n 8100 - %d ", res);

         printf("n ....."); getch();

//
// ReadFileRecord operation for user card
//
    printf("n Reading of Purse's Descriptors");
    for(i=1;i<4;i++) {
    res=pReadFileRecord(user,i,16, str_buf);
    pGetCardStat(buf_err);
    if(res!=1) {
         printf("n Error: %d ", res); printf("n Card status: %s", buf_err);                               //
card status printing
         return 0;}
    else
         printf("n Purse %d description %s", i,str_buf);
    }

   printf("n ....."); getch();

//
// StaticAuth operation for User Card
//
     printf("n Test of StaticAuth (user card)");
     i=pStaticAuth(user);
     pGetCardStat(buf_err);
     if(i!=1) {
         printf("n Error: %d ", i); printf("n Card status: %s", buf_err);       // card
status printing
         return 0;}
     else
     printf("n Result of StaticAuth: %d ", i); //card status & operation result printing

    printf("n ....."); getch();

//
// Connecting to reader with SAM-card
//
//     pCloseCard(2);
DSSSCT                  File :xcd_pg.doc                     Ref : XCDATAPG0000                 Revision:2.0          24 / 30
                                    Copyright © Dekart S.R.L (www.dekart.com) - 2001
               This document shall not be disclosed to a third party without prior written consent of Dekart S.R.L.
   !>?>?@ A?"#B C?DD$E$ C$>FGHD#? DH G$IH# JK#B %$"LM$!N%HCHD? % >?>$O JK #$ D! JKP$ Q$MGH ! >?>!G! JK, #$ D! JKP$
                          "MHC"#%?G! JHN L!"BGHDD$E$ M?NMHSHD!@ %P?CHPBT? ?%#$M">!U LM?%.
                                                >                         ?         .
printf("n Test of ConnectSAMCard n");
     printf("nn Insert SAM Card in Reader"); getch();
     sam = pConnectSAMCard(port_sam, reader_sam);
     pGetCardStat(buf_err);
     if(sam<0) {
         printf("nError: %d ", sam); printf("nCard status: %s", buf_err);                                 //   card
status printing
         return 0;}
     else
         printf("n SAM_handle: %d ", sam);

           printf("n ....."); getch();

//
//   GetChallenge operation for SAM card
//
    printf("n Test of GetChallenge (SAM card)n");
    res=pGetChallenge(sam,rand);
    pGetCardStat(buf_err);
    if(res!=1) {
         printf("n Error: %d ", res); printf("n Card status: %s", buf_err);                                 //
card status printing
         return 0;}
     else
         printf("n SAM_random: %s ", rand);    // operation result printing

           printf("n ....."); getch();

//
//   GetMaxAmount operation for SAM card
//
     printf("n Test of GetMaxAmount (SAM card)n");
     purse_s=1;                  // purse 1
     i=pGetMaxAmount(sam, purse_s, amount_sam);
     pGetCardStat(buf_err);
     if(i!=1) {
         printf("n Error: %d ", i); printf("n Card status: %s", buf_err);                                 //   card
status printing
         return 0;}
     else
     printf("n GetMaxAmount1: %d ", amount_sam);

     purse_s=2;                  // purse 2
     i=pGetMaxAmount(sam, purse_s, amount_sam);
     pGetCardStat(buf_err);
     if(i!=1) {
         printf("n Error: %d ", i); printf("n Card status: %s", buf_err);                                 //   card
status printing
         return 0;}
     else
     printf("n GetMaxAmount2: %d ", amount_sam);

     purse_s=3;                  // purse 3
     i=pGetMaxAmount(sam, purse_s, amount_sam);
     pGetCardStat(buf_err);
     if(i!=1) {
         printf("n Error: %d ", i); printf("n Card status: %s", buf_err);                                 //   card
status printing
         return 0;}
     else
     printf("n GetMaxAmount3: %d ", amount_sam);

      printf("n ....."); getch();

//
// SelectFileInCard operation for SAM card
//
    printf("n Test of SelectFileInCard (SAM card)n");
    res=pSelectFileInCard(sam, "3F00");    // card file select
    pGetCardStat(buf_err);
    if(res!=1) {
         printf("n Error: %d ", res); printf("n Card status: %s", buf_err);                                 //
card status printing
DSSSCT                    File :xcd_pg.doc                     Ref : XCDATAPG0000                 Revision:2.0          25 / 30
                                      Copyright © Dekart S.R.L (www.dekart.com) - 2001
                 This document shall not be disclosed to a third party without prior written consent of Dekart S.R.L.
     !>?>?@ A?"#B C?DD$E$ C$>FGHD#? DH G$IH# JK#B %$"LM$!N%HCHD? % >?>$O JK #$ D! JKP$ Q$MGH ! >?>!G! JK, #$ D! JKP$
                            "MHC"#%?G! JHN L!"BGHDD$E$ M?NMHSHD!@ %P?CHPBT? ?%#$M">!U LM?%.
                                                  >                         ?         .
return 0;}
      else
          printf("n 3F00 - %d ", res);

    res=pSelectFileInCard(sam, "7F10");    // card file select
    pGetCardStat(buf_err);
    if(res!=1) {
         printf("n Error: %d ", res); printf("n Card status: %s", buf_err);                                 //
card status printing
         return 0;}
     else
         printf("n 7F10 - %d ", res);

    res=pSelectFileInCard(sam, "8100");    // card file select (purse descriptors)
    pGetCardStat(buf_err);
    if(res!=1) {
         printf("n Error: %d ", res); printf("n Card status: %s", buf_err);                                 //
card status printing
         return 0;}
     else
         printf("n 8100 - %d ", res);

           printf("n ....."); getch();

//
// ReadFileRecord operation for sam card
//
    printf("n Reading of Purse's Descriptors (SAM)");
    for(i=1;i<4;i++) {
    res=pReadFileRecord(sam,i,16, str_buf);
    pGetCardStat(buf_err);
    if(res!=1) {
         printf("n Error: %d ", res); printf("n Card status: %s", buf_err);                                 //
card status printing
         return 0;}
    else
         printf("n Purse %d description %s", i,str_buf);
    }

     printf("n ....."); getch();

//
// StaticAuth operation for SAM Card
//
     printf("n Test of StaticAuth (SAM card)");
     i=pStaticAuth(sam);
     pGetCardStat(buf_err);
     if(i!=1) {
         printf("n Error: %d ", i); printf("n Card status: %s", buf_err);       // card
status printing
         return 0;}
     else
     printf("n Result of StaticAuth: %d ", i); //card status & operation result printing

      printf("n ....."); getch();


//
// Internal Authentication
//
     printf("n Test of InternalAuth");
     res=pInternalAuth(user,sam);
     pGetCardStat(buf_err);
     if(res!=1) {
         printf("n Error: %d ", res); printf("n Card status: %s", buf_err);                                 //
card status printing
         return 0;}
     else
     printf("n InternalAuth: %d ", res);

      printf("n ....."); getch();

//
DSSSCT                    File :xcd_pg.doc                     Ref : XCDATAPG0000                 Revision:2.0          26 / 30
                                      Copyright © Dekart S.R.L (www.dekart.com) - 2001
                 This document shall not be disclosed to a third party without prior written consent of Dekart S.R.L.
     !>?>?@ A?"#B C?DD$E$ C$>FGHD#? DH G$IH# JK#B %$"LM$!N%HCHD? % >?>$O JK #$ D! JKP$ Q$MGH ! >?>!G! JK, #$ D! JKP$
                            "MHC"#%?G! JHN L!"BGHDD$E$ M?NMHSHD!@ %P?CHPBT? ?%#$M">!U LM?%.
                                                  >                         ?         .
//   External Authentication
//
     printf("n Test of ExternalAuth");
     res=pExternalAuth(user,sam);
     pGetCardStat(buf_err);
     if(res!=1) {
         printf("n Error: %d ", res); printf("n Card status: %s", buf_err);                                 //
card status printing
         return 0;}
     else
     printf("n ExternalAuth: %d %s ", res,buf_err);

      printf("n ....."); getch();

//
//   CreditTransaction operation
//
      printf("n Test of CreditTransaction");
//      purse_user=2; purse_sam=2;

i=pCreditTransaction(user,sam,purse_user,purse_sam,sum1,cur,ident,rand1,crt1,rand2,crt2);
     pGetCardStat(buf_err);
//     printf("n %s", buf_err);       // card status printing
     if(i!=1) {
         printf("n Error: %d ", i); printf("n Card status: %s", buf_err);       // card
status printing
         return 0;}
     else
     printf("n Result of CreditTransaction: %d %s",i, buf_err);      // operation result
printing
     printf("n Rand1: %s Cert.1: %s",rand1,crt1); // Phase1 (random & certificate)
     printf("n Rand2: %s Cert.2: %s",rand2,crt2); // Phase2 (random & certificate)


//
//   Reading of Purses after          CreditTransaction
//
    printf("nn Reading of Purse after CreditTransaction");
    res=pSelectFileInCard(user, "6F00"); // card file select (purse 1)
    pGetCardStat(buf_err);
    printf("n 6F00 - %d %s", res,buf_err);
    res=pReadFileRecord(user,1,6, str_buf);
    pGetCardStat(buf_err);
    if(res!=1) {
         printf("n Error: %d ", res); printf("n Card status: %s", buf_err);                                 //
card status printing
         return 0;}
    printf("n Result of Reading of Purse1 - %d %s %s", res,buf_err,str_buf);

    res=pSelectFileInCard(user, "6F01");    // card file select (purse 2)
    pGetCardStat(buf_err);
    printf("n 6F01 %d %s", res,buf_err);
    res=pReadFileRecord(user,1,6, str_buf);
    pGetCardStat(buf_err);
    if(res!=1) {
         printf("n Error: %d ", res); printf("n Card status: %s", buf_err);                                 //
card status printing
         return 0;}
    printf("n Result of Reading of Purse2 - %d %s %s", res,buf_err,str_buf);

    res=pSelectFileInCard(user, "6F02");     // card file select (purse 3)
    pGetCardStat(buf_err);
    printf("n 6F02 %d %s", res,buf_err);
    res=pReadFileRecord(user,1,6, str_buf);
    pGetCardStat(buf_err);
    if(res!=1) {
         printf("n Error: %d ", res); printf("n Card status: %s", buf_err);                                 //
card status printing
         return 0;}
    printf("n Result of Reading of Purse3 - %d %s %s", res,buf_err,str_buf);

      printf("n ....."); getch();

DSSSCT                    File :xcd_pg.doc                     Ref : XCDATAPG0000                 Revision:2.0          27 / 30
                                      Copyright © Dekart S.R.L (www.dekart.com) - 2001
                 This document shall not be disclosed to a third party without prior written consent of Dekart S.R.L.
     !>?>?@ A?"#B C?DD$E$ C$>FGHD#? DH G$IH# JK#B %$"LM$!N%HCHD? % >?>$O JK #$ D! JKP$ Q$MGH ! >?>!G! JK, #$ D! JKP$
                            "MHC"#%?G! JHN L!"BGHDD$E$ M?NMHSHD!@ %P?CHPBT? ?%#$M">!U LM?%.
                                                  >                         ?         .
//
//    DebitTransaction operation
//
     printf("n Test of DebitTransaction");
     i=pDebitTransaction(user,sam,purse_user,sum1,cur,ident,rand1,crt1);
     pGetCardStat(buf_err);
     if(i!=1) {
         printf("n Error: %d ", i); printf("n Card status: %s", buf_err);      // card
status printing
         return 0;}
     else
     printf("n Result of DebitTransaction: %d %s",i, buf_err);    // operation result
printing
     printf("n Rand.: %s Cert.: %s",rand1,crt1); // random & certificate

//
//   Reading of Purses after DebitTransaction
//
    printf("nn Reading of Purse after DebitTransaction");
    res=pSelectFileInCard(user, "6F00"); // card file select (purse 1)
    pGetCardStat(buf_err);
    printf("n 6F00 - %d %s", res,buf_err);
    res=pReadFileRecord(user,1,6, str_buf);
    pGetCardStat(buf_err);
    if(res!=1) {
         printf("n Error: %d ", res); printf("n Card status: %s", buf_err);                                 //
card status printing
         return 0;}
    printf("n Result of Reading of Purse1 - %d %s %s", res,buf_err,str_buf);

    res=pSelectFileInCard(user, "6F01");    // card file select (purse 2)
    pGetCardStat(buf_err);
    printf("n 6F01 %d %s", res,buf_err);
    res=pReadFileRecord(user,1,6, str_buf);
    pGetCardStat(buf_err);
    if(res!=1) {
         printf("n Error: %d ", res); printf("n Card status: %s", buf_err);                                 //
card status printing
         return 0;}
    printf("n Result of Reading of Purse2 - %d %s %s", res,buf_err,str_buf);

    res=pSelectFileInCard(user, "6F02");     // card file select (purse 3)
    pGetCardStat(buf_err);
    printf("n 6F02 %d %s", res,buf_err);
    res=pReadFileRecord(user,1,6, str_buf);
    pGetCardStat(buf_err);
    if(res!=1) {
         printf("n Error: %d ", res); printf("n Card status: %s", buf_err);                                 //
card status printing
         return 0;}
    printf("n Result of Reading of Purse3 - %d %s %s", res,buf_err,str_buf);

      printf("n ....."); getch();


//
//    Special file of user card operation
//
    printf("n Test of Special file of user card");
    res=pSelectFileInCard(user, "8400");    // card file select
    pGetCardStat(buf_err);
    if(res!=1) {
         printf("n Error: %d ", res); printf("n Card status: %s", buf_err);                                 //
card status printing
         return 0;}
     else
         printf("n 8400 - %d ", res);

    res=pReadFileRecord(user,1,16, str_buf);
    pGetCardStat(buf_err);
    if(res!=1) {
         printf("n Error: %d ", res); printf("n Card status: %s", buf_err);                                 //
card status printing
DSSSCT                    File :xcd_pg.doc                     Ref : XCDATAPG0000                 Revision:2.0          28 / 30
                                      Copyright © Dekart S.R.L (www.dekart.com) - 2001
                 This document shall not be disclosed to a third party without prior written consent of Dekart S.R.L.
     !>?>?@ A?"#B C?DD$E$ C$>FGHD#? DH G$IH# JK#B %$"LM$!N%HCHD? % >?>$O JK #$ D! JKP$ Q$MGH ! >?>!G! JK, #$ D! JKP$
                            "MHC"#%?G! JHN L!"BGHDD$E$ M?NMHSHD!@ %P?CHPBT? ?%#$M">!U LM?%.
                                                  >                         ?         .
Smart-Card Functions in xcdata.dll
Smart-Card Functions in xcdata.dll

More Related Content

What's hot

I Don't Care About Security (And Neither Should You)
I Don't Care About Security (And Neither Should You)I Don't Care About Security (And Neither Should You)
I Don't Care About Security (And Neither Should You)Joel Lord
 
Mobile Patrons: Better Services on the Go (For Techie)
Mobile Patrons: Better Services on the Go (For Techie)Mobile Patrons: Better Services on the Go (For Techie)
Mobile Patrons: Better Services on the Go (For Techie)Vincci Kwong
 
Representing Material Culture Online: Historic Clothing in Omeka
Representing Material Culture Online: Historic Clothing in OmekaRepresenting Material Culture Online: Historic Clothing in Omeka
Representing Material Culture Online: Historic Clothing in OmekaArden Kirkland
 
The Science of Search, Google & Social Signals
The Science of Search, Google & Social SignalsThe Science of Search, Google & Social Signals
The Science of Search, Google & Social SignalsBeyond
 
Security: The Great WordPress Lockdown - WordCamp Melbourne - February 2011
Security: The Great WordPress Lockdown - WordCamp Melbourne - February 2011Security: The Great WordPress Lockdown - WordCamp Melbourne - February 2011
Security: The Great WordPress Lockdown - WordCamp Melbourne - February 2011John Ford
 

What's hot (7)

I Don't Care About Security (And Neither Should You)
I Don't Care About Security (And Neither Should You)I Don't Care About Security (And Neither Should You)
I Don't Care About Security (And Neither Should You)
 
Greenberg, Starr, Kunze, and Hammond, "Show Me the Data: Managing Data Sets f...
Greenberg, Starr, Kunze, and Hammond, "Show Me the Data: Managing Data Sets f...Greenberg, Starr, Kunze, and Hammond, "Show Me the Data: Managing Data Sets f...
Greenberg, Starr, Kunze, and Hammond, "Show Me the Data: Managing Data Sets f...
 
Mobile Patrons: Better Services on the Go (For Techie)
Mobile Patrons: Better Services on the Go (For Techie)Mobile Patrons: Better Services on the Go (For Techie)
Mobile Patrons: Better Services on the Go (For Techie)
 
Representing Material Culture Online: Historic Clothing in Omeka
Representing Material Culture Online: Historic Clothing in OmekaRepresenting Material Culture Online: Historic Clothing in Omeka
Representing Material Culture Online: Historic Clothing in Omeka
 
The Science of Search, Google & Social Signals
The Science of Search, Google & Social SignalsThe Science of Search, Google & Social Signals
The Science of Search, Google & Social Signals
 
Social Signals & Search
Social Signals & SearchSocial Signals & Search
Social Signals & Search
 
Security: The Great WordPress Lockdown - WordCamp Melbourne - February 2011
Security: The Great WordPress Lockdown - WordCamp Melbourne - February 2011Security: The Great WordPress Lockdown - WordCamp Melbourne - February 2011
Security: The Great WordPress Lockdown - WordCamp Melbourne - February 2011
 

Viewers also liked

С.А. Середа - Публикации
С.А. Середа - ПубликацииС.А. Середа - Публикации
С.А. Середа - ПубликацииSergey Sereda
 
What Makes Great Infographics
What Makes Great InfographicsWhat Makes Great Infographics
What Makes Great InfographicsSlideShare
 
Masters of SlideShare
Masters of SlideShareMasters of SlideShare
Masters of SlideShareKapost
 
STOP! VIEW THIS! 10-Step Checklist When Uploading to Slideshare
STOP! VIEW THIS! 10-Step Checklist When Uploading to SlideshareSTOP! VIEW THIS! 10-Step Checklist When Uploading to Slideshare
STOP! VIEW THIS! 10-Step Checklist When Uploading to SlideshareEmpowered Presentations
 
10 Ways to Win at SlideShare SEO & Presentation Optimization
10 Ways to Win at SlideShare SEO & Presentation Optimization10 Ways to Win at SlideShare SEO & Presentation Optimization
10 Ways to Win at SlideShare SEO & Presentation OptimizationOneupweb
 
How To Get More From SlideShare - Super-Simple Tips For Content Marketing
How To Get More From SlideShare - Super-Simple Tips For Content MarketingHow To Get More From SlideShare - Super-Simple Tips For Content Marketing
How To Get More From SlideShare - Super-Simple Tips For Content MarketingContent Marketing Institute
 
A Guide to SlideShare Analytics - Excerpts from Hubspot's Step by Step Guide ...
A Guide to SlideShare Analytics - Excerpts from Hubspot's Step by Step Guide ...A Guide to SlideShare Analytics - Excerpts from Hubspot's Step by Step Guide ...
A Guide to SlideShare Analytics - Excerpts from Hubspot's Step by Step Guide ...SlideShare
 
2015 Upload Campaigns Calendar - SlideShare
2015 Upload Campaigns Calendar - SlideShare2015 Upload Campaigns Calendar - SlideShare
2015 Upload Campaigns Calendar - SlideShareSlideShare
 
What to Upload to SlideShare
What to Upload to SlideShareWhat to Upload to SlideShare
What to Upload to SlideShareSlideShare
 
How to Make Awesome SlideShares: Tips & Tricks
How to Make Awesome SlideShares: Tips & TricksHow to Make Awesome SlideShares: Tips & Tricks
How to Make Awesome SlideShares: Tips & TricksSlideShare
 
Getting Started With SlideShare
Getting Started With SlideShareGetting Started With SlideShare
Getting Started With SlideShareSlideShare
 

Viewers also liked (19)

Pom2004
Pom2004Pom2004
Pom2004
 
Cdexpert
CdexpertCdexpert
Cdexpert
 
Tezis im
Tezis imTezis im
Tezis im
 
Ckeygen
CkeygenCkeygen
Ckeygen
 
Keyserv
KeyservKeyserv
Keyserv
 
Cdserv
CdservCdserv
Cdserv
 
Keyexpo
KeyexpoKeyexpo
Keyexpo
 
С.А. Середа - Публикации
С.А. Середа - ПубликацииС.А. Середа - Публикации
С.А. Середа - Публикации
 
What Makes Great Infographics
What Makes Great InfographicsWhat Makes Great Infographics
What Makes Great Infographics
 
Masters of SlideShare
Masters of SlideShareMasters of SlideShare
Masters of SlideShare
 
STOP! VIEW THIS! 10-Step Checklist When Uploading to Slideshare
STOP! VIEW THIS! 10-Step Checklist When Uploading to SlideshareSTOP! VIEW THIS! 10-Step Checklist When Uploading to Slideshare
STOP! VIEW THIS! 10-Step Checklist When Uploading to Slideshare
 
You Suck At PowerPoint!
You Suck At PowerPoint!You Suck At PowerPoint!
You Suck At PowerPoint!
 
10 Ways to Win at SlideShare SEO & Presentation Optimization
10 Ways to Win at SlideShare SEO & Presentation Optimization10 Ways to Win at SlideShare SEO & Presentation Optimization
10 Ways to Win at SlideShare SEO & Presentation Optimization
 
How To Get More From SlideShare - Super-Simple Tips For Content Marketing
How To Get More From SlideShare - Super-Simple Tips For Content MarketingHow To Get More From SlideShare - Super-Simple Tips For Content Marketing
How To Get More From SlideShare - Super-Simple Tips For Content Marketing
 
A Guide to SlideShare Analytics - Excerpts from Hubspot's Step by Step Guide ...
A Guide to SlideShare Analytics - Excerpts from Hubspot's Step by Step Guide ...A Guide to SlideShare Analytics - Excerpts from Hubspot's Step by Step Guide ...
A Guide to SlideShare Analytics - Excerpts from Hubspot's Step by Step Guide ...
 
2015 Upload Campaigns Calendar - SlideShare
2015 Upload Campaigns Calendar - SlideShare2015 Upload Campaigns Calendar - SlideShare
2015 Upload Campaigns Calendar - SlideShare
 
What to Upload to SlideShare
What to Upload to SlideShareWhat to Upload to SlideShare
What to Upload to SlideShare
 
How to Make Awesome SlideShares: Tips & Tricks
How to Make Awesome SlideShares: Tips & TricksHow to Make Awesome SlideShares: Tips & Tricks
How to Make Awesome SlideShares: Tips & Tricks
 
Getting Started With SlideShare
Getting Started With SlideShareGetting Started With SlideShare
Getting Started With SlideShare
 

Similar to Smart-Card Functions in xcdata.dll

Танки_в_Лунапарке: нагрузочное_тестирование_в_Яндексе
Танки_в_Лунапарке: нагрузочное_тестирование_в_ЯндексеТанки_в_Лунапарке: нагрузочное_тестирование_в_Яндексе
Танки_в_Лунапарке: нагрузочное_тестирование_в_ЯндексеYandex
 
OWASP Top 10 - DrupalCon Amsterdam 2019
OWASP Top 10 - DrupalCon Amsterdam 2019OWASP Top 10 - DrupalCon Amsterdam 2019
OWASP Top 10 - DrupalCon Amsterdam 2019Ayesh Karunaratne
 
[Harvard CS264] 04 - Intermediate-level CUDA Programming
[Harvard CS264] 04 - Intermediate-level CUDA Programming[Harvard CS264] 04 - Intermediate-level CUDA Programming
[Harvard CS264] 04 - Intermediate-level CUDA Programmingnpinto
 
Justin Hughes Press Release
Justin Hughes Press Release Justin Hughes Press Release
Justin Hughes Press Release Justin Michael
 
IMTT Bayonne
IMTT BayonneIMTT Bayonne
IMTT BayonneGE 94
 
Computer Fundamental
Computer FundamentalComputer Fundamental
Computer FundamentalNishithBera1
 
State Machines to State of the Art
State Machines to State of the ArtState Machines to State of the Art
State Machines to State of the ArtRowan Merewood
 
Adapt, Collaborate, Innovate
Adapt, Collaborate, InnovateAdapt, Collaborate, Innovate
Adapt, Collaborate, InnovateJim Smurro
 
Thai Software Companies to Jakarta, Indonesia Aug 2011
Thai Software Companies to Jakarta, Indonesia Aug 2011Thai Software Companies to Jakarta, Indonesia Aug 2011
Thai Software Companies to Jakarta, Indonesia Aug 2011Software Park Thailand
 
SANS Log Management 2
SANS Log Management 2SANS Log Management 2
SANS Log Management 2laurenfortune
 
StorageAssessmentA4card1
StorageAssessmentA4card1StorageAssessmentA4card1
StorageAssessmentA4card1Steve Tester
 
Yahoo! Mail antispam - Bay area Hadoop user group
Yahoo! Mail antispam - Bay area Hadoop user groupYahoo! Mail antispam - Bay area Hadoop user group
Yahoo! Mail antispam - Bay area Hadoop user groupHadoop User Group
 
Translating Technical Effort and Impact Into Effective Forward Facing Communi...
Translating Technical Effort and Impact Into Effective Forward Facing Communi...Translating Technical Effort and Impact Into Effective Forward Facing Communi...
Translating Technical Effort and Impact Into Effective Forward Facing Communi...Sustainable Brands
 
Limites et perspectives du cinéma d'horreur français
Limites et perspectives du cinéma d'horreur françaisLimites et perspectives du cinéma d'horreur français
Limites et perspectives du cinéma d'horreur françaisAmauryPascaud
 
More Secrets of JavaScript Libraries
More Secrets of JavaScript LibrariesMore Secrets of JavaScript Libraries
More Secrets of JavaScript Librariesjeresig
 
Historiografía de la educación comie selección
Historiografía de la educación comie selecciónHistoriografía de la educación comie selección
Historiografía de la educación comie selecciónnada
 
The Case For Pharmacists As Legal Healthcare Providers
The Case For Pharmacists As Legal Healthcare ProvidersThe Case For Pharmacists As Legal Healthcare Providers
The Case For Pharmacists As Legal Healthcare ProvidersErin L. Albert
 
Application security
Application securityApplication security
Application securitykrusty43
 

Similar to Smart-Card Functions in xcdata.dll (20)

Ccrt pg
Ccrt pgCcrt pg
Ccrt pg
 
Танки_в_Лунапарке: нагрузочное_тестирование_в_Яндексе
Танки_в_Лунапарке: нагрузочное_тестирование_в_ЯндексеТанки_в_Лунапарке: нагрузочное_тестирование_в_Яндексе
Танки_в_Лунапарке: нагрузочное_тестирование_в_Яндексе
 
OWASP Top 10 - DrupalCon Amsterdam 2019
OWASP Top 10 - DrupalCon Amsterdam 2019OWASP Top 10 - DrupalCon Amsterdam 2019
OWASP Top 10 - DrupalCon Amsterdam 2019
 
[Harvard CS264] 04 - Intermediate-level CUDA Programming
[Harvard CS264] 04 - Intermediate-level CUDA Programming[Harvard CS264] 04 - Intermediate-level CUDA Programming
[Harvard CS264] 04 - Intermediate-level CUDA Programming
 
Justin Hughes Press Release
Justin Hughes Press Release Justin Hughes Press Release
Justin Hughes Press Release
 
IMTT Bayonne
IMTT BayonneIMTT Bayonne
IMTT Bayonne
 
sas aeroplan sample
sas aeroplan samplesas aeroplan sample
sas aeroplan sample
 
Computer Fundamental
Computer FundamentalComputer Fundamental
Computer Fundamental
 
State Machines to State of the Art
State Machines to State of the ArtState Machines to State of the Art
State Machines to State of the Art
 
Adapt, Collaborate, Innovate
Adapt, Collaborate, InnovateAdapt, Collaborate, Innovate
Adapt, Collaborate, Innovate
 
Thai Software Companies to Jakarta, Indonesia Aug 2011
Thai Software Companies to Jakarta, Indonesia Aug 2011Thai Software Companies to Jakarta, Indonesia Aug 2011
Thai Software Companies to Jakarta, Indonesia Aug 2011
 
SANS Log Management 2
SANS Log Management 2SANS Log Management 2
SANS Log Management 2
 
StorageAssessmentA4card1
StorageAssessmentA4card1StorageAssessmentA4card1
StorageAssessmentA4card1
 
Yahoo! Mail antispam - Bay area Hadoop user group
Yahoo! Mail antispam - Bay area Hadoop user groupYahoo! Mail antispam - Bay area Hadoop user group
Yahoo! Mail antispam - Bay area Hadoop user group
 
Translating Technical Effort and Impact Into Effective Forward Facing Communi...
Translating Technical Effort and Impact Into Effective Forward Facing Communi...Translating Technical Effort and Impact Into Effective Forward Facing Communi...
Translating Technical Effort and Impact Into Effective Forward Facing Communi...
 
Limites et perspectives du cinéma d'horreur français
Limites et perspectives du cinéma d'horreur françaisLimites et perspectives du cinéma d'horreur français
Limites et perspectives du cinéma d'horreur français
 
More Secrets of JavaScript Libraries
More Secrets of JavaScript LibrariesMore Secrets of JavaScript Libraries
More Secrets of JavaScript Libraries
 
Historiografía de la educación comie selección
Historiografía de la educación comie selecciónHistoriografía de la educación comie selección
Historiografía de la educación comie selección
 
The Case For Pharmacists As Legal Healthcare Providers
The Case For Pharmacists As Legal Healthcare ProvidersThe Case For Pharmacists As Legal Healthcare Providers
The Case For Pharmacists As Legal Healthcare Providers
 
Application security
Application securityApplication security
Application security
 

More from CompaniaDekartSRL (20)

Ikeygen
IkeygenIkeygen
Ikeygen
 
Keycert
KeycertKeycert
Keycert
 
Ikeyexpo
IkeyexpoIkeyexpo
Ikeyexpo
 
Cdex pg
Cdex pgCdex pg
Cdex pg
 
Suprfull
SuprfullSuprfull
Suprfull
 
Pom2010a
Pom2010aPom2010a
Pom2010a
 
Pom2009a
Pom2009aPom2009a
Pom2009a
 
Pom2005b
Pom2005bPom2005b
Pom2005b
 
Pom2002e
Pom2002ePom2002e
Pom2002e
 
Pom2001d
Pom2001dPom2001d
Pom2001d
 
Pom2001a
Pom2001aPom2001a
Pom2001a
 
Pom2001
Pom2001Pom2001
Pom2001
 
Petrova 99full
Petrova 99fullPetrova 99full
Petrova 99full
 
Petr98
Petr98Petr98
Petr98
 
Pc pz
Pc pzPc pz
Pc pz
 
Ecomigra
EcomigraEcomigra
Ecomigra
 
E com an
E com anE com an
E com an
 
Dcsp pg1
Dcsp pg1Dcsp pg1
Dcsp pg1
 
Dcsp
DcspDcsp
Dcsp
 
D crypto api
D crypto apiD crypto api
D crypto api
 

Smart-Card Functions in xcdata.dll

  • 1. SMART-CARD Smart- !"#$% 30 2001
  • 2. @ A ?DDKO C$>FGHD# "$CHMI!# $L!"?D!H QFD>T!O (% "#!PH @NK>? ), %U$C@V!U % C!D?G!AH">! N?EMFI?HGFW J!JP!$#H>F xcdata.dll. M!%$C!#"@ DH$JU$C!G?@ "LM?%$AD?@ !DQ$MG?T!@, "%HCHD!@ $ %$NG$IDKU $S!J>?U, %$ND!>?WV!U LM! M?J$#H QFD>T!O. DSSSCT File :xcd_pg.doc Ref : XCDATAPG0000 Revision:2.0 2 / 30 Copyright © Dekart S.R.L (www.dekart.com) - 2001 This document shall not be disclosed to a third party without prior written consent of Dekart S.R.L. !>?>?@ A?"#B C?DD$E$ C$>FGHD#? DH G$IH# JK#B %$"LM$!N%HCHD? % >?>$O JK #$ D! JKP$ Q$MGH ! >?>!G! JK, #$ D! JKP$ "MHC"#%?G! JHN L!"BGHDD$E$ M?NMHSHD!@ %P?CHPBT? ?%#$M">!U LM?%. > ? .
  • 3. EP?%PHD!H 1. C@DC@EFCGF HGHIGJKFLG XCDATA.DLL.............................................................................. 4 2. JHOGF PFQFCGR ........................................................................................................................... 4 3. J G @CGF STCLUGV HGHIGJKFLG XCDATA.DLL............................................................ 6 3.1. STCLUGR CHECKACCESSCARD ..................................................................................................... 6 3.2. STCLUGR CONNECTSAMCARD ..................................................................................................... 7 3.3. STCLUGR CONNECTUSERCARD ..................................................................................................... 7 3.4. STCLUGR CLOSECARD ................................................................................................................... 8 3.5. STCLUGR GETCARDSTAT............................................................................................................... 8 3.6. STCLUGR GETCHALLENGE ............................................................................................................ 8 3.7. STCLUGR SELECTFILEINCARD ...................................................................................................... 9 3.8. STCLUGR READFILERECORD....................................................................................................... 10 3.9. STCLUGR UPDATEFILERECORD................................................................................................... 10 3.10. STCLUGR STATICAUTH ............................................................................................................ 11 3.11. STCLUGR EXTERNALAUTH ...................................................................................................... 12 3.12. STCLUGR INTERNALAUTH........................................................................................................ 12 3.13. STCLUGR DEBITTRANSACTION ................................................................................................ 13 3.14. STCLUGR CREDITTRANSACTION ............................................................................................. 15 3.15. STCLUGR GETMAXAMOUNT .................................................................................................... 16 4. GIJeFCGR................................................................................................................................... 17 4.1. JJHOFCGR JH JfGHL@g........................................................................................................... 17 4.2. G F PhDJP@ STCLUGV JQTIR GD Ji @ h (BORLAND C++ V.5.01) ....................... 20 4.3. PD@G J PRDn STCLUGV JQTIR XCDATA.DLL......................................................................... 29 DSSSCT File :xcd_pg.doc Ref : XCDATAPG0000 Revision:2.0 3 / 30 Copyright © Dekart S.R.L (www.dekart.com) - 2001 This document shall not be disclosed to a third party without prior written consent of Dekart S.R.L. !>?>?@ A?"#B C?DD$E$ C$>FGHD#? DH G$IH# JK#B %$"LM$!N%HCHD? % >?>$O JK #$ D! JKP$ Q$MGH ! >?>!G! JK, #$ D! JKP$ "MHC"#%?G! JHN L!"BGHDD$E$ M?NMHSHD!@ %P?CHPBT? ?%#$M">!U LM?%. > ? .
  • 4. 1. C ? xcdata.dll $CFPB - C!D?G!AH">! N?EMFI?HG?@ J!JP!$#H>? xcdata.dll - LMHCD?ND?AHD CP@ $ME?D!N?T!! LFD>#? L$L$PDHD!@ >$SHPB>$% >?M#K L$PBN$%?#HP@ D? $"D$%H LHM"$D?PBD$E$ >$GLBW#HM?. "L$PDHD!H G$CFP@ % %!CH "#?DC?M#D$O C!D?G!AH">! N?EMFI?HG$O J!JP!$#H>! Windows L$N%$P@H# !"L$PBN$%?#B H` !N "?GKU M?NDKU LM!P$IHD!O ! "!"#HG LM$EM?GG!M$%?D!@, D?A!D?@ $# FoxPro, Visual Basic >$DA?@ Delphi ! ++ Builder. 2. J o ?J$M QFD>T!O C!D?G!AH">! N?EMFI?HG$O J!JP!$#H>! xcdata.dll %>PWA?H#: EMFLLF QFD>T!O, LMHCD?ND?AHDDKU CP@ ?F#HD#!Q!>?T!! >?M# L$PBN$%?#HPHO, EMFLLF QFD>T!O CP@ M?J$#K " jPH>#M$DDKG >$SHPB>$G ! M?NP!ADKH %"L$G$E?#HPBDKH QFD>T!!. kFD>T!!, %U$C@V!H % G$CFPB xcdata.dll, MH?P!N$%?DK D? @NK>?U LM$EM?GG!M$%?D!@ , C++. H$JU$C!G$H $J$MFC$%?D!H: • l$GLBW#HM IBM PC (486 ! %KSH), !GHWV!O "%$J$CDKH L$"PHC$%?#HPBDKH L$M#K; • Smart->?M#K: >?M#? C$"#FL?, >?M#? L$PBN$%?#HP@, SAM->?M#? (Secure Application Module); • A!#K%?#HPB smart->?M# $CD$E$ !N "PHCFWV!U #!L$%: SCR-60, Reflex 60, Reflex 72 (Schlumberger), TOWITOKO ChipDrive. H$JU$C!G$H LM$EM?GGD$H $JH"LHAHD!H: • LHM?T!$DD?@ "!"#HG? MS Windows 9x, NT; • CT API CP@ "A!#K%?#HPHO TOWITOKO ChipDrive ! Schlumberger Reflex 72; • k?OP " >PWA$G v /v l CA_ID.KEY. "#?D$%>? G$CFP@ xcdata.dll $"FVH"#%P@H#"@ LM$"#KG HE$ >$L!M$%?D!HG % "$$#%H#"#%FWV!O >?#?P$E (SYSTEM, SYSTEM32) "!"#HGK Windows. N?!G$CHO"#%!H QFD>T!O G$CFP@ xcdata.dll LM!%HCHD$ D? M!"FD>H % LM!P$IHD!! L.4.3. G ? > smart- > J ? >r C ? >r q C ? $PBN$- >r >r / C$"#FL? SAM %?#HP@ >? s A r >? s A r 1 CheckAccessCard + - - - 2 ConnectSAMCard - + - - CloseCard 3 ConnectUserCard - - + - CloseCard DSSSCT File :xcd_pg.doc Ref : XCDATAPG0000 Revision:2.0 4 / 30 Copyright © Dekart S.R.L (www.dekart.com) - 2001 This document shall not be disclosed to a third party without prior written consent of Dekart S.R.L. !>?>?@ A?"#B C?DD$E$ C$>FGHD#? DH G$IH# JK#B %$"LM$!N%HCHD? % >?>$O JK #$ D! JKP$ Q$MGH ! >?>!G! JK, #$ D! JKP$ "MHC"#%?G! JHN L!"BGHDD$E$ M?NMHSHD!@ %P?CHPBT? ?%#$M">!U LM?%. > ? .
  • 5. - + - ConnectSAMCard/ 4 GetChallenge - + ConnectUserCard - + - ConnectSAMCard/ 5 SelectFileInCard - + ConnectUserCard + CheckAccessCard, 6 StaticAuth - + - ConnectSAMCard/ - + ConnectUserCard - + + ConnectSAMCard, 7 ExternalAuth ConnectUserCard - + + ConnectSAMCard, 8 InternalAuth ConnectUserCard - + - ConnectSAMCard/ 9 ReadFileRecord - + ConnectUserCard, SelectFileInCard - + + ConnectSAMCard, ConnectUserCard, 10 UpdateFileRecord ExternalAuth, InternalAuth SelectFileInCard + CheckAccessCard, StaticAuth + ConnectSAMCard, 11 DebitTransaction + ConnectUserCard, ExternalAuth, InternalAuth, + CheckAccessCard, StaticAuth + ConnectSAMCard, 12 CreditTransaction + ConnectUserCard, ExternalAuth, InternalAuth + + ConnectSAMCard, 13 GetMaxAmount ConnectUserCard 14 CloseCard $EF# %KL$PD@#B"@ L$"PH PWJ$O !N %KSHLHMHA!"PHDDKU QFD>T!O 15 GetCardStat DSSSCT File :xcd_pg.doc Ref : XCDATAPG0000 Revision:2.0 5 / 30 Copyright © Dekart S.R.L (www.dekart.com) - 2001 This document shall not be disclosed to a third party without prior written consent of Dekart S.R.L. !>?>?@ A?"#B C?DD$E$ C$>FGHD#? DH G$IH# JK#B %$"LM$!N%HCHD? % >?>$O JK #$ D! JKP$ Q$MGH ! >?>!G! JK, #$ D! JKP$ "MHC"#%?G! JHN L!"BGHDD$E$ M?NMHSHD!@ %P?CHPBT? ?%#$M">!U LM?%. > ? .
  • 6. 3. J s A r xcdata.dll 3.1. S A CheckAccessCard !": CheckAccessCard #" !": kFD>T!@ LM$%HM@H# D?P!A!H % "A!#K%?#HPH >?M#K C$"#FL?. "P! $D? LM!"F#"#%FH#, #$ HO LMHC}@%P@H#"@ F>?N?DDKO PIN->$C ! " >?M#K C$"#FL? "A!#K%?H#"@ H` "HM!ODKO D$GHM. kFD>T!@ #?>IH $LMHCHP@H# D?P!A!H Q?OP? " $#>MK#KG >PWA$G v /v l (CA_ID.KEY) !, H"P! $D $JD?MFIHD, #$ LM$!N%$C!#"@ HE$ «L$C>PWAHD!H» > G$CFPW. $%!&"# !": HMHC N?%HMSHD!HG >$GGFD!>?T!$DDKO L$M# ("A!#K%?#HPB) $"%$J$IC?H#"@. '()* !+ ,%!&" " !+: H$JU$C!G$ D?P!A!H >?M#K C$"#FL? ! Q?OP? " >PWA?G! THD#M? LP?#`ID$O "!"#HGK. .! / 0(!(: #include "xCData.h" int CheckAccessCard(char *Port, short ReaderType, char *IccNo, char *KeyFile, char *PIN)) 12*3 4" 3 4": Port – F>?N?#HPB D? "#M$>F "$CHMI?VFW !G@ >$GGFD!>?T!$DD$E$ L$M#? (D?LM!GHM COM1, COM2, COM3, COM4). ReaderType – THP$H A!"P$, F>?NK%?WVHH #!L "A!#K%?#HP@. $CCHMI!%?W#"@ 4 #!L? "A!#K%?#HPHO: „ L.L. M$!N%$C!#HPB / ?N%?D!H ReaderType 1 Schlumberger / SCR 60 0 2 Schlumberger / Reflex 60 1 3 TOWITOKO / ChipDrive 2 4 Schlumberger / Reflex 72 3 KeyFile – F>?N?#HPB D? "#M$>F, "$CHMI?VFW LF#B ! !G@ Q?OP? " >PWA?G! THD#M? LP?#`ID$O "!"#HGK CA_ID.KEY, >$#$MKO !"L$PBNFH#"@ CP@ L$PFAHD!@ $#>MK#$E$ >PWA? THD#M? "!"#HGK. PIN – F>?N?#HPB D? "#M$>F, "$CHMI?VFW PIN–>$C >?M#K C$"#FL?. PIN– >$C G$IH# "$"#$@#B $# 4 C$ 8 CH"@#!ADKU T!QM. 142*3 4" 3 4": IccNo – F>?N?#HPB D? JFQHM ("#M$>F), % >$#$M$G JFCH# %$N%M?V`D "HM!ODKO D$GHM >?M#K C$"#FL?. ?NGHM JFQHM? C$PIHD JK#B DH GHDHH 33 J?O#$%. 1* % 5 "&*" #" !": 1 – % "PFA?H F"LHSD$E$ N?%HMSHD!@ LM$EM?GGK, !D?AH $#M!T?#HPBD$H ND?AHD!H >$C? $S!J>! ("G. >$CK $S!J$> L.4.1). $%!&"% 4 * 67 08!! ! ,%*9% &&4 (BC++ v.5.01) "G. L.4.2 DSSSCT File :xcd_pg.doc Ref : XCDATAPG0000 Revision:2.0 6 / 30 Copyright © Dekart S.R.L (www.dekart.com) - 2001 This document shall not be disclosed to a third party without prior written consent of Dekart S.R.L. !>?>?@ A?"#B C?DD$E$ C$>FGHD#? DH G$IH# JK#B %$"LM$!N%HCHD? % >?>$O JK #$ D! JKP$ Q$MGH ! >?>!G! JK, #$ D! JKP$ "MHC"#%?G! JHN L!"BGHDD$E$ M?NMHSHD!@ %P?CHPBT? ?%#$M">!U LM?%. > ? .
  • 7. 3.2. S A ConnectSAMCard !": ConnectSAMCard #" !": kFD>T!@ LM$%HM@H# D?P!A!H % "A!#K%?#HPH SAM >?M#K. "P! >?M#? LM!"F#"#%FH#, #$ $D? "#?D$%!#"@ C$"#FLD$O CP@ CMFE!U QFD>T!O. '()* !+ ,%!&" " !+: H$JU$C!G$ D?P!A!H SAM->?M#K. .! / 0(!(: #include "xCData.h" HANDLE ConnectSAMCard (char *Port, short ReaderType) 12*3 4" 3 4": Port – F>?N?#HPB D? "#M$>F, "$CHMI?VFW !G@ >$GGFD!>?T!$DD$E$ L$M#? ("G. L.3.1). ReaderType – THP$H A!"P$, F>?NK%?WVHH #!L "A!#K%?#HP@ ("G. L.3.1). 1* % 5 "&*" #" !": HANDLE (CH">M!L#$M, P$E!AH">!O D$GHM, "%@N?DDKO " $#>MK#KG >$GGFD!>?T!$DDKG L$M#$G, > >$#$M$GF L$C>PWA`D "A!#K%?#HPB ! % >$#$M$G D?U$C!#"@ SAM->?M#?) – LM! F"LHSD$G N?%HMSHD!! LM$EM?GGK, !D?AH $#M!T?#HPBD$H ND?AHD!H >$C? $S!J>! ("G. >$CK $S!J$> % L.4.1) M!GHA?D!H. HMHC $JM?VHD!HG > QFD>T!! ConnectSAMCard DH$JU$C!G$ LMHC%?M!#HPBD$ FC$"#$%HM!#B"@, A#$ >$GGFD!>?T!$DDKO L$M# DH JKP M?DHH $#>MK# CP@ M?J$#K " CMFE$O >?M#$O ("G. L.3.4). C9% !#" !+: H$JU$C!G$ "$JPWCHD!@ "#M$E$E$ "$$#%H#"#%!@ #!L? "A!#K%?#HP@ (ReaderType) " MH?PBDKG "A!#K%?#HPHG, L$C>PWA`DDKG > C?DD$GF L$"PHC$%?#HPBD$GF L$M#F. H"$JPWCHD!H j#$E$ $EM?D!AHD!@ LM!%$C!# > DHLMHC">?NFHGKG MHNFPB#?#?G. $%!&"% 4 * 67 08!! ! ,%*9% &&4 (BC++ v.5.01) "G. L.4.2 3.3. S A ConnectUserCard !": ConnectUserCard #" !": kFD>T!@ LM$%HM@H# D?P!A!H % "A!#K%?#HPH >?M#K L$PBN$%?#HP@. "P! >?M#? LM!"F#"#%FH#, #$ $D? "#?D$%!#"@ C$"#FLD$O CP@ CMFE!U QFD>T!O. '()* !+ ,%!&" " !+: H$JU$C!G$ D?P!A!H >?M#K L$PBN$%?#HP@. .! / 0(!(: #include "xCData.h" HANDLE ConnectUserCard (char *Port, short ReaderType) 12*3 4" 3 4": Port – F>?N?#HPB D? "#M$>F, "$CHMI?VFW !G@ >$GGFD!>?T!$DD$E$ L$M#? ("G. L.3.1). ReaderType – THP$H A!"P$, F>?NK%?WVHH #!L "A!#K%?#HP@ ("G. L.3.1). 1* % 5 "&*" #" !": HANDLE (CH">M!L#$M, P$E!AH">!O D$GHM, "%@N?DDKO " $#>MK#KG >$GGFD!>?T!$DDKG L$M#$G, > >$#$M$GF L$C>PWA`D "A!#K%?#HPB ! % >$#$M$G D?U$C!#"@ >?M#? L$PBN$%?#HP@) – H"P! F"LHSD$H N?%HMSHD!H LM$EM?GGK, !D?AH $#M!T?#HPBD$H ND?AHD!H >$C? $S!J>! ("G. >$CK $S!J$> % L.4.1). M!GHA?D!H. HMHC $JM?VHD!HG > QFD>T!! ConnectUserCard DH$JU$C!G$ LMHC%?M!#HPBD$ FC$"#$%HM!#B"@, A#$ >$GGFD!>?T!$DDKO L$M# DH JKP M?DHH $#>MK# CP@ M?J$#K " CMFE$O >?M#$O ("G. L.3.4). DSSSCT File :xcd_pg.doc Ref : XCDATAPG0000 Revision:2.0 7 / 30 Copyright © Dekart S.R.L (www.dekart.com) - 2001 This document shall not be disclosed to a third party without prior written consent of Dekart S.R.L. !>?>?@ A?"#B C?DD$E$ C$>FGHD#? DH G$IH# JK#B %$"LM$!N%HCHD? % >?>$O JK #$ D! JKP$ Q$MGH ! >?>!G! JK, #$ D! JKP$ "MHC"#%?G! JHN L!"BGHDD$E$ M?NMHSHD!@ %P?CHPBT? ?%#$M">!U LM?%. > ? .
  • 8. C9% !#" !+: H$JU$C!G$ "$JPWCHD!@ "#M$E$E$ "$$#%H#"#%!@ #!L? "A!#K%?#HP@ (ReaderType) " MH?PBDKG "A!#K%?#HPHG, L$C>PWA`DDKG > C?DD$GF L$"PHC$%?#HPBD$GF L$M#F. H"$JPWCHD!H j#$E$ $EM?D!AHD!@ LM!%$C!# > DHLMHC">?NFHGKG MHNFPB#?#?G. $%!&"% 4 * 67 08!! ! ,%*9% &&4 (BC++ v.5.01) "G. L.4.2 3.4. S A CloseCard !": CloseCard #" !": kFD>T!@ N?%HMS?H# M?J$#F " >?M#$O, %"#?%PHDD$O % "A!#K%?#HPB, N?>MK%?H# ! $"%$J$IC?H# L$M#. '()* !+ ,%!&" " !+: H$JU$C!G$ D?P!A!H PWJ$O !N %KSHLHMHA!"PHDDKU smart->?M#. .! / 0(!(: #include "xCData.h" BOOL CloseCard (HANDLE hcd) 12*3 4" 3 4": hcd – P$E!AH">!O D$GHM (HANDLE), "%@N?DDKO " $#>MK#KG >$GGFD!>?T!$DDKG L$M#$G, > >$#$M$GF L$C>PWA`D "A!#K%?#HPB ! % >$#$M$G D?U$C!#"@ >?M#?. 1* % 5 "&*" #" !": True, H"P! F"LHSD$H N?%HMSHD!H LM$EM?GGK, !D?AH – False. $%!&"% 4 * 67 08!! ! ,%*9% &&4 (BC++ v.5.01) "G. L.4.2 3.5. S A GetCardStat !": GetCardStat #" !": "$$#%H#"#%!! "$ ND?AHD!HG >$C? $S!J>! QFD>T!@ %KC?H# M?"S!MHDD$H "$$JVHD!H $J $S!J>H. ?DD?@ QFD>T!@ G$IH# JK#B !"L$PBN$%?D? L$"PH PWJ$O QFD>T!! G$CFP@ CP@ C!?ED$"#!>! %KL$PDHD!@ $LHM?T!! % >?M#H. '()* !+ ,%!&" " !+: H$JU$C!G$ D?P!A!H PWJ$O !N %KSHLHMHA!"PHDDKU smart->?M#. .! / 0(!(: #include "xCData.h" void GetCardStat (char *msgbuf) 12*3 4" 3 4": $#"F#"#%FW#. 142*3 4" 3 4": msgbuf – F>?N?#HPB D? JFQHM ("#M$>F), % >$#$M$G JFCH# %$N%M?VHD$ "$$JVHD!H $J $S!J>H. ?NGHM JFQHM? C$PIHD JK#B DH GHDHH 80 J?O#. C9% !#" !+: kFD>T!@ C$PID? %KNK%?#B"@ DHL$"MHC"#%HDD$ N? QFD>T!HO, %KN%?%SHO $S!J>F % >?M#H, !D?AH %$N%M?V?HG$H "$$JVHD!H JFCH# "$CHMI?#B «GF"$M». $%!&"% 4 * 67 08!! ! ,%*9% &&4 (BC++ v.5.01) "G. L.4.2 3.6. S A GetChallenge DSSSCT File :xcd_pg.doc Ref : XCDATAPG0000 Revision:2.0 8 / 30 Copyright © Dekart S.R.L (www.dekart.com) - 2001 This document shall not be disclosed to a third party without prior written consent of Dekart S.R.L. !>?>?@ A?"#B C?DD$E$ C$>FGHD#? DH G$IH# JK#B %$"LM$!N%HCHD? % >?>$O JK #$ D! JKP$ Q$MGH ! >?>!G! JK, #$ D! JKP$ "MHC"#%?G! JHN L!"BGHDD$E$ M?NMHSHD!@ %P?CHPBT? ?%#$M">!U LM?%. > ? .
  • 9. !": GetChallenge #" !": kFD>T!@ L$PFA?H# "PFA?OD$H A!"P$, Q$MG!MFHG$H >?M#$O, ! N?L!"K%?H# HE$ % JFQHM. ?>IH G$IH# JK#B !"L$PBN$%?D? CP@ $LMHCHPHD!@ D?P!A!@ >?M#K % "A!#K%?#HPH. '()* !+ ,%!&" " !+: H$JU$C!G$ D?P!A!H SAM->?M#K !P! >?M#K L$PBN$%?#HP@. HMHC $JM?VHD!HG > QFD>T!! GetChallenge DH$JU$C!G$ LMHC%?M!#HPBD$ %KN%?#B QFD>T!W ConnectUserCard !P! ConnectSAMCard (H"P! j#$ DH JKP$ %KL$PDHD$ M?DHH). .! / 0(!(: #include "xCData.h" BOOL GetChallenge (HANDLE hcd, char *buf) 12*3 4" 3 4": hcd – P$E!AH">!O D$GHM (HANDLE), "%@N?DDKO " $#>MK#KG >$GGFD!>?T!$DDKG L$M#$G, > >$#$M$GF L$C>PWA`D "A!#K%?#HPB ! % >$#$M$G D?U$C!#"@ >?M#?. 142*3 4" 3 4": buf - F>?N?#HPB D? JFQHM ("#M$>F), % >$#$M$G QFD>T!@ %$N%M?V?H# "PFA?ODFW L$"PHC$%?#HPBD$"#B % Q$MG?#H ASCII % SH"#D?CT?#HM!AD$G >$CH. ?NGHM JFQHM? C$PIHD JK#B DH GHDHH 17 J?O#. 1* % 5 "&*" #" !": True, H"P! F"LHSD$H N?%HMSHD!H LM$EM?GGK, !D?AH – False. CD$O !N LM!A!D L$@%PHD!@ MHNFPB#?#? False G$IH# JK#B $#"F#"#%!H >?M#K % "A!#K%?#HPH. $%!&"% 4 * 67 08!! ! ,%*9% &&4 (BC++ v.5.01) "G. L.4.2 3.7. S A SelectFileInCard !": SelectFileInCard #" !": kFD>T!@ LM$%HM@H# D?P!A!H % >?M#H F>?N?DD$E$ Q?OP?. "P! C?DDKO Q?OP LM!"F#"#%FH#, #$ $D CHP?H#"@ #H>FV!G. '()* !+ ,%!&" " !+: H$JU$C!G$ D?P!A!H SAM->?M#K !P! >?M#K L$PBN$%?#HP@. HMHC $JM?VHD!HG > QFD>T!! SelectFileInCard DH$JU$C!G$ LMHC%?M!#HPBD$ %KN%?#B QFD>T!W ConnectUserCard !P! ConnectSAMCard (H"P! j#$ DH JKP$ %KL$PDHD$ M?DHH). .! / 0(!(: #include "xCData.h" BOOL SelectFileInCard (HANDLE hcd, char *FID) 12*3 4" 3 4": hcd – P$E!AH">!O D$GHM (HANDLE), "%@N?DDKO " $#>MK#KG >$GGFD!>?T!$DDKG L$M#$G, > >$#$M$GF L$C>PWA`D "A!#K%?#HPB ! % >$#$M$G D?U$C!#"@ >?M#?. FID – F>?N?#HPB D? "#M$>F, "$CHMI?VFW !CHD#!Q!>?#$M (!G@) Q?OP?. 1* % 5 "&*" #" !": "PFA?H F"LHSD$E$ N?%HMSHD!@ LM$EM?GGK - True, !D?AH False, LM! j#$G M?"S!MHDD$H "$$JVHD!H $J $S!J>H >?M#K G$ID$ L$PFA!#B " L$G$VBW QFD>T!! GetCardStat. $%!&"% 4 * 67 08!! ! ,%*9% &&4 (BC++ v.5.01) "G. L.4.2 DSSSCT File :xcd_pg.doc Ref : XCDATAPG0000 Revision:2.0 9 / 30 Copyright © Dekart S.R.L (www.dekart.com) - 2001 This document shall not be disclosed to a third party without prior written consent of Dekart S.R.L. !>?>?@ A?"#B C?DD$E$ C$>FGHD#? DH G$IH# JK#B %$"LM$!N%HCHD? % >?>$O JK #$ D! JKP$ Q$MGH ! >?>!G! JK, #$ D! JKP$ "MHC"#%?G! JHN L!"BGHDD$E$ M?NMHSHD!@ %P?CHPBT? ?%#$M">!U LM?%. > ? .
  • 10. 3.8. S A ReadFileRecord !": ReadFileRecord #" !": kFD>T!@ ReadFileRecord LM$%HM@H# D?P!A!H % >?M#H F>?N?DD$E$ Q?OP?. "P! C?DDKO Q?OP LM!"F#"#%FH#, #$ LM$!N%$C!#"@ A#HD!H !N DHE$ %KJM?DD$O N?L!"!. '()* !+ ,%!&" " !+: H$JU$C!G$ D?P!A!H SAM->?M#K !P! >?M#K L$PBN$%?#HP@. HMHC $JM?VHD!HG > QFD>T!! ReadFileRecord DH$JU$C!G$ LMHC%?M!#HPBD$ %KN%?#B QFD>T!W ConnectUserCard !P! ConnectSAMCard (H"P! j#$ DH JKP$ %KL$PDHD$ M?DHH), ? #?>IH %KJM?#B "$$#%H#"#%FWV!O FM$%HDB % !HM?MU!! Q?OP$% " L$G$VBW QFD>T!! SelectFileInCard. .! / 0(!(: #include "xCData.h" BOOL ReadFileRecord (HANDLE hcd, short rcNo, short len, char *buf) 12*3 4" 3 4": hcd – P$E!AH">!O D$GHM (HANDLE), "%@N?DDKO " $#>MK#KG >$GGFD!>?T!$DDKG L$M#$G, > >$#$M$GF L$C>PWA`D "A!#K%?#HPB ! % >$#$M$G D?U$C!#"@ >?M#?. rcNo – D$GHM N?L!"! CP@ A#HD!@, THP$H A!"P$. M!GHA?D!H: DFGHM?T!@ D?A!D?H#"@ " 1. len – CP!D? N?L!"! % J?O#?U, THP$H A!"P$. buf – F>?N?#HPB D? JFQHM ("#M$>?), % >$#$M$G JFCH# %$N%M?VHD? LM$A!#?DD?@ N?L!"B !N Q?OP?. ?NGHM JFQHM? C$PIHD JK#B DH GHDHH 2 * len + 1. 1* % 5 "&*" #" !": True, H"P! F"LHSD$H N?%HMSHD!H LM$EM?GGK, !D?AH False. "PFA?H False, M?"S!MHDD$H "$$JVHD!H $J $S!J>H >?M#K G$ID$ L$PFA!#B " L$G$VBW QFD>T!! GetCardStat. C9% !#" !+: $GHM N?L!"B (rcNo) ! CP!D? N?L!"! (len) DH G$EF# JK#B J$PBSH 255. lM$GH #$E$, j#! %HP!A!DK C$PIDK #$AD$ "$$#%H#"#%$%?#B "#MF>#FMH %KJM?DD$E$ Q?OP?. $%!&"% 4 * 67 08!! ! ,%*9% &&4 (BC++ v.5.01) "G. L.4.2 3.9. S A UpdateFileRecord !": UpdateFileRecord #" !": kFD>T!@ UpdateFileRecord LM$%HM@H# D?P!A!H % >?M#H F>?N?DD$E$ Q?OP?. "P! C?DDKO Q?OP LM!"F#"#%FH#, #$ LM$!N%$C!#"@ N?GHD? %KJM?DD$O N?L!"!. '()* !+ ,%!&" " !+: H$JU$C!G$ D?P!A!H SAM->?M#K !P! >?M#K L$PBN$%?#HP@. HMHC $JM?VHD!HG > QFD>T!! UpdateFileRecord DH$JU$C!G$ LMHC%?M!#HPBD$ %KN%?#B QFD>T!W ConnectUserCard !P! ConnectSAMCard (H"P! j#$ DH JKP$ %KL$PDHD$ M?DHH), ? #?>IH %KJM?#B "$$#%H#"#%FWV!O FM$%HDB % !HM?MU!! Q?OP$% " L$G$VBW DSSSCT File :xcd_pg.doc Ref : XCDATAPG0000 Revision:2.0 10 / 30 Copyright © Dekart S.R.L (www.dekart.com) - 2001 This document shall not be disclosed to a third party without prior written consent of Dekart S.R.L. !>?>?@ A?"#B C?DD$E$ C$>FGHD#? DH G$IH# JK#B %$"LM$!N%HCHD? % >?>$O JK #$ D! JKP$ Q$MGH ! >?>!G! JK, #$ D! JKP$ "MHC"#%?G! JHN L!"BGHDD$E$ M?NMHSHD!@ %P?CHPBT? ?%#$M">!U LM?%. > ? .
  • 11. QFD>T!! SelectFileInCard ! LMHC}@%!#B "$$#%H#"#%FWV!O >PWA. ?LM!GHM, CP@ N?GHDK N?L!"! % Q?OPH “8400” #MHJFH#"@ %KL$PD!#B %DHSDWW ! %DF#MHDDWW ?F#HD#!Q!>?T!W (QFD>T!! ExternalAuth ! InternalAuth). .! / 0(!(: #include "xCData.h" int UpdateFileRecord (HANDLE hcd, short rcNo, short len, char *buf) 12*3 4" 3 4": hcd – P$E!AH">!O D$GHM (HANDLE), "%@N?DDKO " $#>MK#KG >$GGFD!>?T!$DDKG L$M#$G, > >$#$M$GF L$C>PWA`D "A!#K%?#HPB ! % >$#$M$G D?U$C!#"@ >?M#?. rcNo – D$GHM N?L!"! CP@ A#HD!@, THP$H A!"P$. M!GHA?D!H: DFGHM?T!@ D?A!D?H#"@ " 1. len – CP!D? N?L!"! % J?O#?U, THP$H A!"P$. buf – F>?N?#HPB D? JFQHM ("#M$>?), % >$#$M$G D?U$C!#"@ N?L!"B CP@ N?GHDK (% Q$MG?#H ASCII). 1* % 5 "&*" #" !": 1, H"P! F"LHSD$H N?%HMSHD!H LM$EM?GGK, !D?AH 0 ($S!J>? >?M#K) !P! $#M!T?#HPBD$H ND?AHD!H >$C? $S!J>! ("G. >$CK $S!J$>). "PFA?H 0 M?"S!MHDD$H "$$JVHD!H $J $S!J>H >?M#K G$ID$ L$PFA!#B " L$G$VBW QFD>T!! GetCardStat. C9% !#" !+: $GHM N?L!"B (rcNo) ! CP!D? N?L!"! (len) DH G$EF# JK#B J$PBSH 255. lM$GH #$E$, j#! %HP!A!DK C$PIDK #$AD$ "$$#%H#"#%$%?#B "#MF>#FMH %KJM?DD$E$ Q?OP?. $%!&"% 4 * 67 08!! ! ,%*9% &&4 (BC++ v.5.01) "G. L.4.2 3.10. S A StaticAuth !": StaticAuth #" !": kFD>T!@ StaticAuth %KL$PD@H# "#?#!AH">FW ?F#HD#!Q!>?T!W >?M#K, >$#$M?@ %>PWA?H# LM$%HM>F %HMD$"#! "#?#!AH">!U C?DDKU D? >?M#H, LM!D?CPHID$"#B >?M#K C?DD$O "!"#HGH ! jG!#HD#F. ?DD?@ LM$%HM>? @%P@H#"@ «"!PBD$O», #.>., L$ "F#!, $"FVH"#%P@H#"@ LM$%HM>? T!QM$%$O L$CL!"!. '()* !+ ,%!&" " !+: H$JU$C!G$ D?P!A!H SAM->?M#K !P! >?M#K L$PBN$%?#HP@. HMHC $JM?VHD!HG > QFD>T!! StaticAuth DH$JU$C!G$ LMHC%?M!#HPBD$ «L$C>PWA!#B» Q?OP " >PWA?G! v /v l (QFD>T!@ CheckAccessCard) ! %KN%?#B QFD>T!W ConnectUserCard !P! ConnectSAMCard (H"P! j#$ DH JKP$ %KL$PDHD$ M?DHH). .! / 0(!(: #include "xCData.h" int StaticAuth (HANDLE hcd) 12*3 4" 3 4": hcd – P$E!AH">!O D$GHM (HANDLE), "%@N?DDKO " $#>MK#KG >$GGFD!>?T!$DDKG L$M#$G, > >$#$M$GF L$C>PWA`D "A!#K%?#HPB ! % >$#$M$G D?U$C!#"@ >?M#?. 1* % 5 "&*" #" !": 1 - F"LHSD$H N?%HMSHD!H LM$EM?GGK; DSSSCT File :xcd_pg.doc Ref : XCDATAPG0000 Revision:2.0 11 / 30 Copyright © Dekart S.R.L (www.dekart.com) - 2001 This document shall not be disclosed to a third party without prior written consent of Dekart S.R.L. !>?>?@ A?"#B C?DD$E$ C$>FGHD#? DH G$IH# JK#B %$"LM$!N%HCHD? % >?>$O JK #$ D! JKP$ Q$MGH ! >?>!G! JK, #$ D! JKP$ "MHC"#%?G! JHN L!"BGHDD$E$ M?NMHSHD!@ %P?CHPBT? ?%#$M">!U LM?%. > ? .
  • 12. 0 - $S!J>? >?M#K (M?"S!MHDD$H "$$JVHD!H $J $S!J>H >?M#K G$ID$ L$PFA!#B " L$G$VBW QFD>T!! GetCardStat); $#M!T?#HPBD$H ND?AHD!H >$C? $S!J>! ("G. >$CK $S!J$> % L.4.1). $%!&"% 4 * 67 08!! ! ,%*9% &&4 (BC++ v.5.01) "G. L.4.2 3.11. S A ExternalAuth !": ExternalAuth #" !": kFD>T!@ ExternalAuth %KL$PD@H# %DHSDWW ?F#HD#!Q!>?T!W, >$#$M?@ $ND?A?H#, A#$ >?M#? L$PBN$%?#HP@ LM$%HM@H#, @%P@H#"@ P! >$MMH>#D$O SAM >?M#?. F#HD#!Q!>?T!@ LMHC"#?%P@H# "$J$O LM$%HM>F %HMD$"#! >PWAHO % SAM G$CFPH. D? @%P@H#"@ LM$%HM>$O MAC ND?AHD!@ L$PFAHDD$E$ LM! L$G$V! ?PE$M!#G? DES. ˆ#? LM$%HM>? @%P@H#"@ J$PHH "P?J$O, AHG LM$%HM>?, %KL$PD@HG?@ QFD>T!HO StaticAuth. '()* !+ ,%!&" " !+: H$JU$C!G$ D?P!A!H SAM->?M#K ! >?M#K L$PBN$%?#HP@. HMHC $JM?VHD!HG > QFD>T!! ExternalAuth DH$JU$C!G$ LMHC%?M!#HPBD$ %KN%?#B QFD>T!! ConnectUserCard ! ConnectSAMCard (H"P! j#$ DH JKP$ %KL$PDHD$ M?DHH). .! / 0(!(: #include "xCData.h" BOOL ExternalAuth (HANDLE hcd_user, HANDLE hcd_SAM) 12*3 4" 3 4": hcd_user – P$E!AH">!O D$GHM (HANDLE), "%@N?DDKO " $#>MK#KG >$GGFD!>?T!$DDKG L$M#$G, > >$#$M$GF L$C>PWA`D "A!#K%?#HPB ! % >$#$M$G D?U$C!#"@ >?M#? L$PBN$%?#HP@. hcd_ SAM – P$E!AH">!O D$GHM (HANDLE), "%@N?DDKO " $#>MK#KG >$GGFD!>?T!$DDKG L$M#$G, > >$#$M$GF L$C>PWA`D "A!#K%?#HPB ! % >$#$M$G D?U$C!#"@ SAM->?M#?. 1* % 5 "&*" #" !": True, H"P! F"LHSD$H N?%HMSHD!H LM$EM?GGK, !D?AH False. "PFA?H False, M?"S!MHDD$H "$$JVHD!H $J $S!J>H >?M#K G$ID$ L$PFA!#B " L$G$VBW QFD>T!! GetCardStat. C9% !#" !+: "P! >PWA! SAM >?M#K DH "$$#%H#"#%FW# >PWA?G >?M#K L$PBN$%?#HP@, #$ FGHDBS?H#"@ "A`#A!> L$LK#$> "$$#%H#"#%FWVHE$ >PWA? % >?M#H L$PBN$%?#HP@. M! !"AHML?D!! %"HU ($JKAD$ 3-U) L$LK#$> "$$#%H#"#%FWV!O >PWA JP$>!MFH#"@. "P! ?F#HD#!Q!>?T!@ LM$U$C!# F"LHSD$, #$ "A`#A!> L$LK#$> "$$#%H#"#%FWVHE$ >PWA? F"#?D?%P!%?H#"@ % G?>"!G?PBD$H ND?AHD!H ($JKAD$ 3). $%!&"% 4 * 67 08!! ! ,%*9% &&4 (BC++ v.5.01) "G. L.4.2 3.12. S A InternalAuth !": InternalAuth DSSSCT File :xcd_pg.doc Ref : XCDATAPG0000 Revision:2.0 12 / 30 Copyright © Dekart S.R.L (www.dekart.com) - 2001 This document shall not be disclosed to a third party without prior written consent of Dekart S.R.L. !>?>?@ A?"#B C?DD$E$ C$>FGHD#? DH G$IH# JK#B %$"LM$!N%HCHD? % >?>$O JK #$ D! JKP$ Q$MGH ! >?>!G! JK, #$ D! JKP$ "MHC"#%?G! JHN L!"BGHDD$E$ M?NMHSHD!@ %P?CHPBT? ?%#$M">!U LM?%. > ? .
  • 13. #" !": kFD>T!@ InternalAuth %KL$PD@H# %DF#MHDDWW ?F#HD#!Q!>?T!W, >$#$M?@ $ND?A?H#, A#$ SAM >?M#? LM$%HM@H#, @%P@H#"@ P! >$MMH>#D$O >?M#? L$PBN$%?#HP@. F#HD#!Q!>?T!@ LMHC"#?%P@H# "$J$O LM$%HM>F %HMD$"#! >PWAHO >?M#K L$PBN$%?#HP@. D? @%P@H#"@ LM$%HM>$O MAC ND?AHD!@, L$PFAHDD$E$ LM! L$G$V! ?PE$M!#G? DES. ?DD?@ LM$%HM>? @%P@H#"@ J$PHH "P?J$O, AHG LM$%HM>?, %KL$PD@HG?@ QFD>T!HO StaticAuth. '()* !+ ,%!&" " !+: H$JU$C!G$ D?P!A!H SAM->?M#K ! >?M#K L$PBN$%?#HP@. HMHC $JM?VHD!HG > QFD>T!! InternalAuth DH$JU$C!G$ LMHC%?M!#HPBD$ %KN%?#B QFD>T!! ConnectUserCard ! ConnectSAMCard (H"P! j#$ DH JKP$ %KL$PDHD$ M?DHH). .! / 0(!(: #include "xCData.h" BOOL InternalAuth (HANDLE hcd_user, HANDLE hcd_SAM) 12*3 4" 3 4": hcd_user – P$E!AH">!O D$GHM (HANDLE), "%@N?DDKO " $#>MK#KG >$GGFD!>?T!$DDKG L$M#$G, > >$#$M$GF L$C>PWA`D "A!#K%?#HPB ! % >$#$M$G D?U$C!#"@ >?M#? L$PBN$%?#HP@. hcd_ SAM – P$E!AH">!O D$GHM (HANDLE), "%@N?DDKO " $#>MK#KG >$GGFD!>?T!$DDKG L$M#$G, > >$#$M$GF L$C>PWA`D "A!#K%?#HPB ! % >$#$M$G D?U$C!#"@ SAM->?M#?. 1* % 5 "&*" #" !": True, H"P! F"LHSD$H N?%HMSHD!H LM$EM?GGK, !D?AH False. "PFA?H False, M?"S!MHDD$H "$$JVHD!H $J $S!J>H >?M#K G$ID$ L$PFA!#B " L$G$VBW QFD>T!! GetCardStat. C9% !#" !+: "P! >PWA! >?M#K L$PBN$%?#HP@ DH "$$#%H#"#%FW# >PWA?G SAM >?M#K, #$ FGHDBS?H#"@ "A`#A!> L$LK#$> "$$#%H#"#%FWVHE$ >PWA? % SAM >?M#H. M! !"AHML?D!! %"HU ($JKAD$ 3-U) L$LK#$> "$$#%H#"#%FWV!O >PWA JP$>!MFH#"@. "P! ?F#HD#!Q!>?T!@ LM$U$C!# F"LHSD$, #$ "A`#A!> L$LK#$> "$$#%H#"#%FWVHE$ >PWA? F"#?D?%P!%?H#"@ % G?>"!G?PBD$H ND?AHD!H ($JKAD$ 3). $%!&"% 4 * 67 08!! ! ,%*9% &&4 (BC++ v.5.01) "G. L.4.2 3.13. S A DebitTransaction !": DebitTransaction #" !": kFD>T!@ DebitTransaction %KL$PD@H# CHJH#$%?D!H %KJM?DD$E$ >$SHPB>? >?M#K L$PBN$%?#HP@ D? F>?N?DDFW "FGGF. LHM?T!@ %KL$PD@H#"@ % C!?P$EH " SAM->?M#$O, % LM$TH""H >$#$M$E$ LM$!"U$C!# C!D?G!AH">?@ ?F#HD#!Q!>?T!@ >?M# ! "$NC?`#"@ "HM#!Q!>?# (L$CL!"B) $LHM?T!!. '()* !+ ,%!&" " !+: H$JU$C!G$ D?P!A!H SAM->?M#K ! >?M#K L$PBN$%?#HP@. HMHC $JM?VHD!HG > QFD>T!! DebitTransaction DH$JU$C!G$ LMHC%?M!#HPBD$ «L$C>PWA!#B» Q?OP " >PWA?G! v /v l (QFD>T!@ CheckAccessCard), %KN%?#B QFD>T!! ConnectUserCard ! ConnectSAMCard (H"P! j#$ DH DSSSCT File :xcd_pg.doc Ref : XCDATAPG0000 Revision:2.0 13 / 30 Copyright © Dekart S.R.L (www.dekart.com) - 2001 This document shall not be disclosed to a third party without prior written consent of Dekart S.R.L. !>?>?@ A?"#B C?DD$E$ C$>FGHD#? DH G$IH# JK#B %$"LM$!N%HCHD? % >?>$O JK #$ D! JKP$ Q$MGH ! >?>!G! JK, #$ D! JKP$ "MHC"#%?G! JHN L!"BGHDD$E$ M?NMHSHD!@ %P?CHPBT? ?%#$M">!U LM?%. > ? .
  • 14. JKP$ %KL$PDHD$ M?DHH). ?#HG %KL$PD!#B %DHSDWW ! %DF#MHDDWW ?F#HD#!Q!>?T!W (InternalAuth, ExternalAuth). .! / 0(!(: #include "xCData.h" int DebitTransaction (HANDLE hcd_user, HANDLE hcd_SAM, short purse, unsigned long amount, char *cur, char *merchantID, char *rnd, char *crt) 12*3 4" 3 4": hcd_user – P$E!AH">!O D$GHM (HANDLE), "%@N?DDKO " $#>MK#KG >$GGFD!>?T!$DDKG L$M#$G, > >$#$M$GF L$C>PWA`D "A!#K%?#HPB ! % >$#$M$G D?U$C!#"@ >?M#? L$PBN$%?#HP@. hcd_ SAM – P$E!AH">!O D$GHM (HANDLE), "%@N?DDKO " $#>MK#KG >$GGFD!>?T!$DDKG L$M#$G, > >$#$M$GF L$C>PWA`D "A!#K%?#HPB ! % >$#$M$G D?U$C!#"@ SAM->?M#?. MercantID – F>?N?#HPB D? "#M$>F, "$CHMI?VFW !CHD#!Q!>?#$M LM$C?%T? (8 SH"#D?CT?#HM!ADKU T!QM). purse – D$GHM jPH>#M$DD$E$ >$SHPB>? (THP$H A!"P$). M!GHA?D!H: DFGHM?T!@ D?A!D?H#"@ " 1. amount – CP!DD$H THP$H, $LMHCHP@WVHH "FGGF, D? >$#$MFW LM$!"U$C!# CHJH#$%?D!H >$SHPB>?. M!GHA?D!H: "FGG? CHJH#$%?D!@ C$PID? JK#B #?>$O, A#$JK (J?P?D" >$SHPB>? L$PBN$%?#HP@- amount) > 0; cur – F>?N?#HPB D? "#M$>F, "$CHMI?VFW >$C %?PW#K L$ ISO, LMHC"#?%PHDDKO % ASCII >$CH (3 J?O#?); 142*3 4" 3 4": rnd – F>?N?#HPB D? JFQHM (M?NGHM$G DH GHDHH 17 J?O#$%), % >$#$MKO QFD>T!@ %$N%M?V?H# "PFA?ODFW L$"PHC$%?#HPBD$"#B (8 – C%$!ADKU J?O#$%) % Q$MG?#H ASCII % SH"#D?CT?#HM!AD$G >$CH. crt – F>?N?#HPB D? JFQHM (M?NGHM$G DH GHDHH 13 J?O#$%), % >$#$MKO QFD>T!@ %$N%M?V?H# "HM#!Q!>?# (L$CL!"B) $LHM?T!! CHJH#$%?D!@ >$SHPB>? (6 – C%$!ADKU J?O#$%) % Q$MG?#H ASCII % SH"#D?CT?#HM!AD$G >$CH. 1* % 5 "&*" #" !": 1 - F"LHSD$H N?%HMSHD!H LM$EM?GGK; 0 - $S!J>? >?M#K (M?"S!MHDD$H "$$JVHD!H $J $S!J>H >?M#K G$ID$ L$PFA!#B " L$G$VBW QFD>T!! GetCardStat); $#M!T?#HPBD$H ND?AHD!H >$C? $S!J>! ("G. >$CK $S!J$> % L.4.1). C9% !#" !+: "P! >PWA! >?M#K L$PBN$%?#HP@ DH "$$#%H#"#%FW# >PWA?G SAM >?M#K, #$ FGHDBS?H#"@ "A`#A!> L$LK#$> "$$#%H#"#%FWVHE$ >PWA? % >?M#H L$PBN$%?#HP@ !P! SAM >?M#H. M! !"AHML?D!! %"HU ($JKAD$ 3-U) L$LK#$> "$$#%H#"#%FWV!O >PWA JP$>!MFH#"@. "P! C!D?G!AH">?@ ?F#HD#!Q!>?T!@ LM$U$C!# F"LHSD$, #$ "A`#A!> L$LK#$> "$$#%H#"#%FWVHE$ >PWA? F"#?D?%P!%?H#"@ % G?>"!G?PBD$H ND?AHD!H ($JKAD$ 3). $%!&"% 4 * 67 08!! ! ,%*9% &&4 (BC++ v.5.01) "G. L.4.2 DSSSCT File :xcd_pg.doc Ref : XCDATAPG0000 Revision:2.0 14 / 30 Copyright © Dekart S.R.L (www.dekart.com) - 2001 This document shall not be disclosed to a third party without prior written consent of Dekart S.R.L. !>?>?@ A?"#B C?DD$E$ C$>FGHD#? DH G$IH# JK#B %$"LM$!N%HCHD? % >?>$O JK #$ D! JKP$ Q$MGH ! >?>!G! JK, #$ D! JKP$ "MHC"#%?G! JHN L!"BGHDD$E$ M?NMHSHD!@ %P?CHPBT? ?%#$M">!U LM?%. > ? .
  • 15. 3.14. S A CreditTransaction !": CreditTransaction #" !": kFD>T!@ CreditTransaction %KL$PD@H# >MHC!#$%?D!H %KJM?DD$E$ >$SHPB>? >?M#K L$PBN$%?#HP@ D? F>?N?DDFW "FGGF ! CHJH#$%?D!@ "$$#%H#"#%FWVHE$ >$SHPB>? SAM->?M#K D? #FIH "FGGF. LHM?T!@ %KL$PD@H#"@ % C!?P$EH " SAM->?M#$O, % LM$TH""H >$#$M$E$ LM$!"U$C!# C!D?G!AH">?@ ?F#HD#!Q!>?T!@ >?M# D? $"D$%H "HM#!Q!>?#$% (L$CL!"HO) $LHM?T!O. '()* !+ ,%!&" " !+: H$JU$C!G$ D?P!A!H SAM->?M#K ! >?M#K L$PBN$%?#HP@. HMHC $JM?VHD!HG > QFD>T!! CreditTransaction DH$JU$C!G$ LMHC%?M!#HPBD$ «L$C>PWA!#B» Q?OP " >PWA?G! v /v l (QFD>T!@ CheckAccessCard), %KN%?#B QFD>T!! ConnectUserCard ! ConnectSAMCard (H"P! j#$ DH JKP$ %KL$PDHD$ M?DHH). ?#HG %KL$PD!#B %DHSDWW ! %DF#MHDDWW ?F#HD#!Q!>?T!W (InternalAuth, ExternalAuth). .! / 0(!(: #include "xCData.h" int CreditTransaction (HANDLE hcd_user, HANDLE hcd_SAM, short purse_user, short purse_SAM, unsigned long amount, char *cur, char *pointID, char *rnd, char *crt, char *rnd2, char *crt2) 12*3 4" 3 4": hcd_user – P$E!AH">!O D$GHM (HANDLE), "%@N?DDKO " $#>MK#KG >$GGFD!>?T!$DDKG L$M#$G, > >$#$M$GF L$C>PWA`D "A!#K%?#HPB ! % >$#$M$G D?U$C!#"@ >?M#? L$PBN$%?#HP@. hcd_ SAM – P$E!AH">!O D$GHM (HANDLE), "%@N?DDKO " $#>MK#KG >$GGFD!>?T!$DDKG L$M#$G, > >$#$M$GF L$C>PWA`D "A!#K%?#HPB ! % >$#$M$G D?U$C!#"@ SAM->?M#?. pointID – F>?N?#HPB D? "#M$>F, "$CHMI?VFW !CHD#!Q!>?#$M LFD>#? L$L$PDHD!@ (8 SH"#D?CT?#HM!ADKU T!QM). cur – F>?N?#HPB D? "#M$>F, "$CHMI?VFW >$C %?PW#K L$ ISO, LMHC"#?%PHDDKO % ASCII >$CH (3 J?O#?). purse_user – D$GHM jPH>#M$DD$E$ >$SHPB>? >?M#K L$PBN$%?#HP@ (THP$H A!"P$). M!GHA?D!H: DFGHM?T!@ D?A!D?H#"@ " 1. purse_SAM – D$GHM jPH>#M$DD$E$ >$SHPB>? SAM->?M#K (THP$H A!"P$). M!GHA?D!H: DFGHM?T!@ D?A!D?H#"@ " 1. amount – CP!DD$H THP$H, $LMHCHP@WVHH "FGGF, D? >$#$MFW LM$!"U$C!# >MHC!#$%?D!H >$SHPB>? >?M#K L$PBN$%?#HP@ ! CHJH#$%?D!H >$SHPB>? SAM->?M#K. M!GHA?D!H: "FGG? >MHC!#$%?D!@ C$PID? JK#B #?>$O, A#$JK (J?P?D" >$SHPB>? >?M#K L$PBN$%?#HP@ + amount) < L$#$P$> >?M#K L$PBN$%?#HP@, (J?P?D" >$SHPB>? SAM->?M#K - amount) > 0. 142*3 4" 3 4": rnd – F>?N?#HPB D? JFQHM ("#M$>F), % >$#$M$G QFD>T!@ %$N%M?V?H# "PFA?ODFW L$"PHC$%?#HPBD$"#B % Q$MG?#H ASCII % SH"#D?CT?#HM!AD$G >$CH. ?NGHM JFQHM? C$PIHD JK#B DH GHDHH 17 J?O# (k 1). DSSSCT File :xcd_pg.doc Ref : XCDATAPG0000 Revision:2.0 15 / 30 Copyright © Dekart S.R.L (www.dekart.com) - 2001 This document shall not be disclosed to a third party without prior written consent of Dekart S.R.L. !>?>?@ A?"#B C?DD$E$ C$>FGHD#? DH G$IH# JK#B %$"LM$!N%HCHD? % >?>$O JK #$ D! JKP$ Q$MGH ! >?>!G! JK, #$ D! JKP$ "MHC"#%?G! JHN L!"BGHDD$E$ M?NMHSHD!@ %P?CHPBT? ?%#$M">!U LM?%. > ? .
  • 16. "rt - F>?N?#HPB D? JFQHM ("#M$>F), % >$#$M$G QFD>T!@ %$N%M?V?H# "HM#!Q!>?# (L$CL!"B) $LHM?T!! CHJH#$%?D!@ % Q$MG?#H ASCII % SH"#D?CT?#HM!AD$G >$CH. ?NGHM JFQHM? C$PIHD JK#B DH GHDHH 13 J?O# (k 1). rnd2 – F>?N?#HPB D? JFQHM ("#M$>F), % >$#$M$G QFD>T!@ %$N%M?V?H# "PFA?ODFW L$"PHC$%?#HPBD$"#B % Q$MG?#H ASCII % SH"#D?CT?#HM!AD$G >$CH. ?NGHM JFQHM? C$PIHD JK#B DH GHDHH 17 J?O# (k 2). crt2 - F>?N?#HPB D? JFQHM ("#M$>F), % >$#$M$G QFD>T!@ %$N%M?V?H# "HM#!Q!>?# (L$CL!"B) $LHM?T!! CHJH#$%?D!@ % Q$MG?#H ASCII % SH"#D?CT?#HM!AD$G >$CH. ?NGHM JFQHM? C$PIHD JK#B DH GHDHH 13 J?O# (k 2). 1* % 5 "&*" #" !": 1 - F"LHSD$H N?%HMSHD!H LM$EM?GGK; 0 - $S!J>? >?M#K (M?"S!MHDD$H "$$JVHD!H $J $S!J>H >?M#K G$ID$ L$PFA!#B " L$G$VBW QFD>T!! GetCardStat); $#M!T?#HPBD$H ND?AHD!H >$C? $S!J>! ("G. >$CK $S!J$> % L.4.1). C9% !#" !+: "P! >PWA! >?M#K L$PBN$%?#HP@ DH "$$#%H#"#%FW# >PWA?G SAM >?M#K, #$ FGHDBS?H#"@ "A`#A!> L$LK#$> "$$#%H#"#%FWVHE$ >PWA? % >?M#H L$PBN$%?#HP@ !P! SAM >?M#H. M! !"AHML?D!! %"HU ($JKAD$ 3-U) L$LK#$> "$$#%H#"#%FWV!O >PWA JP$>!MFH#"@. "P! C!D?G!AH">?@ ?F#HD#!Q!>?T!@ LM$U$C!# F"LHSD$, #$ "A`#A!> L$LK#$> "$$#%H#"#%FWVHE$ >PWA? F"#?D?%P!%?H#"@ % G?>"!G?PBD$H ND?AHD!H ($JKAD$ 3). $%!&"% 4 * 67 08!! ! ,%*9% &&4 (BC++ v.5.01) "G. L.4.2 3.15. S A GetMaxAmount !": GetMaxAmount #" !": kFD>T!@ GetMaxAmount %KL$PD@H# A#HD!H ND?AHD!@ L$#$P>? %KJM?DD$E$ >$SHPB>? >?M#K. '()* !+ ,%!&" " !+: H$JU$C!G$ D?P!A!H SAM->?M#K !P! >?M#K L$PBN$%?#HP@. HMHC $JM?VHD!HG > QFD>T!! GetMaxAmount DH$JU$C!G$ LMHC%?M!#HPBD$ %KN%?#B QFD>T!W ConnectUserCard !P! ConnectSAMCard (H"P! j#$ DH JKP$ %KL$PDHD$ M?DHH). .! / 0(!(: #include "xCData.h" int GetMaxAmount (HANDLE hcd, short purse, unsigned long &amount) 12*3 4" 3 4": hcd – P$E!AH">!O D$GHM (HANDLE), "%@N?DDKO " $#>MK#KG >$GGFD!>?T!$DDKG L$M#$G, > >$#$M$GF L$C>PWA`D "A!#K%?#HPB ! % >$#$M$G D?U$C!#"@ >?M#? L$PBN$%?#HP@ !P! SAM->?M#?. purse – D$GHM jPH>#M$DD$E$ >$SHPB>? >?M#K L$PBN$%?#HP@ !P! SAM- >?M#K (THP$H A!"P$). M!GHA?D!H: DFGHM?T!@ D?A!D?H#"@ " 1. 142*3 4" 3 4": amount – CP!DD$H THP$H, $LMHCHP@WVHH ND?AHD!H L$#$P>? >$SHPB>? >?M#K L$PBN$%?#HP@ !P! SAM->?M#K. DSSSCT File :xcd_pg.doc Ref : XCDATAPG0000 Revision:2.0 16 / 30 Copyright © Dekart S.R.L (www.dekart.com) - 2001 This document shall not be disclosed to a third party without prior written consent of Dekart S.R.L. !>?>?@ A?"#B C?DD$E$ C$>FGHD#? DH G$IH# JK#B %$"LM$!N%HCHD? % >?>$O JK #$ D! JKP$ Q$MGH ! >?>!G! JK, #$ D! JKP$ "MHC"#%?G! JHN L!"BGHDD$E$ M?NMHSHD!@ %P?CHPBT? ?%#$M">!U LM?%. > ? .
  • 17. 1* % 5 "&*" #" !": 1 - F"LHSD$H N?%HMSHD!H LM$EM?GGK; 0 - $S!J>? >?M#K (M?"S!MHDD$H "$$JVHD!H $J $S!J>H >?M#K G$ID$ L$PFA!#B " L$G$VBW QFD>T!! GetCardStat); $#M!T?#HPBD$H ND?AHD!H >$C? $S!J>! ("G. >$CK $S!J$> % L.4.1). $%!&"% 4 * 67 08!! ! ,%*9% &&4 (BC++ v.5.01) "G. L.4.2 4. 4.1. o x y L C x L r x CD5!" 0*34 * % / 0 XCDATA_NOK HD$MG?PBD$H N?%HMSHD!H LM$EM?GGK. $ND!>P? $S!J>? LM! M?J$#H " >?M#$O. H$JU$C!G$ %$"L$PBN$%?#B"@ QFD>T!HO GetCardStat. 1 XCDATA_OK $MG?PBD$H N?%HMSHD!H LM$EM?GGK. CE!D0! *D5"9* 2 % 0/"% -1 ERR_PC_TIME_OUT S!J>? %KN%?D? "J$HG % M?J$#H >$GLBW#HM? -2...-7 HNHM% F"/% ()!%7"&4" 0*34 *E!D0! ! /"%6"G( CT-API -8 ERR_CT_API_NOT_ACC CT-API DHC$"#FLHD -10 ERR_CT_API_TRANSMIS S!J>? LHMHC?A! -11 ERR_CT_API_MEM_ASIGN S!J>? N?U%?#? L?G@#! CE!D0!, * !0 M5!" ,%! % D*/" ( 67 08!+&! &*37)+ xCData -12 ERR_FILE_NOT_FOUND S!J>? %KN%?D? $#"F#"#%!HG Q?OP? " >PWA?G! "!"#HGK -13 ERR_READING_FILE S!J>? LM! A#HD!! Q?OP? " >PWA?G! "!"#HGK -14 ERR_BAD_READER $@%PHD!H C?DD$O $S!J>! G$IH# E$%$M!#B $ "PHCFWVHG: • $#"F#"#%FH# "A!#K%?#HPB, !P! • #!L "A!#K%?#HP@ F>?N?D DHLM?%!PBD$, !P! DSSSCT File :xcd_pg.doc Ref : XCDATAPG0000 Revision:2.0 17 / 30 Copyright © Dekart S.R.L (www.dekart.com) - 2001 This document shall not be disclosed to a third party without prior written consent of Dekart S.R.L. !>?>?@ A?"#B C?DD$E$ C$>FGHD#? DH G$IH# JK#B %$"LM$!N%HCHD? % >?>$O JK #$ D! JKP$ Q$MGH ! >?>!G! JK, #$ D! JKP$ "MHC"#%?G! JHN L!"BGHDD$E$ M?NMHSHD!@ %P?CHPBT? ?%#$M">!U LM?%. > ? .
  • 18. $S!J>? LM! M?J$#H "A!#K%?#HP@, !P! • F>?N?D DH%HMDKO -L$M#. -15 ERR_NO_CARD_ON_READER S!J>? %KN%?D? $#"F#"#%!HG >?M#K % "A!#K%?#HPH -16 ERR_BAD_ACCESS_CARD S!J>? LM! M?J$#H " >?M#$O C$"#FL?, %$NG$ID$, %"#?%PHD? DH >?M#? C$"#FL?, ? !D?@. -17 ERR_INVALID_PIN_LEN HLM?%!PBD?@ CP!D? PIN->$C? -18 ERR_INVALID_PIN_CHR M! %%$CH PIN->$C? JKP! !"L$PBN$%?DK DH #$PB>$ CH"@#!ADKH T!QMK -19 ERR_BAD_PIN_VERIFY PIN->$C DH %HM!Q!T!M$%?D -20 ERR_BAD_PASSWORD H%HMDKO L?M$PB C$"#FL? > "H>MH#DKG >PWA?G "!"#HGK -21 ERR_BAD_SAM_CARD S!J>? LM! M?J$#H " SAM >?M#$O, %$NG$ID$, %"#?%PHD? DH SAM >?M#?, ? !D?@. -22 ERR_BAD_USR_CARD S!J>? LM! M?J$#H " >?M#$O L$PBN$%?#HP@, %$NG$ID$, %"#?%PHD? DH >?M#? L$PBN$%?#HP@, ? !D?@. -23 ERR_INV_REC_LEN HLM?%!PBD?@ CP!D? N?L!"! -24 ERR_DNOT_FOUND_KEY #"F#"#%FH# >PWA -25 ERR_APP_NOT_FOUND #"F#"#%FH# LM!P$IHD!H -26 ERR_READ_CARD_FILE S!J>? A#HD!@ Q?OP? D? >?M#H -27 ERR_IDENT_NOT_FOUND ? >?M#H $#"F#"#%FH# Q?OP 8000 -28 ERR_BAD_ISS_CERT H%HMDKO "HM#!Q!>?# $#>MK#$E$ >PWA? jG!#HD#? -29 ERR_BAD_ISS_IDEND H%HMDKO jG!#HD# -30 ERR_AUTH_NOT_FOUND ? >?M#H $#"F#"#%FH# Q?OP 8300 -31 ERR_UNKNOWN_AUTH_ALG H!N%H"#DKO ?PE$M!#G ?F#HD#!Q!>?T!! -32 ERR_SN_NOT_FOUND ? >?M#H $#"F#"#%FH# Q?OP 2F00 -33 ERR_SAM_NOT_FOUND #"F#"#%FH# SAM->?M#? -34 ERR_USR_NOT_FOUND #"F#"#%FH# >?M#? L$PBN$%?#HP@ -35 ERR_USR_PURS_NOTFOUND ? >?M#H L$PBN$%?#HP@ $#"F#"#%FH# Q?OP " >$SHPB>$G -36 ERR_SAM_PURS_NOTFOUND ? SAM->?M#H $#"F#"#%FH# Q?OP " >$SHPB>$G -37 ERR_USR_IS_BAD « ?L$MAHD?» >?M#? L$PBN$%?#HP@ – L$CPHI!# !N}@#!W -38 ERR_SAM_IS_BAD « ?L$MAHD?» SAM->?M#? – L$CPHI!# !N}@#!W -39 ERR_USR_CUR_NOT_MATCH M! %KN$%H QFD>T!! F>?N?D DH%HMDKO #!L %?PW#K % >$SHPB>H >?M#K L$PBN$%?#HP@ DSSSCT File :xcd_pg.doc Ref : XCDATAPG0000 Revision:2.0 18 / 30 Copyright © Dekart S.R.L (www.dekart.com) - 2001 This document shall not be disclosed to a third party without prior written consent of Dekart S.R.L. !>?>?@ A?"#B C?DD$E$ C$>FGHD#? DH G$IH# JK#B %$"LM$!N%HCHD? % >?>$O JK #$ D! JKP$ Q$MGH ! >?>!G! JK, #$ D! JKP$ "MHC"#%?G! JHN L!"BGHDD$E$ M?NMHSHD!@ %P?CHPBT? ?%#$M">!U LM?%. > ? .
  • 19. -40 ERR_SAM_CUR_NOT_MATCH M! %KN$%H QFD>T!! F>?N?D DH%HMDKO #!L %?PW#K % >$SHPB>H SAM->?M#K -41 ERR_READ_USR_CARD S!J>? LM! A#HD!! >?M#K L$PBN$%?#HP@ -42 ERR_READ_SAM_CARD S!J>? LM! A#HD!! SAM->?M#K -43 ERR_USR_DEBIT_PURSE S!J>? LM! CHJH#$%?D!! >$SHPB>? >?M#K L$PBN$%?#HP@ -44 ERR_USR_CREDIT_PURSE S!J>? LM! >MHC!#$%?D!! >$SHPB>? >?M#K L$PBN$%?#HP@ -45 ERR_SAM_DEBIT_PURSE S!J>? LM! CHJH#$%?D!! >$SHPB>? SAM->?M#K -46 ERR_INV_ID_LEN H%HMD?@ CP!D? !CHD#!Q!>?#$M? -47...-50 HNHM% CE!D0!, * !0 M5!" ,%! % D*/" ( D!D)!*/"0*G mirlib (% D*/ ( D*)OE!&! #!() &!) -51 ERR_BASE_TOO_BIG "D$%?D!H A!"P? $AHDB J$PBS$H CP@ LMHC"#?%PHD!@ -52 ERR_DIV_BY_ZERO HPHD!H D? D$PB (% J!JP!$#H>H J$PBS!U A!"HP) -53 ERR_OVERFLOW HMHL$PDHD!H – A!"P$ $AHDB J$PBS$H -54 ERR_NEG_RESULT M! %KA!"PHD!! L$PFAHD$ $#M!T?#HPBD$H ND?AHD!H -55 ERR_BAD_FORMAT H%HMDKO %U$CD$O Q$MG?# A!"P? -56 ERR_BAD_BASE H%HMD$H $"D$%?D!H A!"P? -57 ERR_BAD_PARAMETERS H%HMD$H !"L$PBN$%?D!H L?M?GH#M? -58 ERR_OUT_OF_MEMORY HC$"#?#$AD$ $LHM?#!%D$O L?G@#! -59 ERR_NEG_ROOT H#DKO >$MHDB !N $#M!T?#HPBD$E$ A!"P? -60 ERR_NEG_POWER $N%HCHD!H A!"P? % $#M!T?#HPBDFW "#HLHDB -61 ERR_BAD_ROOT $LK#>? L$PFA!#B DH%HMDKO >$MHDB -62 ERR_INT_OP H%HMD?@ $LHM?T!@ D?C Flash A!"P$G -63 ERR_FLASH_OVERFLOW Flash LHMHL$PDHD!H -64 ERR_TOO_BIG !"P? $AHDB J$PBS!H -65 ERR_NEG_LOG $E?M!QG !N $#M!T?#HPBD$E$ A!"P? -66 ERR_DOUBLE_FAIL S!J>? LMH$JM?N$%?D!@ double % flash -67 ERR_IO_OVERFLOW HMHL$PDHD!H JFQHM? %%$C?/%K%$C? -68 ERR_NO_MIRSYS !JP!$#H>? J$PBS!U A!"HP DH LM$!D!T!?P!N!M$%?D? -69 ERR_BAD_MONT_MOD H%HMDKO $D#E$GHM! G$CFPB DSSSCT File :xcd_pg.doc Ref : XCDATAPG0000 Revision:2.0 19 / 30 Copyright © Dekart S.R.L (www.dekart.com) - 2001 This document shall not be disclosed to a third party without prior written consent of Dekart S.R.L. !>?>?@ A?"#B C?DD$E$ C$>FGHD#? DH G$IH# JK#B %$"LM$!N%HCHD? % >?>$O JK #$ D! JKP$ Q$MGH ! >?>!G! JK, #$ D! JKP$ "MHC"#%?G! JHN L!"BGHDD$E$ M?NMHSHD!@ %P?CHPBT? ?%#$M">!U LM?%. > ? .
  • 20. (C$PIHD JK#B DHAH#DKG) -70 ERR_NO_MONT_MOD H $LMHCHPHD $D#E$GHM! G$CFPB -71 ERR_EXP_TOO_BIG P!S>$G J$PBS?@ j>"L$DHD#? -72 ERR_NBASE_MBP_P2 "D$%?D!H C$PID$ JK#B "#HLHDBW 2 -73...–124 HNHM% -125 ERR_FUNC_NOT_RELEASED -126 ERR_USR_ABORT ?J$#? LM$EM?GGK $"#?D$%PHD? L$PBN$%?#HPHG /* Rest of CT-API */ -127 ERR_CT_API_ABORT ?J$#? LM$EM?GGK $"#?D$%PHD? "HM%HM$G -128 ERR_CT_API_HTSI S!J>? D!IDHE$ FM$%D@ 4.2. >? s A r ? > (Borland C++ v.5.01) //---------------------------------------------------------------------------- // Test BC++ built 32-bit DLL's (Example of xcdata.DLL call). // // Copyright (c) Dekart Ltd. All Rights Reserved // // This application tests calling into a 32-bit DLL built with Borland C++. // Code was verified with Borland C++ 5.02 // //---------------------------------------------------------------------------- #include <mfc/afxwin.h> // For GetDlgItemText() + windows.h #include <stdio.h> // stdio.h #include "xCData.h" // functions from xcdata.dll #include <stdlib.h> #include <sys/stat.h> #include <io.h> #include <conio.h> #include <dir.h> #include <fstream.h> #include <string.h> // // Declaration of DLL - functions // int ( __stdcall *pCheckAccessCard)(char *Port, short ReaderType, char *IccNo, char *KeyFile, char *PIN); int (__stdcall *pConnectSAMCard)(char *Port, short ReaderType); int (__stdcall *pConnectUserCard)(char *Port, short ReaderType); BOOL (__stdcall *pCloseCard)(int hcd); BOOL (__stdcall *pSelectFileInCard)(int hcd, char *FID); BOOL (__stdcall *pReadFileRecord)(int hcd, short rcNo, short len, char *buf); int (__stdcall *pUpdateFileRecord)(int hcd, short rcNo, short len, char *buf); int (__stdcall *pStaticAuth)(int hcd); BOOL (__stdcall *pExternalAuth)(int hcd_user, int hcd_SAM); BOOL (__stdcall *pInternalAuth)(int hcd_user, int hcd_SAM); int (__stdcall *pDebitTransaction)(int hcd_user, int hcd_SAM, short purse, unsigned long amount, char *cur, char *mercantID, char *rnd, char *crt); int (__stdcall *pCreditTransaction)(int hcd_user, int hcd_SAM, short purse_user, short purse_SAM, unsigned long amount, char *cur, char *pointID, char *rnd, char *crt, char *rnd2, char *crt2); BOOL (__stdcall *pGetChallenge)(int hcd, char *buf); DSSSCT File :xcd_pg.doc Ref : XCDATAPG0000 Revision:2.0 20 / 30 Copyright © Dekart S.R.L (www.dekart.com) - 2001 This document shall not be disclosed to a third party without prior written consent of Dekart S.R.L. !>?>?@ A?"#B C?DD$E$ C$>FGHD#? DH G$IH# JK#B %$"LM$!N%HCHD? % >?>$O JK #$ D! JKP$ Q$MGH ! >?>!G! JK, #$ D! JKP$ "MHC"#%?G! JHN L!"BGHDD$E$ M?NMHSHD!@ %P?CHPBT? ?%#$M">!U LM?%. > ? .
  • 21. void (__stdcall *pGetCardStat)(char *msgbuf); int (__stdcall *pGetMaxAmount)(int hcd, short purse, unsigned long &amount); char xDll[] = "xcdata.dll"; /////////////////////////////////////////////////////////////////////////////// int main() { // // Declaration & Initial Values of variables // int status, i, user, sam; long int sum1=0; unsigned long amount_user=0, amount_sam=0; char cardnum[33]=" "; char port[20]=" ", port_sam[20]=" ",port_user[20]=" ", cardpin[32]=" "; char buf_err[80],buf_reader[2]=" ",buf_reader_sam[2]=" ",buf_reader_user[2]=" "; char buf_sum[80]=" ",buf_purse_sam[2]=" ",buf_purse_user[2]=" "; char card_file[5]=" "; char rand[17]=" ", str_buf[511]=" "; char rand1[17]=" ", rand2[17]=" "; char crt1[17]=" ", crt2[17]=" "; char cur[4]=" ",ident[9]=" "; short reader, reader_sam, reader_user, purse_sam, purse_user, purse_s, purse_u; char filename[MAXPATH]; BOOL res; // // Load the Dynamic Link LIbrary xcdata.DLL // HINSTANCE hLib = LoadLibrary(xDll); if ( (unsigned)hLib <= HINSTANCE_ERROR ) { printf("Failure loading library: %sn", xDll); return 0; } // // Get all the entry points for the functions we wish to test. Typedef's can // be used to simplify casting the retrun value from GetProcAddress. // pCheckAccessCard = (int( __stdcall*)(char *Port, short ReaderType, char *IccNo,char *KeyFile, char *PIN))GetProcAddress(hLib, "CheckAccessCard"); pConnectSAMCard = (int(__stdcall*)(char *Port, short ReaderType))GetProcAddress(hLib, "ConnectSAMCard"); pConnectUserCard = (int(__stdcall*)(char *Port, short ReaderType))GetProcAddress(hLib, "ConnectUserCard"); pCloseCard = (BOOL(__stdcall*)(int hcd))GetProcAddress(hLib, "CloseCard"); pSelectFileInCard = (BOOL(__stdcall*)(int hcd, char *FID))GetProcAddress(hLib, "SelectFileInCard"); pReadFileRecord = (BOOL(__stdcall*)(int hcd, short rcNo, short len, char *buf))GetProcAddress(hLib, "ReadFileRecord"); pUpdateFileRecord = (int(__stdcall*)(int hcd, short rcNo, short len, char *buf))GetProcAddress(hLib, "UpdateFileRecord"); pStaticAuth = (int(__stdcall*)(int hcd))GetProcAddress(hLib, "StaticAuth"); pExternalAuth = (BOOL(__stdcall*)(int hcd_user, int hcd_SAM))GetProcAddress(hLib, "ExternalAuth"); pInternalAuth = (BOOL(__stdcall*)(int hcd_user, int hcd_SAM))GetProcAddress(hLib, "InternalAuth"); pDebitTransaction = (int(__stdcall*)(int hcd_user, int hcd_SAM, short purse, unsigned long amount, char *cur, char *mercantID, char *rnd, char *crt))GetProcAddress(hLib, "DebitTransaction"); pCreditTransaction = (int(__stdcall*)(int hcd_user, int hcd_SAM, short purse_user, short purse_SAM, unsigned long amount, char *cur, char *pointID, char *rnd, char *crt, char *rnd2, char *crt2))GetProcAddress(hLib, "CreditTransaction"); pGetChallenge = (BOOL(__stdcall*)(int hcd, char *buf))GetProcAddress(hLib, "GetChallenge"); pGetCardStat = (void(__stdcall*)(char *msgbuf))GetProcAddress(hLib, "GetCardStat"); pGetMaxAmount = (int (__stdcall*)(int hcd, short purse, unsigned long &amount))GetProcAddress(hLib,"GetMaxAmount"); DSSSCT File :xcd_pg.doc Ref : XCDATAPG0000 Revision:2.0 21 / 30 Copyright © Dekart S.R.L (www.dekart.com) - 2001 This document shall not be disclosed to a third party without prior written consent of Dekart S.R.L. !>?>?@ A?"#B C?DD$E$ C$>FGHD#? DH G$IH# JK#B %$"LM$!N%HCHD? % >?>$O JK #$ D! JKP$ Q$MGH ! >?>!G! JK, #$ D! JKP$ "MHC"#%?G! JHN L!"BGHDD$E$ M?NMHSHD!@ %P?CHPBT? ?%#$M">!U LM?%. > ? .
  • 22. // // GetProcAddress returns null on failure // if( pCheckAccessCard == NULL || pConnectSAMCard == NULL || pConnectUserCard == NULL || pCloseCard == NULL || pSelectFileInCard == NULL || pReadFileRecord == NULL || pUpdateFileRecord == NULL || pStaticAuth == NULL || pExternalAuth == NULL || pInternalAuth == NULL || pDebitTransaction == NULL || pCreditTransaction == NULL || pGetChallenge == NULL || pGetCardStat == NULL || pGetMaxAmount == NULL) { printf("Failure locating procedures.n"); return 0; } // // Check & load INI parameters from xcdata.ini // // PORT - name of com-port connected to reader // PORT_SAM - name of com-port connected to reader with SAM-card // PORT_USER - name of com-port connected to reader with user card // READER - reader type // READER_SAM - type of reader with SAM-card // READER_USER - type of reader with user card // CA_CARD_PIN - PIN-code to access card (CA) // PURSE_SAM - number of purse on SAM-card // PURSE_USER - number of purse on user card // CUR - currency type // SUM - sum // ID - merchant identifier // CARD_FILE - name of card file // CA_KEY_FILE - name of file with keys of CA // GetPrivateProfileString("COMMON", "PORT", "COM2", port, sizeof(port), "ex_xcd.ini"); GetPrivateProfileString("COMMON", "PORT_SAM", "COM2", port_sam, sizeof(port_sam), "ex_xcd.ini"); GetPrivateProfileString("COMMON", "PORT_USER", "COM2", port_user, sizeof(port_user), "ex_xcd.ini"); GetPrivateProfileString("COMMON", "CA_CARD_PIN", "1111", cardpin, sizeof(cardpin), "ex_xcd.ini"); GetPrivateProfileString("COMMON", "READER", "2", buf_reader, sizeof(buf_reader), "ex_xcd.ini"); GetPrivateProfileString("COMMON", "READER_SAM", "2", buf_reader_sam, sizeof(buf_reader_sam), "ex_xcd.ini"); GetPrivateProfileString("COMMON", "READER_USER", "2", buf_reader_user, sizeof(buf_reader_user), "ex_xcd.ini"); GetPrivateProfileString("COMMON", "PURSE_SAM", "2", buf_purse_sam, sizeof(buf_purse_sam), "ex_xcd.ini"); GetPrivateProfileString("COMMON", "PURSE_USER", "2", buf_purse_user, sizeof(buf_purse_user), "ex_xcd.ini"); GetPrivateProfileString("COMMON", "CUR", "498", cur, sizeof(cur), "ex_xcd.ini"); GetPrivateProfileString("COMMON", "ID", "11111111", ident, sizeof(ident), "ex_xcd.ini"); GetPrivateProfileString("COMMON", "CA_KEY_FILE", ".94980000.KEY", filename, sizeof(filename), "ex_xcd.ini"); GetPrivateProfileString("COMMON", "CARD_FILE", "3F00", card_file, sizeof(card_file), "ex_xcd.ini"); GetPrivateProfileString("COMMON", "SUM", "3", buf_sum, sizeof(buf_sum), "ex_xcd.ini"); // // char-to-integer conversion // reader_sam=atoi(buf_reader_sam); reader_user=atoi(buf_reader_user); purse_sam=atoi(buf_purse_sam); purse_user=atoi(buf_purse_user); sum1=atoi(buf_sum); // // Test of XCDATA // // DSSSCT File :xcd_pg.doc Ref : XCDATAPG0000 Revision:2.0 22 / 30 Copyright © Dekart S.R.L (www.dekart.com) - 2001 This document shall not be disclosed to a third party without prior written consent of Dekart S.R.L. !>?>?@ A?"#B C?DD$E$ C$>FGHD#? DH G$IH# JK#B %$"LM$!N%HCHD? % >?>$O JK #$ D! JKP$ Q$MGH ! >?>!G! JK, #$ D! JKP$ "MHC"#%?G! JHN L!"BGHDD$E$ M?NMHSHD!@ %P?CHPBT? ?%#$M">!U LM?%. > ? .
  • 23. // Keys Reading from CA_KEY_FILE // // pCloseCard(1); printf("n Test of CheckAccessCard n"); printf("nn Insert Acces Card in Reader"); getch(); status = pCheckAccessCard(port_user, reader_user, cardnum, filename, cardpin); pGetCardStat(buf_err); printf("n Result of Keys Reading: %d ", status); if(status!=1) {printf("n Card status: %s", buf_err); return 0;} // // Connecting to reader with user card // // pCloseCard(1); pCloseCard(2); printf("n Test of ConnectUserCard n"); printf("n Insert User Card in Reader"); getch(); user = pConnectUserCard(port_user, reader_user); pGetCardStat(buf_err); if(user<0) { printf("n Error: %d ", user); printf("n Card status: %s", buf_err); // card status printing return 0;} else printf("n User_handle: %d ", user); printf("n ....."); getch(); // // GetChallenge operation for user card // printf("n Test of GetChallenge (user card)n"); res=pGetChallenge(user,rand); pGetCardStat(buf_err); if(res!=1) { printf("n Error: %d ", res); printf("n Card status: %s", buf_err); // card status printing return 0;} else printf("n User_random: %s ", rand); // operation result printing printf("n ....."); getch(); // // GetMaxAmount operation // printf("n Test of GetMaxAmount (user card)n"); purse_u=1; // purse 1 i=pGetMaxAmount(user, purse_u, amount_user); pGetCardStat(buf_err); if(i!=1) { printf("n Error: %d ", res); printf("n Card status: %s", buf_err); // card status printing return 0;} else printf("n GetMaxAmount1: %d ", amount_user); purse_u=2; // purse 2 i=pGetMaxAmount(user, purse_u, amount_user); pGetCardStat(buf_err); if(i!=1) { printf("n Error: %d ", res); printf("n Card status: %s", buf_err); // card status printing return 0;} else printf("n GetMaxAmount2: %d ", amount_user); purse_u=3; // purse 3 i=pGetMaxAmount(user, purse_u, amount_user); pGetCardStat(buf_err); if(i!=1) { printf("n Error: %d ", res); printf("n Card status: %s", buf_err); // card status printing return 0;} else DSSSCT File :xcd_pg.doc Ref : XCDATAPG0000 Revision:2.0 23 / 30 Copyright © Dekart S.R.L (www.dekart.com) - 2001 This document shall not be disclosed to a third party without prior written consent of Dekart S.R.L. !>?>?@ A?"#B C?DD$E$ C$>FGHD#? DH G$IH# JK#B %$"LM$!N%HCHD? % >?>$O JK #$ D! JKP$ Q$MGH ! >?>!G! JK, #$ D! JKP$ "MHC"#%?G! JHN L!"BGHDD$E$ M?NMHSHD!@ %P?CHPBT? ?%#$M">!U LM?%. > ? .
  • 24. printf("n GetMaxAmount3: %d ", amount_user); printf("n ....."); getch(); // // SelectFileInCard operation for user card // printf("n Test of SelectFileInCard (user card)n"); res=pSelectFileInCard(user, "3F00"); // card file select pGetCardStat(buf_err); if(res!=1) { printf("n Error: %d ", res); printf("n Card status: %s", buf_err); // card status printing return 0;} else printf("n 3F00 - %d ", res); res=pSelectFileInCard(user, "7F10"); // card file select pGetCardStat(buf_err); if(res!=1) { printf("n Error: %d ", res); printf("n Card status: %s", buf_err); // card status printing return 0;} else printf("n 7F10 - %d ", res); res=pSelectFileInCard(user, "8100"); // card file select (purse descriptors) pGetCardStat(buf_err); if(res!=1) { printf("n Error: %d ", res); printf("n Card status: %s", buf_err); // card status printing return 0;} else printf("n 8100 - %d ", res); printf("n ....."); getch(); // // ReadFileRecord operation for user card // printf("n Reading of Purse's Descriptors"); for(i=1;i<4;i++) { res=pReadFileRecord(user,i,16, str_buf); pGetCardStat(buf_err); if(res!=1) { printf("n Error: %d ", res); printf("n Card status: %s", buf_err); // card status printing return 0;} else printf("n Purse %d description %s", i,str_buf); } printf("n ....."); getch(); // // StaticAuth operation for User Card // printf("n Test of StaticAuth (user card)"); i=pStaticAuth(user); pGetCardStat(buf_err); if(i!=1) { printf("n Error: %d ", i); printf("n Card status: %s", buf_err); // card status printing return 0;} else printf("n Result of StaticAuth: %d ", i); //card status & operation result printing printf("n ....."); getch(); // // Connecting to reader with SAM-card // // pCloseCard(2); DSSSCT File :xcd_pg.doc Ref : XCDATAPG0000 Revision:2.0 24 / 30 Copyright © Dekart S.R.L (www.dekart.com) - 2001 This document shall not be disclosed to a third party without prior written consent of Dekart S.R.L. !>?>?@ A?"#B C?DD$E$ C$>FGHD#? DH G$IH# JK#B %$"LM$!N%HCHD? % >?>$O JK #$ D! JKP$ Q$MGH ! >?>!G! JK, #$ D! JKP$ "MHC"#%?G! JHN L!"BGHDD$E$ M?NMHSHD!@ %P?CHPBT? ?%#$M">!U LM?%. > ? .
  • 25. printf("n Test of ConnectSAMCard n"); printf("nn Insert SAM Card in Reader"); getch(); sam = pConnectSAMCard(port_sam, reader_sam); pGetCardStat(buf_err); if(sam<0) { printf("nError: %d ", sam); printf("nCard status: %s", buf_err); // card status printing return 0;} else printf("n SAM_handle: %d ", sam); printf("n ....."); getch(); // // GetChallenge operation for SAM card // printf("n Test of GetChallenge (SAM card)n"); res=pGetChallenge(sam,rand); pGetCardStat(buf_err); if(res!=1) { printf("n Error: %d ", res); printf("n Card status: %s", buf_err); // card status printing return 0;} else printf("n SAM_random: %s ", rand); // operation result printing printf("n ....."); getch(); // // GetMaxAmount operation for SAM card // printf("n Test of GetMaxAmount (SAM card)n"); purse_s=1; // purse 1 i=pGetMaxAmount(sam, purse_s, amount_sam); pGetCardStat(buf_err); if(i!=1) { printf("n Error: %d ", i); printf("n Card status: %s", buf_err); // card status printing return 0;} else printf("n GetMaxAmount1: %d ", amount_sam); purse_s=2; // purse 2 i=pGetMaxAmount(sam, purse_s, amount_sam); pGetCardStat(buf_err); if(i!=1) { printf("n Error: %d ", i); printf("n Card status: %s", buf_err); // card status printing return 0;} else printf("n GetMaxAmount2: %d ", amount_sam); purse_s=3; // purse 3 i=pGetMaxAmount(sam, purse_s, amount_sam); pGetCardStat(buf_err); if(i!=1) { printf("n Error: %d ", i); printf("n Card status: %s", buf_err); // card status printing return 0;} else printf("n GetMaxAmount3: %d ", amount_sam); printf("n ....."); getch(); // // SelectFileInCard operation for SAM card // printf("n Test of SelectFileInCard (SAM card)n"); res=pSelectFileInCard(sam, "3F00"); // card file select pGetCardStat(buf_err); if(res!=1) { printf("n Error: %d ", res); printf("n Card status: %s", buf_err); // card status printing DSSSCT File :xcd_pg.doc Ref : XCDATAPG0000 Revision:2.0 25 / 30 Copyright © Dekart S.R.L (www.dekart.com) - 2001 This document shall not be disclosed to a third party without prior written consent of Dekart S.R.L. !>?>?@ A?"#B C?DD$E$ C$>FGHD#? DH G$IH# JK#B %$"LM$!N%HCHD? % >?>$O JK #$ D! JKP$ Q$MGH ! >?>!G! JK, #$ D! JKP$ "MHC"#%?G! JHN L!"BGHDD$E$ M?NMHSHD!@ %P?CHPBT? ?%#$M">!U LM?%. > ? .
  • 26. return 0;} else printf("n 3F00 - %d ", res); res=pSelectFileInCard(sam, "7F10"); // card file select pGetCardStat(buf_err); if(res!=1) { printf("n Error: %d ", res); printf("n Card status: %s", buf_err); // card status printing return 0;} else printf("n 7F10 - %d ", res); res=pSelectFileInCard(sam, "8100"); // card file select (purse descriptors) pGetCardStat(buf_err); if(res!=1) { printf("n Error: %d ", res); printf("n Card status: %s", buf_err); // card status printing return 0;} else printf("n 8100 - %d ", res); printf("n ....."); getch(); // // ReadFileRecord operation for sam card // printf("n Reading of Purse's Descriptors (SAM)"); for(i=1;i<4;i++) { res=pReadFileRecord(sam,i,16, str_buf); pGetCardStat(buf_err); if(res!=1) { printf("n Error: %d ", res); printf("n Card status: %s", buf_err); // card status printing return 0;} else printf("n Purse %d description %s", i,str_buf); } printf("n ....."); getch(); // // StaticAuth operation for SAM Card // printf("n Test of StaticAuth (SAM card)"); i=pStaticAuth(sam); pGetCardStat(buf_err); if(i!=1) { printf("n Error: %d ", i); printf("n Card status: %s", buf_err); // card status printing return 0;} else printf("n Result of StaticAuth: %d ", i); //card status & operation result printing printf("n ....."); getch(); // // Internal Authentication // printf("n Test of InternalAuth"); res=pInternalAuth(user,sam); pGetCardStat(buf_err); if(res!=1) { printf("n Error: %d ", res); printf("n Card status: %s", buf_err); // card status printing return 0;} else printf("n InternalAuth: %d ", res); printf("n ....."); getch(); // DSSSCT File :xcd_pg.doc Ref : XCDATAPG0000 Revision:2.0 26 / 30 Copyright © Dekart S.R.L (www.dekart.com) - 2001 This document shall not be disclosed to a third party without prior written consent of Dekart S.R.L. !>?>?@ A?"#B C?DD$E$ C$>FGHD#? DH G$IH# JK#B %$"LM$!N%HCHD? % >?>$O JK #$ D! JKP$ Q$MGH ! >?>!G! JK, #$ D! JKP$ "MHC"#%?G! JHN L!"BGHDD$E$ M?NMHSHD!@ %P?CHPBT? ?%#$M">!U LM?%. > ? .
  • 27. // External Authentication // printf("n Test of ExternalAuth"); res=pExternalAuth(user,sam); pGetCardStat(buf_err); if(res!=1) { printf("n Error: %d ", res); printf("n Card status: %s", buf_err); // card status printing return 0;} else printf("n ExternalAuth: %d %s ", res,buf_err); printf("n ....."); getch(); // // CreditTransaction operation // printf("n Test of CreditTransaction"); // purse_user=2; purse_sam=2; i=pCreditTransaction(user,sam,purse_user,purse_sam,sum1,cur,ident,rand1,crt1,rand2,crt2); pGetCardStat(buf_err); // printf("n %s", buf_err); // card status printing if(i!=1) { printf("n Error: %d ", i); printf("n Card status: %s", buf_err); // card status printing return 0;} else printf("n Result of CreditTransaction: %d %s",i, buf_err); // operation result printing printf("n Rand1: %s Cert.1: %s",rand1,crt1); // Phase1 (random & certificate) printf("n Rand2: %s Cert.2: %s",rand2,crt2); // Phase2 (random & certificate) // // Reading of Purses after CreditTransaction // printf("nn Reading of Purse after CreditTransaction"); res=pSelectFileInCard(user, "6F00"); // card file select (purse 1) pGetCardStat(buf_err); printf("n 6F00 - %d %s", res,buf_err); res=pReadFileRecord(user,1,6, str_buf); pGetCardStat(buf_err); if(res!=1) { printf("n Error: %d ", res); printf("n Card status: %s", buf_err); // card status printing return 0;} printf("n Result of Reading of Purse1 - %d %s %s", res,buf_err,str_buf); res=pSelectFileInCard(user, "6F01"); // card file select (purse 2) pGetCardStat(buf_err); printf("n 6F01 %d %s", res,buf_err); res=pReadFileRecord(user,1,6, str_buf); pGetCardStat(buf_err); if(res!=1) { printf("n Error: %d ", res); printf("n Card status: %s", buf_err); // card status printing return 0;} printf("n Result of Reading of Purse2 - %d %s %s", res,buf_err,str_buf); res=pSelectFileInCard(user, "6F02"); // card file select (purse 3) pGetCardStat(buf_err); printf("n 6F02 %d %s", res,buf_err); res=pReadFileRecord(user,1,6, str_buf); pGetCardStat(buf_err); if(res!=1) { printf("n Error: %d ", res); printf("n Card status: %s", buf_err); // card status printing return 0;} printf("n Result of Reading of Purse3 - %d %s %s", res,buf_err,str_buf); printf("n ....."); getch(); DSSSCT File :xcd_pg.doc Ref : XCDATAPG0000 Revision:2.0 27 / 30 Copyright © Dekart S.R.L (www.dekart.com) - 2001 This document shall not be disclosed to a third party without prior written consent of Dekart S.R.L. !>?>?@ A?"#B C?DD$E$ C$>FGHD#? DH G$IH# JK#B %$"LM$!N%HCHD? % >?>$O JK #$ D! JKP$ Q$MGH ! >?>!G! JK, #$ D! JKP$ "MHC"#%?G! JHN L!"BGHDD$E$ M?NMHSHD!@ %P?CHPBT? ?%#$M">!U LM?%. > ? .
  • 28. // // DebitTransaction operation // printf("n Test of DebitTransaction"); i=pDebitTransaction(user,sam,purse_user,sum1,cur,ident,rand1,crt1); pGetCardStat(buf_err); if(i!=1) { printf("n Error: %d ", i); printf("n Card status: %s", buf_err); // card status printing return 0;} else printf("n Result of DebitTransaction: %d %s",i, buf_err); // operation result printing printf("n Rand.: %s Cert.: %s",rand1,crt1); // random & certificate // // Reading of Purses after DebitTransaction // printf("nn Reading of Purse after DebitTransaction"); res=pSelectFileInCard(user, "6F00"); // card file select (purse 1) pGetCardStat(buf_err); printf("n 6F00 - %d %s", res,buf_err); res=pReadFileRecord(user,1,6, str_buf); pGetCardStat(buf_err); if(res!=1) { printf("n Error: %d ", res); printf("n Card status: %s", buf_err); // card status printing return 0;} printf("n Result of Reading of Purse1 - %d %s %s", res,buf_err,str_buf); res=pSelectFileInCard(user, "6F01"); // card file select (purse 2) pGetCardStat(buf_err); printf("n 6F01 %d %s", res,buf_err); res=pReadFileRecord(user,1,6, str_buf); pGetCardStat(buf_err); if(res!=1) { printf("n Error: %d ", res); printf("n Card status: %s", buf_err); // card status printing return 0;} printf("n Result of Reading of Purse2 - %d %s %s", res,buf_err,str_buf); res=pSelectFileInCard(user, "6F02"); // card file select (purse 3) pGetCardStat(buf_err); printf("n 6F02 %d %s", res,buf_err); res=pReadFileRecord(user,1,6, str_buf); pGetCardStat(buf_err); if(res!=1) { printf("n Error: %d ", res); printf("n Card status: %s", buf_err); // card status printing return 0;} printf("n Result of Reading of Purse3 - %d %s %s", res,buf_err,str_buf); printf("n ....."); getch(); // // Special file of user card operation // printf("n Test of Special file of user card"); res=pSelectFileInCard(user, "8400"); // card file select pGetCardStat(buf_err); if(res!=1) { printf("n Error: %d ", res); printf("n Card status: %s", buf_err); // card status printing return 0;} else printf("n 8400 - %d ", res); res=pReadFileRecord(user,1,16, str_buf); pGetCardStat(buf_err); if(res!=1) { printf("n Error: %d ", res); printf("n Card status: %s", buf_err); // card status printing DSSSCT File :xcd_pg.doc Ref : XCDATAPG0000 Revision:2.0 28 / 30 Copyright © Dekart S.R.L (www.dekart.com) - 2001 This document shall not be disclosed to a third party without prior written consent of Dekart S.R.L. !>?>?@ A?"#B C?DD$E$ C$>FGHD#? DH G$IH# JK#B %$"LM$!N%HCHD? % >?>$O JK #$ D! JKP$ Q$MGH ! >?>!G! JK, #$ D! JKP$ "MHC"#%?G! JHN L!"BGHDD$E$ M?NMHSHD!@ %P?CHPBT? ?%#$M">!U LM?%. > ? .