12.07.2015 Views

JCML - Java Card Modeling Language: Definição e ... - Ifrn

JCML - Java Card Modeling Language: Definição e ... - Ifrn

JCML - Java Card Modeling Language: Definição e ... - Ifrn

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

CAPÍTULO 2. SMART CARDS 3401 private void verificarSenha(APDU apdu) {02 byte tam_senha = (byte) apdu.setIncomingAndReceive();03 byte[] buffer = apdu.getBuffer();04 if (!pin.check(buffer, ISO7816.OFFSET_CDATA, tam_senha)) {05 ISOException.throwIt(SW_SENHA_INVALIDA);06 }07 }Figura 2.12: Método verificarSenha de UsuarioApplet.classes Usuario e UsuarioApplet que são utilizadas no desenvolvimento deste exemplo.Os métodos que tratam os comandos APDU devem ser preferencialmente privados,para que outros objetos não tenham acesso. Como todos os métodos são invocados durantea execução do método process, estes recebem um objeto APDU como parâmetro.Método verificarSenha(apdu):O métoto verificarSenha é responsável pela autenticaçãode um usuário. O método recebe um objeto APDU como parâmetro. O objetoAPDU invoca o método setIcomingAndReceive para que o JCRE torne o(s) dado(s)acessível(is) através do buffer APDU recebido. A quantidade de bytes recebidos é retornadopor este método e pode ser usado para verificar se o número de bytes recebidos éigual ao número de bytes esperado. O método verificarSenha de UsuarioApplet na Figura2.12 recebe os dados através do buffer APDU, e depois verifica se a senha é válida. Se asenha não for válida ou o número de tentativas exceder a quantidade máxima permitidauma exceção é lançada com o valor SW SENHA INVALIDA. Esta verificação é feita peloobjeto pin do tipo OwnerPIN.Método getTipo(apdu):Quando o método necessita enviar dados de resposta para aaplicação host, o objeto APDU deve invocar o método setOutgoing. Este método notificao JCRE que um dado será enviado no campo data da resposta APDU. O método getTiporetorna o tipo de usuário do cartão. Primeiramente é necessário carregar o buffer de dadosda APDU, para que seja verificado se o tamanho da saída APDU obedece o máximoestabelecido.É importante verificar que a referência ao objeto u, do tipo Usuário (entidade dedomínio da aplicação) é quem tem as informações do usuário do cartão. O objeto usuário

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!