Apresentacao seminariotecnicocc

9
Energia Open Source Linux Caixa Mágica 15 - Technology Preview Linux Caix Cartão de Cidadão: Novo middleware OpenSource Luis Medinas <[email protected]> Parceria:

Transcript of Apresentacao seminariotecnicocc

Page 1: Apresentacao seminariotecnicocc

Energia Open Source

Linux Caixa Mágica 15 - Technology PreviewLinux Caixa Mágica 15 - Technology Preview

Cartão de Cidadão: Novo middleware OpenSource

Luis Medinas <[email protected]>

Parceria:

Page 2: Apresentacao seminariotecnicocc

Energia Open Source

Linux Caixa Mágica 15 - Technology PreviewLinux Caixa Mágica 15 - Technology Preview

25 de Julho 2011 Caixa Mágica – Novo Middlware CC 2

Estado actual

Middleware closed sourceViolação da GNU GPLConceito obsoleto (tecnologias antigas)Dificuldade em suportar multiplicas plataformasPouca documentação técnica

Page 3: Apresentacao seminariotecnicocc

Energia Open Source

Linux Caixa Mágica 15 - Technology PreviewLinux Caixa Mágica 15 - Technology Preview

25 de Julho 2011 Caixa Mágica – Novo Middlware CC 3

Novo middleware

Princípios do FOSS Fornecer um projecto modularBaseado no Belgian eID middlewareMultiplataforma/arquitecturas (Windows, MacOSX, Linux)

32/64Manter uma base coerente para o futuroSuporte aplicacional (Ms Office, Firefox, LibreOffice, Outlook,

IE e etc...)

Page 4: Apresentacao seminariotecnicocc

Energia Open Source

Linux Caixa Mágica 15 - Technology PreviewLinux Caixa Mágica 15 - Technology Preview

25 de Julho 2011 Caixa Mágica – Novo Middlware CC 4

“Big Picture”

PCSC-lite

Kernel

PKCS11CardLayer

eidlib

AppLayer

eidgui

Crypto API

CSP

SDK Java .Net

MS Windows

PKCS11 apps

Page 5: Apresentacao seminariotecnicocc

Energia Open Source

Linux Caixa Mágica 15 - Technology PreviewLinux Caixa Mágica 15 - Technology Preview

25 de Julho 2011 Caixa Mágica – Novo Middlware CC 5

Manter o middleware multiplataforma/multiarquitectura Sistema modularCompreensão das applets (IAS/GEMSAFE)Compatibilidade com o Middleware anteriorSincronização com serviços WebNovas funcionalidadesContribuir código

Desafios

Page 6: Apresentacao seminariotecnicocc

Energia Open Source

Linux Caixa Mágica 15 - Technology PreviewLinux Caixa Mágica 15 - Technology Preview

25 de Julho 2011 Caixa Mágica – Novo Middlware CC 6

Hello World C++//*****************************************************************************// PTeID SDK sample code.// This sample demonstrates how to use the eID SDK to read a Portuguese eID card.// The program will dump the data to the standard output for each card reader// it finds.//*****************************************************************************#include <iostream>#include "eidlib.h"

using namespace eIDMW;

//*****************************************************************************// Get the data and dump to the screen// Beware: The data coming from the cards is encoded in UTF8!//*****************************************************************************void getEIDData( PTEID_EIDCard& card ){

PTEID_EId& eid = card.getID();

if ( card.isTestCard() ){

std::cout << "Error: This is a test card. Can not read data..." << std::endl;return;

}

std::cout << "\tDocumentType : " << eid.getDocumentType() << std::endl;

std::cout << "\tPersonal data:" << std::endl;std::cout << "\tFirstName : " << eid.getFirstName() << std::endl;std::cout << "\tSurname : " << eid.getSurname() <<

std::endl;std::cout << "\tGender : " << eid.getGender() << std::endl;std::cout << "\tDateOfBirth : " << eid.getDateOfBirth() << std::endl;std::cout << "\tLocationOfBirth : " << eid.getLocationOfBirth() << std::endl;std::cout << "\tNationality : " << eid.getNationality() << std::endl;std::cout << "\tNationalNumber : " << eid.getNationalNumber() << std::endl;std::cout << "\tMemberOfFamily : " << eid.getMemberOfFamily() << std::endl;std::cout << "\tValidityBeginDate : " << eid.getValidityBeginDate() << std::endl;std::cout << "\tValidityEndDate : " << eid.getValidityEndDate() << std::endl;

