Changeset 133

Show
Ignore:
Timestamp:
03/30/12 19:38:09 (9 years ago)
Author:
vsilva
Message:

Support PindPad? readers on windows systems. Fix some translations

Location:
middleware-offline/trunk
Files:
8 added
12 removed
54 modified

Legend:

Unmodified
Added
Removed
  • middleware-offline/trunk/_src/eidmw/applayer/APLCardPteid.cpp

    r91 r133  
    12381238        if (!m_RootCAPubKey){ 
    12391239                CByteArray out; 
     1240                CByteArray modulus; 
     1241                CByteArray exponent; 
    12401242 
    12411243                BEGIN_CAL_OPERATION(m_reader) 
     
    12431245                END_CAL_OPERATION(m_reader) 
    12441246 
    1245                 CByteArray modulus = out.GetBytes(PTEIDNG_FIELD_ROOTCA_PK_POS_MODULUS, PTEIDNG_FIELD_ROOTCA_PK_LEN_MODULUS); 
    1246                 CByteArray exponent = out.GetBytes(PTEIDNG_FIELD_ROOTCA_PK_POS_EXPONENT, PTEIDNG_FIELD_ROOTCA_PK_LEN_EXPONENT); 
     1247 
     1248                switch(m_reader->getCardType()){ 
     1249                case APL_CARDTYPE_PTEID_IAS101: 
     1250                        modulus = out.GetBytes(PTEIDNG_FIELD_ROOTCA_PK_POS_MODULUS_IAS101, PTEIDNG_FIELD_ROOTCA_PK_LEN_MODULUS); 
     1251                        exponent = out.GetBytes(PTEIDNG_FIELD_ROOTCA_PK_POS_EXPONENT_IAS_101, PTEIDNG_FIELD_ROOTCA_PK_LEN_EXPONENT); 
     1252                        break; 
     1253                case APL_CARDTYPE_PTEID_IAS07: 
     1254                        modulus = out.GetBytes(PTEIDNG_FIELD_ROOTCA_PK_POS_MODULUS_IAS07, PTEIDNG_FIELD_ROOTCA_PK_LEN_MODULUS); 
     1255                        exponent = out.GetBytes(PTEIDNG_FIELD_ROOTCA_PK_POS_EXPONENT_IAS_07, PTEIDNG_FIELD_ROOTCA_PK_LEN_EXPONENT); 
     1256                        break; 
     1257                case APL_CARDTYPE_UNKNOWN: 
     1258                        throw CMWEXCEPTION(EIDMW_ERR_CARDTYPE_UNKNOWN); 
     1259                        break; 
     1260                } 
    12471261 
    12481262                m_RootCAPubKey = new APLPublicKey(modulus,exponent); 
  • middleware-offline/trunk/_src/eidmw/applayer/APLCertif.cpp

    r82 r133  
    16691669    int cnt; 
    16701670    time_t res; 
    1671     char to_buf[256]; 
    1672     unsigned buf_size = sizeof(to_buf); 
    1673  
     1671        const unsigned int buf_size = 256; 
     1672    char *to_buf = (char *)malloc(buf_size); 
     1673     
    16741674    ASN1_GENERALIZEDTIME* agtime; 
    16751675         
     
    17131713        case 1: 
    17141714#ifdef WIN32 
    1715                 contents.append("/eidstore/certs/GTEGlobalRoot.der"); 
     1715                contents.append("\\eidstore\\certs\\GTEGlobalRoot.der"); 
    17161716                if ((werr = fopen_s(&m_stream, contents.c_str(), "rb")) != 0) 
    17171717                        goto err; 
     
    17231723        case 2: 
    17241724#ifdef WIN32 
    1725                 contents.append("/eidstore/certs/ECRaizEstado_novo_assinado_GTE.der"); 
     1725                contents.append("\\eidstore\\certs\\ECRaizEstado_novo_assinado_GTE.der"); 
    17261726                if ((werr = fopen_s(&m_stream, contents.c_str(), "rb")) != 0) 
    17271727                        goto err; 
     
    17331733        case 3: 
    17341734#ifdef WIN32 
    1735                 contents.append("/eidstore/certs/CartaodeCidadao001.der"); 
     1735                contents.append("\\eidstore\\certs\\CartaodeCidadao001.der"); 
    17361736                if ((werr = fopen_s(&m_stream, contents.c_str(), "rb")) != 0) 
    17371737                        goto err; 
     
    17971797        //Subject name 
    17981798        X509 *cert; 
     1799        const int BUFSIZE = 800; 
    17991800 
    18001801        if ((cert = ExternalCert(certnr)) == NULL) 
    18011802                return NULL; 
    18021803 
    1803         char sntemp[800] = {0}; 
    1804         char subject[800] = {0}; 
    1805         X509_NAME_get_text_by_NID(X509_get_subject_name(cert), NID_commonName, sntemp, sizeof(sntemp)); 
    1806         strcat (subject, sntemp); 
     1804        char * subject = (char *)malloc(BUFSIZE*sizeof(unsigned char)); 
     1805 
     1806        X509_NAME_get_text_by_NID(X509_get_subject_name(cert), NID_commonName, subject, BUFSIZE); 
    18071807 
    18081808        return subject; 
     
    18121812{ 
    18131813        // issuer name 
    1814         char szTemp[800] = {0}; 
    1815         char issuer[800] = {0}; 
     1814        const int BUFSIZE = 800; 
     1815        char * issuer = (char *)malloc(BUFSIZE*sizeof(unsigned char)); 
    18161816        X509 *cert; 
    18171817 
     
    18191819                return NULL; 
    18201820 
    1821         X509_NAME_get_text_by_NID(X509_get_issuer_name(cert), NID_commonName, szTemp, sizeof(szTemp)); 
    1822         strcat (issuer, szTemp); 
     1821        X509_NAME_get_text_by_NID(X509_get_issuer_name(cert), NID_commonName, issuer, BUFSIZE); 
     1822         
    18231823 
    18241824        return issuer; 
  • middleware-offline/trunk/_src/eidmw/applayer/APLCrypto.cpp

    r82 r133  
    691691bool APL_Pin::verifyPin(const char *csPin,unsigned long &ulRemaining,bool bShowDlg) 
    692692{ 
    693         try 
    694         { 
    695                 if(!m_card->isVirtualCard()) 
    696                         return m_card->pinCmd(PIN_OP_VERIFY,m_pinP15,csPin,"",ulRemaining,bShowDlg); 
    697                 else 
    698                         return false; 
    699         } 
    700         catch(CMWException &e) 
    701         { 
    702                 unsigned long err = e.GetError();       // avoid warning 
    703                 err = err; 
    704                 /*EIDMW_ERR_PIN_CANCEL 
    705                 EIDMW_PINPAD_ERR 
    706                 EIDMW_ERR_TIMEOUT 
    707                 EIDMW_NEW_PINS_DIFFER*/ 
    708  
     693 
     694        if(!m_card->isVirtualCard()) 
     695                return m_card->pinCmd(PIN_OP_VERIFY,m_pinP15,csPin,"",ulRemaining,bShowDlg); 
     696        else 
    709697                return false; 
    710         } 
     698 
    711699} 
    712700 
    713701bool APL_Pin::changePin(const char *csPin1,const char *csPin2,unsigned long &ulRemaining, const char *PinName,bool bShowDlg) 
    714702{ 
    715         std::string CurrPinName = PinName; 
    716  
    717         /*if (CurrPinName == "PIN da Autenticação") 
    718         { 
    719                 //Get EMV-CAP parameters 
    720                 EMVCapHelper *n = new EMVCapHelper(m_card); 
    721                 n->GetArqc(); 
    722                 }*/ 
    723  
    724  
    725  
    726         try 
    727         { 
    728                 if(!m_card->isVirtualCard()) 
    729                         return m_card->pinCmd(PIN_OP_CHANGE,m_pinP15,csPin1,csPin2,ulRemaining, bShowDlg); 
    730                 else 
    731                         return false; 
    732         } 
    733         catch(CMWException &e) 
    734         { 
    735                 unsigned long err = e.GetError();       // avoid warning 
    736                 err = err; 
    737                 /*EIDMW_ERR_PIN_CANCEL 
    738                 EIDMW_PINPAD_ERR 
    739                 EIDMW_ERR_TIMEOUT 
    740                 EIDMW_NEW_PINS_DIFFER*/ 
    741  
     703 
     704        if(!m_card->isVirtualCard()) 
     705                return m_card->pinCmd(PIN_OP_CHANGE,m_pinP15,csPin1,csPin2,ulRemaining, bShowDlg); 
     706        else 
    742707                return false; 
    743         } 
    744708} 
    745709 
  • middleware-offline/trunk/_src/eidmw/applayer/CardPteidDef.h

    r35 r133  
    244244 
    245245//martinho - ok 
    246 #define PTEIDNG_FIELD_ROOTCA_PK_POS_MODULUS                             23 
     246#define PTEIDNG_FIELD_ROOTCA_PK_POS_MODULUS_IAS101              23 
     247#define PTEIDNG_FIELD_ROOTCA_PK_POS_EXPONENT_IAS_101    153 
     248#define PTEIDNG_FIELD_ROOTCA_PK_POS_MODULUS_IAS07               14 
     249#define PTEIDNG_FIELD_ROOTCA_PK_POS_EXPONENT_IAS_07             155 
     250#define PTEIDNG_FIELD_ROOTCA_PK_LEN_EXPONENT                    3 
    247251#define PTEIDNG_FIELD_ROOTCA_PK_LEN_MODULUS                             128 
    248 #define PTEIDNG_FIELD_ROOTCA_PK_POS_EXPONENT                    153 
    249 #define PTEIDNG_FIELD_ROOTCA_PK_LEN_EXPONENT                    3 
    250252 
    251253 
  • middleware-offline/trunk/_src/eidmw/applayer/SigContainer.cpp

    r109 r133  
    110110                        // and the README file that gets added to all signed containers 
    111111                        // and the "workaround timestamp response" file 
    112                         if (strcmp(file_stat.m_filename, SIG_INTERNAL_PATH) != 0 
    113                                 && strcmp(file_stat.m_filename, "README.txt") != 0 
    114                                 && strcmp(file_stat.m_filename, TS_INTERNAL_PATH) != 0) 
     112                        if (strstr(file_stat.m_filename, "META-INF") == 0 
     113                                && strcmp(file_stat.m_filename, "README.txt") != 0) 
    115114                        { 
    116115                                p = mz_zip_reader_extract_file_to_heap(&zip_archive,file_stat.m_filename, &uncomp_size, 0); 
  • middleware-offline/trunk/_src/eidmw/applayer/XadesSignature.cpp

    r109 r133  
    325325        #define TSA_VALIDATE_URL "http://ts.cartaodecidadao.pt/tsaclient/validate.html" 
    326326 
    327         void XadesSignature::do_post_validate_timestamp(char *input, unsigned int input_len, char *sha1_string) 
     327        void XadesSignature::do_post_validate_timestamp(char *input, long input_len, char *sha1_string) 
    328328        { 
    329329 
     
    700700        //std::cerr << "POST Parameter (hash): " << sha1_string << std::endl;  
    701701         
    702         do_post_validate_timestamp((char *)ts_resp.GetBytes(), ts_resp.Size(), sha1_string); 
     702        do_post_validate_timestamp((char *)ts_resp.GetBytes(), (long)ts_resp.Size(), sha1_string); 
    703703 
    704704        if (mp_validate_data.Size() == 0) 
  • middleware-offline/trunk/_src/eidmw/applayer/XadesSignature.h

    r109 r133  
    7676                static CByteArray mp_timestamp_data; 
    7777                static CByteArray mp_validate_data; 
    78                 static void do_post_validate_timestamp(char *input, unsigned int input_len, char *sha1_string); 
     78                static void do_post_validate_timestamp(char *input, long input_len, char *sha1_string); 
    7979 
    8080                private: 
  • middleware-offline/trunk/_src/eidmw/cardlayer/Card.cpp

    r82 r133  
    2424{ 
    2525 
    26 CCard::CCard(SCARDHANDLE hCard, CContext *poContext, CPinpad *poPinpad) : 
     26CCard::CCard(SCARDHANDLE hCard, CContext *poContext, GenericPinpad *poPinpad) : 
    2727        m_hCard(hCard), m_poContext(poContext), m_poPinpad(poPinpad), 
    2828        m_oCache(poContext), m_ulLockCount(0), m_bSerialNrString(false),m_cardType(CARD_UNKNOWN) 
     
    6868{ 
    6969        return false; 
    70 } 
    71  
    72 std::string CCard::GetPinpadPrefix() 
    73 { 
    74         return ""; 
    7570} 
    7671 
  • middleware-offline/trunk/_src/eidmw/cardlayer/Card.h

    r82 r133  
    3434#include "../common/Hash.h" 
    3535#include "../common/Util.h" 
    36 #include "Pinpad.h" 
     36#include "GenericPinpad.h" 
    3737#include "P15Correction.h" 
    3838#include "../dialogs/dialogs.h" 
     
    4646{ 
    4747public: 
    48         CCard(SCARDHANDLE hCard, CContext *poContext, CPinpad *poPinpad); 
     48        CCard(SCARDHANDLE hCard, CContext *poContext, GenericPinpad *poPinpad); 
    4949    virtual ~CCard(void); 
    5050 
    5151    /** Find out which card is present and return the appropriate subclass */ 
    5252    static CCard *Connect(const std::string &csReader, 
    53                 CContext *poContext, CPinpad *poPinpad); 
     53                CContext *poContext, GenericPinpad *poPinpad); 
    5454 
    5555    virtual void Disconnect(tDisconnectMode disconnectMode = DISCONNECT_LEAVE_CARD); 
     
    6161 
    6262    virtual bool IsPinpadReader(); 
    63         virtual std::string GetPinpadPrefix(); 
    6463 
    6564    virtual tCardType GetType() = 0; 
     
    126125    virtual CP15Correction* GetP15Correction(); 
    127126 
     127    virtual void setPinpadHandler(GenericPinpad * pinpad) 
     128    { 
     129        m_poPinpad = pinpad; 
     130 
     131    } 
     132 
    128133    SCARDHANDLE m_hCard; 
    129134 
     
    143148 
    144149        CContext *m_poContext; 
    145         CPinpad *m_poPinpad; 
     150        GenericPinpad *m_poPinpad; 
    146151        CCache m_oCache; 
    147152        tCardType m_cardType; 
  • middleware-offline/trunk/_src/eidmw/cardlayer/CardFactory.cpp

    r59 r133  
    5959#include "../common/Util.h" 
    6060#include "../common/prefix.h" 
     61#include "../common/DynamicLib.h" 
    6162#ifdef CAL_PTEID 
    6263#include "PteidCard.h" 
     
    6566#include <string> 
    6667 
    67 typedef class eIDMW::CCard * (*GETCARDINSTANCE)(unsigned long,char const*,SCARDHANDLE,class eIDMW::CContext *,class eIDMW::CPinpad *); 
    68 typedef class eIDMW::CCard * (*CONNECTGETCARDINSTANCE)(unsigned long,char const*,class eIDMW::CContext *,class eIDMW::CPinpad *); 
     68typedef class eIDMW::CCard * (*GETCARDINSTANCE)(unsigned long,char const*,SCARDHANDLE,class eIDMW::CContext *,class eIDMW::GenericPinpad *); 
     69typedef class eIDMW::CCard * (*CONNECTGETCARDINSTANCE)(unsigned long,char const*,class eIDMW::CContext *,class eIDMW::GenericPinpad *); 
    6970 
    7071namespace eIDMW 
     
    8485 
    8586static CCard *GetCardInstance(const char *csReader, SCARDHANDLE hCard, 
    86         CContext *poContext, CPinpad *poPinpad, 
     87        CContext *poContext, GenericPinpad *poPinpad, 
    8788        const std::string &csPluginPath, CDynamicLib &oCardPluginLib); 
    8889 
    8990static CCard *ConnectGetCardInstance(const char *csReader, 
    90         CContext *poContext, CPinpad *poPinpad, 
     91        CContext *poContext, GenericPinpad *poPinpad, 
    9192        const std::string &csPluginPath, CDynamicLib &oCardPluginLib); 
    9293 
    9394CCard * CardConnect(const std::string &csReader, 
    94         CContext *poContext, CPinpad *poPinpad, CDynamicLib &oCardPluginLib) 
     95        CContext *poContext, GenericPinpad *poPinpad, CDynamicLib &oCardPluginLib) 
    9596{ 
    9697        CCard *poCard = NULL; 
     
    198199#ifdef WIN32 
    199200// Use Dependency Walker (depends.exe) to get these strings 
    200 #define csGetCardInstanceName        "?GetCardInstance@@YAPAVCCard@eIDMW@@KPBDKPAVCContext@2@PAVCPinpad@2@@Z" 
    201 #define csConnectGetCardInstanceName "?ConnectGetCardInstance@@YAPAVCCard@eIDMW@@KPBDPAVCContext@2@PAVCPinpad@2@@Z" 
     201#define csGetCardInstanceName        "?GetCardInstance@@YAPAVCCard@eIDMW@@KPBDKPAVCContext@2@PAVGenericPinpad@2@@Z" 
     202#define csConnectGetCardInstanceName "?ConnectGetCardInstance@@YAPAVCCard@eIDMW@@KPBDPAVCContext@2@PAVGenericPinpad@2@@Z" 
    202203 
    203204#else 
    204205// Use nm <dll> to get these strings 
    205 #define csGetCardInstanceName        "_Z15GetCardInstancemPKcmPN5eIDMW8CContextEPNS1_7CPinpadE" 
    206 #define csConnectGetCardInstanceName "_Z22ConnectGetCardInstancemPKcPN5eIDMW8CContextEPNS1_7CPinpadE" 
     206#define csGetCardInstanceName        "_Z15GetCardInstancemPKcmPN5eIDMW8CContextEPNS1_7GenericPinpadE" 
     207#define csConnectGetCardInstanceName "_Z22ConnectGetCardInstancemPKcPN5eIDMW8CContextEPNS1_7GenericPinpadE" 
    207208#endif 
    208209 
    209210static CCard *GetCardInstance(const char *csReader, SCARDHANDLE hCard, 
    210         CContext *poContext, CPinpad *poPinpad, 
     211        CContext *poContext, GenericPinpad *poPinpad, 
    211212        const std::string &csPluginPath, CDynamicLib &oCardPluginLib) 
    212213{ 
     
    243244 
    244245static CCard *ConnectGetCardInstance(const char *csReader, 
    245         CContext *poContext, CPinpad *poPinpad, 
     246        CContext *poContext, GenericPinpad *poPinpad, 
    246247        const std::string &csPluginPath, CDynamicLib &oCardPluginLib) 
    247248{ 
  • middleware-offline/trunk/_src/eidmw/cardlayer/CardFactory.h

    r5 r133  
    2626{ 
    2727 
     28class CDynamicLib; 
     29 
    2830CCard * CardConnect(const std::string &csReader, 
    29         CContext *poContext, CPinpad *poPinpad, 
     31        CContext *poContext, GenericPinpad *poPinpad, 
    3032        CDynamicLib &oCardPluginLib); 
    3133 
  • middleware-offline/trunk/_src/eidmw/cardlayer/PCSC.cpp

    r5 r133  
    505505        { 
    506506        case 0x9000: lRet = EIDMW_OK; break; 
     507        case 0x6400: lRet = EIDMW_ERR_TIMEOUT; break; 
     508        case 0x6401: lRet = EIDMW_ERR_PIN_CANCEL; break; 
     509        case 0x6402: lRet = EIDMW_NEW_PINS_DIFFER; break; 
     510        case 0x6403: lRet = EIDMW_WRONG_PIN_FORMAT; break; 
    507511        case 0x6982: lRet = EIDMW_ERR_NOT_AUTHENTICATED; break; 
    508512        case 0x6B00: lRet = EIDMW_ERR_BAD_P1P2; break; 
     
    510514        case 0x6986: lRet = EIDMW_ERR_CMD_NOT_ALLOWED; break; 
    511515        case 0x6A82: lRet = EIDMW_ERR_FILE_NOT_FOUND; break; 
     516        case 0x6B80: lRet = EIDMW_PINPAD_ERR; break; 
    512517        } 
    513518 
  • middleware-offline/trunk/_src/eidmw/cardlayer/Pinpad.cpp

    r34 r133  
    22 
    33 * eID Middleware Project. 
    4  * Copyright (C) 2008-2009 FedICT. 
     4 * Copyright (C) 2008-2012 FedICT, Caixa Magica Software 
    55 * 
    66 * This is free software; you can redistribute it and/or modify it 
     
    2121#include "Context.h" 
    2222#include "pinpad2.h" 
     23#include "GempcPinpad.h" 
     24#include "GenericPinpad.h" 
     25#include "ACR83Pinpad.h" 
     26 
    2327#include "../common/Log.h" 
    2428#include "../common/Util.h" 
    2529#include "../common/Config.h" 
    26  
    27 // Make sure PP_DUMP_CMDS is not defined in a release! 
    28 #define PP_DUMP_CMDS 
    29 // #undef PP_DUMP_CMDS 
     30#include <cstring> 
    3031 
    3132namespace eIDMW 
    3233{ 
    3334 
    34 CPinpad::CPinpad(void) 
     35CPinpad::CPinpad(CContext *poContext, 
     36                         const std::string & csReader) 
    3537{ 
    36         m_bNewCard = true; 
    37         m_ulLangCode = 0; 
    38         m_usReaderFirmVers = 0; 
     38        m_poContext = poContext; 
     39        m_csReader = csReader; 
     40 
    3941} 
    4042 
    41 void CPinpad::Init(CContext *poContext, SCARDHANDLE hCard, 
    42         const std::string & csReader, const std::string & csPinpadPrefix) 
     43//Factory method for Pinpad Implementations, detection is based on reader name 
     44GenericPinpad *CPinpad::getPinpadHandler(SCARDHANDLE hCard) 
    4345{ 
    44     m_poContext = poContext; 
    45     m_hCard = hCard; 
    46         m_csReader = csReader; 
     46        GenericPinpad * pinpad_handler = NULL;  
    4747 
    48         // We only unload the pinpad lib that is currently 
    49         // loaded if another type of card is inserted then 
    50         // the card before the current one. 
    51         if (csPinpadPrefix != m_csPinpadPrefix) 
    52                 UnloadPinpadLib(); 
     48        if (strstr(m_csReader.c_str(), "GemPC Pinpad") != NULL ||  
     49        strstr(m_csReader.c_str(), "GemPCPinpad") != NULL) 
     50                pinpad_handler = new GemPcPinpad(m_poContext, hCard, m_csReader); 
    5351 
    54         m_csPinpadPrefix = csPinpadPrefix; 
     52        else if (strstr(m_csReader.c_str(), "ACR83U") != NULL) 
     53                pinpad_handler = new ACR83Pinpad(m_poContext, hCard, m_csReader);  
     54 
     55        else  
     56                pinpad_handler = new GenericPinpad(m_poContext, hCard, m_csReader); 
     57 
     58        return pinpad_handler;   
     59 
    5560} 
    5661 
    57 void CPinpad::Init(CContext *poContext, SCARDHANDLE hCard, 
    58         const std::string & csReader, const std::string & csPinpadPrefix, 
    59         CByteArray usReaderFirmVers) 
     62bool CPinpad::UsePinpad() 
    6063{ 
    61         this->Init(poContext, hCard,csReader,csPinpadPrefix); 
     64        GetFeatureList(); 
    6265 
    63         m_usReaderFirmVers = usReaderFirmVers.GetByte(3)*256 + usReaderFirmVers.GetByte(2); 
    64 } 
    65  
    66 bool CPinpad::UsePinpad(tPinOperation operation) 
    67 { 
    68         if (m_bNewCard) 
    69         { 
    70                 m_bUsePinpadLib = m_oPinpadLib.Load((unsigned long) m_poContext->m_oPCSC.m_hContext, 
    71                         m_hCard, m_csReader, m_csPinpadPrefix, GetLanguage()); 
    72  
    73                 // The GemPC pinpad reader does a "Verify PIN" with empty buffer in an attempt 
    74                 // to get and display the remainings attempts. But the BE eID card takes this 
    75                 // empty buffer to be a bad PIN, so you quickly end up with a blocked card. 
    76                 // Therefore, we don't allow this reader to be used as a pinpad reader.. 
    77                 /*if (!m_bUsePinpadLib && StartsWith(m_csReader.c_str(), "Gemplus GemPC Pinpad")) 
    78                         return false; 
    79                         */ 
    80  
    81                 GetFeatureList(); 
    82         } 
    83  
    84         switch (operation) 
    85         { 
    86         case PIN_OP_VERIFY: return m_bCanVerifyUnlock; 
    87         case PIN_OP_CHANGE: return m_bCanChangeUnlock; 
    88         default: return false; 
    89         } 
    90 } 
    91  
    92 // See par 4.1.11.3 bmFormatString description 
    93 unsigned char CPinpad::ToFormatString(const tPin & pin) 
    94 { 
    95         switch(pin.encoding) 
    96         { 
    97         case PIN_ENC_ASCII: 
    98                 return 0x00 | 0x00 | 0x00 | 0x02; 
    99         case PIN_ENC_BCD: 
    100                 return 0x00 | 0x00 | 0x00 | 0x01; 
    101         case PIN_ENC_GP: 
    102                 // READER FIX: 
    103                 // The SPR532 reader wants this value to be as for BCD 
    104                 const char *csReader = m_csReader.c_str(); 
    105                 if ( (m_usReaderFirmVers != 0x0000) && (m_usReaderFirmVers < 0x0506) &&  
    106                         (strstr(csReader, "SPRx32 USB") != NULL) ) 
    107                 { 
    108                         return 0x00 | 0x00 | 0x00 | 0x01; 
    109                 } 
    110                 return 0x80 | 0x08 | 0x00 | 0x01; 
    111         } 
    112         return 0; 
    113 } 
    114  
    115 // See par 4.1.11.4 bmPINBlockString description 
    116 unsigned char CPinpad::ToPinBlockString(const tPin & pin) 
    117 { 
    118         switch(pin.encoding) 
    119         { 
    120         case PIN_ENC_ASCII: 
    121                 return (unsigned char ) pin.ulStoredLen; 
    122         case PIN_ENC_BCD: 
    123                 return (unsigned char ) pin.ulStoredLen; 
    124         case PIN_ENC_GP: 
    125                 return 0x40 | (unsigned char ) (pin.ulStoredLen - 1); 
    126         } 
    127         return (unsigned char ) pin.ulStoredLen; 
    128 } 
    129  
    130 // See par 4.1.11.5 bmPINLengthFormat 
    131 unsigned char CPinpad::ToPinLengthFormat(const tPin & pin) 
    132 { 
    133         switch(pin.encoding) 
    134         { 
    135         case PIN_ENC_ASCII: 
    136                 return 0x00 | 0x00; 
    137         case PIN_ENC_BCD: 
    138                 return 0x00 | 0x00; 
    139         case PIN_ENC_GP: 
    140                 return 0x00 | 0x04; 
    141         } 
    142         return 0x00; 
    143 } 
    144  
    145 unsigned char CPinpad::GetMaxPinLen(const tPin & pin) 
    146 { 
    147         unsigned char ucRes = (unsigned char) 
    148                 (pin.ulMaxLen > 0 ? pin.ulMaxLen : pin.ulStoredLen); 
    149  
    150         // READER FIX: 
    151         // Limitation of the GemPC reader: at most 8 PIN digits 
    152         const char *csReader = m_csReader.c_str(); 
    153         if (strstr(csReader, "Gemplus GemPC Pinpad") == csReader) 
    154                 ucRes = (ucRes > 8) ? 8 : ucRes; 
    155  
    156         return ucRes; 
    157 } 
    158  
    159 CByteArray CPinpad::PinCmd(tPinOperation operation, 
    160         const tPin & pin, unsigned char ucPinType, 
    161     const CByteArray & oAPDU, unsigned long & ulRemaining, 
    162     bool bShowDlg) 
    163 { 
    164         if (!UsePinpad(operation)) 
    165                 throw CMWEXCEPTION(EIDMW_ERR_PIN_OPERATION); 
    166  
    167         CByteArray oResp; 
    168         if (operation == PIN_OP_VERIFY) 
    169                 oResp = PinCmd1(operation, pin, ucPinType, oAPDU, ulRemaining,bShowDlg); 
    170         else 
    171                 oResp = PinCmd2(operation, pin, ucPinType, oAPDU, ulRemaining,bShowDlg); 
    172  
    173         if (oResp.Size() != 2) 
    174         { 
    175           MWLOG(LEV_ERROR, MOD_CAL, L"pinpad reader returned %ls\n", oResp.ToWString().c_str()); 
    176           return EIDMW_ERR_UNKNOWN; // should never happen 
    177         } 
    178  
    179         const unsigned char *pucSW12 = oResp.GetBytes(); 
    180         if (pucSW12[0] == 0x64 && pucSW12[1] == 0x00) 
    181                 throw CMWEXCEPTION(EIDMW_ERR_TIMEOUT); 
    182         if (pucSW12[0] == 0x64 && pucSW12[1] == 0x01) 
    183                 throw CMWEXCEPTION(EIDMW_ERR_PIN_CANCEL); 
    184         if (pucSW12[0] == 0x64 && pucSW12[1] == 0x02) 
    185                 throw CMWEXCEPTION(EIDMW_NEW_PINS_DIFFER); 
    186         if (pucSW12[0] == 0x64 && pucSW12[1] == 0x03) 
    187                 throw CMWEXCEPTION(EIDMW_WRONG_PIN_FORMAT); 
    188         if (pucSW12[0] == 0x6B && pucSW12[1] == 0x80) 
    189                 throw CMWEXCEPTION(EIDMW_PINPAD_ERR); 
    190  
    191         return oResp; 
    192 } 
    193  
    194 /** For operations involving 1 PIN */ 
    195 CByteArray CPinpad::PinCmd1(tPinOperation operation, 
    196         const tPin & pin, unsigned char ucPinType, 
    197     const CByteArray & oAPDU, unsigned long & ulRemaining, 
    198     bool bShowDlg) 
    199 { 
    200         EIDMW_PP_VERIFY_CCID xVerifyCmd; 
    201         unsigned long ulVerifyCmdLen; 
    202  
    203         memset(&xVerifyCmd, 0, sizeof(xVerifyCmd)); 
    204         xVerifyCmd.bTimerOut = 30; 
    205         xVerifyCmd.bTimerOut2 = 30; 
    206         xVerifyCmd.bmFormatString = ToFormatString(pin); 
    207         xVerifyCmd.bmPINBlockString = ToPinBlockString(pin); 
    208         xVerifyCmd.bmPINLengthFormat = ToPinLengthFormat(pin); 
    209         xVerifyCmd.wPINMaxExtraDigit[0] = GetMaxPinLen(pin); 
    210         xVerifyCmd.wPINMaxExtraDigit[1] = (unsigned char) pin.ulMinLen; 
    211         xVerifyCmd.bEntryValidationCondition = 0x02; 
    212         xVerifyCmd.bNumberMessage = 0x01; 
    213         ToUchar2(m_ulLangCode, xVerifyCmd.wLangId), 
    214         xVerifyCmd.bMsgIndex = 0; 
    215         ToUchar4(oAPDU.Size(), xVerifyCmd.ulDataLength); 
    216         memcpy(xVerifyCmd.abData, oAPDU.GetBytes(), oAPDU.Size()); 
    217         ulVerifyCmdLen = sizeof(xVerifyCmd) - PP_APDU_MAX_LEN + oAPDU.Size(); 
    218  
    219         CByteArray oCmd((unsigned char *) &xVerifyCmd, ulVerifyCmdLen); 
    220         if (m_ioctlVerifyDirect) 
    221         { 
    222                 return PinpadControl(m_ioctlVerifyDirect, oCmd, operation, 
    223                         ucPinType, pin.csLabel, bShowDlg); 
    224         } 
    225         else 
    226         { 
    227                 PinpadControl(m_ioctlVerifyStart, oCmd, operation, 
    228                         ucPinType, pin.csLabel, false); 
    229                 return PinpadControl(m_ioctlVerifyFinish, CByteArray(), operation, 
    230                         ucPinType, "", bShowDlg); 
    231         } 
    232 } 
    233  
    234 /** For operations involving 2 PINs */ 
    235 CByteArray CPinpad::PinCmd2(tPinOperation operation, 
    236         const tPin & pin, unsigned char ucPinType, 
    237     const CByteArray & oAPDU, unsigned long & ulRemaining, 
    238     bool bShowDlg) 
    239 { 
    240         EIDMW_PP_CHANGE_CCID xChangeCmd; 
    241         unsigned long ulChangeCmdLen; 
    242  
    243         memset(&xChangeCmd, 0, sizeof(xChangeCmd)); 
    244         xChangeCmd.bTimerOut = 30; 
    245         xChangeCmd.bTimerOut2 = 30; 
    246         xChangeCmd.bmFormatString = ToFormatString(pin); 
    247         xChangeCmd.bmPINBlockString = ToPinBlockString(pin); 
    248         xChangeCmd.bmPINLengthFormat = ToPinLengthFormat(pin); 
    249         xChangeCmd.bInsertionOffsetOld = 0x00; 
    250         xChangeCmd.bInsertionOffsetNew = (unsigned char) pin.ulStoredLen; 
    251         xChangeCmd.wPINMaxExtraDigit[0] = GetMaxPinLen(pin); 
    252         xChangeCmd.wPINMaxExtraDigit[1] = (unsigned char) pin.ulMinLen; 
    253         xChangeCmd.bConfirmPIN = 0x03; 
    254         xChangeCmd.bEntryValidationCondition = 0x02; 
    255         xChangeCmd.bNumberMessage = 0x03; 
    256         ToUchar2(m_ulLangCode, xChangeCmd.wLangId); 
    257         xChangeCmd.bMsgIndex1 = 0x00; 
    258         xChangeCmd.bMsgIndex2 = 0x01; 
    259         xChangeCmd.bMsgIndex3 = 0x02; 
    260         ToUchar4(oAPDU.Size(), xChangeCmd.ulDataLength); 
    261         memcpy(xChangeCmd.abData, oAPDU.GetBytes(), oAPDU.Size()); 
    262         ulChangeCmdLen = sizeof(xChangeCmd) - PP_APDU_MAX_LEN + oAPDU.Size(); 
    263  
    264         CByteArray oCmd((unsigned char *) &xChangeCmd, ulChangeCmdLen); 
    265         if (m_ioctlChangeDirect) 
    266         { 
    267                 return PinpadControl(m_ioctlChangeDirect, oCmd, operation, 
    268                         ucPinType, pin.csLabel, bShowDlg); 
    269         } 
    270         else 
    271         { 
    272                 PinpadControl(m_ioctlChangeStart, oCmd, operation, 
    273                         ucPinType, pin.csLabel, false); 
    274                 return PinpadControl(m_ioctlChangeFinish, CByteArray(), operation, 
    275                         ucPinType, "", bShowDlg); 
    276         } 
    277 } 
    278  
    279 void CPinpad::UnloadPinpadLib() 
    280 { 
    281         m_bNewCard = true; 
    282         m_bCanVerifyUnlock = false; 
    283         m_bCanChangeUnlock = false; 
    284         m_bUsePinpadLib = false; 
    285         m_oPinpadLib.Unload(); 
     66        return m_bCanVerifyUnlock; 
    28667} 
    28768 
     
    29071        const std::string & csPinLabel, bool bShowDlg) 
    29172{ 
    292         unsigned char pinpadOperation = PinOperation2Lib(operation); 
    29373 
    294 #ifdef PP_DUMP_CMDS 
    295         //printf("PP ctrl (%svia pinpad lib): 0x%0x\n", (m_bUsePinpadLib ? "" : "not "), ulControl); 
    296         //printf("PP IN: %s\n", oCmd.ToString(true, false, 0, 0xFFFFFFFF).c_str()); 
    297 #endif 
     74        bool bCloseDlg = bShowDlg; 
     75        CByteArray oResp; 
    29876 
    299         unsigned long ulDlgHandle; 
    300         bool bCloseDlg = bShowDlg; 
    301         if (bShowDlg) 
    302                 bCloseDlg = m_oPinpadLib.ShowDlg(pinpadOperation, 
    303                 ucPintype, csPinLabel, m_csReader, &ulDlgHandle); 
     77        // Try if we can connect to the card via a normal SCardConnect() 
     78        SCARDHANDLE hCard = 0; 
     79        try  
     80        { 
     81                hCard = m_poContext->m_oPCSC.Connect(m_csReader); 
     82                if (hCard == 0){ 
     83                        goto done; 
     84                } 
     85        } 
     86        catch(CMWException &e) 
     87        { 
     88                if (e.GetError() == (long)EIDMW_ERR_NO_CARD) 
     89                        goto done; 
     90                if (e.GetError() != (long)EIDMW_ERR_CANT_CONNECT && e.GetError() != (long)EIDMW_ERR_CARD_COMM) 
     91                        throw; 
     92                hCard = 0; 
     93        } 
    30494 
    305         CByteArray oResp; 
     95 
    30696        try 
    30797        { 
    308                 if (!m_bUsePinpadLib) 
    309                 { 
    310                         oResp = m_poContext->m_oPCSC.Control(m_hCard, ulControl, oCmd); 
    311                 } 
    312                 else 
    313                 { 
    314                         oResp = m_oPinpadLib.PinCmd(m_hCard, ulControl, oCmd, ucPintype, 
    315                                 pinpadOperation); 
    316                 } 
     98                        oResp = m_poContext->m_oPCSC.Control(hCard, ulControl, oCmd); 
    31799        } 
    318100        catch (...) 
    319101        { 
    320                 if (bShowDlg) 
    321                         m_oPinpadLib.CloseDlg(ulDlgHandle); 
    322102                throw ; 
    323103        } 
    324         if (bShowDlg) 
    325                 m_oPinpadLib.CloseDlg(ulDlgHandle); 
    326104 
    327 #ifdef PP_DUMP_CMDS 
    328         //printf("PP OUT: %s\n", oResp.ToString(true, false, 0, 0xFFFFFFFF).c_str()); 
    329 #endif 
    330  
     105        m_poContext->m_oPCSC.Disconnect(hCard, DISCONNECT_LEAVE_CARD); 
     106         
     107done: 
    331108        return oResp; 
    332109} 
     
    370147                        m_bCanChangeUnlock = (m_ioctlChangeStart && m_ioctlChangeFinish) || m_ioctlChangeDirect; 
    371148 
    372                         if (m_bCanVerifyUnlock || m_bCanChangeUnlock) 
    373                                 m_ulLangCode = GetLanguage(); 
    374149                } 
    375150        } 
     
    381156        } 
    382157 
    383         m_bNewCard = false; 
    384158} 
    385159 
    386 unsigned char CPinpad::PinOperation2Lib(tPinOperation operation) 
    387 { 
    388         switch(operation) 
    389         { 
    390         case PIN_OP_VERIFY: return EIDMW_PP_OP_VERIFY; 
    391         case PIN_OP_CHANGE: return EIDMW_PP_OP_CHANGE; 
    392         // Add others when needed 
    393         default: throw CMWEXCEPTION(EIDMW_ERR_CHECK); 
    394         } 
    395 } 
    396  
    397 unsigned long CPinpad::GetLanguage() 
    398 { 
    399         if (m_ulLangCode == 0) 
    400         { 
    401                 m_ulLangCode =  PP_LANG_EN; 
    402                 std::wstring csLang = CConfig::GetString(CConfig::EIDMW_CONFIG_PARAM_GENERAL_LANGUAGE); 
    403                 if (csLang == L"nl") 
    404                         m_ulLangCode = PP_LANG_NL; 
    405                 else if (csLang == L"fr") 
    406                         m_ulLangCode = PP_LANG_FR; 
    407                 else if (csLang == L"de") 
    408                         m_ulLangCode = PP_LANG_DE; 
    409         } 
    410         return m_ulLangCode; 
    411 } 
    412160 
    413161} 
    414162 
    415 /**************************** logs ******************* 
    416  
    417 1. SPR532 (driver 2.14_2.11, firmware 5.05) 
    418  
    419 Verify: 
    420         1E 1E 01 47 04 08 04 02 01 CD CD 00 00 00 00 0D 
    421         00 00 00 00 20 00 01 08 20 FF FF FF FF FF FF FF 
    422  
    423 Change: 
    424         1E 1E 01 47 04 00 08 0C 04 03 02 03 CD CD 00 00 
    425         00 00 00 00 15 00 00 00 00 24 00 01 10 20 FF FF 
    426         FF FF FF FF FF 20 FF FF FF FF FF FF FF 
    427  
    428 Note: bmFormatString must be 01 (instead of 89) !!! 
    429  
    430  
    431 2. GemPC pinpad 
    432  
    433 Verify: 
    434         1E 1E 89 47 04 08 04 02 01 CD CD 00 00 00 00 0D 
    435         00 00 00 00 20 00 01 08 20 FF FF FF FF FF FF FF 
    436  
    437 Change: 
    438         1E 1E 89 47 04 00 08 08 04 03 02 03 CD CD 00 00 
    439         00 00 00 00 15 00 00 00 00 24 00 01 10 20 FF FF 
    440         FF FF FF FF FF 20 FF FF FF FF FF FF FF 
    441 00 
    442 Note: wPINMaxExtraDigit[0] must be at most 8 (instead of 12) !! 
    443  
    444 ******************************************************/ 
  • middleware-offline/trunk/_src/eidmw/cardlayer/Pinpad.h

    r25 r133  
    3232#define PINPAD_H 
    3333 
     34#include "GenericPinpad.h" 
    3435#include "P15Objects.h" 
    3536#include "InternalConst.h" 
    36 #include "PinpadLib.h" 
    3737 
    3838namespace eIDMW 
     
    4343{ 
    4444public: 
    45     CPinpad(void); 
     45    CPinpad(CContext *poContext, 
     46                         const std::string & csReader); 
    4647 
    47         void Init(CContext *poContext, SCARDHANDLE hCard, 
    48                 const std::string & csReader, const std::string & csPinpadPrefix); 
    49         void Init(CContext *poContext, SCARDHANDLE hCard, 
    50                 const std::string & csReader, const std::string & csPinpadPrefix, 
    51                 CByteArray usReaderFirmVers); 
    52  
    53     bool UsePinpad(tPinOperation operation); 
    54  
    55     CByteArray PinCmd(tPinOperation operation, 
    56                 const tPin & pin, unsigned char ucPinType, 
    57         const CByteArray & oAPDU, unsigned long & ulRemaining, 
    58         bool bShowDlg = true); 
     48    bool UsePinpad(); 
     49    GenericPinpad *getPinpadHandler(SCARDHANDLE hCard); 
    5950 
    6051protected: 
     
    6253                tPinOperation operation, unsigned char ucPintype, 
    6354                const std::string & csPinLabel, bool bShowDlg); 
    64         void UnloadPinpadLib(); 
    6555        void GetFeatureList(); 
    66         unsigned long GetLanguage(); 
    67         unsigned char PinOperation2Lib(tPinOperation operation); 
    68  
    69         unsigned char ToFormatString(const tPin & pin); 
    70         unsigned char ToPinBlockString(const tPin & pin); 
    71         unsigned char ToPinLengthFormat(const tPin & pin); 
    72         unsigned char GetMaxPinLen(const tPin & pin); 
    73  
    74         // For PIN verify and unblock without PIN change (1 PIN needed) 
    75     CByteArray PinCmd1(tPinOperation operation, 
    76         const tPin & pin, unsigned char ucPinType, 
    77     const CByteArray & oAPDU, unsigned long & ulRemaining, 
    78     bool bShowDlg = true); 
    79  
    80         // For PIN change and unblock with PIN change (2 PINs needed) 
    81     CByteArray PinCmd2(tPinOperation operation, 
    82         const tPin & pin, unsigned char ucPinType, 
    83     const CByteArray & oAPDU, unsigned long & ulRemaining, 
    84     bool bShowDlg = true); 
    8556 
    8657        CContext *m_poContext; 
    87     SCARDHANDLE m_hCard; 
     58        SCARDHANDLE m_hCard; 
    8859        std::string m_csReader; 
    89         unsigned short m_usReaderFirmVers; 
    90         std::string m_csPinpadPrefix; 
    91         bool m_bNewCard; 
    92         bool m_bUsePinpadLib; 
    93         unsigned long m_ulLangCode; 
    94  
    95         CPinpadLib m_oPinpadLib; 
    9660 
    9761        bool m_bCanVerifyUnlock;  // Can do operations with 1 PIN 
    9862        bool m_bCanChangeUnlock;  // Can do operations with 2 PINs 
     63 
    9964        unsigned long m_ioctlVerifyStart; 
    10065        unsigned long m_ioctlVerifyFinish; 
     
    10368        unsigned long m_ioctlChangeFinish; 
    10469        unsigned long m_ioctlChangeDirect; 
     70 
     71        unsigned short m_usReaderFirmVers; 
    10572}; 
    10673 
  • middleware-offline/trunk/_src/eidmw/cardlayer/PkiCard.cpp

    r82 r133  
    4747{ 
    4848 
    49 CPkiCard::CPkiCard(SCARDHANDLE hCard, CContext *poContext, CPinpad *poPinpad) : 
     49CPkiCard::CPkiCard(SCARDHANDLE hCard, CContext *poContext, GenericPinpad *poPinpad) : 
    5050CCard(hCard, poContext, poPinpad) 
    5151{ 
     
    5959} 
    6060 
    61 bool CPkiCard::IsPinpadReader() 
    62 { 
    63     return m_poPinpad->UsePinpad(PIN_OP_VERIFY); 
    64 } 
    6561 
    6662bool CPkiCard::ShouldSelectApplet(unsigned char ins, unsigned long ulSW12) 
     
    104100    unsigned long ulOffset, unsigned long ulMaxLen) 
    105101{ 
    106         //printf("CPkiCard ulOffset: %ld - ulMaxLen: %ld\n",ulOffset,ulMaxLen); 
    107         //std::cout << "csPath: " << csPath << "\n"; 
    108  
    109102        CByteArray oData(ulMaxLen); 
    110103 
     
    150143        MWLOG(LEV_INFO, MOD_CAL, L"   Read file %ls (%d bytes) from card", 
    151144                utilStringWiden(csPath).c_str(), oData.Size()); 
    152  
    153         //printf(".... Read file %ls (%d bytes) from card\n",utilStringWiden(csPath).c_str(),oData.Size()); 
    154145 
    155146    return oData; 
     
    223214        // No standard for Logoff, so each card has to implement 
    224215        // it's own command here. 
    225         if (operation == PIN_OP_LOGOFF ) 
     216        if (operation == PIN_OP_LOGOFF) 
    226217                return LogOff(Pin); 
    227218 
     
    230221        const std::string *pcsPin1 = &csPin1; 
    231222        const std::string *pcsPin2 = &csPin2; 
     223        // martinho: usually each party have half of the puk (current puk size = 8) [puk ulMinLen = 8, ulMaxLen = 12] 
     224                // martinho: condition to puk merge: csPin1 size < current puk size. the condition Pin.ulPinRef & 0x10 is a way to identify puks. 
     225        bool bPukMerge = (Pin.ulPinRef & 0x10) && !csPin1.empty() && csPin1.length() < Pin.ulMinLen; 
    232226        bool bAskPIN = csPin1.empty(); 
    233         bool bUsePinpad = bAskPIN ? m_poPinpad->UsePinpad(operation) : false; 
     227        bool bUsePinpad = bAskPIN ? m_poPinpad != NULL : false; 
     228; 
    234229 
    235230bad_pin: 
     
    242237        } 
    243238 
    244     CByteArray oPinBuf = MakePinBuf(Pin, *pcsPin1, bUsePinpad); 
     239    CByteArray oPinBuf = MakePinBuf(Pin, *pcsPin1, bUsePinpad, bPukMerge); 
    245240    if (operation != PIN_OP_VERIFY) 
    246         oPinBuf.Append(MakePinBuf(Pin, *pcsPin2, bUsePinpad)); 
     241        oPinBuf.Append(MakePinBuf(Pin, *pcsPin2, bUsePinpad, bPukMerge)); 
    247242 
    248243    CByteArray oAPDU = MakePinCmd(operation, Pin); // add CLA, INS, P1, P2 
     
    283278                throw CMWEXCEPTION(m_poContext->m_oPCSC.SW12ToErr(ulSW12)); 
    284279 
     280        //Wrong PIN with no user interaction: return false and don't ask for retries 
     281        if (!bRet && !bShowDlg) 
     282        { 
     283            return bRet; 
     284        } 
    285285        // Bad PIN: show a dialog to ask the user to try again 
    286286        // PIN blocked: show a dialog to tell the user 
    287         if (bAskPIN && !bRet) 
     287        else if (bAskPIN && !bRet) 
    288288        { 
    289289                DlgPinUsage usage = PinUsage2Dlg(Pin, pKey); 
     
    316316        const std::string *pcsPin1 = &csPin1; 
    317317        const std::string *pcsPin2 = &csPin2; 
    318         bool bAskPIN = csPin1.empty(); 
    319         bool bUsePinpad = bAskPIN ? m_poPinpad->UsePinpad(operation) : false; 
     318        // martinho: usually each party have half of the puk (current puk size = 8) [puk ulMinLen = 8, ulMaxLen = 12] 
     319        // martinho: condition to puk merge: csPin1 size < current puk size. the condition Pin.ulPinRef & 0x10 is a way to identify puks. 
     320        bool bPukMerge = (Pin.ulPinRef & 0x10) && !csPin1.empty() && csPin1.length() < Pin.ulMinLen; 
     321        bool bAskPIN = csPin1.empty() || bPukMerge; 
     322        bool bUsePinpad = bAskPIN ? m_poPinpad != NULL : false; 
    320323 
    321324bad_pin: 
     
    328331        } 
    329332 
    330     CByteArray oPinBuf = MakePinBuf(Pin, *pcsPin1, bUsePinpad); 
     333    CByteArray oPinBuf = MakePinBuf(Pin, *pcsPin1, bUsePinpad, bPukMerge); 
    331334    CByteArray oAPDU; 
    332335    CByteArray oAPDUCHANGE; 
     
    364367                oAPDUCHANGE = MakePinCmdIAS(operation, Pin); // add CLA, INS, P1, P2 
    365368                oAPDUCHANGE.Append((unsigned char) oPinBuf.Size());  // add P3 
    366                 oAPDUCHANGE.Append(MakePinBuf(Pin, *pcsPin2, bUsePinpad)); 
     369                oAPDUCHANGE.Append(MakePinBuf(Pin, *pcsPin2, bUsePinpad, bPukMerge)); 
    367370                break; 
    368371        } 
     
    382385 
    383386                // Send the command 
    384                 if (csPin1.empty() && bUsePinpad) { 
    385                         oResp = m_poPinpad->PinCmd(operation, Pin, 
    386                         PinUsage2Pinpad(Pin, pKey), oAPDU, ulRemaining, bShowDlg); 
     387                if (bAskPIN && bUsePinpad) { 
     388 
     389                        if (operation == PIN_OP_CHANGE) 
     390                        { 
     391                                oResp = m_poPinpad->PinCmd(PIN_OP_VERIFY, Pin, 
     392                                                PinUsage2Pinpad(Pin, pKey), oAPDU, ulRemaining, bShowDlg); 
     393 
     394                                unsigned long ulSW12 = getSW12(oResp); 
     395                                if (ulSW12 == 0x9000) 
     396                                        oResp = m_poPinpad->PinCmd(operation, Pin, 
     397                                                        PinUsage2Pinpad(Pin, pKey), oAPDUCHANGE, ulRemaining, bShowDlg); 
     398                        } 
     399                        else 
     400                                oResp = m_poPinpad->PinCmd(operation, Pin, 
     401                                                PinUsage2Pinpad(Pin, pKey), oAPDU, ulRemaining, bShowDlg); 
     402 
    387403                } else { 
    388404                        switch(operation){ 
     
    393409                        case PIN_OP_CHANGE: 
    394410                                oResp = SendAPDU(oAPDU); 
    395                                 oResp = SendAPDU(oAPDUCHANGE); 
     411 
     412                                unsigned long ulSW12 = getSW12(oResp); 
     413                                if (ulSW12 == 0x9000) 
     414                                        oResp = SendAPDU(oAPDUCHANGE); 
    396415                                break; 
    397416                        } 
     
    410429                throw CMWEXCEPTION(m_poContext->m_oPCSC.SW12ToErr(ulSW12)); 
    411430 
     431        // Wrong PIN with no user interaction: return false and don't ask for retries 
     432        if (!bRet && !bShowDlg) 
     433        { 
     434            return bRet; 
     435        } 
    412436        // Bad PIN: show a dialog to ask the user to try again 
    413437        // PIN blocked: show a dialog to tell the user 
    414         if (bAskPIN && !bRet) 
     438        else if (bAskPIN && !bRet) 
    415439        { 
    416440                DlgPinUsage usage = PinUsage2Dlg(Pin, pKey); 
     
    461485CByteArray CPkiCard::GetRandom(unsigned long ulLen) 
    462486{ 
    463     cout << "GetRandom Get Challenge" << endl; 
    464487        CAutoLock oAutoLock(this); 
    465488 
     
    612635CByteArray CPkiCard::MakePinCmd(tPinOperation operation, const tPin & Pin) 
    613636{ 
    614     //DEBUG 
    615     //cout << "MakePin" << endl; 
    616637    CByteArray oCmd(5 + 32); 
    617638 
     
    638659CByteArray CPkiCard::MakePinCmdIAS(tPinOperation operation, const tPin & Pin) 
    639660{ 
    640     //DEBUG 
    641     //cout << "MakePin" << endl; 
    642661    CByteArray oCmd(5 + 32); 
    643662 
     
    667686 
    668687CByteArray CPkiCard::MakePinBuf(const tPin & Pin, const std::string & csPin, 
    669         bool bEmptyPin) 
     688        bool bEmptyPin, bool bPukMerge) 
    670689{ 
    671690    CByteArray oBuf(16); 
    672691    unsigned long i; 
    673692 
    674         unsigned long ulPinLen = bEmptyPin ? 0 : (unsigned long) csPin.size(); 
     693        unsigned long ulPinLen = bEmptyPin && !bPukMerge ? 0 : (unsigned long) csPin.size(); 
    675694 
    676695        if (!bEmptyPin) 
     
    688707                } 
    689708        } 
    690  
    691709        for (i = 0; i < ulPinLen; i++) 
    692710    { 
     
    701719    { 
    702720    case PIN_ENC_ASCII: 
    703         for (i = 0; i < ulPinLen; i++) 
    704             oBuf.Append((unsigned char) csPin[i]); 
    705         for ( ; i < Pin.ulStoredLen; i++) 
    706             oBuf.Append(Pin.ucPadChar); 
     721        if (bPukMerge){ 
     722                for (i = 0; i < Pin.ulStoredLen - ulPinLen; i++) 
     723                        oBuf.Append(Pin.ucPadChar); 
     724                for ( ; i < Pin.ulStoredLen; i++){ 
     725                        oBuf.Append((unsigned char)csPin[i-(Pin.ulStoredLen - ulPinLen)]); 
     726                } 
     727        } else { 
     728                for (i = 0; i < ulPinLen; i++) 
     729                        oBuf.Append((unsigned char) csPin[i]); 
     730                for ( ; i < Pin.ulStoredLen; i++) 
     731                        oBuf.Append(Pin.ucPadChar); 
     732        } 
    707733        break; 
    708734    case PIN_ENC_GP: 
     
    729755        throw CMWEXCEPTION(EIDMW_ERR_PARAM_BAD); 
    730756    } 
     757 
    731758    return oBuf; 
    732759} 
  • middleware-offline/trunk/_src/eidmw/cardlayer/PkiCard.h

    r82 r133  
    3636{ 
    3737public: 
    38     CPkiCard(SCARDHANDLE hCard, CContext *poContext, CPinpad *poPinpad); 
     38    CPkiCard(SCARDHANDLE hCard, CContext *poContext, GenericPinpad *poPinpad); 
    3939    virtual ~CPkiCard(void); 
    40  
    41     virtual bool IsPinpadReader(); 
    4240 
    4341    virtual tCardType GetType() = 0; 
     
    9896    virtual CByteArray MakePinCmd(tPinOperation operation, const tPin & Pin); 
    9997    virtual CByteArray MakePinCmdIAS(tPinOperation operation, const tPin & Pin); 
    100     virtual CByteArray MakePinBuf(const tPin & Pin, const std::string & csPin, bool bEmptyPin); 
     98    virtual CByteArray MakePinBuf(const tPin & Pin, const std::string & csPin, bool bEmptyPin, bool bPukMerge); 
    10199 
    102100    virtual void SetSecurityEnv(const tPrivKey & key, unsigned long algo, 
  • middleware-offline/trunk/_src/eidmw/cardlayer/Reader.cpp

    r82 r133  
    7272{ 
    7373    m_csReader = csReader; 
    74         m_wsReader = utilStringWiden(csReader); 
     74    m_wsReader = utilStringWiden(csReader); 
    7575    m_poContext = poContext; 
    7676    m_poCard = NULL; 
    77         m_bIgnoreRemoval = false; 
     77    m_bIgnoreRemoval = false; 
     78    m_oPinpad = new CPinpad(m_poContext, m_csReader);    
    7879} 
    7980 
     
    139140                if (m_poContext->m_oPCSC.Status(m_csReader)){ 
    140141                        status = Connect() ? CARD_INSERTED : CARD_NOT_PRESENT; 
    141                 }else 
     142                } 
     143                else 
    142144                        status = CARD_NOT_PRESENT; 
    143145        } 
     
    182184bool CReader::Connect() 
    183185{ 
    184     if (m_poCard != NULL) 
    185         Disconnect(DISCONNECT_LEAVE_CARD); 
    186          
    187  
    188     m_poCard = CardConnect(m_csReader, m_poContext, &m_oPinpad, m_oCardPluginLib); 
    189186        if (m_poCard != NULL) 
    190         { 
    191                 //printf("We have a new card... a unknown one?!?\n"); 
     187                Disconnect(DISCONNECT_LEAVE_CARD); 
     188 
     189        m_poCard = CardConnect(m_csReader, m_poContext, NULL, m_oCardPluginLib); 
     190        if (m_poCard != NULL) 
     191        { 
    192192                m_oPKCS15.SetCard(m_poCard); 
    193 #ifdef WIN32 
    194                 /*if((strstr(m_csReader.c_str(), "SPRx32 USB") != NULL)) 
     193                if (m_oPinpad->UsePinpad()) 
    195194                { 
    196                         m_oPinpad.Init(m_poContext, m_poCard->m_hCard, 
    197                                 m_csReader, m_poCard->GetPinpadPrefix(), m_poCard->GetIFDVersion()); 
     195                        std::cout << "Using Pinpad reader." << std::endl; 
     196                        m_poCard->setPinpadHandler(m_oPinpad->getPinpadHandler(m_poCard->m_hCard)); 
     197 
    198198                } 
    199199                else 
    200                 {*/ 
    201 #endif 
    202                         m_oPinpad.Init(m_poContext, m_poCard->m_hCard, 
    203                                 m_csReader, m_poCard->GetPinpadPrefix()); 
    204 #ifdef WIN32 
    205                 //} 
    206 #endif 
     200                        std::cerr << "Using non-pinpad reader." << std::endl; 
     201 
    207202                MWLOG(LEV_INFO, MOD_CAL, L" Connected to %ls card in reader %ls", 
    208                         Type2String(m_poCard->GetType()), m_wsReader.c_str()); 
    209         } 
    210  
    211         return m_poCard != 0; 
     203                                Type2String(m_poCard->GetType()), m_wsReader.c_str()); 
     204        } 
     205 
     206        return m_poCard != NULL; 
    212207} 
    213208 
     
    253248} 
    254249 
     250/*TODO: Is this really needed?    */ 
    255251bool CReader::IsPinpadReader() 
    256252{ 
    257     if (m_poCard == NULL) 
    258         throw CMWEXCEPTION(EIDMW_ERR_NO_CARD); 
    259  
    260     return m_poCard->IsPinpadReader(); 
     253    return m_oPinpad->UsePinpad(); 
    261254} 
    262255 
  • middleware-offline/trunk/_src/eidmw/cardlayer/Reader.h

    r82 r133  
    2323#include "Pinpad.h" 
    2424#include "../common/Hash.h" 
     25#include "../common/DynamicLib.h" 
    2526 
    2627namespace eIDMW 
     
    190191    CCard *m_poCard; 
    191192    CPKCS15 m_oPKCS15; 
    192     CPinpad m_oPinpad; 
    193         CDynamicLib m_oCardPluginLib; 
     193    CPinpad *m_oPinpad; 
     194    CDynamicLib m_oCardPluginLib; 
    194195     
    195196    friend class CCardLayer; // calls the CReader constructor 
  • middleware-offline/trunk/_src/eidmw/cardlayer/UnknownCard.cpp

    r5 r133  
    3131 
    3232CUnknownCard::CUnknownCard(SCARDHANDLE hCard, CContext *poContext, 
    33         CPinpad *poPinpad, const CByteArray & oData) : 
     33        GenericPinpad *poPinpad, const CByteArray & oData) : 
    3434CCard(hCard, poContext, poPinpad) 
    3535{ 
  • middleware-offline/trunk/_src/eidmw/cardlayer/UnknownCard.h

    r5 r133  
    3535 
    3636        CUnknownCard(SCARDHANDLE hCard, CContext *poContext, 
    37                 CPinpad *poPinpad, const CByteArray & oData); 
     37                GenericPinpad *poPinpad, const CByteArray & oData); 
    3838    ~CUnknownCard(void); 
    3939 
  • middleware-offline/trunk/_src/eidmw/cardlayer/cardlayer.pro

    r34 r133  
    5555           P15Objects.h \ 
    5656           PCSC.h \ 
     57           GenericPinpad.h \ 
    5758           Pinpad.h \ 
    58            PinpadLib.h \ 
    5959           PKCS15.h \ 
    6060           PKCS15Parser.h \ 
     
    6565           UnknownCard.h \ 
    6666           pinpad2.h \ 
     67           GempcPinpad.h \ 
     68           ACR83Pinpad.h \ 
    6769           CardReaderInfo.h 
    6870 
     
    7678           PCSC.cpp \ 
    7779           Pinpad.cpp \ 
    78            PinpadLib.cpp \ 
     80           GenericPinpad.cpp \ 
    7981           P15Correction.cpp \ 
    8082           PKCS15.cpp \ 
     
    8486           ReadersInfo.cpp \ 
    8587           ThreadPool.cpp \ 
     88           GempcPinpad.cpp \ 
     89           ACR83Pinpad.cpp \ 
    8690           UnknownCard.cpp 
    8791 
  • middleware-offline/trunk/_src/eidmw/cardlayer/cardpluginPteid/PteidCard.cpp

    r82 r133  
    3838static const unsigned long ANY_ID_BIGGER_THAN_6 = 7; 
    3939/* martinho - some meaningful label */ 
    40 static const string LABEL = "ACTIVATION_CODE"; 
     40static const string LABEL = "Card Activation Code"; 
    4141/* martinho - date in bcd format must have 4 bytes*/ 
    4242static const unsigned long BCDSIZE = 4; 
     
    5050#ifndef CARDPLUGIN_IN_CAL 
    5151CCard *GetCardInstance(unsigned long ulVersion, const char *csReader, 
    52         unsigned long hCard, CContext *poContext, CPinpad *poPinpad) 
     52        unsigned long hCard, CContext *poContext, GenericPinpad *poPinpad) 
    5353{ 
    5454        return PteidCardGetInstance(ulVersion, csReader, hCard, poContext, poPinpad); 
     
    107107 
    108108CCard *PTeidCardGetVersion (unsigned long ulVersion, const char *csReader, 
    109         SCARDHANDLE hCard, CContext *poContext, CPinpad *poPinpad) 
     109        SCARDHANDLE hCard, CContext *poContext, GenericPinpad *poPinpad) 
    110110{ 
    111111        CCard *poCard = NULL; 
     
    140140 
    141141CCard *PteidCardGetInstance(unsigned long ulVersion, const char *csReader, 
    142         SCARDHANDLE hCard, CContext *poContext, CPinpad *poPinpad) 
     142        SCARDHANDLE hCard, CContext *poContext, GenericPinpad *poPinpad) 
    143143{ 
    144144 
     
    242242 
    243243CPteidCard::CPteidCard(SCARDHANDLE hCard, CContext *poContext, 
    244                      CPinpad *poPinpad, const CByteArray & oData, tSelectAppletMode selectAppletMode, unsigned long ulVersion) : 
     244                     GenericPinpad *poPinpad, const CByteArray & oData, tSelectAppletMode selectAppletMode, unsigned long ulVersion) : 
    245245CPkiCard(hCard, poContext, poPinpad) 
    246246{ 
     
    332332        CByteArray oResp; 
    333333 
     334 
    334335        try 
    335336        { 
    336                 CByteArray select("3F00",true); 
    337                 oResp = SendAPDU(0xA4, 0x00, 0x0C, select); 
    338                 getSW12(oResp, 0x9000); 
    339  
    340                 //4D - extended header list, 04 - size, FFA001 - SDO root CA, 80 - give me all? 
    341                 CByteArray getData("4D04FFA00180",true); 
    342                 oResp = SendAPDU(0xCB, 0x3F, 0xFF, getData); 
    343                 getSW12(oResp, 0x9000); 
    344                 oResp.Chop(2); //martinho: remove the returning code 0x9000 
     337                switch (GetType()){ 
     338                case CARD_PTEID_IAS101: 
     339                { 
     340                        CByteArray select("3F00",true); 
     341                        oResp = SendAPDU(0xA4, 0x00, 0x0C, select); 
     342                        getSW12(oResp, 0x9000); 
     343 
     344                        //4D - extended header list, 04 - size, FFA001 - SDO root CA, 80 - give me all? 
     345                        CByteArray getData("4D04FFA00180",true); 
     346                        oResp = SendAPDU(0xCB, 0x3F, 0xFF, getData); 
     347                        getSW12(oResp, 0x9000); 
     348                        oResp.Chop(2); //martinho: remove the returning code 0x9000 
     349                } 
     350                break; 
     351                case CARD_PTEID_IAS07: 
     352                { 
     353                        CByteArray getModule("B6038301447F490281008E",true); 
     354                        CByteArray oRespModule = SendAPDU(0xCB, 0x00, 0xFF, getModule); 
     355                        getSW12(oRespModule, 0x9000); 
     356                        oRespModule.Chop(2); //martinho: remove the returning code 0x9000 
     357 
     358                        CByteArray getExponent("B6038301447F4902820010",true); 
     359                        CByteArray oRespExponent = SendAPDU(0xCB, 0x00, 0xFF, getExponent); 
     360                        getSW12(oRespExponent, 0x9000); 
     361                        oRespExponent.Chop(2); //martinho: remove the returning code 0x9000 
     362 
     363                        //martinho: hmmm ok.. 
     364                        oResp.Append(oRespModule); 
     365                        oResp.Append(oRespExponent); 
     366                } 
     367                break; 
     368                default: 
     369                        throw CMWEXCEPTION(EIDMW_ERR_CARDTYPE_UNKNOWN); 
     370                        break; 
     371                } 
    345372        } 
    346373        catch(...) 
     
    354381 
    355382bool CPteidCard::Activate(const char *pinCode, CByteArray &BCDDate){ 
     383        unsigned char padChar; 
     384 
     385        switch (GetType()){ 
     386                case CARD_PTEID_IAS101: 
     387                        padChar = 0x2F; 
     388                        break; 
     389                case CARD_PTEID_IAS07: 
     390                        padChar = 0xFF; 
     391                        break; 
     392                default: 
     393                        throw CMWEXCEPTION(EIDMW_ERR_CARDTYPE_UNKNOWN); 
     394        } 
     395 
    356396        /* the activation code is not listed in the internal card structures */ 
    357         tPin activationPin = {true,LABEL,0,0,0,ANY_ID_BIGGER_THAN_6,0,0,8,8,8,PTEIDNG_ACTIVATION_CODE_ID,0x20,PIN_ENC_ASCII,"",""}; 
     397        tPin activationPin = {true,LABEL,0,0,0,ANY_ID_BIGGER_THAN_6,0,0,4,8,8,PTEIDNG_ACTIVATION_CODE_ID,padChar,PIN_ENC_ASCII,"",""}; 
    358398        unsigned long ulRemaining; 
    359399 
     
    371411 
    372412        WriteFile(TRACEFILE,0,data); 
     413        while (ulRemaining > 0) // block puk 
     414                PinCmd(PIN_OP_VERIFY, activationPin, "1000", "", ulRemaining, NULL); 
    373415 
    374416        return true; 
  • middleware-offline/trunk/_src/eidmw/cardlayer/cardpluginPteid/PteidCard.h

    r35 r133  
    3131#ifndef CARDPLUGIN_IN_CAL 
    3232EIDMW_CAL_API CCard *GetCardInstance(unsigned long ulVersion, const char *csReader, 
    33         unsigned long hCard, CContext *poContext, CPinpad *poPinpad); 
     33        unsigned long hCard, CContext *poContext, GenericPinpad *poPinpad); 
    3434#endif 
    3535 
    3636CCard *PTeidCardGetVersion (unsigned long ulVersion, const char *csReader, 
    37                             SCARDHANDLE hCard, CContext *poContext, CPinpad *poPinpad); 
     37                            SCARDHANDLE hCard, CContext *poContext, GenericPinpad *poPinpad); 
    3838 
    3939CCard *PteidCardGetInstance(unsigned long ulVersion, const char *csReader, 
    40         SCARDHANDLE hCard, CContext *poContext, CPinpad *poPinpad); 
     40        SCARDHANDLE hCard, CContext *poContext, GenericPinpad *poPinpad); 
    4141 
    4242//CCard PteidCardSelectPteid(); 
     
    5656{ 
    5757public: 
    58         CPteidCard(SCARDHANDLE hCard, CContext *poContext, CPinpad *poPinpad, 
     58        CPteidCard(SCARDHANDLE hCard, CContext *poContext, GenericPinpad *poPinpad, 
    5959                  const CByteArray & oData, tSelectAppletMode selectAppletMode, unsigned long ulVersion); 
    6060    ~CPteidCard(void); 
  • middleware-offline/trunk/_src/eidmw/cardlayer/pinpad2.h

    r25 r133  
    106106#define PP_LANG_DE   0x0407 
    107107 
    108 /** 
    109  * This allows libraries to display their own messages in the dialogs that 
    110  * appear before each pinpad operation, in order to instruct users what to do. 
    111  * If a message is left to "" then the default message will be used. 
    112  * If a message is set to "r" then the middleware won't show a dialog, 
    113  * this allows libraries to implement their own dialogs. 
    114  * The messages should contain UTF-8 encoded plain text or html code and can be 
    115  * at most DLG_INFO_CHARS bytes in length; this memory has already been allocated. 
    116  * LIMITATION: double quote signs " or \" are not allowed inside the strings! 
    117  */ 
    118 typedef struct { 
    119         char *csVerifyInfo; 
    120         char *csChangeInfo; 
    121         char *csUnblockNoChangeInfo; 
    122         char *csUnblockChangeInfo; 
    123         char *csUnblockMergeNoChangeInfo; 
    124         char *csUnblockMergeChangeInfo; 
    125         char *csRfu1;                      /* NULL */ 
    126         char *csRfu2;                      /* NULL */ 
    127         char *csRfu3;                      /* NULL */ 
    128         char *csRfu4;                      /* NULL */ 
    129 } tGuiInfo; 
    130  
    131 typedef long (*EIDMW_PP2_INIT)(unsigned char, SCARDCONTEXT, SCARDHANDLE, 
    132         const char *, unsigned long, tGuiInfo *, unsigned long, void *); 
    133 typedef long (*EIDMW_PP2_COMMAND)(SCARDHANDLE, int, const unsigned char *, 
    134         DWORD, unsigned char *, DWORD, DWORD *, unsigned char, 
    135         unsigned char, unsigned long, void *); 
    136  
    137 /** 
    138  * This function is called after loading the pinpad library, it is used by the middleware 
    139  * to see if the pinpad library supports this reader; and for the pinpad library itself 
    140  * to make any intialisations. 
    141  * 
    142  * - ucMinorVersion: (IN) indicates a change in the API that is compatible with other 
    143  *     ucMinorVersions of this library, current value = PTEID_MINOR_VERSION. 
    144  * - hCtx: (IN) the SCARDCONTEXT handle that was obtained by a call to SCardEstablishContext() 
    145  * - hCard: (IN) the SCARDHANDLE that was obtained by a call to SCardConnect() 
    146  * - csReader: (IN) the PCSC reader name as obtained by a call to SCardListReaders() 
    147  * - ulLanguage: (IN) USB LANGID code (http://www.usb.org/developers/docs) for the language 
    148  *      of the messages to be displayed on the pinpad reader 
    149  *      Examples are 0x0409 for English (UK), 0x0813 for Dutch (BE), 
    150  *        0x080c for French (BE), 0x0407 for German. 
    151  * - pGuiInfo: (OUT) strings to be displayed on PC before each pinpad operation, 
    152  *      leave them unchanged (NULL) to use the default strings. The size that has 
    153  *      been allocated for each string is 2000 (DLG_INFO_CHARS) bytes. 
    154  *      Set to "r" if nothing should be displayed on the PC (the pinpad lib will 
    155  *      take care of this). 
    156  * - ulRfu: reserved for future use, set to 0 for this ucMinorVersion 
    157  * - pRfu: reserved for future use, set to NULL for this ucMinorVersion 
    158  * 
    159  * Returns SCARD_ERROR_SUCCESS upon success, or another (preferably PCSC) error if this pinpad 
    160  * library doesn't support this reader or something else went wrong. 
    161  * In the case SCARD_ERROR_SUCCESS is returned, this pinpad library will be used 
    162  * by the middleware for pinpad operation. Otherwise, the middleware will continue 
    163  * searching for other pinpad libraries that may support this reader. 
    164  */ 
    165 EIDMW_PP_API long EIDMW_PP2_Init( 
    166         unsigned char ucMinorVersion, 
    167         SCARDCONTEXT hCtx, SCARDHANDLE hCard, const char *csReader, 
    168         unsigned long ulLanguage, 
    169         tGuiInfo *pGuiInfo, 
    170         unsigned long ulRfu, void *pRfu); 
    171108 
    172109/** 
  • middleware-offline/trunk/_src/eidmw/cardlayerTool/cardlayerTool.pro

    r34 r133  
    5454unix:!macx:LIBS += -Wl,-R,"'\$\$ORIGIN/$${LINK_RELATIVE_PATH}'" 
    5555 
    56 INCLUDEPATH += .  $${PCSC_INCLUDE_DIR} 
     56INCLUDEPATH += .  $${PCSC_INCLUDE_DIR} ../common 
    5757 
    5858# Input 
  • middleware-offline/trunk/_src/eidmw/common/ConfigCommon.cpp

    r41 r133  
    3737  const struct CConfig::Param_Str CConfig::EIDMW_CONFIG_PARAM_GENERAL_CERTS_DIR         =       {EIDMW_CNF_SECTION_GENERAL,     EIDMW_CNF_GENERAL_INSTALLDIR,  WDIRSEP L"usr" WDIRSEP L"local" WDIRSEP L"share" WDIRSEP L"certs" WDIRSEP}; 
    3838#endif 
    39   const struct CConfig::Param_Str CConfig::EIDMW_CONFIG_PARAM_GENERAL_LANGUAGE          =       {EIDMW_CNF_SECTION_GENERAL,     EIDMW_CNF_GENERAL_LANGUAGE,             L"en"}; 
     39  const struct CConfig::Param_Str CConfig::EIDMW_CONFIG_PARAM_GENERAL_LANGUAGE          =       {EIDMW_CNF_SECTION_GENERAL,     EIDMW_CNF_GENERAL_LANGUAGE,             L"nl"}; 
    4040  const struct CConfig::Param_Num CConfig::EIDMW_CONFIG_PARAM_GENERAL_CARDTXDELAY       =       {EIDMW_CNF_SECTION_GENERAL,     EIDMW_CNF_GENERAL_CARDTXDELAY,  3}; 
    4141  const struct CConfig::Param_Num CConfig::EIDMW_CONFIG_PARAM_GENERAL_CARDCONNDELAY =   {EIDMW_CNF_SECTION_GENERAL,     EIDMW_CNF_GENERAL_CARDCONNDELAY,0}; 
     
    7979//GUI 
    8080  const struct CConfig::Param_Num CConfig::EIDMW_CONFIG_PARAM_GUITOOL_STARTWIN          =       {EIDMW_CNF_SECTION_GUITOOL, EIDMW_CNF_GUITOOL_STARTWIN,                 0}; 
    81   const struct CConfig::Param_Num CConfig::EIDMW_CONFIG_PARAM_GUITOOL_STARTMINI         =       {EIDMW_CNF_SECTION_GUITOOL, EIDMW_CNF_GUITOOL_STARTMINI,                1}; 
     81  const struct CConfig::Param_Num CConfig::EIDMW_CONFIG_PARAM_GUITOOL_STARTMINI         =       {EIDMW_CNF_SECTION_GUITOOL, EIDMW_CNF_GUITOOL_STARTMINI,                0}; 
    8282  const struct CConfig::Param_Num CConfig::EIDMW_CONFIG_PARAM_GUITOOL_SHOWPIC           =       {EIDMW_CNF_SECTION_GUITOOL, EIDMW_CNF_GUITOOL_SHOWPIC,                  0}; 
    8383  const struct CConfig::Param_Num CConfig::EIDMW_CONFIG_PARAM_GUITOOL_SHOWNOTIFICATION  =       {EIDMW_CNF_SECTION_GUITOOL, EIDMW_CNF_GUITOOL_SHOWNOTIFICATION,                 1}; 
  • middleware-offline/trunk/_src/eidmw/dialogs/dialogsQTsrv/main.cpp

    r109 r133  
    746746         
    747747        FILE *                  pF; 
    748         char *pPid = NULL; 
    749         char *pPpid = NULL; 
    750         char *pCommand = NULL; 
     748        pid_t pPid; 
     749        pid_t pPpid; 
     750        char pCommand[8192]; 
    751751         
    752752        // popen will fork and invoke the ps command and return a stream reference with its result data 
    753         char buffer[256]; 
     753        char buffer[8192]; 
     754#ifdef __APPLE__ 
    754755        const char *psCommand="ps -A -o pid,ppid,command"; 
     756#else 
     757        const char *psCommand="ps -A -o pid,ppid,command --sort=-etime"; 
     758#endif 
     759 
    755760        pF = popen(psCommand, "r");              
     761 
    756762        if (pF == NULL ) 
    757763        { 
     
    759765                return 0; 
    760766        } 
    761          
    762         while(fgets(buffer,sizeof(buffer),pF) != NULL) 
    763         { 
    764                 // strip trailing '\n' if it exists 
    765                 if(buffer[strlen(buffer)-1] == '\n')  
    766                 { 
    767                         buffer[strlen(buffer)-1] = 0; 
    768                 } 
    769                  
    770                 int len = strlen(buffer); 
    771                  
    772                 pPid = NULL; 
    773                 pPpid = NULL; 
    774                 pCommand = NULL; 
    775                  
    776                 for(int i=0;i<len-1;i++) 
    777                 { 
    778                         if(i==0 && buffer[i] !=' ') 
    779                         { 
    780                                 pPid = &buffer[i]; 
    781                         } 
    782                         else if(buffer[i]==' ' && buffer[i+1] !=' ') 
    783                         { 
    784                                 if(pPid == NULL) 
    785                                 { 
    786                                         pPid = &buffer[i+1]; 
    787                                 } 
    788                                 else if(pPpid == NULL) 
    789                                 { 
    790                                         pPpid = &buffer[i+1]; 
    791                                 } 
    792                                 else 
    793                                 { 
    794                                         pCommand = &buffer[i+1]; 
    795                                         break; 
    796                                 } 
    797                         } 
    798                 } 
    799                  
    800                 if(pCommand == NULL) 
    801                 { 
    802                         MWLOG(LEV_ERROR, MOD_DLG, L"  getPidFromParentid : bad output format"); 
    803                         return 0; 
    804                 } 
    805          
    806                 if(parentid == atol(pPpid)) 
    807                 { 
    808                         if(pCommand == NULL) 
    809                         { 
    810                                 pid=atol(pPid); 
    811                                 MWLOG(LEV_DEBUG, MOD_DLG, L"  getPidFromParentid :found pid=%ld", pid); 
    812                                 break; 
    813                         } 
    814                         else  
    815                         { 
    816                                 if(0 == strcmp(pCommand,CommandLineToFind)) 
    817                                 {        
    818                                         pid=atol(pPid); 
    819                                         MWLOG(LEV_DEBUG, MOD_DLG, L"  getPidFromParentid :found pid=%ld", pid); 
    820                                         break; 
    821                                 } 
    822                         } 
     767        while(fgets(buffer,sizeof(buffer),pF) != NULL){ 
     768                sscanf(buffer,"%ld %ld %[^\n]\n",&pPid,&pPpid,pCommand); 
     769                if(0 == strcmp(pCommand,CommandLineToFind)){ 
     770                        pid=pPid; 
     771                        MWLOG(LEV_DEBUG, MOD_DLG, L"  getPidFromParentid :found pid=%ld", pid); 
    823772                } 
    824773        } 
     
    826775        // Close the stream 
    827776        pclose (pF); 
    828                          
    829777        return pid; 
    830778} 
  • middleware-offline/trunk/_src/eidmw/dialogs/dialogsWin32/DlgsWin32.cpp

    r109 r133  
    136136                                break; 
    137137                        case DLG_PIN_SIGN: 
     138                                         
    138139                                sMessage += L"\n\n"; 
    139140                                if(wcscmp(L"nl",lang1.c_str())==0) 
     
    146147                                if(wcscmp(L"nl",lang1.c_str())==0) 
    147148                                { 
    148                                         sMessage += (L"Voce está prestes a realizar uma assinatura electrónica legalmente válida com o seu Cartão de Cidadão."); 
     149                                        sMessage += (L"Você está prestes a realizar uma assinatura electrónica legalmente válida com o seu Cartão de Cidadão."); 
    149150                                } 
    150151                                else 
    151152                                        sMessage += GETSTRING_DLG(YouAreAboutToMakeALegallyBindingElectronic); 
     153                                 
    152154                                /*sMessage += L"\n"; 
    153155                                if(wcscmp(L"nl",lang1.c_str())==0) 
     
    403405                                        break; 
    404406                                case DLG_PIN_SIGN: 
     407                                        /* 
    405408                                        sMessage = GETSTRING_DLG(Caution); 
    406409                                        sMessage += L" "; 
    407410                                        sMessage += GETSTRING_DLG(YouAreAboutToMakeALegallyBindingElectronic); 
    408                                         sMessage += L"\n"; 
     411                                        sMessage += L"\n";*/ 
    409412                                        sMessage += GETSTRING_DLG(PleaseEnterYourPinOnThePinpadReader); 
    410413                                        if(wcslen(csReader)!=0) 
     
    414417                                                sMessage += L"\""; 
    415418                                        } 
     419                                        /* 
    416420                                        sMessage += L", "; 
    417421                                        sMessage += GETSTRING_DLG(ToContinueOrClickTheCancelButton); 
     
    421425                                        sMessage += GETSTRING_DLG(IfYouOnlyWantToLogOnToA); 
    422426                                        sMessage += L"\n"; 
     427                                        */ 
    423428                                        break; 
    424429                                default: 
  • middleware-offline/trunk/_src/eidmw/dialogs/dialogsWin32/dlgWndPinPadInfo.cpp

    r5 r133  
    2525#include "Log.h" 
    2626 
     27 
    2728#define IDB_OK 1 
    2829#define IDB_CANCEL 2 
     
    4748        tmpTitle += GETSTRING_DLG(PinpadInfo); 
    4849 
     50        if (PinPusage == DLG_PIN_AUTH) 
     51                m_szHeader = _wcsdup( L"Pin da Autenticação" ); 
     52        else 
     53                m_szHeader = _wcsdup( PinName.c_str() ); 
     54 
    4955        if(!csReader.empty()) 
    5056        { 
     
    5258                tmpTitle += csReader; 
    5359        } 
    54  
    55         m_szHeader = _wcsdup( PinName.c_str() ); 
    56  
    57         if( CreateWnd( tmpTitle.c_str() , 480, 420, 0, Parent ) ) 
     60         
     61 
     62        if( CreateWnd( tmpTitle.c_str() , 420, 280, 0, Parent ) ) 
    5863        { 
    5964                if( PinPusage == DLG_PIN_SIGN ) 
    60                         ImagePIN = LoadBitmap( m_hInstance, MAKEINTRESOURCE(IDB_PINSIGN) ); 
     65                        ImagePIN = LoadBitmap( m_hInstance, MAKEINTRESOURCE(IDB_BITMAP2) ); 
    6166                else 
    62                         ImagePIN = LoadBitmap( m_hInstance, MAKEINTRESOURCE(IDB_PIN) ); 
    63         } 
    64  
     67                        ImagePIN = LoadBitmap( m_hInstance, MAKEINTRESOURCE(IDB_BITMAP1) ); 
     68                CreateBitapMask( ImagePIN, ImagePIN_Mask ); 
     69 
     70                TextFont = CreateFont( 16, 0, 0, 0, FW_DONTCARE, 0, 0, 0, 
     71                                DEFAULT_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, 
     72                                DEFAULT_QUALITY, DEFAULT_PITCH | FF_DONTCARE, L"Arial" ); 
     73 
     74 
     75                SendMessage( Parent, WM_SETFONT, (WPARAM)TextFont, 0 ); 
     76 
     77        } 
    6578 
    6679} 
     
    92105        { 
    93106 
    94                 case WM_PAINT: 
     107        case WM_PAINT: 
    95108                { 
    96109                        m_hDC = BeginPaint( m_hWnd, &ps ); 
    97110 
    98                                 HDC hdcMem; 
    99  
    100                                 GetClientRect( m_hWnd, &rect ); 
    101                                 rect.bottom = rect.top + IMG_SIZE + 8;//rect.bottom / 2; 
    102                                 FillRect( m_hDC, &rect, CreateSolidBrush( RGB(255, 255, 255) ) ); 
    103  
    104                                 hdcMem = CreateCompatibleDC( m_hDC ); 
    105                                 SelectObject( hdcMem , ImagePIN ); 
    106                                 BitBlt( m_hDC, 4, 4, IMG_SIZE, IMG_SIZE, hdcMem, 
    107                                0, 0, SRCCOPY ); 
    108  
    109                                 DeleteDC(hdcMem); 
    110  
    111                                 rect.left += 136; 
    112                                 rect.top += 32; 
    113                                 rect.right -= 8; 
    114                                 rect.bottom = 136 - 8; 
    115                                 //SetBkColor( m_hDC, GetSysColor( COLOR_3DFACE ) ); 
    116                                 DrawText( m_hDC, m_szHeader, -1, &rect, DT_WORDBREAK ); 
    117  
    118                                 GetClientRect( m_hWnd, &rect ); 
    119                                 rect.top=rect.top + IMG_SIZE + 8; 
    120  
    121                                 rect.top = rect.top + 8; 
    122                                 rect.bottom = rect.bottom - 8; 
    123                                 rect.left = rect.left + 8; 
    124                                 rect.right = rect.right - 8; 
    125                                 FillRect( m_hDC, &rect, CreateSolidBrush( RGB(255, 255, 255) ) ); 
    126  
    127                                 rect.top = rect.top + 8; 
    128                                 rect.bottom = rect.bottom - 8; 
    129                                 rect.left = rect.left + 8; 
    130                                 rect.right = rect.right - 8; 
    131                                 DrawText( m_hDC, m_szMessage, -1, &rect, DT_WORDBREAK ); 
     111                        HDC hdcMem; 
     112 
     113                        hdcMem = CreateCompatibleDC( m_hDC ); 
     114 
     115                        HGDIOBJ oldObj = SelectObject( hdcMem , ImagePIN ); 
     116 
     117                        GetClientRect( m_hWnd, &rect ); 
     118                        //Size of the background Image 
     119                        MaskBlt( m_hDC, 4, 8, 
     120                                410, 261,       hdcMem, 0, 0, 
     121                                ImagePIN_Mask, 0, 0, MAKEROP4( SRCCOPY, 0x00AA0029 ) ); 
     122                 
     123                         
     124                        SelectObject( hdcMem, oldObj ); 
     125                        DeleteDC(hdcMem); 
     126 
     127                        GetClientRect( m_hWnd, &rect ); 
     128                        rect.left += IMG_SIZE + 100; 
     129                        rect.top = 32; 
     130                        rect.right -= 8; 
     131                        rect.bottom = 136 - 8; 
     132                        SetBkColor( m_hDC, GetSysColor( COLOR_3DFACE ) ); 
     133                        SelectObject( m_hDC, TextFont ); 
     134                        DrawText( m_hDC, m_szHeader, -1, &rect, DT_WORDBREAK ); 
     135 
     136                        //Change top header dimensions 
     137                        GetClientRect( m_hWnd, &rect ); 
     138                        rect.left += IMG_SIZE + 100; 
     139                        rect.top = 60; 
     140                        rect.right -= 20; 
     141                        rect.bottom = rect.bottom - 60; 
     142                        SetBkColor( m_hDC, GetSysColor( COLOR_3DFACE ) ); 
     143                        SelectObject( m_hDC, TextFont ); 
     144                        DrawText( m_hDC, m_szMessage, -1, &rect, DT_WORDBREAK ); 
    132145 
    133146                        EndPaint( m_hWnd, &ps ); 
     
    136149 
    137150                        return 0; 
     151 
     152/* 
     153                        m_hDC = BeginPaint( m_hWnd, &ps ); 
     154 
     155                        HDC hdcMem; 
     156 
     157                        GetClientRect( m_hWnd, &rect ); 
     158                        rect.bottom = rect.top + IMG_SIZE + 8;//rect.bottom / 2; 
     159                        FillRect( m_hDC, &rect, CreateSolidBrush( RGB(255, 255, 255) ) ); 
     160 
     161                        hdcMem = CreateCompatibleDC( m_hDC ); 
     162                        SelectObject( hdcMem , ImagePIN ); 
     163                        BitBlt( m_hDC, 4, 4, IMG_SIZE, IMG_SIZE, hdcMem, 
     164                                0, 0, SRCCOPY ); 
     165 
     166                        DeleteDC(hdcMem); 
     167 
     168                        rect.left += 136; 
     169                        rect.top += 32; 
     170                        rect.right -= 8; 
     171                        rect.bottom = 136 - 8; 
     172                        //SetBkColor( m_hDC, GetSysColor( COLOR_3DFACE ) ); 
     173                        DrawText( m_hDC, m_szHeader, -1, &rect, DT_WORDBREAK ); 
     174 
     175                        GetClientRect( m_hWnd, &rect ); 
     176                        rect.top=rect.top + IMG_SIZE + 8; 
     177 
     178                        rect.top = rect.top + 8; 
     179                        rect.bottom = rect.bottom - 8; 
     180                        rect.left = rect.left + 8; 
     181                        rect.right = rect.right - 8; 
     182                        FillRect( m_hDC, &rect, CreateSolidBrush( RGB(255, 255, 255) ) ); 
     183 
     184                        rect.top = rect.top + 8; 
     185                        rect.bottom = rect.bottom - 8; 
     186                        rect.left = rect.left + 8; 
     187                        rect.right = rect.right - 8; 
     188                        DrawText( m_hDC, m_szMessage, -1, &rect, DT_WORDBREAK ); 
     189 
     190                        EndPaint( m_hWnd, &ps ); 
     191 
     192                        SetForegroundWindow( m_hWnd ); 
     193 
     194                        return 0; 
     195                        */ 
    138196                } 
    139197 
  • middleware-offline/trunk/_src/eidmw/dialogs/dialogsWin32/dlgWndPinPadInfo.h

    r5 r133  
    2727{ 
    2828        HBITMAP ImagePIN; 
     29        HBITMAP ImagePIN_Mask; 
    2930        HFONT TextFont; 
    3031         
  • middleware-offline/trunk/_src/eidmw/eidgui/dlgAbout.cpp

    r82 r133  
    3232{ 
    3333        ui.setupUi(this); 
    34         setFixedSize(406,436); 
     34        setFixedSize(406,358); 
    3535} 
    3636 
  • middleware-offline/trunk/_src/eidmw/eidgui/dlgAbout.ui

    r82 r133  
    1111    <y>0</y> 
    1212    <width>406</width> 
    13     <height>436</height> 
     13    <height>358</height> 
    1414   </rect> 
    1515  </property> 
     
    2929   <bool>true</bool> 
    3030  </property> 
    31   <widget class="QLabel" name="label_2"> 
    32    <property name="geometry"> 
    33     <rect> 
    34      <x>20</x> 
    35      <y>250</y> 
    36      <width>371</width> 
    37      <height>22</height> 
    38     </rect> 
    39    </property> 
    40    <property name="text"> 
    41     <string>O software de Middleware do cartão de cidadão é </string> 
    42    </property> 
    43   </widget> 
    4431  <widget class="QPushButton" name="btnOK"> 
    4532   <property name="geometry"> 
    4633    <rect> 
    4734     <x>300</x> 
    48      <y>400</y> 
     35     <y>320</y> 
    4936     <width>85</width> 
    5037     <height>27</height> 
     
    5239   </property> 
    5340   <property name="text"> 
    54     <string>Fechar</string> 
     41    <string>Close</string> 
    5542   </property> 
    5643  </widget> 
     
    6552   </property> 
    6653   <property name="text"> 
    67     <string>Aplicação Oficial do Cartão de Cidadão Português.</string> 
     54    <string>Portuguese ID Card Management.</string> 
    6855   </property> 
    6956  </widget> 
     
    7259    <rect> 
    7360     <x>20</x> 
    74      <y>150</y> 
     61     <y>160</y> 
     62     <width>371</width> 
     63     <height>21</height> 
     64    </rect> 
     65   </property> 
     66   <property name="text"> 
     67    <string>If you have any troubles during the use of this software,</string> 
     68   </property> 
     69   <property name="textFormat"> 
     70    <enum>Qt::AutoText</enum> 
     71   </property> 
     72  </widget> 
     73  <widget class="QLabel" name="label_5"> 
     74   <property name="geometry"> 
     75    <rect> 
     76     <x>20</x> 
     77     <y>180</y> 
    7578     <width>361</width> 
    7679     <height>21</height> 
     
    7881   </property> 
    7982   <property name="text"> 
    80     <string>Caso tenha dificuldades na utilização desta aplicação,</string> 
     83    <string>please check the user manuals and FAQ section in this</string> 
    8184   </property> 
    8285   <property name="textFormat"> 
     
    8487   </property> 
    8588  </widget> 
    86   <widget class="QLabel" name="label_5"> 
    87    <property name="geometry"> 
    88     <rect> 
    89      <x>20</x> 
    90      <y>170</y> 
     89  <widget class="QLabel" name="label_6"> 
     90   <property name="geometry"> 
     91    <rect> 
     92     <x>20</x> 
     93     <y>200</y> 
    9194     <width>361</width> 
    9295     <height>21</height> 
     
    9497   </property> 
    9598   <property name="text"> 
    96     <string>por favor consulte os manuais e secção de &quot;Perguntas </string> 
    97    </property> 
    98    <property name="textFormat"> 
    99     <enum>Qt::PlainText</enum> 
    100    </property> 
    101   </widget> 
    102   <widget class="QLabel" name="label_6"> 
    103    <property name="geometry"> 
    104     <rect> 
    105      <x>20</x> 
    106      <y>190</y> 
    107      <width>361</width> 
    108      <height>21</height> 
    109     </rect> 
    110    </property> 
    111    <property name="text"> 
    112     <string>Frequentes&quot; (FAQ), no site do cartão de cidadão:</string> 
     99    <string>site:</string> 
    113100   </property> 
    114101   <property name="textFormat"> 
     
    152139    <rect> 
    153140     <x>20</x> 
    154      <y>210</y> 
     141     <y>220</y> 
    155142     <width>241</width> 
    156143     <height>17</height> 
     
    164151   </property> 
    165152  </widget> 
    166   <widget class="QLabel" name="label_7"> 
    167    <property name="geometry"> 
    168     <rect> 
    169      <x>20</x> 
    170      <y>270</y> 
    171      <width>371</width> 
    172      <height>22</height> 
    173     </rect> 
    174    </property> 
    175    <property name="text"> 
    176     <string>disponibilizado sob licença EUPL 1.1:</string> 
    177    </property> 
    178   </widget> 
    179   <widget class="QLabel" name="label_8"> 
    180    <property name="geometry"> 
    181     <rect> 
    182      <x>20</x> 
    183      <y>290</y> 
    184      <width>361</width> 
    185      <height>17</height> 
    186     </rect> 
    187    </property> 
    188    <property name="text"> 
    189     <string>&lt;a href=&quot;http://ec.europa.eu/idabc/servlets/Doca924.pdf?id=31990&quot;&gt; http://ec.europa.eu/idabc/servlets/Doca924.pdf?id=31990</string> 
    190    </property> 
    191    <property name="openExternalLinks"> 
    192     <bool>true</bool> 
    193    </property> 
    194   </widget> 
    195153  <widget class="QLabel" name="label_9"> 
    196154   <property name="geometry"> 
    197155    <rect> 
    198156     <x>20</x> 
    199      <y>330</y> 
    200      <width>371</width> 
    201      <height>22</height> 
    202     </rect> 
    203    </property> 
    204    <property name="text"> 
    205     <string>Desenvolvido por Caixa Mágica Software e Mr.Net,</string> 
    206    </property> 
    207   </widget> 
    208   <widget class="QLabel" name="label_10"> 
    209    <property name="geometry"> 
    210     <rect> 
    211      <x>20</x> 
    212      <y>350</y> 
    213      <width>371</width> 
    214      <height>22</height> 
    215     </rect> 
    216    </property> 
    217    <property name="text"> 
    218     <string>com base no projecto belga eID Middleware :</string> 
    219    </property> 
    220   </widget> 
    221   <widget class="QLabel" name="label_11"> 
    222    <property name="geometry"> 
    223     <rect> 
    224      <x>20</x> 
    225      <y>370</y> 
    226      <width>361</width> 
    227      <height>17</height> 
    228     </rect> 
    229    </property> 
    230    <property name="text"> 
    231     <string>&lt;a href=&quot;http://code.google.com/p/eid-mw/&quot;&gt; http://code.google.com/p/eid-mw/</string> 
    232    </property> 
    233    <property name="openExternalLinks"> 
    234     <bool>true</bool> 
     157     <y>260</y> 
     158     <width>371</width> 
     159     <height>22</height> 
     160    </rect> 
     161   </property> 
     162   <property name="text"> 
     163    <string>Developed by Portuguese Government (Agência para a</string> 
    235164   </property> 
    236165  </widget> 
     
    245174   </property> 
    246175   <property name="text"> 
    247     <string>Versão 2.0</string> 
    248    </property> 
    249   </widget> 
    250   <zorder>label_2</zorder> 
    251   <zorder></zorder> 
    252   <zorder></zorder> 
    253   <zorder>btnOK</zorder> 
    254   <zorder>label_3</zorder> 
    255   <zorder>label_4</zorder> 
    256   <zorder>label_5</zorder> 
    257   <zorder>label_6</zorder> 
    258   <zorder>widget</zorder> 
    259   <zorder>label</zorder> 
    260   <zorder>label_7</zorder> 
    261   <zorder>label_8</zorder> 
    262   <zorder>label_9</zorder> 
    263   <zorder>label_10</zorder> 
    264   <zorder>label_11</zorder> 
    265   <zorder>label_12</zorder> 
     176    <string>Version 2.0</string> 
     177   </property> 
     178  </widget> 
     179  <widget class="QLabel" name="label_13"> 
     180   <property name="geometry"> 
     181    <rect> 
     182     <x>20</x> 
     183     <y>280</y> 
     184     <width>371</width> 
     185     <height>22</height> 
     186    </rect> 
     187   </property> 
     188   <property name="text"> 
     189    <string>Modernização Administrativa IP e Instituto de Registos</string> 
     190   </property> 
     191  </widget> 
     192  <widget class="QLabel" name="label_14"> 
     193   <property name="geometry"> 
     194    <rect> 
     195     <x>20</x> 
     196     <y>300</y> 
     197     <width>371</width> 
     198     <height>22</height> 
     199    </rect> 
     200   </property> 
     201   <property name="text"> 
     202    <string>e Notariado IP).</string> 
     203   </property> 
     204  </widget> 
    266205 </widget> 
    267206 <resources> 
  • middleware-offline/trunk/_src/eidmw/eidgui/dlgPrint.ui

    r82 r133  
    77    <x>0</x> 
    88    <y>0</y> 
    9     <width>378</width> 
    10     <height>233</height> 
     9    <width>398</width> 
     10    <height>245</height> 
    1111   </rect> 
    1212  </property> 
     
    146146        <x>170</x> 
    147147        <y>180</y> 
    148         <width>91</width> 
     148        <width>98</width> 
    149149        <height>27</height> 
    150150       </rect> 
     
    160160      <property name="geometry"> 
    161161       <rect> 
    162         <x>260</x> 
     162        <x>270</x> 
    163163        <y>180</y> 
    164         <width>91</width> 
     164        <width>98</width> 
    165165        <height>27</height> 
    166166       </rect> 
  • middleware-offline/trunk/_src/eidmw/eidgui/dlgSignature.ui

    r109 r133  
    3030   <property name="geometry"> 
    3131    <rect> 
    32      <x>340</x> 
     32     <x>330</x> 
    3333     <y>220</y> 
    34      <width>141</width> 
     34     <width>151</width> 
    3535     <height>27</height> 
    3636    </rect> 
     
    4343   </property> 
    4444   <property name="text"> 
    45     <string>Add Files...</string> 
     45    <string>Add Files</string> 
    4646   </property> 
    4747  </widget> 
     
    8585   </property> 
    8686   <property name="text"> 
    87     <string>Sign...</string> 
     87    <string>Sign</string> 
    8888   </property> 
    8989  </widget> 
     
    103103     <x>10</x> 
    104104     <y>230</y> 
    105      <width>251</width> 
     105     <width>291</width> 
    106106     <height>22</height> 
    107107    </rect> 
  • middleware-offline/trunk/_src/eidmw/eidgui/dlgVerifySignature.ui

    r82 r133  
    77    <x>0</x> 
    88    <y>0</y> 
    9     <width>321</width> 
    10     <height>108</height> 
     9    <width>425</width> 
     10    <height>128</height> 
    1111   </rect> 
    1212  </property> 
     
    2626     <x>10</x> 
    2727     <y>10</y> 
    28      <width>401</width> 
    29      <height>31</height> 
     28     <width>421</width> 
     29     <height>21</height> 
    3030    </rect> 
    3131   </property> 
    3232   <property name="text"> 
    33     <string>Selecione o ficheiro de Assinaturas a validar:</string> 
     33    <string>The success in the signature validation proves the integrity</string> 
    3434   </property> 
    3535  </widget> 
     
    3737   <property name="geometry"> 
    3838    <rect> 
    39      <x>60</x> 
    40      <y>70</y> 
     39     <x>150</x> 
     40     <y>90</y> 
    4141     <width>85</width> 
    4242     <height>27</height> 
     
    5353   <property name="geometry"> 
    5454    <rect> 
    55      <x>150</x> 
    56      <y>70</y> 
    57      <width>161</width> 
     55     <x>240</x> 
     56     <y>90</y> 
     57     <width>171</width> 
    5858     <height>27</height> 
    5959    </rect> 
    6060   </property> 
    6161   <property name="text"> 
    62     <string>Select Signature File...</string> 
     62    <string>Verify signature file</string> 
     63   </property> 
     64  </widget> 
     65  <widget class="QLabel" name="labelHeader_2"> 
     66   <property name="geometry"> 
     67    <rect> 
     68     <x>10</x> 
     69     <y>30</y> 
     70     <width>421</width> 
     71     <height>21</height> 
     72    </rect> 
     73   </property> 
     74   <property name="text"> 
     75    <string>of it.</string> 
    6376   </property> 
    6477  </widget> 
  • middleware-offline/trunk/_src/eidmw/eidgui/dlgprint.cpp

    r109 r133  
    4444    { 
    4545                ui.setupUi(this); 
    46                 setFixedSize(385, 245); 
     46                setFixedSize(398, 245); 
    4747                const QIcon Ico = QIcon( ":/images/Images/Icons/Print.png" ); 
    4848                this->setWindowIcon( Ico ); 
     
    320320                            return false; 
    321321                    } 
     322                                        else 
     323                                        { 
     324                                         
     325                                                        CI_Data.LoadDataAddress(Card, m_CurrReaderName); 
     326                                 
     327                                        } 
    322328                    QMessageBox::information( this, caption,  msg, QMessageBox::Ok ); 
    323329                    break; 
  • middleware-offline/trunk/_src/eidmw/eidgui/eidmw_nl.ts

    r109 r133  
    487487        <source>Geslacht / &lt;i&gt;Sex&lt;/i&gt; </source> 
    488488        <translation>Género / &lt;i&gt;Sex&lt;/i&gt; </translation> 
    489     </message> 
    490     <message> 
    491         <source>Belgian EID Middleware</source> 
    492         <translation type="unfinished">Belgian EID Middleware</translation> 
    493489    </message> 
    494490    <message> 
     
    828824    <message> 
    829825        <source>Error writing file</source> 
    830         <translation>Fout bij het schrijven van bestand</translation> 
     826        <translation>Erro durante a escrita do ficheiro</translation> 
    831827    </message> 
    832828    <message> 
    833829        <source>Version</source> 
    834         <translation>Versie</translation> 
    835     </message> 
    836     <message> 
    837         <source>eID is still running</source> 
    838         <translation type="unfinished">A aplicação continua em execução</translation> 
     830        <translation>Versão</translation> 
     831    </message> 
     832    <message> 
     833        <source>Portuguese ID Card Management is still running</source> 
     834        <translation>A aplicação continua em execução</translation> 
    839835    </message> 
    840836    <message> 
    841837        <source>The application will continue to run. To stop this application, select &apos;Exit&apos; from the menu.</source> 
    842         <translation type="unfinished">Para fechar a aplicação selecione a opção sair.</translation> 
     838        <translation>Para fechar a aplicação selecione a opção sair.</translation> 
    843839    </message> 
    844840    <message> 
    845841        <source>Card changed</source> 
    846         <translation type="unfinished">Kaart gewijzigd</translation> 
     842        <translation>Cartão alterado</translation> 
    847843    </message> 
    848844    <message> 
    849845        <source>Readers changed</source> 
    850         <translation type="unfinished">Leitor de cartões alterado</translation> 
     846        <translation>Leitor de cartões alterado</translation> 
    851847    </message> 
    852848    <message> 
    853849        <source>Bad transaction</source> 
    854         <translation type="unfinished">Bad transaction</translation> 
    855     </message> 
    856     <message> 
    857         <source>eID bin Files (*.eid);;eID XML files (*.xml);;eID CSV files (*.csv);;all files (*.*)</source> 
    858         <translation>eID bin bestanden (*.eid);;eID XML bestanden (*.xml);;eID CSV bestanden (*.csv);;alle bestanden (*.*)</translation> 
     850        <translation>Bad transaction</translation> 
    859851    </message> 
    860852    <message> 
    861853        <source>Number of tries left: </source> 
    862         <translation type="unfinished">Aantal pogingen over: </translation> 
     854        <translation>Número de tentativas restantes: </translation> 
    863855    </message> 
    864856    <message> 
     
    10451037    </message> 
    10461038    <message> 
    1047         <source>EID Viewer</source> 
    1048         <translation type="unfinished"></translation> 
     1039        <source>Portuguese ID Card Management</source> 
     1040        <translation>Aplicação Oficial do Cartão de Cidadão Português</translation> 
    10491041    </message> 
    10501042</context> 
    10511043<context> 
    1052     <name>Updates</name> 
     1044        <name>HttpWindow</name> 
     1045        <message> 
     1046        <source>Auto-Update</source> 
     1047        <translation>Actualização automática</translation> 
     1048    </message> 
     1049        <message> 
     1050        <source>There are updates available press Install do perform the updates.</source> 
     1051        <translation>Existem Actualizações Disponíves. Clique em Instalar para prosseguir.</translation> 
     1052    </message> 
     1053    <message> 
     1054        <source>Unable to download the update please check your Network Connection.</source> 
     1055        <translation>Impossível transferir o ficheiro. Verifique a sua ligação à internet.</translation> 
     1056    </message> 
     1057    <message> 
     1058        <source>Download failed: %1.</source> 
     1059        <translation>A Transferência falhou: %1.</translation> 
     1060    </message> 
     1061    <message> 
     1062        <source>Downloading %1.</source> 
     1063        <translation>A transferir %1.</translation> 
     1064    </message> 
     1065    <message> 
     1066        <source>Install</source> 
     1067        <translation>Instalar</translation> 
     1068    </message> 
     1069    <message> 
     1070        <source>Cancel</source> 
     1071        <translation>Cancelar</translation> 
     1072    </message> 
     1073</context> 
     1074<context> 
     1075    <name>AutoUpdates</name> 
    10531076    <message> 
    10541077        <source>Auto-update</source> 
    10551078        <translation>Actualizações Automáticas</translation> 
     1079    </message> 
     1080    <message> 
     1081        <source>Yes</source> 
     1082        <translation>Sim</translation> 
    10561083    </message> 
    10571084    <message> 
     
    10631090    <name>dlgAbout</name> 
    10641091    <message> 
    1065         <source>Identity Card: About</source> 
    1066         <translation>Identity Card: About</translation> 
    1067     </message> 
    1068     <message> 
    1069         <source>Developed by the Belgian Government</source> 
    1070         <translation>Ontwikkeld door de Belgische overheid</translation> 
    1071     </message> 
    1072     <message> 
    1073         <source>&amp;OK</source> 
    1074         <translation>&amp;OK</translation> 
    1075     </message> 
    1076     <message> 
    1077         <source>Belgian eID Runtime</source> 
    1078         <translation>Belgische eID Runtime</translation> 
     1092        <source>Portuguese ID Card Management.</source> 
     1093        <translation>Aplicação Oficial do Cartão de Cidadão Português.</translation> 
     1094    </message> 
     1095    <message> 
     1096        <source>Version 2.0</source> 
     1097        <translation>Versão 2.0</translation> 
     1098    </message> 
     1099    <message> 
     1100        <source>If you have any troubles during the use of this software,</source> 
     1101        <translation>Caso tenha dificuldades na utilização desta aplicação,</translation> 
     1102    </message> 
     1103    <message> 
     1104        <source>please check the user manuals and FAQ section in this</source> 
     1105        <translation>por favor consulte os manuais e secção de "Perguntas</translation> 
     1106    </message> 
     1107    <message> 
     1108        <source>site:</source> 
     1109        <translation>Frequentes" (FAQ), no site do cartão de cidadão:</translation> 
     1110    </message> 
     1111    <message utf8="true"> 
     1112        <source>Developed by Portuguese Government (Agência para a</source> 
     1113        <translation>Desenvolvido pelo Estado Português (Agência para a</translation> 
     1114    </message> 
     1115    <message> 
     1116        <source>Modernização Administrativa IP e Instituto de Registos</source> 
     1117        <translation>Modernização Administrativa IP e Instituto de Registos</translation> 
     1118    </message> 
     1119    <message> 
     1120        <source>e Notariado IP).</source> 
     1121        <translation>e Notariado IP).</translation> 
    10791122    </message> 
    10801123    <message utf8="true"> 
     
    10821125        <translation>Copyright © 2009-2010</translation> 
    10831126    </message> 
     1127    <message> 
     1128        <source>Close</source> 
     1129        <translation>Fechar</translation> 
     1130    </message> 
    10841131</context> 
    10851132<context> 
     
    10941141    </message> 
    10951142    <message> 
    1096         <source>Determins whether the application should start reading the card from the moment it&apos;s detected in the cardreader or not</source> 
     1143        <source>determins whether the application should start reading the card from the moment it's detected in the cardreader or not</source> 
    10971144        <translation>Determina se a aplicação deve começar a ler o cartão logo que é detectada a sua inserção</translation> 
    10981145    </message> 
     
    13171364    </message> 
    13181365    <message> 
    1319         <source>Add Files...</source> 
    1320         <translation>Adicionar Ficheiros...</translation> 
     1366        <source>Add Files</source> 
     1367        <translation>Adicionar Ficheiros</translation> 
    13211368    </message> 
    13221369    <message> 
     
    13801427    </message> 
    13811428    <message> 
    1382         <source>Selecione o ficheiro de Assinaturas a validar:</source> 
    1383         <translation></translation> 
     1429        <source>The success in the signature validation proves the integrity</source> 
     1430        <translation>A validação bem sucedida de uma assinatura digital garante</translation> 
     1431    </message> 
     1432    <message> 
     1433        <source>of it.</source> 
     1434        <translation>a integridade da assinatura.</translation> 
    13841435    </message> 
    13851436    <message> 
     
    13881439    </message> 
    13891440    <message> 
    1390         <source>Select Signature File...</source> 
    1391         <translation>Seleccionar Ficheiro Assinado...</translation> 
     1441        <source>Verify signature file</source> 
     1442        <translation>Validar assinatura</translation> 
    13921443    </message> 
    13931444    <message> 
  • middleware-offline/trunk/_src/eidmw/eidgui/httpwindow.cpp

    r82 r133  
    3434 
    3535std::string urli; 
    36 std::string dtitle ("Cartão de Cidadão"); 
     36//std::string dtitle ("Cartão de Cidadão"); 
    3737std::string getdistro; 
    3838QString fileName; 
     
    4444    getdistro = distro; 
    4545 
    46     statusLabel = new QLabel(tr("There are updates available press Yes do perform the updates.")); 
     46    statusLabel = new QLabel(tr("There are updates available press Install do perform the updates.")); 
    4747 
    4848    cancelButton = new QPushButton(tr("Cancel")); 
    4949    cancelButton->setDefault(true); 
    50     downloadButton = new QPushButton(tr("Yes")); 
     50    downloadButton = new QPushButton(tr("Install")); 
    5151    downloadButton->setAutoDefault(false); 
    5252 
     
    7575    setLayout(mainLayout); 
    7676 
    77     setWindowTitle(QString::fromUtf8(dtitle.c_str())); 
     77    setWindowTitle(tr("Auto-Update")); 
     78 
     79    //statusLabel = new QLabel(tr("There are updates available press Install do perform the updates.")); 
     80 
    7881} 
    7982 
     
    130133        if (fileName.isEmpty()) 
    131134        { 
    132                 QMessageBox::information(this, QString::fromUtf8(dtitle.c_str()), 
     135                QMessageBox::information(this, tr("Auto-Update"), 
    133136                                tr("Unable to download the update please check your Network Connection.") 
    134137                .arg(fileName).arg(file->errorString())); 
     
    153156        file = new QFile(QString::fromUtf8((tmpfile.c_str()))); 
    154157        if (!file->open(QIODevice::WriteOnly)) { 
    155                 QMessageBox::information(this, QString::fromUtf8(dtitle.c_str()), 
     158                QMessageBox::information(this, tr("Auto-Update"), 
    156159                                tr("Unable to save the file %1: %2.") 
    157160                .arg(fileName).arg(file->errorString())); 
     
    161164        } 
    162165 
    163         progressDialog->setWindowTitle(QString::fromUtf8(dtitle.c_str())); 
     166        progressDialog->setWindowTitle(tr("Auto-Update")); 
    164167        progressDialog->setLabelText(tr("Downloading %1.").arg(fileName)); 
    165168        downloadButton->setEnabled(false); 
     
    202205    { 
    203206        file->remove(); 
    204         QMessageBox::information(this, QString::fromUtf8(dtitle.c_str()), 
     207        QMessageBox::information(this, tr("Auto-Update"), 
    205208                                 tr("Download failed: %1.") 
    206209                                 .arg(reply->errorString())); 
     
    212215        QUrl newUrl = url.resolved(redirectionTarget.toUrl()); 
    213216 
    214         if (QMessageBox::question(this, QString::fromUtf8(dtitle.c_str()), 
     217        if (QMessageBox::question(this, tr("Auto-Update"), 
    215218                                  tr("Redirect to %1 ?").arg(newUrl.toString()), 
    216219                                  QMessageBox::Yes | QMessageBox::No) == QMessageBox::Yes) 
  • middleware-offline/trunk/_src/eidmw/eidgui/mainwnd.cpp

    r109 r133  
    7979        { 
    8080                m_pTrayIcon = new QSystemTrayIcon( this ); 
    81                 m_pTrayIcon->setToolTip(QString(tr("EID Viewer"))); 
     81                m_pTrayIcon->setToolTip(QString(tr("Portuguese ID Card Management"))); 
    8282        } 
    8383        m_pTrayIcon->setContextMenu( m_pTrayIconMenu ); 
     
    176176        //------------------------------------ 
    177177        m_pTrayIcon = new QSystemTrayIcon( this ); 
    178         m_pTrayIcon->setToolTip(QString(tr("EID Viewer"))); 
     178        m_pTrayIcon->setToolTip(QString(tr("Portuguese ID Card Management"))); 
    179179        createTrayMenu(); 
    180180 
     
    680680                if(m_ShowBalloon) 
    681681                { 
    682                         QString title(tr("eID is still running")); 
     682                        QString title(tr("Portuguese ID Card Management is still running")); 
    683683                        QString message(tr("The application will continue to run. To stop this application, select 'Exit' from the menu.")); 
    684684                        m_pTrayIcon->showMessage ( title, message, QSystemTrayIcon::Information) ; 
     
    16551655        } 
    16561656        bool    bAllowTestCard = false; 
    1657         QString strCaption     = tr("Belgian EID Middleware"); 
     1657        QString strCaption     = tr("Portuguese ID Card Management"); 
    16581658        QString strMessage     = tr("The Root Certificate is not correct.\nThis may be a test card.\n\nDo you want to accept it?"); 
    16591659 
  • middleware-offline/trunk/_src/eidmw/eidgui/mainwnd.ui

    r109 r133  
    6565        <string notr="true">background-image: url(:/images/Images/Page_background_Identity.png);</string> 
    6666       </property> 
    67        <widget class="QLineEdit" name="txtIdentity_GivenNames"> 
     67       <widget class="QLineEdit" name="txtIdentity_Name"> 
    6868        <property name="geometry"> 
    6969         <rect> 
     
    9090        </property> 
    9191       </widget> 
    92        <widget class="QLineEdit" name="txtIdentity_Name"> 
     92       <widget class="QLineEdit" name="txtIdentity_GivenNames"> 
    9393        <property name="geometry"> 
    9494         <rect> 
    9595          <x>23</x> 
    9696          <y>40</y> 
    97           <width>197</width> 
     97          <width>376</width> 
    9898          <height>20</height> 
    9999         </rect> 
  • middleware-offline/trunk/_src/eidmw/eidlib/eidlib.i

    r124 r133  
    889889%javaexception("PTEID_Exception") SignXadesTIndividual  JAVA_CODE_THROW 
    890890%javaexception("PTEID_Exception") doSODCheck                    JAVA_CODE_THROW 
     891%javaexception("PTEID_Exception") getRootCAPubKey               JAVA_CODE_THROW 
     892%javaexception("PTEID_Exception") readPersonalNotes             JAVA_CODE_THROW 
    891893 
    892894//------------------------------------------------------------ 
     
    978980%javaexception("PTEID_Exception") getMRZ3                               JAVA_CODE_THROW 
    979981%javaexception("PTEID_Exception") getAccidentalIndications      JAVA_CODE_THROW 
     982%javaexception("PTEID_Exception") getPhotoObj                           JAVA_CODE_THROW 
     983%javaexception("PTEID_Exception") getCardAuthKeyObj                     JAVA_CODE_THROW 
    980984 
    981985//------------------------------------------------------------ 
     
    10231027%javaexception("PTEID_Exception") changePin             JAVA_CODE_THROW 
    10241028%javaexception("PTEID_Exception") getPinRef     JAVA_CODE_THROW 
     1029%javaexception("PTEID_Exception") unlockPin             JAVA_CODE_THROW 
    10251030 
    10261031//------------------------------------------------------------ 
  • middleware-offline/trunk/_src/eidmw/eidlib/eidlibException.cpp

    r124 r133  
    9393 
    9494        case EIDMW_ERR_CARD: 
     95        case EIDMW_ERR_TIMEOUT: 
     96        case EIDMW_ERR_PIN_CANCEL: 
     97        case EIDMW_NEW_PINS_DIFFER: 
     98        case EIDMW_WRONG_PIN_FORMAT: 
     99        case EIDMW_PINPAD_ERR: 
    95100        default: 
    96101                throw PTEID_Exception(e.GetError()); 
  • middleware-offline/trunk/_src/eidmw/eidmw.pro

    r35 r133  
    2727                applayer \ 
    2828                eidlib \ 
    29                 eidlibJava_Wrapper \ 
    30                 cardlayer/ppgempc-plugin \ 
    31                 cardlayer/acr83-plugin 
     29                eidlibJava_Wrapper 
    3230 
    3331!isEmpty(BUILD_SDK) { 
  • middleware-offline/trunk/_src/eidmw/minidriver/makemsi/pteidmdrv.inf

    r77 r133  
    4646CopyFiles=wow64_CopyFiles 
    4747AddReg=AddRegDefault64 
     48AddReg=AddRegDefaultWOW64 
    4849Include=umpass.inf 
    4950Needs=UmPass 
     
    5354CopyFiles=wow64_CopyFiles 
    5455AddReg=AddRegDefault64 
     56AddReg=AddRegDefaultWOW64 
    5557Include=umpass.inf 
    5658Needs=UmPass 
     
    109111 
    110112[amd64_CopyFiles] 
    111 pteidmdrv32.dll  
    112113pteidmdrv64.dll 
    113114 
    114115[x86_CopyFiles] 
    115116pteidmdrv32.dll 
    116 pteidmdrv32.dll 
    117117 
    118118[wow64_CopyFiles] 
    119119pteidmdrv32.dll 
    120120 
    121 [AddRegDefault32] 
     121[AddRegDefault32]   
    122122HKLM, %SmartCardName%,"ATR",0x00000001,3b,95,95,40,ff,d0,00,54,01,30 
    123123HKLM, %SmartCardName%,"ATRMask",0x00000001,ff,ff,ff,ff,ff,ff,ff,ff,ff,fc 
    124124HKLM, %SmartCardName%,"Crypto Provider",0x00000000,"Microsoft Base Smart Card Crypto Provider" 
    125125HKLM, %SmartCardName%,"Smart Card Key Storage Provider",0x00000000,"Microsoft Smart Card Key Storage Provider" 
     126HKLM, %SmartCardName%,"80000001",0x00000000,"pteidmdrv32.dll" 
    126127HKLM, %SmartCardName_1%,"ATR",0x00000001,3B,65,00,00,D0,00,54,01,30 
    127 HKLM, %SmartCardName%,"80000001",0x00000000,"pteidmdrv32.dll" 
    128128HKLM, %SmartCardName_1%,"ATRMask",0x00000001,ff,ff,ff,ff,ff,ff,ff,ff,fc 
    129129HKLM, %SmartCardName_1%,"Crypto Provider",0x00000000,"Microsoft Base Smart Card Crypto Provider" 
     
    135135HKLM, %SmartCardName_2%,"Smart Card Key Storage Provider",0x00000000,"Microsoft Smart Card Key Storage Provider" 
    136136HKLM, %SmartCardName_2%,"80000001",0x00000000,"pteidmdrv32.dll" 
     137HKLM, %SmartCardName_3%,"ATR",0x00000001,3B,7D,95,00,00,80,31,80,65,B0,83,11,00,00,83,00 
     138HKLM, %SmartCardName_3%,"ATRMask",0x00000001,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,00,00,ff,ff 
     139HKLM, %SmartCardName_3%,"Crypto Provider",0x00000000,"Microsoft Base Smart Card Crypto Provider" 
     140HKLM, %SmartCardName_3%,"Smart Card Key Storage Provider",0x00000000,"Microsoft Smart Card Key Storage Provider" 
     141HKLM, %SmartCardName_3%,"80000001",0x00000000,"pteidmdrv32.dll" 
    137142 
    138143 
     
    142147HKLM, %SmartCardName%,"Crypto Provider",0x00000000,"Microsoft Base Smart Card Crypto Provider" 
    143148HKLM, %SmartCardName%,"Smart Card Key Storage Provider",0x00000000,"Microsoft Smart Card Key Storage Provider" 
     149HKLM, %SmartCardName%,"80000001",0x00000000,"pteidmdrv64.dll" 
    144150HKLM, %SmartCardName_1%,"ATR",0x00000001,3B,65,00,00,D0,00,54,01,30 
    145 HKLM, %SmartCardName%,"80000001",0x00000000,"pteidmdrv64.dll" 
    146151HKLM, %SmartCardName_1%,"ATRMask",0x00000001,ff,ff,ff,ff,ff,ff,ff,ff,fc 
    147152HKLM, %SmartCardName_1%,"Crypto Provider",0x00000000,"Microsoft Base Smart Card Crypto Provider" 
     
    153158HKLM, %SmartCardName_2%,"Smart Card Key Storage Provider",0x00000000,"Microsoft Smart Card Key Storage Provider" 
    154159HKLM, %SmartCardName_2%,"80000001",0x00000000,"pteidmdrv64.dll" 
     160HKLM, %SmartCardName_3%,"ATR",0x00000001,3B,7D,95,00,00,80,31,80,65,B0,83,11,00,00,83,00 
     161HKLM, %SmartCardName_3%,"ATRMask",0x00000001,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,00,00,ff,ff 
     162HKLM, %SmartCardName_3%,"Crypto Provider",0x00000000,"Microsoft Base Smart Card Crypto Provider" 
     163HKLM, %SmartCardName_3%,"Smart Card Key Storage Provider",0x00000000,"Microsoft Smart Card Key Storage Provider" 
     164HKLM, %SmartCardName_3%,"80000001",0x00000000,"pteidmdrv64.dll" 
     165 
     166[AddRegDefaultWOW64] 
     167HKLM, %SmartCardNameWOW64%,"ATR",0x00000001,3b,95,95,40,ff,d0,00,54,01,30 
     168HKLM, %SmartCardNameWOW64%,"ATRMask",0x00000001,ff,ff,ff,ff,ff,ff,ff,ff,ff,fc 
     169HKLM, %SmartCardNameWOW64%,"Crypto Provider",0x00000000,"Microsoft Base Smart Card Crypto Provider" 
     170HKLM, %SmartCardNameWOW64%,"Smart Card Key Storage Provider",0x00000000,"Microsoft Smart Card Key Storage Provider" 
     171HKLM, %SmartCardNameWOW64%,"80000001",0x00000000,"pteidmdrv32.dll" 
     172HKLM, %SmartCardNameWOW64_1%,"ATR",0x00000001,3B,65,00,00,D0,00,54,01,30 
     173HKLM, %SmartCardNameWOW64_1%,"ATRMask",0x00000001,ff,ff,ff,ff,ff,ff,ff,ff,fc 
     174HKLM, %SmartCardNameWOW64_1%,"Crypto Provider",0x00000000,"Microsoft Base Smart Card Crypto Provider" 
     175HKLM, %SmartCardNameWOW64_1%,"Smart Card Key Storage Provider",0x00000000,"Microsoft Smart Card Key Storage Provider" 
     176HKLM, %SmartCardNameWOW64_1%,"80000001",0x00000000,"pteidmdrv32.dll" 
     177HKLM, %SmartCardNameWOW64_2%,"ATR",0x00000001,3B,7D,95,00,00,80,31,80,65,B0,83,11,00,00,83,00,90,00 
     178HKLM, %SmartCardNameWOW64_2%,"ATRMask",0x00000001,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,00,00,ff,ff,ff,ff 
     179HKLM, %SmartCardNameWOW64_2%,"Crypto Provider",0x00000000,"Microsoft Base Smart Card Crypto Provider" 
     180HKLM, %SmartCardNameWOW64_2%,"Smart Card Key Storage Provider",0x00000000,"Microsoft Smart Card Key Storage Provider" 
     181HKLM, %SmartCardNameWOW64_2%,"80000001",0x00000000,"pteidmdrv32.dll" 
     182HKLM, %SmartCardNameWOW64_3%,"ATR",0x00000001,3B,7D,95,00,00,80,31,80,65,B0,83,11,00,00,83,00 
     183HKLM, %SmartCardNameWOW64_3%,"ATRMask",0x00000001,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,00,00,ff,ff 
     184HKLM, %SmartCardNameWOW64_3%,"Crypto Provider",0x00000000,"Microsoft Base Smart Card Crypto Provider" 
     185HKLM, %SmartCardNameWOW64_3%,"Smart Card Key Storage Provider",0x00000000,"Microsoft Smart Card Key Storage Provider" 
     186HKLM, %SmartCardNameWOW64_3%,"80000001",0x00000000,"pteidmdrv32.dll" 
    155187 
    156188[DestinationDirs] 
     
    163195 
    164196[Strings] 
    165 AMA="Agencia para a Modernização Administrativa" 
    166 MediaDescription="Portuguese eID Smart Card Minidriver Installation Disk" 
    167 FedictCardDeviceName="Portuguese eID Minidriver for Smart Card" 
     197AMA="Estado Português" 
     198MediaDescription="Instalação do Minidriver do Cartão de Cidadão Português" 
     199FedictCardDeviceName="Minidriver do Cartão de Cidadão Português" 
    168200SmartCardName="SOFTWARE\Microsoft\Cryptography\Calais\SmartCards\PTeid (IAS) 1" 
    169201SmartCardName_1="SOFTWARE\Microsoft\Cryptography\Calais\SmartCards\PTeid (IAS) 2" 
    170 SmartCardNameWOW64="SOFTWARE\Wow6432Node\Microsoft\Cryptography\Calais\SmartCards\Pteid" 
    171  
    172 SmartCardName_2="SOFTWARE\Microsoft\Cryptography\Calais\SmartCards\PTeid (GemSafe)" 
    173  
     202SmartCardName_2="SOFTWARE\Microsoft\Cryptography\Calais\SmartCards\PTeid (GemSafe) 1" 
     203SmartCardName_3="SOFTWARE\Microsoft\Cryptography\Calais\SmartCards\PTeid (GemSafe) 2" 
     204SmartCardNameWOW64="SOFTWARE\Wow6432Node\Microsoft\Cryptography\Calais\SmartCards\PTeid (IAS) 1" 
     205SmartCardNameWOW64_1="SOFTWARE\Wow6432Node\Microsoft\Cryptography\Calais\SmartCards\PTeid (IAS) 2" 
     206SmartCardNameWOW64_2="SOFTWARE\Wow6432Node\Microsoft\Cryptography\Calais\SmartCards\PTeid (GemSafe) 1" 
     207SmartCardNameWOW64_3="SOFTWARE\Wow6432Node\Microsoft\Cryptography\Calais\SmartCards\PTeid (GemSafe) 2" 
     208 
     209 
     210 
  • middleware-offline/trunk/_src/eidmw/misc/Wix_MW35/MW35Wix/Product.wxs

    r77 r133  
    55  <?include ..\..\..\svn_revision.wxs ?> 
    66 
    7   <?define var.OfficialProductVersion =3.5.5?> 
    8   <?define var.ProductVersion =3.5.$(var.RevisionNumber)?> 
     7  <?define var.OfficialProductVersion =2.0.0?> 
     8  <?define var.ProductVersion =2.0.$(var.RevisionNumber)?> 
    99  <?define var.FullProductVersion =$(var.OfficialProductVersion).$(var.RevisionNumber)?> 
    1010 
     
    4040                      Property="NEWPRODUCTFOUND" 
    4141      /> 
    42       <UpgradeVersion Minimum="3.5.0" 
     42      <UpgradeVersion Minimum="1.0.0" 
    4343                      IncludeMinimum="yes" 
    4444                      Maximum="$(var.ProductVersion)" 
     
    7878    <?endif?> 
    7979 
    80     <?if $(var.Lang) = "nl"?> 
    81     <WixVariable Id="WixUILicenseRtf" Value="..\..\..\misc\licenses_files\License_nl.rtf" /> 
    82     <?elseif $(var.Lang) = "fr"?> 
    83     <WixVariable Id="WixUILicenseRtf" Value="..\..\..\misc\licenses_files\License_fr.rtf" /> 
    84     <?elseif $(var.Lang) = "de"?> 
    85     <WixVariable Id="WixUILicenseRtf" Value="..\..\..\misc\licenses_files\License_de.rtf" /> 
    86     <?else?> 
     80    
    8781    <WixVariable Id="WixUILicenseRtf" Value="..\..\..\misc\licenses_files\License_en.rtf" /> 
    88     <?endif?> 
    8982 
    9083    <WixVariable Id="WixUIBannerBmp" Value="..\..\..\misc\Wix_MW35\bannrbmp.bmp" /> 
     
    131124          <Directory Id="DIRECTORYCACHE" Name=".cache"/> 
    132125          <Directory Id="LOGDIR" Name="log"/> 
     126          <Directory Id="SDK" Name="sdk"> 
     127            <Directory Id="JAVA_SDK" Name="Java"/> 
     128            <Directory Id="CSHARP_SDK" Name="CSharp"/> 
     129          </Directory> 
    133130        </Directory> 
    134131        <Directory Id="FIREFOXROOTFOLDER" Name="Mozilla Firefox"> 
     
    170167 
    171168      <Directory Id="SystemFolder"> 
    172         <Directory Id="PTEIDPPDIR" Name="pteidpp"/> 
     169        <!-- <Directory Id="PTEIDPPDIR" Name="pteidpp"/> --> 
    173170      </Directory> 
    174171 
     
    186183        <RemoveFile Id="RemoveEidstoreFiles" On="uninstall" Name="*"/> 
    187184        <RemoveFolder Id="RemoveEidstoreFolder" On="uninstall"/> 
     185      </Component> 
     186    </DirectoryRef> 
     187 
     188    <DirectoryRef Id="JAVA_SDK"> 
     189      <Component Id="Java_SDK_Component" Guid="{8B0D8006-DB84-4986-A8D7-AC5F84F4AEF8}" > 
     190        <File Id="pteidlibJavaWrapper.dll" Name="pteidlibJava_Wrapper.dll" KeyPath="yes" Source="..\..\..\_Binaries35\Release\pteidlibJava_Wrapper.dll" /> 
     191        <File Id="pteidlibJava.jar" Name="pteidlibJava.jar" KeyPath="no" Source="..\..\..\jar\pteidlibJava.jar" /> 
     192      </Component> 
     193    </DirectoryRef> 
     194 
     195    <DirectoryRef Id="CSHARP_SDK"> 
     196      <Component Id="CSharp_SDK_Component" Guid="{67F8BF67-A48C-4711-9AB7-CAC056FA6C35}"> 
     197        <File Id="pteidlibCSWrapper.dll" Name="pteidlibCS_Wrapper.dll" KeyPath="yes" Source="..\..\..\_Binaries35\Release\pteidlibCS_Wrapper.dll" /> 
     198        <File Id="pteidlibCS.dll" Name="pteidlibCS.dll" KeyPath="no" Source="..\..\..\_Binaries35\Release\pteidlibCS.dll" /> 
    188199      </Component> 
    189200    </DirectoryRef> 
     
    429440 
    430441      <Component Id="GUI" Guid="{E45C85CA-0A5A-400C-9B86-7038C82B254D}" SharedDllRefCount="yes"> 
    431         <File Id="pteid35gui.exe" Name="pteid35gui.exe" KeyPath="yes" Source="..\..\..\_Binaries35\Release\pteid35gui.exe" /> 
    432         <File Id="pteid35libCpp.dll" Name="pteid35libCpp.dll" KeyPath="no" Source="..\..\..\_Binaries35\Release\pteid35libCpp.dll" /> 
     442        <File Id="pteidgui.exe" Name="pteidgui.exe" KeyPath="yes" Source="..\..\..\_Binaries35\Release\pteidgui.exe" /> 
     443        <File Id="pteidlibCpp.dll" Name="pteidlibCpp.dll" KeyPath="no" Source="..\..\..\_Binaries35\Release\pteidlibCpp.dll" /> 
    433444      </Component> 
    434445 
     
    436447        <File Id="eidmw_en.qm" Name="eidmw_en.qm" KeyPath="yes" Source="..\..\..\eidgui\eidmw_en.qm" /> 
    437448        <File Id="eidmw_nl.qm" Name="eidmw_nl.qm" KeyPath="no" Source="..\..\..\eidgui\eidmw_nl.qm" /> 
    438         <File Id="eidmw_fr.qm" Name="eidmw_fr.qm" KeyPath="no" Source="..\..\..\eidgui\eidmw_fr.qm" /> 
    439         <File Id="eidmw_de.qm" Name="eidmw_de.qm" KeyPath="no" Source="..\..\..\eidgui\eidmw_de.qm" /> 
    440       </Component> 
     449       </Component> 
    441450 
    442451      <!--Cairo and its dependencies: needed for the PDF export function --> 
     
    459468      <Component Id="License" Guid="{C00AF621-E882-4805-BA9C-B90AA5DBBCB6}" SharedDllRefCount="yes"> 
    460469        <File Id="License_en.rtf" Name="License_en.rtf" KeyPath="yes" Source="..\..\..\misc\licenses_files\License_en.rtf" /> 
    461         <File Id="License_nl.rtf" Name="License_nl.rtf" KeyPath="no" Source="..\..\..\misc\licenses_files\License_nl.rtf" /> 
    462         <File Id="License_fr.rtf" Name="License_fr.rtf" KeyPath="no" Source="..\..\..\misc\licenses_files\License_fr.rtf" /> 
    463         <File Id="License_de.rtf" Name="License_de.rtf" KeyPath="no" Source="..\..\..\misc\licenses_files\License_de.rtf" /> 
    464470        <File Id="THIRDPARTY_LICENSES.txt" Name="THIRDPARTY-LICENSES.txt" KeyPath="no" Source="..\..\..\misc\licenses_files\THIRDPARTY-LICENSES.txt" /> 
    465471      </Component> 
     
    485491 
    486492      <Component Id="Runtime35" Guid="{41F033E4-0669-4FD6-8B8E-DE31FE3AAE24}" SharedDllRefCount="yes"> 
    487         <File Id="pteid35applayer.dll" Name="pteid35applayer.dll" KeyPath="yes" Source="..\..\..\_Binaries35\Release\pteid35applayer.dll" /> 
    488         <File Id="pteid35cardlayer.dll" Name="pteid35cardlayer.dll" KeyPath="no" Source="..\..\..\_Binaries35\Release\pteid35cardlayer.dll" /> 
    489         <File Id="pteid35common.dll" Name="pteid35common.dll" KeyPath="no" Source="..\..\..\_Binaries35\Release\pteid35common.dll" /> 
    490         <File Id="pteid35DlgsWin32.dll" Name="pteid35DlgsWin32.dll" KeyPath="no" Source="..\..\..\_Binaries35\Release\pteid35DlgsWin32.dll" /> 
     493        <File Id="pteidapplayer.dll" Name="pteidapplayer.dll" KeyPath="yes" Source="..\..\..\_Binaries35\Release\pteidapplayer.dll" /> 
     494        <File Id="pteidcardlayer.dll" Name="pteidcardlayer.dll" KeyPath="no" Source="..\..\..\_Binaries35\Release\pteidcardlayer.dll" /> 
     495        <File Id="pteidcommon.dll" Name="pteidcommon.dll" KeyPath="no" Source="..\..\..\_Binaries35\Release\pteidcommon.dll" /> 
     496        <File Id="pteidDlgsWin32.dll" Name="pteidDlgsWin32.dll" KeyPath="no" Source="..\..\..\_Binaries35\Release\pteidDlgsWin32.dll" /> 
    491497      </Component> 
    492498 
     
    530536           
    531537    <Binary Id="PTeIDWin32CertificateImport" SourceFile="..\..\..\_Binaries35\Release\PTeIDWin32CertificateImport.exe" /> 
    532  
    533  
    534     <DirectoryRef Id="PTEIDPPDIR"> 
    535       <Component Id="PinpadLib" Guid="{9ADA6D75-5DCC-467E-A0CE-B84A482B2115}" SharedDllRefCount="yes"> 
    536         <File Id="pteidpp2gempc.dll" Name="pteidpp2-gempc.dll" Source="..\..\..\_Binaries35\Release\pteidpp2-gempc.dll" /> 
    537         <File Id="pteidpp2acr83plugin.dll" Name="pteidpp2-acr83-plugin.dll" Source="..\..\..\_Binaries35\Release\pteidpp2-acr83-plugin.dll" /> 
    538       </Component> 
    539     </DirectoryRef> 
    540538 
    541539    <DirectoryRef Id="TARGETDIR"> 
     
    623621 
    624622          <RegistryKey Key="general" Action="createAndRemoveOnUninstall"> 
    625             <RegistryValue Type="string" Name="language" Value="!(loc.Langpref)"/> 
     623            <RegistryValue Type="string" Name="language" Value="nl"/> 
    626624            <RegistryValue Type="string" Name="cache_dirname" Value="[ProgramFilesFolder]Portugal Identity Card\.cache"/> 
    627625            <RegistryValue Type="string" Name="install_dirname" Value="[ProgramFilesFolder]Portugal Identity Card"/> 
     
    634632          <RegistryKey Key="configuretool" Action="createAndRemoveOnUninstall"> 
    635633            <RegistryValue Type="integer" Name="start_with_windows" Value="1"/> 
    636             <RegistryValue Type="integer" Name="start_minimized" Value="1"/> 
     634            <RegistryValue Type="integer" Name="start_minimized" Value="0"/> 
    637635            <RegistryValue Type="integer" Name="show_toolbar" Value="1"/> 
    638636            <RegistryValue Type="integer" Name="show_picture" Value="0"/> 
     
    646644        <RegistryKey Root="HKLM" 
    647645                    Key="SOFTWARE\Microsoft\Windows\CurrentVersion\Run"> 
    648           <RegistryValue  Type="string" Name="pteid" Value="&quot;[APPLICATIONROOTFOLDER]pteid35gui.exe&quot; /startup"/> 
     646          <RegistryValue  Type="string" Name="pteid" Value="&quot;[APPLICATIONROOTFOLDER]pteidgui.exe&quot; /startup"/> 
    649647        </RegistryKey> 
    650648      </Component> 
     
    658656                  Name="Cartão de Cidadão" 
    659657                  Description="!(loc.PteidGuiDescr)" 
    660                   Target="[APPLICATIONROOTFOLDER]pteid35gui.exe" 
     658                  Target="[APPLICATIONROOTFOLDER]pteidgui.exe" 
    661659                  WorkingDirectory="APPLICATIONROOTFOLDER"/> 
    662660        <Shortcut Id="EidViewerShortcut" 
     
    664662                  Directory="DesktopFolder" 
    665663                  Description="!(loc.PteidGuiDescr)" 
    666                   Target="[APPLICATIONROOTFOLDER]pteid35gui.exe" 
     664                  Target="[APPLICATIONROOTFOLDER]pteidgui.exe" 
    667665                  WorkingDirectory="APPLICATIONROOTFOLDER"/> 
    668666        <RemoveFolder Id="ApplicationProgramsFolder" On="uninstall"/> 
     
    729727      <ComponentRef Id="Runtime35ThirdPartyOpenSSL"/> 
    730728      <ComponentRef Id="Runtime35ThirdPartyXerces"/> 
    731       <!-- <ComponentRef Id="BWPinpad"/> --> 
    732  
    733       <!-- Pteid pinpad dir--> 
    734       <ComponentRef Id="PinpadLib"/> 
    735  
     729      
    736730      <!-- Windows --> 
    737731      <ComponentRef Id="pteidgui.conf"/> 
     
    745739                Level="1" 
    746740                > 
    747         <ComponentRef Id="GUI" /> 
     741        <ComponentRef Id="GUI"/> 
     742        <ComponentRef Id="Qt"/> 
    748743        <ComponentRef Id="FreeImage"/> 
    749744        <ComponentRef Id="Curl"/> 
    750745        <ComponentRef Id="XMLSecurity"/> 
    751746        <ComponentRef Id="Cairo"/> 
    752         <ComponentRef Id="Qt" /> 
    753         <!-- <ComponentRef Id="QtPlugin"/> --> 
     747        <ComponentRef Id="Java_SDK_Component"/> 
     748        <ComponentRef Id="CSharp_SDK_Component"/> 
     749 
    754750        <ComponentRef Id="GuiLang" /> 
    755751        <!-- Shortcuts --> 
     
    786782 
    787783    <CustomAction Id="LaunchApplication" 
    788                   FileKey="pteid35gui.exe" 
     784                  FileKey="pteidgui.exe" 
    789785                  ExeCommand="" 
    790786                  Execute="immediate" 
     
    826822    <CustomAction Id="StopGui35" 
    827823              BinaryKey="KILLPROCESS" 
    828               ExeCommand="pteid35gui.exe" 
     824              ExeCommand="pteidgui.exe" 
    829825              Impersonate="no" 
    830826              Return="ignore" 
     
    834830    <CustomAction Id="StopGui35_Remove" 
    835831              BinaryKey="KILLPROCESS" 
    836               ExeCommand="pteid35gui.exe" 
     832              ExeCommand="pteidgui.exe" 
    837833              Impersonate="no" 
    838834              Return="ignore" 
     
    848844                 /> 
    849845     
    850     <CustomAction Id="StopXSign" 
    851                   BinaryKey="KILLPROCESS" 
    852                   ExeCommand="xsign.exe" 
    853                   Impersonate="no" 
    854                   Return="ignore" 
    855                   Execute="deferred" 
    856                  /> 
    857      
    858     <CustomAction Id="StopXSign35" 
    859                   BinaryKey="KILLPROCESS" 
    860                   ExeCommand="pteid35xsign.exe" 
    861                   Impersonate="no" 
    862                   Return="ignore" 
    863                   Execute="deferred" 
    864                   /> 
    865  
    866     <CustomAction Id="StopXSign35_Remove" 
    867               BinaryKey="KILLPROCESS" 
    868               ExeCommand="pteid35xsign.exe" 
    869               Impersonate="no" 
    870               Return="ignore" 
    871               Execute="deferred" 
    872                   /> 
    873  
    874846    <Binary Id="KILLPROCESS" SourceFile="..\..\..\misc\Wix_MW35\Kill_Process\Release\Kill_Process.exe"/> 
    875847--> 
  • middleware-offline/trunk/_src/eidmw/misc/Wix_MW35/MW35Wix/Product64.wxs

    r82 r133  
    55  <?include ..\..\..\svn_revision.wxs ?> 
    66 
    7   <?define var.OfficialProductVersion =3.5.5?> 
    8   <?define var.ProductVersion =3.5.$(var.RevisionNumber)?> 
     7  <?define var.OfficialProductVersion =2.0.0?> 
     8  <?define var.ProductVersion =2.0.$(var.RevisionNumber)?> 
    99  <?define var.FullProductVersion =$(var.OfficialProductVersion).$(var.RevisionNumber)?> 
    1010 
     
    2626 
    2727    <Package Id="$(var.PackageCode)" 
    28              InstallerVersion="200" 
     28             InstallerVersion="300" 
    2929             Keywords="Portugal e-ID Middleware Installer" 
    3030             Platform="x64" 
     
    3838                      IncludeMinimum="no" 
    3939                      OnlyDetect="yes" 
    40                       Property="NEWPRODUCTFOUND"  
     40                      Property="NEWPRODUCTFOUND" 
    4141      /> 
    42       <UpgradeVersion Minimum="3.5.0" 
     42      <UpgradeVersion Minimum="1.0.0" 
    4343                      IncludeMinimum="yes" 
    4444                      Maximum="$(var.ProductVersion)" 
     
    105105     
    106106    <Property Id="ARPPRODUCTICON" Value="eid.ico" /> 
    107     <Property Id="ARPURLINFOABOUT" Value="http://eid.portugal.be"/> 
     107    <Property Id="ARPURLINFOABOUT" Value="http://www.cartaodecidadao.pt"/> 
    108108     
    109109    <Property Id="ALLUSERS" Value="1" /> 
     
    587587           
    588588          <RegistryKey Key="general" Action="createAndRemoveOnUninstall"> 
    589             <RegistryValue Type="string" Name="language" Value="!(loc.Langpref)"/> 
     589            <RegistryValue Type="string" Name="language" Value="nl"/> 
    590590            <RegistryValue Type="string" Name="cache_dirname" Value="[ProgramFiles64Folder]Portugal Identity Card\.cache"/> 
    591591            <RegistryValue Type="string" Name="install_dirname" Value="[ProgramFiles64Folder]Portugal Identity Card"/> 
  • middleware-offline/trunk/_src/eidmw/misc/Wix_MW35/MW35Wix/PteidMW35_pt.wixproj

    r12 r133  
    66    <ProjectGuid>{df6e1cdc-9689-4a91-b60a-863e3baf5a57}</ProjectGuid> 
    77    <SchemaVersion>2.0</SchemaVersion> 
    8     <OutputName>PteidMW35_PT-Basic</OutputName> 
     8    <OutputName>Pteid-MW-2.0-PT</OutputName> 
    99    <OutputType>Package</OutputType> 
    1010    <WixTargetsPath Condition=" '$(WixTargetsPath)' == '' ">$(MSBuildExtensionsPath)\Microsoft\WiX\v3.x\Wix.targets</WixTargetsPath> 
  • middleware-offline/trunk/_src/eidmw/misc/Wix_MW35/MW35Wix/Strings-pt.wxl

    r12 r133  
    55  <String Id="StartApp" Overridable="yes">Lançar a aplicação utilitária</String> 
    66  <String Id="MinOs" Overridable="yes">Este Instalador precisa no mínimo de um sistema Windows 2000</String> 
    7   <String Id="PteidRuntime" Overridable="yes">Middleware do Cartão de Cidadão Português 3.5</String> 
     7  <String Id="PteidRuntime" Overridable="yes">Middleware do Cartão de Cidadão Português 2.0</String> 
    88  <String Id="PteidRuntimeDesc" Overridable="yes">Este módulo é necessário para utilizar o Cartão de Cidadão.</String> 
    99  <String Id="PteidGui" Overridable="yes">Aplicação Utilitária</String> 
  • middleware-offline/trunk/_src/eidmw/pkcs11/log.h

    r34 r133  
    166166extern void log_trace(const char *where, const char *string,... ); 
    167167extern void log_xtrace(const char *where, char *string,void *data,int len); 
     168void _log_xtrace(char *text, void *data, int l_data); 
     169 
    168170void log_attr(CK_ATTRIBUTE_PTR pAttr); 
    169171void log_template(const char *string, CK_ATTRIBUTE_PTR pTemplate, CK_ULONG count);