Changeset 35

Show
Ignore:
Timestamp:
02/13/12 23:58:45 (9 years ago)
Author:
vsilva
Message:

FIX Xades encoding problems

Location:
middleware-offline/trunk/_src/eidmw
Files:
62 added
51 modified

Legend:

Unmodified
Added
Removed
  • middleware-offline/trunk/_src/eidmw/_Builds/PteidEasyBuild.sln

    r34 r35  
    1111Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "cardlayer", "..\cardlayer\pteid35cardlayer.vcproj", "{C7DE2B79-F890-4ACB-804A-BDD14E1A9CAE}" 
    1212        ProjectSection(ProjectDependencies) = postProject 
     13                {39710980-B40E-4B06-B8E8-D86B125007F3} = {39710980-B40E-4B06-B8E8-D86B125007F3} 
    1314                {E27CF8F7-E472-4966-B7D6-448B1427A0D6} = {E27CF8F7-E472-4966-B7D6-448B1427A0D6} 
     15        EndProjectSection 
     16EndProject 
     17Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "applayer", "..\applayer\pteid35applayer.vcproj", "{DC41E34B-8251-41DE-8065-D56B022F5755}" 
     18        ProjectSection(ProjectDependencies) = postProject 
     19                {C7DE2B79-F890-4ACB-804A-BDD14E1A9CAE} = {C7DE2B79-F890-4ACB-804A-BDD14E1A9CAE} 
    1420                {39710980-B40E-4B06-B8E8-D86B125007F3} = {39710980-B40E-4B06-B8E8-D86B125007F3} 
    15         EndProjectSection 
    16 EndProject 
    17 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "applayer", "..\applayer\pteid35applayer.vcproj", "{DC41E34B-8251-41DE-8065-D56B022F5755}" 
    18         ProjectSection(ProjectDependencies) = postProject 
     21                {E27CF8F7-E472-4966-B7D6-448B1427A0D6} = {E27CF8F7-E472-4966-B7D6-448B1427A0D6} 
     22                {B39ED2B3-D53A-4077-B957-930979A3577D} = {B39ED2B3-D53A-4077-B957-930979A3577D} 
    1923                {D5B5A007-E873-4D12-B4AF-60811AFD9EF1} = {D5B5A007-E873-4D12-B4AF-60811AFD9EF1} 
    20                 {B39ED2B3-D53A-4077-B957-930979A3577D} = {B39ED2B3-D53A-4077-B957-930979A3577D} 
     24        EndProjectSection 
     25EndProject 
     26Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libCpp", "..\eidlib\pteid35lib.vcproj", "{3A09DD63-945E-40EB-9053-5FE50F74B7C1}" 
     27        ProjectSection(ProjectDependencies) = postProject 
     28                {DC41E34B-8251-41DE-8065-D56B022F5755} = {DC41E34B-8251-41DE-8065-D56B022F5755} 
     29                {39710980-B40E-4B06-B8E8-D86B125007F3} = {39710980-B40E-4B06-B8E8-D86B125007F3} 
     30        EndProjectSection 
     31EndProject 
     32Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gui", "..\eidgui\pteid35gui.vcproj", "{8D2DFD77-6396-4507-9CBC-97D91C7CFDD5}" 
     33        ProjectSection(ProjectDependencies) = postProject 
     34                {3A09DD63-945E-40EB-9053-5FE50F74B7C1} = {3A09DD63-945E-40EB-9053-5FE50F74B7C1} 
     35        EndProjectSection 
     36EndProject 
     37Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "libCS_35", "..\eidlibCS\libCS_35.csproj", "{99AB14F6-976E-4FEA-A07D-78479B55163A}" 
     38        ProjectSection(ProjectDependencies) = postProject 
     39                {ECBD0A9D-DED9-452F-B5AF-818C2E1EE32A} = {ECBD0A9D-DED9-452F-B5AF-818C2E1EE32A} 
     40        EndProjectSection 
     41EndProject 
     42Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libCS_Wrapper", "..\eidlibCS_Wrapper\pteid35libCS_Wrapper.vcproj", "{ECBD0A9D-DED9-452F-B5AF-818C2E1EE32A}" 
     43        ProjectSection(ProjectDependencies) = postProject 
     44                {DC41E34B-8251-41DE-8065-D56B022F5755} = {DC41E34B-8251-41DE-8065-D56B022F5755} 
     45                {39710980-B40E-4B06-B8E8-D86B125007F3} = {39710980-B40E-4B06-B8E8-D86B125007F3} 
     46        EndProjectSection 
     47EndProject 
     48Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libJava", "..\eidlibJava\pteid35libJava.vcproj", "{F810EA71-3A5A-4C86-BCFF-EC47017CF9CE}" 
     49        ProjectSection(ProjectDependencies) = postProject 
     50                {4066E21F-5A62-4581-A3B3-47A083396D0C} = {4066E21F-5A62-4581-A3B3-47A083396D0C} 
     51        EndProjectSection 
     52EndProject 
     53Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libJava_Wrapper", "..\eidlibJava_Wrapper\pteid35libJava_Wrapper.vcproj", "{4066E21F-5A62-4581-A3B3-47A083396D0C}" 
     54        ProjectSection(ProjectDependencies) = postProject 
     55                {DC41E34B-8251-41DE-8065-D56B022F5755} = {DC41E34B-8251-41DE-8065-D56B022F5755} 
     56                {39710980-B40E-4B06-B8E8-D86B125007F3} = {39710980-B40E-4B06-B8E8-D86B125007F3} 
     57        EndProjectSection 
     58EndProject 
     59Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "CSP", "..\CSP\pteid35CSP.vcproj", "{D0076DE3-8E35-4129-A682-2E9F8E72A152}" 
     60        ProjectSection(ProjectDependencies) = postProject 
     61                {C7DE2B79-F890-4ACB-804A-BDD14E1A9CAE} = {C7DE2B79-F890-4ACB-804A-BDD14E1A9CAE} 
     62                {39710980-B40E-4B06-B8E8-D86B125007F3} = {39710980-B40E-4B06-B8E8-D86B125007F3} 
    2163                {E27CF8F7-E472-4966-B7D6-448B1427A0D6} = {E27CF8F7-E472-4966-B7D6-448B1427A0D6} 
     64        EndProjectSection 
     65EndProject 
     66Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pkcs11", "..\pkcs11\pteid35pkcs11.vcproj", "{12F6CD4F-FC01-4E0A-AE06-F7A315094DFE}" 
     67        ProjectSection(ProjectDependencies) = postProject 
     68                {C7DE2B79-F890-4ACB-804A-BDD14E1A9CAE} = {C7DE2B79-F890-4ACB-804A-BDD14E1A9CAE} 
    2269                {39710980-B40E-4B06-B8E8-D86B125007F3} = {39710980-B40E-4B06-B8E8-D86B125007F3} 
    23                 {C7DE2B79-F890-4ACB-804A-BDD14E1A9CAE} = {C7DE2B79-F890-4ACB-804A-BDD14E1A9CAE} 
    24         EndProjectSection 
    25 EndProject 
    26 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libCpp", "..\eidlib\pteid35lib.vcproj", "{3A09DD63-945E-40EB-9053-5FE50F74B7C1}" 
     70                {E27CF8F7-E472-4966-B7D6-448B1427A0D6} = {E27CF8F7-E472-4966-B7D6-448B1427A0D6} 
     71        EndProjectSection 
     72EndProject 
     73Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pteidcleanup", "..\misc\Wix_MW35\pteidcleanup\pteidcleanup.vcproj", "{2B51FB14-B250-47C6-BC93-AA13CF7D4747}" 
    2774        ProjectSection(ProjectDependencies) = postProject 
    2875                {39710980-B40E-4B06-B8E8-D86B125007F3} = {39710980-B40E-4B06-B8E8-D86B125007F3} 
    29                 {DC41E34B-8251-41DE-8065-D56B022F5755} = {DC41E34B-8251-41DE-8065-D56B022F5755} 
    30         EndProjectSection 
    31 EndProject 
    32 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gui", "..\eidgui\pteid35gui.vcproj", "{8D2DFD77-6396-4507-9CBC-97D91C7CFDD5}" 
    33         ProjectSection(ProjectDependencies) = postProject 
     76        EndProjectSection 
     77EndProject 
     78Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "MarkHidden", "..\misc\Wix_MW35\MarkHidden\MarkHidden.vcproj", "{5154523E-FDCF-41E7-8845-A5ACC92672B0}" 
     79EndProject 
     80Project("{930C7802-8A8C-48F9-8165-68863BCCD9DD}") = "PteidMW35_de", "..\misc\Wix_MW35\MW35Wix\PteidMW35_de.wixproj", "{49962208-2A65-41A4-9EC2-ABB95DC041F4}" 
     81        ProjectSection(ProjectDependencies) = postProject 
     82                {7B4D3F36-6FB1-423D-A71F-822AF8DA3036} = {7B4D3F36-6FB1-423D-A71F-822AF8DA3036} 
     83        EndProjectSection 
     84EndProject 
     85Project("{930C7802-8A8C-48F9-8165-68863BCCD9DD}") = "PteidMW35_en", "..\misc\Wix_MW35\MW35Wix\PteidMW35_en.wixproj", "{65FE7CF6-CAF6-4104-8320-58801209E5DA}" 
     86        ProjectSection(ProjectDependencies) = postProject 
     87                {12F6CD4F-FC01-4E0A-AE06-F7A315094DFE} = {12F6CD4F-FC01-4E0A-AE06-F7A315094DFE} 
     88                {E25D19BA-813C-477E-BB1A-7ADA0B339CED} = {E25D19BA-813C-477E-BB1A-7ADA0B339CED} 
     89                {23467FC4-F95A-46C0-A33B-1D5D78C94E21} = {23467FC4-F95A-46C0-A33B-1D5D78C94E21} 
     90                {E2B4AED5-9A0C-4556-90AB-4CF69743FB65} = {E2B4AED5-9A0C-4556-90AB-4CF69743FB65} 
     91                {8D2DFD77-6396-4507-9CBC-97D91C7CFDD5} = {8D2DFD77-6396-4507-9CBC-97D91C7CFDD5} 
     92                {F810EA71-3A5A-4C86-BCFF-EC47017CF9CE} = {F810EA71-3A5A-4C86-BCFF-EC47017CF9CE} 
    3493                {3A09DD63-945E-40EB-9053-5FE50F74B7C1} = {3A09DD63-945E-40EB-9053-5FE50F74B7C1} 
    3594        EndProjectSection 
    3695EndProject 
    37 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "libCS_35", "..\eidlibCS\libCS_35.csproj", "{99AB14F6-976E-4FEA-A07D-78479B55163A}" 
    38         ProjectSection(ProjectDependencies) = postProject 
    39                 {ECBD0A9D-DED9-452F-B5AF-818C2E1EE32A} = {ECBD0A9D-DED9-452F-B5AF-818C2E1EE32A} 
    40         EndProjectSection 
    41 EndProject 
    42 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libCS_Wrapper", "..\eidlibCS_Wrapper\pteid35libCS_Wrapper.vcproj", "{ECBD0A9D-DED9-452F-B5AF-818C2E1EE32A}" 
    43         ProjectSection(ProjectDependencies) = postProject 
    44                 {39710980-B40E-4B06-B8E8-D86B125007F3} = {39710980-B40E-4B06-B8E8-D86B125007F3} 
    45                 {DC41E34B-8251-41DE-8065-D56B022F5755} = {DC41E34B-8251-41DE-8065-D56B022F5755} 
    46         EndProjectSection 
    47 EndProject 
    48 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libJava", "..\eidlibJava\pteid35libJava.vcproj", "{F810EA71-3A5A-4C86-BCFF-EC47017CF9CE}" 
    49         ProjectSection(ProjectDependencies) = postProject 
    50                 {4066E21F-5A62-4581-A3B3-47A083396D0C} = {4066E21F-5A62-4581-A3B3-47A083396D0C} 
    51         EndProjectSection 
    52 EndProject 
    53 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libJava_Wrapper", "..\eidlibJava_Wrapper\pteid35libJava_Wrapper.vcproj", "{4066E21F-5A62-4581-A3B3-47A083396D0C}" 
    54         ProjectSection(ProjectDependencies) = postProject 
    55                 {39710980-B40E-4B06-B8E8-D86B125007F3} = {39710980-B40E-4B06-B8E8-D86B125007F3} 
    56                 {DC41E34B-8251-41DE-8065-D56B022F5755} = {DC41E34B-8251-41DE-8065-D56B022F5755} 
    57         EndProjectSection 
    58 EndProject 
    59 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "CSP", "..\CSP\pteid35CSP.vcproj", "{D0076DE3-8E35-4129-A682-2E9F8E72A152}" 
    60         ProjectSection(ProjectDependencies) = postProject 
    61                 {E27CF8F7-E472-4966-B7D6-448B1427A0D6} = {E27CF8F7-E472-4966-B7D6-448B1427A0D6} 
    62                 {39710980-B40E-4B06-B8E8-D86B125007F3} = {39710980-B40E-4B06-B8E8-D86B125007F3} 
    63                 {C7DE2B79-F890-4ACB-804A-BDD14E1A9CAE} = {C7DE2B79-F890-4ACB-804A-BDD14E1A9CAE} 
    64         EndProjectSection 
    65 EndProject 
    66 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pkcs11", "..\pkcs11\pteid35pkcs11.vcproj", "{12F6CD4F-FC01-4E0A-AE06-F7A315094DFE}" 
    67         ProjectSection(ProjectDependencies) = postProject 
    68                 {E27CF8F7-E472-4966-B7D6-448B1427A0D6} = {E27CF8F7-E472-4966-B7D6-448B1427A0D6} 
    69                 {39710980-B40E-4B06-B8E8-D86B125007F3} = {39710980-B40E-4B06-B8E8-D86B125007F3} 
    70                 {C7DE2B79-F890-4ACB-804A-BDD14E1A9CAE} = {C7DE2B79-F890-4ACB-804A-BDD14E1A9CAE} 
    71         EndProjectSection 
    72 EndProject 
    73 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pteidcleanup", "..\misc\Wix_MW35\pteidcleanup\pteidcleanup.vcproj", "{2B51FB14-B250-47C6-BC93-AA13CF7D4747}" 
    74         ProjectSection(ProjectDependencies) = postProject 
    75                 {39710980-B40E-4B06-B8E8-D86B125007F3} = {39710980-B40E-4B06-B8E8-D86B125007F3} 
    76         EndProjectSection 
    77 EndProject 
    78 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "MarkHidden", "..\misc\Wix_MW35\MarkHidden\MarkHidden.vcproj", "{5154523E-FDCF-41E7-8845-A5ACC92672B0}" 
    79 EndProject 
    80 Project("{930C7802-8A8C-48F9-8165-68863BCCD9DD}") = "PteidMW35_de", "..\misc\Wix_MW35\MW35Wix\PteidMW35_de.wixproj", "{49962208-2A65-41A4-9EC2-ABB95DC041F4}" 
    81         ProjectSection(ProjectDependencies) = postProject 
     96Project("{930C7802-8A8C-48F9-8165-68863BCCD9DD}") = "PteidMW35_pt", "..\misc\Wix_MW35\MW35Wix\PteidMW35_pt.wixproj", "{DF6E1CDC-9689-4A91-B60A-863E3BAF5A57}" 
     97        ProjectSection(ProjectDependencies) = postProject 
     98                {49962208-2A65-41A4-9EC2-ABB95DC041F4} = {49962208-2A65-41A4-9EC2-ABB95DC041F4} 
    8299                {7B4D3F36-6FB1-423D-A71F-822AF8DA3036} = {7B4D3F36-6FB1-423D-A71F-822AF8DA3036} 
    83         EndProjectSection 
    84 EndProject 
    85 Project("{930C7802-8A8C-48F9-8165-68863BCCD9DD}") = "PteidMW35_en", "..\misc\Wix_MW35\MW35Wix\PteidMW35_en.wixproj", "{65FE7CF6-CAF6-4104-8320-58801209E5DA}" 
    86         ProjectSection(ProjectDependencies) = postProject 
    87                 {12F6CD4F-FC01-4E0A-AE06-F7A315094DFE} = {12F6CD4F-FC01-4E0A-AE06-F7A315094DFE} 
    88                 {3A09DD63-945E-40EB-9053-5FE50F74B7C1} = {3A09DD63-945E-40EB-9053-5FE50F74B7C1} 
     100                {62481BE6-49B5-48EA-A11E-BC77761ED0E2} = {62481BE6-49B5-48EA-A11E-BC77761ED0E2} 
     101        EndProjectSection 
     102EndProject 
     103Project("{930C7802-8A8C-48F9-8165-68863BCCD9DD}") = "PteidMW35_fr", "..\misc\Wix_MW35\MW35Wix\PteidMW35_fr.wixproj", "{62481BE6-49B5-48EA-A11E-BC77761ED0E2}" 
     104        ProjectSection(ProjectDependencies) = postProject 
     105                {7B4D3F36-6FB1-423D-A71F-822AF8DA3036} = {7B4D3F36-6FB1-423D-A71F-822AF8DA3036} 
     106        EndProjectSection 
     107EndProject 
     108Project("{930C7802-8A8C-48F9-8165-68863BCCD9DD}") = "PteidMW35_nl", "..\misc\Wix_MW35\MW35Wix\PteidMW35_nl.wixproj", "{7B4D3F36-6FB1-423D-A71F-822AF8DA3036}" 
     109        ProjectSection(ProjectDependencies) = postProject 
     110                {2B51FB14-B250-47C6-BC93-AA13CF7D4747} = {2B51FB14-B250-47C6-BC93-AA13CF7D4747} 
     111                {5154523E-FDCF-41E7-8845-A5ACC92672B0} = {5154523E-FDCF-41E7-8845-A5ACC92672B0} 
    89112                {F810EA71-3A5A-4C86-BCFF-EC47017CF9CE} = {F810EA71-3A5A-4C86-BCFF-EC47017CF9CE} 
    90113                {8D2DFD77-6396-4507-9CBC-97D91C7CFDD5} = {8D2DFD77-6396-4507-9CBC-97D91C7CFDD5} 
     114                {99AB14F6-976E-4FEA-A07D-78479B55163A} = {99AB14F6-976E-4FEA-A07D-78479B55163A} 
     115        EndProjectSection 
     116EndProject 
     117Project("{930C7802-8A8C-48F9-8165-68863BCCD9DD}") = "PteidMW35_64_de", "..\misc\Wix_MW35\MW35Wix\PteidMW35_64_de.wixproj", "{D6701E6C-933D-4DCF-AEC7-EE61AEB78804}" 
     118        ProjectSection(ProjectDependencies) = postProject 
     119                {13BA0068-A852-4123-84D8-ED786D196991} = {13BA0068-A852-4123-84D8-ED786D196991} 
     120        EndProjectSection 
     121EndProject 
     122Project("{930C7802-8A8C-48F9-8165-68863BCCD9DD}") = "PteidMW35_64_en", "..\misc\Wix_MW35\MW35Wix\PteidMW35_64_en.wixproj", "{D886321A-0F49-40CD-98A0-A6359D6DA851}" 
     123        ProjectSection(ProjectDependencies) = postProject 
     124                {12F6CD4F-FC01-4E0A-AE06-F7A315094DFE} = {12F6CD4F-FC01-4E0A-AE06-F7A315094DFE} 
     125                {23467FC4-F95A-46C0-A33B-1D5D78C94E21} = {23467FC4-F95A-46C0-A33B-1D5D78C94E21} 
    91126                {E2B4AED5-9A0C-4556-90AB-4CF69743FB65} = {E2B4AED5-9A0C-4556-90AB-4CF69743FB65} 
    92                 {23467FC4-F95A-46C0-A33B-1D5D78C94E21} = {23467FC4-F95A-46C0-A33B-1D5D78C94E21} 
    93         EndProjectSection 
    94 EndProject 
    95 Project("{930C7802-8A8C-48F9-8165-68863BCCD9DD}") = "PteidMW35_pt", "..\misc\Wix_MW35\MW35Wix\PteidMW35_pt.wixproj", "{DF6E1CDC-9689-4A91-B60A-863E3BAF5A57}" 
    96         ProjectSection(ProjectDependencies) = postProject 
    97                 {62481BE6-49B5-48EA-A11E-BC77761ED0E2} = {62481BE6-49B5-48EA-A11E-BC77761ED0E2} 
    98                 {7B4D3F36-6FB1-423D-A71F-822AF8DA3036} = {7B4D3F36-6FB1-423D-A71F-822AF8DA3036} 
    99                 {49962208-2A65-41A4-9EC2-ABB95DC041F4} = {49962208-2A65-41A4-9EC2-ABB95DC041F4} 
    100         EndProjectSection 
    101 EndProject 
    102 Project("{930C7802-8A8C-48F9-8165-68863BCCD9DD}") = "PteidMW35_fr", "..\misc\Wix_MW35\MW35Wix\PteidMW35_fr.wixproj", "{62481BE6-49B5-48EA-A11E-BC77761ED0E2}" 
    103         ProjectSection(ProjectDependencies) = postProject 
    104                 {7B4D3F36-6FB1-423D-A71F-822AF8DA3036} = {7B4D3F36-6FB1-423D-A71F-822AF8DA3036} 
    105         EndProjectSection 
    106 EndProject 
    107 Project("{930C7802-8A8C-48F9-8165-68863BCCD9DD}") = "PteidMW35_nl", "..\misc\Wix_MW35\MW35Wix\PteidMW35_nl.wixproj", "{7B4D3F36-6FB1-423D-A71F-822AF8DA3036}" 
    108         ProjectSection(ProjectDependencies) = postProject 
    109                 {99AB14F6-976E-4FEA-A07D-78479B55163A} = {99AB14F6-976E-4FEA-A07D-78479B55163A} 
    110127                {8D2DFD77-6396-4507-9CBC-97D91C7CFDD5} = {8D2DFD77-6396-4507-9CBC-97D91C7CFDD5} 
    111                 {F810EA71-3A5A-4C86-BCFF-EC47017CF9CE} = {F810EA71-3A5A-4C86-BCFF-EC47017CF9CE} 
    112                 {5154523E-FDCF-41E7-8845-A5ACC92672B0} = {5154523E-FDCF-41E7-8845-A5ACC92672B0} 
    113                 {2B51FB14-B250-47C6-BC93-AA13CF7D4747} = {2B51FB14-B250-47C6-BC93-AA13CF7D4747} 
    114         EndProjectSection 
    115 EndProject 
    116 Project("{930C7802-8A8C-48F9-8165-68863BCCD9DD}") = "PteidMW35_64_de", "..\misc\Wix_MW35\MW35Wix\PteidMW35_64_de.wixproj", "{D6701E6C-933D-4DCF-AEC7-EE61AEB78804}" 
     128                {3A09DD63-945E-40EB-9053-5FE50F74B7C1} = {3A09DD63-945E-40EB-9053-5FE50F74B7C1} 
     129        EndProjectSection 
     130EndProject 
     131Project("{930C7802-8A8C-48F9-8165-68863BCCD9DD}") = "PteidMW35_64_fr", "..\misc\Wix_MW35\MW35Wix\PteidMW35_64_fr.wixproj", "{0F3667C2-F355-4289-8AA4-50085CD9AAA7}" 
    117132        ProjectSection(ProjectDependencies) = postProject 
    118133                {13BA0068-A852-4123-84D8-ED786D196991} = {13BA0068-A852-4123-84D8-ED786D196991} 
    119134        EndProjectSection 
    120135EndProject 
    121 Project("{930C7802-8A8C-48F9-8165-68863BCCD9DD}") = "PteidMW35_64_en", "..\misc\Wix_MW35\MW35Wix\PteidMW35_64_en.wixproj", "{D886321A-0F49-40CD-98A0-A6359D6DA851}" 
    122         ProjectSection(ProjectDependencies) = postProject 
    123                 {3A09DD63-945E-40EB-9053-5FE50F74B7C1} = {3A09DD63-945E-40EB-9053-5FE50F74B7C1} 
    124                 {8D2DFD77-6396-4507-9CBC-97D91C7CFDD5} = {8D2DFD77-6396-4507-9CBC-97D91C7CFDD5} 
    125                 {E2B4AED5-9A0C-4556-90AB-4CF69743FB65} = {E2B4AED5-9A0C-4556-90AB-4CF69743FB65} 
    126                 {23467FC4-F95A-46C0-A33B-1D5D78C94E21} = {23467FC4-F95A-46C0-A33B-1D5D78C94E21} 
     136Project("{930C7802-8A8C-48F9-8165-68863BCCD9DD}") = "PteidMW35_64_nl", "..\misc\Wix_MW35\MW35Wix\PteidMW35_64_nl.wixproj", "{13BA0068-A852-4123-84D8-ED786D196991}" 
     137        ProjectSection(ProjectDependencies) = postProject 
    127138                {12F6CD4F-FC01-4E0A-AE06-F7A315094DFE} = {12F6CD4F-FC01-4E0A-AE06-F7A315094DFE} 
    128         EndProjectSection 
    129 EndProject 
    130 Project("{930C7802-8A8C-48F9-8165-68863BCCD9DD}") = "PteidMW35_64_fr", "..\misc\Wix_MW35\MW35Wix\PteidMW35_64_fr.wixproj", "{0F3667C2-F355-4289-8AA4-50085CD9AAA7}" 
    131         ProjectSection(ProjectDependencies) = postProject 
    132                 {13BA0068-A852-4123-84D8-ED786D196991} = {13BA0068-A852-4123-84D8-ED786D196991} 
    133         EndProjectSection 
    134 EndProject 
    135 Project("{930C7802-8A8C-48F9-8165-68863BCCD9DD}") = "PteidMW35_64_nl", "..\misc\Wix_MW35\MW35Wix\PteidMW35_64_nl.wixproj", "{13BA0068-A852-4123-84D8-ED786D196991}" 
    136         ProjectSection(ProjectDependencies) = postProject 
    137139                {D0076DE3-8E35-4129-A682-2E9F8E72A152} = {D0076DE3-8E35-4129-A682-2E9F8E72A152} 
    138                 {12F6CD4F-FC01-4E0A-AE06-F7A315094DFE} = {12F6CD4F-FC01-4E0A-AE06-F7A315094DFE} 
    139140        EndProjectSection 
    140141EndProject 
     
    145146Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "FreeImage", "..\FreeImagePTEiD\FreeImage.2005.vcproj", "{B39ED2B3-D53A-4077-B957-930979A3577D}" 
    146147        ProjectSection(ProjectDependencies) = postProject 
     148                {E3536C28-A7F1-4B53-8E52-7D2232F9E098} = {E3536C28-A7F1-4B53-8E52-7D2232F9E098} 
     149                {7DB10B50-CE00-4D7A-B322-6824F05D2FCB} = {7DB10B50-CE00-4D7A-B322-6824F05D2FCB} 
    147150                {33134F61-C1AD-4B6F-9CEA-503A9F140C52} = {33134F61-C1AD-4B6F-9CEA-503A9F140C52} 
    148                 {7DB10B50-CE00-4D7A-B322-6824F05D2FCB} = {7DB10B50-CE00-4D7A-B322-6824F05D2FCB} 
    149                 {E3536C28-A7F1-4B53-8E52-7D2232F9E098} = {E3536C28-A7F1-4B53-8E52-7D2232F9E098} 
    150151        EndProjectSection 
    151152EndProject 
     
    157158EndProject 
    158159Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "xsec_lib", "..\xml-security-c-1.6.1\Projects\VC8.0\xsec\xsec_lib\xsec_lib.vcproj", "{D5B5A007-E873-4D12-B4AF-60811AFD9EF1}" 
     160EndProject 
     161Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "acr83-plugin", "..\cardlayer\acr83-plugin\acr83-plugin.vcproj", "{E25D19BA-813C-477E-BB1A-7ADA0B339CED}" 
    159162EndProject 
    160163Global 
     
    295298                {DC41E34B-8251-41DE-8065-D56B022F5755}.Debug|x86.ActiveCfg = Debug|Win32 
    296299                {DC41E34B-8251-41DE-8065-D56B022F5755}.Debug|x86.Build.0 = Debug|Win32 
    297                 {DC41E34B-8251-41DE-8065-D56B022F5755}.Release No Xalan|Any CPU.ActiveCfg = Release|x64 
    298                 {DC41E34B-8251-41DE-8065-D56B022F5755}.Release No Xalan|Mixed Platforms.ActiveCfg = Release|x64 
    299                 {DC41E34B-8251-41DE-8065-D56B022F5755}.Release No Xalan|Mixed Platforms.Build.0 = Release|x64 
    300                 {DC41E34B-8251-41DE-8065-D56B022F5755}.Release No Xalan|Win32.ActiveCfg = Release|x64 
    301                 {DC41E34B-8251-41DE-8065-D56B022F5755}.Release No Xalan|x64.ActiveCfg = Release|x64 
    302                 {DC41E34B-8251-41DE-8065-D56B022F5755}.Release No Xalan|x64.Build.0 = Release|x64 
    303                 {DC41E34B-8251-41DE-8065-D56B022F5755}.Release No Xalan|x86.ActiveCfg = Release|x64 
     300                {DC41E34B-8251-41DE-8065-D56B022F5755}.Release No Xalan|Any CPU.ActiveCfg = Release|Win32 
     301                {DC41E34B-8251-41DE-8065-D56B022F5755}.Release No Xalan|Mixed Platforms.ActiveCfg = Release|Win32 
     302                {DC41E34B-8251-41DE-8065-D56B022F5755}.Release No Xalan|Mixed Platforms.Build.0 = Release|Win32 
     303                {DC41E34B-8251-41DE-8065-D56B022F5755}.Release No Xalan|Win32.ActiveCfg = Release|Win32 
     304                {DC41E34B-8251-41DE-8065-D56B022F5755}.Release No Xalan|Win32.Build.0 = Release|Win32 
     305                {DC41E34B-8251-41DE-8065-D56B022F5755}.Release No Xalan|x64.ActiveCfg = Release|Win32 
     306                {DC41E34B-8251-41DE-8065-D56B022F5755}.Release No Xalan|x86.ActiveCfg = Release|Win32 
    304307                {DC41E34B-8251-41DE-8065-D56B022F5755}.Release|Any CPU.ActiveCfg = Release|Win32 
    305308                {DC41E34B-8251-41DE-8065-D56B022F5755}.Release|Any CPU.Build.0 = Release|Win32 
     
    308311                {DC41E34B-8251-41DE-8065-D56B022F5755}.Release|Win32.ActiveCfg = Release|Win32 
    309312                {DC41E34B-8251-41DE-8065-D56B022F5755}.Release|Win32.Build.0 = Release|Win32 
    310                 {DC41E34B-8251-41DE-8065-D56B022F5755}.Release|x64.ActiveCfg = Release|x64 
    311                 {DC41E34B-8251-41DE-8065-D56B022F5755}.Release|x64.Build.0 = Release|x64 
    312                 {DC41E34B-8251-41DE-8065-D56B022F5755}.Release|x86.ActiveCfg = Release|x64 
    313                 {DC41E34B-8251-41DE-8065-D56B022F5755}.Release|x86.Build.0 = Release|x64 
     313                {DC41E34B-8251-41DE-8065-D56B022F5755}.Release|x64.ActiveCfg = Release|Win32 
     314                {DC41E34B-8251-41DE-8065-D56B022F5755}.Release|x86.ActiveCfg = Release|Win32 
    314315                {3A09DD63-945E-40EB-9053-5FE50F74B7C1}.Debug No Xalan|Any CPU.ActiveCfg = Debug|Win32 
    315316                {3A09DD63-945E-40EB-9053-5FE50F74B7C1}.Debug No Xalan|Mixed Platforms.ActiveCfg = Debug|Win32 
     
    10951096                {D5B5A007-E873-4D12-B4AF-60811AFD9EF1}.Release|x64.ActiveCfg = Release|Win32 
    10961097                {D5B5A007-E873-4D12-B4AF-60811AFD9EF1}.Release|x86.ActiveCfg = Release|Win32 
     1098                {E25D19BA-813C-477E-BB1A-7ADA0B339CED}.Debug No Xalan|Any CPU.ActiveCfg = Debug|Win32 
     1099                {E25D19BA-813C-477E-BB1A-7ADA0B339CED}.Debug No Xalan|Mixed Platforms.ActiveCfg = Debug|Win32 
     1100                {E25D19BA-813C-477E-BB1A-7ADA0B339CED}.Debug No Xalan|Mixed Platforms.Build.0 = Debug|Win32 
     1101                {E25D19BA-813C-477E-BB1A-7ADA0B339CED}.Debug No Xalan|Win32.ActiveCfg = Debug|Win32 
     1102                {E25D19BA-813C-477E-BB1A-7ADA0B339CED}.Debug No Xalan|Win32.Build.0 = Debug|Win32 
     1103                {E25D19BA-813C-477E-BB1A-7ADA0B339CED}.Debug No Xalan|x64.ActiveCfg = Debug|Win32 
     1104                {E25D19BA-813C-477E-BB1A-7ADA0B339CED}.Debug No Xalan|x86.ActiveCfg = Debug|Win32 
     1105                {E25D19BA-813C-477E-BB1A-7ADA0B339CED}.Debug|Any CPU.ActiveCfg = Debug|Win32 
     1106                {E25D19BA-813C-477E-BB1A-7ADA0B339CED}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 
     1107                {E25D19BA-813C-477E-BB1A-7ADA0B339CED}.Debug|Mixed Platforms.Build.0 = Debug|Win32 
     1108                {E25D19BA-813C-477E-BB1A-7ADA0B339CED}.Debug|Win32.ActiveCfg = Debug|Win32 
     1109                {E25D19BA-813C-477E-BB1A-7ADA0B339CED}.Debug|Win32.Build.0 = Debug|Win32 
     1110                {E25D19BA-813C-477E-BB1A-7ADA0B339CED}.Debug|x64.ActiveCfg = Debug|Win32 
     1111                {E25D19BA-813C-477E-BB1A-7ADA0B339CED}.Debug|x86.ActiveCfg = Debug|Win32 
     1112                {E25D19BA-813C-477E-BB1A-7ADA0B339CED}.Release No Xalan|Any CPU.ActiveCfg = Release|Win32 
     1113                {E25D19BA-813C-477E-BB1A-7ADA0B339CED}.Release No Xalan|Mixed Platforms.ActiveCfg = Release|Win32 
     1114                {E25D19BA-813C-477E-BB1A-7ADA0B339CED}.Release No Xalan|Mixed Platforms.Build.0 = Release|Win32 
     1115                {E25D19BA-813C-477E-BB1A-7ADA0B339CED}.Release No Xalan|Win32.ActiveCfg = Release|Win32 
     1116                {E25D19BA-813C-477E-BB1A-7ADA0B339CED}.Release No Xalan|Win32.Build.0 = Release|Win32 
     1117                {E25D19BA-813C-477E-BB1A-7ADA0B339CED}.Release No Xalan|x64.ActiveCfg = Release|Win32 
     1118                {E25D19BA-813C-477E-BB1A-7ADA0B339CED}.Release No Xalan|x86.ActiveCfg = Release|Win32 
     1119                {E25D19BA-813C-477E-BB1A-7ADA0B339CED}.Release|Any CPU.ActiveCfg = Release|Win32 
     1120                {E25D19BA-813C-477E-BB1A-7ADA0B339CED}.Release|Mixed Platforms.ActiveCfg = Release|Win32 
     1121                {E25D19BA-813C-477E-BB1A-7ADA0B339CED}.Release|Mixed Platforms.Build.0 = Release|Win32 
     1122                {E25D19BA-813C-477E-BB1A-7ADA0B339CED}.Release|Win32.ActiveCfg = Release|Win32 
     1123                {E25D19BA-813C-477E-BB1A-7ADA0B339CED}.Release|Win32.Build.0 = Release|Win32 
     1124                {E25D19BA-813C-477E-BB1A-7ADA0B339CED}.Release|x64.ActiveCfg = Release|Win32 
     1125                {E25D19BA-813C-477E-BB1A-7ADA0B339CED}.Release|x86.ActiveCfg = Release|Win32 
    10971126        EndGlobalSection 
    10981127        GlobalSection(SolutionProperties) = preSolution 
  • middleware-offline/trunk/_src/eidmw/applayer/APLCard.cpp

    r34 r35  
    2828#include "CardPteidDef.h" 
    2929#include "XadesSignature.h" 
     30#include "SigContainer.h" 
    3031 
    3132#include <time.h> 
     
    138139 
    139140 
    140 CByteArray &APL_Card::SignXades(const char ** path, unsigned int n_paths) 
    141 { 
    142         if (path == NULL || n_paths < 1) 
     141CByteArray &APL_Card::SignXades(const char ** paths, unsigned int n_paths, const char *output_path) 
     142{ 
     143        if (paths == NULL || n_paths < 1) 
    143144           throw CMWEXCEPTION(EIDMW_ERR_CHECK); 
    144  
    145145        XadesSignature sig(this); 
    146146 
    147         return sig.SignXades(path,n_paths); 
    148  
     147        CByteArray &signature = sig.SignXades(paths,n_paths); 
     148        StoreSignatureToDisk (signature, paths, n_paths,output_path); 
     149 
     150        //Write zip container signature and referenced files in zip container 
     151 
     152 
     153        return signature; 
    149154} 
    150155 
     
    163168} 
    164169 
    165 CByteArray &APL_Card::SignXadesT(const char ** path, unsigned int n_paths) 
     170CByteArray &APL_Card::SignXadesT(const char ** path, unsigned int n_paths, const char *output_file) 
    166171{ 
    167172        CByteArray * ba = new CByteArray(); 
     
    170175} 
    171176 
    172 bool APL_Card::ValidateSignature(const CByteArray &signature, char * errors, unsigned long* error_len) 
    173 { 
    174         if (signature.Size() == 0) 
     177bool APLVerifySignature(const char *container_path, char * errors, unsigned long* error_len) 
     178{ 
     179 
     180        if (strlen(container_path) == 0) 
     181                throw CMWEXCEPTION(EIDMW_ERR_CHECK); 
     182 
     183        tHashedFile **hashes = NULL; 
     184        int i = 0; 
     185        Container *container = new Container(container_path); 
     186        int n_files = 0; 
     187 
     188        hashes = container->getHashes(&n_files); 
     189 
     190        CByteArray *sig_content = container->ExtractSignature(); 
     191 
     192        delete container; 
     193        if (sig_content == NULL) 
    175194                throw CMWEXCEPTION(EIDMW_ERR_CHECK); 
    176195         
    177         XadesSignature sig(this); 
    178          
    179         return sig.ValidateXades(signature, errors, error_len); 
    180 } 
    181  
     196        return XadesSignature::ValidateXades(*sig_content, hashes, errors, error_len); 
     197} 
    182198 
    183199 
  • middleware-offline/trunk/_src/eidmw/applayer/APLCard.h

    r34 r35  
    4747{ 
    4848 
     49EIDMW_APL_API bool APLVerifySignature(const char *container_path, char * errors, unsigned long* error_len); 
    4950enum APL_DocumentType 
    5051{ 
     
    115116        EIDMW_APL_API CByteArray &SignXadesT(CByteArray ba, const char *URL); 
    116117 
    117         EIDMW_APL_API CByteArray &SignXades(const char ** path, unsigned int n_paths); 
    118  
    119         EIDMW_APL_API CByteArray &SignXadesT(const char ** path, unsigned int n_paths); 
     118        EIDMW_APL_API CByteArray &SignXades(const char ** path, unsigned int n_paths, const char *output_path); 
     119 
     120        EIDMW_APL_API CByteArray &SignXadesT(const char ** path, unsigned int n_paths, const char *output_path); 
    120121         
    121         EIDMW_APL_API bool ValidateSignature(const CByteArray &signature, char * errors, unsigned long* error_len); 
    122  
    123122 
    124123        /** 
     
    314313        APL_CardFile_Info *getFileInfo();               /**< Return a pointer to the pseudo file info */ 
    315314 
     315        virtual const char *getTokenSerialNumber() = 0; /**< Return the token serial number (pkcs15 parse) (NOT EXPORTED) */ 
     316        virtual const char *getTokenLabel() = 0;        /**< Return the token label (pkcs15 parse) (NOT EXPORTED) */ 
     317 
    316318protected: 
    317319        /** 
     
    342344        CByteArray *m_challengeResponse; 
    343345        APLPublicKey *m_RootCAPubKey; 
     346        std::string *m_tokenSerial; 
     347        std::string *m_tokenLabel; 
    344348}; 
    345349 
  • middleware-offline/trunk/_src/eidmw/applayer/APLCardPteid.cpp

    r34 r35  
    6868        m_fileCertRoot=NULL; 
    6969        m_fileCertRootAuth=NULL; 
     70 
     71        m_sodCheck = false; 
     72        m_tokenLabel = NULL; 
     73        m_tokenSerial = NULL; 
    7074} 
    7175 
     
    192196                m_fileCertRoot=NULL; 
    193197        } 
     198 
     199        if(m_tokenLabel) 
     200        { 
     201                delete m_tokenLabel; 
     202                m_tokenLabel=NULL; 
     203        } 
     204 
     205        if (m_tokenSerial) 
     206        { 
     207                delete m_tokenSerial; 
     208                m_tokenSerial=NULL; 
     209        } 
     210 
    194211} 
    195212 
     
    733750                { 
    734751                        m_FileID=new APL_EidFile_ID(this); 
    735                 } 
    736         } 
     752                        if (m_sodCheck) 
     753                                m_FileID->doSODCheck(m_sodCheck); 
     754                } 
     755        } 
     756 
     757        if (m_sodCheck) 
     758                m_FileID->doSODCheck(m_sodCheck); 
    737759 
    738760        return m_FileID; 
     
    761783                { 
    762784                        m_FileAddress=new APL_EidFile_Address(this); 
    763                 } 
    764         } 
     785                        if (m_sodCheck) 
     786                                m_FileAddress->doSODCheck(m_sodCheck); 
     787                } 
     788        } 
     789 
     790        if (m_sodCheck) 
     791                m_FileAddress->doSODCheck(m_sodCheck); 
    765792 
    766793        return m_FileAddress; 
     
    12561283} 
    12571284 
     1285const char *APL_EIDCard::getTokenSerialNumber(){ 
     1286        if (!m_tokenSerial){ 
     1287 
     1288                BEGIN_CAL_OPERATION(m_reader) 
     1289                m_tokenSerial = new string (m_reader->getCalReader()->GetSerialNr()); 
     1290                END_CAL_OPERATION(m_reader) 
     1291        } 
     1292        return m_tokenSerial->c_str(); 
     1293} 
     1294 
     1295const char *APL_EIDCard::getTokenLabel(){ 
     1296        if (!m_tokenLabel){ 
     1297 
     1298                BEGIN_CAL_OPERATION(m_reader) 
     1299                                        m_tokenLabel = new string (m_reader->getCalReader()->GetCardLabel()); 
     1300                END_CAL_OPERATION(m_reader) 
     1301        } 
     1302        return m_tokenLabel->c_str(); 
     1303} 
     1304 
    12581305APLPublicKey *APL_EIDCard::getRootCAPubKey(){ 
    12591306 
     
    12891336} 
    12901337 
     1338void APL_EIDCard::doSODCheck(bool check){ 
     1339        m_sodCheck = check; 
     1340 
     1341        if (m_FileAddress) 
     1342                m_FileAddress->doSODCheck(check); 
     1343        if (m_FileID) 
     1344                m_FileID->doSODCheck(check); 
     1345 
     1346        if (check){ 
     1347                if (!m_FileSod){ 
     1348                        getFileSod(); 
     1349                } 
     1350                m_FileSod->VerifyFile(); 
     1351        } 
     1352} 
    12911353 
    12921354/***************************************************************************************** 
     
    27902852const char *APL_DocVersionInfo::getSerialNumber() 
    27912853{ 
    2792         return m_card->getFileTokenInfo()->getTokenSerialNumber(); 
     2854        return m_card->getTokenSerialNumber(); 
    27932855} 
    27942856 
    27952857const char * APL_DocVersionInfo::getTokenLabel(){ 
    2796         return m_card->getFileTokenInfo()->getTokenLabel(); 
     2858        return m_card->getTokenLabel(); 
    27972859} 
    27982860 
  • middleware-offline/trunk/_src/eidmw/applayer/APLCardPteid.h

    r34 r35  
    175175        EIDMW_APL_API const CByteArray& getRawData_Response();          /**< Get the response RawData */ 
    176176        EIDMW_APL_API const CByteArray& getRawData_PersoData();         /**< Get the response RawData */ 
     177        EIDMW_APL_API void doSODCheck(bool check); 
    177178 
    178179        APL_EidFile_Trace *getFileTrace();                                      /**< Return a pointer to the file Trace (NOT EXPORTED) */ 
     
    184185        APL_EidFile_PersoData *getFilePersoData();                              /**< Return a pointer to the file PersoData (NOT EXPORTED) */ 
    185186        APL_EidFile_TokenInfo *getFileTokenInfo();              /**< Return a pointer to the file Token Info (NOT EXPORTED) */ 
     187        const char *getTokenSerialNumber();                             /**< Return the token serial number (pkcs15 parse) (NOT EXPORTED) */ 
     188        const char *getTokenLabel();                                    /**< Return the token label (pkcs15 parse) (NOT EXPORTED) */ 
    186189        APLPublicKey *getRootCAPubKey();                                                /**< Get the CVC CA public key that this card uses to verify the CVC key (NOT EXPORTED)*/ 
    187         bool isActive(); 
    188         bool Activate(const char *pinCode, CByteArray &BCDDate);                                                /**< Activate the pteid card (NOT EXPORTED)*/ 
     190        EIDMW_APL_API bool isActive(); 
     191        EIDMW_APL_API bool Activate(const char *pinCode, CByteArray &BCDDate);                                          /**< Activate the pteid card (NOT EXPORTED)*/ 
    189192 
    190193 
     
    244247        APL_CardFile_Certificate *m_fileCertRootAuth; 
    245248        APL_CardFile_Certificate *m_fileCertRootSign; 
     249 
     250        bool m_sodCheck; 
    246251 
    247252        static APL_AccessWarningLevel m_lWarningLevel; 
  • middleware-offline/trunk/_src/eidmw/applayer/APLCrypto.cpp

    r34 r35  
    729729 
    730730 
    731 bool APL_Pin::unlockPin(const char *pszPuk, const char *pszNewPin, unsigned long *triesLeft){ 
     731bool APL_Pin::unlockPin(const char *pszPuk, const char *pszNewPin, unsigned long &triesLeft){ 
    732732 
    733733        if (m_card->getType() == APL_CARDTYPE_PTEID_IAS07){ //gemsafe 
  • middleware-offline/trunk/_src/eidmw/applayer/APLCrypto.h

    r34 r35  
    170170          */ 
    171171        EIDMW_APL_API bool changePin(const char *csPin1,const char *csPin2,unsigned long &ulRemaining, const char *PinName,bool bShowDlg=true); 
    172         EIDMW_APL_API bool unlockPin(const char *pszPuk, const char *pszNewPin, unsigned long *triesLeft); 
     172        EIDMW_APL_API bool unlockPin(const char *pszPuk, const char *pszNewPin, unsigned long &triesLeft); 
    173173 
    174174protected: 
  • middleware-offline/trunk/_src/eidmw/applayer/CardFile.h

    r34 r35  
    9090        virtual tCardFileStatus VerifyFile()=0; 
    9191 
     92        virtual void doSODCheck(bool check)=0; 
     93 
    9294        /** 
    9395          * Return true if data can be showned  
     
    121123        CMutex m_Mutex;                                 /**< Mutex */ 
    122124        bool m_mappedFields;                    /**< are the fields mapped already? */ 
     125 
     126        bool m_SODCheck; 
    123127 
    124128 
     
    159163        APL_CardFile_Certificate &operator= (const APL_CardFile_Certificate& file);     /**< Copy not allowed - not implemented */ 
    160164 
     165 
    161166        virtual tCardFileStatus VerifyFile();   /**< Always return CARDFILESTATUS_OK */ 
    162167        virtual bool MapFields() {return true;} /**< Nothing to do m_data contains the file */ 
    163168        virtual void EmptyFields() {}   /**< Nothing to do m_data contains the file */ 
     169        void doSODCheck(bool check) {} 
    164170 
    165171        unsigned long m_ulUniqueId;                             /**< The unique ID of the certificate */ 
     
    211217        virtual bool MapFields();                               /**< Map the fields with the content of the file */ 
    212218        virtual void EmptyFields();                             /**< Empty all fields */ 
     219        void doSODCheck(bool check) {} 
    213220 
    214221        //std::string m_SerialNumber;                           /**< The Serial Number of the card */ 
  • middleware-offline/trunk/_src/eidmw/applayer/CardPteid.cpp

    r34 r35  
    846846} 
    847847 
     848void  APL_EidFile_ID::doSODCheck(bool check){ 
     849        m_SODCheck = check; 
     850} 
     851 
    848852/***************************************************************************************** 
    849853---------------------------------------- APL_EidFile_IDSign ----------------------------------------- 
     
    866870        return CARDFILESTATUS_OK; 
    867871} 
    868  
    869872 
    870873/***************************************************************************************** 
     
    14521455} 
    14531456 
     1457void APL_EidFile_Address::doSODCheck(bool check){ 
     1458        m_SODCheck = check; 
     1459} 
     1460 
    14541461/***************************************************************************************** 
    14551462---------------------------------------- APL_EidFile_AddressSign ----------------------------------------- 
     
    14761483---------------------------------------- APL_EidFile_Sod ----------------------------------------- 
    14771484*****************************************************************************************/ 
    1478 APL_EidFile_Sod::APL_EidFile_Sod(APL_EIDCard *card):APL_CardFile(card,PTEID_FILE_PHOTO,NULL) 
     1485APL_EidFile_Sod::APL_EidFile_Sod(APL_EIDCard *card):APL_CardFile(card,PTEID_FILE_SOD,NULL) 
    14791486{ 
    14801487} 
     
    14861493tCardFileStatus APL_EidFile_Sod::VerifyFile() 
    14871494{ 
    1488         /*if(!m_card) 
     1495        // verify SOD file, signature, certificates 
     1496 
     1497        return CARDFILESTATUS_OK; 
     1498} 
     1499 
     1500bool APL_EidFile_Sod::ShowData() 
     1501{ 
     1502        APL_EIDCard *pcard=dynamic_cast<APL_EIDCard *>(m_card); 
     1503 
     1504        bool bAllowTest=pcard->getAllowTestCard(); 
     1505        bool bAllowBadDate=pcard->getAllowBadDate(); 
     1506 
     1507        tCardFileStatus status=getStatus(true,&bAllowTest,&bAllowBadDate); 
     1508        if(status==CARDFILESTATUS_OK) 
     1509                return true; 
     1510 
     1511        //If the autorisation changed, we read the card again 
     1512        if((status==CARDFILESTATUS_ERROR_TEST && pcard->getAllowTestCard()) 
     1513                || (status==CARDFILESTATUS_ERROR_DATE && pcard->getAllowBadDate())) 
     1514 
     1515                status=LoadData(true); 
     1516 
     1517        if(status==CARDFILESTATUS_OK) 
     1518                return true; 
     1519 
     1520        return false; 
     1521} 
     1522 
     1523void APL_EidFile_Sod::EmptyFields() 
     1524{ 
     1525        m_Sod.clear(); 
     1526        m_mappedFields = false; 
     1527} 
     1528 
     1529bool APL_EidFile_Sod::MapFields() 
     1530{ 
     1531        if (m_mappedFields) 
     1532                return true; 
     1533 
     1534        CByteArray pteidngSodBuffer; 
     1535    char cBuffer[1200]; 
     1536    unsigned long ulLen=0; 
     1537 
     1538    CTLVBuffer oTLVBuffer; 
     1539    oTLVBuffer.ParseTLV(m_data.GetBytes(), m_data.Size()); 
     1540 
     1541    //PersoData 
     1542    pteidngSodBuffer = m_data.GetBytes(0, 50); 
     1543    pteidngSodBuffer.TrimRight(' '); 
     1544    m_Sod.assign((char*)(pteidngSodBuffer.GetBytes()), pteidngSodBuffer.Size()); 
     1545 
     1546    m_mappedFields = true; 
     1547 
     1548    return true; 
     1549} 
     1550 
     1551/***************************************************************************************** 
     1552---------------------------------------- APL_EidFile_PersoData ----------------------------------------- 
     1553*****************************************************************************************/ 
     1554APL_EidFile_PersoData::APL_EidFile_PersoData(APL_EIDCard *card):APL_CardFile(card,PTEID_FILE_PERSODATA,NULL) 
     1555{ 
     1556} 
     1557 
     1558APL_EidFile_PersoData::~APL_EidFile_PersoData() 
     1559{ 
     1560} 
     1561 
     1562tCardFileStatus APL_EidFile_PersoData::VerifyFile() 
     1563{ 
     1564        if(!m_card) 
    14891565                return CARDFILESTATUS_ERROR; 
    14901566 
    14911567        APL_EIDCard *pcard=dynamic_cast<APL_EIDCard *>(m_card); 
    1492  
     1568        /* 
    14931569        //The hash for the photo is in the ID file 
    14941570        //const CByteArray &hash=pcard->getFileID()->getPhotoHash(); 
     
    15081584} 
    15091585 
    1510 bool APL_EidFile_Sod::ShowData() 
    1511 { 
    1512         APL_EIDCard *pcard=dynamic_cast<APL_EIDCard *>(m_card); 
    1513  
    1514         bool bAllowTest=pcard->getAllowTestCard(); 
    1515         bool bAllowBadDate=pcard->getAllowBadDate(); 
    1516  
    1517         tCardFileStatus status=getStatus(true,&bAllowTest,&bAllowBadDate); 
    1518         if(status==CARDFILESTATUS_OK) 
    1519                 return true; 
    1520  
    1521         //If the autorisation changed, we read the card again 
    1522         if((status==CARDFILESTATUS_ERROR_TEST && pcard->getAllowTestCard()) 
    1523                 || (status==CARDFILESTATUS_ERROR_DATE && pcard->getAllowBadDate())) 
    1524  
    1525                 status=LoadData(true); 
    1526  
    1527         if(status==CARDFILESTATUS_OK) 
    1528                 return true; 
    1529  
    1530         return false; 
    1531 } 
    1532  
    1533 void APL_EidFile_Sod::EmptyFields() 
    1534 { 
    1535         m_Sod.clear(); 
    1536         m_mappedFields = false; 
    1537 } 
    1538  
    1539 bool APL_EidFile_Sod::MapFields() 
    1540 { 
    1541         if (m_mappedFields) 
    1542                 return true; 
    1543  
    1544         CByteArray pteidngSodBuffer; 
    1545     char cBuffer[1200]; 
    1546     unsigned long ulLen=0; 
    1547  
    1548     CTLVBuffer oTLVBuffer; 
    1549     oTLVBuffer.ParseTLV(m_data.GetBytes(), m_data.Size()); 
    1550  
    1551     //PersoData 
    1552     pteidngSodBuffer = m_data.GetBytes(0, 50); 
    1553     pteidngSodBuffer.TrimRight(' '); 
    1554     m_Sod.assign((char*)(pteidngSodBuffer.GetBytes()), pteidngSodBuffer.Size()); 
    1555  
    1556     /* File Caching 
    1557      * try 
    1558     { 
    1559         ofstream myfile; 
    1560         APL_Config conf_dir(CConfig::EIDMW_CONFIG_PARAM_GENERAL_PTEID_CACHEDIR); 
    1561         std::string     m_cachedirpath = conf_dir.getString(); 
    1562         std::string pteidfile = m_cachedirpath; 
    1563         pteidfile.append("/pteidng-"); 
    1564         pteidfile.append(m_SerialNumber); 
    1565         pteidfile.append("-"); 
    1566         pteidfile.append(PTEID_FILE_SOD); 
    1567         pteidfile.append(".bin"); 
    1568         myfile.open (pteidfile.c_str()); 
    1569         pteidngSodBuffer = m_data.GetBytes(PTEIDNG_FIELD_SOD_POS_FILE, PTEIDNG_FIELD_SOD_LEN_FILE); 
    1570         m_SodFile.assign((char*)(pteidngSodBuffer.GetBytes()), pteidngSodBuffer.Size()); 
    1571         myfile << m_SodFile; 
    1572         myfile.close(); 
    1573     } 
    1574     catch(CMWException& e) 
    1575     { 
    1576         MWLOG(LEV_INFO, MOD_APL, L"Write cache file %ls on disk failed", PTEID_FILE_SOD); 
    1577     }*/ 
    1578  
    1579     m_mappedFields = true; 
    1580  
    1581     return true; 
    1582 } 
    1583  
    1584 const char *APL_EidFile_Sod::getSod() 
    1585 { 
    1586         if(ShowData()) 
    1587                 return m_Sod.c_str(); 
    1588  
    1589         return ""; 
    1590 } 
    1591  
    1592 /***************************************************************************************** 
    1593 ---------------------------------------- APL_EidFile_PersoData ----------------------------------------- 
    1594 *****************************************************************************************/ 
    1595 APL_EidFile_PersoData::APL_EidFile_PersoData(APL_EIDCard *card):APL_CardFile(card,PTEID_FILE_PERSODATA,NULL) 
    1596 { 
    1597 } 
    1598  
    1599 APL_EidFile_PersoData::~APL_EidFile_PersoData() 
    1600 { 
    1601 } 
    1602  
    1603 tCardFileStatus APL_EidFile_PersoData::VerifyFile() 
    1604 { 
    1605         if(!m_card) 
    1606                 return CARDFILESTATUS_ERROR; 
    1607  
    1608         APL_EIDCard *pcard=dynamic_cast<APL_EIDCard *>(m_card); 
    1609         /* 
    1610         //The hash for the photo is in the ID file 
    1611         //const CByteArray &hash=pcard->getFileID()->getPhotoHash(); 
    1612         const CByteArray &hash=pcard->getFileID()->getData(); 
    1613  
    1614         //If the status of the ID file is not OK, the hash is not valid. 
    1615         //The id status is return 
    1616         tCardFileStatus idstatus=pcard->getFileID()->getStatus(); 
    1617         if(idstatus!=CARDFILESTATUS_OK) 
    1618                 return idstatus; 
    1619  
    1620         //We check if the hash correspond to the photo 
    1621         if(!m_cryptoFwk->VerifyHashSha1(m_data,hash)) 
    1622                 return CARDFILESTATUS_ERROR_HASH;*/ 
    1623  
    1624         return CARDFILESTATUS_OK; 
    1625 } 
    1626  
    16271586bool APL_EidFile_PersoData::ShowData() 
    16281587{ 
     
    17131672                return true; 
    17141673 
    1715         CByteArray temp; 
    1716         char *ascii; 
    1717  
    1718         /*      martinho: yes it is an asn1 file but we only need 2 fields, so lets extract them. 
    1719                 TODO: read the file as asn1, this might be useful with the asn1c compiler. 
    1720  
    1721                 EFCIAFILE DEFINITIONS ::= 
    1722                 BEGIN 
    1723  
    1724                         EFCIA ::= SEQUENCE { 
    1725                                 value           INTEGER, 
    1726                                 number          OCTET STRING, 
    1727                                 applet          UTF8String, 
    1728                                 text  [0] IMPLICIT IA5String, 
    1729                                 whatever        BIT STRING 
    1730                         } 
    1731                 END 
    1732         */ 
    1733  
    1734         temp = m_data.GetBytes(PTEID_FIELD_TOKENINFO_POS_LABEL, PTEID_FIELD_TOKENINFO_LEN_LABEL); 
    1735         temp.TrimRight('\0'); 
    1736         m_label.assign((char*)(temp.GetBytes()), temp.Size()); 
    1737  
    1738         temp = m_data.GetBytes(PTEID_FIELD_TOKENINFO_POS_SERIAL, PTEID_FIELD_TOKENINFO_LEN_SERIAL); 
    1739         temp.TrimRight('\0'); 
    1740         //martinho: no need to create a bcd2ascii, this one works fine 
    1741         ascii = bin2AsciiHex(temp.GetBytes(),temp.Size()); 
    1742         m_TokenSerialNumber.assign(ascii); 
    1743  
    1744  
    1745  
    1746  
    1747  
    17481674        char buffer[50]; 
    17491675 
     
    17661692} 
    17671693 
    1768  
    1769 const char *APL_EidFile_TokenInfo::getTokenLabel(){ 
    1770         if(ShowData()) 
    1771                         return m_label.c_str(); 
    1772  
    1773                 return ""; 
    1774 } 
    1775  
    1776 const char *APL_EidFile_TokenInfo::getTokenSerialNumber(){ 
    1777         if(ShowData()) 
    1778                         return m_TokenSerialNumber.c_str(); 
    1779  
    1780                 return ""; 
    1781 } 
    1782  
    17831694const char *APL_EidFile_TokenInfo::getGraphicalPersonalisation() 
    17841695{ 
  • middleware-offline/trunk/_src/eidmw/applayer/CardPteid.h

    r34 r35  
    6565        APL_EidFile_Trace(const APL_EidFile_Trace& file);                               /**< Copy not allowed - not implemented */ 
    6666        APL_EidFile_Trace &operator= (const APL_EidFile_Trace& file);   /**< Copy not allowed - not implemented */ 
     67        void doSODCheck(bool check) {} 
    6768 
    6869        /** 
     
    110111          */ 
    111112        virtual ~APL_EidFile_ID(); 
     113        void doSODCheck(bool check); 
    112114 
    113115        const char *getDocumentVersion();                               /**< Return field DocumentVersion */ 
     
    252254        APL_EidFile_IDSign &operator= (const APL_EidFile_IDSign& file); /**< Copy not allowed - not implemented */ 
    253255 
     256 
    254257        /** 
    255258          * No verification for this file 
     
    259262        virtual bool MapFields() {return true;}                                                 /**< Nothing to do m_data contains the file */ 
    260263        virtual void EmptyFields() {}                                                                   /**< Nothing to do m_data contains the file */ 
    261  
     264        void doSODCheck(bool check) {} 
    262265 
    263266friend  APL_EidFile_IDSign *APL_EIDCard::getFileIDSign();       /**< This method must access protected constructor */ 
     
    311314        const char *getForeignPostalCode(); 
    312315 
     316        void doSODCheck(bool check); 
     317 
    313318protected: 
    314319        /** 
     
    419424        virtual bool MapFields() {return true;}                                                 /**< Nothing to do m_data contains the file */ 
    420425        virtual void EmptyFields() {}                                                                   /**< Nothing to do m_data contains the file */ 
     426        void doSODCheck(bool check) {} 
    421427 
    422428friend  APL_EidFile_AddressSign *APL_EIDCard::getFileAddressSign();     /**< This method must access protected constructor */ 
     
    438444        virtual ~APL_EidFile_Sod(); 
    439445 
    440         const char *getSod(); /* Get Sod */ 
     446        tCardFileStatus VerifyFile(); 
    441447 
    442448protected: 
     
    457463          * @return - else => CARDFILESTATUS_ERROR_OK 
    458464          */ 
    459         virtual tCardFileStatus VerifyFile(); 
    460465        virtual bool MapFields();                                                                       /**< Nothing to do m_data contains the file */ 
    461466        virtual void EmptyFields();                                                                     /**< Nothing to do m_data contains the file */ 
     467        void doSODCheck(bool check) {} 
    462468 
    463469        /** 
     
    499505        APL_EidFile_PersoData(const APL_EidFile_PersoData& file);                               /**< Copy not allowed - not implemented */ 
    500506        APL_EidFile_PersoData &operator= (const APL_EidFile_PersoData& file);   /**< Copy not allowed - not implemented */ 
     507 
    501508 
    502509        /** 
     
    509516        virtual bool MapFields();                                                                               /**< Nothing to do m_data contains the file */ 
    510517        virtual void EmptyFields();                                                                             /**< Nothing to do m_data contains the file */ 
     518        void doSODCheck(bool check) {} 
    511519 
    512520        /** 
     
    539547        const char *getElectricalPersonalisation();                             /**< Return the Electrical Personalisation of the file */ 
    540548        const char *getElectricalPersonalisationInterface();    /**< Return the Electrical Personalisation Interface of the file */ 
    541         const char *getTokenLabel(); 
    542         const char *getTokenSerialNumber(); 
    543549 
    544550protected: 
     
    556562        virtual bool MapFields();                               /**< Map the fields with the content of the file */ 
    557563        virtual void EmptyFields();                             /**< Empty all the fields */ 
     564        void doSODCheck(bool check) {} 
    558565 
    559566        std::string m_GraphicalPersonalisation;                         /**< The Graphical Personalisation of the file */ 
    560567        std::string m_ElectricalPersonalisation;                        /**< The Electrical Personalisation of the file */ 
    561568        std::string m_ElectricalPersonalisationInterface;       /**< The Electrical Personalisation Interface of the file */ 
    562         std::string m_label; 
    563         std::string m_TokenSerialNumber; 
    564569 
    565570friend  APL_EidFile_TokenInfo *APL_EIDCard::getFileTokenInfo(); /**< This method must access protected constructor */ 
  • middleware-offline/trunk/_src/eidmw/applayer/CardPteidDef.h

    r34 r35  
    3737//#define PTEID_FILE_PHOTO                                      "3F00DF014035" 
    3838#define PTEID_FILE_SOD                                  "3F005F00EF06" 
    39 #define PTEID_FILE_PHOTO                                        "3F005F00EF06" 
    40 #define PTEID_FILE_TOKENINFO                            "3F004F005032" 
     39#define PTEID_FILE_TOKENINFO                    "3F004F005032" 
    4140 
    4241#define PTEID_FILE_CERT_AUTHENTICATION                  "3F005F00EF09" 
     
    243242#define PTEID_FIELD_BYTE_TOKENINFO_ElectricalPersonalisation            38 
    244243#define PTEID_FIELD_BYTE_TOKENINFO_ElectricalPersonalisationInterface   39 
    245  
    246 //martinho - ok 
    247 #define PTEID_FIELD_TOKENINFO_POS_SERIAL                7 
    248 #define PTEID_FIELD_TOKENINFO_LEN_SERIAL                8 
    249 #define PTEID_FIELD_TOKENINFO_POS_LABEL                 26 
    250 #define PTEID_FIELD_TOKENINFO_LEN_LABEL                 17 
    251244 
    252245//martinho - ok 
     
    671664        PTEID_FILE_ID,                   
    672665        PTEID_FILE_ADDRESS,              
    673         PTEID_FILE_PHOTO,                
     666        PTEID_FILE_SOD, 
    674667        NULL 
    675668}; 
  • middleware-offline/trunk/_src/eidmw/applayer/MiscUtil.cpp

    r34 r35  
    2222#ifdef WIN32 
    2323#include <Windows.h> 
    24 #endif 
    25  
    26 #include <stdio.h> 
     24#include <io.h> //For _sopen and _chsize 
     25#include <fcntl.h> 
    2726#include <sys/types.h> 
    2827#include <sys/stat.h> 
     28#include <stdlib.h> 
     29#endif 
     30 
     31#include <cstdio> 
     32#include <cstring> 
     33 
     34#include <sys/types.h> 
     35#include <sys/stat.h> 
     36#ifndef WIN32 
     37#include <unistd.h> 
     38#endif 
    2939#include <errno.h> 
    3040 
     
    3646namespace eIDMW 
    3747{ 
     48 
     49#ifdef WIN32 
     50        char *Basename(char *absolute_path) 
     51        { 
     52                char filename[_MAX_FNAME]; 
     53                char ext[_MAX_EXT]; 
     54                char *basename = (char *)malloc(2*_MAX_FNAME); 
     55         
     56                _splitpath(absolute_path, NULL, NULL, filename, ext); 
     57                strcpy(basename, filename); 
     58                strcat(basename, ext); 
     59                return basename; 
     60        } 
     61 
     62        int Truncate(const char *path) 
     63        { 
     64                int fh, result; 
     65                unsigned int nbytes = BUFSIZ; 
     66 
     67                /* This replicates the use of truncate() on Unix */ 
     68                if (fh = _sopen(path, _O_RDWR, _S_IWRITE) == 0) 
     69                { 
     70                        if (( result = _chsize(fh, 0)) == 0) 
     71                        _close(fh); 
     72                } 
     73 
     74                return result; 
     75        } 
     76 
     77#else    
     78        char * Basename(char *absolute_path) 
     79        { 
     80                return basename(absolute_path); //POSIX basename() 
     81        } 
     82         
     83        int Truncate(const char *path) 
     84        { 
     85                return truncate(path, 0); //POSIX truncate() 
     86        } 
     87 
     88#endif 
     89 
     90        //Quick fix: Unreadable snippet to convert typical western languages characters 
     91        //to UTF-8, blame stackoverflow: http://stackoverflow.com/a/4059934/9906 
     92        void latin1_to_utf8(unsigned char * in, unsigned char *out) 
     93        { 
     94                while (*in) 
     95                { 
     96                        if (*in<128) 
     97                                *out++=*in++; 
     98                        else  
     99                        { 
     100                                *out++=0xc2+(*in>0xbf); 
     101                                *out++=(*in++&0x3f)+0x80; 
     102                        } 
     103                } 
     104                *out = '\0'; 
     105        } 
    38106 
    39107/***************************************************************************************** 
  • middleware-offline/trunk/_src/eidmw/applayer/MiscUtil.h

    r5 r35  
    2424 
    2525#include <string> 
     26#include <cstring> //POSIX basename 
     27#ifdef __APPLE__ 
     28#include <libgen.h> 
     29#endif 
    2630#include <vector> 
    2731#include <map> 
     
    3135namespace eIDMW 
    3236{ 
     37 
     38//Implementation of some utility functions over POSIX and Win32 
     39char * Basename(char *absolute_path); 
     40int Truncate(const char *path); 
     41//Charset conversion 
     42void latin1_to_utf8(unsigned char * in, unsigned char *out); 
     43 
     44//Common type between 2/3 different cpp files 
     45typedef struct _hashed_file_ 
     46{ 
     47        CByteArray *hash; 
     48        std::string *URI;        
     49} tHashedFile; 
    3350 
    3451/******************************************************************************//** 
  • middleware-offline/trunk/_src/eidmw/applayer/XadesSignature.cpp

    r34 r35  
    1212 
    1313#include "APLCard.h" 
     14 
    1415#include "CardPteidDef.h" 
    1516#include "XadesSignature.h" 
    1617#include "MWException.h" 
    1718#include "eidErrors.h" 
     19#include "MiscUtil.h" 
    1820 
    1921#include "Log.h" 
     
    4951#include <xsec/transformers/TXFMChain.hpp> 
    5052 
    51  
    5253//cURL for Timestamping 
    5354#include <curl/curl.h> 
     
    5960#include <sys/types.h> 
    6061#include <sys/stat.h> 
    61 // 
    6262#ifdef WIN32 
    6363#include <io.h> 
     
    101101                if (size == 0) 
    102102                {    
    103                         in = new char[20]; 
     103                        in = new char[SHA1_LEN]; 
    104104 
    105105                } 
     
    127127 
    128128                HRESULT ret = UrlCreateFromPath(path.c_str(), pszUrl, &url_size, NULL); 
    129  
     129        
    130130                if (ret != S_OK) 
    131131                { 
    132                         MWLOG(LEV_ERROR, MOD_APL, L"XadesSignature: UrlCreateFromPath returned error, \ 
    133                                 URI is probably wrongly encoded"); 
     132                MWLOG(LEV_ERROR, MOD_APL, L"XadesSignature: UrlCreateFromPath returned error, \ 
     133                        URI is probably wrongly encoded"); 
    134134                        return std::wstring(L"file://localhost" + path).c_str(); 
    135135                } 
     
    138138 
    139139        } 
    140          
    141  
    142140#endif 
    143141 
     
    165163        { 
    166164 
    167                 for (unsigned int i=0; i != 20; i++) 
     165                for (unsigned int i=0; i != SHA1_LEN; i++) 
    168166                    timestamp_asn1_request[SHA1_OFFSET +i] = sha_1[i]; 
    169167        } 
     
    334332 
    335333 
    336 /*TODO: We'll have to investigate how to validate the timestamp if the signature 
     334bool XadesSignature::checkExternalRefs(DSIGReferenceList *refs, tHashedFile **hashes) 
     335{ 
     336        const char * URI; 
     337        XMLByte arr[SHA1_LEN*sizeof(unsigned char)]; 
     338 
     339        bool res; 
     340        tHashedFile *hashed_file=NULL; 
     341 
     342        for (int j = 0; hashes[j] != NULL; j++) 
     343        {        
     344                res = false;     
     345                hashed_file = hashes[j]; 
     346                for (int i = 0; i!=refs->getSize() ; i++) 
     347                {        
     348                        DSIGReference * r = refs->item(i); 
     349 
     350                        r->readHash(arr, 20); 
     351 
     352                        if (memcmp(arr, hashed_file->hash->GetBytes(), SHA1_LEN) == 0) 
     353                        {    
     354                                res = true; 
     355                                break; 
     356                        } 
     357 
     358                } 
     359                // If a single hash reference fails then abort 
     360                if (res == false) 
     361                { 
     362                        MWLOG (LEV_ERROR, MOD_APL, 
     363                                        L" checkExternalRefs(): SHA-1 Hash Value for file %s doesn't match.", 
     364                                        hashed_file->URI->c_str()); 
     365                        return false; 
     366                } 
     367        } 
     368 
     369        MWLOG (LEV_DEBUG, MOD_APL, L" checkExternalRefs(): All External References matched."); 
     370        return true; 
     371} 
     372 
     373 
     374/*TODO: We'll have to to validate the timestamp if the signature 
    337375 *      actually contains one  */ 
    338 bool XadesSignature::ValidateXades(CByteArray signature, char *errors, unsigned long *error_length) 
     376bool XadesSignature::ValidateXades(CByteArray signature, tHashedFile **hashes, char *errors, unsigned long *error_length) 
    339377{ 
    340378        bool errorsOccured = false; 
    341379         
    342         MWLOG(LEV_DEBUG, MOD_APL, L"ValidateXades() called with XML content of %d bytes", 
    343                         signature.GetBytes()); 
     380        MWLOG(LEV_DEBUG, MOD_APL, L"ValidateXades() called with XML content of %d bytes." 
     381                L"Error buffer addr: 0x%x, error_length=%d ",signature.Size(), errors, *error_length); 
     382 
     383        if (signature.Size() == 0) 
     384        { 
     385                int err_len = _snprintf(errors, *error_length, "Signature Validation error: "  
     386                                "Couldn't extract signature from zip container"); 
     387                *error_length = err_len; 
     388                MWLOG(LEV_ERROR, MOD_APL, L"ValidateXades() received empty Signature. This most likely means a corrupt zipfile"); 
     389                return false; 
     390        } 
     391 
    344392        initXerces(); 
    345393 
     
    379427        if (errorsOccured) { 
    380428                //Write to output report  
    381                 int err_len = _snprintf(errors, *error_length, "Validation error: Malformed XML Document"); 
     429                int err_len = _snprintf(errors, *error_length, "Signature Validation error: Malformed XML Document"); 
    382430                *error_length = err_len; 
    383431                MWLOG(LEV_ERROR, MOD_APL, L"Errors parsing XML Signature, bailing out"); 
     
    402450        if (sigNode == NULL) { 
    403451 
    404                 int err_len = _snprintf(errors, *error_length, "Validation error: XML Signature Node not found"); 
     452                int err_len = _snprintf(errors, *error_length, "Signature Validation error: XML Signature Node not found"); 
    405453                *error_length = err_len; 
    406454 
    407                 MWLOG(LEV_ERROR, MOD_APL, L"ValidateXades: \ 
    408                         Could not find <Signature> node in the signature provided"); 
     455                MWLOG(LEV_ERROR, MOD_APL, L"ValidateXades: Could not find <Signature> node in the signature provided"); 
    409456                return false; 
    410457        } 
     
    430477                sig->load(); 
    431478 
    432                 //agrr: "Manually" Check External References 
    433                 /*DSIGReferenceList *refs = sig->getReferenceList(); 
     479                DSIGReferenceList *refs = sig->getReferenceList(); 
    434480                if (refs != NULL) 
    435                         extern_result = checkExternalRefs(refs); 
     481                        extern_result = checkExternalRefs(refs, hashes); 
    436482                if (!extern_result) 
    437                    cerr << "WARNING: Some of the files referenced in the signature were changed."  
    438                            << endl; 
    439                 */ 
     483                { 
     484                        int err_len = _snprintf(errors, *error_length, 
     485                        "Signature Validation error: At least one of the signed file(s) was changed or is missing"); 
     486                        *error_length = err_len; 
     487                        return false; 
     488                } 
     489                 
    440490                result = sig->verifySignatureOnly(); 
    441491 
     
    468518{ 
    469519 
    470         string default_uri = string("file://localhost") + path; 
    471520#ifdef WIN32 
    472521        XMLCh * uni_reference_uri = (XMLCh*)pathToURI(utf8_decode(path)); 
    473522#else 
     523        string default_uri = string("file://localhost/") + Basename((char *)path); 
    474524        //TODO: We also need to URL-encode the path on Unix 
    475525        XMLCh * uni_reference_uri = XMLString::transcode(default_uri.c_str()); 
     
    522572                rootElem->appendChild(doc->createTextNode(MAKE_UNICODE_STRING("\n"))); 
    523573 
    524                 for (unsigned int i=0; i != n_paths ; i++) 
     574                for (unsigned int i = 0; i != n_paths ; i++) 
    525575                { 
    526576                        const char * path = paths[i]; 
    527577                        //Create a reference to the external file 
    528578                        DSIGReference * ref = sig->createReference(createURI(path)); 
     579                        MWLOG(LEV_DEBUG, MOD_APL, L"SignXades(): Hashing file %S", path); 
    529580                        sha1_hash = HashFile(path); 
    530581 
     
    541592                catch (const XMLException &e) 
    542593                { 
    543                         MWLOG(LEV_ERROR, MOD_APL, L"Exception in calculateSignedInfoHash(), message: %s - %s",  
     594                        MWLOG(LEV_ERROR, MOD_APL, L"Exception in calculateSignedInfoHash(), message: %S - %s",  
    544595                                XMLString::transcode(e.getType()), XMLString::transcode(e.getMessage())); 
    545596                 
  • middleware-offline/trunk/_src/eidmw/applayer/XadesSignature.h

    r34 r35  
    1212#include "Export.h"  
    1313#include "APLCard.h" 
     14#include "MiscUtil.h" 
    1415 
    1516#define ASN1_LEN 43 
     
    2425#endif 
    2526 
     27 
    2628XERCES_CPP_NAMESPACE_USE 
     29 
    2730namespace eIDMW 
    2831{ 
     32 
    2933        class CByteArray; 
    3034        static unsigned char timestamp_asn1_request[ASN1_LEN] = 
     
    5458                CByteArray &SignXadesT(const char ** paths, unsigned int n_paths); 
    5559 
    56                 bool ValidateXades(CByteArray signature, char *errors, unsigned long *error_length); 
     60                static bool checkExternalRefs(DSIGReferenceList *refs, tHashedFile **hashes); 
     61                static bool ValidateXades(CByteArray signature, tHashedFile **hashes, char *errors, unsigned long *error_length); 
    5762                 
    5863 
     
    7681                void generate_asn1_request_struct(char *sha_1); 
    7782 
    78                 void initXerces(); 
     83                static void initXerces(); 
    7984 
    8085                 
  • middleware-offline/trunk/_src/eidmw/applayer/applayer.pro

    r34 r35  
    8484        PhotoPteid.h \ 
    8585        APLPublicKey.h \ 
     86        SigContainer.h \ 
    8687        XadesSignature.h 
    8788 
     
    108109    PhotoPteid.cpp \ 
    109110    APLPublicKey.cpp \ 
     111    SigContainer.cpp \ 
    110112    XadesSignature.cpp 
    111113     
  • middleware-offline/trunk/_src/eidmw/applayer/pteid35applayer.vcproj

    r34 r35  
    4444                                Name="VCCLCompilerTool" 
    4545                                Optimization="0" 
    46                                 AdditionalIncludeDirectories="../common;../dialogs;../cardlayer;&quot;$(PTEID_DIR_OPENSSL_098G)\include&quot;;..\..\ThirdParty\openssl.0.9.8g\include;&quot;$(PTEID_DIR_XERCES_310)\include&quot;;&quot;..\..\ThirdParty\xerces\Xerces-3.1.0\include&quot;;&quot;$(PTEID_DIR_PLATFORMSDK_2003)\include&quot;;..\..\ThirdParty\MSPlatformSDK_2003\Include;..\..\ThirdParty\MSPlatformSDK\Include" 
     46                                AdditionalIncludeDirectories="../common;../dialogs;..\FreeImagePTEiD\Source;&quot;..\xml-security-c-1.6.1\&quot;;&quot;..\..\ThirdParty\libcurl-7.24\include&quot;;../cardlayer;&quot;$(PTEID_DIR_OPENSSL_098G)\include&quot;;..\..\ThirdParty\openssl.0.9.8g\include;&quot;$(PTEID_DIR_XERCES_310)\include&quot;;&quot;..\..\ThirdParty\xerces\Xerces-3.1.0\include&quot;;&quot;$(PTEID_DIR_PLATFORMSDK_2003)\include&quot;;..\..\ThirdParty\MSPlatformSDK_2003\Include;..\..\ThirdParty\MSPlatformSDK\Include" 
    4747                                PreprocessorDefinitions="PTEID_35;WIN32;_DEBUG;_WINDOWS;_USRDLL;EIDMW_APPLAYER_EXPORTS" 
    4848                                MinimalRebuild="true" 
     
    7070                                Name="VCLinkerTool" 
    7171                                LinkLibraryDependencies="false" 
    72                                 AdditionalDependencies="wsock32.lib pteid35DlgsWin32D.lib pteid35cardlayerD.lib pteid35commonD.lib libeay32_0_9_8g.lib ssleay32_0_9_8g.lib xerces-c_3D.lib" 
     72                                AdditionalDependencies="wsock32.lib pteid35DlgsWin32D.lib pteid35cardlayerD.lib pteid35commonD.lib xsec_1.lib FreeImage.lib libeay32.lib ssleay32.lib libcurl.lib xerces-c_3D.lib" 
    7373                                OutputFile="..\_Binaries35\$(ConfigurationName)\pteid35$(ProjectName)D.dll" 
    7474                                LinkIncremental="2" 
     
    129129                                Name="VCCLCompilerTool" 
    130130                                AdditionalIncludeDirectories="../common;../dialogs;../cardlayer;../FreeImagePTEiD/Source;&quot;$(PTEID_DIR_OPENSSL_098G)\include&quot;;&quot;$(PTEID_DIR_XERCES_310)\include&quot;;&quot;..\xml-security-c-1.6.1&quot;;&quot;$(PTEID_DIR_PLATFORMSDK_2003)\include&quot;;&quot;..\..\ThirdParty\libcurl-7.24\include&quot;" 
    131                                 PreprocessorDefinitions="PTEID_35;WIN32;NDEBUG;_WINDOWS;_USRDLL;EIDMW_APPLAYER_EXPORTS" 
     131                                PreprocessorDefinitions="PTEID_35;WIN32;NDEBUG;_WINDOWS;_USRDLL;EIDMW_APPLAYER_EXPORTS;_CRT_SECURE_NO_WARNINGS" 
    132132                                RuntimeLibrary="2" 
    133133                                TreatWChar_tAsBuiltInType="true" 
     
    429429                        </File> 
    430430                        <File 
     431                                RelativePath=".\SigContainer.cpp" 
     432                                > 
     433                        </File> 
     434                        <File 
    431435                                RelativePath=".\XadesSignature.cpp" 
    432436                                > 
     
    543547                        </File> 
    544548                        <File 
     549                                RelativePath=".\SigContainer.h" 
     550                                > 
     551                        </File> 
     552                        <File 
    545553                                RelativePath=".\XadesSignature.h" 
    546554                                > 
  • middleware-offline/trunk/_src/eidmw/cardlayer/Card.cpp

    r34 r35  
    323323} 
    324324 
    325 bool CCard::unlockPIN(const tPin &pin, const tPin *puk, const char *pszPuk, const char *pszNewPin, unsigned long *triesLeft){ 
     325bool CCard::unlockPIN(const tPin &pin, const tPin *puk, const char *pszPuk, const char *pszNewPin, unsigned long &triesLeft){ 
    326326        throw CMWEXCEPTION(EIDMW_ERR_NOT_SUPPORTED); 
    327327} 
  • middleware-offline/trunk/_src/eidmw/cardlayer/Card.h

    r34 r35  
    9292        virtual CByteArray RootCAPubKey(); 
    9393        virtual bool Activate(const char *pinCode, CByteArray &BCDDate); 
    94         virtual bool unlockPIN(const tPin &pin, const tPin *puk, const char *pszPuk, const char *pszNewPin, unsigned long *triesLeft); 
     94        virtual bool unlockPIN(const tPin &pin, const tPin *puk, const char *pszPuk, const char *pszNewPin, unsigned long &triesLeft); 
    9595    virtual bool PinCmd(tPinOperation operation, const tPin & Pin, 
    9696        const std::string & csPin1, const std::string & csPin2, 
  • middleware-offline/trunk/_src/eidmw/cardlayer/PKCS15.cpp

    r34 r35  
    5151  const static tPin pinPteidSignV2   = {true, "Signature",0,1,1,1,0,NO_ID,4, 8, 12, 0x86, 0xFF,PIN_ENC_ASCII,"","3F00"}; 
    5252 
    53   const static tPrivKey KeyAuthPteidV1 = {true, "Authentication", 0,2,0,1,0,0,0x82,"3F005F00", 256,true}; 
    54   const static tPrivKey KeySignPteidV1 = {true, "Signature", 0,3,0,1,0,0,0x83,"3F005F00", 256,true}; 
    55   const static tPrivKey KeyAuthPteidV2 = {true, "Authentication", 0,2,0,2,0,0,0x8A,"3F005F00", 256,true}; 
    56   const static tPrivKey KeySignPteidV2 = {true, "Signature", 0,3,0,2,0,0,0x89,"3F005F00", 256,true}; 
     53  //const static tPrivKey KeyAuthPteidV1 = {true, "Authentication", 0,0,0,0,0,0,0x82,"3F005F00", 1024 ,true}; 
     54  //const static tPrivKey KeySignPteidV1 = {true, "Signature", 0,0,0,0,0,0,0x83,"3F005F00", 1024,true}; 
     55  //const static tPrivKey KeyAuthPteidV2 = {true, "Authentication", 0,0,0,0,0,0,0x8A,"3F005F00", 1024,true}; 
     56  //const static tPrivKey KeySignPteidV2 = {true, "Signature", 0,0,0,0,0,0,0x89,"3F005F00", 1024,true}; 
    5757 
    5858  const std::string defaultEFTokenInfo = "3F004F005032"; 
     
    114114        if(! m_xTokenInfo.isRead) ReadLevel2(TOKENINFO);  
    115115      } 
    116  
    117116    return m_csSerial; 
    118117  } 
     
    236235    tOdfInfo resultOdf; 
    237236    tTokenInfo resultTokenInfo; 
     237 
    238238    switch(name){ 
    239239    case ODF: 
     
    261261 
    262262  void CPKCS15::ReadLevel3(tPKCSFileName name){ 
    263     CP15Correction * p15correction = m_poCard->GetP15Correction(); 
    264     switch(name){ 
    265     case AODF: 
    266       ReadFile(&m_xAODF,2); 
    267       // parse 
    268       m_oPins = m_poParser->ParseAodf(m_xAODF.byteArray); 
    269       // correct 
    270       if (p15correction != NULL) 
    271         p15correction->CheckPINs(m_oPins); 
    272       break; 
    273     case CDF: 
    274       ReadFile(&m_xCDF,2); 
    275       // parse  
    276       m_oCertificates = m_poParser->ParseCdf(m_xCDF.byteArray); 
    277       // correct 
    278       if (p15correction != NULL) 
    279         p15correction->CheckCerts(m_oCertificates); 
    280       break; 
    281     case PRKDF: 
    282       ReadFile(&m_xPrKDF,2); 
    283       // parse 
    284       m_oPrKeys = m_poParser->ParsePrkdf(m_xPrKDF.byteArray); 
    285       // correct 
    286       if (p15correction != NULL) 
    287         p15correction->CheckPrKeys(m_oPrKeys); 
    288       break; 
    289     default: 
    290       // error: this method can only be called with AODF, CDF or PRKDF 
    291       return; 
    292     } 
     263      CP15Correction * p15correction = m_poCard->GetP15Correction(); 
     264      switch(name){ 
     265      case AODF: 
     266          ReadFile(&m_xAODF,2); 
     267          // parse 
     268          m_oPins = m_poParser->ParseAodf(m_xAODF.byteArray); 
     269          // correct 
     270          if (p15correction != NULL) 
     271              p15correction->CheckPINs(m_oPins); 
     272          break; 
     273      case CDF: 
     274          ReadFile(&m_xCDF,2); 
     275          // parse 
     276          m_oCertificates = m_poParser->ParseCdf(m_xCDF.byteArray); 
     277          // correct 
     278          if (p15correction != NULL) 
     279              p15correction->CheckCerts(m_oCertificates); 
     280          break; 
     281      case PRKDF: 
     282          ReadFile(&m_xPrKDF,2); 
     283          // parse 
     284          m_oPrKeys = m_poParser->ParsePrkdf(m_xPrKDF.byteArray); 
     285          //Workaround to fix PrivKey parse - it parses 3 instead of 2. 
     286          m_oPrKeys.pop_back(); 
     287          // correct 
     288          if (p15correction != NULL) 
     289              p15correction->CheckPrKeys(m_oPrKeys); 
     290          break; 
     291      default: 
     292          // error: this method can only be called with AODF, CDF or PRKDF 
     293          return; 
     294      } 
    293295  } 
    294296 
     
    301303        break; 
    302304      case 2: 
    303         ReadLevel2(ODF); 
     305    ReadLevel2(ODF); 
    304306        break; 
    305307      default: 
  • middleware-offline/trunk/_src/eidmw/cardlayer/PkiCard.h

    r34 r35  
    5757    virtual CByteArray RootCAPubKey() = 0; 
    5858    virtual bool Activate(const char *pinCode, CByteArray &BCDDate) = 0; 
    59     virtual bool unlockPIN(const tPin &pin, const tPin *puk, const char *pszPuk, const char *pszNewPin, unsigned long *triesLeft) = 0; 
     59    virtual bool unlockPIN(const tPin &pin, const tPin *puk, const char *pszPuk, const char *pszNewPin, unsigned long &triesLeft) = 0; 
    6060    virtual bool PinCmd(tPinOperation operation, const tPin & Pin, 
    6161        const std::string & csPin1, const std::string & csPin2, 
  • middleware-offline/trunk/_src/eidmw/cardlayer/Reader.cpp

    r34 r35  
    409409} 
    410410 
    411 bool CReader::unlockPIN(const tPin &pin, const tPin *puk, const char *pszPuk, const char *pszNewPin, unsigned long *triesLeft){ 
     411bool CReader::unlockPIN(const tPin &pin, const tPin *puk, const char *pszPuk, const char *pszNewPin, unsigned long &triesLeft){ 
    412412        if (m_poCard == NULL) 
    413413                throw CMWEXCEPTION(EIDMW_ERR_NO_CARD); 
  • middleware-offline/trunk/_src/eidmw/cardlayer/Reader.h

    r34 r35  
    125125    bool Activate(const char *pinCode, CByteArray &BCDDate); 
    126126 
    127     bool unlockPIN(const tPin &pin, const tPin *puk, const char *pszPuk, const char *pszNewPin, unsigned long *triesLeft); 
     127    bool unlockPIN(const tPin &pin, const tPin *puk, const char *pszPuk, const char *pszNewPin, unsigned long &triesLeft); 
    128128 
    129129    bool PinCmd(tPinOperation operation, const tPin & Pin, 
  • middleware-offline/trunk/_src/eidmw/cardlayer/cardpluginPteid/PteidCard.cpp

    r34 r35  
    293293        } 
    294294  try { 
    295           m_ucCLA = 0x00; 
    296           if (ulVersion == 1 ) 
    297           { 
    298                   m_oCardData = SendAPDU(0xCA, 0xDF, 0x30, 0x08); 
    299           } else { 
    300                   m_oCardData = SendAPDU(0xCA, 0x02, 0x5A, 0x0D); 
    301           } 
    302           m_ucCLA = 0x00; 
    303  
    304                 //if (m_oCardData.Size() < 23) 
    305                 //lmedinas -- fixme for gemsafe v2 
    306                 /*if(m_oCardData.Size() < 15) //PT have 15 not 23 serial number... 
    307                 { 
    308                         //printf("... OK exception\n"); 
    309                         throw CMWEXCEPTION(EIDMW_ERR_APPLET_VERSION_NOT_FOUND); 
    310                         }*/ 
    311  
    312                 m_oCardData.Chop(2); // remove SW12 = '90 00' 
    313  
    314                 m_oSerialNr = CByteArray(m_oCardData.GetBytes(), m_oCardData.Size()); 
    315                 // Get Card Applet Version 
    316                 m_AppletVersion = ulVersion; 
    317  
    318  
    319                 //m_ucAppletVersion = m_oCardData.GetByte(21); 
    320         /*if (m_ucAppletVersion < 0x20) 
    321             m_ucAppletVersion = (unsigned char) (16 * m_oCardData.GetByte(21) + m_oCardData.GetByte(22)); 
    322  
    323                 m_ul6CDelay = 0; 
    324                 if (m_oCardData.GetByte(22) == 0x00 && m_oCardData.GetByte(23) == 0x01) 
    325                         m_ul6CDelay = 50;*/ 
    326  
    327                 //m_selectAppletMode = selectAppletMode; 
    328         } 
     295        // Get Card Serial Number 
     296        m_oCardData = ReadFile("3f004f005032"); 
     297        m_ucCLA = 0x00; 
     298 
     299        m_oCardData.Chop(2); // remove SW12 = '90 00' 
     300 
     301        CByteArray parsesrnr; 
     302        parsesrnr = CByteArray(m_oCardData.GetBytes(), m_oCardData.Size()); 
     303        m_oSerialNr  = parsesrnr.GetBytes(7,8); 
     304 
     305        // Get Card Applet Version 
     306        m_AppletVersion = ulVersion; 
     307    } 
    329308    catch(CMWException e) 
    330309    { 
    331                 MWLOG(LEV_CRIT, MOD_CAL, L"Failed to get CardData: 0x%0x", e.GetError()); 
     310        MWLOG(LEV_CRIT, MOD_CAL, L"Failed to get CardData: 0x%0x", e.GetError()); 
    332311        Disconnect(DISCONNECT_LEAVE_CARD); 
    333312    } 
     
    435414} 
    436415 
    437 bool CPteidCard::unlockPIN(const tPin &pin, const tPin *puk, const char *pszPuk, const char *pszNewPin, unsigned long *triesLeft){ 
     416bool CPteidCard::unlockPIN(const tPin &pin, const tPin *puk, const char *pszPuk, const char *pszNewPin, unsigned long &triesLeft){ 
    438417        CByteArray oResp; 
    439418        bool bOK = false; 
     
    444423                if (m_cardType == CARD_PTEID_IAS101){ 
    445424                        if (PinCmd(PIN_OP_VERIFY, *puk, pszPuk, "", ulRemaining, NULL)) //martinho - verify puk 
    446                                 bOK = PinCmd(PIN_OP_RESET, pin, pszNewPin, "", *triesLeft, NULL); // martinho - reset pin 
     425                                bOK = PinCmd(PIN_OP_RESET, pin, pszNewPin, "", triesLeft, NULL); // martinho - reset pin 
    447426                } else if (m_cardType == CARD_PTEID_IAS07){ 
    448427                        // need a gemsafe card! 
     
    451430                } 
    452431                if (bOK) 
    453                         *triesLeft = PinStatus(pin); 
     432                        triesLeft = PinStatus(pin); 
    454433        } 
    455434        catch(...) 
     
    1012991        case 3: // 0003 (TRACE) 
    1013992        case 246: // EF07 (PersoData) 
    1014           return simpleCache; 
     993          return dontCache; 
    1015994        case 244: // EF05 (Address) 
    1016995          return dontCache; 
  • middleware-offline/trunk/_src/eidmw/cardlayer/cardpluginPteid/PteidCard.h

    r34 r35  
    7777    virtual CByteArray RootCAPubKey(); 
    7878    virtual bool Activate(const char *pinCode, CByteArray &BCDDate); 
    79     virtual bool unlockPIN(const tPin &pin, const tPin *puk, const char *pszPuk, const char *pszNewPin, unsigned long *triesLeft); 
     79    virtual bool unlockPIN(const tPin &pin, const tPin *puk, const char *pszPuk, const char *pszNewPin, unsigned long &triesLeft); 
    8080        virtual bool LogOff(const tPin & Pin); 
    8181 
  • middleware-offline/trunk/_src/eidmw/cardlayer/ppgempc-plugin/pinpad-gempc-plugin.c

    r34 r35  
    2828                return SCARD_E_INVALID_PARAMETER; 
    2929 
    30         if (strstr(csReader, "GemPC Pinpad") == 0 && 
    31                 strstr(csReader, "GemPCPinpad") == 0) 
     30    if (strstr(csReader, "GemPC Pinpad") == 0 && 
     31        strstr(csReader, "GemPCPinpad") == 0) 
    3232                return SCARD_E_INVALID_PARAMETER; 
    3333         
     
    3737} 
    3838 
    39 void printHex(char *array, unsigned int len) 
     39void printHex(unsigned char *arr, unsigned int len) 
    4040{ 
    4141        unsigned int i = 0; 
    42         char *p = array; 
    43  
    44         if (array == NULL ) 
     42 
     43        if (arr == NULL ) 
    4544        {    
    4645                printf("printfHex: NULL Array\n"); 
     
    5554                }    
    5655 
    57                 printf ("%02X ", *p++); 
     56                printf ("%02X ", arr[i]); 
    5857                i++; 
    5958        }    
     
    146145 
    147146        /* PC/SC v2.0.2 Part 10 PIN verification data structure */ 
    148         pin_verify -> bTimerOut = 0;  
     147        pin_verify -> bTimerOut = 0x1E;  
    149148        pin_verify -> bTimerOut2 = 0x1E;   //30 seconds timeout 
    150149        pin_verify -> bmFormatString = 0x82; 
    151         pin_verify -> bmPINBlockString = 0x04; 
     150        pin_verify -> bmPINBlockString = 0x00; //On Linux it can be 0x04!!! 
    152151        pin_verify -> bmPINLengthFormat = 0x00; 
    153152        (pin_verify -> wPINMaxExtraDigit)[0] = 0x08; /* Min Max */ 
     
    165164} //sizeof() == 19 
    166165 
    167 DLL_LOCAL void fillModifyControlStruct(EIDMW_PP_CHANGE_CCID * pin_change) 
    168 { 
    169  
    170         pin_change -> bTimerOut = 0;  
     166DLL_LOCAL void fillModifyControlStruct(EIDMW_PP_CHANGE_CCID * pin_change, int include_verify) 
     167{ 
     168 
     169        pin_change -> bTimerOut = 0x1E;  
    171170        pin_change -> bTimerOut2 = 0x1E;   //30 seconds timeout 
    172         pin_change -> bmFormatString = 0x82; 
    173         pin_change -> bmPINBlockString = 0x04; 
     171        pin_change -> bmFormatString = 0x02; 
     172        pin_change -> bmPINBlockString = 0x00; 
    174173        pin_change -> bmPINLengthFormat = 0x00; 
    175174        pin_change -> bInsertionOffsetOld = 0x00; 
    176         pin_change -> bInsertionOffsetNew = 0x08; 
     175        pin_change -> bInsertionOffsetNew = include_verify == 1 ? 0x08 : 0x00;  
    177176        (pin_change -> wPINMaxExtraDigit)[0] = 0x08; /* Min Max */ 
    178177        pin_change -> wPINMaxExtraDigit[1] = 0x04;  
    179         pin_change -> bConfirmPIN = 0x03; 
     178        pin_change -> bConfirmPIN = include_verify == 1 ? 0x03 : 0x01; 
    180179        pin_change -> bEntryValidationCondition = 0x02; 
    181180        /* validation key pressed */ 
    182         pin_change -> bNumberMessage = 0x03; 
     181        pin_change -> bNumberMessage = include_verify == 1 ? 0x03 : 0x02; 
    183182        (pin_change -> wLangId)[0] = 0x16; //0x0816 
    184183        pin_change -> wLangId[1] = 0x08;  
     
    250249        DWORD rv = 0; 
    251250        int i = 0; 
     251         
     252        printf("SCardControl() Parameters: \n"); 
     253        printf("ioctl: %04X\n", ioctl); 
     254        printf("length: %d\n", length); 
     255        printf("dwRecvlen: %d\n", dwRecvlen); 
    252256        printf ("Send buffer: \n"); 
    253257        printHex(pin_struct, length); 
    254  
    255258        rv = SCardControl(hCard, ioctl, pin_struct, 
    256259                        length, pucRecvbuf, dwRecvlen, pdwRecvlen); 
     
    267270        } 
    268271        else 
    269               printf("\tppgemplus-plugin =>  %04x\n",  
     272              printf("\tppgemplus-plugin =>  %08x\n",  
    270273                                (unsigned int)rv); 
    271274        return rv; 
     275} 
     276 
     277DLL_LOCAL DWORD loadStrings(SCARDHANDLE hCard, unsigned char ucPinType) 
     278{ 
     279 
     280        /*The Following Blob contains the Portuguese strings to show on the Pinpad Display: 
     281                PIN Autent.?    
     282                Novo PIN?     
     283                Conf. novo PIN 
     284                OK   
     285                PIN falhou       
     286                Tempo expirou    
     287                * tentiv. restam 
     288                Introduza cartao 
     289                Erro cartao  
     290                PIN bloqueado    
     291        */ 
     292        char stringTable[] = 
     293                "\xB2\xA0\x00\x4D\x4C\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4E\x6F\x76" 
     294                "\x6F\x20\x50\x49\x4E\x3F\x20\x20\x20\x20\x20\x20\x20\x43\x6F\x6E\x66\x2E\x20\x6E\x6F\x76\x6F" 
     295                "\x20\x50\x49\x4E\x20\x20\x50\x49\x4E\x20\x4F\x4B\x2E\x20\x20\x20\x20\x20\x20\x20\x20\x20\x50" 
     296                "\x49\x4E\x20\x66\x61\x6C\x68\x6F\x75\x20\x20\x20\x20\x20\x20\x54\x65\x6D\x70\x6F\x20\x65\x78" 
     297                "\x70\x69\x72\x6F\x75\x20\x20\x20\x2A\x20\x74\x65\x6E\x74\x69\x76\x2E\x20\x72\x65\x73\x74\x61\x6D" 
     298                "\x49\x6E\x74\x72\x6F\x64\x75\x7A\x61\x20\x63\x61\x72\x74\x61\x6F\x45\x72\x72\x6F\x20\x63\x61\x72" 
     299                "\x74\x61\x6F\x20\x20\x20\x20\x20\x50\x49\x4E\x20\x62\x6C\x6F\x71\x75\x65\x61\x64\x6F\x20\x20\x20"; 
     300 
     301        DWORD ioctl = 0x00312000; 
     302        char recvBuf[200]; 
     303        DWORD rv = 0; 
     304        unsigned int STRING_LEN = 16; 
     305        DWORD recvlen = sizeof(recvBuf); 
     306 
     307        switch (ucPinType) 
     308        { 
     309                case EIDMW_PP_TYPE_AUTH: 
     310                        memcpy(&stringTable[5], "PIN Autent.?    ", STRING_LEN);  
     311                        break; 
     312                case EIDMW_PP_TYPE_SIGN: 
     313                        memcpy(&stringTable[5], "PIN Assinatura? ", STRING_LEN);  
     314                        break; 
     315 
     316                case EIDMW_PP_TYPE_ADDR: 
     317                        memcpy(&stringTable[5], "PIN Morada?     ", STRING_LEN);  
     318                        break; 
     319        } 
     320         
     321        printHex(stringTable, sizeof(stringTable)-1); 
     322 
     323        printf("Size of string table: %d\n", sizeof(stringTable)-1); 
     324         
     325        rv = SCardControl(hCard, ioctl, stringTable, sizeof(stringTable)-1, 
     326                recvBuf, recvlen, &recvlen); 
     327 
     328         
     329        if ( rv == SCARD_S_SUCCESS ) 
     330        { 
     331                printf("Strings Loaded successfully\n"); 
     332        } 
     333        else 
     334                printf("Error in LoadStrings: SCardControl() returned: %08x\n",  
     335                                (unsigned int)rv); 
     336         
     337        return rv; 
     338 
    272339} 
    273340 
     
    294361        dwAtrLen = sizeof(pbAtr); 
    295362 
     363        printf("EIDMW_PP2_Command called with ioctl= %08x\n", ioctl); 
     364 
    296365        if (ioctl == CM_IOCTL_GET_FEATURE_REQUEST) 
    297366        { 
     
    313382                printf("\n"); 
    314383 
     384                rv = loadStrings(hCard, ucPintype); 
     385 
    315386                //For IAS cards we need to VerifyPIN before Modify 
    316387                if (ioctl == CM_IOCTL_VERIFY_PIN || !IsGemsafe(pbAtr, dwAtrLen)) 
    317388                { 
    318389                        printf("ppgemplus-plugin ==> Verify PIN\n"); 
     390 
    319391                        fillVerifyControlStruct(&pin_verify); 
    320392                        pin_struct = &pin_verify; 
     
    333405 
    334406                        } 
     407 
    335408                        rv = sendControl(hCard, ioctl2, pin_struct, 
    336409                                length, pucRecvbuf, dwRrecvlen, pdwRrecvlen); 
     
    342415                { 
    343416                        printf("ppgemplus-plugin ==> Modify PIN\n"); 
    344                         fillModifyControlStruct(&pin_change); 
     417 
    345418                        pin_struct = &pin_change; 
    346419 
    347420                        if (!IsGemsafe(pbAtr, dwAtrLen)) 
    348421                        { 
     422                                fillModifyControlStruct(&pin_change, 0); 
    349423                                pin_change.ulDataLength = 0x0D; // The APDU only includes placeholders for the new PIN 
    350                                 //Overriding the prompt options in order to not ask for the old pin again 
    351                                 pin_change.bConfirmPIN = 0x01; 
    352                                 pin_change.bNumberMessage = 0x02; 
    353424                                length = fillStructIAS(pin_change.abData, ucPintype, 1); 
    354425                        } 
    355426                        else 
    356427                        { 
     428                                fillModifyControlStruct(&pin_change, 1); 
    357429                                pin_change.ulDataLength = 0x15; // The APDU only includes placeholders for both PINs 
    358  
    359430                                length = fillStructGemsafe(pin_change.abData, ucPintype, 1); 
    360431                        } 
  • middleware-offline/trunk/_src/eidmw/cardlayer/ppgempc-plugin/pinpad2-private.h

    r34 r35  
    7878#include <winscard.h> 
    7979 
    80 #ifndef WIN32 
     80#ifndef _WIN32 
    8181#include "wintypes.h" 
    8282#endif 
     
    8585#define CM_IOCTL_GET_FEATURE_REQUEST SCARD_CTL_CODE(3400) //Definition from reader.h in pcsclite 
    8686#endif 
     87#ifdef _WIN32 
     88#define CM_IOCTL_VERIFY_PIN 0x00312110 
     89#define CM_IOCTL_MODIFY_PIN 0x00312114 
     90#else 
    8791#define CM_IOCTL_VERIFY_PIN 0x42330006 
    8892#define CM_IOCTL_MODIFY_PIN 0x42330007 
     93#endif 
    8994 
    9095 
     
    249254        unsigned char bMsgIndex; // Message index (should be 00) 
    250255        unsigned char bTeoPrologue[3]; // T=1 block prologue field to use (fill with 00) 
    251         DWORD ulDataLength; // length of the following field 
     256    unsigned int ulDataLength; // length of the following field 
    252257        unsigned char abData[1]; // APDU to send to the card (to be completed by the reader) 
    253258} EIDMW_PP_VERIFY_CCID; 
     
    275280        unsigned char bMsgIndex3; // index of 3d prompting message 
    276281        unsigned char bTeoPrologue[3]; // T=1 block prologue field to use (fill with 00) 
    277         DWORD ulDataLength; // length of the following field 
     282    unsigned int ulDataLength; // length of the following field 
    278283        unsigned char abData[1]; // APDU to send to the card (to be completed by the reader) 
    279284} EIDMW_PP_CHANGE_CCID; 
  • middleware-offline/trunk/_src/eidmw/common/ConfigCommon.cpp

    r25 r35  
    8585 
    8686//XSIGN 
    87   const struct CConfig::Param_Str CConfig::EIDMW_CONFIG_PARAM_XSIGN_TSAURL              =       {EIDMW_CNF_SECTION_XSIGN,       EIDMW_CNF_XSIGN_TSAURL,         L"http://tsa.portugal.be/connect"}; 
     87  const struct CConfig::Param_Str CConfig::EIDMW_CONFIG_PARAM_XSIGN_TSAURL = {EIDMW_CNF_SECTION_XSIGNEIDMW_CNF_XSIGN_TSAURL,    L"http://ts.cartaodecidadao.pt/tsa/server"}; 
    8888  const struct CConfig::Param_Num CConfig::EIDMW_CONFIG_PARAM_XSIGN_ONLINE              =       {EIDMW_CNF_SECTION_XSIGN,       EIDMW_CNF_XSIGN_ONLINE,         1}; 
    8989  const struct CConfig::Param_Str CConfig::EIDMW_CONFIG_PARAM_XSIGN_WORKINGDIR          =       {EIDMW_CNF_SECTION_XSIGN,       EIDMW_CNF_XSIGN_WORKINGDIR,     L""}; 
  • middleware-offline/trunk/_src/eidmw/eidgui/AutoUpdates.cpp

    r34 r35  
    353353        } 
    354354#else 
     355 
     356        if (distro == "unsupported")   
     357        { 
     358                std::string Pmsgcaption = "Aviso"; 
     359                std::string Pmsgbody = "A sua distribuição não é suportada pelo Auto Update."; 
     360                QMessageBox msgBoxp(QMessageBox::Warning, QString::fromUtf8(Pmsgcaption.c_str()), QString::fromUtf8(Pmsgbody.c_str()), 0, this); 
     361                msgBoxp.exec(); 
     362        } 
     363 
    355364        pkgname.append("pteid-mw"); 
    356365 
  • middleware-offline/trunk/_src/eidmw/eidgui/dlgPrint.ui

    r34 r35  
    77    <x>0</x> 
    88    <y>0</y> 
    9     <width>450</width> 
    10     <height>315</height> 
     9    <width>354</width> 
     10    <height>169</height> 
    1111   </rect> 
    12   </property> 
    13   <property name="font"> 
    14    <font> 
    15     <pointsize>11</pointsize> 
    16    </font> 
    1712  </property> 
    1813  <property name="windowTitle"> 
     
    2722  </property> 
    2823  <layout class="QGridLayout"> 
     24   <property name="sizeConstraint"> 
     25    <enum>QLayout::SetNoConstraint</enum> 
     26   </property> 
    2927   <item row="1" column="0"> 
    30     <layout class="QVBoxLayout" name="verticalLayout_3"> 
    31      <property name="sizeConstraint"> 
    32       <enum>QLayout::SetDefaultConstraint</enum> 
     28    <widget class="QWidget" name="widget_2" native="true"> 
     29     <property name="minimumSize"> 
     30      <size> 
     31       <width>0</width> 
     32       <height>100</height> 
     33      </size> 
    3334     </property> 
    34      <item> 
    35       <layout class="QHBoxLayout" name="horizontalLayout"> 
    36        <item> 
    37         <spacer name="horizontalSpacer"> 
    38          <property name="orientation"> 
    39           <enum>Qt::Horizontal</enum> 
    40          </property> 
    41          <property name="sizeHint" stdset="0"> 
    42           <size> 
    43            <width>40</width> 
    44            <height>20</height> 
    45           </size> 
    46          </property> 
    47         </spacer> 
    48        </item> 
    49        <item> 
    50         <widget class="QPushButton" name="pbCancel"> 
    51          <property name="text"> 
    52           <string>Cancel</string> 
    53          </property> 
    54         </widget> 
    55        </item> 
    56        <item> 
    57         <widget class="QPushButton" name="pbPrint"> 
    58          <property name="text"> 
    59           <string>Print</string> 
    60          </property> 
    61         </widget> 
    62        </item> 
    63        <item> 
    64         <widget class="QPushButton" name="pbGeneratePdf"> 
    65          <property name="text"> 
    66           <string>Generate Pdf</string> 
    67          </property> 
    68         </widget> 
    69        </item> 
    70       </layout> 
    71      </item> 
    72     </layout> 
    73    </item> 
    74    <item row="0" column="0"> 
    75     <layout class="QVBoxLayout" name="verticalLayout_2"> 
    76      <item> 
    77       <widget class="QLabel" name="labelHeader"> 
    78        <property name="text"> 
    79         <string>Introduza os campos que pretende introduzir no PDF.</string> 
    80        </property> 
    81        <property name="alignment"> 
    82         <set>Qt::AlignCenter</set> 
    83        </property> 
    84       </widget> 
    85      </item> 
    86      <item> 
    87       <widget class="QCheckBox" name="chboxID"> 
    88        <property name="sizePolicy"> 
    89         <sizepolicy hsizetype="Fixed" vsizetype="Expanding"> 
    90          <horstretch>0</horstretch> 
    91          <verstretch>0</verstretch> 
    92         </sizepolicy> 
    93        </property> 
    94        <property name="text"> 
    95         <string>Indicações Básicas</string> 
    96        </property> 
    97       </widget> 
    98      </item> 
    99      <item> 
    100       <widget class="QCheckBox" name="chboxIDExtra"> 
    101        <property name="sizePolicy"> 
    102         <sizepolicy hsizetype="Fixed" vsizetype="Expanding"> 
    103          <horstretch>0</horstretch> 
    104          <verstretch>0</verstretch> 
    105         </sizepolicy> 
    106        </property> 
    107        <property name="text"> 
    108         <string>Indicações Extra</string> 
    109        </property> 
    110       </widget> 
    111      </item> 
    112      <item> 
    113       <widget class="QCheckBox" name="chboxAddress"> 
    114        <property name="sizePolicy"> 
    115         <sizepolicy hsizetype="Fixed" vsizetype="Expanding"> 
    116          <horstretch>0</horstretch> 
    117          <verstretch>0</verstretch> 
    118         </sizepolicy> 
    119        </property> 
    120        <property name="text"> 
    121         <string>Morada</string> 
    122        </property> 
    123       </widget> 
    124      </item> 
    125      <item> 
    126       <widget class="QCheckBox" name="chboxPersoData"> 
    127        <property name="sizePolicy"> 
    128         <sizepolicy hsizetype="Fixed" vsizetype="Expanding"> 
    129          <horstretch>0</horstretch> 
    130          <verstretch>0</verstretch> 
    131         </sizepolicy> 
    132        </property> 
    133        <property name="text"> 
    134         <string>Indicações Pessoais</string> 
    135        </property> 
    136       </widget> 
    137      </item> 
    138     </layout> 
     35     <widget class="QCheckBox" name="chboxIDExtra"> 
     36      <property name="geometry"> 
     37       <rect> 
     38        <x>20</x> 
     39        <y>30</y> 
     40        <width>140</width> 
     41        <height>20</height> 
     42       </rect> 
     43      </property> 
     44      <property name="sizePolicy"> 
     45       <sizepolicy hsizetype="Fixed" vsizetype="Expanding"> 
     46        <horstretch>0</horstretch> 
     47        <verstretch>0</verstretch> 
     48       </sizepolicy> 
     49      </property> 
     50      <property name="text"> 
     51       <string>Indicações Extra</string> 
     52      </property> 
     53     </widget> 
     54     <widget class="QLabel" name="labelHeader"> 
     55      <property name="geometry"> 
     56       <rect> 
     57        <x>10</x> 
     58        <y>0</y> 
     59        <width>421</width> 
     60        <height>20</height> 
     61       </rect> 
     62      </property> 
     63      <property name="layoutDirection"> 
     64       <enum>Qt::LeftToRight</enum> 
     65      </property> 
     66      <property name="text"> 
     67       <string>Selecione os grupos de campos pretendidos:</string> 
     68      </property> 
     69     </widget> 
     70     <widget class="QCheckBox" name="chboxID"> 
     71      <property name="geometry"> 
     72       <rect> 
     73        <x>20</x> 
     74        <y>50</y> 
     75        <width>154</width> 
     76        <height>20</height> 
     77       </rect> 
     78      </property> 
     79      <property name="sizePolicy"> 
     80       <sizepolicy hsizetype="Fixed" vsizetype="Expanding"> 
     81        <horstretch>0</horstretch> 
     82        <verstretch>0</verstretch> 
     83       </sizepolicy> 
     84      </property> 
     85      <property name="text"> 
     86       <string>Indicações Básicas</string> 
     87      </property> 
     88     </widget> 
     89     <widget class="QCheckBox" name="chboxAddress"> 
     90      <property name="geometry"> 
     91       <rect> 
     92        <x>20</x> 
     93        <y>70</y> 
     94        <width>83</width> 
     95        <height>20</height> 
     96       </rect> 
     97      </property> 
     98      <property name="sizePolicy"> 
     99       <sizepolicy hsizetype="Fixed" vsizetype="Expanding"> 
     100        <horstretch>0</horstretch> 
     101        <verstretch>0</verstretch> 
     102       </sizepolicy> 
     103      </property> 
     104      <property name="text"> 
     105       <string>Morada</string> 
     106      </property> 
     107     </widget> 
     108     <widget class="QCheckBox" name="chboxPersoData"> 
     109      <property name="geometry"> 
     110       <rect> 
     111        <x>20</x> 
     112        <y>90</y> 
     113        <width>163</width> 
     114        <height>20</height> 
     115       </rect> 
     116      </property> 
     117      <property name="sizePolicy"> 
     118       <sizepolicy hsizetype="Fixed" vsizetype="Expanding"> 
     119        <horstretch>0</horstretch> 
     120        <verstretch>0</verstretch> 
     121       </sizepolicy> 
     122      </property> 
     123      <property name="text"> 
     124       <string>Indicações Pessoais</string> 
     125      </property> 
     126     </widget> 
     127     <widget class="QPushButton" name="pbCancel"> 
     128      <property name="geometry"> 
     129       <rect> 
     130        <x>250</x> 
     131        <y>120</y> 
     132        <width>81</width> 
     133        <height>27</height> 
     134       </rect> 
     135      </property> 
     136      <property name="text"> 
     137       <string>Cancelar</string> 
     138      </property> 
     139     </widget> 
     140     <widget class="QPushButton" name="pbPrint"> 
     141      <property name="geometry"> 
     142       <rect> 
     143        <x>150</x> 
     144        <y>120</y> 
     145        <width>91</width> 
     146        <height>27</height> 
     147       </rect> 
     148      </property> 
     149      <property name="text"> 
     150       <string>Imprimir</string> 
     151      </property> 
     152     </widget> 
     153     <widget class="QPushButton" name="pbGeneratePdf"> 
     154      <property name="geometry"> 
     155       <rect> 
     156        <x>50</x> 
     157        <y>120</y> 
     158        <width>91</width> 
     159        <height>27</height> 
     160       </rect> 
     161      </property> 
     162      <property name="text"> 
     163       <string>Criar PDF</string> 
     164      </property> 
     165     </widget> 
     166    </widget> 
    139167   </item> 
    140168  </layout> 
  • middleware-offline/trunk/_src/eidmw/eidgui/dlgSignature.ui

    r34 r35  
    1111   </rect> 
    1212  </property> 
    13   <property name="font"> 
    14    <font> 
    15     <pointsize>11</pointsize> 
    16    </font> 
    17   </property> 
    18   <property name="windowTitle"> 
     13   <property name="windowTitle"> 
    1914   <string>Signature</string> 
    2015  </property> 
     
    5651       <item> 
    5752        <widget class="QPushButton" name="pbSign"> 
     53         <property name="enabled"> 
     54          <bool>false</bool> 
     55         </property> 
    5856         <property name="text"> 
    5957          <string>Sign</string> 
  • middleware-offline/trunk/_src/eidmw/eidgui/dlgprint.cpp

    r34 r35  
    318318        { 
    319319                ////Surname 
    320                 cairo_move_to(cr, 20.0, 90.0); 
     320                cairo_move_to(cr, 18.0, 90.0); 
    321321                cairo_show_text(cr, PersonFields[NAME].toStdString().c_str()); 
    322322 
    323323 
    324324                ////Given Name 
    325                 cairo_move_to(cr, 20.0, 125.0); 
     325                cairo_move_to(cr, 18.0, 128.0); 
    326326                cairo_show_text(cr, PersonFields[GIVENNAME].toStdString().c_str()); 
    327327 
    328328                ///Sex 
    329                 cairo_move_to(cr, 20.0, 165.0); 
     329                cairo_move_to(cr, 18.0, 170.0); 
    330330                cairo_show_text(cr, PersonFields[SEX].toStdString().c_str()); 
    331331 
     
    335335 
    336336                ///Nacionality 
    337                 cairo_move_to(cr, 20.0, 200.0); 
     337                cairo_move_to(cr, 18.0, 204.0); 
    338338                cairo_show_text(cr, PersonFields[NATIONALITY].toStdString().c_str()); 
    339339 
    340340                ////Date of Birth 
    341                 cairo_move_to(cr, 145.0, 200.0); 
     341                cairo_move_to(cr, 145.0, 204.0); 
    342342                cairo_show_text(cr, PersonFields[BIRTHDATE].toStdString().c_str()); 
    343343 
    344344                ///Document nr 
    345                 cairo_move_to(cr, 20.0, 240.0); 
     345                cairo_move_to(cr, 18.0, 238.0); 
    346346                cairo_show_text(cr, PersonFields[DOCUMENTNUMBER].toStdString().c_str()); 
    347347 
    348348                ///Expirity Date 
    349                 cairo_move_to(cr, 145.0, 240.0); 
     349                cairo_move_to(cr, 145.0, 238.0); 
    350350                cairo_show_text(cr, CardFields[CARD_VALIDUNTIL].toStdString().c_str()); 
    351351 
    352352                ////Country 
    353                 cairo_move_to(cr, 290.0, 240.0); 
     353                cairo_move_to(cr, 290.0, 238.0); 
    354354                cairo_show_text(cr, PersonFields[COUNTRY].toStdString().c_str()); 
    355355 
    356356                ////Father 
    357                 cairo_move_to(cr, 20.0, 270.0); 
     357                cairo_move_to(cr, 18.0, 273.0); 
    358358                cairo_show_text(cr, PersonFields[FATHER].toStdString().c_str()); 
    359359 
    360360                ////Mother 
    361                 cairo_move_to(cr, 20.0, 295.0); 
     361                cairo_move_to(cr, 18.0, 295.0); 
    362362                cairo_show_text(cr, PersonFields[MOTHER].toStdString().c_str()); 
    363363 
     
    372372        { 
    373373                ////NIF 
    374                 cairo_move_to(cr, 20.0, 380.0); 
     374                cairo_move_to(cr, 18.0, 380.0); 
    375375                cairo_show_text(cr, PersonFields[TAXNO].toStdString().c_str()); 
    376376 
     
    380380 
    381381                ///NUS 
    382                 cairo_move_to(cr, 450.0, 380.0); 
     382                cairo_move_to(cr, 440.0, 380.0); 
    383383                cairo_show_text(cr, PersonFields[HEALTHNO].toStdString().c_str()); 
    384384 
    385385                ///Card Version 
    386                 cairo_move_to(cr, 20.0, 420.0); 
     386                cairo_move_to(cr, 18.0, 418.0); 
    387387                cairo_show_text(cr, PersonFields[CARDVERSION].toStdString().c_str()); 
    388388 
    389389                ///Issuing Date 
    390                 cairo_move_to(cr, 180.0, 420.0); 
     390                cairo_move_to(cr, 170.0, 418.0); 
    391391                cairo_show_text(cr, CardFields[CARD_VALIDFROM].toStdString().c_str()); 
    392392 
    393393                ////Issuing Entity 
    394                 cairo_move_to(cr, 300.0, 420.0); 
     394                cairo_move_to(cr, 296.0, 418.0); 
    395395                cairo_show_text(cr, PersonFields[ISSUINGENTITY].toStdString().c_str()); 
    396396 
    397397                ///Document type 
    398                 cairo_move_to(cr, 470.0, 420.0); 
     398                cairo_move_to(cr, 440.0, 418.0); 
    399399                cairo_show_text(cr, PersonFields[DOCUMENTTYPE].toStdString().c_str()); 
    400400 
    401401                ///Card Status 
    402                 cairo_move_to(cr, 20.0, 460.0); 
     402                cairo_move_to(cr, 18.0, 463.0); 
    403403                cairo_show_text(cr, PersonFields[VALIDATION].toStdString().c_str()); 
    404404 
    405405                ////Local of Request 
    406                 cairo_move_to(cr, 220.0, 460.0); 
     406                cairo_move_to(cr, 296.0, 463.0); 
    407407                cairo_show_text(cr, PersonFields[LOCALOFREQUEST].toStdString().c_str()); 
    408408        } 
     
    413413                addressPINRequest_triggered(CI_Data); 
    414414                tFieldMap& AddressFields = CI_Data.m_AddressInfo.getFields(); 
     415 
     416                ////ADDRESS District 
     417                cairo_move_to(cr, 18.0, 511.0); 
     418                cairo_show_text(cr, AddressFields[ADDRESS_DISTRICT].toStdString().c_str()); 
     419 
     420                ////ADDRESS Municipality 
     421                cairo_move_to(cr, 18.0, 550.0); 
     422                cairo_show_text(cr, AddressFields[ADDRESS_MUNICIPALITY].toStdString().c_str()); 
     423 
     424                ////ADDRESS Civil Parish 
     425                cairo_move_to(cr, 296.0, 550.0); 
     426                cairo_show_text(cr, AddressFields[ADDRESS_CIVILPARISH].toStdString().c_str()); 
     427 
     428 
     429 
     430                ////ADDRESS ABBrStreetType 
     431                cairo_move_to(cr, 18.0, 590.0); 
     432                cairo_show_text(cr, AddressFields[ADDRESS_ABBRSTREETTYPE].toStdString().c_str()); 
     433 
     434                ////ADDRESS Street Type 
     435                cairo_move_to(cr, 185.0, 590.0); 
     436                cairo_show_text(cr, AddressFields[ADDRESS_STREETTYPE].toStdString().c_str()); 
     437 
     438                ////ADDRESS Street Name 
     439                cairo_move_to(cr, 340.0, 590.0); 
     440                cairo_show_text(cr, AddressFields[ADDRESS_STREETNAME].toStdString().c_str()); 
     441 
     442                ////ADDRESS Abbr Building Type 
     443                cairo_move_to(cr, 18.0, 380.0); 
     444                cairo_show_text(cr, AddressFields[ADDRESS_ABBRBUILDINGTYPE].toStdString().c_str()); 
     445 
     446                ////ADDRESS Building Type 
     447                cairo_move_to(cr, 18.0, 380.0); 
     448                cairo_show_text(cr, AddressFields[ADDRESS_BUILDINGTYPE].toStdString().c_str()); 
     449 
     450                ////ADDRESS Door No 
     451                cairo_move_to(cr, 18.0, 672.0); 
     452                cairo_show_text(cr, AddressFields[ADDRESS_DOORNO].toStdString().c_str()); 
     453 
     454                ////ADDRESS Floor 
     455                cairo_move_to(cr, 170.0, 672.0); 
     456                cairo_show_text(cr, AddressFields[ADDRESS_FLOOR].toStdString().c_str()); 
     457 
     458                ////ADDRESS Side 
     459                cairo_move_to(cr, 298.0, 672.0); 
     460                cairo_show_text(cr, AddressFields[ADDRESS_SIDE].toStdString().c_str()); 
     461 
     462                ////ADDRESS Place 
     463                cairo_move_to(cr, 30.0, 420.0); 
     464                cairo_show_text(cr, AddressFields[ADDRESS_PLACE].toStdString().c_str()); 
     465 
     466                ////ADDRESS Zip4 
     467                cairo_move_to(cr, 18.0, 713.0); 
     468                cairo_show_text(cr, AddressFields[ADDRESS_ZIP4].toStdString().c_str()); 
     469 
     470                ////ADDRESS Zip3 
     471                cairo_move_to(cr, 93.0, 713.0); 
     472                cairo_show_text(cr, AddressFields[ADDRESS_ZIP3].toStdString().c_str()); 
     473 
     474 
     475                ////ADDRESS Postal Locality 
     476                cairo_move_to(cr, 170.0, 713.0); 
     477                cairo_show_text(cr, AddressFields[ADDRESS_POSTALLOCALITY].toStdString().c_str()); 
     478 
    415479                ////ADDRESS Locality 
    416                 cairo_move_to(cr, 410.0, 670.0); 
     480                cairo_move_to(cr, 430.0, 713.0); 
    417481                cairo_show_text(cr, AddressFields[ADDRESS_LOCALITY].toStdString().c_str()); 
    418  
    419                 ////ADDRESS Municipality 
    420                 cairo_move_to(cr, 20.0, 550.0); 
    421                 cairo_show_text(cr, AddressFields[ADDRESS_MUNICIPALITY].toStdString().c_str()); 
    422  
    423                 ////ADDRESS District 
    424                 cairo_move_to(cr, 20.0, 510.0); 
    425                 cairo_show_text(cr, AddressFields[ADDRESS_DISTRICT].toStdString().c_str()); 
    426  
    427                 ////ADDRESS Civil Parish 
    428                 cairo_move_to(cr, 320.0, 550.0); 
    429                 cairo_show_text(cr, AddressFields[ADDRESS_CIVILPARISH].toStdString().c_str()); 
    430  
    431                 ////ADDRESS ABBrStreetType 
    432                 cairo_move_to(cr, 20.0, 590.0); 
    433                 cairo_show_text(cr, AddressFields[ADDRESS_ABBRSTREETTYPE].toStdString().c_str()); 
    434  
    435                 ////ADDRESS Street Type 
    436                 cairo_move_to(cr, 240.0, 590.0); 
    437                 cairo_show_text(cr, AddressFields[ADDRESS_STREETTYPE].toStdString().c_str()); 
    438  
    439                 ////ADDRESS Street Name 
    440                 cairo_move_to(cr, 350.0, 590.0); 
    441                 cairo_show_text(cr, AddressFields[ADDRESS_STREETNAME].toStdString().c_str()); 
    442  
    443                 ////ADDRESS Abbr Building Type 
    444                 cairo_move_to(cr, 20.0, 380.0); 
    445                 cairo_show_text(cr, AddressFields[ADDRESS_ABBRBUILDINGTYPE].toStdString().c_str()); 
    446  
    447                 ////ADDRESS Building Type 
    448                 cairo_move_to(cr, 20.0, 380.0); 
    449                 cairo_show_text(cr, AddressFields[ADDRESS_BUILDINGTYPE].toStdString().c_str()); 
    450  
    451                 ////ADDRESS Door No 
    452                 cairo_move_to(cr, 20.0, 670.0); 
    453                 cairo_show_text(cr, AddressFields[ADDRESS_DOORNO].toStdString().c_str()); 
    454  
    455                 ////ADDRESS Floor 
    456                 cairo_move_to(cr, 180.0, 670.0); 
    457                 cairo_show_text(cr, AddressFields[ADDRESS_FLOOR].toStdString().c_str()); 
    458  
    459                 ////ADDRESS Side 
    460                 cairo_move_to(cr, 340.0, 670.0); 
    461                 cairo_show_text(cr, AddressFields[ADDRESS_SIDE].toStdString().c_str()); 
    462  
    463                 ////ADDRESS Zip4 
    464                 cairo_move_to(cr, 20.0, 710.0); 
    465                 cairo_show_text(cr, AddressFields[ADDRESS_ZIP4].toStdString().c_str()); 
    466  
    467                 ////ADDRESS Zip3 
    468                 cairo_move_to(cr, 90.0, 710.0); 
    469                 cairo_show_text(cr, AddressFields[ADDRESS_ZIP3].toStdString().c_str()); 
    470  
    471                 ////ADDRESS Place 
    472                 cairo_move_to(cr, 20.0, 420.0); 
    473                 cairo_show_text(cr, AddressFields[ADDRESS_PLACE].toStdString().c_str()); 
    474  
    475                 ////ADDRESS Postal Locality 
    476                 cairo_move_to(cr, 180.0, 710.0); 
    477                 cairo_show_text(cr, AddressFields[ADDRESS_POSTALLOCALITY].toStdString().c_str()); 
    478482        } 
    479483 
     
    482486                persodata_triggered(CI_Data); 
    483487                tFieldMap& PersoDataFields = CI_Data.m_PersoDataInfo.getFields(); 
     488 
     489                ////PERSONAL NOTES 
    484490                cairo_move_to(cr, 20.0, 760.0); 
    485491                cairo_show_text(cr, (QString::fromUtf8(PersoDataFields[PERSODATA_INFO].toStdString().c_str())).toStdString().c_str()); 
     
    502508                cairo_scale (cr, 160.0/w2, 220.0/h2); 
    503509 
    504                 cairo_set_source_surface(cr, idphoto, 1050, 110); 
     510                cairo_set_source_surface(cr, idphoto, 1050, 180); 
    505511                cairo_paint(cr); 
    506512        } 
  • middleware-offline/trunk/_src/eidmw/eidgui/dlgsignature.cpp

    r34 r35  
    2222#include <QListView> 
    2323 
     24#include <fstream> 
     25#include <iostream> 
     26 
    2427#include "dlgsignature.h" 
    2528#include "eidlib.h" 
     
    2932 
    3033 
    31 dlgSignature::dlgSignature( QWidget* parent, CardInformation& CI_Data)  
     34dlgSignature::dlgSignature( QWidget* parent, CardInformation& CI_Data) 
    3235    : QDialog(parent) 
    3336    , m_CI_Data(CI_Data) 
     
    3942 
    4043                //Set icon 
    41                 //const QIcon Ico = QIcon( ":/images/Images/Icons/Print.png" ); 
    42                 //this->setWindowIcon( Ico ); 
     44                const QIcon Ico = QIcon( ":/images/Images/Icons/ICO_CARD_EID_PLAIN_16x16.png" ); 
     45                this->setWindowIcon( Ico ); 
    4346 
    4447                QDesktopWidget* desktop = QApplication::desktop(); 
     
    7275{ 
    7376        QStringList fileselect; 
    74         QString defaultfilepath; 
    75  
    76         defaultfilepath = QDir::homePath(); 
    77         fileselect = QFileDialog::getOpenFileNames(this, tr("Select File(s)"), defaultfilepath, NULL); 
     77        QString defaultopenfilepath; 
     78 
     79        defaultopenfilepath = QDir::homePath(); 
     80        fileselect = QFileDialog::getOpenFileNames(this, tr("Select File(s)"), defaultopenfilepath, NULL); 
    7881        QCoreApplication::processEvents(); 
    7982 
     
    8386void dlgSignature::SignListView (QStringList list) 
    8487{ 
    85         QListView *view = ui.listView; 
     88        view = ui.listView; 
    8689        QStringListModel* localModel = new QStringListModel(); 
    8790 
     
    9093        localModel->setStringList(alist); 
    9194        view->setModel(localModel); 
     95 
     96        //Enable sign button now that we have data 
     97        if (!alist.isEmpty()) 
     98                ui.pbSign->setEnabled(true); 
    9299 
    93100        //signal right click 
     
    99106{ 
    100107        std::cout << "remove from view" << std::endl; 
    101         QModelIndex index = ui.listView->currentIndex(); 
     108        /*QModelIndex index = ui.listView->currentIndex(); 
    102109        int row = index.row(); 
    103110        int count = 1; 
    104111 
    105112        ui.listView->model()->removeRows( 1, count, index ); 
    106         ui.listView->repaint(); 
     113        ui.listView->repaint();*/ 
     114 
     115        QModelIndexList indexes = ui.listView->selectionModel()->selectedIndexes(); 
     116        while(indexes.size()) { 
     117                ui.listView->model()->removeRow(indexes.first().row()); 
     118                indexes = ui.listView->selectionModel()->selectedIndexes(); 
     119        } 
     120        //ui.listView->repaint(); 
    107121} 
    108122 
     
    134148void dlgSignature::on_pbSign_clicked ( void ) 
    135149{ 
    136         QListView *view = ui.listView; 
    137         QStringList selectfiles ; 
    138  
    139150        QAbstractItemModel* model = view->model() ; 
     151        QStringList strlist; 
    140152 
    141153        for ( int i = 0 ; i < model->rowCount() ; ++i ) 
    142154        { 
    143155                // Get item at row i, col 0. 
    144                 selectfiles << model->index( i, 0 ).data( Qt::DisplayRole ).toString() ; 
    145         } 
    146  
    147         //See result 1 element of Qlistview 
    148         QString myString = selectfiles.at(1); 
    149         std::cout << "strings " << myString.toStdString() << std::endl; 
    150 } 
     156                strlist << model->index( i, 0 ).data( Qt::DisplayRole ).toString() ; 
     157        } 
     158 
     159        try 
     160        { 
     161            int i; 
     162            int listsize = strlist.count(); 
     163            char *cpychar; 
     164            const char **files_to_sign = new const char*[listsize]; 
     165                        char *output_file; 
     166 
     167            for (i=0; i < listsize; i++) 
     168            { 
     169                int listtotalLength = strlist.at(i).size(); 
     170                QString s = QDir::toNativeSeparators(strlist.at(i)); 
     171                cpychar = new char[listtotalLength+1]; 
     172#ifdef WIN32             
     173                strcpy(cpychar, s.toStdString().c_str()); 
     174#else            
     175                strcpy(cpychar, s.toUtf8().constData()); 
     176#endif           
     177                files_to_sign[i] = cpychar; 
     178                                PTEID_LOG(PTEID_LOG_LEVEL_DEBUG, "eidgui", "File to Sign: %s", files_to_sign[i]); 
     179            } 
     180 
     181            QString defaultsavefilepath; 
     182            QString savefilepath; 
     183            QString nativedafaultpath; 
     184 
     185            defaultsavefilepath = QDir::homePath(); 
     186            defaultsavefilepath.append("/xadessign.zip"); 
     187            nativedafaultpath = QDir::toNativeSeparators(defaultsavefilepath); 
     188            savefilepath = QFileDialog::getSaveFileName(this, tr("Save File"), nativedafaultpath, tr("Zip files 'XAdES' (*.zip)")); 
     189            QString native_path = QDir::toNativeSeparators(savefilepath); 
     190 
     191            pdialog = new QProgressDialog(); 
     192            pdialog->setWindowModality(Qt::WindowModal); 
     193            pdialog->setWindowTitle(tr("Sign")); 
     194            pdialog->setLabelText(tr("Signing data...")); 
     195            pdialog->setMinimum(0); 
     196            pdialog->setMaximum(0); 
     197            connect(&this->FutureWatcher, SIGNAL(finished()), pdialog, SLOT(cancel())); 
     198 
     199            int outp_len = native_path.size(); 
     200             
     201 
     202#ifdef WIN32             
     203            size_t len_2 = strlen(native_path.toStdString().c_str()); 
     204                output_file = new char[len_2+1]; 
     205                strcpy(output_file,(char*)native_path.toStdString().c_str()); 
     206#else 
     207                output_file =  new char[outp_len*2]; 
     208            strncpy(output_file, native_path.toUtf8().constData(), outp_len*2); 
     209#endif       
     210            PTEID_LOG(PTEID_LOG_LEVEL_DEBUG, "eidgui", "Save to file %s", output_file); 
     211            QFuture<void> future = QtConcurrent::run(this, &dlgSignature::runsign, files_to_sign, i, output_file); 
     212            this->FutureWatcher.setFuture(future); 
     213 
     214            pdialog->exec(); 
     215 
     216            delete []files_to_sign; 
     217            delete cpychar; 
     218            delete []output_file; 
     219        } 
     220        catch (PTEID_Exception &e) 
     221        { 
     222            QString msg(tr("General exception")); 
     223            return; 
     224        } 
     225 
     226        this->close(); 
     227} 
     228 
     229void dlgSignature::runsign(const char ** paths, unsigned int n_paths, const char *output_path) 
     230{ 
     231    unsigned long       ReaderStartIdx = 1; 
     232    bool                bRefresh = false; 
     233    //unsigned long     ReaderEndIdx   = ReaderSet.readerCount(bRefresh); 
     234    unsigned long       ReaderIdx          = 0; 
     235 
     236    try 
     237    { 
     238            PTEID_EIDCard*      Card = dynamic_cast<PTEID_EIDCard*>(m_CI_Data.m_pCard); 
     239            PTEID_ByteArray SignXades; 
     240            SignXades = Card->SignXades(paths, n_paths, output_path); 
     241         
     242    } 
     243    catch (PTEID_Exception &e) 
     244    { 
     245        QString msg(tr("General exception")); 
     246        return; 
     247    } 
     248 
     249    //pdialog->close(); 
     250 
     251    return; 
     252} 
  • middleware-offline/trunk/_src/eidmw/eidgui/dlgsignature.h

    r34 r35  
    3333 
    3434private slots: 
    35         void on_pbCancel_clicked ( void ); 
    36         void on_pbAddFiles_clicked ( void ); 
    37         void on_pbSign_clicked ( void ); 
     35    void on_pbCancel_clicked ( void ); 
     36    void on_pbAddFiles_clicked ( void ); 
     37    void on_pbSign_clicked ( void ); 
    3838    void RemoveFromView(); 
    3939    void ShowContextMenu(const QPoint& pos); 
     
    4848    QString m_CurrReaderName;//!< the current reader we're using 
    4949    QStringList alist; 
     50    QListView *view; 
     51    QProgressDialog *pdialog; 
     52    QFutureWatcher<void> FutureWatcher; 
    5053 
    5154    void SignListView (QStringList list); 
     55    void runsign(const char ** paths, unsigned int n_paths, const char *output_path); 
    5256 
    5357}; 
  • middleware-offline/trunk/_src/eidmw/eidgui/eidgui.pro

    r34 r35  
    136136           qtsingleapplication.h \ 
    137137           dlgprint.h \ 
     138           dlgverifysignature.h \ 
    138139           dlgsignature.h \ 
    139140           ../_Builds/pteidversions.h \ 
    140141           ../dialogs/dialogs.h  
    141142            
    142 FORMS += dlgAbout.ui dlgOptions.ui mainwnd.ui picturepopup.ui dlgPrint.ui dlgSignature.ui 
     143FORMS += dlgAbout.ui dlgOptions.ui mainwnd.ui picturepopup.ui dlgPrint.ui dlgSignature.ui dlgVerifySignature.ui 
    143144 
    144145SOURCES += CardInformation.cpp \ 
     
    150151           mainwnd.cpp \ 
    151152           dlgprint.cpp \ 
     153           dlgverifysignature.cpp \ 
    152154           dlgsignature.cpp \ 
    153155           picturepopup.cpp \ 
  • middleware-offline/trunk/_src/eidmw/eidgui/httpwindow.cpp

    r34 r35  
    234234        //TODO: Verificar a path do msi em Windows 
    235235        //C:\\Users\\Luis\\AppData\\Local\\Temp\\PteidMW35-Basic-en.msi 
    236         winpath.append(pkgpath); 
     236    QString s = QDir::toNativeSeparators(QString::fromStdString(pkgpath)); 
     237    winpath.append(s.toStdString()); 
    237238        CreateProcess(NULL, LPTSTR(winpath.c_str()), NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi); 
    238239        exit(0); 
  • middleware-offline/trunk/_src/eidmw/eidgui/mainwnd.cpp

    r34 r35  
    3636#include "dlgAbout.h" 
    3737#include "dlgprint.h" 
     38#include "dlgverifysignature.h" 
    3839#include "dlgsignature.h" 
    3940#include "dlgOptions.h" 
     
    239240        m_ui.lbl_menuTools_Parameters->installEventFilter(this); 
    240241        m_ui.lbl_menuTools_Signature->installEventFilter(this); 
     242        m_ui.lbl_menuTools_VerifySignature->installEventFilter(this); 
    241243        m_ui.lbl_menuLanguage_Portuguese->installEventFilter(this); 
    242244        m_ui.lbl_menuLanguage_English->installEventFilter(this); 
     
    288290                } 
    289291 
     292                if (object == m_ui.lbl_menuTools_VerifySignature ) 
     293                { 
     294                        hide_submenus(); 
     295                        actionVerifySignature_eID_triggered(); 
     296                } 
     297 
    290298                if (object == m_ui.lbl_menuLanguage_Portuguese ) 
    291299                { 
     
    376384{ 
    377385        m_ui.wdg_submenu_tools->setVisible(true); 
    378         m_ui.wdg_submenu_tools->setGeometry(128,4,126,100); 
     386        m_ui.wdg_submenu_tools->setGeometry(128,4,126,110); 
    379387} 
    380388 
     
    23752383                dlgsig->exec(); 
    23762384                delete dlgsig; 
    2377         } 
     2385        } else { 
     2386                std::string Pmsgcaption = "Aviso"; 
     2387                std::string Pmsgbody = "Ocorreu um problema a ler os dados do seu cartão tente novamente"; 
     2388                QMessageBox msgBoxp(QMessageBox::Warning, QString::fromUtf8(Pmsgcaption.c_str()), QString::fromUtf8(Pmsgbody.c_str()), 0, this); 
     2389                msgBoxp.exec(); 
     2390        } 
     2391} 
     2392 
     2393//***************************************************** 
     2394// VerifySignature clicked 
     2395//***************************************************** 
     2396void MainWnd::actionVerifySignature_eID_triggered() 
     2397{ 
     2398    dlgVerifySignature* dlgversig = new dlgVerifySignature( this); 
     2399    dlgversig->exec(); 
     2400    delete dlgversig; 
    23782401} 
    23792402 
     
    35923615                authPINRequest_triggered(); 
    35933616 
    3594         if (pinNotes == 0) 
    3595         { 
    3596                 const PTEID_ByteArray oData(reinterpret_cast<const unsigned char*> (TxtPersoDataString.toStdString().c_str()), TxtPersoDataString.toStdString().size()); 
    3597                 Card.writeFile(PersoDataFile.c_str(), oData, &Pin, Misc.c_str()); 
    3598                 QMessageBox::information( this, "Notas Pessais",  "Notas pessoais escritas com sucesso!", QMessageBox::Ok ); 
     3617    if (pinNotes == 0) 
     3618    { 
     3619        try { 
     3620 
     3621            const PTEID_ByteArray oData(reinterpret_cast<const unsigned char*> (TxtPersoDataString.toStdString().c_str()), TxtPersoDataString.toStdString().size()); 
     3622            Card.writeFile(PersoDataFile.c_str(), oData, &Pin, Misc.c_str()); 
     3623            QMessageBox::information( this, tr("Notas Pessais"),  tr("Notas pessoais escritas com sucesso!"), QMessageBox::Ok ); 
     3624        } catch (PTEID_Exception& e) { 
     3625            QMessageBox::critical(this, tr("Notas Pessais"), tr("Erro ao escrever notas pessoais!"), QMessageBox::Ok ); 
     3626        } 
    35993627        } 
    36003628 
     
    41214149                        try 
    41224150                        { 
     4151 
    41234152                                if (!m_Pop) 
    41244153                                { 
  • middleware-offline/trunk/_src/eidmw/eidgui/mainwnd.h

    r34 r35  
    215215        void on_actionPrint_eID_triggered( void ); 
    216216        void actionSignature_eID_triggered( void ); 
     217        void actionVerifySignature_eID_triggered( void ); 
    217218        void on_actionPrinter_Settings_triggered( void ); 
    218219        void on_actionPINRequest_triggered( void ); 
  • middleware-offline/trunk/_src/eidmw/eidgui/mainwnd.ui

    r34 r35  
    21262126      <rect> 
    21272127       <x>15</x> 
    2128        <y>70</y> 
     2128       <y>65</y> 
    21292129       <width>81</width> 
    21302130       <height>17</height> 
     
    21382138     <property name="text"> 
    21392139      <string>» Signature</string> 
     2140     </property> 
     2141    </widget> 
     2142    <widget class="QLabel" name="lbl_menuTools_VerifySignature"> 
     2143     <property name="geometry"> 
     2144      <rect> 
     2145       <x>15</x> 
     2146       <y>85</y> 
     2147       <width>111</width> 
     2148       <height>17</height> 
     2149      </rect> 
     2150     </property> 
     2151     <property name="styleSheet"> 
     2152      <string notr="true">background-image: url(:/images/Images/alpha.png); 
     2153color: rgb(108, 108, 108); 
     2154font: 10pt &quot;Arial&quot;;</string> 
     2155     </property> 
     2156     <property name="text"> 
     2157      <string>» Verify Signature</string> 
    21402158     </property> 
    21412159    </widget> 
  • middleware-offline/trunk/_src/eidmw/eidgui/pteid35gui.vcproj

    r34 r35  
    150150                                AdditionalOptions="-Zm200 -w34100 -w34189 -Zm200 -w34100 -w34189 -w34100 -w34189" 
    151151                                Optimization="2" 
    152                                 AdditionalIncludeDirectories="&quot;.\GeneratedFiles\$(ConfigurationName)&quot;;&quot;..\common&quot;;&quot;..\eidlib&quot;;&quot;$(QTDIR)\include&quot;;&quot;$(QTDIR)\include\QtCore&quot;;&quot;$(QTDIR)\include\QtNetwork&quot;;&quot;$(QTDIR)\include\QtGui&quot;;C:\gtk+-bundle_2.24.8-20111122_win32\include" 
     152                                AdditionalIncludeDirectories="&quot;.\GeneratedFiles\$(ConfigurationName)&quot;;..\common;..\eidlib;&quot;$(PTEID_DIR_QT_450_INCLUDE)\include\&quot;;&quot;$(PTEID_DIR_QT_450_INCLUDE)\include\QtCore&quot;;&quot;$(PTEID_DIR_QT_450_INCLUDE)\include\QtNetwork&quot;;..\..\ThirdParty\cairo\include;&quot;$(PTEID_DIR_QT_450_INCLUDE)\include\QtGui&quot;;&quot;C:\gtk+-bundle_2.24.8-20111122_win32\include&quot;" 
    153153                                PreprocessorDefinitions="PTEID_35;QT_NO_DEBUG;NDEBUG;_WINDOWS;WIN32;QT_LARGEFILE_SUPPORT;QT_DLL;QT_GUI_LIB;QT_CORE_LIB;QT_THREAD_SUPPORT" 
    154154                                GeneratePreprocessedFile="0" 
     
    447447                        </File> 
    448448                        <File 
     449                                RelativePath=".\dlgverifysignature.cpp" 
     450                                > 
     451                        </File> 
     452                        <File 
    449453                                RelativePath=".\genpur.cpp" 
    450454                                > 
     
    777781                        </File> 
    778782                        <File 
     783                                RelativePath=".\dlgverifysignature.h" 
     784                                > 
     785                                <FileConfiguration 
     786                                        Name="Debug|Win32" 
     787                                        > 
     788                                        <Tool 
     789                                                Name="VCCustomBuildTool" 
     790                                                Description="Moc&apos;ing $(InputPath)..." 
     791                                                CommandLine="call ..\SetPathQt450_Exe&#x0D;&#x0A;call ..\SetPathQt450_Include&#x0D;&#x0A;&quot;%PTEID_DIR_QT_450_EXE%\bin\moc.exe&quot;  -DPTEID_35 -D_WINDOWS -DWIN32 -DQT_LARGEFILE_SUPPORT -DQT_DLL -DQT_GUI_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT -I&quot;.\GeneratedFiles\$(ConfigurationName)&quot; -I&quot;.\..\eidlib&quot; -I&quot;%PTEID_DIR_QT_450_INCLUDE%\include&quot; -I&quot;%PTEID_DIR_QT_450_INCLUDE%\include\QtCore&quot; -I&quot;%PTEID_DIR_QT_450_INCLUDE%\include\QtGui&quot; &quot;$(InputName).h&quot; -o &quot;.\GeneratedFiles\$(ConfigurationName)\moc_$(InputName).cpp&quot;&#x0D;&#x0A;" 
     792                                                AdditionalDependencies="" 
     793                                                Outputs="&quot;.\GeneratedFiles\$(ConfigurationName)\moc_$(InputName).cpp&quot;" 
     794                                        /> 
     795                                </FileConfiguration> 
     796                                <FileConfiguration 
     797                                        Name="Release|Win32" 
     798                                        > 
     799                                        <Tool 
     800                                                Name="VCCustomBuildTool" 
     801                                                Description="Moc&apos;ing $(InputPath)..." 
     802                                                CommandLine="call ..\SetPathQt450_Exe&#x0D;&#x0A;call ..\SetPathQt450_Include&#x0D;&#x0A;&quot;%PTEID_DIR_QT_450_EXE%\bin\moc.exe&quot;  -DPTEID_35 -DQT_NO_DEBUG -DNDEBUG -D_WINDOWS -DWIN32 -DQT_LARGEFILE_SUPPORT -DQT_DLL -DQT_GUI_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT -I&quot;.\GeneratedFiles\$(ConfigurationName)&quot; -I&quot;.\..\eidlib&quot; -I&quot;%PTEID_DIR_QT_450_INCLUDE%\include&quot; -I&quot;%PTEID_DIR_QT_450_INCLUDE%\include\QtCore&quot; -I&quot;%PTEID_DIR_QT_450_INCLUDE%\include\QtGui&quot; &quot;$(InputName).h&quot; -o &quot;.\GeneratedFiles\$(ConfigurationName)\moc_$(InputName).cpp&quot;&#x0D;&#x0A;" 
     803                                                AdditionalDependencies="" 
     804                                                Outputs="&quot;.\GeneratedFiles\$(ConfigurationName)\moc_$(InputName).cpp&quot;" 
     805                                        /> 
     806                                </FileConfiguration> 
     807                                <FileConfiguration 
     808                                        Name="Debug|x64" 
     809                                        > 
     810                                        <Tool 
     811                                                Name="VCCustomBuildTool" 
     812                                                Description="Moc&apos;ing $(InputPath)..." 
     813                                                CommandLine="call ..\SetPathQt450_Exe&#x0D;&#x0A;call ..\SetPathQt450_Include&#x0D;&#x0A;&quot;%PTEID_DIR_QT_450_EXE%\bin\moc.exe&quot;  -DPTEID_35 -D_WINDOWS -DWIN32 -DQT_LARGEFILE_SUPPORT -DQT_DLL -DQT_GUI_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT -I&quot;.\GeneratedFiles\$(ConfigurationName)&quot; -I&quot;.\..\eidlib&quot; -I&quot;%PTEID_DIR_QT_450_INCLUDE%\include&quot; -I&quot;%PTEID_DIR_QT_450_INCLUDE%\include\QtCore&quot; -I&quot;%PTEID_DIR_QT_450_INCLUDE%\include\QtGui&quot; &quot;$(InputName).h&quot; -o &quot;.\GeneratedFiles\$(ConfigurationName)\moc_$(InputName).cpp&quot;&#x0D;&#x0A;" 
     814                                                AdditionalDependencies="" 
     815                                                Outputs="&quot;.\GeneratedFiles\$(ConfigurationName)\moc_$(InputName).cpp&quot;" 
     816                                        /> 
     817                                </FileConfiguration> 
     818                                <FileConfiguration 
     819                                        Name="Release|x64" 
     820                                        > 
     821                                        <Tool 
     822                                                Name="VCCustomBuildTool" 
     823                                                Description="Moc&apos;ing $(InputPath)..." 
     824                                                CommandLine="call ..\SetPathQt450_Exe&#x0D;&#x0A;call ..\SetPathQt450_Include&#x0D;&#x0A;&quot;%PTEID_DIR_QT_450_EXE%\bin\moc.exe&quot;  -DPTEID_35 -DQT_NO_DEBUG -DNDEBUG -D_WINDOWS -DWIN32 -DQT_LARGEFILE_SUPPORT -DQT_DLL -DQT_GUI_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT -I&quot;.\GeneratedFiles\$(ConfigurationName)&quot; -I&quot;.\..\eidlib&quot; -I&quot;%PTEID_DIR_QT_450_INCLUDE%\include&quot; -I&quot;%PTEID_DIR_QT_450_INCLUDE%\include\QtCore&quot; -I&quot;%PTEID_DIR_QT_450_INCLUDE%\include\QtGui&quot; &quot;$(InputName).h&quot; -o &quot;.\GeneratedFiles\$(ConfigurationName)\moc_$(InputName).cpp&quot;&#x0D;&#x0A;" 
     825                                                AdditionalDependencies="" 
     826                                                Outputs="&quot;.\GeneratedFiles\$(ConfigurationName)\moc_$(InputName).cpp&quot;" 
     827                                        /> 
     828                                </FileConfiguration> 
     829                        </File> 
     830                        <File 
    779831                                RelativePath=".\genpur.h" 
    780832                                > 
     
    11891241                        </File> 
    11901242                        <File 
    1191                                 RelativePath=".\GeneratedFiles\debug\moc_dlgprint.cpp" 
    1192                                 > 
    1193                                 <FileConfiguration 
    1194                                         Name="Release|Win32" 
    1195                                         ExcludedFromBuild="true" 
    1196                                         > 
    1197                                         <Tool 
    1198                                                 Name="VCCLCompilerTool" 
    1199                                         /> 
    1200                                 </FileConfiguration> 
    1201                                 <FileConfiguration 
    1202                                         Name="Release|x64" 
    1203                                         ExcludedFromBuild="true" 
    1204                                         > 
    1205                                         <Tool 
    1206                                                 Name="VCCLCompilerTool" 
    1207                                         /> 
    1208                                 </FileConfiguration> 
    1209                         </File> 
    1210                         <File 
    12111243                                RelativePath=".\GeneratedFiles\release\moc_dlgprint.cpp" 
    12121244                                > 
     
    12511283                        </File> 
    12521284                        <File 
     1285                                RelativePath=".\GeneratedFiles\debug\moc_dlgprint.cpp" 
     1286                                > 
     1287                                <FileConfiguration 
     1288                                        Name="Release|Win32" 
     1289                                        ExcludedFromBuild="true" 
     1290                                        > 
     1291                                        <Tool 
     1292                                                Name="VCCLCompilerTool" 
     1293                                        /> 
     1294                                </FileConfiguration> 
     1295                                <FileConfiguration 
     1296                                        Name="Release|x64" 
     1297                                        ExcludedFromBuild="true" 
     1298                                        > 
     1299                                        <Tool 
     1300                                                Name="VCCLCompilerTool" 
     1301                                        /> 
     1302                                </FileConfiguration> 
     1303                        </File> 
     1304                        <File 
    12531305                                RelativePath=".\generatedfiles\release\moc_dlgsignature.cpp" 
     1306                                > 
     1307                        </File> 
     1308                        <File 
     1309                                RelativePath=".\generatedfiles\release\moc_dlgverifysignature.cpp" 
    12541310                                > 
    12551311                        </File> 
     
    13831439                        </File> 
    13841440                        <File 
    1385                                 RelativePath=".\GeneratedFiles\debug\moc_qtsingleapplication.cpp" 
    1386                                 > 
    1387                                 <FileConfiguration 
    1388                                         Name="Release|Win32" 
    1389                                         ExcludedFromBuild="true" 
    1390                                         > 
    1391                                         <Tool 
    1392                                                 Name="VCCLCompilerTool" 
    1393                                         /> 
    1394                                 </FileConfiguration> 
    1395                                 <FileConfiguration 
    1396                                         Name="Release|x64" 
    1397                                         ExcludedFromBuild="true" 
    1398                                         > 
    1399                                         <Tool 
    1400                                                 Name="VCCLCompilerTool" 
    1401                                         /> 
    1402                                 </FileConfiguration> 
    1403                         </File> 
    1404                         <File 
    14051441                                RelativePath=".\GeneratedFiles\release\moc_qtsingleapplication.cpp" 
    14061442                                > 
     
    14451481                        </File> 
    14461482                        <File 
     1483                                RelativePath=".\GeneratedFiles\debug\moc_qtsingleapplication.cpp" 
     1484                                > 
     1485                                <FileConfiguration 
     1486                                        Name="Release|Win32" 
     1487                                        ExcludedFromBuild="true" 
     1488                                        > 
     1489                                        <Tool 
     1490                                                Name="VCCLCompilerTool" 
     1491                                        /> 
     1492                                </FileConfiguration> 
     1493                                <FileConfiguration 
     1494                                        Name="Release|x64" 
     1495                                        ExcludedFromBuild="true" 
     1496                                        > 
     1497                                        <Tool 
     1498                                                Name="VCCLCompilerTool" 
     1499                                        /> 
     1500                                </FileConfiguration> 
     1501                        </File> 
     1502                        <File 
    14471503                                RelativePath=".\generatedfiles\debug\qrc_eidgui.cpp" 
    14481504                                > 
     
    15071563                        </File> 
    15081564                        <File 
     1565                                RelativePath=".\generatedfiles\debug\ui_dlgAbout.h" 
     1566                                > 
     1567                                <FileConfiguration 
     1568                                        Name="Debug|Win32" 
     1569                                        > 
     1570                                        <Tool 
     1571                                                Name="VCCustomBuildTool" 
     1572                                                Description="Performing Custom Build Step" 
     1573                                                CommandLine="" 
     1574                                                AdditionalDependencies="" 
     1575                                                Outputs="" 
     1576                                        /> 
     1577                                </FileConfiguration> 
     1578                                <FileConfiguration 
     1579                                        Name="Release|Win32" 
     1580                                        ExcludedFromBuild="true" 
     1581                                        > 
     1582                                        <Tool 
     1583                                                Name="VCCustomBuildTool" 
     1584                                                Description="Performing Custom Build Step" 
     1585                                                CommandLine="" 
     1586                                                AdditionalDependencies="" 
     1587                                                Outputs="" 
     1588                                        /> 
     1589                                </FileConfiguration> 
     1590                                <FileConfiguration 
     1591                                        Name="Release|x64" 
     1592                                        ExcludedFromBuild="true" 
     1593                                        > 
     1594                                        <Tool 
     1595                                                Name="VCCustomBuildTool" 
     1596                                        /> 
     1597                                </FileConfiguration> 
     1598                        </File> 
     1599                        <File 
    15091600                                RelativePath=".\generatedfiles\release\ui_dlgAbout.h" 
    15101601                                > 
     
    15421633                        </File> 
    15431634                        <File 
    1544                                 RelativePath=".\generatedfiles\debug\ui_dlgAbout.h" 
     1635                                RelativePath=".\generatedfiles\release\ui_dlgOptions.h" 
     1636                                > 
     1637                                <FileConfiguration 
     1638                                        Name="Debug|Win32" 
     1639                                        ExcludedFromBuild="true" 
     1640                                        > 
     1641                                        <Tool 
     1642                                                Name="VCCustomBuildTool" 
     1643                                                Description="Performing Custom Build Step" 
     1644                                                CommandLine="" 
     1645                                                AdditionalDependencies="" 
     1646                                                Outputs="" 
     1647                                        /> 
     1648                                </FileConfiguration> 
     1649                                <FileConfiguration 
     1650                                        Name="Release|Win32" 
     1651                                        > 
     1652                                        <Tool 
     1653                                                Name="VCCustomBuildTool" 
     1654                                                Description="Performing Custom Build Step" 
     1655                                                CommandLine="" 
     1656                                                AdditionalDependencies="" 
     1657                                                Outputs="" 
     1658                                        /> 
     1659                                </FileConfiguration> 
     1660                                <FileConfiguration 
     1661                                        Name="Debug|x64" 
     1662                                        ExcludedFromBuild="true" 
     1663                                        > 
     1664                                        <Tool 
     1665                                                Name="VCCustomBuildTool" 
     1666                                        /> 
     1667                                </FileConfiguration> 
     1668                        </File> 
     1669                        <File 
     1670                                RelativePath=".\generatedfiles\debug\ui_dlgOptions.h" 
    15451671                                > 
    15461672                                <FileConfiguration 
     
    15771703                        </File> 
    15781704                        <File 
    1579                                 RelativePath=".\generatedfiles\release\ui_dlgOptions.h" 
     1705                                RelativePath=".\generatedfiles\release\ui_dlgPrint.h" 
    15801706                                > 
    15811707                                <FileConfiguration 
     
    16121738                        </File> 
    16131739                        <File 
    1614                                 RelativePath=".\generatedfiles\debug\ui_dlgOptions.h" 
     1740                                RelativePath=".\generatedfiles\debug\ui_dlgPrint.h" 
    16151741                                > 
    16161742                                <FileConfiguration 
     
    16471773                        </File> 
    16481774                        <File 
    1649                                 RelativePath=".\generatedfiles\release\ui_dlgPrint.h" 
    1650                                 > 
    1651                                 <FileConfiguration 
    1652                                         Name="Debug|Win32" 
    1653                                         ExcludedFromBuild="true" 
    1654                                         > 
    1655                                         <Tool 
    1656                                                 Name="VCCustomBuildTool" 
    1657                                                 Description="Performing Custom Build Step" 
    1658                                                 CommandLine="" 
    1659                                                 AdditionalDependencies="" 
    1660                                                 Outputs="" 
    1661                                         /> 
    1662                                 </FileConfiguration> 
    1663                                 <FileConfiguration 
    1664                                         Name="Release|Win32" 
    1665                                         > 
    1666                                         <Tool 
    1667                                                 Name="VCCustomBuildTool" 
    1668                                                 Description="Performing Custom Build Step" 
    1669                                                 CommandLine="" 
    1670                                                 AdditionalDependencies="" 
    1671                                                 Outputs="" 
    1672                                         /> 
    1673                                 </FileConfiguration> 
    1674                                 <FileConfiguration 
    1675                                         Name="Debug|x64" 
    1676                                         ExcludedFromBuild="true" 
    1677                                         > 
    1678                                         <Tool 
    1679                                                 Name="VCCustomBuildTool" 
    1680                                         /> 
    1681                                 </FileConfiguration> 
    1682                         </File> 
    1683                         <File 
    1684                                 RelativePath=".\generatedfiles\debug\ui_dlgPrint.h" 
    1685                                 > 
    1686                                 <FileConfiguration 
    1687                                         Name="Debug|Win32" 
    1688                                         > 
    1689                                         <Tool 
    1690                                                 Name="VCCustomBuildTool" 
    1691                                                 Description="Performing Custom Build Step" 
    1692                                                 CommandLine="" 
    1693                                                 AdditionalDependencies="" 
    1694                                                 Outputs="" 
    1695                                         /> 
    1696                                 </FileConfiguration> 
    1697                                 <FileConfiguration 
    1698                                         Name="Release|Win32" 
    1699                                         ExcludedFromBuild="true" 
    1700                                         > 
    1701                                         <Tool 
    1702                                                 Name="VCCustomBuildTool" 
    1703                                                 Description="Performing Custom Build Step" 
    1704                                                 CommandLine="" 
    1705                                                 AdditionalDependencies="" 
    1706                                                 Outputs="" 
    1707                                         /> 
    1708                                 </FileConfiguration> 
    1709                                 <FileConfiguration 
    1710                                         Name="Release|x64" 
    1711                                         ExcludedFromBuild="true" 
    1712                                         > 
    1713                                         <Tool 
    1714                                                 Name="VCCustomBuildTool" 
    1715                                         /> 
    1716                                 </FileConfiguration> 
     1775                                RelativePath=".\generatedfiles\release\ui_dlgSignature.h" 
     1776                                > 
     1777                        </File> 
     1778                        <File 
     1779                                RelativePath=".\generatedfiles\release\ui_dlgVerifySignature.h" 
     1780                                > 
    17171781                        </File> 
    17181782                        <File 
     
    20092073                        <File 
    20102074                                RelativePath=".\dlgSignature.ui" 
     2075                                > 
     2076                                <FileConfiguration 
     2077                                        Name="Debug|Win32" 
     2078                                        > 
     2079                                        <Tool 
     2080                                                Name="VCCustomBuildTool" 
     2081                                                Description="Uic&apos;ing $(InputPath)..." 
     2082                                                CommandLine="call ..\SetPathQt450_Exe&#x0D;&#x0A;&quot;%PTEID_DIR_QT_450_EXE%\bin\uic.exe&quot; -o &quot;.\GeneratedFiles\$(ConfigurationName)\ui_$(InputName).h&quot; &quot;$(InputPath)&quot;&#x0D;&#x0A;" 
     2083                                                AdditionalDependencies="" 
     2084                                                Outputs="&quot;.\GeneratedFiles\$(ConfigurationName)\ui_$(InputName).h&quot;" 
     2085                                        /> 
     2086                                </FileConfiguration> 
     2087                                <FileConfiguration 
     2088                                        Name="Release|Win32" 
     2089                                        > 
     2090                                        <Tool 
     2091                                                Name="VCCustomBuildTool" 
     2092                                                Description="Uic&apos;ing $(InputPath)..." 
     2093                                                CommandLine="call ..\SetPathQt450_Exe&#x0D;&#x0A;&quot;%PTEID_DIR_QT_450_EXE%\bin\uic.exe&quot; -o &quot;.\GeneratedFiles\$(ConfigurationName)\ui_$(InputName).h&quot; &quot;$(InputPath)&quot;&#x0D;&#x0A;" 
     2094                                                AdditionalDependencies="" 
     2095                                                Outputs="&quot;.\GeneratedFiles\$(ConfigurationName)\ui_$(InputName).h&quot;" 
     2096                                        /> 
     2097                                </FileConfiguration> 
     2098                                <FileConfiguration 
     2099                                        Name="Debug|x64" 
     2100                                        > 
     2101                                        <Tool 
     2102                                                Name="VCCustomBuildTool" 
     2103                                                Description="Uic&apos;ing $(InputPath)..." 
     2104                                                CommandLine="call ..\SetPathQt450_Exe&#x0D;&#x0A;&quot;%PTEID_DIR_QT_450_EXE%\bin\uic.exe&quot; -o &quot;.\GeneratedFiles\$(ConfigurationName)\ui_$(InputName).h&quot; &quot;$(InputPath)&quot;&#x0D;&#x0A;" 
     2105                                                AdditionalDependencies="" 
     2106                                                Outputs="&quot;.\GeneratedFiles\$(ConfigurationName)\ui_$(InputName).h&quot;" 
     2107                                        /> 
     2108                                </FileConfiguration> 
     2109                                <FileConfiguration 
     2110                                        Name="Release|x64" 
     2111                                        > 
     2112                                        <Tool 
     2113                                                Name="VCCustomBuildTool" 
     2114                                                Description="Uic&apos;ing $(InputPath)..." 
     2115                                                CommandLine="call ..\SetPathQt450_Exe&#x0D;&#x0A;&quot;%PTEID_DIR_QT_450_EXE%\bin\uic.exe&quot; -o &quot;.\GeneratedFiles\$(ConfigurationName)\ui_$(InputName).h&quot; &quot;$(InputPath)&quot;&#x0D;&#x0A;" 
     2116                                                AdditionalDependencies="" 
     2117                                                Outputs="&quot;.\GeneratedFiles\$(ConfigurationName)\ui_$(InputName).h&quot;" 
     2118                                        /> 
     2119                                </FileConfiguration> 
     2120                        </File> 
     2121                        <File 
     2122                                RelativePath=".\dlgVerifySignature.ui" 
    20112123                                > 
    20122124                                <FileConfiguration 
  • middleware-offline/trunk/_src/eidmw/eidlib/eidlib.h

    r34 r35  
    705705        PTEIDSDK_API PTEID_Certificate &getAuthentication();            /**< Return the authentication certificate from the card */ 
    706706 
    707         PTEIDSDK_API PTEID_PublicKey& getRootCAPubKey();                                                /**< Get the CVC CA public key that this card uses to verify the CVC key */ 
     707        PTEIDSDK_API PTEID_PublicKey& getRootCAPubKey();                /**< Get the CVC CA public key that this card uses to verify the CVC key */ 
    708708        PTEIDSDK_API bool isActive(); 
    709         PTEIDSDK_API void doSODCheck(bool check);                                                               /**< enable/disable the checking of the data against the sod*/ 
    710         PTEIDSDK_API bool Activate(const char *pinCode, CByteArray &BCDDate);   /**< Activate the pteid card */ 
    711          
    712         /** Validates an XML-DSIG or XAdES signature 
    713          * 
    714          *  This method is intended to validate XADES signatures produced with PTEID_EIDCard::SignXades() method 
    715          *  even though any conforming signature should work 
    716          *  Implementation note: External references in the <SignedInfo> element are not checked 
    717          * 
    718          *  @param IN signature is a byte array containing the UTF-8 representation of an XML document 
    719          *  @param OUT error_buffer if not NULL should point to a preallocated char buffer that will be filled with  
    720          *  a description of eventual validation problems 
    721          *  @param IN/OUT error_size on input it should point to the size of error_buffer while on API return  
    722          *  it points to the length of the string written into error_buffer 
    723          */ 
    724         PTEIDSDK_API bool VerifySignature(PTEID_ByteArray signature, char * error_buffer, unsigned long *error_size); 
     709        PTEIDSDK_API void doSODCheck(bool check);                       /**< enable/disable the checking of the data against the sod*/ 
     710        PTEIDSDK_API bool Activate(const char *pinCode, PTEID_ByteArray &BCDDate);      /**< Activate the pteid card */ 
     711 
     712 
    725713        /** Produce Xades Signature of Arbitrary Contents (from memory or local files) 
    726          * 
    727          *  The next 4 Methods return an UTF-8 encoded byte array containing a full XAdES or XAdES-T 
    728          *  signature of the content supplied (either as pointer to a memory buffer 
    729          *  or as local file paths) signed by the Citizen Signature Key. 
    730          *  These method perform interactive PIN authentication if needed 
    731          * 
    732          *  @param IN paths is an array of null-terminated strings representing absolute paths in 
    733          *  the local filesystem. Those files content (hashed with SHA-1 algorithm) will be the input data for the RSA signature  
    734          *  @param IN n_paths is the number of elements in the paths array  
    735          */ 
    736         PTEIDSDK_API PTEID_ByteArray SignXades(const char ** paths, unsigned int n_paths); /** Return a Xades signature as a UTF-8 string (supports multiple files)*/ 
    737         PTEIDSDK_API PTEID_ByteArray SignXades(PTEID_ByteArray to_be_signed, const char *URL); /** Return a Xades signature as a UTF-8 string (supports multiple files)*/ 
    738         PTEIDSDK_API PTEID_ByteArray SignXadesT(const char ** path, unsigned int n_paths); /** Return a Xades-T signature as a UTF-8 string (supports multiple files)*/ 
    739         PTEIDSDK_API PTEID_ByteArray SignXadesT(PTEID_ByteArray to_be_signed, const char *URL); /** Return a Xades-T signature as a UTF-8 string (supports multiple files)*/ 
     714            * 
     715            *  The next 4 Methods return an UTF-8 encoded byte array containing a full XAdES or XAdES-T 
     716            *  signature of the content supplied (either as pointer to a memory buffer 
     717            *  or as local file paths) signed by the Citizen Signature Key. 
     718            *  These method perform interactive PIN authentication if needed 
     719            * 
     720            *  @param IN paths is an array of null-terminated strings representing absolute paths in 
     721            *  the local filesystem. Those files content (hashed with SHA-1 algorithm) will be the input data for the RSA signature  
     722            *  @param IN n_paths is the number of elements in the paths array  
     723            */ 
     724             PTEIDSDK_API PTEID_ByteArray SignXades(const char ** paths, unsigned int n_paths, const char *output_path); /** Return a Xades signature as a UTF-8 string (supports multiple files)*/ 
     725             PTEIDSDK_API PTEID_ByteArray SignXades(PTEID_ByteArray to_be_signed, const char *URL); /** Return a Xades signature as a UTF-8 string (supports multiple files)*/ 
     726             PTEIDSDK_API PTEID_ByteArray SignXadesT(const char ** path, unsigned int n_paths, const char *output_path); /** Return a Xades-T signature as a UTF-8 string (supports multiple files)*/ 
     727             PTEIDSDK_API PTEID_ByteArray SignXadesT(PTEID_ByteArray to_be_signed, const char *URL); /** Return a Xades-T signature as a UTF-8 string (supports multiple files)*/ 
     728 
    740729 
    741730        /** 
     
    767756}; 
    768757 
     758class PTEID_SigVerifier 
     759{ 
     760         
     761        /** Validates an XML-DSIG or XAdES signature 
     762        * 
     763        *  This method is intended to validate XADES signatures produced with PTEID_EIDCard::SignXades() method 
     764        *  even though any conforming signature should work 
     765        * 
     766        *  Implementation note: External references in the <SignedInfo> element are not checked 
     767        * 
     768        *  @param IN signature is a byte array containing the UTF-8 representation of an XML document 
     769        *  @param OUT error_buffer if not NULL should point to a preallocated char buffer that will be filled with  
     770        *  a description of eventual validation problems 
     771        *  @param IN/OUT error_size on input it should point to the size of error_buffer while on API return  
     772        *  it points to the length of the string written into error_buffer 
     773        *  @param IN/OUT error_size on input it should point to the size of error_buffer while on API return it points to the length of the string written into error_buffer 
     774        */ 
     775 
     776        public: 
     777        PTEIDSDK_API static bool VerifySignature(const char *container, char * error_buffer, unsigned long *error_size); 
     778 
     779}; 
     780 
    769781class APL_XmlUserRequestedInfo; 
    770782/******************************************************************************//** 
     
    878890        PTEIDSDK_API  virtual ~PTEID_CardVersionInfo();         /**< Destructor */ 
    879891 
    880         PTEIDSDK_API bool isActive();                                           /**< Returns the card status (true = active) */ 
    881892        PTEIDSDK_API const char *getSerialNumber();                     /**< Return the Serial Number of the card */ 
    882893    PTEIDSDK_API const char *getTokenLabel();                   /**< Return the Token Label (EFCIA 5032) */ 
     
    11261137        PTEIDSDK_API unsigned long getFlags();          /**< Get the flags of the pin */ 
    11271138        PTEIDSDK_API const char *getLabel();                    /**< Get the label of the pin */ 
    1128         PTEIDSDK_API bool unlockPin(const char *pszPuk, const char *pszNewPin, unsigned long *triesLeft); 
     1139        PTEIDSDK_API bool unlockPin(const char *pszPuk, const char *pszNewPin, unsigned long &triesLeft); 
    11291140 
    11301141        PTEIDSDK_API const PTEID_ByteArray &getSignature();     /**< Return the signature of the pin */ 
     
    13751386PTEIDSDK_API void PTEID_LOG(PTEID_LogLevel level, const char *module_name, const char *format, ...); 
    13761387 
     1388 
     1389 
     1390#if !defined SWIGJAVA && !defined SWIGCSHARP 
    13771391 
    13781392/******************************************************************************//** 
     
    18901904 
    18911905 
     1906/** 
     1907 * Send an APDU to the card, see ISO7816-4 for more info. 
     1908 * - For a case 1 APDU: ulRequestLen should be 4, ulResponseLen should be at least 2 (for SW1-SW2) 
     1909 * - For a case 2 APDU: ulRequestLen should be 5 
     1910 * - For a case 3 APDU: ucRequest[4] + 5 should equal ulRequestLen, ulResponseLen should be at least 2 (for SW1-SW2) 
     1911 * - For a case 4 APDU: ucRequest[4] + 5 should equal ucRequestLen + 1, the last by is the 'Le' value 
     1912 * If the call has been successfull, ucResponse should always contain SW1 and SW2 at the end. 
     1913 */ 
     1914PTEIDSDK_API long PTEID_SendAPDU( 
     1915        const unsigned char *ucRequest, /**<in: command APDU */ 
     1916        unsigned long ulRequestLen,     /**<in: command APDU length */ 
     1917        unsigned char *ucResponse,      /**<out: response APDU */ 
     1918        unsigned long *ulResponseLen);  /**<in/out: response APDU length */ 
     1919 
     1920#endif // !defined SWIGJAVA && !defined SWIGCSHARP 
    18921921} 
    18931922 
  • middleware-offline/trunk/_src/eidmw/eidlib/eidlib.i

    r34 r35  
    14581458          return retval; 
    14591459} 
     1460 
     1461//martinho 
     1462//-------------------------------------------------- 
     1463// rewrite the function unlockPin(...) on the Java side 
     1464//-------------------------------------------------- 
     1465%typemap(javaout) bool eIDMW::PTEID_Pin::unlockPin(const char *pszPuk, const char *pszNewPin, unsigned long &triesLeft) 
     1466{ 
     1467          long          pRemaining = pteidlibJava_WrapperJNI.new_ulongp();                              // get a C++ ptr 
     1468          boolean       retval     = pteidlibJava_WrapperJNI.PTEID_Pin_unlockPin(swigCPtr, this, pszPuk, pszNewPin, pRemaining); 
     1469           
     1470          triesLeft.m_long = pteidlibJava_WrapperJNI.ulongp_value(pRemaining); 
     1471          pteidlibJava_WrapperJNI.delete_ulongp(pRemaining); 
     1472          return retval; 
     1473} 
     1474 
    14601475  
    14611476#else 
  • middleware-offline/trunk/_src/eidmw/eidlib/eidlib.pro

    r34 r35  
    5151            eidlibReader.cpp \ 
    5252           eidlibException.cpp \ 
     53           eidlibxades.cpp \ 
    5354           InternalUtil.cpp 
    5455 
  • middleware-offline/trunk/_src/eidmw/eidlib/eidlibCard.cpp

    r34 r35  
    534534 
    535535        return *out; 
    536 } 
    537  
    538  
    539 PTEID_ByteArray PTEID_EIDCard::SignXades(const char ** path, unsigned int n_paths) 
    540 { 
    541  
    542         PTEID_ByteArray out; 
    543          
    544         BEGIN_TRY_CATCH 
    545  
    546         APL_Card *pcard = static_cast<APL_Card *>(m_impl); 
    547  
    548         CByteArray &ca = pcard->SignXades(path, n_paths); 
    549         out.Append(ca.GetBytes(), ca.Size()); 
    550  
    551         END_TRY_CATCH 
    552  
    553         return out; 
    554 } 
    555  
    556 PTEID_ByteArray PTEID_EIDCard::SignXades(PTEID_ByteArray to_be_signed, const char *URL) 
    557 { 
    558  
    559         PTEID_ByteArray out; 
    560          
    561         BEGIN_TRY_CATCH 
    562  
    563         APL_Card *pcard = static_cast<APL_Card *>(m_impl); 
    564  
    565         CByteArray &ca = pcard->SignXades(CByteArray(to_be_signed.GetBytes(),  
    566                         to_be_signed.Size()), URL); 
    567         out.Append(ca.GetBytes(), ca.Size()); 
    568  
    569         END_TRY_CATCH 
    570  
    571         return out; 
    572  
    573  
    574 } 
    575  
    576 PTEID_ByteArray PTEID_EIDCard::SignXadesT(const char ** path, unsigned int n_paths) 
    577 { 
    578  
    579         PTEID_ByteArray out; 
    580          
    581         BEGIN_TRY_CATCH 
    582  
    583         APL_Card *pcard = static_cast<APL_Card *>(m_impl); 
    584  
    585         CByteArray &ca = pcard->SignXadesT(path, n_paths); 
    586         out.Append(ca.GetBytes(), ca.Size()); 
    587  
    588         END_TRY_CATCH 
    589  
    590         return out; 
    591 } 
    592  
    593 PTEID_ByteArray PTEID_EIDCard::SignXadesT(PTEID_ByteArray to_be_signed, const char *URL) 
    594 { 
    595  
    596         PTEID_ByteArray out; 
    597          
    598         BEGIN_TRY_CATCH 
    599  
    600         APL_Card *pcard = static_cast<APL_Card *>(m_impl); 
    601  
    602         CByteArray &ca = pcard->SignXadesT(CByteArray(to_be_signed.GetBytes(),  
    603                         to_be_signed.Size()), URL); 
    604         out.Append(ca.GetBytes(), ca.Size()); 
    605  
    606         END_TRY_CATCH 
    607  
    608         return out; 
    609  
    610  
    611 } 
    612 bool PTEID_EIDCard::VerifySignature(PTEID_ByteArray sig, char *error, unsigned long *error_length) 
    613 { 
    614  
    615         bool res = false; 
    616          
    617         BEGIN_TRY_CATCH 
    618  
    619         APL_Card *pcard = static_cast<APL_Card *>(m_impl); 
    620         res = pcard->ValidateSignature(CByteArray(sig.GetBytes(), sig.Size()), 
    621                         error, error_length);  
    622          
    623         END_TRY_CATCH 
    624  
    625         return res; 
    626  
    627536} 
    628537 
     
    11491058 
    11501059void PTEID_EIDCard::doSODCheck(bool check){ 
    1151 } 
    1152  
    1153 bool PTEID_EIDCard::Activate(const char *pinCode, CByteArray &BCDDate){ 
     1060 
     1061        BEGIN_TRY_CATCH 
     1062 
     1063        APL_EIDCard *pcard=static_cast<APL_EIDCard *>(m_impl); 
     1064        pcard->doSODCheck(check); 
     1065 
     1066        END_TRY_CATCH 
     1067} 
     1068 
     1069bool PTEID_EIDCard::Activate(const char *pinCode, PTEID_ByteArray &BCDDate){ 
    11541070        bool out = false; 
    1155  
    1156         BEGIN_TRY_CATCH 
    1157  
    1158         APL_EIDCard *pcard=static_cast<APL_EIDCard *>(m_impl); 
    1159         out =  pcard->Activate(pinCode,BCDDate); 
     1071        CByteArray cBCDDate = CByteArray(BCDDate.GetBytes(),BCDDate.Size()); 
     1072 
     1073        BEGIN_TRY_CATCH 
     1074 
     1075        APL_EIDCard *pcard=static_cast<APL_EIDCard *>(m_impl); 
     1076        out =  pcard->Activate(pinCode,cBCDDate); 
    11601077 
    11611078        END_TRY_CATCH 
     
    12561173 
    12571174        try { 
    1258                 if (NULL == ReaderName) 
     1175                if (NULL == ReaderName || strlen(ReaderName) == 0) 
    12591176                        readerContext = &ReaderSet.getReader(); 
    12601177                else 
     
    12771194        catch(PTEID_Exception &ex) 
    12781195        { 
    1279                 std::cout << "PTEID_Exception exception" << std::endl; 
     1196                std::cout << "PTEID_Exception exception " << ex.GetError()<< std::endl; 
    12801197        } 
    12811198        catch(...) 
     
    15681485 
    15691486                temp = card.getSod().getData(); 
     1487                CByteArray cb((unsigned char*)temp.GetBytes(), temp.Size()); 
     1488                cb.TrimRight(0); 
    15701489                memset(out,0,*outlen); 
    1571                 if (temp.Size() < *outlen) 
    1572                         *outlen = temp.Size(); 
    1573                 memcpy(out,temp.GetBytes(), *outlen); 
     1490                if (cb.Size() < *outlen) 
     1491                        *outlen = cb.Size(); 
     1492                memcpy(out,cb.GetBytes(), *outlen); 
    15741493        } 
    15751494 
     
    15791498PTEIDSDK_API long PTEID_UnblockPIN(unsigned char PinId, char *pszPuk, char *pszNewPin, long *triesLeft){ 
    15801499        unsigned long id; 
     1500        unsigned long tleft; 
    15811501 
    15821502        if (readerContext!=NULL){ 
     
    15881508                        PTEID_Pin&      pin     = pins.getPinByNumber(pinIdx); 
    15891509                        if (pin.getPinRef() == PinId){ 
    1590                                 pin.unlockPin(pszPuk, pszNewPin,(unsigned long *)triesLeft); 
     1510                                pin.unlockPin(pszPuk, pszNewPin,tleft); 
     1511                                *triesLeft = tleft; 
    15911512                        } 
    15921513                } 
     
    16061527PTEIDSDK_API long PTEID_SelectADF(unsigned char *adf, long adflen){ 
    16071528        if (readerContext!=NULL){ 
    1608                 PTEID_ByteArray pb(adf,adflen); 
    16091529                PTEID_EIDCard &card = readerContext->getEIDCard(); 
    1610                 card.selectApplication(pb); 
     1530                unsigned char ap[4] = {0x00, 0xA4, 0x00, 0x0C}; 
     1531                PTEID_ByteArray apdu(ap,(unsigned long)(sizeof(ap)/sizeof(unsigned char))); 
     1532                apdu.Append((unsigned char*)&adflen,sizeof(unsigned char)); 
     1533                apdu.Append(adf,(unsigned long) adflen); 
     1534                card.sendAPDU(apdu); 
    16111535        } 
    16121536 
     
    16181542        if (readerContext!=NULL && (PinId == PTEID_ADDRESS_PIN_ID || PinId == PTEID_NO_PIN_NEEDED)){ 
    16191543                PTEID_EIDCard &card = readerContext->getEIDCard(); 
    1620                 CByteArray temp; 
     1544                CByteArray filePath; 
    16211545                PTEID_ByteArray in; 
    16221546                PTEID_Pin*      pin = NULL; 
     
    16261550                        for (unsigned long pinIdx=0; pinIdx < pins.count(); pinIdx++){ 
    16271551                                pin     = &(pins.getPinByNumber(pinIdx)); 
    1628                                 if (pin->getId() == PinId-128){ // why 128? id = 1,2,3..., pinid = (1 or 129), 130, 131 
     1552                                if (pin->getPinRef() == PTEID_ADDRESS_PIN_ID){ 
    16291553                                        break; 
    16301554                                } 
     
    16321556                } 
    16331557 
    1634                 temp.Append(file,filelen); 
    1635                 card.readFile(temp.ToString(false).c_str(),in, pin,""); 
    1636  
    1637                 *outlen = (*outlen>in.Size() ? in.Size() : *outlen); 
    1638                 memcpy(out, in.GetBytes(),*outlen); 
     1558                filePath.Append(file,filelen); 
     1559                card.readFile(filePath.ToString(false).c_str(),in, pin,""); 
     1560 
     1561                CByteArray cb(in.GetBytes(), in.Size()); 
     1562                cb.TrimRight(0); 
     1563 
     1564                *outlen = (*outlen>cb.Size() ? cb.Size() : *outlen); 
     1565                memcpy(out, cb.GetBytes(),*outlen); 
    16391566        } 
    16401567 
     
    16791606        long retval = 0; 
    16801607        if (readerContext!=NULL){ 
    1681                 CByteArray bcd(pucDate,BCD_DATE_LEN); 
     1608                PTEID_ByteArray bcd(pucDate,BCD_DATE_LEN); 
    16821609                if (readerContext->getEIDCard().Activate(pszPin,bcd)) 
    16831610                        return 0; 
     
    17301657} 
    17311658 
    1732  
    1733 } 
     1659PTEIDSDK_API long PTEID_SendAPDU(const unsigned char *ucRequest, unsigned long ulRequestLen, unsigned char *ucResponse, unsigned long *ulResponseLen){ 
     1660        if (readerContext!=NULL){ 
     1661                PTEID_EIDCard &card = readerContext->getEIDCard(); 
     1662                PTEID_ByteArray sApdu(ucRequest,ulRequestLen); 
     1663                PTEID_ByteArray resp; 
     1664 
     1665                resp = card.sendAPDU(sApdu); 
     1666 
     1667                *ulResponseLen = (*ulResponseLen > resp.Size()) ? resp.Size() : *ulResponseLen; 
     1668                memcpy(ucResponse,resp.GetBytes(),*ulResponseLen); 
     1669        } 
     1670 
     1671        return 0; 
     1672} 
     1673 
     1674 
     1675} 
  • middleware-offline/trunk/_src/eidmw/eidlib/eidlibCrypto.cpp

    r34 r35  
    764764} 
    765765 
    766 bool PTEID_Pin::unlockPin(const char *pszPuk, const char *pszNewPin, unsigned long *triesLeft) 
     766bool PTEID_Pin::unlockPin(const char *pszPuk, const char *pszNewPin, unsigned long &triesLeft) 
    767767{ 
    768768        bool out = false; 
  • middleware-offline/trunk/_src/eidmw/eidlib/pteid35lib.vcproj

    r34 r35  
    378378                        <File 
    379379                                RelativePath=".\eidlibReader.cpp" 
     380                                > 
     381                        </File> 
     382                        <File 
     383                                RelativePath=".\eidlibxades.cpp" 
    380384                                > 
    381385                        </File> 
  • middleware-offline/trunk/_src/eidmw/eidmw.pro

    r34 r35  
    88SUBDIRS += FreeImagePTEiD 
    99SUBDIRS += xml-security-c-1.6.1 
     10SUBDIRS += acsccid-1.0.3 
    1011 
    1112## list of the subprojects to build: 
     
    2728                eidlib \ 
    2829                eidlibJava_Wrapper \ 
    29                 cardlayer/ppgempc-plugin 
     30                cardlayer/ppgempc-plugin \ 
     31                cardlayer/acr83-plugin 
    3032 
    3133!isEmpty(BUILD_SDK) { 
  • middleware-offline/trunk/_src/eidmw/minidriver/Src/SmartCard.c

    r25 r35  
    250250        unsigned int                pin_ref = 0; 
    251251        unsigned char                           recvbuf[256]; 
     252        unsigned char                           szReaderName[256]; 
     253        DWORD                                           reader_length = sizeof(szReaderName); 
    252254        unsigned char                           ucLastKey; 
    253255        unsigned long                           recvlen     = sizeof(recvbuf); 
     
    259261        int                                                     nButton; 
    260262        HRESULT                                         hResult; 
     263        LONG                                            status_rv; 
    261264 
    262265        EXTERNAL_PIN_INFORMATION                externalPinInfo; 
     
    324327                pin_ref = 0x80 + pin_id; 
    325328 
    326         if (wcsstr(pCardData->pwszCardName, L"GemPC Pinpad") != 0  
    327                 || wcsstr(pCardData->pwszCardName, L"GemPCPinpad" != 0)) 
     329        //SCardStatus to get the reader name 
     330        status_rv = SCardStatus(pCardData->hScard,  szReaderName, &reader_length, 
     331                NULL, NULL, NULL, NULL); 
     332 
     333        if (strstr(szReaderName, "GemPC Pinpad") != 0  
     334                || strstr(szReaderName, "GemPCPinpad") != 0) 
    328335                createVerifyCommandGemPC(&verifyCommand, pin_ref); 
    329336        else 
     
    353360                                DialogThreadHandle = CreateThread(NULL, 0, DialogThreadPinEntry, &externalPinInfo, 0, NULL); 
    354361 
     362                        LogTrace(LOGTYPE_INFO, WHERE, "Running SCardControl with ioctl=%08x",externalPinInfo.features.VERIFY_PIN_DIRECT ); 
     363                        LogTrace(LOGTYPE_INFO, WHERE, "PIN_VERIFY_STRUCT: "); 
     364                        LogDump(uiCmdLg, (unsigned char*)&verifyCommand); 
     365 
    355366                        dwReturn = SCardControl(pCardData->hScard,  
    356367                                externalPinInfo.features.VERIFY_PIN_DIRECT,  
     
    360371                                recvlen, 
    361372                                &recvlen); 
     373                        SW1 = recvbuf[recvlen-2]; 
     374                    SW2 = recvbuf[recvlen-1]; 
    362375 
    363376                        externalPinInfo.cardState = CS_PINENTERED; 
     
    366379                                LogTrace(LOGTYPE_ERROR, WHERE, "SCardControl errorcode: [0x%02X]", dwReturn); 
    367380                                CLEANUP(dwReturn); 
     381                        } 
     382                        else 
     383                        { 
     384                                if ( ( SW1 != 0x90 ) || ( SW2 != 0x00 ) ) 
     385                                { 
     386                                        dwReturn = SCARD_W_WRONG_CHV; 
     387                                        LogTrace(LOGTYPE_ERROR, WHERE, "CardAuthenticateExternal Failed: [0x%02X][0x%02X]", SW1, SW2); 
     388 
     389                                        if ( ((SW1 == 0x63) && ((SW2 & 0xF0) == 0xC0)) ) 
     390                                        { 
     391                                                if ( pcAttemptsRemaining != NULL ) 
     392                                                { 
     393                                                        /* -1: Don't support returning the count of remaining authentication attempts */ 
     394                                                        *pcAttemptsRemaining = (SW2 & 0x0F); 
     395                                                } 
     396                                        } 
     397                                        else if ( (SW1 == 0x69) && (SW2 == 0x83) ) 
     398                                        { 
     399                                                dwReturn = SCARD_W_CHV_BLOCKED; 
     400                                                LogTrace(LOGTYPE_ERROR, WHERE, "Card Blocked, watch out!!"); 
     401                                        } 
     402                                } 
     403                                else 
     404                                        LogTrace(LOGTYPE_INFO, WHERE, "Logged in via Pinpad Reader"); 
     405 
    368406                        } 
    369407                } 
     
    15681606} 
    15691607 
     1608#undef WHERE 
     1609 
     1610#define WHERE "createVerifyCommandGemPC" 
    15701611DWORD createVerifyCommandGemPC(PPIN_VERIFY_STRUCTURE pVerifyCommand, unsigned int pin_ref) { 
    15711612        char padding = 0; 
     1613 
     1614        LogTrace(LOGTYPE_INFO, WHERE, "createVerifyCommandGemPC(): pinRef = %d", pin_ref); 
    15721615    pVerifyCommand->bTimeOut = 30; 
    15731616    pVerifyCommand->bTimeOut2 = 30; 
    15741617    pVerifyCommand->bmFormatString = 0x82; 
    1575         pVerifyCommand -> bmPINBlockString = 0x04; 
     1618        pVerifyCommand -> bmPINBlockString = 0x00; 
    15761619        pVerifyCommand -> bmPINLengthFormat = 0x00; 
    1577         pVerifyCommand -> wPINMaxExtraDigit= 0x0408; /* Min Max */ //Code smell #1 
     1620        pVerifyCommand -> wPINMaxExtraDigit= 0x0408; /* Min Max */ 
    15781621         
    15791622        pVerifyCommand -> bEntryValidationCondition = 0x02; 
     
    15921635    pVerifyCommand->abData[3] = pin_ref; // P2 
    15931636    pVerifyCommand->abData[4] = 0x08; // Lc = 8 bytes in command data 
    1594     pVerifyCommand->abData[5] = 0x20 ; //  
    15951637        padding = Is_Gemsafe != 0 ? 0xFF: 0x2F; 
    1596          
     1638        pVerifyCommand->abData[5] = padding; 
    15971639    pVerifyCommand->abData[6] = padding; // Pin[1] 
    15981640    pVerifyCommand->abData[7] = padding; // Pin[2] 
     
    16111653#undef WHERE 
    16121654 
     1655#define WHERE "createVerifyCommand" 
    16131656DWORD createVerifyCommand(PPIN_VERIFY_STRUCTURE pVerifyCommand, unsigned int pin_ref) { 
    16141657        char padding; 
     1658        LogTrace(LOGTYPE_INFO, WHERE, "createVerifyCommand(): pinRef = %d", pin_ref); 
    16151659    pVerifyCommand->bTimeOut = 30; 
    16161660    pVerifyCommand->bTimeOut2 = 30; 
     
    16921736    pVerifyCommand->abData[3] = pin_ref; // P2 
    16931737    pVerifyCommand->abData[4] = 0x08; // Lc = 8 bytes in command data 
    1694     pVerifyCommand->abData[5] = 0x20 ; //  
    16951738        padding = Is_Gemsafe != 0 ? 0xFF: 0x2F; 
    16961739         
    1697     pVerifyCommand->abData[6] = padding; // Pin[1] 
    1698     pVerifyCommand->abData[7] = padding; // Pin[2] 
    1699     pVerifyCommand->abData[8] = padding; // Pin[3] 
    1700     pVerifyCommand->abData[9] = padding; // Pin[4] 
    1701     pVerifyCommand->abData[10] = padding; // Pin[5] 
    1702     pVerifyCommand->abData[11] = padding; // Pin[6] 
    1703     pVerifyCommand->abData[12] = padding; // Pin[7] 
     1740    pVerifyCommand->abData[5] = padding; // Pin[1] 
     1741    pVerifyCommand->abData[6] = padding; // Pin[2] 
     1742    pVerifyCommand->abData[7] = padding; // Pin[3] 
     1743    pVerifyCommand->abData[8] = padding; // Pin[4] 
     1744    pVerifyCommand->abData[9] = padding; // Pin[5] 
     1745    pVerifyCommand->abData[10] = padding; // Pin[6] 
     1746    pVerifyCommand->abData[11] = padding; // Pin[7] 
     1747        pVerifyCommand->abData[12] = padding; // Pin[8] 
    17041748 
    17051749    pVerifyCommand->ulDataLength = 13; 
  • middleware-offline/trunk/_src/eidmw/misc/Wix_MW35/MW35Wix/Product.wxs

    r34 r35  
    119119      <Directory Id="ProgramFilesFolder"> 
    120120        <Directory Id="APPLICATIONROOTFOLDER" Name="Portugal Identity Card"> 
     121           
    121122         <!-- <Directory Id="IMAGEFORMATS" Name="imageformats" /> --> 
    122123          <Directory Id="EIDSTORE" Name="eidstore"> 
     
    148149            </Directory> 
    149150          </Directory> 
     151           
    150152        </Directory> 
    151         <Directory Id="MINIDRIVERROOTFOLDER" Name="BeID Minidriver"/> 
     153        <Directory Id="MINIDRIVERROOTFOLDER" Name="PTeID Minidriver"/> 
    152154 
    153155      </Directory> 
     
    365367        <difx:Driver ForceInstall="no" PlugAndPlayPrompt="no" DeleteFiles="yes"  /> 
    366368      </Component> 
    367       <!-- Certificate Propagation Service is a standard Windows service available in from Windows Vista on. In order to use the minidriver 
     369        <!-- Certificate Propagation Service is a standard Windows service available in from Windows Vista on. In order to use the minidriver 
    368370                           it is necessary that this service is running. When a smart card reader is inserted this service should be started  by the smart card 
    369371                           driver. As not all drivers are following this guidance, we start CertPropSvc during the minidriver install --> 
     
    394396       
    395397      <Component Id="GUI" Guid="{E45C85CA-0A5A-400C-9B86-7038C82B254D}" SharedDllRefCount="yes"> 
     398        <RemoveFolder Id='APPLICATIONROOTFOLDER' On='uninstall' /> 
    396399        <File Id="pteid35gui.exe" Name="pteid35gui.exe" KeyPath="yes" Source="..\..\..\_Binaries35\Release\pteid35gui.exe" /> 
    397400        <File Id="pteid35libCpp.dll" Name="pteid35libCpp.dll" KeyPath="no" Source="..\..\..\_Binaries35\Release\pteid35libCpp.dll" /> 
     
    414417        <File Id="zlib1.dll" Name="zlib1.dll" KeyPath="no" Source="..\..\..\..\ThirdParty\cairo\bin\zlib1.dll" ></File> 
    415418      </Component> 
     419         
    416420 
    417421      <Component Id="Qt" Guid="{AF5AF018-EE70-4EA9-98BA-9C2947F19060}" SharedDllRefCount="yes"> 
    418422        <File Id="QtCore4.dll" Name="QtCore4.dll" KeyPath="yes" Source="$(var.PTEID_DIR_QT_450_DYNAMIC)\bin\QtCore4.dll" /> 
    419423        <File Id="QtGui4.dll" Name="QtGui4.dll" KeyPath="no" Source="$(var.PTEID_DIR_QT_450_DYNAMIC)\bin\QtGui4.dll" /> 
     424        <File Id="QtNetwork4.dll" Name="QtNetwork4.dll" KeyPath="no" Source="$(var.PTEID_DIR_QT_450_DYNAMIC)\bin\QtNetwork4.dll" /> 
    420425      </Component> 
    421426       
     
    428433      </Component> 
    429434       
    430 <!--      <Component Id="pkcs11_register" Guid="{4A415D88-0C1F-4322-8DFE-9A2528C47B2F}" SharedDllRefCount="yes"> 
    431         <File Id="pteidpkcs11register.html" Name="pteid-pkcs11-register.html" KeyPath="yes" Source="..\..\..\misc\pteid\pteid-pkcs11-register.html" /> 
    432         <File Id="pteidpkcs11unregister.html" Name="pteid-pkcs11-unregister.html" KeyPath="no" Source="..\..\..\misc\pteid\pteid-pkcs11-unregister.html" /> 
    433       </Component> 
    434    --> 
    435        
    436435    </DirectoryRef> 
    437436 
     
    445444          /> 
    446445        <IniFile Id="pteidguiconf2" Directory="WindowsFolder" Name="pteidgui.conf" 
    447           Section="PTEID_default" Action="addLine" Key="crl"  Value="[ProgramFilesFolder]Portugal Identity Card\eidstore\crl\http\crl.eid.portugal.be\" 
    448           /> 
    449       </Component> 
    450        
    451 <!--      <Component Id="pkcs11_cfg" Guid="{30C0E273-8E4E-4C39-8EA5-98CA4F6D86B5}"> 
    452         <File Id="Belgian_eID_PKCS11_java.cfg" Name="Belgian_eID_PKCS11_java.cfg" KeyPath="yes" Source="..\..\..\misc\setup_win\Belgian_eID_PKCS11_java.cfg" /> 
    453       </Component> 
    454 --> 
     446          Section="PTEID_default" Action="addLine" Key="crl"  Value="[ProgramFilesFolder]Portugal Identity Card\eidstore\crl\http\crl.eid.portugal.be\" /> 
     447           
     448      </Component> 
    455449 
    456450    </DirectoryRef> 
     
    474468      </Component> 
    475469 
     470      <!--Our Build of LibCurl - custom build options to remove unneeded features--> 
     471      <Component Id="Curl" Guid="{1BA8207B-BEC4-43e3-93FA-AE9D25117CFA}" SharedDllRefCount="yes"> 
     472        <File Id="libcurl.dll" Name="libcurl.dll" KeyPath="no" Source="..\..\..\..\ThirdParty\libcurl-7.24\bin\libcurl.dll" ></File> 
     473      </Component> 
     474 
    476475      <Component Id="pteidmdrvsystem32" Guid="a8259480-e408-11de-8a39-0800200c9a66" Permanent="no"> 
    477476        <File Id="system32_pteidmdrv32.dll" Name="pteidmdrv32.dll" Source="..\..\..\minidriver\makemsi\Release\pteidmdrv32.dll" KeyPath="yes" DiskId="1" /> 
     
    486485                                  <File Id="FreeImage.dll" Name="FreeImage.dll" KeyPath="yes" Source="..\..\..\_Binaries35\Release\FreeImage.dll" /> 
    487486           </Component> 
     487       
     488      <Component Id="XMLSecurity" Guid="EF7A30DC-47CC-4385-832A-8E871EF69F65" SharedDllRefCount="yes"> 
     489        <File Id="xsec_1_6.dll" Name="xsec_1_6.dll" KeyPath="yes" Source="..\..\..\_Binaries35\Release\xsec_1_6.dll" /> 
     490      </Component> 
    488491 
    489492      <Component Id="pkcs11" Guid="D54164C0-795D-4B2D-96C6-C8E395100896" SharedDllRefCount="yes"> 
     
    705708        <ComponentRef Id="GUI" /> 
    706709        <ComponentRef Id="FreeImage"/> 
     710        <ComponentRef Id="Curl"/> 
     711        <ComponentRef Id="XMLSecurity"/> 
    707712        <ComponentRef Id="Cairo"/> 
    708713        <ComponentRef Id="Qt" />