PTEID_EIdAddress& eidaddress = card.getAddr();std::cout << "\tStreet : " << eidaddress.getStreet() <<

std::endl;std::cout << "\tZipCode : " << eidaddress.getZipCode() <<

std::endl;std::cout << "\tMunicipality : " << eidaddress.getMunicipality() << std::endl;std::cout << "\tIssuingMunicipality: " << eidaddress.getIssuingMunicipality() << std::endl;

}

//*****************************************************************************// Get the data from a Portuguese EID card//*****************************************************************************void getEidCardData( PTID_ReaderContext& readerContext ){

PTEID_EIDCard& card = readerContext.getEIDCard();getEIDData(card);

}

//*****************************************************************************// Show the info of the card in the reader//*****************************************************************************void showCardInfo( const char* readerName ){

PTEID_ReaderContext& readerContext = ReaderSet.getReaderByName( readerName );if ( readerContext.isCardPresent() ){

//PTEID_CARDTYPE_EID:getEidCardData( readerContext );

}}

//*****************************************************************************// Show the reader info an get the data of the card if present//*****************************************************************************void showReaderCardInfo( const char* readerName ){

PTEID_ReaderContext& readerContext = ReaderSet.getReaderByName( readerName );

std::cout << "Reader: " << readerName << std::endl;std::cout << "\tCard present: " << (readerContext.isCardPresent()? "yes" :"no") << std::endl;

showCardInfo( readerName );

std::cout << std::endl;}

//*****************************************************************************// scan all the card readers and if a card is present, show the content of the// card.//*****************************************************************************void scanReaders( void ){

unsigned long nrReaders = ReaderSet.readerCount();const char* const* readerList = ReaderSet.readerList();

std::cout << "Nr of card readers detected: " << nrReaders << std::endl;

for ( size_t readerIdx=0; readerIdx<nrReaders; readerIdx++){

showReaderCardInfo( readerList[readerIdx] );}

}

//*****************************************************************************// Main entry point//*****************************************************************************int main( int argc, char* argv[] ){

std::cout << "PTeID SDK C++ sample program: read_eid" << std::endl;

scanReaders();

PTEID_ReleaseSDK();

}

Page 7: Apresentacao seminariotecnicocc

Energia Open Source

Linux Caixa Mágica 15 - Technology PreviewLinux Caixa Mágica 15 - Technology Preview

25 de Julho 2011 Caixa Mágica – Novo Middlware CC 7

Hello World Java//*****************************************************************************// eID SDK sample code.// This sample demonstrates how to use the eID SDK to read a Portuguese eID card.// The program will dump the data to the standard output for each card reader// it finds.//// compile:// javac -classpath <path_to>\pteid[35]libJava.jar main.java//// run (windows):// set PATH=<path_to_dll's>;%PATH%// java -cp <path_to>\pteid35libJava.jar;. main//*****************************************************************************

import java.lang.*;import pt.portuguese.eid.*;

public class main{

//*****************************************************************************// Get the data and dump to the screen// Beware: The data coming from the cards is encoded in UTF8!//*****************************************************************************private static void getEIDData(PTEID_EIDCard card) throws Exception{

PTEID_EId eid = card.getID();

System.out.println( "\tDocumentType : " + eid.getDocumentType() );

System.out.println( "\tPeronal data:" );System.out.println( "\t-------------" );System.out.println( "\tFirstName1 : " + eid.getFirstName1() );System.out.println( "\tSurname : " + eid.getSurname()

);System.out.println( "\tGender : " + eid.getGender()

);System.out.println( "\tDateOfBirth : " + eid.getDateOfBirth() );System.out.println( "\tLocationOfBirth : " + eid.getLocationOfBirth() );System.out.println( "\tNationality : " + eid.getNationality() );System.out.println( "\tNationalNumber : " + eid.getNationalNumber() );System.out.println( "\tSpecialOrganization: " + eid.getSpecialOrganization() );System.out.println( "\tMemberOfFamily : " + eid.getMemberOfFamily() );System.out.println( "\tValidityBeginDate : " + eid.getValidityBeginDate() );System.out.println( "\tValidityEndDate : " + eid.getValidityEndDate() );

PTEIDAddress_EId eidaddress = card.getAddr();System.out.println( "\tStreet : " + eid.getStreet()

);System.out.println( "\tZipCode : " + eid.getZipCode()

);System.out.println( "\tMunicipality : " + eid.getMunicipality() );System.out.println( "\tCountry : " + eid.getCountry()

);System.out.println( "\tIssuingMunicipality: " + eid.getIssuingMunicipality() );

}

