Changeset 13
- Timestamp:
- 11/29/11 01:22:59 (9 years ago)
- Location:
- middleware-online/trunk
- Files:
-
- 39 added
- 9 removed
- 23 modified
Legend:
- Unmodified
- Added
- Removed
-
middleware-online/trunk/cc-commons/src/main/java/pt/gov/cartaodecidadao/applet/commons/pteid/PTEID_ADDR.java
r6 r13 1 1 package pt.gov.cartaodecidadao.applet.commons.pteid; 2 3 import pt.gov.cartaodecidadao.PTEID_Address; 4 import pt.gov.cartaodecidadao.PTEID_Exception; 2 5 3 6 public class PTEID_ADDR { 4 7 5 //EF05 ADDRESS 6 // shared address attributes 7 private static final short ADDRESS_TYPE_OFFSET = 0x0; 8 private static final short ADDRESS_COUNTRY_OFFSET = 0x2; 9 // national address attribute offsets 10 private static final short DISTRICT_CODE_OFFSET = 0x6; 11 private static final short DISTRICT_DESCRIPTION_OFFSET = 0xA; 12 private static final short MUNICIPALITY_CODE_OFFSET = 0x6E; 13 private static final short MUNICIPALITY_DESCRIPTION_OFFSET = 0x75; 14 private static final short CIVIL_PARISH_CODE_OFFSET = 0xDA; 15 private static final short CIVIL_PARISH_DESCRIPTION_OFFSET = 0xE6; 16 private static final short ABBR_STREET_TYPE_OFFSET = 0x14A; 17 private static final short STREET_TYPE_OFFSET = 0x15E; 18 private static final short STREET_NAME_OFFSET = 0x1C2; 19 private static final short ABBR_BUILDING_TYPE_OFFSET = 0x28A; 20 private static final short BUILDING_TYPE_OFFSET = 0x29E; 21 private static final short DOOR_NUMBER_OFFSET = 0x302; 22 private static final short FLOOR_OFFSET = 0x316; 23 private static final short SIDE_OFFSET = 0x33E; 24 private static final short PLACE_OFFSET = 0x366; 25 private static final short LOCALITY_OFFSET = 0x3CA; 26 private static final short POSTAL_CODE_CP4_OFFSET = 0x42E; 27 private static final short POSTAL_CODE_CP3_OFFSET = 0x436; 28 private static final short POSTAL_LOCALITY_OFFSET = 0x43C; 29 private static final short ADDRESS_NUMBER_OFFSET = 0x46E; 30 // foreign address attribute offsets 31 private static final short FOREIGN_COUNTRY_DESCRIPTION_OFFSET = 0x6; 32 private static final short FOREIGN_ADDRESS_OFFSET = 0x6A; 33 private static final short FOREIGN_CITY_OFFSET = 0x196; 34 private static final short FOREIGN_REGION_OFFSET = 0x1FA; 35 private static final short FOREIGN_LOCALITY_OFFSET = 0x25E; 36 private static final short FOREIGN_POSTAL_CODE_OFFSET = 0x2C2; 37 private static final short FOREIGN_ADDRESS_NUMBER_OFFSET = 0x326; 38 /* Fields length */ 39 private static final short PTEID_ADDR_TYPE_LEN = 2; 40 private static final short PTEID_ADDR_COUNTRY_LEN = 4; 41 private static final short PTEID_DISTRICT_LEN = 4; 42 private static final short PTEID_DISTRICT_DESC_LEN = 100; 43 private static final short PTEID_DISTRICT_CON_LEN = 8; 44 private static final short PTEID_DISTRICT_CON_DESC_LEN = 100; 45 private static final short PTEID_DISTRICT_FREG_LEN = 12; 46 private static final short PTEID_DISTRICT_FREG_DESC_LEN = 100; 47 private static final short PTEID_ROAD_ABBR_LEN = 20; 48 private static final short PTEID_ROAD_LEN = 100; 49 private static final short PTEID_ROAD_DESIG_LEN = 200; 50 private static final short PTEID_HOUSE_ABBR_LEN = 20; 51 private static final short PTEID_HOUSE_LEN = 100; 52 private static final short PTEID_NUMDOOR_LEN = 20; 53 private static final short PTEID_FLOOR_LEN = 40; 54 private static final short PTEID_SIDE_LEN = 40; 55 private static final short PTEID_PLACE_LEN = 100; 56 private static final short PTEID_LOCALITY_LEN = 100; 57 private static final short PTEID_CP4_LEN = 8; 58 private static final short PTEID_CP3_LEN = 6; 59 private static final short PTEID_POSTAL_LEN = 50; 60 private static final short PTEID_NUMMOR_LEN = 12; 61 private static final short PTEID_ADDR_COUNTRYF_DESC_LEN = 100; 62 private static final short PTEID_ADDRF_LEN = 300; 63 private static final short PTEID_CITYF_LEN = 100; 64 private static final short PTEID_REGIOF_LEN = 100; 65 private static final short PTEID_LOCALITYF_LEN = 100; 66 private static final short PTEID_POSTALF_LEN = 100; 67 private static final short PTEID_NUMMORF_LEN = 12; 68 69 private static final String ADDR_TYPE_NATIONAL = "N"; 70 71 public short version; 72 public String addrType; 73 public String country; 74 public String district; 75 public String districtDesc; 76 public String municipality; 77 public String municipalityDesc; 78 public String freguesia; 79 public String freguesiaDesc; 80 public String streettypeAbbr; 81 public String streettype; 82 public String street; 83 public String buildingAbbr; 84 public String building; 85 public String door; 86 public String floor; 87 public String side; 88 public String place; 89 public String locality; 90 public String cp4; 91 public String cp3; 92 public String postal; 93 public String numMor; 94 public String countryDescF; 95 public String addressF; 96 public String cityF; 97 public String regioF; 98 public String localityF; 99 public String postalF; 100 public String numMorF; 101 102 public static PTEID_ADDR parseAddr(byte[] buf) { 103 104 PTEID_ADDR addr = new PTEID_ADDR(); 105 106 addr.addrType = Utils.extractString(buf, ADDRESS_TYPE_OFFSET, PTEID_ADDR_TYPE_LEN); 107 addr.country = Utils.extractString(buf, ADDRESS_COUNTRY_OFFSET, PTEID_ADDR_COUNTRY_LEN); 108 109 // check if the address is national it can be checked by addrType or by country 110 if (ADDR_TYPE_NATIONAL.equals(addr.addrType)) { 111 addr.district = Utils.extractString(buf, DISTRICT_CODE_OFFSET, PTEID_DISTRICT_LEN); 112 addr.districtDesc = Utils.extractString(buf, DISTRICT_DESCRIPTION_OFFSET, PTEID_DISTRICT_DESC_LEN); 113 addr.municipality = Utils.extractString(buf, MUNICIPALITY_CODE_OFFSET, PTEID_DISTRICT_CON_LEN); 114 addr.municipalityDesc = Utils.extractString(buf, MUNICIPALITY_DESCRIPTION_OFFSET, PTEID_DISTRICT_CON_DESC_LEN); 115 addr.freguesia = Utils.extractString(buf, CIVIL_PARISH_CODE_OFFSET, PTEID_DISTRICT_FREG_LEN); 116 addr.freguesiaDesc = Utils.extractString(buf, CIVIL_PARISH_DESCRIPTION_OFFSET, PTEID_DISTRICT_FREG_DESC_LEN); 117 addr.streettypeAbbr = Utils.extractString(buf, ABBR_STREET_TYPE_OFFSET, PTEID_ROAD_ABBR_LEN); 118 addr.streettype = Utils.extractString(buf, STREET_TYPE_OFFSET, PTEID_ROAD_LEN); 119 addr.street = Utils.extractString(buf, STREET_NAME_OFFSET, PTEID_ROAD_DESIG_LEN); 120 addr.buildingAbbr = Utils.extractString(buf, ABBR_BUILDING_TYPE_OFFSET, PTEID_HOUSE_ABBR_LEN); 121 addr.building = Utils.extractString(buf, BUILDING_TYPE_OFFSET, PTEID_HOUSE_LEN); 122 addr.door = Utils.extractString(buf, DOOR_NUMBER_OFFSET, PTEID_NUMDOOR_LEN); 123 addr.floor = Utils.extractString(buf, FLOOR_OFFSET, PTEID_FLOOR_LEN); 124 addr.side = Utils.extractString(buf, SIDE_OFFSET, PTEID_SIDE_LEN); 125 addr.place = Utils.extractString(buf, PLACE_OFFSET, PTEID_PLACE_LEN); 126 addr.locality = Utils.extractString(buf, LOCALITY_OFFSET, PTEID_LOCALITY_LEN); 127 addr.cp4 = Utils.extractString(buf, POSTAL_CODE_CP4_OFFSET, PTEID_CP4_LEN); 128 addr.cp3 = Utils.extractString(buf, POSTAL_CODE_CP3_OFFSET, PTEID_CP3_LEN); 129 addr.postal = Utils.extractString(buf, POSTAL_LOCALITY_OFFSET, PTEID_POSTAL_LEN); 130 addr.numMor = Utils.extractString(buf, ADDRESS_NUMBER_OFFSET, PTEID_NUMMOR_LEN); 131 132 } else { // foreign address 133 addr.countryDescF = Utils.extractString(buf, FOREIGN_COUNTRY_DESCRIPTION_OFFSET, PTEID_ADDR_COUNTRYF_DESC_LEN); 134 addr.addressF = Utils.extractString(buf, FOREIGN_ADDRESS_OFFSET, PTEID_ADDRF_LEN); 135 addr.cityF = Utils.extractString(buf, FOREIGN_CITY_OFFSET, PTEID_CITYF_LEN); 136 addr.regioF = Utils.extractString(buf, FOREIGN_REGION_OFFSET, PTEID_REGIOF_LEN); 137 addr.localityF = Utils.extractString(buf, FOREIGN_LOCALITY_OFFSET, PTEID_LOCALITYF_LEN); 138 addr.postalF = Utils.extractString(buf, FOREIGN_POSTAL_CODE_OFFSET, PTEID_POSTALF_LEN); 139 addr.numMorF = Utils.extractString(buf, FOREIGN_ADDRESS_NUMBER_OFFSET, PTEID_NUMMORF_LEN); 140 } 141 142 return addr; 143 } 8 public String district; 9 public String districtDesc; 10 public String municipality; 11 public String civilParish; 12 public String streetTypeAbbr; 13 public String streetType; 14 public String street; 15 public String buildingAbbr; 16 public String building; 17 public String door; 18 public String floor; 19 public String side; 20 public String place; 21 public String locality; 22 public String cp4; 23 public String cp3; 24 public String postal; 25 26 public PTEID_ADDR(PTEID_Address beaddr) throws PTEID_Exception { 27 this.district = beaddr.getDistrict(); 28 this.municipality = beaddr.getMunicipality(); 29 this.civilParish = beaddr.getCivilParish(); 30 this.streetTypeAbbr = beaddr.getStreetType1(); 31 this.streetType = beaddr.getStreetType2(); 32 this.street = beaddr.getStreetName(); 33 this.buildingAbbr = beaddr.getBuildingType1(); 34 this.building = beaddr.getBuildingType2(); 35 this.door = beaddr.getDoorNo(); 36 this.floor = beaddr.getFloor(); 37 this.side = beaddr.getSide(); 38 this.place = beaddr.getPlace(); 39 this.locality = beaddr.getLocality(); 40 this.cp4 = beaddr.getZip4(); 41 this.cp3 = beaddr.getZip3(); 42 this.postal = beaddr.getPostalLocality(); 43 } 144 44 } -
middleware-online/trunk/cc-commons/src/main/java/pt/gov/cartaodecidadao/applet/commons/pteid/PTEID_ID.java
r6 r13 1 1 package pt.gov.cartaodecidadao.applet.commons.pteid; 2 3 import pt.gov.cartaodecidadao.PTEID_EId; 4 import pt.gov.cartaodecidadao.PTEID_Exception; 2 5 3 6 public class PTEID_ID { 4 7 5 // EF02 IDENTIFICATION 6 // identification attributes offsets 7 private static final short ISSUING_ENTITY_OFFSET = 0x0; 8 private static final short COUNTRY_OFFSET = 0x28; 9 private static final short DOCUMENT_TYPE_OFFSET = 0x78; 10 private static final short CARD_NUMBER_OFFSET = 0x9A; 11 private static final short CARD_NUMBER_PAN_OFFSET = 0xB6; 12 private static final short CARD_VERSION_OFFSET = 0xD6; 13 private static final short ISSUING_DATE_OFFSET = 0xE6; 14 private static final short LOCAL_OF_REQUEST_OFFSET = 0xFA; 15 private static final short EXPIRY_DATE_OFFSET = 0x136; 16 private static final short SURNAME_OFFSET = 0x14A; 17 private static final short GIVEN_NAME_OFFSET = 0x1C2; 18 private static final short SEX_OFFSET = 0x23A; 19 private static final short NATIONALITY_OFFSET = 0x23C; 20 private static final short DATE_OF_BIRTH_OFFSET = 0x242; 21 private static final short HEIGHT_OFFSET = 0x256; 22 private static final short DOCUMENT_NUMBER_OFFSET = 0x25E; 23 private static final short SURNAME_MOTHER_OFFSET = 0x270; 24 private static final short GIVEN_NAME_MOTHER_OFFSET = 0x2E8; 25 private static final short SURNAME_FATHER_OFFSET = 0x360; 26 private static final short GIVEN_NAME_FATHER_OFFSET = 0x3D8; 27 private static final short TAX_NUMBER_OFFSET = 0x450; 28 private static final short SOCIAL_SECURITY_NUMBER_OFFSET = 0x462; 29 private static final short HEALTH_NUMBER_OFFSET = 0x478; 30 private static final short ACCIDENTAL_INDICATIONS_OFFSET = 0x48A; 31 private static final short MRZ1_OFFSET = 0x502; 32 private static final short MRZ2_OFFSET = 0x520; 33 private static final short MRZ3_OFFSET = 0x53E; 34 /* Fields length */ 35 private static final short PTEID_DELIVERY_ENTITY_LEN = 40; 36 private static final short PTEID_COUNTRY_LEN = 80; 37 private static final short PTEID_DOCUMENT_TYPE_LEN = 34; 38 private static final short PTEID_CARDNUMBER_LEN = 28; 39 private static final short PTEID_CARDNUMBER_PAN_LEN = 32; 40 private static final short PTEID_CARDVERSION_LEN = 16; 41 private static final short PTEID_DATE_LEN = 20; 42 private static final short PTEID_LOCALE_LEN = 60; 43 private static final short PTEID_NAME_LEN = 120; 44 private static final short PTEID_SEX_LEN = 2; 45 private static final short PTEID_NATIONALITY_LEN = 6; 46 private static final short PTEID_HEIGHT_LEN = 8; 47 private static final short PTEID_NUMBI_LEN = 18; 48 private static final short PTEID_NUMNIF_LEN = 18; 49 private static final short PTEID_NUMSS_LEN = 22; 50 private static final short PTEID_NUMSNS_LEN = 18; 51 private static final short PTEID_INDICATIONEV_LEN = 120; 52 private static final short PTEID_MRZ_LEN = 30; 53 54 public short version; 55 public String deliveryEntity; 8 public String issuingEntity; 56 9 public String country; 57 10 public String documentType; 58 11 public String cardNumber; 59 public String cardNumberPAN;60 12 public String cardVersion; 61 public String deliveryDate;13 public String issuingDate; 62 14 public String locale; 63 15 public String validityDate; … … 77 29 public String numSNS; 78 30 public String notes; 79 public String mrz1; 80 public String mrz2; 81 public String mrz3; 82 83 public static PTEID_ID parseId(byte[] buf) { 84 85 PTEID_ID id = new PTEID_ID(); 86 87 id.deliveryEntity = Utils.extractString(buf, ISSUING_ENTITY_OFFSET, PTEID_DELIVERY_ENTITY_LEN); 88 id.country = Utils.extractString(buf, COUNTRY_OFFSET, PTEID_COUNTRY_LEN); 89 id.documentType = Utils.extractString(buf, DOCUMENT_TYPE_OFFSET, PTEID_DOCUMENT_TYPE_LEN); 90 id.cardNumber = Utils.extractString(buf, CARD_NUMBER_OFFSET, PTEID_CARDNUMBER_LEN); 91 id.cardNumberPAN = Utils.extractString(buf, CARD_NUMBER_PAN_OFFSET, PTEID_CARDNUMBER_PAN_LEN); 92 id.cardVersion = Utils.extractString(buf, CARD_VERSION_OFFSET, PTEID_CARDVERSION_LEN); 93 id.deliveryDate = Utils.extractString(buf, ISSUING_DATE_OFFSET, PTEID_DATE_LEN); 94 id.locale = Utils.extractString(buf, LOCAL_OF_REQUEST_OFFSET, PTEID_LOCALE_LEN); 95 id.validityDate = Utils.extractString(buf, EXPIRY_DATE_OFFSET, PTEID_DATE_LEN); 96 id.name = Utils.extractString(buf, SURNAME_OFFSET, PTEID_NAME_LEN); 97 id.firstname = Utils.extractString(buf, GIVEN_NAME_OFFSET, PTEID_NAME_LEN); 98 id.sex = Utils.extractString(buf, SEX_OFFSET, PTEID_SEX_LEN); 99 id.nationality = Utils.extractString(buf, NATIONALITY_OFFSET, PTEID_NATIONALITY_LEN); 100 id.birthDate = Utils.extractString(buf, DATE_OF_BIRTH_OFFSET, PTEID_DATE_LEN); 101 id.height = Utils.extractString(buf, HEIGHT_OFFSET, PTEID_HEIGHT_LEN); 102 id.numBI = Utils.extractString(buf, DOCUMENT_NUMBER_OFFSET, PTEID_NUMBI_LEN); 103 id.nameFather = Utils.extractString(buf, SURNAME_FATHER_OFFSET, PTEID_NAME_LEN); 104 id.firstnameFather = Utils.extractString(buf, GIVEN_NAME_FATHER_OFFSET, PTEID_NAME_LEN); 105 id.nameMother = Utils.extractString(buf, SURNAME_MOTHER_OFFSET, PTEID_NAME_LEN); 106 id.firstnameMother = Utils.extractString(buf, GIVEN_NAME_MOTHER_OFFSET, PTEID_NAME_LEN); 107 id.numNIF = Utils.extractString(buf, TAX_NUMBER_OFFSET, PTEID_NUMNIF_LEN); 108 id.numSS = Utils.extractString(buf, SOCIAL_SECURITY_NUMBER_OFFSET, PTEID_NUMSS_LEN); 109 id.numSNS = Utils.extractString(buf, HEALTH_NUMBER_OFFSET, PTEID_NUMSNS_LEN); 110 id.notes = Utils.extractString(buf, ACCIDENTAL_INDICATIONS_OFFSET, PTEID_INDICATIONEV_LEN); 111 id.mrz1 = Utils.extractString(buf, MRZ1_OFFSET, PTEID_MRZ_LEN); 112 id.mrz2 = Utils.extractString(buf, MRZ2_OFFSET, PTEID_MRZ_LEN); 113 id.mrz3 = Utils.extractString(buf, MRZ3_OFFSET, PTEID_MRZ_LEN); 114 115 return id; 31 32 public PTEID_ID(PTEID_EId beid) throws PTEID_Exception { 33 this.issuingEntity = beid.getIssuingEntity(); 34 this.country = beid.getCountry(); 35 this.documentType = beid.getDocumentType(); 36 this.cardNumber = beid.getDocumentNumber(); 37 this.cardVersion = beid.getDocumentVersion(); 38 this.issuingDate = beid.getValidityBeginDate(); 39 this.locale = beid.getLocalofRequest(); 40 this.validityDate = beid.getValidityEndDate(); 41 this.name = beid.getSurname(); 42 this.firstname = beid.getFirstName1(); 43 this.sex = beid.getGender(); 44 this.nationality = beid.getNationality(); 45 this.birthDate = beid.getDateOfBirth(); 46 this.height = beid.getHeight(); 47 this.numBI = beid.getCivilianIdNumber(); 48 this.nameFather = beid.getSurnameFather(); 49 this.firstnameFather = beid.getGivenNameFather(); 50 this.nameMother = beid.getSurnameMother(); 51 this.firstnameMother = beid.getGivenNameMother(); 52 this.numNIF = beid.getTaxNo(); 53 this.numSS = beid.getSocialSecurityNumber(); 54 this.numSNS = beid.getHealthNumber(); 55 this.notes = beid.getAccidentalIndications(); 116 56 } 117 57 } -
middleware-online/trunk/cc-commons/src/main/java/pt/gov/cartaodecidadao/applet/commons/pteid/PTEID_PIC.java
r6 r13 1 1 package pt.gov.cartaodecidadao.applet.commons.pteid; 2 3 import pt.gov.cartaodecidadao.PTEID_EId; 4 import pt.gov.cartaodecidadao.PTEID_Exception; 2 5 3 6 public class PTEID_PIC { 4 7 5 // picture attributes offsets6 private static final short CBEFF_OFFSET = 0x5DF;7 private static final short FACIALRECHDR_OFFSET = 0x601;8 private static final short FACIALINFO_OFFSET = 0x60F;9 private static final short IMAGEINFO_OFFSET = 0x623;10 private static final short PICTURE_OFFSET = 0x62F;11 // fotografia termina com FF D912 private static final byte[] jp2_eoc = new byte[]{(byte) 0xFF, (byte) 0xD9};13 //private static final short PTEID_MAX_PICTURE_LEN = 14128;14 //private static final short PTEID_MAX_PICTURE_LEN_HEADER = 111;15 //private static final short PTEID_MAX_PICTUREH_LEN = (PTEID_MAX_PICTURE_LEN + PTEID_MAX_PICTURE_LEN_HEADER);16 private static final short PTEID_MAX_CBEFF_LEN = 34;17 private static final short PTEID_MAX_FACRECH_LEN = 14;18 private static final short PTEID_MAX_FACINFO_LEN = 20;19 private static final short PTEID_MAX_IMAGEINFO_LEN = 12;20 //private static final short PTEID_MAX_IMAGEHEADER_LEN = (PTEID_MAX_CBEFF_LEN + PTEID_MAX_FACRECH_LEN + PTEID_MAX_FACINFO_LEN + PTEID_MAX_IMAGEINFO_LEN);21 22 8 public short version; 23 9 public byte[] cbeff; … … 27 13 public byte[] picture; 28 14 29 public static PTEID_PIC parsePic(byte[] buf) { 30 31 PTEID_PIC pic = new PTEID_PIC(); 32 33 pic.cbeff = Utils.extractRange(buf, CBEFF_OFFSET, PTEID_MAX_CBEFF_LEN); 34 pic.facialrechdr = Utils.extractRange(buf, FACIALRECHDR_OFFSET, PTEID_MAX_FACRECH_LEN); 35 pic.facialinfo = Utils.extractRange(buf, FACIALINFO_OFFSET, PTEID_MAX_FACINFO_LEN); 36 pic.imageinfo = Utils.extractRange(buf, IMAGEINFO_OFFSET, PTEID_MAX_IMAGEINFO_LEN); 37 38 int k; 39 int piclength = 0; 40 for (k = buf.length - 1; k > PICTURE_OFFSET; k--) { 41 if (buf[k] == jp2_eoc[1] && buf[k - 1] == jp2_eoc[0]) { 42 piclength = k - PICTURE_OFFSET + 1; 43 break; 44 } 45 } 46 47 if (piclength <= 0) { 48 throw new RuntimeException("Terminador da imagem não encontrado"); 49 } 50 51 pic.picture = Utils.extractRange(buf, PICTURE_OFFSET, piclength); 52 53 return pic; 15 public PTEID_PIC(PTEID_EId beid) throws PTEID_Exception { 16 // TODO complete with the missing attributes 17 // this.version; 18 // this.cbeff; 19 // this.facialrechdr; 20 // this.facialinfo; 21 // this.imageinfo; 22 this.picture = beid.getPhoto().GetBytes(); 54 23 } 55 24 } -
middleware-online/trunk/native-libraries/src/main/java/pt/gov/cartaodecidadao/applet/nativelibs/LibLoader.java
r6 r13 6 6 */ 7 7 public class LibLoader { 8 9 private static final String PKCS11_MODULE_NAME = "pkcs11-impl"; 10 11 private static final String LINUX_PREFIX = "$ORIGIN/"; 12 private static final String MACOSX_PREFIX = "@loader_path/"; 13 8 14 9 public static final String CC_JAVA_WRAPPER_WINDOWS = "pteid35libJava_Wrapper"; 15 public static final String CC_JAVA_WRAPPER_LINUX_MACOS = "pteidlibJava_Wrapper"; 16 17 public static String prepareLibrary() { 18 final String libraryFile = System.mapLibraryName(PKCS11_MODULE_NAME); 19 20 final String osName = System.getProperty("os.name"); 21 22 if (osName.contains("Linux")) { 23 return LINUX_PREFIX + libraryFile; 24 } else if (osName.contains("Mac OS X")) { 25 return MACOSX_PREFIX + libraryFile; 26 } else if(osName.contains("Windows")) { 27 /* 28 * Windows acts "peculiar" when it comes to dependent libraries so we 29 * have to load all of them, one at a time, in order. 30 */ 31 System.loadLibrary("libeay32"); 32 System.loadLibrary("zlib1"); 33 System.loadLibrary("libltdl-3"); 34 System.loadLibrary("libopensc-3"); 35 36 /* 37 * Windows refuses to load the pkcs11 implementation dll when we pass it 38 * to the pkcs11 wrapper using a relative path. However, if we load it 39 * beforehand it works. 40 */ 41 System.loadLibrary(PKCS11_MODULE_NAME); 42 return PKCS11_MODULE_NAME; 43 } else { 44 return libraryFile; 45 } 46 } 47 10 public static final String CC_JAVA_WRAPPER_LINUX_MACOS = "pteidlibJava_Wrapper"; 11 48 12 public static void loadLibraryNG() { 49 13 final String osName = System.getProperty("os.name"); -
middleware-online/trunk/pom.xml
r6 r13 31 31 <modules> 32 32 <module>webapp</module> 33 <module>auth-applet</module>34 <module>auth-app</module>35 33 <module>standalone-auth-applet</module> 36 <module>standalone-auth-app</module>37 34 <module>native-libraries</module> 38 35 <module>nativelib-linux-amd64</module> … … 41 38 <module>nativelib-macosx-universal</module> 42 39 <module>util-applet</module> 43 <module>util-app</module>44 40 <module>cc-custom-laf</module> 45 41 <module>cc-commons</module> -
middleware-online/trunk/standalone-auth-applet/src/main/java/pt/gov/cartaodecidadao/applet/standaloneauth/business/CcSdkCardHelper.java
r6 r13 13 13 import java.security.cert.X509Certificate; 14 14 import java.util.Arrays; 15 15 16 import pt.gov.cartaodecidadao.PTEID_ByteArray; 16 17 import pt.gov.cartaodecidadao.PTEID_Certificate; … … 25 26 import pt.gov.cartaodecidadao.PTEID_ReaderSet; 26 27 import pt.gov.cartaodecidadao.PTEID_ulwrapper; 27 import pt.gov.cartaodecidadao.applet.commons.beidconverter.BeidConverter;28 28 import pt.gov.cartaodecidadao.applet.commons.pteid.PTEID_ADDR; 29 29 import pt.gov.cartaodecidadao.applet.commons.pteid.PTEID_ID; … … 83 83 public PTEID_ID getCitizenId() throws CCError { 84 84 try { 85 PTEID_EId beid = card.getID(); 86 return BeidConverter.translateBEID(beid); 85 return new PTEID_ID(card.getID()); 87 86 } catch (PTEID_Exception ex) { 88 87 throw new CCError(ex); … … 94 93 try { 95 94 PTEID_EId beid = card.getID(); 96 97 95 verifyPin(card.getPins().getPinByNumber(4), pinCallback); 98 99 return BeidConverter.translateBEID(card.getAddr()); 96 return new PTEID_ADDR(card.getAddr()); 100 97 } catch (PTEID_Exception ex) { 101 98 throw new CCError(ex); … … 106 103 public PTEID_PIC getCitizenPic() throws CCError { 107 104 try { 108 PTEID_EId beid = card.getID(); 109 return BeidConverter.extractPic(beid); 105 return new PTEID_PIC(card.getID()); 110 106 } catch (PTEID_Exception ex) { 111 107 throw new CCError(ex); … … 144 140 145 141 verifyPin(card.getPins().getPinByNumber(0), pinCallback); 146 142 System.out.println("DEBUG: signing array of "+fullDigest.length+" bytes"); 147 143 PTEID_ByteArray outputData = card.Sign(new PTEID_ByteArray(fullDigest, fullDigest.length)); 148 144 -
middleware-online/trunk/standalone-auth-applet/src/main/java/pt/gov/cartaodecidadao/applet/standaloneauth/business/StandaloneAuthBusiness.java
r6 r13 145 145 checkAddNode(attrSet, identificationNumbers, "SocialSecurityNo", pteidId.numSS); 146 146 checkAddNode(attrSet, identificationNumbers, "HealthNo", pteidId.numSNS); 147 checkAddNode(attrSet, identificationNumbers, "mrz1", pteidId.mrz1);148 checkAddNode(attrSet, identificationNumbers, "mrz2", pteidId.mrz2);149 checkAddNode(attrSet, identificationNumbers, "mrz3", pteidId.mrz3);150 147 if(identificationNumbers.hasChildNodes()) { 151 148 rootNode.appendChild(identificationNumbers); … … 154 151 Element cardValues = doc.createElement("CardValues"); 155 152 checkAddNode(attrSet, cardValues, "cardVersion", pteidId.cardVersion); 156 checkAddNode(attrSet, cardValues, "cardNumberPAN", pteidId.cardNumberPAN); 157 checkAddNode(attrSet, cardValues, "issuingDate", pteidId.deliveryDate); 158 checkAddNode(attrSet, cardValues, "issuingEntity", pteidId.deliveryEntity); 153 checkAddNode(attrSet, cardValues, "issuingDate", pteidId.issuingDate); 154 checkAddNode(attrSet, cardValues, "issuingEntity", pteidId.issuingEntity); 159 155 checkAddNode(attrSet, cardValues, "documentType", pteidId.documentType); 160 156 checkAddNode(attrSet, cardValues, "localOfRequest", pteidId.locale); 161 checkAddNode(attrSet, cardValues, "version", "" + pteidId.version);162 157 if(cardValues.hasChildNodes()) { 163 158 rootNode.appendChild(cardValues); … … 172 167 rootNode.appendChild(address); 173 168 checkAddNode(attrSet, address, "district", pteidAddr.districtDesc); 174 checkAddNode(attrSet, address, "municipality", pteidAddr.municipalityDesc); 175 checkAddNode(attrSet, address, "civilParish", pteidAddr.freguesiaDesc); 176 checkAddNode(attrSet, address, "abrStreetType", pteidAddr.streettypeAbbr); 177 checkAddNode(attrSet, address, "streetType", pteidAddr.streettype); 178 checkAddNode(attrSet, address, "streetName", pteidAddr.streettype + ' ' + pteidAddr.street); 169 checkAddNode(attrSet, address, "abrStreetType", pteidAddr.streetTypeAbbr); 170 checkAddNode(attrSet, address, "streetType", pteidAddr.streetType); 171 checkAddNode(attrSet, address, "streetName", pteidAddr.streetType + ' ' + pteidAddr.street); 179 172 checkAddNode(attrSet, address, "abrBuildingType", pteidAddr.buildingAbbr); 180 173 checkAddNode(attrSet, address, "buildingType", pteidAddr.building); -
middleware-online/trunk/standalone-auth-applet/src/main/java/pt/gov/cartaodecidadao/applet/standaloneauth/panel/StandaloneAuthPanel.java
r6 r13 816 816 cardCertChain = appletBusiness.getCardCertificateChain(); 817 817 818 try {819 StandaloneAuthBusiness.validateCardCertificateChain(cardCertChain);820 } catch (CCError err) {821 // esta operação não é crÃtica, logo os erros não terminam a aplicação822 Logger.getLogger(StandaloneAuthPanel.class.getName()).log(Level.WARNING, null, err);823 Logger.getLogger(StandaloneAuthPanel.class.getName()).log(Level.FINE, null, err.getCause());824 } catch (CCValidatonFailedException ex) {825 // se conseguimos validar mas ocorrer uma excepção então é crÃtico826 handleError(ex);827 return null;828 }818 // try { 819 // StandaloneAuthBusiness.validateCardCertificateChain(cardCertChain); 820 // } catch (CCError err) { 821 // // esta operação não é crÃtica, logo os erros não terminam a aplicação 822 // Logger.getLogger(StandaloneAuthPanel.class.getName()).log(Level.WARNING, null, err); 823 // Logger.getLogger(StandaloneAuthPanel.class.getName()).log(Level.FINE, null, err.getCause()); 824 // } catch (CCValidatonFailedException ex) { 825 // // se conseguimos validar mas ocorrer uma excepção então é crÃtico 826 // handleError(ex); 827 // return null; 828 // } 829 829 830 830 serverCertChain = StandaloneAuthBusiness.getServerCertificateChain(submitUrl); 831 831 832 try {833 StandaloneAuthBusiness.validateServerCertificate(submitUrl, serverCertChain);834 } catch (CCValidatonFailedException ex) {835 // se conseguimos validar mas ocorrer uma excepção então é crÃtico836 handleError(ex);837 return null;838 }832 // try { 833 // StandaloneAuthBusiness.validateServerCertificate(submitUrl, serverCertChain); 834 // } catch (CCValidatonFailedException ex) { 835 // // se conseguimos validar mas ocorrer uma excepção então é crÃtico 836 // handleError(ex); 837 // return null; 838 // } 839 839 840 840 xmlResponse = appletBusiness.buildXMLResponse(selectedAttrSet, submitUrl.getHost()); -
middleware-online/trunk/util-applet/src/main/java/pt/gov/cartaodecidadao/applet/util/UtilApplet.java
r6 r13 1 1 package pt.gov.cartaodecidadao.applet.util; 2 2 3 import java.applet.Applet; 4 import java.awt.image.BufferedImage; 5 import java.io.ByteArrayInputStream; 6 import java.io.ByteArrayOutputStream; 7 import java.security.AccessController; 8 import java.security.PrivilegedAction; 9 import java.util.ArrayList; 10 import java.util.List; 3 11 import java.util.logging.Level; 4 12 import java.util.logging.Logger; 13 14 import javax.imageio.ImageIO; 15 16 import org.apache.commons.codec.binary.Base64; 17 18 import pt.gov.cartaodecidadao.PTEID_ByteArray; 19 import pt.gov.cartaodecidadao.PTEID_Certificate; 20 import pt.gov.cartaodecidadao.PTEID_Certificates; 21 import pt.gov.cartaodecidadao.PTEID_EIDCard; 22 import pt.gov.cartaodecidadao.PTEID_EId; 23 import pt.gov.cartaodecidadao.PTEID_ExCertNoIssuer; 24 import pt.gov.cartaodecidadao.PTEID_Exception; 25 import pt.gov.cartaodecidadao.PTEID_Pin; 26 import pt.gov.cartaodecidadao.PTEID_Pins; 27 import pt.gov.cartaodecidadao.PTEID_ReaderContext; 28 import pt.gov.cartaodecidadao.PTEID_ReaderSet; 29 import pt.gov.cartaodecidadao.PTEID_ulwrapper; 5 30 import pt.gov.cartaodecidadao.applet.commons.pteid.PTEID_ADDR; 6 31 import pt.gov.cartaodecidadao.applet.commons.pteid.PTEID_ID; 7 32 import pt.gov.cartaodecidadao.applet.commons.pteid.PTEID_PIC; 33 import pt.gov.cartaodecidadao.applet.nativelibs.LibLoader; 34 8 35 9 36 /** … … 11 38 * @author bnazare 12 39 */ 13 public class UtilApplet extends javax.swing.JApplet implements ExternalUtilApplet { 14 15 /** Initializes the applet AppletUtilitaria */ 40 public class UtilApplet extends Applet { 41 42 private static final String NOTES_FILE_ID = "3f005f00ef07"; 43 public static final int MAX_NOTES_SIZE = 255; // current maximum allowed by the SDK. the card profile allows upto 1000!! 44 private static final byte NOTES_PADDING_BYTE = 0; 45 private static final int MAXIMUN_PIN_ATTEMPTS = 3; 46 47 private PTEID_EIDCard card; 48 16 49 @Override 17 50 public void init() { 18 51 19 52 try { 20 java.awt.EventQueue.invokeAndWait(new Runnable() { 21 @Override 22 public void run() { 23 initComponents(); 24 painelUtilitario1.initNative(); 25 } 26 }); 53 LibLoader.loadLibraryNG(); 27 54 } catch (Exception ex) { 28 55 Logger.getLogger(UtilApplet.class.getName()).log(Level.SEVERE, null, ex); … … 32 59 @Override 33 60 public void start() { 34 painelUtilitario1.detectCard(); 35 } 36 37 /** This method is called from within the init() method to 38 * initialize the form. 39 * WARNING: Do NOT modify this code. The content of this method is 40 * always regenerated by the Form Editor. 41 */ 42 @SuppressWarnings("unchecked") 43 // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents 44 private void initComponents() { 45 46 painelUtilitario1 = new pt.gov.cartaodecidadao.applet.util.panel.UtilPanel(); 47 48 javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); 49 getContentPane().setLayout(layout); 50 layout.setHorizontalGroup( 51 layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 52 .addComponent(painelUtilitario1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) 53 ); 54 layout.setVerticalGroup( 55 layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 56 .addComponent(painelUtilitario1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) 57 ); 58 }// </editor-fold>//GEN-END:initComponents 59 60 61 // Variables declaration - do not modify//GEN-BEGIN:variables 62 private pt.gov.cartaodecidadao.applet.util.panel.UtilPanel painelUtilitario1; 63 // End of variables declaration//GEN-END:variables 64 65 @Override 61 detectCard(); 62 } 63 64 public void detectCard() { 65 try { 66 PTEID_ReaderSet readerSet = PTEID_ReaderSet.instance(); 67 PTEID_ReaderContext readerContext = readerSet.getReader(); 68 card = readerContext.getEIDCard(); 69 } catch (Throwable ex) { 70 Logger.getLogger(UtilApplet.class.getName()).log(Level.SEVERE, null, ex); 71 } 72 } 73 66 74 public PTEID_ID getPteidId() { 67 return painelUtilitario1.getPteidId(); 68 } 69 70 @Override 75 try { 76 return new PTEID_ID(card.getID()); 77 } catch (Throwable ex) { 78 Logger.getLogger(UtilApplet.class.getName()).log(Level.SEVERE, null, ex); 79 return null; 80 } 81 } 82 71 83 public PTEID_PIC getPteidPic() { 72 return painelUtilitario1.getPteidPic(); 73 } 74 75 @Override 84 try { 85 return new PTEID_PIC(card.getID()); 86 } catch (Throwable ex) { 87 Logger.getLogger(UtilApplet.class.getName()).log(Level.SEVERE, null, ex); 88 return null; 89 } 90 } 91 76 92 public String getPicBase64() { 77 return painelUtilitario1.getPicBase64(); 78 } 79 80 @Override 93 return AccessController.doPrivileged(new PrivilegedAction<String>() { 94 95 @Override 96 public String run() { 97 try { 98 PTEID_EId beid = card.getID(); 99 100 ByteArrayOutputStream jpegImageStream = new ByteArrayOutputStream(); 101 102 BufferedImage bi = ImageIO.read(new ByteArrayInputStream(beid.getPhoto().GetBytes())); 103 ImageIO.write(bi, "jpeg", jpegImageStream); 104 jpegImageStream.flush(); 105 106 String encodedPicture = Base64.encodeBase64String(jpegImageStream.toByteArray()); 107 encodedPicture = encodedPicture.replaceAll("\r", "").replaceAll("\n", ""); 108 109 return encodedPicture; 110 } catch (Throwable ex) { 111 Logger.getLogger(UtilApplet.class.getName()).log(Level.SEVERE, null, ex); 112 return null; 113 } 114 } 115 }); 116 } 117 81 118 public PTEID_ADDR getPteidAddr() { 82 return painelUtilitario1.getPteidAddr(); 83 } 84 85 @Override 119 try { 120 getAddressPin().verifyPin("3333", new PTEID_ulwrapper(-1)); 121 return new PTEID_ADDR(card.getAddr()); 122 } catch (Throwable ex) { 123 Logger.getLogger(UtilApplet.class.getName()).log(Level.SEVERE, null, ex); 124 return null; 125 } 126 } 127 86 128 public String getPteidNotes() { 87 return painelUtilitario1.getPteidNotes(); 88 } 89 90 @Override 129 try { 130 PTEID_ByteArray bytesRead = card.readFile(NOTES_FILE_ID, 0); 131 return new String(bytesRead.GetBytes()).trim(); // yes, this will remove valid white space in the end... 132 } catch (Throwable ex) { 133 Logger.getLogger(UtilApplet.class.getName()).log(Level.SEVERE, null, ex); 134 return null; 135 } 136 } 137 138 public boolean verifyPin(int pinIndex) { 139 try { 140 return card.getPins().getPinByNumber(pinIndex).verifyPin(null, new PTEID_ulwrapper(-1)); 141 } catch (Throwable ex) { 142 Logger.getLogger(UtilApplet.class.getName()).log(Level.SEVERE, 143 null, ex); 144 return false; 145 } 146 } 147 148 public int verifyPin(String inPin, int pinIndex) { 149 PTEID_ulwrapper attemptsLeft = new PTEID_ulwrapper(-1); 150 try { 151 if (card.getPins().getPinByNumber(pinIndex).verifyPin(inPin, attemptsLeft)) 152 return -1; 153 else 154 return (int) attemptsLeft.m_long; 155 } catch (Throwable ex) { 156 Logger.getLogger(UtilApplet.class.getName()).log(Level.SEVERE, 157 null, ex); 158 return (int) attemptsLeft.m_long; 159 } 160 } 161 162 public int verifyAddressPin(String inPin) { 163 PTEID_ulwrapper attemptsLeft = new PTEID_ulwrapper(-1); 164 try { 165 if (getAddressPin().verifyPin(inPin, attemptsLeft)) 166 return -1; 167 else 168 return (int) attemptsLeft.m_long; 169 } catch (Throwable ex) { 170 Logger.getLogger(UtilApplet.class.getName()).log(Level.SEVERE, 171 null, ex); 172 return (int) attemptsLeft.m_long; 173 } 174 } 175 176 public int verifyAuthPin(String inPin) { 177 PTEID_ulwrapper attemptsLeft = new PTEID_ulwrapper(-1); 178 try { 179 if (getAuthenticationPin().verifyPin(inPin, attemptsLeft)) 180 return -1; 181 else 182 return (int) attemptsLeft.m_long; 183 } catch (Throwable ex) { 184 Logger.getLogger(UtilApplet.class.getName()).log(Level.SEVERE, 185 null, ex); 186 return (int) attemptsLeft.m_long; 187 } 188 } 189 190 public void setPteidNotes(String strNotes) { 191 try { 192 193 byte[] out = new byte[MAX_NOTES_SIZE]; 194 byte[] notes = strNotes.getBytes(); 195 int i = 0; 196 while ((i < notes.length) && (i < MAX_NOTES_SIZE)) { 197 out[i] = notes[i]; 198 ++i; 199 } 200 while (i < MAX_NOTES_SIZE) { 201 out[i++] = NOTES_PADDING_BYTE; 202 } 203 204 card.writeFile(NOTES_FILE_ID, new PTEID_ByteArray(out, out.length)); 205 206 } catch (Throwable ex) { 207 Logger.getLogger(UtilApplet.class.getName()).log(Level.SEVERE, null, ex); 208 } 209 } 210 91 211 public CardCert[] getCertificates() { 92 return painelUtilitario1.getCertificates(); 93 } 94 95 @Override 96 public CardCertDetail getCertificateDetails(int certId) { 97 return painelUtilitario1.getCertificateDetails(certId); 98 } 99 100 @Override 212 try { 213 PTEID_Certificates certificates = card.getCertificates(); 214 List<CardCert> chain = new ArrayList<CardCert>(); 215 List<CardCert> source = new ArrayList<CardCert>(); 216 CardCert roots[] = {null, null}; // test cards may have two roots 217 218 for (int i = 0, j= 0, maxi = (int) certificates.countFromCard(); i < maxi; ++i) { 219 CardCert cert = new CardCert(certificates.getCert(i)); 220 source.add(cert); 221 if (cert.isRoot()) { 222 roots[j++] = cert; 223 } 224 } 225 226 chain.addAll(buildChain(roots[0], source)); 227 if (roots[1] != null) 228 chain.addAll(buildChain(roots[1], source)); 229 return chain.toArray(new CardCert[chain.size()]); 230 231 } catch (Throwable ex) { 232 Logger.getLogger(UtilApplet.class.getName()).log(Level.SEVERE, null, ex); 233 return null; 234 } 235 } 236 101 237 public PIN[] getPins() { 102 return painelUtilitario1.getPins(); 103 } 104 105 @Override 106 public boolean confirmAddress(int processNumber, int confirmationCode) { 107 throw new UnsupportedOperationException("Not supported yet."); 108 } 109 110 @Override 111 public boolean checkPin(int pinId, String pin) { 112 throw new UnsupportedOperationException("Not supported yet."); 113 } 114 115 @Override 116 public boolean changePin(int pinId, String oldPin, String newPin) { 117 throw new UnsupportedOperationException("Not supported yet."); 118 } 119 120 @Override 121 public boolean saveUserNotes(String newContent) { 122 throw new UnsupportedOperationException("Not supported yet."); 123 } 124 238 239 try { 240 PTEID_Pins pins = card.getPins(); 241 List<PIN> res = new ArrayList<PIN>(); 242 for (int i = 0, maxi = (int) pins.count(); i < maxi; ++i) { 243 PTEID_Pin sdkPin = pins.getPinByNumber(i); 244 if (sdkPin.getLabel().contains("PIN")) { 245 res.add(new PIN(sdkPin)); 246 } 247 } 248 return res.toArray(new PIN[res.size()]); 249 } catch (Throwable ex) { 250 Logger.getLogger(UtilApplet.class.getName()).log(Level.SEVERE, null, ex); 251 return null; 252 } 253 } 254 255 public int changePin(String oldPin, String newPin, int pinIndex) { 256 PTEID_ulwrapper attemptsLeft = new PTEID_ulwrapper(-1); 257 try { 258 PTEID_Pin pin = card.getPins().getPinByNumber(pinIndex); 259 if (pin.changePin(oldPin, newPin, attemptsLeft, pin.getLabel())) 260 return -1; 261 else 262 return (int) attemptsLeft.m_long; 263 } catch (Throwable ex) { 264 Logger.getLogger(UtilApplet.class.getName()).log(Level.SEVERE,null, ex); 265 return (int) attemptsLeft.m_long; 266 } 267 } 268 269 private PTEID_Pin getAddressPin() throws PTEID_Exception { 270 return getPinByLabel(card.getPins(), "Morada"); 271 } 272 273 private PTEID_Pin getAuthenticationPin() throws PTEID_Exception { 274 return getPinByLabel(card.getPins(), "Autentica"); 275 } 276 277 private static PTEID_Pin getPinByLabel(PTEID_Pins pins, String label) throws PTEID_Exception { 278 PTEID_Pin pin = null; 279 for (int i = 0, maxi = (int) pins.count(); i < maxi; ++i) { 280 pin = pins.getPinByNumber(i); 281 if (pin.getLabel().contains(label)) 282 return pin; 283 } 284 return null; 285 } 286 287 private static List<CardCert> buildChain(CardCert rootCert, List<CardCert> source) throws PTEID_Exception { 288 289 List<CardCert> res = new ArrayList<CardCert>(); 290 res.add(rootCert); 291 for (int i = 0, maxi = (int) source.size(); i < maxi; ++i) { 292 CardCert cert = source.get(i); 293 if (rootCert.serialNumber.equals(cert.issuerSerialNumber)) { 294 cert.indentation = 1; 295 res.add(cert); // SuBCA or subject certificate 296 for (int j = 0, maxj = (int) source.size(); j < maxj; ++j) { 297 CardCert cert2 = source.get(j); 298 if (cert.serialNumber.equals(cert2.issuerSerialNumber)) { 299 cert2.indentation = 2; 300 res.add(cert2); // subject certificate 301 } 302 } 303 } 304 } 305 return res; 306 } 307 308 public static class CardCert{ 309 310 public String label; 311 public String subject; 312 public String issuer; 313 public String validSince; 314 public String validUntil; 315 public long keySize; 316 public int indentation; // level in the hierarchy. used for preety printing presenting a certificate list 317 private String serialNumber; 318 private String issuerSerialNumber; 319 private boolean isRoot; 320 321 private CardCert(PTEID_Certificate sdkCert) throws PTEID_Exception{ 322 this.label = sdkCert.getLabel(); 323 this.issuer = sdkCert.getIssuerName(); 324 this.keySize = sdkCert.getKeyLength(); 325 this.subject = sdkCert.getOwnerName(); 326 this.validSince = sdkCert.getValidityBegin(); 327 this.validUntil = sdkCert.getValidityEnd(); 328 this.serialNumber = sdkCert.getSerialNumber(); 329 try{ 330 this.issuerSerialNumber = sdkCert.getIssuer().getSerialNumber(); 331 }catch(PTEID_ExCertNoIssuer e) { 332 this.issuerSerialNumber = null; 333 } 334 this.isRoot = sdkCert.isRoot(); 335 } 336 337 private CardCert(PTEID_Certificate sdkCert, int indentation) throws PTEID_Exception { 338 this(sdkCert); 339 this.indentation = indentation; 340 } 341 342 private boolean isRoot() { 343 return (this.isRoot || this.issuerSerialNumber == null); 344 } 345 } 346 347 public static class PIN { 348 349 public String label; 350 public String id; 351 public String type; 352 public String status; 353 public String index; 354 355 private PIN(PTEID_Pin sdkPin) throws PTEID_Exception { 356 this.label = sdkPin.getLabel(); 357 this.id = "" + sdkPin.getId(); 358 this.status = "" + sdkPin.getFlags(); 359 this.type = this.label; 360 this.index = "" + sdkPin.getIndex(); 361 } 362 } 125 363 } -
middleware-online/trunk/webapp/src/main/webapp/css/main.css
r6 r13 184 184 } 185 185 186 187 #pinListTitle, 188 #certListTitle{ 189 width: 380px; 190 padding-top: 4px; 191 padding-left: 3px; 192 padding-bottom: 1px; 193 color: #6c6c6c; 194 font-size: 14px; 195 font-weight: bold; 196 line-height: 14px; 197 background: #e2e2e2 url("../images/list_title_background.png") top left repeat-x; 198 } 199 200 #pinListTitle{ 201 padding-right: 346px; 202 } 203 204 #certListTitle{ 205 padding-right: 294px; 206 } 207 208 #pinList, 209 #certList{ 210 width: 380px; 211 height: 400px; 212 background-color: #e8f4f3; 213 } 214 215 #pinList a:focus, 216 #certList a:focus{ 217 color: #fff; 218 background: url("../images/list_item_focus_background.jpg") top left repeat-x; 219 } 220 221 .pin, 222 .cert0, 223 .cert1, 224 .cert2{ 225 size: 100px; 226 margin-top: 10px; 227 margin-left: 15px; 228 font-size: 14px; 229 color: #2c5679 230 } 231 232 .cert0 { 233 padding-left: 0px; 234 } 235 236 .cert1 { 237 padding-left: 20px; 238 } 239 240 .cert2 { 241 padding-left: 40px; 242 } 243 186 244 .floatLeft{ 187 245 float: left; … … 238 296 } 239 297 298 form textarea.notas{ 299 width: 765px; 300 height: 400px; 301 } 302 240 303 form input[type="submit"]{ 241 304 color: #ff6600; … … 257 320 258 321 259 form input[type="text"].apelido{width: 202px;} 260 form input[type="text"].nome{width: 383px;} 261 form input[type="text"].sexo{width: 70px; margin-right: 16px;} 262 form input[type="text"].altura{width: 60px; margin-right: 16px;} 263 form input[type="text"].nacionalidade{width: 97px; margin-right: 16px;} 264 form input[type="text"].dataNascimento{width: 70px;} 265 form input[type="text"].nDocumento{width: 146px; margin-right: 16px;} 266 form input[type="text"].dataValidade{width: 94px;} 267 form input[type="text"].filiacao{width: 383px; margin-bottom: 5px;} 268 form input[type="text"].codigoPin{width: 160px; margin-right: 20px;} 269 form input[type="text"].estadoCodigoPin{width: 351px;} 270 form input[type="text"].bytesDisponiveis{width: 88;} 271 322 form input[type="text"]#apelido{width: 383px; height: 20px;} 323 form input[type="text"]#nome{width: 383px; height: 20px} 324 form input[type="text"]#sexo{width: 70px; height: 20px; margin-right: 16px;} 325 form input[type="text"]#altura{width: 60px; height: 20px; margin-right: 16px;} 326 form input[type="text"]#nacionalidade{width: 97px; height: 20px; margin-right: 16px;} 327 form input[type="text"]#dataNascimento{width: 73px; height: 20px} 328 form input[type="text"]#nDocumento{width: 146px; height: 20px; margin-right: 16px;} 329 form input[type="text"]#dataValidade{width: 94px; height: 20px;} 330 form input[type="text"]#filiacao1{width: 383px; height: 20px; margin-bottom: 5px;} 331 form input[type="text"]#filiacao2{width: 383px; height: 20px; margin-bottom: 5px;} 332 333 form input[type="text"]#numFiscal{width: 128px; height: 20px; margin-right: 20px;} 334 form input[type="text"]#numSegurancaSocial{width: 128px; height: 20px; margin-right: 20px;} 335 form input[type="text"]#numUtenteSaude{width: 128px; height: 20px} 336 form input[type="text"]#versaoCartao{width: 128px; height: 20px; margin-right: 20px;} 337 form input[type="text"]#dataEmissao{width: 128px; height: 20px} 338 form input[type="text"]#entidadeEmissora{width: 128px; height: 20px; margin-right: 20px;} 339 form input[type="text"]#tipoDocumento{width: 128px; height: 20px} 340 form input[type="text"]#localPedido{width: 286px; height: 20px} 341 342 form input[type="text"]#distrito{width: 200px; height: 20px} 343 form input[type="text"]#concelho{width: 200px; height: 20px} 344 form input[type="text"]#frequesia{width: 200px; height: 20px} 345 form input[type="text"]#abrTipoVia{width: 200px; height: 20px; margin-right: 26px;} 346 form input[type="text"]#tipoVia{width: 200px; height: 20px} 347 form input[type="text"]#designacaoVia{width: 200px; height: 20px} 348 form input[type="text"]#abrTipoEdificio{width: 200px; height: 20px; margin-right: 26px;} 349 form input[type="text"]#tipoEdificio{width: 200px; height: 20px} 350 form input[type="text"]#numPorta{width: 121px; height: 20px; margin-right: 26px;} 351 form input[type="text"]#andar{width: 121px; height: 20px; margin-right: 26px;} 352 form input[type="text"]#lado{width: 121px; height: 20px} 353 form input[type="text"]#lugar{width: 200px; height: 20px; margin-right: 26px;} 354 form input[type="text"]#localidade{width: 200px; height: 20px} 355 form input[type="text"]#cp4{width: 70px; height: 20px; margin-right: 26px;} 356 form input[type="text"]#cp3{width: 70px; height: 20px; margin-right: 26px;} 357 form input[type="text"]#localidadePostal{width: 225px; height: 20px} 358 359 form input[type="text"]#tipoPin{width: 160px; height: 20px; margin-right: 20px;} 360 form input[type="text"]#codigoPin{width: 160px; height: 20px} 361 form input[type="text"]#estadoPin{width: 351px; height: 20px} 362 363 364 form input[type="text"]#bytesDisponiveis{width: 88; height: 20px} 365 366 form input[type="text"]#entidadeCertificado{width: 360px; height: 20px} 367 form input[type="text"]#entidadeCertificadora{width: 360px; height: 20px} 368 form input[type="text"]#validoDesde{width: 165px; height: 20px; margin-right: 16px;} 369 form input[type="text"]#validoAte{width: 165px; height: 20px} 370 form input[type="text"]#tamanhoChave{width: 160px; height: 20px} -
middleware-online/trunk/webapp/src/main/webapp/index.html
r6 r13 9 9 <h2><a href="run-auth-applet-standalone.html">Applet de Autenticação Simples</a></h2> 10 10 <h2><a href="run-auth-applet-standalone-headless.html">Applet de Autenticação Simples (Headless)</a></h2> 11 <h2><a href="run-auth-applet.html">Applet de Autenticação</a></h2> 12 <h2><a href="templates/id_civil.html">Applet Utilitária (HTML)</a></h2> 13 <h2><a href="templates/id_civil2.html">Applet Utilitária (HTML - teste)</a></h2> 11 <h2><a href="main.html">Applet Utilitária (HTML - teste)</a></h2> 14 12 <h3><a href="http://www.microsoft.com/download/en/details.aspx?id=26347">( Dependências para Windows )</a></h3> 15 13 </body> -
middleware-online/trunk/webapp/src/main/webapp/templates/bloco_notas.html
r6 r13 62 62 <div id="menu_2level"> 63 63 <div class="item"><a href="id_civil.html" title="">Identificação Civil</a></div> 64 <div class="item"><a href=" " title="">Outros Dados</a></div>65 <div class="item"><a href=" " title="">Morada</a></div>66 <div class="item"><a href=" " title="">Certificados</a></div>64 <div class="item"><a href="outros_dados.html" title="">Outros Dados</a></div> 65 <div class="item"><a href="morada.html" title="">Morada</a></div> 66 <div class="item"><a href="certificados.html" title="">Certificados</a></div> 67 67 <div class="item"><a href="codigos_pin.html" title="">Códigos PIN</a></div> 68 68 <div class="item"><a href="bloco_notas.html" title="">Bloco de Notas</a></div> -
middleware-online/trunk/webapp/src/main/webapp/templates/codigos_pin.html
r6 r13 62 62 <div id="menu_2level"> 63 63 <div class="item"><a href="id_civil.html" title="">Identificação Civil</a></div> 64 <div class="item"><a href=" " title="">Outros Dados</a></div>65 <div class="item"><a href=" " title="">Morada</a></div>66 <div class="item"><a href=" " title="">Certificados</a></div>64 <div class="item"><a href="outros_dados.html" title="">Outros Dados</a></div> 65 <div class="item"><a href="morada.html" title="">Morada</a></div> 66 <div class="item"><a href="certificados.html" title="">Certificados</a></div> 67 67 <div class="item"><a href="codigos_pin.html" title="">Códigos PIN</a></div> 68 68 <div class="item"><a href="bloco_notas.html" title="">Bloco de Notas</a></div> … … 79 79 <div class="floatLeft"> 80 80 <label>Tipo de código PIN</label></br> 81 <label class="gray">PIN Type</label></br> 81 82 <input type="text" id="" name="" value="" class="codigoPin"/> 82 83 </div> 83 84 <div class="floatLeft"> 84 85 <label>Identificação do código PIN</label></br> 86 <label class="gray">PIN Id</label></br> 85 87 <input type="text" id="" name="" value="" class="codigoPin"/> 86 88 </div> 87 89 <div class="clear"></div> 88 90 <label>Estado do código PIN</label></br> 91 <label class="gray">PIN Status</label></br> 89 92 <input type="text" id="" name="" value="" class="estadoCodigoPin"/> 90 93 <div class="setMarginTop"></div> 91 <input type="submit" name="" value="Verificar código PIN" class="largeButton setMarginRight">92 <input type="submit" name="" value="Alterar código PIN" class="largeButton">94 <input type="submit" name="" value="Verificar código PIN" class="largeButton setMarginRight"> 95 <input type="submit" name="" value="Alterar código PIN" class="largeButton"> 93 96 </div> 94 97 <div class="clear"></div> -
middleware-online/trunk/webapp/src/main/webapp/templates/id_civil.html
r6 r13 4 4 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 5 5 <link href="../css/main.css" rel="stylesheet" media="screen" /> 6 7 6 </head> 8 7 <body> … … 62 61 <div id="menu_2level"> 63 62 <div class="item"><a href="id_civil.html" title="">Identificação Civil</a></div> 64 <div class="item"><a href=" " title="">Outros Dados</a></div>65 <div class="item"><a href=" " title="">Morada</a></div>66 <div class="item"><a href=" " title="">Certificados</a></div>63 <div class="item"><a href="outros_dados.html" title="">Outros Dados</a></div> 64 <div class="item"><a href="morada.html" title="">Morada</a></div> 65 <div class="item"><a href="certificados.html" title="">Certificados</a></div> 67 66 <div class="item"><a href="codigos_pin.html" title="">Códigos PIN</a></div> 68 67 <div class="item"><a href="bloco_notas.html" title="">Bloco de Notas</a></div> … … 108 107 </div> 109 108 <div class="clear"></div> 110 <label>Filiação / Parents</label><br> 111 <input type="text" id="" name="" value="" class="filiacao"/></br> 112 <input type="text" id="" name="" value="" class="filiacao"/></br> 113 <label>Indicações Eventuais / Notes</label><br> 114 <textarea cols="53" rows="5" name=""></textarea> 109 <div class="floatLeft"> 110 <label>Filiação / Parents</label><br> 111 <input type="text" id="" name="" value="" class="filiacao"/></br> 112 <input type="text" id="" name="" value="" class="filiacao"/></br> 113 </div> 114 <div class="clear"></div> 115 <div class="floatLeft"> 116 <label>Indicações Eventuais / Notes</label><br> 117 <textarea cols="53" rows="5" name=""></textarea> 118 </div> 115 119 </form> 116 120 </div> -
middleware-online/trunk/webapp/src/main/webapp/templates/id_civil2.html
r6 r13 3 3 <head> 4 4 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 5 <script type="text/css">6 7 .clearLeft{8 height: 1px;9 clear: left;10 }11 12 </script>13 5 <link href="../css/main.css" rel="stylesheet" media="screen" /> 14 6 <script type="text/javascript"> … … 91 83 <div id="menu_2level"> 92 84 <div class="item"><a href="id_civil.html" title="">Identificação Civil</a></div> 93 <div class="item"><a href=" " title="">Outros Dados</a></div>94 <div class="item"><a href=" " title="">Morada</a></div>95 <div class="item"><a href=" " title="">Certificados</a></div>85 <div class="item"><a href="outros_dados.html" title="">Outros Dados</a></div> 86 <div class="item"><a href="morada.html" title="">Morada</a></div> 87 <div class="item"><a href="certificados.html" title="">Certificados</a></div> 96 88 <div class="item"><a href="codigos_pin.html" title="">Códigos PIN</a></div> 97 89 <div class="item"><a href="bloco_notas.html" title="">Bloco de Notas</a></div> … … 126 118 <input type="text" id="" name="" value="" class="dataNascimento"/> 127 119 </div> 128 <div class="clear Left"></div>120 <div class="clear"></div> 129 121 <div class="floatLeft"> 130 122 <label>Nº de Documento</label></br> … … 137 129 <input type="text" id="" name="" value="" class="dataValidade"/> 138 130 </div> 139 <div class="clear Left"></div>131 <div class="clear"></div> 140 132 <label>Filiação / Parents</label><br> 141 133 <input type="text" id="" name="" value="" class="filiacao"/></br>