Changeset 94

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

Update SDK Examples

Location:
middleware-offline/trunk/sdk-examples/sdk-NewVersion
Files:
4 added
2 removed
2 modified

Legend:

Unmodified
Added
Removed
  • middleware-offline/trunk/sdk-examples/sdk-NewVersion/java/src/ExampleSDK.java

    r67 r94  
     1import java.io.BufferedReader; 
    12import java.io.DataOutputStream; 
    23import java.io.File; 
     
    45import java.io.FileWriter; 
    56import java.io.IOException; 
     7import java.io.InputStreamReader; 
    68import java.io.PrintWriter; 
    79import java.util.logging.Level; 
     
    1921import pt.gov.cartaodecidadao.PTEID_XmlUserRequestedInfo; 
    2022import pt.gov.cartaodecidadao.PTEID_ulwrapper; 
     23import pt.gov.cartaodecidadao.PTEID_Address; 
     24 
    2125import pt.gov.cartaodecidadao.SWIGTYPE_p_unsigned_long; 
    2226import pt.gov.cartaodecidadao.XMLUserData; 
     
    3741 
    3842 
     43        private static final String FREE_IMAGE = "FreeImage"; 
     44        private static final String X_SEC = "xsec_1_6"; 
     45        private static final String PTEID_APPLAYER = "pteid35applayer"; 
     46        private static final String PTEID_CARDLAYER = "pteid35cardlayer"; 
     47        private static final String PTEID_DLGS = "pteid35DlgsWin32"; 
     48        private static final String PTEID_COMMON = "pteid35common"; 
     49        private static final String XERCES_C_3_1 = "xerces-c_3_1"; 
     50        private static final String SSLEAY_32 = "ssleay32"; 
     51        private static final String LIBEAY_32 = "libeay32"; 
     52        private static final String LIBCURL = "libcurl"; 
     53        private static final String ZLIB = "zlib1"; 
     54        private static final String CC_JAVA_WRAPPER_WINDOWS = "pteidlibJava_Wrapper"; 
     55        private static final String CC_JAVA_WRAPPER_LINUX_MACOS = "pteidlibJava_Wrapper"; 
     56 
     57 
     58 
     59        private static final String[] WINDOWS_X86_LIBS = { ZLIB, LIBCURL, LIBEAY_32, SSLEAY_32, XERCES_C_3_1, PTEID_COMMON, PTEID_DLGS, PTEID_CARDLAYER, 
     60                FREE_IMAGE, X_SEC, PTEID_APPLAYER, CC_JAVA_WRAPPER_WINDOWS }; 
     61 
     62        private static final String[] WINDOWS_AMD64_LIBS ={}; 
    3963 
    4064        static {  
    4165                try {  
    42                         System.loadLibrary("pteidlibJava_Wrapper");  
    43                 } catch (UnsatisfiedLinkError e) {  
    44                         System.err.println("Native code library failed to load. \n" + e);  
    45                         System.exit(1);  
    46                 }  
     66 
     67                        final String osName = System.getProperty("os.name"); 
     68                        final String osArch = System.getProperty("os.arch"); 
     69 
     70 
     71                        if (osName.contains("Linux")) { 
     72                                System.loadLibrary(CC_JAVA_WRAPPER_LINUX_MACOS); 
     73                        } else if (osName.contains("Mac OS X")) { 
     74                                System.loadLibrary(CC_JAVA_WRAPPER_LINUX_MACOS); 
     75                        } else if (osName.contains("Windows")) { 
     76                                // windows acts "peculiar" when it comes to dependent libraries so we have to load all of them, one at a time, in order. 
     77                                for (final String library : osArch.equals("x86") ? WINDOWS_X86_LIBS : WINDOWS_AMD64_LIBS) { 
     78                                        System.loadLibrary(library); 
     79                                } 
     80                        } else { 
     81                                // If it's not a Linux or a mac or a windows it must be a *nix =) we hope 
     82                                System.loadLibrary(CC_JAVA_WRAPPER_LINUX_MACOS); 
     83                        } 
     84                }catch (Exception e){ 
     85                        e.printStackTrace(); 
     86                } 
    4787        }  
    4888 
    4989 
     90        // UTILS 
     91        private String readInput(String prompt_msg){ 
     92                String answer=""; 
     93                System.out.println(prompt_msg); 
     94                try { 
     95                        InputStreamReader isr = new InputStreamReader(System.in); 
     96                        BufferedReader br = new BufferedReader(isr); 
     97                        answer = br.readLine(); 
     98                } catch (IOException e) { 
     99                        // TODO Auto-generated catch block 
     100                        e.printStackTrace(); 
     101                } 
     102                return answer; 
     103        } 
    50104 
    51105 
     
    58112                } 
    59113        } 
     114         
     115        private void InitializeCard() { 
     116                try { 
     117                        this.idCard = this.readerContext.getEIDCard(); 
     118                } catch (PTEID_Exception ex) { 
     119                        ex.printStackTrace(); 
     120                } 
     121        } 
     122         
     123         
     124 
    60125 
    61126        private void findSmartCardReaderWithCard(String readerName) { 
     
    88153        } 
    89154 
     155        /* 
     156        private void dumpNotes(){ 
     157                this.idCard = this.readerContext.getEIDCard(); 
     158 
     159                this.idCard.getID().getN 
     160 
     161        } 
     162         */ 
    90163 
    91164        private void dumpID(){ 
    92  
    93165                try { 
    94166                        this.idCard = this.readerContext.getEIDCard(); 
     
    128200                        e.printStackTrace(); 
    129201                } 
    130  
    131         } 
     202        } 
     203 
     204        private void dumpAddress(){ 
     205                System.out.println("dumping address"); 
     206                try{ 
     207                        this.idCard = this.readerContext.getEIDCard(); 
     208                        PTEID_Address adr = this.idCard.getAddr(); 
     209                        System.out.println(adr.getDistrict()); 
     210                }catch (Exception e){ 
     211                        System.out.println("dumping address- Exception"); 
     212                        e.printStackTrace(); 
     213                } 
     214        } 
     215 
     216        /** 
     217         * @return the PTEID_ADDR object with all the address information 
     218 
     219    public PTEID_ADDR getPteidAddr() { 
     220        try { 
     221            return new PTEID_ADDR(card.getAddr()); 
     222        } catch (Throwable ex) { 
     223            LOGGER.log(Level.SEVERE, "Error retrieving address info", ex); 
     224            return null; 
     225        } 
     226    } 
     227         */ 
     228 
     229 
    132230 
    133231        private void verifyAddressPIN(){ 
    134232                PTEID_Pins pins; 
     233                String secret; 
    135234                try { 
    136235                        pins = this.idCard.getPins(); 
     
    138237                                PTEID_Pin pin = pins.getPinByNumber(i); 
    139238                                if (pin.getLabel().equalsIgnoreCase("PIN da Morada")) { 
     239                                        secret=readInput("Insira o PIN de Morada:"); 
    140240                                        PTEID_ulwrapper wrap = new PTEID_ulwrapper(-1); 
    141                                         if (pin.verifyPin("", wrap,false)) { 
     241                                        if (pin.verifyPin(secret, wrap,false)) { 
    142242                                                System.out.println("PIN OK!!!!\n"); 
    143243                                        } 
     
    161261                        e.printStackTrace(); 
    162262                } 
    163  
    164263        } 
    165264 
     
    184283                } 
    185284        } 
    186          
    187         private void verifyAutenticationPin(){ 
     285 
     286 
     287        private void verifySignPINNoWindow(){ 
     288                System.out.println("verifySignPINNoWindow()"); 
     289                boolean PIN_validated=false; 
     290                String secret; 
     291                PTEID_Pins pins; 
     292 
     293                try { 
     294                        this.idCard = this.readerContext.getEIDCard(); 
     295                        pins = this.idCard.getPins(); 
     296                        System.out.println("this.idCard.getPins()"); 
     297                        for (int i = 0; i < pins.count(); i++) { 
     298                                PTEID_Pin pin = pins.getPinByNumber(i); 
     299                                if (pin.getLabel().equalsIgnoreCase("PIN da Assinatura")) { 
     300                                        PTEID_ulwrapper wrap = new PTEID_ulwrapper(-1); 
     301                                        while (!PIN_validated){ 
     302                                                secret=readInput("Insira o PIN de assinatura:"); 
     303                                                if (pin.verifyPin(secret, wrap,false)) { 
     304                                                        PIN_validated=true; 
     305                                                        System.out.println("PIN OK!!!!\n"); 
     306                                                }        
     307                                        } 
     308                                } 
     309                        } 
     310                } catch (PTEID_Exception e) { 
     311                        e.printStackTrace(); 
     312                } 
     313        } 
     314 
     315        private void verifyAuthPINNoWindow(){ 
     316                boolean PIN_validated=false; 
     317                String secret; 
    188318                PTEID_Pins pins; 
    189319                try { 
     
    191321                        for (int i = 0; i < pins.count(); i++) { 
    192322                                PTEID_Pin pin = pins.getPinByNumber(i); 
    193                                  
     323                                if (pin.getLabel().substring(0, 11).equalsIgnoreCase("PIN da Aute")) { 
     324                                        PTEID_ulwrapper wrap = new PTEID_ulwrapper(-1); 
     325                                        while (!PIN_validated){ 
     326                                                secret=readInput("Insira o PIN de Autenticação:"); 
     327                                                if (pin.verifyPin(secret, wrap,false)) { 
     328                                                        PIN_validated=true; 
     329                                                        System.out.println("PIN OK!!!!\n"); 
     330                                                }        
     331                                        } 
     332                                } 
     333                        } 
     334                } catch (PTEID_Exception e) { 
     335                        e.printStackTrace(); 
     336                } 
     337        } 
     338 
     339        private void verifyAutenticationPin(){ 
     340                PTEID_Pins pins; 
     341                try { 
     342                        pins = this.idCard.getPins(); 
     343                        for (int i = 0; i < pins.count(); i++) { 
     344                                PTEID_Pin pin = pins.getPinByNumber(i); 
     345 
    194346                                //String i = pin.getLabel(); 
    195                                  
     347 
    196348                                System.out.println(); 
    197                                  
     349 
    198350 
    199351                                if (pin.getLabel().substring(0, 11).equalsIgnoreCase("PIN da Aute")) { 
     
    211363        } 
    212364 
    213          
    214          
    215          
    216          
     365 
     366 
     367 
     368 
    217369        private void verifyPins(){ 
    218370                //verifyAddressPIN(); 
     
    222374 
    223375        private void signXades(){ 
    224                 System.out.println("Here"); 
    225                 String[] file_list={"teste","teste2"}; 
    226                 idCard.SignXades(file_list,file_list.length,"signature2.zip"); 
    227  
     376                try{ 
     377                        System.out.println("Here"); 
     378                        String[] file_list={"teste.txt","teste2.txt"}; 
     379                        idCard.SignXades(file_list,file_list.length,"signature3.zip"); 
     380                        System.out.println("ASSINEI!!"); 
     381                }catch (Exception e){ 
     382                        e.printStackTrace(); 
     383                } 
     384 
     385        } 
     386 
     387        private void signXadesT(){ 
     388                try{ 
     389                        String[] file_list={"teste","teste2"}; 
     390                        idCard.SignXadesT(file_list,file_list.length,"signature-xadest-2.zip"); 
     391                }catch (Exception e){ 
     392                        e.printStackTrace(); 
     393                } 
    228394        } 
    229395 
     
    232398                String errors = new String();   
    233399                PTEID_ulwrapper error_size = new PTEID_ulwrapper(0); 
    234                 boolean result = PTEID_SigVerifier.VerifySignature("signature2.zip", errors, error_size); 
     400                boolean result = PTEID_SigVerifier.VerifySignature("signature3.zip", errors, error_size); 
    235401                if (!result) 
    236402                        System.out.println("Validation failed!"); 
     
    238404                        System.out.println("Validation succeeded!");                     
    239405        } 
     406 
     407        private void verifySignatureXadesT() 
     408        { 
     409                String errors = new String();   
     410                PTEID_ulwrapper error_size = new PTEID_ulwrapper(0); 
     411                boolean result = PTEID_SigVerifier.VerifySignature("signature-xadest-2.zip", errors, error_size); 
     412                if (!result) 
     413                        System.out.println("Validation failed!"); 
     414                else 
     415                        System.out.println("Validation succeeded!");                     
     416        } 
     417 
     418 
    240419 
    241420        private byte[] getFirst256(byte[] content){ 
     
    270449 
    271450 
    272  
     451        /* 
     452         * Sign a given data with the SHA-1 algorithm. This process required the Authentication PIN 
     453         *  
     454         * @param inputData 
     455         *            the data to be signed 
     456         * @return the byte[] correspondent to what was given but signed 
     457         *  
     458         * @throws CCError 
     459         */ 
     460        /* 
     461        public byte[] signData(final byte[] inputData) throws CCError { 
     462        // we shouldn't use a byte[] from parameter instead we should use a copy of the data. 
     463        final byte[] dataToBeSigned = inputData.clone(); 
     464        try { 
     465            MessageDigest md = MessageDigest.getInstance("SHA-1"); 
     466            final byte[] digest = md.digest(dataToBeSigned); 
     467 
     468            final byte[] SHA1_MAGIC_STRING = new byte[] { 0x30, 0x21, 0x30, 0x09, 0x06, 0x05, 0x2b, 0x0e, 0x03, 0x02, 0x1a, 0x05, 0x00, 0x04, 0x14 }; 
     469 
     470            final byte[] hashMagicString = SHA1_MAGIC_STRING; 
     471 
     472            final byte[] fullDigest = Arrays.copyOf(hashMagicString, hashMagicString.length + digest.length); 
     473            System.arraycopy(digest, 0, fullDigest, hashMagicString.length, digest.length); 
     474 
     475            final PTEID_PIN PIN = new PTEID_PIN(PINUtils.getAuthenticationPin(card)); 
     476            pinCallback.verifyPIN(PIN, PIN.getLabel(), bundle.getString("request.authentication.pin.msg"), 
     477                                  bundle.getString("request.authentication.pin.msgForPINPad")); 
     478 
     479            final PTEID_ByteArray outputData = card.Sign(new PTEID_ByteArray(fullDigest, fullDigest.length)); 
     480 
     481            return outputData.GetBytes(); 
     482        } catch (PTEID_Exception ex) { 
     483            throw new CCError(ex); 
     484        } catch (NoSuchAlgorithmException ex) { 
     485            throw new CCError(ex); 
     486        } 
     487    } 
     488 
     489         */      
     490 
     491 
     492 
     493 
     494 
     495        public void signData(){ 
     496 
     497                String                  str_to_be_signed; 
     498                PTEID_ByteArray content_to_be_signed; 
     499                PTEID_ByteArray content_signed; 
     500 
     501                str_to_be_signed="String a serassinada"; 
     502 
     503                try { 
     504                        this.idCard = this.readerContext.getEIDCard(); 
     505 
     506                        content_to_be_signed = new PTEID_ByteArray(str_to_be_signed.getBytes(),str_to_be_signed.length()); 
     507                        content_signed = this.idCard.Sign(content_to_be_signed); 
     508                } catch (Exception ex) { 
     509                        ex.printStackTrace(); 
     510                } 
     511        } 
    273512 
    274513 
     
    277516                byte NOTES_PADDING_BYTE = 0; 
    278517                String NOTES_FILE_ID = "3f005f00ef07"; 
     518 
     519                this.verifyAuthPINNoWindow(); 
    279520 
    280521                try { 
     
    299540        } 
    300541 
     542        private void generateXML(){ 
     543 
     544                try{     
     545 
     546                         
     547                         
     548                        verifyAddressPIN(); 
     549                        PTEID_XmlUserRequestedInfo req3 = new PTEID_XmlUserRequestedInfo(); 
     550                        PTEID_CCXML_Doc result3 = this.idCard.getXmlCCDoc(req3); 
     551                        System.out.println("----------> "+ result3.getCCXML()); 
     552                         
     553                         
     554                         
     555                        System.out.println("gerar morada"); 
     556                        PTEID_XmlUserRequestedInfo req1 = new PTEID_XmlUserRequestedInfo(); 
     557                        req1.add(XMLUserData.XML_DISTRICT); 
     558                        //req1.add(XMLUserData.XML_PHOTO); 
     559                        PTEID_CCXML_Doc result1 = this.idCard.getXmlCCDoc(req1); 
     560                        System.out.println("resultado = "+ result1.getCCXML()); 
     561 
     562                         
     563                        System.out.println("gerar xml NIC"); 
     564                        PTEID_XmlUserRequestedInfo req2 = new PTEID_XmlUserRequestedInfo(); 
     565                        req2.add(XMLUserData.XML_NIC); 
     566                        //req1.add(XMLUserData.XML_PHOTO); 
     567                        PTEID_CCXML_Doc result2 = this.idCard.getXmlCCDoc(req2); 
     568                        System.out.println("resultado = "+ result2.getCCXML()); 
     569 
     570/*                      System.out.println("gerar xml só com foto"); 
     571                        PTEID_XmlUserRequestedInfo req2 = new PTEID_XmlUserRequestedInfo(); 
     572                        req2.add(XMLUserData.XML_PHOTO); 
     573                        PTEID_CCXML_Doc result2 = this.idCard.getXmlCCDoc(req2);         
     574 
     575                        System.out.println("resultado2 = "+ result2.getCCXML()); 
     576                         
     577                        */ 
     578                } catch (Exception e){ 
     579                        e.printStackTrace(); 
     580                } 
     581                 
     582                 
     583        } 
     584 
     585 
    301586 
    302587 
     
    307592 
    308593                eSDK.init(); 
    309  
    310594                eSDK.getSmartCardReaders(); 
     595                eSDK.InitializeCard(); 
     596                 
     597                eSDK.generateXML(); 
     598                 
     599                /* 
    311600 
    312601                eSDK.dumpID(); 
    313602 
     603                eSDK.verifyAddressPIN(); 
     604                eSDK.dumpAddress(); 
    314605                eSDK.listPins(); 
    315606 
     607                // Pins Operations 
    316608                //eSDK.verifyPins(); 
    317  
    318609                //eSDK.verifySignPIN(); 
    319                 //eSDK.signXades(); 
    320  
    321                 //eSDK.verifySignature(); 
    322  
    323                 eSDK.readNotes(); 
    324                  
    325                 eSDK.verifyAutenticationPin(); 
    326                 eSDK.writeNotes("1233"); 
    327  
     610 
     611                // Sign Operations  - XADES / XADEST 
     612                //eSDK.verifySignPIN(); 
     613                eSDK.verifySignPINNoWindow(); 
     614                eSDK.signXades(); 
     615 
     616                 */ 
     617                 
     618 
     619         
     620                 
     621                 
     622                 
     623                 
     624                 
     625                 
     626                 
     627                //eSDK.signXadesT(); 
     628                //eSDK.verifySignatureXadesT(); 
     629 
     630                // Sign Method - used for Authentication Proccess on mw web  
     631                //eSDK.verifyAuthPINNoWindow(); 
     632                //eSDK.signData(); 
     633                //eSDK.readNotes(); 
     634 
     635                // Testing Method "WriteFile"  
     636                //System.out.println("Writing Notes"); 
     637                //eSDK.verifyAuthPINNoWindow(); 
     638                //eSDK.writeNotes("My new test notes"); 
     639 
     640 
     641                //test_GetAddr(); 
    328642 
    329643                /* 
     
    332646                test_GetID(); 
    333647 
    334                 test_GetAddr(); 
    335648 
    336649                test_GetPic(); 
  • middleware-offline/trunk/sdk-examples/sdk-NewVersion/java/src/Makefile

    r67 r94  
    1 all: build run  
     1all: build createFilesToSign run  
     2 
     3createFilesToSign: 
     4        echo "File Teste 1 " > teste.txt 
     5        echo "File Teste 2 " > teste2.txt 
    26 
    37build: 
    48        javac Utils.java 
    5         javac -cp .:./pteid35libJava.jar ExampleSDK.java 
     9        javac -cp .:../pteid-pkg/jar/pteidlibJava.jar ExampleSDK.java 
     10        #javac -cp .:./pteidlibJava.jar ExampleSDK.java 
     11         
     12 
     13 
    614#For Windows:  javac -cp .:./pteid35libJava.jar ExampleSDK.java 
    715         
    816run: 
    9         java -Djava.library.path=/usr/local/lib/pteid_jni:/usr/local/lib/ -cp .:./pteid35libJava.jar ExampleSDK 
     17        java -Djava.library.path=../pteid-pkg/lib/ -cp .:../pteid-pkg/jar/pteidlibJava.jar ExampleSDK 
     18        #java -Djava.library.path=/usr/local/lib/pteid_jni:/usr/local/lib/ -cp .:./pteidlibJava.jar ExampleSDK 
    1019# For windows:  java -Djava.library.path=.;/C:\WINDOWS\system32 -cp .;./pteid35libJava.jar ExampleSDK