//*****************************************************************************// Get the data from a Portuguese EID card//*****************************************************************************private static void getEidCardData(PTEID_ReaderContext readerContext) throws Exception{

PTEID_EIDCard card = readerContext.getEIDCard();getEIDData(card);

}

//*****************************************************************************// Show the info of the card in the reader//*****************************************************************************private static void showCardInfo(String readerName) throws Exception{

PTEID_ReaderContext readerContext = PTEID_ReaderSet.instance().getReaderByName( readerName );

if ( readerContext.isCardPresent() ){

System.out.println("\tType : " + getCardTypeStr(readerContext));

PTEID_CardType cardType = readerContext.getCardType();getEidCardData(readerContext);

}}

//*****************************************************************************// Show the reader info an get the data of the card if present//*****************************************************************************private static void showReaderCardInfo(String readerName) throws Exception{

PTEID_ReaderContext readerContext = PTEID_ReaderSet.instance().getReaderByName( readerName );

System.out.println("Reader: "+readerName);System.out.println("\tCard present: " + (readerContext.isCardPresent()? "yes" :"no"));

showCardInfo( readerName );

System.out.println("");}

//*****************************************************************************// scan all the card readers and if a card is present, show the content of the// card.//*****************************************************************************private static void scanReaders() throws Exception{

long nrReaders = PTEID_ReaderSet.instance().readerCount();System.out.println("Nr of card readers detected: "+nrReaders);

for ( int readerIdx=0; readerIdx<nrReaders; readerIdx++){

String readerName = PTEID_ReaderSet.instance().getReaderName(readerIdx);

showReaderCardInfo(readerName);}

}

Page 8: Apresentacao seminariotecnicocc

Energia Open Source

Linux Caixa Mágica 15 - Technology PreviewLinux Caixa Mágica 15 - Technology Preview

25 de Julho 2011 Caixa Mágica – Novo Middlware CC 8

Hello World Java (cont.)

//*****************************************************************************// Main entry point//*****************************************************************************public static void main(String argv[]){

System.out.println("[Info] PTeID SDK Java sample program: read_eid");

String osName = System.getProperty("os.name");

if ( -1 != osName.indexOf("Windows") ){

System.out.println("[Info] Windows system!!");System.loadLibrary("beid35libJava_Wrapper");

}else{

System.loadLibrary("beidlibJava_Wrapper");}

try{

BEID_ReaderSet.initSDK();scanReaders();

}catch( BEID_Exception e){

System.out.println("[Catch] BEID_Exception:" + e.GetError());}catch( Exception e){

System.out.println("[Catch] Exception:" + e.getMessage());}

try{

BEID_ReaderSet.releaseSDK();}catch (BEID_Exception e){

System.out.println("[Catch] BEID_Exception:" + e.GetError());}catch (Exception e){

System.out.println("[Catch] Exception:" + e.getMessage());}

}}

Page 9: Apresentacao seminariotecnicocc

Energia Open Source

Linux Caixa Mágica 15 - Technology PreviewLinux Caixa Mágica 15 - Technology Preview

25 de Julho 2011 Caixa Mágica – Novo Middlware CC 9

Obrigado

Luis Medinas <[email protected]>Http://www.twitter.com/lmedinasHttp://www.identi.ca/lmedinasHttp://www.livejournal.com/lmedinas

Questões ?