contribuic¸oes ao sistema de gerenciamento … · mvc model-view-control, p. 35 oid object...

403
JONATHAN GEHARD KOHLER ROG ´ ERIO BODEM ¨ ULLER JUNIOR CONTRIBUIC ¸ ˜ OES AO SISTEMA DE GERENCIAMENTO DO CICLO DE VIDA DE CERTIFICADOS DIGITAIS DA INFRA-ESTRUTURA DE CHAVES P ´ UBLICAS PARA PESQUISA E ENSINO (SGCI) Florian´ opolis 2007

Upload: dinhtuong

Post on 27-Jul-2018

226 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

JONATHAN GEHARD KOHLERROGERIO BODEMULLER JUNIOR

CONTRIBUICOES AO SISTEMA DE GERENCIAMENTO DO CICLODE VIDA DE CERTIFICADOS DIGITAIS DA INFRA-ESTRUTURA DE

CHAVES PUBLICAS PARA PESQUISA E ENSINO (SGCI)

Florianopolis

2007

Page 2: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

JONATHAN GEHARD KOHLERROGERIO BODEMULLER JUNIOR

CONTRIBUICOES AO SISTEMA DE GERENCIAMENTO DO CICLODE VIDA DE CERTIFICADOS DIGITAIS DA INFRA-ESTRUTURA DE

CHAVES PUBLICAS PARA PESQUISA E ENSINO (SGCI)

Trabalho de conclusao de curso apresentadocomo parte dos requisitos para obtencao do graude Bacharel em Ciencias da Computacao daUniversidade Federal de Santa Catarina

Professor Dr. Ricardo Felipe Custodio

UNIVERSIDADE FEDERAL DE SANTA CATARINA

CENTRO TECNOLOGICO

DEPARTAMENTO DE INFORMATICA E ESTATISTICA

CURSO DE CIENCIAS DA COMPUTACAO

Florianopolis

2007

Page 3: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

Trabalho Final de conclusao de curso sob o tıtulo Contribuicoes ao Sistema de Gerencia-

mento do Ciclo de Vida de Certificados Digitais da Infra-Estrutura de Chaves Publicas para

Pesquisa e Ensino (SGCI), apresentado por Jonathan Gehard Kohler e Rogerio Bodemuller Ju-

nior como parte dos requisitos para obtencao do grau de Bacharel em Ciencias da Computacao,

e aprovado em 29 de outubro de 2007, em Florianopolis, estado de Santa Catarina, pela banca

examinadora constituıda por:

Prof. Ricardo Felipe Custodio, D.Sc.Orientador

Marcelo Carlomagno Carlos, M.Sc.Universidade Federal de Santa Catarina

Tulio Cıcero Salvaro de SouzaUniversidade Federal de Santa Catarina

Juliano RomaniUniversidade Federal de Santa Catarina

Page 4: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

Dedico este trabalho a meus pais,

cuja humildade e trabalho tem sido

exemplo para minha vida,

e para minha namorada, pelo amor e apoio

recebido nos momentos difıceis.

Jonathan Gehard Kohler

Page 5: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

Dedico este trabalho aos meus

pais e a minha namorada pelo apoio,

incentivo e carinho.

Rogerio Bodemuller Junior

Page 6: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

AGRADECIMENTOS

Inicialmente agradeco as pessoas que mais me apoiaram durante a minha formacao, meus

Pais. Desde o inıcio da minha carreira academcia, sempre me ajudaram e deram apoio nos

momentos difıceis, nunca faltando paciencia e carinho.

Agradeco a minha namorada, pela paciencia e compreensao nas varias vezes em que nao

tive tempo para lhe dar a atencao devida. Agradeco tambem pelo grande apoio recebido durante

a minha caminhada academcia!

Deixo registrado o meu especial agradecimento ao professor Ricardo Felipe Custodio, pois

sem ele nao teria recebido a oportunidade de realizar este trabalho.

Quero agradecer especialmente o apoio dado pelos amigos Marcelo Carlomagno Carlos e

Juliano Romani, durante todo o decorrer do desenvolvimento deste trabalho.

Nao poderia deixar de citar os amigos do Laboratorio de Seguranca em Computacao (Lab-

SEC), que me ajudaram e apoiaram em todos os momentos. Tambem agradeco pela oportuni-

dade de te-los como verdadeiros amigos, ultrapassando os limites do simples relacionamento

profissional!

Agradeco a todos os outros amigos, que nao foram citados porem foram de extrema im-

portancia, pelo apoio e pelos momentos de alegrias gerados durante o curso.

(Jonathan Gehard Kohler)

Page 7: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

Primeiramente gostaria de agradecer a todas as pessoas que me ajudaram de forma direta

ou indireta na realizacao deste trabalho.

Aos meus pais, Rogerio e Marilena, pelas oportunidades que me propiciaram para chegar

neste ponto, pelo imenso carinho que eles sempre tiveram comigo e pelos ensinamentos que eu

levarei para o resto da minha vida

A minha namorada Priscila, polo seu impagavel apoio, companheirismo, amor e amizade

alem da compreensao nos momentos de ausencia fısica e espiritual.

Ao amigo Jonathan, pelo esforco, paciencia e dedicacao durante a realizacao deste trabalho.

Ao professor Ricardo Felipe Custodio por ter dado o desafio inicial alem da oportunidade

de realizar este trabalho.

Ao amigo Marcelo Carlomagno Carlos por dedicar horas nos auxiliando, alem de seus

conhecimentos, paciencia e o enorme apoio na realizacao deste.

Nao devo esquecer de agradecer aos colegas de LabSEC por sempre sanarem minhas duvidas,

alem de nos apoiarem em todas as etapas do projeto.

(Rogerio Bodemuller Junior)

Page 8: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

“Sorte e o que acontece

quando a preparacao

encontra a oportunidade.”

Darrel Royal

Page 9: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

RESUMO

Um Sistema de Gerenciamento do Ciclo de Vida de Certificados Digitais permite gerenciar todoo ciclo de vida do certificado digital, o que envolve a emissao, publicacao e revogacao de certifi-cados digitais e a gerencia da Lista de Certificados Revogados. O Sistema de Gerenciamento doCiclo de Vida de Certificados Digitais pode ser utilizado para a implantacao e o gerenciamentode uma Infra-Estrutura de Chaves Publicas. Uma infra-estrutura de chaves publicas e compostapor Autoridades Certificadoras, Autoridades de Registro e Diretorios. Este trabalho consiste naanalise e aperfeicoamento de um SGC.

Palavras-Chave: Certificacao Digital, ICP

Page 10: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

ABSTRACT

Write here abstract

Keywords:

Page 11: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

LISTA DE FIGURAS

Figura 1 Esquema da metodologia do trabalho . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

Figura 2 Criptografia Simetrica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

Figura 3 Criptografia Assimetrica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

Figura 4 Funcionamento das paginas PHP.(ALVAREZ, 2005) . . . . . . . . . . . . . . . . . . . . . . . . 37

Figura 5 Relacionamento entre os grupos do Modulo de Certificacao Digital da biblioteca 47

Figura 6 Requisicao de Certificado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48

Figura 7 Diagrama de Classes do grupo Requisicoes de Certificado . . . . . . . . . . . . . . . . . . . 48

Figura 8 Modelo de transacao de duas partes (VIGIL, 2007) . . . . . . . . . . . . . . . . . . . . . . . . . 49

Figura 9 Modelo de transacao de tres partes (VIGIL, 2007) . . . . . . . . . . . . . . . . . . . . . . . . . . 50

Figura 10 Diagrama de Classes do grupo Certificado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51

Figura 11 Extensao Authority Key Identifier (SUTIL, 2007) . . . . . . . . . . . . . . . . . . . . . . . . . . . 53

Figura 12 Diagrama de Classes do grupo Extensoes - Parte 1 . . . . . . . . . . . . . . . . . . . . . . . . . . 56

Figura 13 Diagrama de Classes do grupo Extensoes - Parte 2 . . . . . . . . . . . . . . . . . . . . . . . . . . 57

Page 12: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

Figura 14 Diagrama de Classes do grupo Extensoes - Parte 3 . . . . . . . . . . . . . . . . . . . . . . . . . . 58

Figura 15 Diagrama de Classes do grupo Padroes de Certificados . . . . . . . . . . . . . . . . . . . . . . 58

Figura 16 Diagrama de Classes do grupo Lista de Certificados Revogados . . . . . . . . . . . . . . 59

Figura 17 Diagrama de Classes dos grupos Identificadores de Objetos e RDNSequence . . 59

Figura 18 Diagrama de Classes das interfaces do grupo Engine . . . . . . . . . . . . . . . . . . . . . . . . 60

Figura 19 Diagrama de Classes das interfaces do grupo Funcao Resumo . . . . . . . . . . . . . . . . 61

Figura 20 Diagrama de Classes das interfaces do grupo Chave Simetrica . . . . . . . . . . . . . . . 62

Figura 21 Diagrama de Classes das interfaces do grupo Par de Chaves . . . . . . . . . . . . . . . . . 63

Figura 22 Diagrama de Classes das interfaces do grupo Chave Assimetrica . . . . . . . . . . . . . 64

Figura 23 Diagrama de Classes das interfaces do grupo Cifrador . . . . . . . . . . . . . . . . . . . . . . . 65

Figura 24 Diagrama de Classes das interfaces do grupo Assinador . . . . . . . . . . . . . . . . . . . . . 66

Figura 25 Camadas da Biblioteca de Seguranca do SGCI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68

Figura 26 Tela de exemplo de saıda do PHPUnit com Xdebug . . . . . . . . . . . . . . . . . . . . . . . . . 69

Page 13: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

LISTA DE TABELAS

1 Agrupamento das classes do Modulo de Certificacao Digital . . . . . . . . . . . . . . . . . . p. 47

2 Nomenclatura dos bits do valor da extensao Key Usage . . . . . . . . . . . . . . . . . . . . . . . p. 52

3 Agrupamento das classes do Modulo de Criptografia . . . . . . . . . . . . . . . . . . . . . . . . . p. 60

Page 14: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

LISTA DE ABREVIATURAS E SIGLAS

AC Autoridade Certificadora, p. 25

AES Advanced Encryption Standard, p. 22

AR Autoridade de Registro, p. 25

CAST128 Carlisle Adams and Stafford Tavares - 128 bits , p. 22

CG Comite Gestor, p. 27

CMMI Capability Maturity Model Integration, p. 16

DAP Directory Access Protocol, p. 63

DES Data Encryption Standard, p. 22

DP Diretorio Publico, p. 30

DPC Declaracao de Praticas de Certificacao, p. 18

DSA Digital Signature Algorithm, p. 24

ECC Elliptic Curve Cryptography, p. 23

HSM Hardware Security Module, p. 28

ICP Infra-Estrutura de Chaves Publicas, p. 15

ICP-Brasil Infra-Estrutura de Chaves Publicas Brasileira, p. 16

ICPEDU Infra-Estrutura de Chaves Publicas para Pesquisa e Ensino, p. 15

IDEA International Data Encryption Standard, p. 22

IP Internet Protocol, p. 51

ITI Instituto Nacional de Tecnologia da Informacao, p. 28

LabSEC Laboratorio de Seguranca em Computacao, p. 28

LCA Laboratorio de Criptografia Aplicada, p. 28

LCC Laboratorio de Computacao Cientıfica, p. 28

LCR Lista de Certificados Revogados, p. 25

LDAP Lightweight Directory Access Protocol, p. 15

LDIF LDAP Data Interchange Format, p. 63

LNCC Laboratorio Nacional de Computacao Cientıfica, p. 28

MD2 Message-Digest Algorithm 2, p. 24

MD4 Message-Digest Algorithm 4, p. 24

Page 15: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

MD5 Message-Digest Algorithm 5, p. 24

MP Modulo Publico, p. 30

MVC Model-View-Control, p. 35

OID Object Identifier, p. 55

PC Polıticas de Certificacao, p. 18

PHP PHP: Hypertext Preprocessor, p. 33

PKI Public Key Infrastructure, p. 24

POO Programacao Orientada a Objetos, p. 40

RC5 Rivest Cipher 5, p. 22

RNP Rede Nacional de Ensino e Pesquisa, p. 15

SEI Software Engineering Institute, p. 16

SGC Sistema de Gerenciamento do Ciclo de Vida de Certificados Digi-

tais,

p. 15

SHA-1 Secure Hash Algorithm 1, p. 24

SHA-256 Secure Hash Algorithm 256, p. 24

SHA-512 Secure Hash Algorithm 512, p. 24

SVN Subversion, p. 17

UFF Universidade Federal Fluminense, p. 28

UFMG Universidade Federal de Minas Gerais, p. 28

UFSC Universidade Federal de Santa Catarina, p. 28

Unicamp Universidade Estadual de Campinas, p. 28

URL Uniform Resource Locator, p. 51

WEB World Wide Web, p. 32

XML Extensible Markup Language, p. 47

Page 16: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

SUMARIO

1 INTRODUCAO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 33

1.1 OBJETIVOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 33

1.1.1 OBJETIVO GERAL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 33

1.1.2 OBJETIVOS ESPECIFICOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 33

1.2 JUSTIFICATIVA E MOTIVACAO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 34

1.3 METODOLOGIA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 35

1.3.1 CMMI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 35

1.3.2 METODOLOGIA DO TRABALHO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 35

1.4 LIMITACOES DO TRABALHO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 36

1.5 ESTRUTURA DO TRABALHO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 37

2 FUNDAMENTACAO TEORICA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 38

2.1 SEGURANCA NO CONTEXTO MUNDIAL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 38

2.2 CRIPTOGRAFIA. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 39

2.2.1 CRIPTOGRAFIA SIMETRICA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 39

2.2.2 CRIPTOGRAFIA ASSIMETRICA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 40

2.3 FUNCAO RESUMO. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 41

2.4 ASSINATURAS DIGITAIS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 42

2.5 INFRA-ESTRUTURA DE CHAVES PUBLICAS (ICP) . . . . . . . . . . . . . . . . . . . . . . . . . p. 42

2.5.1 CERTIFICADOS DIGITAIS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 43

2.5.2 AUTORIDADE CERTIFICADORA (AC) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 44

2.5.3 AUTORIDADE DE REGISTRO (AR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 45

Page 17: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

2.5.4 LISTA DE CERTIFICADOS REVOGADOS (LCR) . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 45

2.5.5 INFRA-ESTRUTURA DE CHAVES PUBLICAS BRASILEIRA (ICP-BRASIL) p. 45

2.5.6 INFRA-ESTRUTURA DE CHAVES PUBLICAS PARA PESQUISA E EN-

SINO (ICPEDU) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 46

2.6 SISTEMA DE GERENCIAMENTO DO CICLO DE VIDA DE CERTIFICA-

DOS DIGITAIS DA ICPEDU (SGCI). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 47

2.6.1 VISAO GERAL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 47

2.6.2 SISTEMA DE GERENCIAMENTO DO CICLO DE VIDA DE CERTIFICA-

DOS DIGITAIS DA ICPEDU (SGCI) VERSAO 1.2.0 . . . . . . . . . . . . . . . . . . . . . . . . . p. 49

3 TECNOLOGIAS UTILIZADAS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 50

3.1 SUBVERSION (SVN) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 50

3.2 TRAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 50

3.3 PHP: HYPERTEXT PREPROCESSOR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 51

3.4 ZEND FRAMEWORK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 52

3.5 OPENSSL. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 54

3.6 PHPUNIT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 54

3.7 XDEBUG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 55

4 EVOLUCAO DO SISTEMA. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 56

4.1 MELHORIAS EFETUADAS NA VERSAO 1.3.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 56

4.2 ANALISE E PROJETO DA VERSAO 2.0.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 57

4.2.1 ANALISE DE REQUISITOS DO SGCI VERSAO 2.0.0 . . . . . . . . . . . . . . . . . . . . . . p. 57

4.2.2 CASOS DE USO DO SGCI VERSAO 2.0.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 59

4.2.3 BIBLIOTECA DE SEGURANCA. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 60

5 CONSIDERACOES FINAIS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 85

REFERENCIAS. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 87

Page 18: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

APENDICES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 92

APENDICE A -- PLANO DE TESTES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 92

APENDICE B -- PLANOS DE REQUISITOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 149

APENDICE C -- CASOS DE USO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 157

APENDICE D -- CODIGO-FONTE DA BIBLIOTECA. . . . . . . . . . . . . . . . . . . . . . . . . . . p. 158

Page 19: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

18

1 INTRODUCAO

Muitas empresas ja sofreram ataques atraves da Internet e os culpados nao foram puni-

dos. Para solucionar este e outros problemas, foram criadas varias tecnologias para aumentar a

seguranca das informacoes que sao transmitidas pela Internet.

Uma solucao, normalmente utilizada, e a Certificacao Digital. Formada por entidades

confiaveis e documentos eletronicos chamados certificados digitais. A partir da necessidade

de gerenciar esta estrutura, e que este trabalho se insere. Analisar e propor melhorias em um

Sistema de Gerenciamento do Ciclo de Vida de Certificados Digitais. Sera utilizado o Sis-

tema de Gerenciamento do Ciclo de Vida de Certificados Digitais da Infra-Estrutura de Chaves

Publicas para Pesquisa e Ensino, mantido pela Rede Nacional de Ensino e Pesquisa.

Durante um perıodo de tempo, este software foi analisado e recebeu modificacoes. Apos

uma certa experiencia com ele, foi realizada a proposta de uma nova implementacao que traria

melhorias tanto para a parte de usuario final, quanto para os desenvolvedores do software. Alem

de ser modificado toda a parte polıtica de gerenciamento do ciclo de vida do sistema.

1.1 OBJETIVOS

Abaixo, serao apresentados os objetivos deste trabalho.

1.1.1 OBJETIVO GERAL

O objetivo deste trabalho e realizar a analise do Sistema de Gerenciamento do Ciclo de Vida

de Certificados Digitais da ICPEDU (SGCI) atual, propor uma especificacao para a criacao

de uma nova versao deste software a fim de que esta seja mais abragente, robusto, seguro e

atualizado com as novas tecnoligias existentes, e adicionalmente implementar uma blibioteca

para prover as funcoes criptograficas necessarias a implementacao deste software.

1.1.2 OBJETIVOS ESPECIFICOS

Os objetivos especıficos deste trabalho sao:

Page 20: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

19

• Reorganizar a estrutura do programa atual a fim de melhorar a seguranca restringindo o

acesso aos arquivos cujo acesso deve ser restrito.

• Preparar uma documentacao rica, a fim de facilitar a implementacao do sistema.

• Modularizar o sistema, tornando cada modulo independente do todo.

• Adicionar suporte a emissao de certificados Extended Validation SSL Certificates (EV

SSL);

• Adicionar suporte para integracao do SGCI a um Lightweight Directory Access Protocol

(LDAP) (ZEILENGA, 2006)

• Criar uma biblioteca critografica em PHP

1.2 JUSTIFICATIVA E MOTIVACAO

Certificados digitais sao como documentos autenticados, que atestam que uma determinada

pessoa e ela mesma. Assim, voce sabe que esta trocando informacoes com uma determinada

pessoa ou empresa, e nao com um sujeito qualquer.

Estes certificados de nada iriam servir, se cada pessoa pudesse criar o seu. Qualquer sujeito

poderia criar o seu certificado digital, e enganar os outros usuarios da Internet. Para isto, foi

criada toda uma estrutura, chamada de Infra-Estrutura de Chaves Publicas (ICP), que geral-

mente e comandada por orgaos governamentais. Estas ICPs sao as responsaveis pela emissao

dos certificados digitais.

Cada ICP necessita de um software para gerenciar estes certificados, e e neste ambito que

este trabalho se insere. Aprimorar um Sistema de Gerenciamento do Ciclo de Vida de Certifi-

cados Digitais (SGC) pre-existente.

O SGC que sera utilizado como base para este trabalho e o SGCI, que foi desenvolvido

para gerenciar a Infra-Estrutura de Chaves Publicas para Pesquisa e Ensino (ICPEDU) da Rede

Nacional de Ensino e Pesquisa (RNP). Esta ICP foi criada para ser utilizada nas universidades,

com o intuito de familiarizar os alunos a utilizarem certificados digitais.

Ao entrar no mercado de trabalho, o aluno da universidade ja estara familiarizado com o

funcionamento dos certificados digitais. A unica diferenca, e que agora quem emitira o certifi-

cado, sera a Infra-Estrutura de Chaves Publicas Brasileira (ICP-Brasil), e nao mais a ICPEDU.

Page 21: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

20

Uma falha de seguranca em um sistema desses e algo muito perigoso e crıtico! A partir

deste ponto parte a motivacao para o trabalho, efetuar melhorias de robustez e seguranca em um

sistema aonde a seguranca e um dos fatores mais crıticos.

1.3 METODOLOGIA

A seguir serao apresentadas as etapas deste trabalho, afim de que os objetivos sejam atingi-

dos.

1.3.1 CMMI

Capability Maturity Model Integration (CMMI) e um modelo de processo criado pela Soft-

ware Engineering Institute (SEI) que contem os elementos essenciais para as organizacoes cons-

truırem processos efetivos e de qualidade.

Ele pode ser utilizado para melhorias em um projeto, uma divisao ou em uma organizacao

inteira(WHAT. . . , 2007). A principal meta e a qualidade do processo, sob o ponto de vista

gerencial.

Alguns motivos para se adotar CMMI:

• A qualidade do produto final e influenciada diretamente pela qualidade do processo (um

bom processo, produz um bom produto);

• Melhorias no processo aumentam a produtividade e a qualidade do produto final;

• Os problemas sao reconhecidos e corrigidos quando ocorrem, e nao somente no final do

processo;

• Os prazos sao cumpridos com maior fidelidade ao planejamento.

1.3.2 METODOLOGIA DO TRABALHO

Este trabalho se divide em tres etapas:

1. Realizar estudos sobre o SGCI versao 1.3.0;

2. Desenvolver melhorias e corrigir erros no SGCI versao 1.3.0;

3. Propor uma nova versao para o SGCI.

Page 22: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

21

Na primeira etapa foi feito um estudo sobre o funcionamento do SGCI. Nesta fase, percebeu-

se a dificuldade de utilizar um software sem muita documentacao.

Apos este estudo, foi criado um plano de testes com o proposito de detectar o maior numero

de problemas existentes no SGCI. Este plano de testes pode ser encontrado no apendice A.

Com o plano de testes pronto, deu-se inıcio a segunda etapa do trabalho. Foram executa-

dos os testes do plano de testes, e encontraram-se varios erros. Atraves destes testes, tambem

surgiram ideias sobre melhorias e novas funcionalidades para o SGCI.

A segunda etapa foi muito importante pois possibilitou uma compreensao mais aprofundada

de como funciona um SGC. Tambem foi importante para criar experiencias praticas, essencial

para realizar o projeto do SGCI versao 2.0.0.

Apos a segunda etapa realizada, iniciou-se o analise e projeto do SGCI 2.0.0. O resultado

desta etapa, sera detalhado no decorrer deste trabalho.

Os benefıcios apresentados na secao 1.3.1 foram os principais motivos para a metodologia

deste trabalho ser baseada no modelo de processos CMMI. A ultima etapa foi baseada em

CMMI nıvel 2.

A Figura1 apresenta a divisao do trabalho. A Equipe de Projeto desenvolve as especificacoes.

O plano de testes (uma parte das especificacoes) e enviado a Equipe de Testes. O resto das

especificacoes (modelos, diagramas, etc) e enviado a Equipe de Desenvolvimento. Esta ultima

implementa o software, fazendo uso do Subversion (SVN) (maiores detalhes na secao 3.1). A

equipe de testes realiza os testes especificados no plano de testes, e os problemas sao reportados

ao TRAC (maiores detalhes na secao 3.2). Apos uma versao estavel estar pronta, esta e publi-

cada no TRAC. Os usuarios finais testam a nova versao e postam os problemas e sugestoes que

encontraram no TRAC.

Os testes foram divididos em dois grupos: os que necessitam da intervencao humana e os

que podem ser automatizados. Os testes do primeiro grupo foram feitos pela equipe de testes, e

os outros pelos desenvolvedores.

1.4 LIMITACOES DO TRABALHO

Embora existam outros modelos de ICP e certificados digitais tais como o SPKI (ELLISON

et al., 1999) e o PGP (CALLAS et al., 1998), o escopo deste trabalho se restringe apenas ao

padrao X.509 (ITU-T, 2005).

Page 23: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

22

Figura 1: Esquema da metodologia do trabalho

Este trabalho nao trata diretamente das implicacoes da aplicacao dos metodos descritos

sobre os documentos de Polıticas de Certificacao (PC) e Declaracao de Praticas de Certificacao

(DPC) de uma ICP.

1.5 ESTRUTURA DO TRABALHO

No capıtulo 2 sao abordados os principais conceitos de seguranca computacional, tais como

criptografia, assinatura digital, certificado digital, ICP e e feita uma breve abordagem sobre o

SGCI.

As principais tecnologias utilizadas durante o desenvolvimento deste trabalho sao apresen-

tadas no capıtulo 3. Sao apresentadas a linguagem utilizada, as ferramentas de controle de

modificacoes, a biblioteca de seguranca, e as ferramentas para testes utilizadas.

O capıtulo 4 traz as melhorias efetuadas no SGCI versao 1.3.0 e a proposta para o SGCI

versao 2.0.0. Contem a analise de requisitos e especificacao dos casos de uso, alem das especificacoes

da biblioteca de seguranca desenvolvida, seus requisitos e uma explicacao sobre o desenvolvi-

mento de aplicacoes utilizando esta biblioteca.

Por fim, no capıtulo 5, sao apresentadas as conclusoes do trabalho desenvolvido, juntamente

com as sugestoes de trabalhos futuros.

Page 24: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

23

2 FUNDAMENTACAO TEORICA

Neste capıtulo serao abordados varios temas sobre seguranca que servem para um maior

embasamento do contexto em que se insere este trabalho.

2.1 SEGURANCA NO CONTEXTO MUNDIAL

Segundo Tzu (2002), o que e de suprema importancia na guerra e atacar a estrategia do

inimigo. Guerras de informacoes acontecem constantemente em todo o mundo. Um dos exem-

plos mais recentes foram os acontecimentos da guerra do Iraque. Enquanto Estados Unidos

divulgavam determinadas informacoes, o Iraque divulgava outras. E assim, foram moldando a

opiniao publica contra o seu inimigo e ao seu favor.

Neste trabalho, entende-se por informacao todo e qualquer conteudo ou dado que tenha

algum valor. Seguranca da informacao entende-se pela protecao existente sobre determinada

informacao.

De acordo com a norma ISO/IEC 17799 (a NBR ISO/IEC 17799 e a versao brasileira desta

norma, homologada pela ABNT em setembro de 2001) a seguranca da informacao esta funda-

mentada em tres pilares: confidencialidade, integridade, e disponibilidade da informacao. Estes

conceitos podem ser sucintamente definidos como:

• Confidencialidade - a informacao so estara disponıvel para aqueles devidamente autori-

zados;

• Integridade - a informacao deve manter todas as propriedades definidas pelo seu autor;

• Disponibilidade - a informacao deve estar sempre disponıvel para aqueles que estao au-

torizados.

Atualmente, a troca de informacoes atraves de meios digitais tornou-se um dos princi-

pais problemas de seguranca. Diversos sistemas utilizados nao foram projetados para garantir

seguranca sobre as informacoes. Informacoes extremamente sigilosas percorrem nestes siste-

Page 25: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

24

mas, e consequentemente, algum mecanismo de seguranca deve ser utilizado. Uma das manei-

ras de se garantir isto e cifrando as informacoes.

2.2 CRIPTOGRAFIA

Criptografia, do grego Kryptos (ocultar) e grafos (escrever), significa ”escrita oculta”. O seu

uso data do antigo Egito (onde os faraos mandavam ocultar informacoes sobre os seus tesouros)

e foi fundamental nos capıtulos mais delicados da historia da humanidade. Usada na antiga

Roma por Julio Cesar (50 a.C.), foi sempre arma de militares, diplomaticos e espioes, e e a

defesa das comunicacoes e dos dados que circulam na grande rede que une o mundo, a Internet.

A protecao da informacao e feita mudando a sua forma, por meio do processo chamado

cifragem (ou transformacao criptografica), na qual um texto legıvel e tornado ilegıvel. Analogi-

camente, o processo inverso chama-se decifragem, onde o texto ilegıvel, ou cifrado, e tornado

legıvel como na sua forma original.

“A criptografia e a arte e ciencia de cifrar e decifrar mensagens de maneira a estabelecer

um canal de comunicacao sigiloso entre as pessoas envolvidas na troca de informacao.” (GILL,

2002).

A cifragem de uma mensagem baseia-se em dois componentes: um algoritmo e uma chave.

Uma chave e uma cadeia aleatoria de bits utilizada em conjunto com um algoritmo. Cada chave

distinta faz com que o algoritmo trabalhe de forma ligeiramente diferente. Um algoritmo e uma

transformacao matematica, ele converte uma mensagem em claro em uma mensagem cifrada e

vice-versa.

O numero de chaves possıveis depende do tamanho da chave. Por exemplo, uma chave de

8 bits permite uma combinacao de no mınimo 256 chaves (28). Quanto maior o tamanho da

chave, mais difıcil sera quebra-la, pois estaremos aumentando o numero de combinacoes.

O modo como sao empregadas as chaves podem ser divididas em:

• Criptografia Simetrica;

• Criptografia Assimetrica.

2.2.1 CRIPTOGRAFIA SIMETRICA

Na criptografia simetrica, a mesma chave e utilizada para cifrar e decifrar uma mensa-

gem(ver Figura2). Estas chaves precisam ser compartilhadas entre o emissor e o receptor por

Page 26: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

25

algum outro meio, antes que a comunicacao seja firmada.

Apesar de sua simplicidade, segundo Schneier (1996) existem alguns problemas com a

criptografia simetrica:

• como cada par necessita de uma chave para se comunicar de forma segura, para um uma

rede de x usuarios precisarıamos de algo da ordem de x(x−1)/2 chaves, quantidade esta

que dificulta a gerencia das chaves;

• a chave deve ser trocada entre as partes e armazenada de forma segura, o que nem sempre

e facil de ser garantido;

• a criptografia simetrica nao garante a identidade de quem enviou ou recebeu a mensagem

(autenticidade e nao-repudio).

Figura 2: Criptografia Simetrica

Os algoritmos comumente utilizados sao: Advanced Encryption Standard (AES), Data En-

cryption Standard (DES), Blowfish, International Data Encryption Standard (IDEA), Carlisle

Adams and Stafford Tavares - 128 bits (CAST128) e o Rivest Cipher 5 (RC5).

2.2.2 CRIPTOGRAFIA ASSIMETRICA

A criptografia assimetrica utiliza um par de chaves, uma chave publica e uma chave privada,

conforme demonstrado na Figura 3. A chave publica pode ser distribuıda livremente, enquanto

a chave privada deve ser de conhecimento apenas de seu dono. Uma mensagem cifrada com

a chave publica pode somente ser decifrada pela sua chave privada. Do mesmo modo, uma

mensagem cifrada com a chave privada pode somente ser decifrada pela chave publica corres-

pondente.

A vantagem deste sistema e poder enviar uma mensagem secreta utilizando apenas a chave

publica do receptor. Como a chave publica esta amplamente disponıvel, nao ha necessidade

do envio de chaves como e feito no modelo simetrico. A confidencialidade da mensagem e

Page 27: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

26

Figura 3: Criptografia Assimetrica

garantida enquanto a chave privada estiver segura. Caso contrario quem possuir acesso a chave

privada tera acesso as mensagens.

Os algoritmos comumente utilizados sao: RSA, ElGamal e o Elliptic Curve Cryptography

(ECC).

2.3 FUNCAO RESUMO

Em criptografia, funcao resumo e uma sequencia de bits de tamanho fixo que representa um

resumo de uma mensagem. Segundo Stinson (2002), funcao resumo e usada para construir uma

pequena impressao digital de algum dado; se o dado for alterado, entao a impressao digital nao

sera mais valida.

O conceito teorico diz que “funcao resumo e a transformacao de uma grande quantidade de

informacoes em uma pequena quantidade de informacoes”

Uma funcao resumo (h) e um algoritmo que mapeia uma sequencia de bits (x) de tamanho

arbitrario, para uma sequencia de bits de tamanho fixo menor, chamada resumo (h(x)). Como

resultado, e possıvel garantir integridade do documento, pois o resumo da mensagem enviada

deve ser o mesmo da mensagem recebida.

Segundo Stallings (2003) a funcao resumo deve possuir as seguintes propriedades:

• h deve poder ser aplicado sobre uma sequencia de bits de qualquer tamanho;

• h deve produzir um resultado de tamanho fixo;

• h(x) deve ser relativamente facil de computar, a partir de x;

• dado um h(x), deve ser impraticavel encontrar um x;

• deve ser impraticavel encontrar um x’, dado que h(x’)=h(x);

Page 28: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

27

A funcao resumo tambem pode ser chamada por: Message Digest, One-Way Hash Func-

tion, Funcao de Condensacao, Funcao de Espalhamento Unidirecional ou Funcao Hashing. Os

algoritmos comumente utilizados sao: Message-Digest Algorithm 2 (MD2), Message-Digest

Algorithm 4 (MD4), Message-Digest Algorithm 5 (MD5), Secure Hash Algorithm 1 (SHA-1),

Secure Hash Algorithm 256 (SHA-256) e Secure Hash Algorithm 512 (SHA-512).

2.4 ASSINATURAS DIGITAIS

Segundo Stallings (2003), para garantir a autoria de um documento, usa-se a assinatura –

seja ela digital ou nao. A assinatura digital e uma sequencia de caracteres binarios determinada

com base numa mensagem e algo que associa o assinante a esta mensagem. Esta associacao

pode ser feita atraves de algo que se possui, algo que se sabe ou algo que se e; como exemplo

terıamos um cartao magnetico, uma senha, e a ıris do assinante respectivamente.

A assinatura digital garante que o receptor da mensagem pode confirmar se assinatura do

emissor e autentica (autenticacao), garante que a mensagem realmente provem de determinado

remetente (nao-repudio) e garante que a mensagem nao foi adulterada (integridade). Para criar

uma assinatura digital para uma determinada mensagem, deve-se calcular a funcao resumo da

mesma, apos isso, cifrar o resumo com a chave privada do emissor e enviar junto com a men-

sagem original. Para verificar a assinatura, e necessario primeiramente decifrar a assinatura

digital, com a chave publica do emissor, depois calcular a funcao resumo da mensagem rece-

bida e comparar os resultados. Se forem iguais, a assinatura e valida.

Os padroes largamente utilizados sao o RSA, Digital Signature Algorithm (DSA), ElGamal

e o ECC.

2.5 INFRA-ESTRUTURA DE CHAVES PUBLICAS (ICP)

Do ingles Public Key Infrastructure (PKI), “Infra-Estrutura de Chaves Publicas e um con-

junto de tecnicas, praticas e procedimentos elaborado para suportar um sistema criptografico

com base em certificados digitais” (CUSToDIO et al., 2005). Esta infra-estrutura tem como

principais funcoes dar suporte aos processos de geracao, armazenamento, distribuicao, arquiva-

mento e revogacao de certificados digitais. Uma ICP baseia-se em um sistema de confianca, no

qual duas partes confiam mutuamente em uma terceira para verificar e confirmar a identidade

de ambas as partes.

Para tanto, uma ICP possui ferramentas que sao utilizadas pelos seguintes componentes:

Page 29: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

28

• As autoridades: as principais sao Autoridade Certificadora (AC) e Autoridade de Registro

(AR). Existem outras autoridades auxiliares, mas nao serao abordadas;

• Os clientes: divididos em dois tipos nao mutuamente exclusivos: aqueles que efetiva-

mente possuem um certificado digital e aqueles que querem verificar a validade de um

certificado;

• O repositorio: onde sao armazenados e disponibilizados os certificados, Lista de Certifi-

cados Revogados (LCR) e afins.

Segundo (CUSToDIO; FREITAS, 2004) As quatro ferramentas basicas utilizadas sao:

• Certificado da chave publica propriamente dito;

• LCR;

• PC;

• Caminho de Certificacao.

2.5.1 CERTIFICADOS DIGITAIS

Uma carteira de identidade e emitida por um orgao confiavel e contem um conjunto de

informacoes que identificam o seu dono. O analogo no mundo virtual e o certificado digi-

tal. Segundo Fernandes (2001)Um certificado digital pode ser definido como um documento

eletronico, assinado digitalmente por uma terceira parte confiavel, que associa o nome (e atribu-

tos) de uma pessoa ou instituicao a uma chave criptografica publica. Este arquivo normalmente

e guardado em um token ou em um smart card.

Um certificado associa uma chave publica e um nome unico para um usuario. O padrao nor-

malmente utilizado e o X.509 v.3 (ITU-T, 2005). Segundo Housley et al. (2002) Um certificado

que utiliza este padrao possui os seguintes campos:

• Versao do certificado;

• Numero serial;

• Identificador do algoritmo da assinatura;

• Nome do emissor;

• Perıodo de validade;

Page 30: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

29

• Nome do usuario;

• Informacao sobre a chave publica do sujeito;

• Identificador unico de emissor;

• Identificador unico de usuario;

• Extensoes;

• Assinaturas.

O objetivo da assinatura digital no certificado digital e indicar que uma terceira parte, nor-

malmente uma AC, garante a veracidade das informacoes.

Para a emissao de um certificado digital, um usuario faz uma requisicao e encaminha a

uma entidade. Depois do recebimento da requisicao, e realizada uma serie de procedimentos,

normas e padroes que comprovam a identidade do requisitante. Apos este processo, e emitido

o certificado. Este normalmente e publicado em um diretorio publico e tambem e encaminhado

para o seu requisitante.

Uma mesma entidade possui muitos servicos (verificar requisicoes, emitir certificados, re-

vogar certificados, etc), o que dificulta o controle. Para isto, as entidades geralmente sao dividas

em duas: Autoridade Certificadora e Autoridade de Registro.

2.5.2 AUTORIDADE CERTIFICADORA (AC)

AC e o bloco fundamental na construcao de uma ICP. Ela e a terceira parte confiavel

para a emissao de um certificado digital. E responsavel pela emissao, distribuicao, renovacao,

revogacao e gerenciamento dos certificados alem da responsabilidade de emissao e gerencia-

mento de LCR.

Uma AC pode emitir certificados para usuarios, para outras ACs e para ARs. Um certificado

emitido e assinado com a chave privada da AC, e deste modo, pode ser comprovado a sua

autenticidade verificando-se a assinatura com a chave publica desta AC.

Numa hierarquia, cada AC tem credibilidade e e conhecida por todas as outras entidades

participantes. Uma AC Raiz e uma AC que assina seu certificado com a sua propria chave

privada. Uma AC subordinada e uma AC cujo certificado e assinado pela sua AC imediatamente

superior. Isto e feito para melhorar a performance, para facilitar a administracao e por questoes

de seguranca.

Page 31: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

30

A sequencia de certificados entre uma AC Raiz e a ultima AC subordinada e chamado de

cadeia de certificacao.

E importante ressaltar que a principal responsabilidade da AC e manter a sua chave privada

segura pois, com ela seria possıvel emitir qualquer certificado. Por este motivo, uma boa pratica

utilizada e manter a AC totalmente off-line, normalmente em uma sala-cofre.

2.5.3 AUTORIDADE DE REGISTRO (AR)

Segundo Ignaczak (2002) pode-se entender a AR como uma interface entre ACs e usuarios

que desejam obter um certificado. A AR e a entidade de uma ICP responsavel pelo recebi-

mento de requisicoes, validacao das informacoes contidas na requisicao e encaminhamento de

solicitacao ou revogacao de certificados digitais as ACs, que possuem relacao de confianca com

esta AR.

Ela atua recebendo as requisicoes de certificados e executando a checagem dos dados do

requisitante. Assim que os dados sao verificados, estes e a chave publica da AR formam uma

requisicao de certificado. A AR assina a requisicao e a envia para a AC. Esta verifica a assinatura

da AR e emite o certificado sem nenhuma verificacao adicional.

2.5.4 LISTA DE CERTIFICADOS REVOGADOS (LCR)

A LCR tem como objetivo publicar quais certificados nao-expirados e emitidos por uma

AC deixaram de ser validos (HOUSLEY; POLK, 2001). Assim como os certificados, a LCR e

um objeto eletronico emitido e assinado por uma AC. E funcao desta, publicar periodicamente,

ou sob demanda, a sua LCR.

A RFC 3280 (HOUSLEY et al., 2002) define o conteudo de uma LCR. Os principais dados

sao: informacoes sobre a AC emissora da LCR, a data de emissao da LCR, alem dos numeros

de serie dos certificados revogados ou suspensos e as datas de revogacao destes.

2.5.5 INFRA-ESTRUTURA DE CHAVES PUBLICAS BRASILEIRA (ICP-BRASIL)

A ICP-Brasil foi criada pelo governo federal em 2001. Em julho deste mesmo ano foram

regulamentadas as atividades do Comite Gestor (CG) da ICP-Brasil atraves do decreto 3.872. E

em 24 de agosto de 2001 a ICP-Brasil foi instituıda pela Medida Provisoria 2.200-2.

“A ICP-Brasil e um conjunto de tecnicas, praticas e procedimentos, a ser implementado

pelas organizacoes governamentais e privadas brasileiras com o objetivo de estabelecer os fun-

Page 32: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

31

damentos tecnicos e metodologicos de um sistema de certificacao digital baseado em chave

publica.” (ITI, 2007). E mantida pelo Instituto Nacional de Tecnologia da Informacao (ITI),

entidade publica federal ligada a Casa Civil da Presidencia da Republica, e AC Raiz desta ICP.

A medida provisoria numero 2.200-2 define que a ICP-Brasil tem como objetivo garantir

a autenticidade, a integridade e a validade jurıdica de documentos em forma eletronica, das

aplicacoes de suporte e das aplicacoes habilitadas que utilizem certificados digitais, bem como

a realizacao de transacoes eletronicas seguras. Ela possui uma AC-Raiz, dezenas de ACs cre-

denciadas, quase uma centena de ARs credenciadas e o CG. Este grupo e a autoridade gestora

de polıticas e e composto por representantes de orgaos publicos e da sociedade civil.

“A ICP-Brasil tem objetivos muito diferentes da ICP-EDU. A ICP-Brasil foiconcebida e esta sendo montada para ser utilizada no governo brasileiro etambem por qualquer instituicao externa que com ele queira se comunicarpor via eletronica de forma segura. Os certificados digitais emitidos pelaICP-Brasil deverao ter valor jurıdico em eventuais disputas envolvendo seususuarios.”(ROCHA, 2004).

2.5.6 INFRA-ESTRUTURA DE CHAVES PUBLICAS PARA PESQUISA E ENSINO (IC-PEDU)

Projeto idealizado em 2003 pela RNP, segundo Custodio (2004) a ICPEDU tem como ob-

jetivo principal a criacao das condicoes necessarias para implantacao de uma ICP no ambito

academico. Assim, as instituicoes academicas poderao emitir seus proprios certificados digitais

para suas aplicacoes internas, tais como sistemas de controle academico, acesso a base de dados

e pesquisa e ensino de seguranca computacional.

Os principais resultados, ate o momento, foram o desenvolvimento de um SGC denominado

Sistema de Gerenciamento do Ciclo de Vida de Certificados Digitais da ICPEDU, o desenvol-

vimento de um Modulo de Hardware Criptografico — do ingles Hardware Security Module

(HSM) — e o entendimento das polıticas e boas praticas de certificacao.

Atualmente ele e desenvolvido numa parceria entre as equipes do Laboratorio de Seguranca

em Computacao (LabSEC) da Universidade Federal de Santa Catarina (UFSC), Laboratorio de

Criptografia Aplicada (LCA) da Universidade Estadual de Campinas (Unicamp), Laboratorio

de Computacao Cientıfica (LCC) da Universidade Federal de Minas Gerais (UFMG), Insti-

tuto de Computacao da Universidade Federal Fluminense (UFF), o Laboratorio Nacional de

Computacao Cientıfica (LNCC) e a RNP.

Page 33: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

32

2.6 SISTEMA DE GERENCIAMENTO DO CICLO DE VIDA DE CERTI-FICADOS DIGITAIS DA ICPEDU (SGCI)

2.6.1 VISAO GERAL

Para a conclusao de uma das etapas do projeto ICPEDU, era necessario desenvolver um soft-

ware para a operacao e a gestao confiavel de uma ICP voltada ao meio academico. Com este in-

tuito foi idealizado o SGCI. Este software deve ser capaz de gerenciar uma infra-estrutura de cer-

tificados digitais X.509 ao longo de todo o seu ciclo de vida (emissao, publicacao, revogacao).

Segundo (CUSToDIO, 2004), um dos principais requisitos para o SGCI e a sua total implementacao

em software livre. Existiam varias solucoes prontas, tais como OpenCA(OPENCA. . . , 2007)

e NewPKI(GIUDICELLI, 2007), porem elas nao proviam todas as funcionalidades desejadas,

nao previam todas as aplicacoes e nao eram flexıveis o suficiente.

Segundo Custodio (2006), algumas aplicacoes previstas para este software seriam:

• Internas as universidades:

– controle no uso compartilhado dos recursos internos

– eliminacao do papel nos tramites burocraticos

∗ controle academico seguro

• Entre universidades ligadas a RNP:

– eliminacao do papel nos tramites burocraticos

∗ comunicacao com garantia de autenticidade

∗ privacidade nas comunicacoes de dados

– uso compartilhado seguro dos recursos disponıveis

Segundo Custodio (2004) Os componentes desta ICP serao:

• Sistema Gestor;

• Diretorio publico;

• Modulo publico.

Estes componentes serao detalhados nas secoes seguintes.

Page 34: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

33

SISTEMA GESTOR

O Sistema Gestor e o software que realiza todas as operacoes de uma entidade. O Sistema

Gestor pode ser dividido em tres modulos:

• Modulo de Gerenciamento – Neste modulo sao criadas as entidades, os administrado-

res (usuarios responsaveis pelo modulo administrativo) e definidas as configuracoes (por

exemplo configuracoes do HSM). Este modulo tambem e o responsavel pelas operacoes

de backup e exportacao de logs.

• Modulo Administrativo – Este modulo e responsavel pela parte administrativa das en-

tidades. Aqui sao configurados as relacoes de confianca, as polıticas e adicionados os

operadores (usuarios responsaveis pelo modulo operacional).

• Modulo Operacional – Este modulo e responsavel pelos processos operacionais das enti-

dades. Os processos suportados pelo modulo sao:

– Gerenciamento de requisicoes (aprovacao e rejeicao);

– Revogacao de certificados;

– Emissao de certificados e LCRs.

DIRETORIO PUBLICO (DP)

Diretorio Publico (DP) e um “banco de dados especializado em pesquisas simples que prove

certificados e LCRs quando solicitado. Consiste em um sistema, conhecido pelo seu endereco e

pelo protocolo de acesso.” (CUSToDIO et al., 2005). Um DP em uma ICP tem como principal

funcao armazenar e disponibilizar “certificados e LCR’s para qualquer requerente. Consiste em

um sistema robusto, escalavel e on-line conhecido pelo seu endereco e pelo protocolo de acesso.

Um diretorio publico nao fornece nenhum tipo de seguranca em relacao aos dados armaze-

nados. Ele nao e uma entidade confiavel. Por este motivo, os certificados e LCRs sao assinados

por alguma AC confiavel. Os dados devem sempre estar atualizados e com um alto nıvel de

disponibilidade.

MODULO PUBLICO (MP)

O Modulo Publico (MP) ”e um sistema para solicitacao on-line de certificados, disponıvel

aos usuarios finais das ACs. O MP dispara procedimentos para geracao do par de chaves e da

requisicao do usuario e encaminha esta para uma determinada AR.“ (CUSToDIO et al., 2005).

Page 35: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

34

Depois que o usuario insere seus dados e faz o pedido, o MP encaminha uma requisicao

para uma AR. E verificado se a requisicao e valida e se existe relacao de confianca entre a AC

e a AR definida pelo usuario. Passado por esta etapa, a requisicao e inserida para ser analisada

pela AR.

2.6.2 SISTEMA DE GERENCIAMENTO DO CICLO DE VIDA DE CERTIFICADOS DI-GITAIS DA ICPEDU (SGCI) VERSAO 1.2.0

O SGCI 1.2.0 foi desenvolvido utilizando os seguintes softwares livres: PHP (PHP. . . , 200-

), Apache (APACHE, 200-), PostgreSQL (POSTGRESQL, 200-), OpenSSL (OPENSSL, 200-)

e OpenLDAP (OPENLDAP, 200-).

Este software foi dividido em tres modulos. Cada modulo e suas respectivas funcoes sao

descritas a seguir:

• Modulo Criador: Segundo Custodio et al. (2005), o modulo criador e responsavel pela

disponibilizacao das entidades a serem gerenciadas pelo gestor e a designacao dos usuarios

administradores para estas. Alem destas funcoes, este modulo possui suporte ao geren-

ciamento de usuarios e administradores. Os seguintes tipos de entidades podem ser ge-

renciadas: ACs e ARs. Gerenciar estas envolve o processo de criacao e integracao das

mesmas.

• Modulo AC: Este modulo e responsavel pelas funcionalidades competentes a uma AC.

Ele e dividida em duas areas:

– Administracao: competem a esta parte do modulo a definicao de polıticas, o controle

dos relacionamentos de confianca, cadastramento de modelos de certificado e de

extensoes para os certificados e o gerenciamento de operadores.

– Operacao: esta parte do modulo e responsavel pelo gerenciamento de emissao e

revogacao.

• Modulo AR: Este modulo e responsavel pelas funcionalidades competentes a uma AR.

Ele e dividida em duas areas:

– Administracao: competem a esta parte do modulo o controle dos relacionamentos

de confianca e o gerenciamento de operadores.

– Operacao: esta parte do modulo e responsavel requisitar a revogacao de certificados

e por avaliar as requisicoes recebidas, aprovar e encaminhar para a AC de destino

ou rejeita-la.

Page 36: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

35

3 TECNOLOGIAS UTILIZADAS

Neste capıtulo serao apresentadas as tecnologias utilizadas durante o desenvolvimento deste

trabalho.

3.1 SUBVERSION (SVN)

“Subversion e um sistema de controle de versao livre/open-source”(COLLINS-SUSSMAN;

FITZPATRICK; PILATO, 2004), o qual permite que varias pessoas trabalhem em um mesmo

software. Estas podem trabalhar simultaneamente em arquivos diferentes, ou no mesmo ar-

quivo (em partes diferentes deste arquivo). O SVN faz o controle das edicoes feitas, deixando

os usuarios livres da tarefa de mesclar o resultado final. Estes arquivos ainda podem estar loca-

lizados remotamente em algum servidor, deixando o usuario livre para editar o documento em

qualquer lugar que possua acesso ao servidor.

O SVN mantem um registro de eventos para controle das versoes do arquivo (a cada

alteracao feita, uma nova versao e criada). Neste log e registrado quando e por quem foi modi-

ficado o arquivo. “[. . . ]se alguma mudanca incorreta e feita nos dados, simplesmente desfaca

essa mudanca.”(COLLINS-SUSSMAN; FITZPATRICK; PILATO, 2004).

Esta ferramenta foi escolhida por motivo deste trabalho ser um trabalho colaborativo, cri-

ando a necessidade de algum software para fazer a gestao das modificacoes.

3.2 TRAC

TRAC e uma ferramenta open-source de interface World Wide Web (WEB) para monito-

ramento de mudancas em projetos de desenvolvimento de software. Ele oferece os seguintes

servicos:

• Controle de mudancas - responsavel por registrar as mudancas efetuadas no sistema. Para

isto existe o ticket, responsavel por conter os registros de defeitos, pedidos de melhorias

e tarefas do projeto.

Page 37: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

36

• Wiki - permite a edicao coletiva do conteudo de um documento disponıvel na WEB. E

utilizado para a documentacao e referencia cruzada entre os elementos do TRAC.

• Integracao com o Subversion - funciona como um navegador do repositorio do SVN,

permitindo a visualizacao da estrutura de diretorios, logs de mudancas, diferencas entre

as revisoes, entre outros.

• Acompanhamento da evolucao do projeto - possibilita a obtencao de informacoes sobre a

evolucao do projeto. Estas informacoes sao disponibilizadas em diversas formas, dentre

elas: roadmap, timeline, RSS e relatorios.

Maiores informacoes podem ser encontradas em (TRAC, 2007).

3.3 PHP: HYPERTEXT PREPROCESSOR

Nesta secao serao apresentados os benefıcios que foram ganhos, devido a escolha da lin-

guagem de programacao PHP: Hypertext Preprocessor (PHP).

“PHP, que significa ‘PHP: Hypertext Preprocessor’, e uma linguagem de programacao de

ampla utilizacao[. . . ]”(ACHOUR et al., 2007). Atraves desta afirmacao e possıvel concluir que

a probabilidade de serem encontrados problemas durante a construcao do SGCI e muito pe-

quena. Isto acontece devido a linguagem estar sendo utilizada intensamente por varias pessoas,

e consequentemente, varios problemas ja foram detectados e resolvidos.

“A melhor coisa em usar PHP esta no fato de ele ser extremamente simples para um inici-

ante, mas oferece muitos recursos para o programador profissional.”(ACHOUR et al., 2007). A

facilidade de aprendizado da linguagem PHP e um consenso entre a maioria dos profissionais

da area.

O software a ser construıdo neste trabalho, tem como um dos requisitos funcionar de ma-

neira distribuıda (mais detalhes serao dados no decorrer do trabalho). Este e mais um motivo

para a escolha da linguagem PHP, pois esta e uma linguagem voltada para a WEB, onde todo

o processamento e feito no servidor, e o resultado enviado ao cliente, como demonstrado na

Figura 4.

“Apesar do desenvolvimento do PHP ser focado nos scripts do lado do servidor, voce pode

fazer muito mais com ele.”(ACHOUR et al., 2007).

Outro requisito para o software desenvolvido neste trabalho, e que o software devera ser

suportado pela maioria dos sistemas operacionais.

Page 38: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

37

Figura 4: Funcionamento das paginas PHP.(ALVAREZ, 2005)

“O PHP pode ser utilizado na maioria dos sistemas operacionais, incluindo Li-nux, varias variantes Unix (incluindo HP-UX, Solaris e OpenBSD), MicrosoftWindows, Mac OS X, RISC OS, e provavelmente outros. O PHP tambem esuportado pela maioria dos servidores web atuais, incluindo Apache, Micro-soft Internet Information Server, Personal Web Server, Netscape and iPlanetServers, Oreilly Website Pro Server, Caudium, Xitami, OmniHTTPd, e muitosoutros.” (ACHOUR et al., 2007).

A diversidade de escolha de servidores, facilita a tarefa de deixar o software o mais robusto

e enxuto possıvel, sem perder a portabilidade.

“Com o PHP, portanto, voce tem a liberdade para escolher o sistema operacional e o ser-

vidor WEB. Do mesmo modo, voce pode escolher entre utilizar programacao estrutural ou

programacao orientada a objeto, ou ainda uma mistura deles.” (ACHOUR et al., 2007).

“O PHP tambem tem suporte para comunicacao com outros servicos utilizando protoco-

los como LDAP, IMAP, SNMP, NNTP, POP3, HTTP, COM (em Windows) e incontaveis ou-

tros.”(ACHOUR et al., 2007). O suporte ao protocolo LDAP sera necessario para o desenvolvi-

mento do software deste trabalho.

Com tantos benefıcios, nao restaram duvidas na hora de optar por esta linguagem de programacao.

3.4 ZEND FRAMEWORK

Zend Framework e um framework de codigo aberto que prove recursos para desenvolver

programas utilizando PHP. “O framework foi construıdo baseando-se nas princıpios de simpli-

Page 39: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

38

cidade, boas praticas de orientacao a objetos [. . . ] e testes rigorosos[. . . ]”(WHY. . . , 2007).

Este framework traz uma imensa biblioteca que fornece solucoes robustas e seguras para

trabalhar com desenvolvimento de aplicacoes voltadas para a WEB. As principais partes utili-

zadas desta biblioteca foram:

• Padrao de projeto Model-View-Control (MVC) (GAMMA et al., 1995) – Com este padrao

de projeto o sistema fica dividido em 3 camadas:

– Modelo (Model) – “O Modelo representa o domınio do conhecimento”(REENSKAUG,

2007), “contem todos os dados, estados e a logica da aplicacao”(FREEMAN et al.,

2004).

– Visualizacao (View) – Segundo Reenskaug (1979), a Visualizacao e a representacao

visual do modelo. Ela destaca certos atributos do modelo, e suprimem outros, atu-

ando como uma especie de filtro de apresentacao.

– Controlador (Controller) – Freeman et al. (2004) diz que o controlador e quem re-

cebe as entradas do usuario, transforma elas em mensagens apropriadas e repassa ao

modelo.

Segundo Reenskaug (2007), criador do padrao MVC, a parte mais difıcil de seu trabalho

foi dar bons nomes para os componentes do padrao.

• Abstracao do banco de dados – O framework e quem se preocupa com a comunicacao

com o banco de dados. Ele utiliza o padrao de projeto Adaptador (Adapter) (GAMMA

et al., 1995) para fazer o controle do banco de dados. Assim nao ha diferencas entra a

utilizacao de diferentes bancos de dados. Basta configurar o banco de dados na biblio-

teca, e utilizar as funcoes da biblioteca para fazer consultas. Se algum tempo depois, for

necessario trocar o banco de dados, basta alterar as configuracoes da biblioteca, e tudo

estara funcionando perfeitamente. Nenhuma linha do codigo da aplicacao precisara ser

alterada.

• Suporte a internacionalizacao – Com o processo de globalizacao, e necessario desenvol-

ver softwares que possam ser utilizados por varias culturas. Para este que sera proposto,

nao sera diferente.

Page 40: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

39

3.5 OPENSSL

“OpenSSL e uma biblioteca de codigo aberto, que implementa as principais funcoes de

criptografia e os protocolos SSL e TLS”(OPENSSL, 200-). Esta biblioteca e uma das mais

robustas, conhecidas e utilizadas entre os desenvolvedores de software livre.

Ela pode ser dividida em 3 partes essenciais:

• Biblioteca SSL – A primeira parte da biblioteca, que implementa as funcoes basicas do

protocolo SSL.

• Biblioteca de Criptografia – A segunda parte implementa as funcoes de criptografia.

• Linha de Comando – Junto com a biblioteca existe um utilitario que, atraves da linha de

comando, possibilita a execucao de todas as funcoes da biblioteca.

Por esta biblioteca ser largamente utilizada na comunidade, foi a escolhida. Esta biblioteca

e quase como um “padrao” no desenvolvimento de softwares de seguranca.

3.6 PHPUNIT

O PHPUnit e um framework de codigo aberto, que auxilia na criacao e execucao automatica

de testes sobre classes PHP. Ele e um membro da famılia de frameworks de testes xUnit. Se-

gundo Bergmann (2007) os membros desta famılia proveem um frameworks para tornar o de-

senvolvimento de testes de unidade e a execucao destes, mais faceis, alem de poder analisar os

resultados. Eles foram baseados no projeto de Kent Beck. Segundo Beck (1995), o primeiro

membro foi o SUnit, implementado para Smalltalk, mas agora esta disponıvel para diversas

plataformas de desenvolvimento e diversas linguagens de programacao, tais como Java (JUnit),

C++ (CUnit) e PHP (PHPUnit).

Segundo Bergmann (2006), os principais benefıcios que o PHPUnit fornece sao:

• ambiente de testes reusavel;

• estrita separacao entre codigo produzido e codigo dos teste;

• execucao automatica dos codigos de testes;

• analise dos resultados;

Page 41: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

40

• facil de aprender e utilizar.

Segundo Bergmann (2007), os principais usuarios do PHPUnit sao: Agavi, Creole, eZ

Components, PHP-GTK2, PHPUnit, Phing, Propel, Serendipity, Service Data Object (SDO) e

Zend Framework.

Como um dos requisitos do SGCI 2.0.0 e que o software deve ser autotestavel, foi utilizado

este framework para ajudar, e diminuir o trabalho de implementacao dos testes.

3.7 XDEBUG

XDebug e uma extensao de codigo aberto que ajuda na depuracao de aplicacoes PHP. Se-

gundo (XDEBUG. . . , 2007), a depuracao XDebug pode fornecer informacoes que inclui o se-

guinte:

• stack traces e function traces em mensagens de erro com:

– exibicao de todos os parametro para funcoes definidas pelo usuario

– nome da funcao, o nome do arquivo e indicacoes da linha

– suporte a funcoes membro

• alocacao de memoria;

• protecao contra recursoes infinitas.

Page 42: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

41

4 EVOLUCAO DO SISTEMA

4.1 MELHORIAS EFETUADAS NA VERSAO 1.3.0

Nesta secao serao apresentadas as melhorias efetuadas na versao 1.3.0 do SGCI.

As principais funcionalidades adicionadas ao sistema foram:

• Suporte a HSM – O suporte a HSM aumenta a seguranca nas operacoes criptograficas

realizadas. Isto ocorre devido ao acesso a chaves privadas ser controlado por hardware.

Assim, as operacoes devem ser executadas pelo HSM. A confianca na seguranca e movida

para a confianca depositada no fabricante do HSM. O SGCI ainda oferece suporte para

trabalhar com diferentes HSMs ao mesmo tempo.

• Copia de seguranca (backup) – O suporte a copias de seguranca foi adicionado ao SGCI.

Se as chaves privadas das entidades, estiverem gravadas em disco (e nao em HSM), estas

sao colocadas junto com todos os outros dados do sistema na copia de seguranca. Nao

ha problema nisto, pois a copia de seguranca e cifrada. Uma vez cifrada, so pode ser

decifrada por pessoas autorizadas. Tambem foi adicionado suporte a restauracao da copia

de seguranca. Quando uma copia e restaurada, todos os dados do sistema sao substituıdos.

• Registro de eventos (logs) – Foi adicionado suporte ao registro dos eventos do sistema, e

a exportacao destes. Esta funcionalidade e muito util, e necessaria para auditoria de ICPs.

• Removido a comunicacao remota entre entidades – Foram removidos os acessos aos ar-

quivos do sistema remotamente. O SGCI versao 1.2.0 fazia chamadas remotas para auto-

matizar a comunicacao (enviar requisicoes e respostas) entre entidades que estivessem

em diferentes computadores. A maneira como esta automatizacao estava implemen-

tada, deixava margem para muitos ataques ao sistema. No SGCI versao 1.3.0 e 2.0.0,

as comunicacoes entre entidades serao todas manuais.

• Importacao de requisicoes – No SGCI versao 1.2.0, caso a comunicacao remota entre

as entidades falhasse, nao haveria como fazer a comunicacao de maneira manual. A

automatizacao das comunicacoes entre as entidades foi removida no SGCI versao 1.3.0.

Page 43: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

42

Estes dois motivos causaram a necessidade de criar funcoes para importar manualmente

requisicoes e respostas as requisicoes. Foram adicionadas funcoes nas entidades do tipo

AC, para importar requisicoes de certificado e requisicoes de revogacao de certificados

e, alem disto, foram adicionadas funcoes de importacao de respostas de requisicoes nas

entidades do tipo AR.

• Plano de testes – Durante o estudo do SGCI 1.2.0, percebeu-se que nao havia uma

documentacao com o comportamento desejado das funcionalidades do sistema. Foi entao

criado um plano de testes, o qual serviu tanto para testar, quanto para descrever o compor-

tamento esperado das funcoes do sistema. O objetivo inicial destes testes foi encontrar o

maior numero de erros possıveis. Porem acabou servindo como uma documentacao sobre

as funcionalidades do SGCI 1.3.0.

O SGCI 1.3.0 possuıa alto acoplamento e baixa coesao1 entre as suas funcoes. Uma funcao

era modificada, e varias outras eram afetadas! Quando as ultimas funcionalidades foram adici-

onadas, perdeu-se mais tempo arrumando as partes do codigo fonte “afetadas”, do que imple-

mentando a nova funcionalidade.

Este foi um dos fatores fundamentais para iniciar o projeto de uma nova versao, sem reuti-

lizar a versao anterior.

4.2 ANALISE E PROJETO DA VERSAO 2.0.0

Abaixo e demonstrada a ultima etapa do trabalho: propor uma nova versao para o SGCI.

4.2.1 ANALISE DE REQUISITOS DO SGCI VERSAO 2.0.0

No decorrer dos estudos feitos sobre SGCI versao 1.3.0 , foi observado a necessidade das

funcionalidades que deveriam ser suportadas por um bom SGC. Algumas destas funcionalida-

des foram implementadas nesta mesma versao do sistema, como descritas na secao 4.1. Mas

para a implementacao de algumas funcionalidades, muito tempo teria de ser despendido. Um

exemplo disto seria o desenvolvimento de uma camada de persistencia do banco de dados para

melhorar a clareza e facilitar a manutencao do codigo. Outra funcionalidade que despenderia

muito tempo seria o suporte a autenticacao utilizando-se smart cards.

Atraves deste estudo, foi visto que a transferencia do codigo-fonte do sistema para instrucoes

de maquina nao traria benefıcios para o sistema, por exemplo, em relacao a seguranca. A1Os conceitos de acoplamento e coesao podem ser encontrados em (LARMAN, 2005)

Page 44: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

43

solucao adotada foi a de reorganizacao da estrutura do sistema atual, a fim de melhorar a

seguranca e possibilitar a adicao das funcionalidades que nao sao suportadas pela versao 1.3.0.

Para tanto, foi desenvolvido um documento que define todos os requisitos para o SGCI

versao 2.0.0. Alguns destes requisitos sao os mesmos encontrados na versao 1.3.0, tais como:

• Utilizacao de software livre;

• Suporte a HSM;

• Suporte a backup;

• Suporte a exportacao de log.

Os outros foram adicionados com a experiencia adquirida nos estudos efetuados sobre o

SGCI 1.3.0. Sao alguns deles:

• Utilizar Programacao Orientada a Objetos (POO);

• Utilizar boas praticas de POO;

• Ser modular;

• Ser portavel;

• Ser robusto;

• Auditabilidade dos processos;

• Suporte a autenticacao com certificado digital;

• Suporte a dois modelos de transacao: requerente → ar → ac e requerente → ac;

• Possuir um script de instalacao e outro de inicializacao do sistema;

• Possuir um completo tratamento de erros;

• Testes automatizados;

• Possuir boa documentacao;

• Possuir um sistema de Ajuda (Help);

• Ter suporte a certificados EV SSL;

Page 45: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

44

• Internacionalizacao do sistema.

Tambem foi desenvolvido um documento que consta uma possıvel estrutura para o sistema.

Este documento, assim como o documento de requisitos definidos para o SGCI versao 2.0.0,

podem ser encontrados no apendice B.

4.2.2 CASOS DE USO DO SGCI VERSAO 2.0.0

Utilizando como base os requisitos e as funcionalidades do SGCI 1.3.0, foram desenvol-

vidos os casos de uso do novo SGCI. Estes casos de uso podem ser encontrados no apendice

C.

Neste documento sao descritas as funcionalidades deste SGC. Ele e dividido em cinco

modulos:

• Casos de Uso do perfil Criador;

• Casos de Uso do perfil Administrador de AC;

• Casos de Uso do perfil Administrador de AR;

• Casos de Uso do perfil Operador de AC;

• Casos de Uso do perfil Operador de AR.

E o perfil de usuario Criador que cadastra e exclui ACs, ARs, administradores e HSMs,

alem de emitir relatorios sobre o sistema, gerenciar backups e efetuar a transferencia de base de

historicos.

Um usuario administrador de uma AC e responsavel pelos modelos de certificado e ex-

tensoes de certificados, pelo gerenciamento de relacoes de confianca e pelos Operadores. O ad-

ministrador de uma AR tem como responsabilidades o gerenciamento de relacoes de confianca

e o gerenciamento de operadores.

O operador de AC e responsavel por rejeitar requisicoes de certificados, emitir e revogar

certificados, gerar e publicar LCRs. O Operador de AR tem como responsabilidade a aprovacao

ou rejeicao de requisicoes alem de solicitar a revogacao de certificados.

Assim sendo, grande parte destes casos de uso descrevem o gerenciamento do ciclo de vida

de certificados digitais e o gerenciamento dos utilizadores deste sistema.

Page 46: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

45

4.2.3 BIBLIOTECA DE SEGURANCA

O SGCI 2.0.0 possui um requisito muito importante, a maior modularidade possıvel para o

sistema. Para atender a este requisito, foi criado uma biblioteca para as funcoes de seguranca

(criptografia, manipulacao de certificados, etc). Os detalhes dessa biblioteca serao discutidos a

seguir.

REQUISITOS DA BIBLIOTECA

A biblioteca foi projetada tendo como requisitos:

• Utilizar POO;

• Utilizar boas praticas de POO;

• Ser o mais flexıvel possıvel (modularidade) – Qualquer parte da biblioteca podera ser

substituıda sem a necessidade de modificar o codigo do programa que utiliza a biblioteca;

• Robustez – A biblioteca deve tratar todas as possıveis excecoes, e funcionar sobre as

piores condicoes possıveis;

• Seguir as recomendacoes da RFC3280(HOUSLEY et al., 2002) e da RFC4210(ADAMS

et al., 2005);

• Testes automatizados – A biblioteca deve possuir testes automaticos, para todas as suas

funcionalidades;

• Documentacao – A biblioteca deve estar totalmente documentada (requisitos, casos de

uso, codigo-fonte, diagrama de classes, etc).

Segundo Meyer (1997), a programacao orientada a objetos foi desenvolvida apos a crise

de software (ocorrido durante as decadas de 60 e 70), para aumentar a qualidade e diminuir a

complexidade dos programas, enfatizando a modularidade e a reusabilidade de software.

Atraves das boas praticas de programacao, consegue-se:

• Aumentar a legibilidade do codigo – O codigo fica mais limpo e organizado;

• Baixo acoplamento entre as partes do programa – Cada parte comunica-se o mınimo

possıvel para realizar sua tarefa, ficando independente das outras partes;

Page 47: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

46

• Alta coesao entre os componente do programa – Cada componente e especializado em

executar a sua funcao;

• Vasta documentacao – A documentacao e essencial para quem vai fazer a manutencao do

sistema;

• Facilidade de manutencao do programa – Com o codigo organizado, documentado, com

baixo acoplamento e alta coesao, ganha-se facilidade na manutencao do programa.

Benefıcios em utilizar essa biblioteca no SGCI:

• Facilidade da manutencao;

• Como a biblioteca e totalmente modularizada, e facil estende-la para adicionar novas

funcionalidades;

• Total controle sobre uma AC, o controle nao e feito pelo OpenSSL como na versao 1.3.0;

• A biblioteca foi implementada segundo a padronizacao definida na RFC3280(HOUSLEY

et al., 2002) e RFC4210(CHOWDHURY; YEGANI; MADOUR, 2005);

• Foram criadas fachadas para facilitar comunicacao entre o SGCI e a biblioteca.

PROJETO E DESENVOLVIMENTO DA BIBLIOTECA

Apos os casos de uso do SGCI definidos, foi dado inıcio ao projeto da biblioteca. Inicial-

mente a biblioteca foi desenvolvida em apenas um diagrama de classes, porem com o tempo o

diagrama aumentou demasiadamente. Para facilitar a visualizacao, este diagrama foi divido em

tres modulos:

1. Certificacao – Funcoes relacionadas com certificados digitais;

2. Criptografia – Funcoes relacionadas com criptografia;

3. Utilidades – As funcoes que nao puderam ser categorizadas nos dois modulos anteriores.

MODULO DE CERTIFICACAO DIGITAL Como ja explicitado anteriormente, este

modulo e o responsavel pelas funcoes relacionadas com certificados digitais. Este modulo foi

separado em grupos, conforme descrito na Tabela 1.

Page 48: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

47

Grupo FuncaoCertificado Manipulacao de certificados digitais

Lista de Certificados Revogados Manipulacao de LCRsExtensoes Extensoes de certificados e LCRs

Requisicoes de Certificado Criacao de requisicoes de certificadosPadroes de Certificados Modelos de certificados, com alguns campos pre-definidos

Identificadores de Objetos Atribuicao dos identificadores padroes dos objetosRDNSequence Tipo RDNSequence da RFC3280(HOUSLEY et al., 2002)

Tabela 1: Agrupamento das classes do Modulo de Certificacao Digital

A Figura 5 apresenta o relacionamento entre os grupos. As linhas contınuas representam

um relacionamento obrigatorio, enquanto que as linhas tracejadas representam um relaciona-

mento nao obrigatorio. O diagrama considera os relacionamentos em tempo de execucao. Por

exemplo, um certificado pode ou nao conter extensoes. Se ele tiver, havera uma relacao entre

os grupos Certificado e Extensoes.

Figura 5: Relacionamento entre os grupos do Modulo de Certificacao Digital da biblioteca

O ciclo de vida de um certificado digital inicia pela requisicao de certificado, normalmente

efetuado pelo usuario. Vamos partir deste ponto para falar sobre a biblioteca.

Uma requisicao de certificado no SGCI e um arquivo em formato PKCS #10(Rsa Labora-

tories, 2000), contendo:

• Os dados do sujeito com os campos que serao preenchidos no certificado (nome comum,

organizacao, cidade, etc.);

• A chave publica do sujeito;

• As extensoes que serao adicionadas ao certificado;

Page 49: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

48

• A funcao resumo dos itens anteriores, assinada com a chave privada do sujeito

A figura 6 demonstra uma requisicao de certificado. Nela e possıvel ver o processo de

assinatura da requisicao. Primeiro e calculado a funcao resumo da uniao dos dados do sujeito,

da chave publica e das extensoes. Essa funcao e cifrada utilizando a chave privada do sujeito, e

anexada a requisicao.

Figura 6: Requisicao de Certificado

Para verificar a autenticidade, primeiro e calculado a funcao resumo da requisicao (sem a

assinatura final), depois se utiliza a chave publica contida na requisicao para decifrar a funcao

resumo que esta na requisicao. Comparam-se os dois resultados, se forem iguais, a requisicao

nao foi alterada e a chave publica e a correspondente da privada. Atraves deste processo tambem

e comprovado que o sujeito possui acesso a chave privada.

Para criar uma requisicao de certificado na biblioteca, utiliza-se o padrao de projeto Builder

(GAMMA et al., 1995). Primeiro sao setados os valores dos campos que serao preenchidos no

certificado, depois adicionadas as extensoes, e por ultimo a requisicao e assinada.

A Figura 7 apresenta o diagrama de classes do grupo Requisicoes de Certificado. No dia-

grama, pode-se verificar que ha duas interfaces:

• CertificateRequest – Responsavel pelas requisicoes de certificados.

• CertificateRequestBuilder – Padrao de projeto Builder, utilizado para criar requisicoes de

certificado.

Figura 7: Diagrama de Classes do grupo Requisicoes de Certificado

Page 50: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

49

Do ponto de vista do programador, para se criar uma requisicao, primeiro sao definidos

os dados da requisicao atraves dos metodos sets. Depois e chamado o metodo sign com os

parametros:

• privateKey – A chave privada para assinar a requisicao. A chave privada do requerente

do certificado.

• hashAlgorithm – O algoritmo que sera utilizado para calcular a funcao resumo do certi-

ficado. Pode ser MD2, MD4, MD5, SHA, SHA1, SHA224, SHA256, SHA384, SHA512,

RIPEMD160.

• extraArgs – Este parametro foi criado para caso seja necessario adicionar mais algum

parametro. Atualmente nao esta em uso.

O metodo sign retorna um objeto do tipo CertificateRequest, que representa uma requisicao

de certificado digital.

O proximo passo e enviar esta requisicao a uma entidade, que ira inspecionar a requisicao

e depois emitir o certificado. Para esta etapa, existem dois modelos comumente utilizados:

• Modelo de transacao de duas partes (Figura 8) – A requisicao e enviada a uma Autoridade

Certificadora, esta confere a requisicao e depois emite o certificado

• Modelo de transacao de tres partes (Figura 9) – Neste modelo, a requisicao pode ser

gerada pelo sujeito ou pela propria AR. Se a requisicao for gerada pelo sujeito, a AR

confere os dados da requisicao (podendo esta requerer comprovacao da identidade do

sujeito). No caso da AR ser a geradora da requisicao, e comum haver a necessidade do

requerente se apresentar pessoalmente. Apos a requisicao gerada e aprovada pela AR,

esta assina digitalmente a requisicao e envia a Autoridade Certificadora. A AC emite o

certificado e envia uma resposta de confirmacao para a AR. A AR notifica o sujeito que o

seu certificado esta pronto (na notificacao pode constar o certificado). Quando emitido, o

certificado normalmente e publicado em um diretorio publico.

UsuárioAutoridade

Certif icadora

Requisição de certif icado

Certif icado assinado

Figura 8: Modelo de transacao de duas partes (VIGIL, 2007)

Page 51: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

50

Usuário AR AC

Apresenta-se pessoalmente: solicita um certif icado

Requisição assinada

Resposta assianda

Certif icado

Figura 9: Modelo de transacao de tres partes (VIGIL, 2007)

Nesta fase do ciclo de vida do certificado, a biblioteca e utilizada apenas na assinatura da

requisicao. Isto e feito utilizando-se o modulo de criptografia da biblioteca (mais informacoes

ver na pagina 59).

No SGCI, toda a comunicacao entre as entidades sera feito de acordo com a RFC4210(ADAMS

et al., 2005), a qual estabelece certas estruturas. Como nao existe um formato padrao (como

por exemplo PKCS#10 para requisicao de certificados), este formato foi simulado utilizando-se

arquivos Extensible Markup Language (XML) (W3C, 2007).

Quando a requisicao e entrega a AC, e hora de emitir o certificado. Uma AC ao emitir

um certificado, pode adicionar ou remover campos da requisicao. Por exemplo, uma AC pode

pegar uma requisicao, adicionar algumas extensoes e depois emitir o certificado. Tambem pode

substituir algum dos campos da requisicao se quiser. Estes procedimentos normalmente estao

descritos na DPC da AC.

Veja um exemplo pratico. Segundo AGP (2007), na ICPEDU inteira, os certificados deverao

conter os valores nos seguintes campos:

• Emissor e Titular. Cada um deles com os seguintes campos:

– C = Sigla “BR”;

– O = ICPEDU;

• Extensao Certificate Policies:

– userNotice = “Os certificados da ICPEDU sao para uso exclusivo por instituicoes

brasileiras de ensino e pesquisa, e nao tem eficacia juridica.”

Para estes campos com valores fixos, poderia ser criado um modelo de certificado, e estes

so precisariam ser digitados uma vez.

A biblioteca prove suporte a combinacoes de todas as opcoes explicadas anteriormente.

Para criar um certificado utiliza-se, como na requisicao de certificado, o padrao de projeto

Page 52: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

51

Builder. Inicialmente setam-se os valores dos campos, apos se adicionam as extensoes, e por

ultimo o certificado e assinado com a chave privada da entidade emissora do certificado.

Se houver uma requisicao, os dados dos campos da requisicao sao passados para o Buil-

der do certificado. Depois a AC emissora adiciona extensoes ou altera campos, conforme ne-

cessario. E por ultimo, o certificado e emitido.

Primeiro sera explicado como funciona a leitura de um certificado existente, e depois sera

explicado como criar um certificado utilizando-se o padrao de projeto Builder.

O grupo Certificado e formato por duas interfaces: Certificate e CertificateBuilder. A pri-

meira interface representa um certificado e possui no seu construtor dois parametros (o segundo

parametro e opcional). O primeiro parametro, data, sao os dados de um arquivo. O segundo

parametro e o formato do arquivo do certificado (PEM ou DER). Se o segundo parametro nao

for especificado, e utilizado como padrao o formato PEM. A classe pega os dados, le eles no

formato especificado, e seta os atributos. Depois, os dados do certificado podem ser acessados

atraves dos metodos gets.

Figura 10: Diagrama de Classes do grupo Certificado

Para criar um novo certificado, utiliza-se a classe CertificateBuilder, a qual utilizada o

padrao de projeto Builder. Primeiro entra-se com os dados do novo certificado, atraves dos

metodos sets. As extensoes do certificados sao adicionadas uma a uma utilizando o metodo

addExtension. Tambem podem ser adicionadas multiplas extensoes atraves do metodo addEx-

tensions.

Apos os dados do certificado serem setados, utiliza-se o metodo sign para assinar o certifi-

cado. Este metodo precisa dos seguintes parametros:

• privateKey – A chave privada para assinar o certificado. Normalmente a chave privada de

uma AC.

Page 53: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

52

Posicao Funcao0 digitalSignature1 nonRepudiation2 keyEncipherment3 dataEncipherment4 keyAgreement5 keyCertSign6 cRLSign7 encipherOnly8 decipherOnly

Tabela 2: Nomenclatura dos bits do valor da extensao Key Usage

• hashAlgorithm – O algoritmo que sera utilizado para calcular a funcao resumo do certifi-

cado.

• template – Este e um parametro opcional. Pode ser passado um objeto do grupo Padroes

de Certificados. (O funcionamento destes modelos de certificados, serao detalhados a

diante).

• extraArgs – Este parametro, tambem opcional, foi criado para caso necessario adicionar

mais algum parametro. Atualmente nao esta em uso.

O metodo sign retorna um objeto do tipo Certificate (um certificado digital).

A classe CertificateBuilder possui um construtor com um parametro opcional, o request.

Este parametro e uma requisicao de certificado. Caso este parametro for especificado, os dados

do certificado sao extraıdos automaticamente da requisicao.

Os certificados digitais X.509 versao 3 possuem extensoes. Existem extensoes padroes

(propostas na RFC3280), e as nao padroes (criadas por empresas para uma determinada fina-

lidade, por exemplo). A biblioteca deve oferecer suporte para identificar ambos tipos de ex-

tensoes. Uma extensao e basicamente um par (chave, valor). Porem, este valor pode representar

uma estrutura composta.

Para exemplificar uma extensao, sera analisado a extensao Key Usage. Esta extensao define

quais serao as finalidades de utilizacao da chave privada do sujeito.Ela e composta por um

identificador, 2.5.29.15, e um valor. O valor e formado por 9 bits. Cada bit significa uma

utilizacao diferente da chave privada. Se o bit estiver setado em 1 quer dizer que a chave e

utilizada para aquela finalidade, se o bit estiver setado em 0 a chave nao e utilizada para aquele

fim. A Tabela 2 mostra a nomenclatura de cada posicao na cadeia de bits.

Por exemplo, se a chave publica de uma AC for utilizada apenas para emitir certificados e

Page 54: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

53

LCRs, no certificado desta AC, a extensao Key Usage tera o valor binario: 0011000002. Aonde

os bits 5 e 6 representam respectivamente assinatura de certificados digitais e de LCRs.

A extensao Key Usage e o exemplo de uma extensao “atomica”. Existem extensoes com-

postas, como a Authority Key Identifier. O valor da extensao Authority Key Identifier e composto

por 3 campos:

• keyIdentifier - Este campo e formato pela resultado da funcao resumo da chave publica

da autoridade emissora do certificado, e identifica qual chave publica, correspondente da

chave privada da autoridade emissora do certificado, foi utilizada.

• authorityCertIssuer - Esta campo e formato por uma estrutura denominada GeneralNames

(esta estrutura sera explicada no decorrer do trabalho), e identifica o emissor do certificado

da autoridade emissora do certificado. Ou seja, o emissor do emissor do certificado.

• authorityCertSerialNumber - Este campo e um valor numerico inteiro, e identifica o

numero serial do certificado da autoridade emissora do certificado.

A figura 11 demonstra como e formado a extensao Authority Key Identifier.

Figura 11: Extensao Authority Key Identifier (SUTIL, 2007)

Anteriormente foi dito que todas as extensoes poderiam ser resumidas ao formato de um par

(chave, valor). Na extensao Authority Key Identifier nao e diferente. Os tres campos explicitados

acima, podem ser representados por uma sequencia de bits. Entao se a extensao Authority Key

Identifier for desconhecida para uma entidade, essa pode afirmar que a extensao e formada por

um par (chave, valor). Porem, esta entidade nao consegue identificar o que significa aquele

valor.

As extensoes propostas na RFC3280 foram modeladas na biblioteca, seguindo a norma.

Esta fora do escopo deste trabalho explicar como as extensoes sao formadas, ate porque cada

2A representacao binaria e feita contando-se da direita para a esquerda.

Page 55: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

54

extensao possui uma estrutura propria. Portanto, para utilizar a biblioteca e necessario um

previo conhecimento da formacao das extensoes.

Nas Figuras 12, 13 e 14, e apresentado o diagrama de classes do grupo Extensoes. A Figura

12 apresenta a classe Extension e varias outras interfaces, cada uma dessa interfaces representa

cada uma das extensoes propostas pela RFC3280. Pode-se perceber que cada extensao possui

atributos e metodo diferentes, devido a cada uma possuir estruturas diferentes.

A biblioteca tambem nao faz distincao entre extensoes de LCR, e extensoes de certificado.

Embora nao encoraje, a RFC tambem nao proıbe a utilizacao de extensoes de LCR em certifi-

cados, e vice-versa.

Excluindo as interfaces CRLDistribuitonPoint, CertificatePoliciesExtension e Authority-

KeyIdentifierExtension, todas as interfaces utilizam apenas tipos basicos. Para manipular essas

classes, basta conhecer a estrutura de cada extensao (definidas na RFC3280). Como aquelas tres

interfaces estao relacionadas com outras interfaces, serao explicadas detalhadamente a seguir.

A extensao Authority Key Identifier, segundo a RFC3280, possui um campo chamado autho-

rityCertIssuer. Este campo e do tipo GeneralNames. Este, por sua vez e uma sequencia de no

mınimo um GeneralName. Estes dois ultimos tipos sao representados pelas classes GeneralNa-

mes e GeneralName respectivamente, mostradas na Figura 13.

Um GeneralName pode ser de varios tipos. Cada tipo possui as suas regras. Por exemplo

o tipo RFC822Name e utilizado para enderecos de e-mail, ja o tipo UniformResourceIdentifier

e utilizado para enderecos de site WEB, o tipo IPAddres e utilizado para representar enderecos

Internet Protocol (IP) versao 4 ou 6. Cada tipo possui uma estrutura em particular. Como esta

parte da biblioteca segue fielmente a RFC3280, e necessario o conhecimento da mesma, para

poder escolher qual o tipo correto de GeneralName a ser utilizado.

A extensao CRL Distribution Point, segundo a RFC3280, e composta por no mınimo um

DistributionPoint. A classe DistributionPoint representa este tipo.

A extensao Certificate Policies e uma lista de PolicyInformation, que por sua vez e cons-

tituıda de um identificador (policyIdentifier) e uma lista. Esta lista e chamada de policyQualifi-

ers. Esta e composta por PolicyQualifierInfo, composto de um identificador (policyQualifierId)

e Qualifiers. Um Qualifier pode ser um CPSUri ou um userNotice. Um CPSUri geralmente

representa uma Uniform Resource Locator (URL), enquanto que um userNotice representa um

texto. Cada tipo e representado na biblioteca por classes que recebem a respectiva nomencla-

tura. Esta extensao e uma composicao complexa, porem na pratica normalmente e utilizada em

casos simples, como indicar a URL (CPSUri) da PC, ou adicionar um pequeno texto (userNo-

Page 56: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

55

tice) no certificado.

Alguns tipos padronizados de certificados sao emitidos o tempo inteiro. Para nao ser ne-

cessario ficar especificando os atributos desses certificados toda vez que eles forem emitidos,

criou-se os modelos de certificados. Na ICPEDU, por exemplo, todos os certificados deverao

possuir o seguinte userNotice: “Os certificados da ICPEDU sao para uso exclusivo por institui-

coes brasileiras de ensino e pesquisa, e nao tem eficacia juridica.”. Alem disso, os certificados

de ACs intermediarias deverao ter um perıodo de validade e tamanho de chaves especıficas.

Tambem devera haver na extensao Basic Constraints, o campo CA com valor TRUE.

Estes modelos poderao substituir os valores que estao numa requisicao de Certificado. Ima-

gine que uma certa ICP define que o campo Organization devera conter: “ICP XYZ”. Os re-

querentes nao precisam digitar o campo Organization, quando o certificado for emitido, sera

aplicado o modelo e o campo Organization sera preenchido. Se o requerente preencher o campo

Organization, este podera ser substituıdo ou nao. Esta opcao fica a cargo do usuario.

Para criar um modelo de certificado, basta instanciar um objeto de alguma classe que im-

plemente a interface CertificateTemplates. Depois disto, e so utilizar os metodos da interface,

para setar os valores do modelo. Se necessario faz-se a persistencia do objeto, para no futuro

poder carrega-lo e utiliza-lo novamente.

Apos o modelo ser criado, para aplicar este, basta passar o modelo como parametro para o

metodo sign da interface CertificateBuilder. A interface CertificateTemplate e apresentada na

figura 15

Agora sera explicado como funcionam as LCRs na biblioteca. Segundo Housley e Polk

(2001), uma LCR pode ser definida como uma ferramenta basica de ICP, utilizada para distribuir

informacoes sobre o estado dos certificados. Uma LCR e uma lista com a identificacao dos

certificados revogados.

Uma LCR pode possuir extensoes, assim como cada uma de suas entradas tambem podem

conter. As extensoes, tanto para LCR quando para as suas entradas, funcionam da mesma

maneira que para certificados.

Para criar um LCR utiliza-se novamente o padrao de projeto Builder. Seta-se os valores e

depois se chama o metodo criador do objeto. O Builder entao retorna uma LCR assinada.

Na biblioteca, o builder e implementado atraves da interface CertificateRevogationListBuil-

der (ver figura16), e o metodo criador e o sign. Este metodo possui os parametros:

• privKey (obrigatorio) – A chave privada da entidade que vai assinar a LCR.

Page 57: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

56

Figu

ra12

:Dia

gram

ade

Cla

sses

dogr

upo

Ext

enso

es-P

arte

1

Page 58: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

57

Figura 13: Diagrama de Classes do grupo Extensoes - Parte 2

• hashAlgorithm (obrigatorio) – Qual funcao resumo sera utilizado para assinar a LCR.

• extraArgs (opcional) – Argumentos extras. Este parametro nao esta em uso.

Um metodo importante do builder de LCR e o addCRLEntry, o qual adiciona entradas na

LCR. Estas entradas sao representadas pela interface CRLEntry. Esta ultima, de acordo com a

RFC3280, possui um numero serial, uma data de revogacao e extensoes.

Apos criar uma LCR, o builder retorna um objeto to tipo CertificateRevocationList. As

informacoes da LCR podem ser obtidas a partir de metodos gets. O metodo isRevoked procura

o certificado passado como parametro na LCR, e retorna TRUE caso o certificado esteja na LCR

e FALSE caso nao esteja.

Um Object Identifier (OID) e um identificador utilizado para indicar um objeto. Um certifi-

cado e composto por varios objetos (algoritmos de funcoes resumo, extensoes, tipos de polıticas,

etc).

Como pode ser observado nos diagramas de classes dos grupos anteriores, a maioria possui

um OID. Os OIDs na biblioteca sao criados utilizando o padrao de projeto Factory(GAMMA et

al., 1995). Para se obter um OID, e enviado o codigo do OID, e a classe ObjectIdentifierFactory

retorna o objeto ObjectIdentifier correspondente. Tambem foram criados codigos proprios da

biblioteca, para facilitar. Os OIDs comuns possuem um codigo interno (acessados atraves de

Page 59: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

58

Figura 14: Diagrama de Classes do grupo Extensoes - Parte 3

Figura 15: Diagrama de Classes do grupo Padroes de Certificados

constantes de classe).

Internamente quando e solicitado um OID a classe ObjectIdentifierFactory, ela constroi um

objeto do tipo ObjectIdentifier. Este objeto, depois de criado, nao pode ser mais modificado,

somente pode ser lido o seu valor atraves do metodo getOID.

A RFC3280 estabelece que alguns campos do certificado (e tambem das extensoes), sao

de um tipo denominado RDNSequence. Um RDNSequence e uma seqencia de RelativeDis-

tinguishedName. Um RelativeDistinguishedName por sua vez e uma seqencia de pares (tipo,

valor). Um RelativeDistinguishedName, e representado na biblioteca pela classe RDNSequence

(ver figura 17). A classe, como na RFC3280, e formada por uma seqencia de pares (type, value),

que sao os parametros utilizados no metodo addEntry. Este metodo e utilizado para construir

um RelativeDistinguishedName.

O tipo RelativeDistinguishedName, e utilizado quando e necessario identificar uma enti-

dade, como acontece com o campo emissor de um certificado digital.

Page 60: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

59

Figura 16: Diagrama de Classes do grupo Lista de Certificados Revogados

Figura 17: Diagrama de Classes dos grupos Identificadores de Objetos e RDNSequence

Os tipos mais comuns do par (tipo, valor) do RelativeDistinguishedName sao:

• CommonName – O nome comum do sujeito;

• Organization – A organizacao a qual o sujeito pertence;

• OrganizationUnit – A unidade da organizacao a qual o sujeito pertence;

• Country – O paıs do sujeito;

• DistinguishedNameQualifier – O nome distinto do sujeito;

• State – A unidade federativa do sujeito.

MODULO DE CRIPTOGRAFIA Este modulo da biblioteca e responsavel por todo o

processo criptografico utilizando, ou nao, uma engine. As classes tratam as funcionalidades de

Page 61: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

60

Grupo FuncaoEngine Comunicar-se com HSMs

Funcao Resumo Gerar a funcao resumo de um dadoChave Simetrica Criacao de chaves simetricas

Chave Assimetrica Chaves privadas e chaves publicasPar de Chaves Criacao de pares de chaves

Cifrador Cifrar e decifrar dadosAssinador Assinar dados

Tabela 3: Agrupamento das classes do Modulo de Criptografia

pares de chaves (chave privada e sua respectiva chave publica) RSA ou DSA, chaves simetricas,

funcoes de resumo, assinatura de dados, cifragem e decifragem simetrica de dados alem de

cifragem e decifragem assimetrica de dados. Este modulo foi separado em grupos, conforme

descrito na Tabela 3.

Como definido para o SGCI versao 1.3.0, o SGCI versao 2.0.0 tera suporte a HSM para

aumentar o seguranca nas operacoes criptograficas. Segundo RNP et al. (2004b) HSM e um

dispositivo de processamento criptografico e gestao de chaves criptograficas que mantem con-

formidade com normas de construcao de hardware, levando em consideracao os mais diversos

ataques aos processos criptograficos que ele protege, e assim garantido a sua seguranca e a

salva-guarda de parametros crıticos de seguranca por ele protegidos.

“A chave privada nunca aparece em claro fora do HSM e toda transacao queexija que ela seja usada e realizada no interior do ambiente de alta segurancapor ele provido. No caso de uma AC, a funcao usual de um HSM e servir como’cofre’ para a chave privada. Nao ha como acessa-lo, a nao ser pelas interfacespadrao de solicitacao de execucao de suas funcoes criptograficas basicas. OHSM tambem serve como acelerador criptografico, podendo chegar a realizarcentenas de assinaturas por segundo com a chave privada que protege.” (RNPet al., 2004a).

O grupo Engine (Figura 18) e composto por uma interface: Engine, responsavel pela

comunicacao com HSMs. O construtor desta classe recebe dois parametros: enginePath e en-

gineId. O primeiro deve ser o endereco do arquivo do cliente da engine. O segundo deve ser o

identificador desta engine.

Figura 18: Diagrama de Classes das interfaces do grupo Engine

Page 62: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

61

Um comando de uma engine e um par (chave, valor), sendo chave o nome do comando e

valor e a atribuicao deste comando. Para passar comandos a engine, deve-se utilizar o metodo

addCommand passando como parametro a chave e o seu respectivo valor. Se o comando ja

existir, o valor do comando e substituıdo, senao o comando e adicionado ao final da lista de

comandos.

Para realizar um teste de conexao, deve-se utilizar o metodo init. Depois de realizada a

verificacao se o HSM esta respondendo, e retornado TRUE se a conexao for estabelecida, e

FALSE caso houver algum problema.

A biblioteca pode ser utilizada para calcular a impressao digital de um dado, ou seja, a

funcao resumo deste dado (mais informacoes ver na secao 2.3). Dentro desta biblioteca, a

funcao resumo de um dado somente sera utilizada pelo grupo Assinador descrito na pagina 65.

O grupo Funcao Resumo (Figura 19) e composto por uma interface: MessageDigest. Ela

utiliza o padrao de projeto State (GAMMA et al., 1995) e e responsavel por calcular a funcao

resumo de um determinado dado. O procedimento para calcular a funcao resumo sempre sera a

seguinte execucao ordenada:

• init – passando como parametro o nome do algoritmo que sera utilizado. Este metodo

inicializa as estruturas que serao utilizadas.

• update – passando como parametro o dado a ser utilizado no calculo. Este metodo ar-

mazena o dado que sera utilizado. Ele pode ser chamado varias vezes, sendo que a cada

chamada do metodo, o dado ja armazenado sera concatenado com o dado passado como

parametro.

• doFinal – este metodo possui um parametro opcional. Caso ele receba algum parametro,

ele concatenara o parametro com o dado ja armazenado, como faz o metodo update,

efetuara o calculo da funcao resumo e o retornara. Caso nenhum parametro seja recebido,

ele efetuara o calculo da funcao resumo com o dado armazenado pela funcao chamada

anteriormente, e retornara o resultado.

Figura 19: Diagrama de Classes das interfaces do grupo Funcao Resumo

Devido ao padrao de projeto utilizado, sempre deve-se executar os metodos na seguinte

Page 63: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

62

sequencia: init → update → doFinal, sendo que update pode ser chamado diversas vezes. Se

alguma outra seqencia for utilizada, serao gerados erros.

Para que um determinado usuario possa cifrar um documento simetricamente, ele deve

primeiro, possuir uma chave simetrica (maiores detalhes na secao 2.2.1.

A parte da biblioteca que gerencia chaves simetricas esta definida no grupo Chave Simetrica

(Figura 20), composto por uma interface: SymmetricKey. Ela e responsavel pela criacao e

gerenciamento de chaves criptograficas simetricas. Ha dois modos de possuir um objeto de

SymmetricKey.

Figura 20: Diagrama de Classes das interfaces do grupo Chave Simetrica

A primeira e utilizada quando o programador pretende gerar uma nova chave simetrica.

Deve-se invocar o metodo generateSymmetricKey passando, opcionalmente, o tamanho da chave,

que por padrao e 1024, e o algoritmo que sera utilizado, que por padrao e o 3DES. A biblioteca

fara as suas verificacoes, ira gerar uma chave simetrica e ira setar os atributos desta classe.

A segunda opcao e utilizada quando o programador ja possuir uma chave simetrica e deseja

utiliza-la na biblioteca. Ele deve passar como parametro do metodo loadKey a chave propria-

mente dita e, opcionalmente, o tamanho da chave, que por padrao e 1024, e o algoritmo que

sera utilizado, que por padrao e o 3DES. A biblioteca faz as suas verificacoes e seta os atributos

da classe SymmetricKey.

Para que um sujeito possa gerar uma assinatura digital, deve primeiramente possuir uma

par de chaves assimetricas, formado pela sua chave privada e chave publica. O par de chaves e

calculado simultaneamente. Maiores informacoes sobre chaves assimetricas, verifique a secao

2.2.2.

O grupo Par de Chaves (Figura 21) e composto por duas interfaces: KeyPairBuiler e Key-

Pair. O primeiro, atraves do padrao de projeto Builder, constroi um objeto KeyPair. Seu cons-

trutor recebe como parametro o tipo da chave que sera gerada, sendo suportado pela biblioteca

a geracao de chaves RSA e DSA. A classe KeyPairBuiler possui tambem metodos sets para

poder definir o tamanho da chave que sera gerada, o cifrador que sera utilizado e a senha para a

cifragem, alm de poder setar uma Engine, caso seja utilizada.

O metodo getKeyPair possui o parametro opcional extraArgs, criado para ser utilizado caso

Page 64: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

63

seja necessario futuramente. Ele e responsavel por gerar um par de chaves com os parametros

definidos pelos metodos sets, construir um objeto KeyPair com as chaves geradas e retornar este

objeto KeyPair.

Figura 21: Diagrama de Classes das interfaces do grupo Par de Chaves

A segunda classe (KeyPair) e responsavel pelo par de chaves propriamente dito. Ela possui

dois metodos gets: getPublicKey e getPrivateKey, quem retornam respectivamente a sua chave

publica, um objeto da classe PublicKey, e a sua chave privada, um objeto da classe PrivateKey,

pertencentes ao grupo Chave Assimetrica.

Caso o programador j possuir uma chave privada, deve utilizar o mtodo esttico loadKeyPair

passando como parmetro a chave privada no formato PEM e a sua senha, caso ela exista. Este

mtodo far as suas verificaes e retornar um objeto KeyPair.

Apos a geracao do par de chaves utilizando KeyPairBuiler, e possıvel utilizar estas chaves

para assinar e cifrar documentos utilizando respectivamente as classes Signer e Assymmetric-

Cipher,que serao explicitadas ao decorrer do trabalho. Para isto, o programador deve utilizar os

metodos de KeyPair para retornar objetos de PrivateKey e PublicKey.

O grupo Chave Assimetrica (Figura 22) e composto pela classe abstrata

• AssymmetricKey – responsavel pelo gerenciamento de itens comuns entre as seguintes

classes que a extende:

– PrivateKey – responsavel pelo gerenciamento de chaves privadas

– PublicKey – responsavel pelo gerenciamento de chaves publicas

AssymmetricKey implementa mtodos gets que retornam informaes sobre a chave tais como:

o algoritmo utilizado, o formato em que ela se encontra (DER ou PEM) e o tamanho da chave,

alm de retornar a chave no formato PEM e no formato DER.

Page 65: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

64

Figura 22: Diagrama de Classes das interfaces do grupo Chave Assimetrica

O construtor de PrivateKey deve somente ser utilizado caso o programador j possuir uma

chave privada e no queira possuir a sua chave pblica ou quando ele deseje possuir somente um

objeto desta classe que represente a chave privada de uma Engine . Caso ele queira possuir

o par de chaves, deve-se invocar o mtodo loadKeyPair, de KeyPair, descrito anteriormente. O

construtor possui os seguintes parmetros:

• key – a chave.

• passwd – opcional com valor padro nulo. a senha que foi utilizada na cifragem da chave.

• format – opcional com valor padro PEM. O formato em que se encontra a chave.

• hsm – opcional com valor padro nulo. A Engine que foi utilizada.

• keyName – opcional com valor padro nulo. O identificador da chave utilizada.

Esta classe possui ainda um mtodo para retornar a chave privada cifrada (getEncryptedPemEn-

coded), outro que verifica se a chave privada est em Engine (useEngine), alm de dois mtodos

gets que retornam, caso foi utilizado, a Engine que armazena a chave e o identificador desta

chave.

A classe PublicKey possui, alm dos mtodos de AssymmetricKey, somente um construtor que

recebe a chave e o formato em que se encontra. Este mtodo deve somente ser utilizado caso o

Page 66: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

65

programador s possuir a chave pblica, como em um certificado digital. Caso ele possua tambm

a chave privada, deve ser utilizado o mtodo loadKeyPair, de KeyPair, descrito anteriormente.

O programador e encorajado a utilizar um objeto KeyPair e nao somente um de PrivateKey

ou PublicKey. Por exemplo: caso o programador deseje cifrar um dado com uma chave RSA

ele deve utilizar a classe KeyPairBuilder para construir um objeto KeyPair com os parametros

desejados. A partir deste objeto ele deve invocar o metodo getPublicKey que retornara a chave

publica gerada, objeto de PublicKey. E, a partir do grupo Cifrador, definido a seguir, ele podera

cifrar um dado com a chave publica RSA que ele possui.

Um dos princıpios basicos da criptografia e a cifragem de dados. Os dados podem ser

cifrados com chaves simetricas ou com chaves assimetricas. Mais detalhes vide secoes 2.2,

2.2.1 e 2.2.2.

A biblioteca implementa funcoes de cifragem no grupo Cifrador (Figura 23), composto por

duas interfaces: AssymmetricCipher e SymmetricCipher.

Figura 23: Diagrama de Classes das interfaces do grupo Cifrador

AssymmetricCipher e responsavel pela cifragem assimetrica de dados e SymmetricCipher,

pela cifragem simetrica de dados. Estas classes possuiem, cada uma delas, dois metodos: en-

crypt e decrypt, responsaveis por cifrar e decifrar um dado, respectivamente.

Em AssymmetricCipher, o mtodo encrypt recebe como parmetro um objeto PublicKey e o

dado a ser cifrado. Decrypt recebe um objeto PrivateKey, o dado cifrado e a senha da cifragem

da chave, caso ela tenha sido utilizada.

Em SymmetricCipher, os dois mtodos encrypt e decrypt recebem como parmetro um objeto

SymmetricKey, o dado a ser cifrado/decifrado, o algoritmo e o modo de operao do cifrados.

Um dos princıpios basicos para a existencia de uma ICP e a assinatura digital. Nao existiria

certificado digital sem que uma terceira parte confiavel pudesse assinar um certificado. Mais

detalhes sao encontrados na secao 2.4.

O grupo Assinador (Figura 24) e composto por uma interface: Signer. Esta e responsavel

Page 67: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

66

por assinar e por verificar a assinatura de dados. Ela possui dois metodos.

Figura 24: Diagrama de Classes das interfaces do grupo Assinador

O primeiro, sign, e responsavel por assinar um dado. Ele recebe como parametro o algo-

ritmo de assinatura, um objeto da classe PrivateKey que ira assinar o dado, a funcao resumo do

dado que sera assinado e como ultimo parametro, este opcional, a senha pela qual foi cifrada

a chave privada. Este metodo retorna a funcao resumo assinada. Caso o objeto PrivateKey

represente a chave privada de uma Engine, o mtodo retornar a chave assinada por esta.

O segundo, verify, e responsavel por verificar a assinatura de um dado. Ele recebe como

parametro o dado assinado, o algoritmo de assinatura, a funcao resumo do dado que foi assinado

e um objeto da classe PublicKey, sendo este a chave publica de quem assinou o dado. Este

metodo retorna TRUE caso a assinatura coincidir e FALSE caso contrario.

MODULO UTILIDADES Este modulo da biblioteca e responsavel pelos utilitarios ne-

cessarios a biblioteca. Aqui foi implementado a classe LDAP, responsavel por todo o suporte a

DP LDAP (ZEILENGA, 2006).

Normalmente apos a emissao de um certificado digital, a AC emissora publica este certifi-

cado em um diretorio publico (para maiores informacoes, vide pagina 33). Um diretorio publico

LDAP e um DP que utiliza o protocolo LDAP (SERMERSHEIM, 2006).

Segundo OpenLDAP (2007) LDAP e um protocolo leve de acesso a diretorios e roda so-

bre TCP/IP. Foi criado como uma alternativa ao protocolo Directory Access Protocol (DAP) e

utilizado inicialmente como uma interface de acesso a diretorios X.500 (definido pela norma

ISO/IEC 9594-1).

Dado um determinado DP LDAP, para que seja adicionado informacoes a base de dados

e utilizado a importacao de um arquivo LDAP Data Interchange Format (LDIF). LDIF e um

arquivo texto utilizado para adicionar, alterar e remover informacoes de uma base. Ele e definido

pela RFC2849 (GOOD, 2000).

O metodo getLDIF da classe LDAP e utilizado para a geracao do texto de um arquivos

LDIF. Ele recebe como parametros uma lista de objetos Certificate, que serao inseridos no

arquivo LDIF, e um string contendo a arvore de diretorios do diretorio publico. Um exemplo de

arvore de diretorios seria “dc=labsec, dc=ufsc, dc=br” Este metodo retorna o texto do arquivo

Page 68: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

67

LDIF que sera utilizado na atualizacao do diretorio publico.

IMPLEMENTACAO DA BIBLIOTECA

A implementacao da biblioteca foi projetada para utilizar a biblioteca OpenSSL. Mas este

tem suporte somente para linguagem de programacao C. O LabSEC possui uma biblioteca cha-

mada LibCryptoSec, que funciona como um involucro da biblioteca OpenSSL. A LibCryptoSec

e feita em C++, possui uma documentacao melhor que a biblioteca OpenSSL, e e orientada a

objetos. A utilizacao da LibCryptoSec facilita muito o desenvolvimento de aplicacoes utilizando

OpenSSL. Porem, ambas bibliotecas foram desenvolvidas utilizando linguagens diferentes de

PHP (a linguagem utilizada para implementar a biblioteca do SGCI). Isso gerou um problema

de compatibilidade.

Pensou-se em utilizar o OpenSSL linha de comando. O biblioteca do SGCI iria fazer uma

chamada ao sistema, utilizando a linha de comando da ferramenta OpenSSL. Os resultados

seriam retornados em forma de texto, e a biblioteca iria transformar este texto em objetos. Se,

futuramente, a ferramenta OpenSSL modificar um unico caractere no retorno das chamadas a

linha de comando, o SGCI iria ter problemas.

Pesquisou-se entao uma forma de fazer com que programas C++ pudessem se comunicar

com PHP. Foi descoberto que e possıvel criar modulos, que fazem a comunicacao entre progra-

mas PHP e C++. Como as interfaces entre as bibliotecas OpenSSL e LibCryptoSec nao serao

modificadas (isto causaria problemas a varios programas, diminuindo muito a credibilidade da

biblioteca), nao ha problemas se alteracoes ocorrerem no futuro! Os dados sempre serao retor-

nados do mesmo jeito, em objetos.

Em paralelo ao desenvolvimento da biblioteca de seguranca do SGCI, houve o desenvolvi-

mento do modulo para PHP. Ele foi chamado de ModCryptoSec e maiores informacoes podem

ser encontradas em (CRUZ; STEINMANN, 2007). Este modulo foi utilizado na implementacao

desta biblioteca.

As interfaces explicadas anteriormente foram todas implementadas fazendo uso deste modulo.

As classes que implementam as interfaces do SGCI fazem chamadas ao modulo, que faz cha-

madas a LibCryptoSec, que por sua vez realiza chamadas ao OpenSSL. A biblioteca OpenSSL

retorna em linguagem de programacao C, a LibCryptoSec transforma para objetos em C++, o

modulo transfere esses objetos para tipos primitivos de PHP. E por ultimo, as classes da biblio-

teca do SGCI transformam estes tipos primitivos em objetos da biblioteca.

A Figura 25 demonstra o empacotamento das bibliotecas. No centro, ha a biblioteca

Page 69: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

68

OpenSSL, sobre ela ha a LibCryptoSec, sobre esta ha o modulo, e por ultimo a biblioteca do

SGCI.

Esta implementacao e apenas uma maneira de implementar a biblioteca do SGCI. No futuro,

atraves da utilizacao da interfaces, essa implementacao podera ser substituıda por uma mais

otimizada, sem ser necessario alterar o codigo-fonte do SGCI.

Figura 25: Camadas da Biblioteca de Seguranca do SGCI

A implementacao completa pode ser encontrada no Apendice D.

TESTES DA BIBLIOTECA

Um dos requisitos da biblioteca e que ela deve ser totalmente autotestavel. Para isto, foram

desenvolvidos varios testes. Cada classe implementada possui no mınimo um arquivo de teste.

Cada um desses arquivos, possui uma bateria de testes. Cada arquivo e responsavel por testar

no mınimo uma classe por completo. Isto inclui testar todas as funcionalidades da classe, bem

como todos os comportamentos anormais possıveis (parametros invalidos, execucao erronea das

classes, etc). Os testes foram baseados nas metricas de qualidade designadas em Koscianski e

Soares (2006).

Para verificar a qualidade dos testes, foram utilizados em conjunto o framework PHPUnit,

e o XDebug. O framework PHPUnit foi utilizado para agilizar o desenvolvimento dos testes.

O XDebug foi utilizado em conjunto com o PHPUnit, para verificar quais linhas dos codigos-

fontes foram testados. A figura 26 apresenta uma tela de exemplo. As linhas que foram testadas

aparecem em verde, as que nao foram testadas ficam em vermelho.

O criterio adotado para os testes serem considerados bons, alem de produzirem os resulta-

dos esperados, e que cada linha deveria ser executada no mınimo uma vez.

Page 70: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

69

Figura 26: Tela de exemplo de saıda do PHPUnit com Xdebug

Page 71: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

70

5 CONSIDERACOES FINAIS

No desenvolvimento deste trabalho, todos os objetivos foram alcancados.

O estudo sobre o funcionamento de uma ICP permitiu obter o conhecimento necessario

para fazer crıticas ao SGCI, e observar os seus pontos fortes. A experiencia pratica adquirida na

utilizacao e desenvolvimento de melhorias ao SGCI versao 1.3.0, aliada a teoria, permitiu obter

uma base solida para projetar o SGCI versao 2.0.0.

As etapas de melhorias no SGCI versao 1.3.0 foram uteis para perceber a dificuldade em dar

manutencao em um programa sem documentacao. Tambem foi util para perceber a necessidade

dos testes automatizados. Quando uma pequena alteracao era feita no programa, todo o plano de

testes era refeito para garantir que outras partes nao fossem afetadas, perdendo-se muito tempo.

A modularidade tambem foi um conceito muito importante aprendido durante as melhorias

efetuas no SGCI versao 1.3.0. O sistema nao dispunha de uma boa modularidade, uma alteracao

pequena geralmente causava efeitos em outras partes do sistema.

Na etapa de analise e projeto do sistema os requisitos foram definidos fundamentando-se

nos problemas e sucessos da experiencia adquirida no SGCI versao 1.3.0. Apos os requisitos de-

finidos, foi iniciado o projeto do sistema. Durante a faze de projeto, encontrou-se a necessidade

do desenvolvimento de uma biblioteca de seguranca para ser utilizada neste sistema.

A biblioteca desenvolvida possui todos os requisitos definidos, como pode ser vista nos

apendices. Todos os requisitos definidos para o SGCI podem ser estendidos a biblioteca, tais

como desenvolvimento baseada no modelo de processos CMMI, suporte a HSM e certificados

EV-SSL, integracao com LDAP entre outros.

O proximo passo a ser executado, e a implementacao da proposta feita neste trabalho. Uma

melhoria adicional a proposta, e criar um utilitario para fazer a migracao dos dados (banco de

dados, estrutura de diretorios, etc) do SGCI versao 1.3.0 para o SGCI versao 2.0.0.

Algumas sugestoes de pesquisas futuras podem ser feitas. Estudos para encontrar uma

forma segura de automatizar os protocolos de transmissao de informacoes entre as entidades.

Tambem poderia ser estudado uma forma de dar suporte a tipos de entidades especıficas, como

Autoridade Certificadora Temporal (RIVEST; SHAMIR; WAGNER, 1996), Autoridade Certi-

Page 72: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

71

ficadora Otimizadora (NOTOYA et al., 2007), entre outras.

Page 73: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

72

REFERENCIAS

ACHOUR, M. et al. PHP Manual. PHP Documentation Group, 2007. Disponıvel em:<”http://www.php.net/manual/en/index.php”>. Acesso em: 29 set. 2007.

ADAMS, C. et al. Internet X.509 Public Key Infrastructure Certificate Management Protocol(CMP). IETF, set. 2005. RFC 4210 (Proposed Standard). (Request for Comments, 4210).Disponıvel em: <http://www.ietf.org/rfc/rfc4210.txt>.

AGP, A. de Gerencia de P. Declaracao de Praticas e Polıticas de Certificacao da AC Raiz daICPEDU. [S.l.], 2007.

ALVAREZ, M. A. Esquema do funcionamento das pginas PHP. 2005. 1 gravura. Disponıvelem: <http://www.criarweb.com/artigos/images/diagrama-php.gif>. Acesso em: 01 out. 2007.

APACHE. The Apache Software Foundation, 200–. Disponıvel em:<http://www.apache.org/>. Acesso em: 29 set. 2007.

BECK, K. Simple Smalltalk Testing: With Patterns. First Class Software, Inc., 1995. Disponıvelem: <http://www.xprogramming.com/testfram.htm>. Acesso em: 12 out. 2007.

BERGMANN, S. Testing PHP Applications with PHPUnit 3. 2006. Disponıvel em:<http://sebastian-bergmann.de/talks/2006-11-02-PHPUnit.pdf>. Acesso em: 12 out. 2007.

BERGMANN, S. PHPUnit. 2007. Disponıvel em: <http://www.phpunit.de/wiki/>. Acessoem: 12 out. 2007.

CALLAS, J. et al. OpenPGP Message Format. IETF, nov. 1998. RFC 2440 (Proposed Stan-dard). (Request for Comments, 2440). Disponıvel em: <http://www.ietf.org/rfc/rfc2440.txt>.

CHOWDHURY, K.; YEGANI, P.; MADOUR, L. Dynamic Host Configuration Protocol(DHCP) Options for Broadcast and Multicast Control Servers. IETF, nov. 2005.RFC 4280 (Proposed Standard). (Request for Comments, 4280). Disponıvel em:<http://www.ietf.org/rfc/rfc4280.txt>.

COLLINS-SUSSMAN, B.; FITZPATRICK, B. W.; PILATO, C. M. Version control withSubversion. 1. ed. O’Reilly Media, Inc., 2004. ISBN 0-596-00448-6. Disponıvel em:<http://svnbook.red-bean.com/>. Acesso em: 29 set. 2007.

CRUZ, G. F. da; STEINMANN, G. Infra-estrutura em Chaves Publicas Temporal. [S.l.], 2007.

CUSToDIO, R. F. Infra-estrutura de Chaves Publicas: Conceitos Basicos. LabSEC, Nov.2004. Disponıvel em: <http://www.icpedu.labsec.ufsc.br/tiki-download file.php?fileId=13>.Acesso em: 20 set. 2007.

CUSToDIO, R. F. ICPEDU (Infra-Estrutura de Chaves Publicas para Pesquisae Ensino). LabSEC, 2006. Disponıvel em: <http://www.icpedu.labsec.ufsc.br/tiki-download file.php?fileId=14>. Acesso em: 20 set. 2007.

Page 74: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

73

CUSToDIO, R. F.; FREITAS, D. S. de. SISTEMA LIVRE PARA A GESTAO DO CICLODE VIDA DE CERTIFICADOS DIGITAIS NA ICP-BRASIL. LabSEC, 2004. Disponıvel em:<http://www.icpedu.labsec.ufsc.br/tiki-download file.php?fileId=96>. Acesso em: 20 set.2007.

CUSToDIO, R. F. et al. GT-ICP-EDU: Manual de Sistemas da Infra-estrutura de ChavesPublicas Educacional. Jan. 2005. Disponıvel em: <http://www.icpedu.labsec.ufsc.br/tiki-download file.php?fileId=10>. Acesso em: 12 fev. 2006.

DIFFIE, W.; HELLMAN, M. E. New directions in cryptography. IEEE Transac-tions on Information Theory, IT-22, n. 6, p. 644–654, Nov. 1976. Disponıvel em:<http://citeseer.ist.psu.edu/diffie76new.html>. Acesso em: 04 out. 2007.

ELLISON, C. et al. SPKI Certificate Theory. IETF, set. 1999. RFC 2693 (Experimental).(Request for Comments, 2693). Disponıvel em: <http://www.ietf.org/rfc/rfc2693.txt>.

FERNANDES, A. J. Risking “trust” in a public key infrastructure: old techniques of managingrisk applied to new technology. In: Decision Support Systems. [S.l.]: Elsevier Science, 2001.Volume 31, p. 303 – 322.

FREEMAN, E. et al. Head First Design Patterns. [S.l.]: O’Reilly Media, Inc, 2004. ISBN0-596-00712-4.

GAMMA, E. et al. Design patterns: elements of reusable object-oriented software. [S.l.]:Addison-Wesley Professional, 1995.

GILL, P. C. Introduccion A La Criptografia. 2. ed. [S.l.]: Ra-Ma, 2002.

GIUDICELLI, F. NewPKI. 2007. Disponıvel em: <http://www.newpki.org/>. Acesso em: 04out. 2007.

GOOD, G. The LDAP Data Interchange Format (LDIF) - Technical Specification. IETF,jun. 2000. RFC 2849 (Proposed Standard). (Request for Comments, 2849). Disponıvel em:<http://www.ietf.org/rfc/rfc2849.txt>.

HOUSLEY, R.; POLK, T. Planning for PKI - Best Practices Guide for Deploying Public KeyInfrastructure. New York: Wiley Computer Publishing, 2001.

HOUSLEY, R. et al. Internet X.509 Public Key Infrastructure Certificate and Cer-tificate Revocation List (CRL) Profile. IETF, abr. 2002. RFC 3280 (Proposed Stan-dard). (Request for Comments, 3280). Updated by RFCs 4325, 4630. Disponıvel em:<http://www.ietf.org/rfc/rfc3280.txt>.

IGNACZAK, J. ao C. Um novo modelo de Infra-estrutura de Chaves Publicas para uso noBrasil utilizando aplicativos de codigo fonte aberto. Dissertacao (Mestrado) — UniversidadeFederal de Santa Catarina, 2002. Disponıvel em: <https://www2.labsec.ufsc.br//tiki-list file gallery.php?galleryId=4>. Acesso em: 29 set. 2007.

ITI, I. N. de Tecnologia da Informacao. ICP Brasil: Infra-estrutura de Chaves PublicasBrasileira. 2007. Disponıvel em: <http://www.icpbrasil.gov.br/>. Acesso em: 03 jul. 2007.

Page 75: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

74

ITU-T. Information technology Open Systems Interconnection The Directory: Public-key andattribute certificate frameworks. [S.l.], Ago. 2005. Disponıvel em: <”http://www.itu.int/rec/T-REC-X.509-200508-I”>. Acesso em: 04 out. 2007.

KOHNFELDER, L. M. Towards a Practical Public-Key Cryptosystem. Dissertacao(Mestrado) — Massachusetts Institute of Technology, Maio 1978. Disponıvel em:<http://theory.csail.mit.edu/ cis/theses/kohnfelder-bs.pdf>. Acesso em: 04 out. 2007.

KOSCIANSKI, A.; SOARES, M. dos S. Qualidade de Software. [S.l.]: Novatec Editora, 2006.

LABORATORIES, R. PKCS #7: Cryptographic Message Syntax Standard. Nov. 1993.Disponıvel em: <http://citeseer.ist.psu.edu/23666.html>. Acesso em: 04 out. 2007.

LARMAN, C. Applying UML and patterns: an introduction to object-oriented analysis anddesign an iterative development. 3. ed. [S.l.]: Pearson Education Inc., 2005.

MEYER, B. Object-Oriented Software Construction. [S.l.]: Prentice Hall, 1997.

NOTOYA, A. E. et al. Use of optimized certificates for efficient validation of digital signature.2007.

OPENCA Project. OpenCA PKI Research Labs, 2007. Disponıvel em:<https://www.openca.org/>. Acesso em: 04 out. 2007.

OPENLDAP. OpenLDAP Foundation, 200–. Disponıvel em: <http://www.openldap.org/>.Acesso em: 29 set. 2007.

OPENLDAP. OpenLDAP Foundation, Jan. 2007. Disponıvel em:<http://www.openldap.org/doc/admin23/>. Acesso em: 29 set. 2007.

OPENSSL. The OpenSSL Project, 200–. Disponıvel em: <http://www.openssl.org/>. Acessoem: 29 set. 2007.

PHP: Hypertext Preprocessor. The PHP Group, 200–. Disponıvel em: <http://www.php.net/>.Acesso em: 29 set. 2007.

POSTGRESQL. PostgreSQL Global Development Group, 200–. Disponıvel em:<http://www.postgresql.org/>. Acesso em: 29 set. 2007.

PRESSMAN, R. S. Engenharia de Software. 5. ed. [S.l.]: McGraw-Hill, 2002.

REENSKAUG, T. Models - views - controllers. Dez. 1979. Disponıvel em:<http://heim.ifi.uio.no/ trygver/1979/mvc-2/1979-12-MVC.pdf>. Acesso em: 01 out.2007.

REENSKAUG, T. The original mvc reports. p. 14, Fev. 2007. Disponıvel em:<http://heim.ifi.uio.no/ trygver/2007/MVC Originals.pdf>. Acesso em: 01 out. 2007.

RIVEST, R. L.; SHAMIR, A.; ADLEMAN, L. M. A method for obtaining digital signaturesand public-key cryptosystems. Communications of the ACM, v. 21, n. 2, p. 120–126, 1978.Disponıvel em: <http://people.csail.mit.edu/rivest/rsapaper.pdf>. Acesso em: 04 out. 2007.

Page 76: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

75

RIVEST, R. L.; SHAMIR, A.; WAGNER, D. A. Time-lock puzzles and timed-releaseCrypto. [S.l.], 1996. Disponıvel em: <http://people.csail.mit.edu/rivest/RivestShamirWagner-timelock.ps>. Acesso em: 19 out. 2007.

RNP et al. GT ICP-EDU II. RNP, 2004. Disponıvel em: <http://www.rnp.br/pd/gts2004-2005/chaves publicas.html>. Acesso em: 29 set. 2007.

RNP et al. ICP-EDU II - Modulo de HW e Servicos Seguros em Redes de Computadores. RNP,Ago. 2004. Disponıvel em: <http://www.rnp.br/ arquivo/documentos/pal0219.pdf>. Acessoem: 29 set. 2007.

ROCHA, L. F. ICP-EDU: disseminando a certificacao digital no ambito academico. 2004.Disponıvel em: <http://www.rnp.br/noticias/imprensa/2004/not-imp-040927.html>. Acessoem: 28 set. 2007.

Rsa Laboratories. PKCS #10: Certification Request Syntax Standard. Maio 2000. Disponıvelem: <http://citeseer.ist.psu.edu/3954.html>. Acesso em: 04 out. 2007.

SCHNEIER, B. Applied cryptography: protocols, algorithms, and source code in C. 2nd. ed.New York: Wiley Computer Publishing, 1996. ISBN 0–471–12845–7.

SERMERSHEIM, J. Lightweight Directory Access Protocol (LDAP): The Protocol. IETF,jun. 2006. RFC 4511 (Proposed Standard). (Request for Comments, 4511). Disponıvel em:<http://www.ietf.org/rfc/rfc4511.txt>.

STALLINGS, W. Cryptography and Network Security: Principles and Practice. 3rd.. ed.Upper Saddle River, NJ, USA: Pearson Education, 2003. ISBN 0-13-091429-0.

STINSON, D. Cryptography: Theory and Practice. [S.l.]: Chapman & Hall-CRC, 2002. ISBN1-58488-206-9.

SUTIL, J. M. Implementando novas abordagens para a troca do parde chaves de Autoridades Certificadoras. [S.l.], 2007. Disponıvel em:<http://projetos.inf.ufsc.br/arquivos projetos/projeto 452/tcc jeandre monteiro sutil v1.0.pdf>.Acesso em: 17 out. 2007.

TRAC. Edgewall Software, 2007. Disponıvel em: <http://trac.edgewall.org/>. Acesso em: 13out. 2007.

TZU, S. The Art of War. 1. ed. [S.l.]: Dover Publications, 2002.

VIGIL, M. A. G. Autoridade Certificadora de Correio Eletronico. [S.l.], 2007. Disponıvel em:<http://projetos.inf.ufsc.br/arquivos projetos/projeto 497/TCC-AC-Correio.pdf>. Acesso em:17 out. 2007.

W3C, W. W. W. C. Extensible Markup Language (XML). 2007. Disponıvel em:<http://www.w3.org/XML/>. Acesso em: 12 out. 2007.

WHAT is CMMI. Carnegie Mellon Software Engineering Institute (SEI), 2007. Disponıvel em:<http://www.sei.cmu.edu/cmmi/general/>. Acesso em: 29 set. 2007.

WHY Zend Framework? Zend Technologies, 2007. Disponıvel em:<http://framework.zend.com/whyzf>. Acesso em: 29 set. 2007.

Page 77: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

76

XDEBUG extension for PHP. Derick Rethans, 2007. Disponıvel em: <http://xdebug.org/>.Acesso em: 29 set. 2007.

ZEILENGA, K. Lightweight Directory Access Protocol (LDAP): Directory InformationModels. IETF, jun. 2006. RFC 4512 (Proposed Standard). (Request for Comments, 4512).Disponıvel em: <http://www.ietf.org/rfc/rfc4512.txt>.

Page 78: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

77

APENDICE A -- PLANO DE TESTES

LOGIN DO CRIADOR

Efetuar login como criador do sistema o SGC. Deve-se testar a tentativa de acesso ao sis-

tema com o perfil de criador.

ENTRADAS

1.Informar valores para login e senha.

SAIDAS

1.Caso os valores de login e senha sejam corretos, deve-se redirecionar a pagina de login

para a pagina inicial do perfil de criacao.

2.Caso os valores sejam invalidos, deve-se alertar o usuario e manter o sistema na tela de

login.

A.1 CADASTRO DE ENTIDADES – AUTORIDADE CERTIFICADORA

Deve-se cadastrar Autoridades Certificadoras no sistema. Para isto, selecione o menu Enti-

dades, e a opcao Cadastrar nova Autoridade Certificadora.

A.1.1 ENTRADAS

1.Preencher utilizando a opcao AC Raiz.

Preencher sem utilizar campos avancados

Preencher utilizando campos avancados

Page 79: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

78

2.Preencher utilizando a opcao AC Intermediaria por geracao de requisicao.

Preencher sem utilizar campos avancados

Preencher utilizando campos avancados

Testar encaminhando para AC externa nao cadastrada e para alguma AC do sistema

Testar encaminhando para AR externa nao cadastrada e para alguma AR do sistema

3.Preencher utilizando a opcao AC por importacao do certificado.

4.Para todos os casos preencher utilizando HSM.

5.Para todos os casos preencher sem utilizar HSM.

A.1.2 SAIDAS

1.Exibir alerta para erros de preenchimento de campos em formato invalido e/ou obri-

gatorios.

2.Quando o cadastro for realizado com sucesso, deve-se exibir paginas com os detalhes do

certificado emitido.

A.1.3 DEPENDENCIAS DE OUTROS CASOS DE TESTE

•Caso de teste A, pagina 77.

A.2 CADASTRO DE ENTIDADES – AUTORIDADE DE REGISTRO VIN-CULADA

Deve-se cadastrar Autoridades uma Autoridade de Registro Vinculada a uma autoridade

Certificadora do sistema. Para isto, selecione o menu Entidades, clique em informacoes na

listagem de Autoridades Certificadores e em Cadastrar no item AR Vinculada, ou Cadastre uma

nova Autoridade Certificadora A.1 e ao encerrar o cadastro clique em Cadastrar no item AR

Vinculada.

A.2.1 ENTRADAS

1.Preencher sem utilizar campos avancados.

2.Preencher utilizando campos avancados sem a opcao de utilizar HSM.

Page 80: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

79

3.Preencher utilizando campos avancados com a opcao de utilizar HSM.

A.2.2 SAIDAS

1.Exibir alerta para erros de preenchimento de campos em formato invalido e/ou obri-

gatorios.

2.Quando o cadastro for realizado com sucesso, deve-se exibir paginas com os detalhes do

certificado emitido e a nova AR deve aparecer na listagem das ARs no menu Entidades.

A.2.3 DEPENDENCIAS DE OUTROS CASOS DE TESTE

•Caso de teste A, pagina 77.

•Caso de teste A.1, pagina 77.

A.3 CADASTRO DE ENTIDADES – AUTORIDADE DE REGISTRO

Deve-se cadastrar Autoridades de Registro no sistema. Para isto, selecione o menu Entida-

des, e a opcao Cadastrar nova Autoridade de Registro.

A.3.1 ENTRADAS

1.Preencher utilizando a opcao AR por geracao de requisicao.

Preencher sem utilizar campos avancados

Preencher utilizando campos avancados

Testar encaminhando para AC externa nao cadastrada e para alguma AC do sistema.

2.Preencher utilizando a opcao AR por importacao do certificado.

3.Para todos os casos preencher utilizando HSM.

4.Para todos os casos preencher sem utilizar HSM.

5.Para todas as situacoes acima, testar Encaminhando para AR externa nao cadastrada e

para alguma AR do sistema.

Page 81: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

80

A.3.2 SAIDAS

1.Exibir alerta para erros de preenchimento de campos em formato invalido e/ou obri-

gatorios.

2.Quando o cadastro for realizado com sucesso, deve-se exibir paginas com os detalhes do

certificado emitido.

3.Na listagem das entidades, as ARs recem criadas e que ainda nao foram aprovadas, devem

aparecer com a cor cinza.

A.3.3 DEPENDENCIAS DE OUTROS CASOS DE TESTE

•Caso de teste A, pagina 77.

A.4 DESATIVAR AUTORIDADE CERTIFICADORA

Deve-se destivar uma Autoridade Certificadora do sistema. Para isto, selecione o menu

Entidades, clique em uma Autoridade Certificadora e no botao desativar.

A.4.1 ENTRADAS

1.Desativar AC sem operadores e administradores cadastrados.

2.Desativar AC apenas com administradores cadastrados.

3.Desativar AC com administradores e operadores cadastrados.

A.4.2 SAIDAS

1.Exibir alerta para erro de preenchimento de senha.

2.Quando o desativacao for realizada com sucesso, deve-se exibir a pagina com a lista de

ACs e ARs cadastradas e a AC destivada deve aparecer na listagem com os textos em cor

cinza.

A.4.3 DEPENDENCIAS DE OUTROS CASOS DE TESTE

•Caso de teste A, pagina 77.

•Caso de teste A.1, pagina 77.

Page 82: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

81

A.5 ATIVAR AUTORIDADE CERTIFICADORA

Deve-se ativar uma Autoridade Certificadora do sistema. Para isto, selecione o menu Enti-

dades, clique em uma Autoridade Certificadora inativa e no botao ativar.

A.5.1 ENTRADAS

1.Ativar AC sem operadores e administradores cadastrados.

2.Ativar AC apenas com administradores cadastrados.

3.Ativar AC com administradores e operadores cadastrados.

A.5.2 SAIDAS

1.Quando o ativacao for realizada com sucesso, deve-se exibir a pagina com a lista de ACs

e ARs cadastradas.

A.5.3 DEPENDENCIAS DE OUTROS CASOS DE TESTE

•Caso de teste A, pagina 77.

•Caso de teste A.1, pagina 77.

•Caso de teste A.4, pagina 80.

A.6 EXCLUIR AUTORIDADE CERTIFICADORA

Deve-se excluir uma Autoridade Certificadora do sistema. Para isto, selecione o menu

Entidades, clique em uma Autoridade Certificadora e no botao excluir.

A.6.1 ENTRADAS

1.Excluir AC sem operadores e administradores cadastrados.

2.Excluir AC apenas com administradores cadastrados.

3.Excluir AC com administradores e operadores cadastrados.

Page 83: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

82

A.6.2 SAIDAS

1.Exibir alerta para erro de preenchimento de senha.

2.Quando a exclusao for realizada com sucesso, deve-se exibir a pagina com a lista de ACs

e ARs cadastradas e a AC excluida nao deve aparecer na lista.

A.6.3 DEPENDENCIAS DE OUTROS CASOS DE TESTE

•Caso de teste A, pagina 77.

•Caso de teste A.1, pagina 77.

•Caso de teste A.4, pagina 80.

A.7 DESATIVAR AUTORIDADE DE REGISTRO

Deve-se destivar uma Autoridade de Registro do sistema. Para isto, selecione o menu Enti-

dades, clique em uma Autoridade de Registro e no botao desativar.

A.7.1 ENTRADAS

1.Desativar AR sem operadores e administradores cadastrados.

2.Desativar AR apenas com administradores cadastrados.

3.Desativar AR com administradores e operadores cadastrados.

4.Desativar AR nao relacionada a uma AC.

5.Desativar AR relacionada a uma AC.

A.7.2 SAIDAS

1.Exibir alerta para erro de preenchimento de senha.

2.Quando o desativacao for realizada com sucesso, deve-se exibir a pagina com a lista de

ACs e ARs cadastradas e a AR destivada deve aparecer na listagem com os textos em cor

cinza.

Page 84: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

83

A.7.3 DEPENDENCIAS DE OUTROS CASOS DE TESTE

•Caso de teste A, pagina 77.

•Caso de teste A.3, pagina 79.

A.8 EXCLUIR AUTORIDADE DE REGISTRO

Deve-se excluir uma Autoridade de Registro do sistema. Para isto, selecione o menu Enti-

dades, clique em uma Autoridade de Registro e no botao excluir.

A.8.1 ENTRADAS

1.Excluir AR sem operadores e administradores cadastrados.

2.Excluir AR apenas com administradores cadastrados.

3.Excluir AR com administradores e operadores cadastrados.

4.Caso uma AR esteja vinculada a uma AC, ela nao pode ser excluida.

A.8.2 SAIDAS

1.Exibir alerta para erro de preenchimento de senha.

2.Quando a exclusao for realizada com sucesso, deve-se exibir a pagina com a lista de ACs

e ARs cadastradas e a AR excluida nao deve aparecer na lista.

A.8.3 DEPENDENCIAS DE OUTROS CASOS DE TESTE

•Caso de teste A, pagina 77.

•Caso de teste A.3, pagina 79.

•Caso de teste A.7, pagina 82.

A.9 CADASTRAR USUARIOS

Deve-se cadastrar usuarios para o sistema. Para isto, deve-se selecionar o menu Usuarios e

clicar em Cadastrar novo usuario.

Page 85: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

84

A.9.1 ENTRADAS

1.Preencher utilizando campos obrigatorios.

2.Preencher utilizando todos os campos obrigatorios.

A.9.2 SAIDAS

1.Exibir alerta para erros de preenchimento.

2.Em caso de sucesso, voltar para a tela de listagem dos usuarios.

A.9.3 DEPENDENCIAS DE OUTROS CASOS DE TESTE

•Caso de teste A, pagina 77.

A.10 EXCLUIR USUARIOS

Deve-se excluir usuarios para o sistema. Para isto, deve-se selecionar o menu Usuarios e

clicar no usuario desejado.

A.10.1 ENTRADAS

1.Verificar dados do usuario e clicar em excluir.

A.10.2 SAIDAS

1.Em caso de sucesso, voltar para a tela de listagem dos usuarios.

A.10.3 DEPENDENCIAS DE OUTROS CASOS DE TESTE

•Caso de teste A, pagina 77.

•Caso de teste A.9, pagina 83.

A.11 CADASTRAR ADMINISTRADORES

Deve-se cadastrar administradores para o sistema. Para isto, deve-se selecionar o menu

Administradores e clicar em Cadastrar novo Administrador.

Page 86: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

85

A.11.1 ENTRADAS

1.Preencher para administrador de AC.

2.Preencher para administrador de AR.

A.11.2 SAIDAS

1.Exibir alerta para erros de preenchimento.

2.Em caso de sucesso, voltar para a tela de listagem dos usuarios.

A.11.3 DEPENDENCIAS DE OUTROS CASOS DE TESTE

•Caso de teste A, pagina 77.

•Caso de teste A.9, pagina 83.

A.12 EXCLUIR ADMINISTRADORES

Deve-se excluir administradores para o sistema. Para isto, deve-se selecionar o menu Ad-

ministradores e marcar o(s) administrador(es) desejado(s).

A.12.1 ENTRADAS

1.Selecionar o(s) administrador(es) desejado(s) e clicar em Excluir selecionadas.

A.12.2 SAIDAS

1.Em caso de sucesso, mostrar tela de listagem sem o(s) administrador(es) removido(s).

A.12.3 DEPENDENCIAS DE OUTROS CASOS DE TESTE

•Caso de teste A, pagina 77.

•Caso de teste A.11, pagina 84.

Page 87: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

86

A.13 ALTERAR DADOS PESSOAIS

Deve-se alterar os dados pessoais do usuario criador. Para isto, selecione o menu de Dados

Pessoais.

A.13.1 ENTRADAS

1.Alterar todos os Dados Pessoais do usuario criador.

A.13.2 SAIDAS

1.Os dados devem ser alterados e aparecer preenchidos na tela.

A.13.3 DEPENDENCIAS DE OUTROS CASOS DE TESTE

•Caso de teste A, pagina 77.

A.14 ALTERAR SENHA PESSOAL

Deve-se alterar a senha pessoal do usuario criador. Para isto, selecione o menu Senha

Pessoal.

A.14.1 ENTRADAS

1.Alterar a senha pessoal.

2.Fazer logoff e logon novamente com a nova senha.

A.14.2 SAIDAS

Nao se aplica.

A.14.3 DEPENDENCIAS DE OUTROS CASOS DE TESTE

•Caso de teste A, pagina 77.

Page 88: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

87

A.15 CADASTRAR NOVO HSM

Deve-se cadastrar um novo HSM. Para isto, selecione o menu HSM e clique em Cadastrar

Novo HSM.

A.15.1 ENTRADAS

1.Preencher todos os campos.

2.Preencher apenas campos obrigatorios.

A.15.2 SAIDAS

1.Em qualquer situacao, apos a realizacao do cadastro, alertar para o status do HSM, indi-

cando com a cor vermelha para erro, amarelo para um aviso de indisponibilidade do hsm

e verde para hsm disponıvel.

2.Indicar erros caso os campos obrigatorios nao sejam preenchidos.

A.15.3 DEPENDENCIAS DE OUTROS CASOS DE TESTE

•Caso de teste A, pagina 77.

A.16 ALTERAR INFORMACOES DO HSM

Deve-se visualizar e alterar informacoes de um HSM. Para isto, selecione o menu HSM e

clique em informacoes do HSM desejado.

A.16.1 ENTRADAS

1.Alterar as informacoes do HSM.

A.16.2 SAIDAS

1.Em qualquer situacao, apos a realizacao do cadastro, alertar para o status do HSM, indi-

cando com a cor vermelha para erro, amarelo para um aviso de indisponibilidade do hsm

e verde para hsm disponıvel.

2.Indicar erros caso os campos obrigatorios nao sejam preenchidos.

Page 89: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

88

A.16.3 DEPENDENCIAS DE OUTROS CASOS DE TESTE

•Caso de teste A, pagina 77.

•Caso de teste A.15, pagina 87.

A.17 CRIAR BACKUP

Em construcao ... modudo de backup ainda em desenvolvimento.

A.17.1 ENTRADAS

1.

2.

A.17.2 SAIDAS

1.

2.

A.17.3 DEPENDENCIAS DE OUTROS CASOS DE TESTE

•Caso de teste A, pagina 77.

A.18 RECUPERAR BACKUP

Em construcao ... modudo de backup ainda em desenvolvimento.

A.18.1 ENTRADAS

1.

2.

A.18.2 SAIDAS

1.

2.

Page 90: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

89

A.18.3 DEPENDENCIAS DE OUTROS CASOS DE TESTE

•Caso de teste A, pagina 77.

A.19 EXPORTAR LOG

Deve-se exportar os logs do sistema. Para isto, selecione o menu Exportar Log.

A.19.1 ENTRADAS

1.Clicar na opcao download dos logs desejados.

2.Selecionar os logs desejados e Excluir.

A.19.2 SAIDAS

1.Os logs devem ser excluidos.

2.Devem ser criado um novo arquivo de log que contenha a informacao de que o log antigo

foi excluıdo.

A.19.3 DEPENDENCIAS DE OUTROS CASOS DE TESTE

•Caso de teste A, pagina 77.

A.20 CRIAR UMA ICP COM VARIOS NIVEIS HIERARQUICOS

Deve-se criar uma ICP com um grande numero de certificados emitidos e varios nıveis

hierarquicos.

A.20.1 ENTRADAS

1.Criar uma Autoridade Certificadora Raiz (ACraiz) e uma AR Vinculada (ARraiz).

2.Criar uma AC Intermediaria (ACi1) emitida pela ACraiz.

3.Criar uma relacao de confiaca entre a ACi1 e a ARraiz. (caso de teste A.34).

4.Criar uma AR (ARi1) cujo certificado sera assinado pela ACi1.

Page 91: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

90

5.Repetir os passos 2, 3 e 4 mas o novo certificado da AC Intermediaria (ACi2) deve ser

emitido pela ACi1, a relacao de confiaca deve ser entre ACi2 e ARi1 e criar uma nova AR

(ARi2).

6.Repetir o item 5 em mais um nıvel.

7.Criar varias requisicoes de certificados para entidades finais e emiti-los a partir das ACs

Finais.

A.20.2 SAIDAS

1.O sistema deve gerenciar corretamente toda a estrutura.

A.20.3 DEPENDENCIAS DE OUTROS CASOS DE TESTE

•Caso de teste A, pagina 77.

•Caso de teste A.34, pagina 97.

A.21 CRIAR UMA ICP COM PATH LENGHT DEFINIDO

Deve-se criar uma ICP com path lenght definido em 2.

A.21.1 ENTRADAS

1.Criar uma Autoridade Certificadora Raiz (ACraiz), definindo Path Lenght em 2.

2.Criar uma AR Vinculada (ARraiz).

3.Criar uma AC Intermediaria (ACi1) emitida pela ACraiz.

4.Criar uma relacao de confiaca entre a ACi1 e a ARraiz. (caso de teste A.34).

5.Criar uma AC Intermediaria (ACi2) emitida pela ACi1.

6.Criar uma relacao de confiaca entre a ACi2 e a ARraiz. (caso de teste A.34).

7.Criar uma AC Intermediaria (ACi3) emitida pela ACi2.

A.21.2 SAIDAS

1.O sistema nao deve permitir que a ACi3 seja ativada.

Page 92: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

91

A.21.3 DEPENDENCIAS DE OUTROS CASOS DE TESTE

•Caso de teste A, pagina 77.

•Caso de teste A.34, pagina 97.

A.22 VERIFICAR SE TODAS AS AC’S APARECEM NA TELA DE AUTENTICACAO

A.22.1 ENTRADAS

1.Na tela de autenticacao deve-se selecionar a opcao Autoridade Certificadora.

A.22.2 SAIDAS

1.No “combo box”Entidade devem aparecer TODAS as Autoridades Certificadoras que

estao regularmente cadastradas.

A.23 EFETUAR AUTENTICACAO COMO ADMINISTRADOR DE UMAAC (AUTORIDADE CERTIFICADORA)

A.23.1 ENTRADAS

1.Selecionar entidade AC.

2.Selecionar funcao Administrador.

3.Informar valores para login e senha.

A.23.2 SAIDAS

1.Caso os valores de login e senha sejam corretos, deve-se redirecionar da pagina de autenticacao

para a pagina inicial de administracao de AC.

2.Caso os valores sejam invalidos, deve-se alertar o usuario e manter o sistema na tela de

login.

Page 93: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

92

A.24 VERIFICAR SE O USUARIO AUTENTICADO E O CORRETO

A.24.1 ENTRADAS

1.Olhar na parte superior do programa, e procurar pelo nome de usuario e sua categoria

(Administrador ou Operador).

A.24.2 SAIDAS

1.Deve estar escrito o nome do usuario, e entre parenteses a sua categoria. Estes devem ser

os dados do usuario que logou-se.

A.24.3 DEPENDENCIAS DE OUTROS CASOS DE TESTE

•Caso de teste A.23, pagina 91.

A.25 VERIFICAR SE O CERTIFICADO DA AC EXISTE

A.25.1 ENTRADAS

1.Clicar no ıcone do certificado da AC, no canto superior esquerdo.

A.25.2 SAIDAS

1.Devera abrir uma tela de “download”de um arquivo com o nome accert.cer (que e o

certificado da AC).

A.25.3 DEPENDENCIAS DE OUTROS CASOS DE TESTE

•Caso de teste A.23, pagina 91.

A.26 VERIFICAR SE A POLITICA UTILIZADA E A CORRETA

A.26.1 ENTRADAS

1.Selecionar Polıtica.

2.Olhar a tabela Modulo de Gerenciamento de Polıtica.

Page 94: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

93

A.26.2 SAIDAS

1.Na tela, devem aparecer todas as extensoes seus respectivos valores e os parametros uti-

lizados para esta AC.

A.26.3 DEPENDENCIAS DE OUTROS CASOS DE TESTE

•Caso de teste A.23, pagina 91.

A.27 EDITAR A POLITICA UTILIZADA

A.27.1 ENTRADAS

1.Selecionar Polıtica.

2.Clicar em Editar Polıtica.

3.Modificar os campos desejados.

4.Clicar em Atualizar.

A.27.2 SAIDAS

1.Se as informacoes estiverem corretas, devera voltar para a tela de Gerenciamento de

Polıtica, e os dados devem aparecer corretamente.

2.Se alguma informacao for cadastrada de forma errada, o sistema devera informar o erro

ao usuario.

A.27.3 DEPENDENCIAS DE OUTROS CASOS DE TESTE

•Caso de teste A.23, pagina 91.

•Caso de teste A.26, pagina 92.

A.28 VERIFICAR OS TEMPLATES CADASTRADOS

A.28.1 ENTRADAS

1.Selecionar Polıtica.

2.Olhar a tabela Templates.

Page 95: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

94

A.28.2 SAIDAS

1.Na tela, devem aparecer o nome e o status de todos os templates cadastrados.

A.28.3 DEPENDENCIAS DE OUTROS CASOS DE TESTE

•Caso de teste A.23, pagina 91.

A.29 INFORMACOES SOBRE TEMPLATES

A.29.1 ENTRADAS

1.Selecionar Polıtica.

2.Clicar em Informacoes de cada template.

A.29.2 SAIDAS

1.Para cada template cadastrado, devera abrir uma tela com as informacoes CORRETAS

sobre o mesmo.

A.29.3 DEPENDENCIAS DE OUTROS CASOS DE TESTE

•Caso de teste A.23, pagina 91.

A.30 CADASTRAR TEMPLATE

A.30.1 ENTRADAS

1.Selecionar Polıtica.

2.Clicar em Cadastrar Template.

3.Modificar os campos desejados.

4.Clicar em Cadastrar Template.

Page 96: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

95

A.30.2 SAIDAS

1.Se as informacoes estiverem corretas, devera voltar para a tela de Gerenciamento de

Polıtica, e o novo template deve aparecer na tabela Templates.

2.Se alguma informacao for cadastrada de forma errada, o sistema devera informar o erro

ao usuario.

A.30.3 DEPENDENCIAS DE OUTROS CASOS DE TESTE

•Caso de teste A.23, pagina 91.

•Caso de teste A.28, pagina 93.

A.31 ALTERAR TEMPLATE

A.31.1 ENTRADAS

1.Selecionar Polıtica.

2.Clicar em Informacoes do Template que desja-se alterar.

3.Clicar em Alterar.

4.Alterar os dados desejados.

5.Clicar em Atualizar Template.

A.31.2 SAIDAS

1.Se as informacoes estiverem corretas, devera voltar para a tela de Gerenciamento de

Polıtica.

2.Se alguma informacao for cadastrada de forma errada, o sistema devera informar o erro

ao usuario.

A.31.3 DEPENDENCIAS DE OUTROS CASOS DE TESTE

•Caso de teste A.23, pagina 91.

•Caso de teste A.28, pagina 93.

•Caso de teste A.30, pagina 94.

Page 97: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

96

A.32 EXCLUIR TEMPLATE

A.32.1 ENTRADAS

1.Selecionar Polıtica.

2.Clicar em Informacoes do Template que desja-se alterar.

3.Clicar em Excluir.

A.32.2 SAIDAS

1.Se as informacoes estiverem corretas, devera voltar para a tela de Gerenciamento de

Polıtica e o Template nao devera mai aparecer na tabela Templates.

2.Se alguma informacao for cadastrada de forma errada, o sistema devera informar o erro

ao usuario.

A.32.3 DEPENDENCIAS DE OUTROS CASOS DE TESTE

•Caso de teste A.23, pagina 91.

•Caso de teste A.28, pagina 93.

•Caso de teste A.30, pagina 94.

A.33 VERIFICAR ENTIDADES CONFIAVEIS

A.33.1 ENTRADAS

1.Selecionar Relacoes de Confianca.

2.Olhar as tabelas.

A.33.2 SAIDAS

1.Devem aparecer todos os nomes das entidades confiaveis e seus respectivos tipos.

A.33.3 DEPENDENCIAS DE OUTROS CASOS DE TESTE

•Caso de teste A.23, pagina 91.

Page 98: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

97

A.34 CADASTRAR NOVO RELACIONAMENTO DE CONFIANCA EMUMA AR INTERNA

A.34.1 ENTRADAS

1.Selecionar Relacoes de Confianca.

2.Clicar em Cadastrar Novo Relacionamento de Confianca.

3.Selecionar Autoridade Interna.

4.Selecionar alguma Autoridade de Registro existente na “combo box”Entidade Interna.

5.Clicar em Cadastrar.

A.34.2 SAIDAS

1.Se todos os campos estiverem corretos, devera ser redirecionado para a lista de relacoes

de confianca.

2.Se algum dado for preenchido incorretamente, o usuario devera ser informado.

A.34.3 DEPENDENCIAS DE OUTROS CASOS DE TESTE

•Caso de teste A.23, pagina 91.

•Caso de teste A.33, pagina 96.

A.35 CADASTRAR NOVO RELACIONAMENTO DE CONFIANCA EMUMA AR EXTERNA CADASTRADA

A.35.1 ENTRADAS

1.Selecionar Relacoes de Confianca.

2.Clicar em Cadastrar Novo Relacionamento de Confianca.

3.Selecionar Autoridade Externa Cadastrada.

4.Selecionar alguma Autoridade de Registro existente na “combo box”Entidade Externa.

5.Clicar em Cadastrar.

Page 99: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

98

A.35.2 SAIDAS

1.Se todos os campos estiverem corretos, devera ser redirecionado para a lista de relacoes

de confianca.

2.Se algum dado for preenchido incorretamente, o usuario devera ser informado.

A.35.3 DEPENDENCIAS DE OUTROS CASOS DE TESTE

•Caso de teste A.23, pagina 91.

•Caso de teste A.33, pagina 96.

A.36 CADASTRAR NOVO RELACIONAMENTO DE CONFIANCA EMUMA AR EXTERNA NAO CADASTRADA

A.36.1 ENTRADAS

1.Selecionar Relacoes de Confianca.

2.Clicar em Cadastrar Novo Relacionamento de Confianca.

3.Selecionar Autoridade Externa Nao Cadastrada.

4.Clicar no botao Arquivo...

5.Selecionar o arquivo.

6.Clicar em Cadastrar.

A.36.2 SAIDAS

1.Se o arquivo for valido, devera ir para a tela que mostra as Entidades Externas confiaveis.

A AC adicionada deve aparecer na lista de ACs Confiaveis.

2.Se o arquivo for invalido, o usuario devera receber uma mensagem de erro.

A.36.3 DEPENDENCIAS DE OUTROS CASOS DE TESTE

•Caso de teste A.23, pagina 91.

•Caso de teste A.33, pagina 96.

Page 100: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

99

A.37 EXLUIR RELACIONAMENTO DE CONFIANCA

A.37.1 ENTRADAS

1.Selecionar Relacoes de Confianca.

2.Selecionar a Autoridade de Registro que desja-se exlcuir.

3.Clicar em Exlcuir selecionadas.

4.Clicar em OK.

A.37.2 SAIDAS

1.Se as informacoes estiverem corretas, devera voltar para a tela de Relacoes de Confianca,

e a Autoridade de Registro nao aparecera na tabela Autoridade de Registro Confiaveis.

2.Se alguma informacao for cadastrada de forma errada, o sistema devera informar o erro

ao usuario.

A.37.3 DEPENDENCIAS DE OUTROS CASOS DE TESTE

•Caso de teste A.23, pagina 91.

•Caso de teste A.33, pagina 96.

•Caso de teste A.34, pagina 97.

•Caso de teste A.35, pagina 97.

•Caso de teste A.36, pagina 98.

A.38 USUARIOS APARECEM CORRETAMENTE

A.38.1 ENTRADAS

1.Selecionar Usuarios.

2.Olhar a lista.

A.38.2 SAIDAS

1.Na tela, devem aparecer todos os usuarios corretamente.

Page 101: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

100

A.38.3 DEPENDENCIAS DE OUTROS CASOS DE TESTE

•Caso de teste A.23, pagina 91.

A.39 INFORMACOES SOBRE USUARIOS

A.39.1 ENTRADAS

1.Selecionar Usuarios.

2.Clicar em Informacoes de cada usuario.

A.39.2 SAIDAS

1.Para cada usuario, devera abrir uma tela com as informacoes CORRETAS sobre o mesmo.

A.39.3 DEPENDENCIAS DE OUTROS CASOS DE TESTE

•Caso de teste A.23, pagina 91.

•Caso de teste A.38, pagina 99.

A.40 CADASTRAR NOVO USUARIO

A.40.1 ENTRADAS

1.Selecionar Usuarios.

2.Selecionar Cadastrar Novo Usuario.

3.Preencher as informacoes login, nome, e-mail, data de nascimento, cpf e endereco.

4.Clicar em Cadastrar.

A.40.2 SAIDAS

1.Se as informacoes estiverem corretas, devera voltar para a tela em que aparecem os

usuarios, e o novo usuario devera estar presente com as Informacoes corretas.

2.Se alguma informacao for cadastrada de forma errada, o sistema devera informar o erro

ao usuario.

Page 102: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

101

A.40.3 DEPENDENCIAS DE OUTROS CASOS DE TESTE

•Caso de teste A.23, pagina 91.

•Caso de teste A.38, pagina 99.

A.41 EXCLUIR USUARIO

A.41.1 ENTRADAS

1.Selecionar Usuarios.

2.Clicar em Informacoes do usuario que deseja-se excluir.

3.Clicar em Excluir.

A.41.2 SAIDAS

1.Se o usuario, que deseja-se excluir, foi criado por um Administrador desta AC, devera

voltar para a tela em que aparecem os usuarios, e o antigo usuario nao estara presente.

2.Se o usuario, que deseja-se excluir, foi criado por outro Administrador, nao sera possıvel

clicar em Excluir.

A.41.3 DEPENDENCIAS DE OUTROS CASOS DE TESTE

•Caso de teste A.23, pagina 91.

•Caso de teste A.38, pagina 99.

•Caso de teste A.40, pagina 100.

A.42 OPERADORES APARECEM CORRETAMENTE

A.42.1 ENTRADAS

1.Selecionar Operadores.

2.Olhar a lista.

Page 103: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

102

A.42.2 SAIDAS

1.Na tela, devem aparecer todos os operadores corretamente.

A.42.3 DEPENDENCIAS DE OUTROS CASOS DE TESTE

•Caso de teste A.23, pagina 91.

A.43 CADASTRAR NOVO OPERADOR

A.43.1 ENTRADAS

1.Selecionar Operadores.

2.Selecionar Cadastrar Novo Operador.

3.Preencher as informacoes usuario, senha para o operador, confirmacao da senha e senha

do administrador.

4.Clicar em Cadastrar.

A.43.2 SAIDAS

1.Se as informacoes estiverem corretas, devera voltar para a tela em que aparecem os ope-

radores, e o novo operados devera estar presente com as Informacoes corretas.

2.Se alguma informacao for cadastrada de forma errada, o sistema devera informar o erro

ao usuario.

A.43.3 DEPENDENCIAS DE OUTROS CASOS DE TESTE

•Caso de teste A.23, pagina 91.

•Caso de teste A.42, pagina 101.

A.44 EXCLUIR OPERADORES

A.44.1 ENTRADAS

1.Selecionar Operadores.

Page 104: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

103

2.Selecionar um ou mais operadores.

3.Selecionar Excluir selecionadas.

4.Confirmar a exclusao.

A.44.2 SAIDAS

1.Se a exclusao for confirmada, devera voltar para a tela em que aparecem os operadores, e

o operador excluıdo nao aparecera mais.

2.Se a exclusao for cancelada, devera voltar para a tela em que aparecem os operadores,

e o operador que foi selecionado para ser excluıdo (mas que nao foi) devera continuar

aparecendo.

A.44.3 DEPENDENCIAS DE OUTROS CASOS DE TESTE

•Caso de teste A.23, pagina 91.

•Caso de teste A.42, pagina 101.

•Caso de teste A.43, pagina 102.

A.45 VERIFICAR OS EXTENSOES CADASTRADOS

A.45.1 ENTRADAS

1.Selecionar Extensoes.

2.Olhar a tabela.

A.45.2 SAIDAS

1.Na tela, devem aparecer o OID e o Valor de todos as extensoes cadastradas.

A.45.3 DEPENDENCIAS DE OUTROS CASOS DE TESTE

•Caso de teste A.23, pagina 91.

Page 105: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

104

A.46 INFORMACOES SOBRE EXTENSOES

A.46.1 ENTRADAS

1.Selecionar Extensoes.

2.Clicar em Informacoes de cada extensao.

A.46.2 SAIDAS

1.Para cada extensao cadastrado, devera abrir uma tela com as informacoes CORRETAS

sobre o mesmo.

A.46.3 DEPENDENCIAS DE OUTROS CASOS DE TESTE

•Caso de teste A.23, pagina 91.

•Caso de teste A.45, pagina 103.

A.47 CADASTRAR EXTENSOES

A.47.1 ENTRADAS

1.Selecionar Extensoes.

2.Clicar em Cadastrar Nova Extensao.

3.Modificar os campos desejados.

4.Clicar em Cadastrar.

A.47.2 SAIDAS

1.Se as informacoes estiverem corretas, devera voltar para a tela de Gerenciamento de Ex-

tensoes, e a nova extensao deve aparecer na tabela Extensoes.

2.Se alguma informacao for cadastrada de forma errada, o sistema devera informar o erro

ao usuario.

Page 106: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

105

A.47.3 DEPENDENCIAS DE OUTROS CASOS DE TESTE

•Caso de teste A.23, pagina 91.

•Caso de teste A.45, pagina 103.

A.48 ALTERAR EXTENSOES

A.48.1 ENTRADAS

1.Selecionar Extensoes.

2.Clicar em Informacoes da extensao que deseja-se alterar.

3.Clicar em Alterar.

4.Modificar o(s) campo(s) desejado(s).

5.Clicar em Atualizar.

A.48.2 SAIDAS

1.Se as informacoes estiverem corretas, devera voltar para a tela de Gerenciamento de Ex-

tensoes, e a extensao deve aparecer na tabela Extensoes com seus dados atualizados.

2.Se alguma informacao for cadastrada de forma errada, o sistema devera informar o erro

ao usuario.

A.48.3 DEPENDENCIAS DE OUTROS CASOS DE TESTE

•Caso de teste A.23, pagina 91.

•Caso de teste A.45, pagina 103.

A.49 EXCLUIR EXTENSOES

A.49.1 ENTRADAS

1.Selecionar Extensoes.

2.Clicar em Informacoes da extensao que deseja-se excluir.

3.Clicar em Excluir.

Page 107: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

106

A.49.2 SAIDAS

1.Se as informacoes estiverem corretas, devera voltar para a tela de Gerenciamento de Ex-

tensoes, e a extensao nao aparecera na tabela Extensoes.

2.Se alguma informacao for cadastrada de forma errada, o sistema devera informar o erro

ao usuario.

A.49.3 DEPENDENCIAS DE OUTROS CASOS DE TESTE

•Caso de teste A.23, pagina 91.

•Caso de teste A.45, pagina 103.

A.50 ALTERAR DADOS PESSOAIS

A.50.1 ENTRADAS

1.Selecionar Dados Pessoais.

2.Alterar os campos nome, e-mail, data de nascimento, CPF e endereco.

3.Clicar em Atualizar.

A.50.2 SAIDAS

1.Se nao houverem campos com dados errados, o sistema devera voltar para a tela inicial de

administracao da AC. Se isto acontecer, faca o caso de teste A.38 da pagina 99 e o caso

de teste A.39 na pagina 100.

2.Se houver algum campo com dados errados, o sistema devera informar ao usuario.

A.50.3 DEPENDENCIAS DE OUTROS CASOS DE TESTE

•Caso de teste A.23, pagina 91.

A.51 ALTERAR SENHA PESSOAL

A.51.1 ENTRADAS

1.Selecionar Senha Pessoal.

Page 108: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

107

2.Preencher as informacoes senha antiga, nova senha, e confirmacao da nova senha.

3.Clicar em Alterar.

4.Selecionar Sair.

5.Executar o caso de teste A.23 da pagina 91, com a nova senha.

A.51.2 SAIDAS

1.Se as informacoes estiverem todas corretos, o sistema devera voltar para a tela inicial de

administracao da AC.

2.Se alguma informacao for invalida, o sistema devera informar ao usuario.

A.51.3 DEPENDENCIAS DE OUTROS CASOS DE TESTE

•Caso de teste A.23, pagina 91.

A.52 EFETUAR AUTENTICACAO COMO OPERADOR DE UMA AC (AU-TORIDADE CERTIFICADORA)

A.52.1 ENTRADAS

1.Selecionar entidade AC.

2.Selecionar funcao Operador.

3.Informar valores para login e senha.

A.52.2 SAIDAS

1.Caso os valores de login e senha sejam corretos, deve-se redirecionar da pagina de autenticacao

para a pagina inicial de operacao de AC.

2.Caso os valores sejam invalidos, deve-se alertar o usuario e manter o sistema na tela de

login.

Page 109: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

108

A.53 VERIFICAR SE O USUARIO AUTENTICADO E O CORRETO

A.53.1 ENTRADAS

1.Olhar na parte superior do programa, e procurar pelo nome de usuario e sua categoria

(Administrador ou Operador).

A.53.2 SAIDAS

1.Deve estar escrito o nome do usuario, e entre parenteses a sua categoria. Estes devem ser

os dados do usuario que logou-se.

A.53.3 DEPENDENCIAS DE OUTROS CASOS DE TESTE

•Caso de teste A.52, pagina 107.

A.54 VERIFICAR SE O CERTIFICADO DA AC EXISTE

A.54.1 ENTRADAS

1.Clicar no ıcone do certificado da AC, no canto superior esquerdo.

A.54.2 SAIDAS

1.Devera abrir uma tela de “download”de um arquivo com o nome accert.cer (que e o

certificado da AC).

A.54.3 DEPENDENCIAS DE OUTROS CASOS DE TESTE

•Caso de teste A.52, pagina 107.

A.55 VERIFICAR SE AS REQUISICOES APARECEM CORRETAMENTE

A.55.1 ENTRADAS

1.Selecionar Gerenciamento de Requisicoes.

2.Selecionar Aguardando avaliacao da AC.

Page 110: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

109

3.Olhar a lista.

4.Selecionar Certificado Emitido pela AC.

5.Olhar a lista.

6.Selecionar Rejeitada pela AC.

7.Olhar a lista.

8.Certificado Revogado.

9.Olhar a lista.

A.55.2 SAIDAS

1.A cada item selecionado verificar lista de requisicoes, as informacoes apresentadas devem

aparecer corretamente.

A.55.3 DEPENDENCIAS DE OUTROS CASOS DE TESTE

•Caso de teste A.52, pagina 107.

•Caso de teste A.86, pagina 127.

•Caso de teste A.56, pagina 109.

•Caso de teste A.57, pagina 110.

•Caso de teste A.60, pagina 112.

A.56 APROVAR REQUISICOES

A.56.1 ENTRADAS

1.Selecionar Gerenciamento de Requisicoes.

2.Selecionar uma requisicao.

3.Clicar em Emitir certificados.

4.Preencher o campo senha do operador AR.

5.Clicar em Confirmar Aprovacao.

Page 111: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

110

A.56.2 SAIDAS

1.Se todos os campos forem preenchidos corretamente, sera redirecionado para a tela de

gerenciamento de requisicoes.

2.Se algum campo for preenchido de forma errada, o usuario devera ser informado atraves

de uma mensagem de erro.

A.56.3 DEPENDENCIAS DE OUTROS CASOS DE TESTE

•Caso de teste A.52, pagina 107.

•Caso de teste A.86, pagina 127.

A.57 REJEITAR REQUISICOES

A.57.1 ENTRADAS

1.Selecionar Gerenciamento de Requisicoes.

2.Selecionar uma requisicao.

3.Clicar em Rejeitar selecionadas.

4.Preencher o campo senha do operador AR.

5.Clicar em Confirmar Rejeicao.

A.57.2 SAIDAS

1.Se todos os campos forem preenchidos corretamente, sera redirecionado para a tela de

gerenciamento de requisicoes. A requisicao rejeitada nao aparecera mais na lista Aguar-

dando Requisicao AR. Aparecera na lista Rejeitadas pela AR.

2.Se algum campo for preenchido de forma errada, o usuario devera ser informado atraves

de uma mensagem de erro.

A.57.3 DEPENDENCIAS DE OUTROS CASOS DE TESTE

•Caso de teste A.52, pagina 107.

•Caso de teste A.86, pagina 127.

Page 112: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

111

A.58 IMPORTAR UMA REQUISICAO POR ARQUIVO

A.58.1 ENTRADAS

1.Selecione Gerenciamento de Requisicoes.

2.Selecione Importar requisicao.

3.Seleciona a AR validadora da requisicao, atraves do “combo box”.

4.Clique em Arquivo...

5.Selecione o Arquivo.

6.Clique em Cadastrar.

A.58.2 SAIDAS

1.Se tudo ocorrer de forma correta, devera voltar para a tela de Importacao de Requisicao

2.Se houver algo errado, o usuario devera ser informado.

A.58.3 DEPENDENCIAS DE OUTROS CASOS DE TESTE

•Caso de teste A.52, pagina 107.

•Caso de teste A.86, pagina 127.

A.59 VERIFICAR LISTA DE PEDIDOS DE REVOGACAO DE CERTIFI-CADOS

A.59.1 ENTRADAS

1.Selecione Revogacao de Certificados.

2.Olhe a lista.

A.59.2 SAIDAS

1.Devera aparecer todos os pedidos de revogacao de certificados que ainda nao tiveram

aprovacao da AC.

Page 113: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

112

A.59.3 DEPENDENCIAS DE OUTROS CASOS DE TESTE

•Caso de teste A.52, pagina 107.

A.60 REVOGAR DE UM CERTIFICADO

A.60.1 ENTRADAS

1.Selecione Revogacao de Certificados.

2.Selecione o certificado a ser revoado.

3.Clique em Revogar selecionados.

4.Informar a senha do Operador.

5.Clique em Comfirmar Revogacao.

A.60.2 SAIDAS

1.Se todos os dados forem preenchidos corretamente, devera ser redirecionado para a tela

Revogacao de Certificados.

2.Se algum dado estiver incorreto, o usuario devera ser informado.

A.60.3 DEPENDENCIAS DE OUTROS CASOS DE TESTE

•Caso de teste A.52, pagina 107.

•Caso de teste A.59, pagina 111.

•Caso de teste A.90, pagina 130.

A.61 GERAR LISTA DE CERTIFICADOS REVOGADOS

A.61.1 ENTRADAS

1.Selecionar LCRs.

2.Clicar em Gerar Lista de Certificados Revogados.

3.Informar a senha do Operador.

4.Clicar em Gerar LCR.

Page 114: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

113

A.61.2 SAIDAS

1.Se nao houverem campos com dados errados, o sistema devera voltar para a tela anterior,

atualizara as datas e adicionara a lista gerada a tabela de LCRs.

2.Se houver algum campo com dados errados, o sistema devera informar ao usuario.

A.61.3 DEPENDENCIAS DE OUTROS CASOS DE TESTE

•Caso de teste A.52, pagina 107.

A.62 PUBLICACAO DE CERTIFICADOS E LCRS

A.62.1 ENTRADAS

1.Selecionar Publicacao de Certificados e LCRs.

2.Preencer os campos.

3.Clicar em Gerar arquivo LDIF.

A.62.2 SAIDAS

1.Se nao houverem campos com dados errados, e a polıtica da AC permitir publicacao de

certificados digitais, o sistema devera ir para um tela que mostra a mensagem Operacao

concluıda com suscesso.

2.Se houver algum campo com dados errados ou alguma outra restricao, o sistema devera

informar ao usuario.

A.62.3 DEPENDENCIAS DE OUTROS CASOS DE TESTE

•Caso de teste A.52, pagina 107.

A.63 ALTERAR DADOS PESSOAIS

A.63.1 ENTRADAS

1.Selecionar Dados Pessoais.

Page 115: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

114

2.Alterar os campos nome, e-mail, data de nascimento, CPF e endereco.

3.Clicar em Atualizar.

A.63.2 SAIDAS

1.Se nao houverem campos com dados errados, o sistema devera voltar para a tela inicial

de operacao de AR.

2.Se houver algum campo com dados errados, o sistema devera informar ao usuario.

A.63.3 DEPENDENCIAS DE OUTROS CASOS DE TESTE

•Caso de teste A.52, pagina 107.

A.64 ALTERAR SENHA PESSOAL

A.64.1 ENTRADAS

1.Selecionar Senha Pessoal.

2.Preencher as informacoes senha antiga, nova senha, e confirmacao da nova senha.

3.Clicar em Alterar.

4.Selecionar Sair.

5.Executar o caso de teste A.52 da pagina 107, com a nova senha.

A.64.2 SAIDAS

1.Se as informacoes estiverem todas corretos, o sistema devera voltar para a tela inicial de

operacao da AC.

2.Se alguma informacao for invalida, o sistema devera informar ao usuario.

A.64.3 DEPENDENCIAS DE OUTROS CASOS DE TESTE

•Caso de teste A.52, pagina 107.

Page 116: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

115

A.65 VERIFICAR SE TODAS AS AR’S APARECEM NA TELA DE AUTENTICACAO

Verifica na tela de login, se todas as Autoridades de Registro aparecem corretamente.

A.65.1 ENTRADAS

1.Na tela de autenticacao deve-se selecionar a opcao Autoridade de Registro.

A.65.2 SAIDAS

1.No “combo box”Entidade devem aparecer TODAS as Autoridades de Registro que estao

regularmente cadastradas.

A.66 EFETUAR AUTENTICACAO COMO ADMINISTRADOR DE UMAAR (AUTORIDADE DE REGISTRO)

Efetua o login como Administrador de uma Autoridade de Registro

A.66.1 ENTRADAS

1.Selecionar entidade AR.

2.Selecionar funcao Administrador.

3.Informar valores para login e senha.

A.66.2 SAIDAS

1.Caso os valores de login e senha sejam corretos, deve-se redirecionar da pagina de autenticacao

para a pagina inicial de administracao de AR.

2.Caso os valores sejam invalidos, deve-se alertar o usuario e manter o sistema na tela de

login.

A.67 VERIFICAR SE O USUARIO AUTENTICADO E O CORRETO

Ao efetuar login, verifica se o usuario que esta logado e o correto.

Page 117: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

116

A.67.1 ENTRADAS

1.Olhar na parte superior do programa, e procurar pelo nome de usuario e sua categoria

(Administrador ou Operador).

A.67.2 SAIDAS

1.Deve estar escrito o nome do usuario, e entre parenteses a sua categoria. Estes devem ser

os dados do usuario que logou-se.

A.67.3 DEPENDENCIAS DE OUTROS CASOS DE TESTE

•Caso de teste A.66, pagina 115.

A.68 VERIFICAR SE O CERTIFICADO DA AR EXISTE

Verifica se o certificado que e mostrado na tela de Administracao de Autoridades de Regis-

tro esta salvo em algum lugar (ele existe em algum meio)

A.68.1 ENTRADAS

1.Clicar no ıcone do certificado da AR, no canto superior esquerdo.

A.68.2 SAIDAS

1.Devera abrir uma tela de “download”de um arquivo com o nome arcert.cer (que e o certi-

ficado da AR).

A.68.3 DEPENDENCIAS DE OUTROS CASOS DE TESTE

•Caso de teste A.66, pagina 115.

A.69 ENTIDADES EXTERNAS - VERIFICAR AR’S CONFIAVEIS

Verifica se a lista de Autoridade de Registro confiaveis esta correta (nao esta faltando ne-

nhuma autoridade, e nem ha autoridades “a mais”).

Page 118: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

117

A.69.1 ENTRADAS

1.Selecionar Entidades Externas

2.Olhar a lista de Autoridades de Registro Confiaveis.

A.69.2 SAIDAS

1.Deverao aparecer TODAS as AR’s confiaveis.

A.69.3 DEPENDENCIAS DE OUTROS CASOS DE TESTE

•Caso de teste A.66, pagina 115.

A.70 CADASTRAR NOVO RELACIONAMENTO DE CONFIANCA EMUMA AR EXTERNA CADASTRADA

Cadastra um relacionamento de confianca em uma Autoridade de Registro Externa.

A.70.1 ENTRADAS

1.Selecionar Entidades Externas.

2.Selecionar Cadastrar Novo Relacionamento de Confianca.

3.Selecionar Autoridade Externa Cadastrada.

4.Selecionar alguma Autoridade de Registro existente na “combo box”Entidade Externa.

5.Clicar em Cadastrar.

A.70.2 SAIDAS

1.Se todos os campos estiverem corretos, devera ser redirecionado para a lista de relacoes

de confianca

2.Se algum dado for preenchido incorretamente, o usuario devera ser informado

Page 119: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

118

A.70.3 DEPENDENCIAS DE OUTROS CASOS DE TESTE

•Caso de teste A.66, pagina 115.

•Caso de teste A.60, pagina 112.

A.71 CADASTRAR NOVO RELACIONAMENTO DE CONFIANCA EMUMA AR EXTERNA NAO CADASTRADA

Efetua o cadastro de um relacionamento de confianca em uma Autoridade de Registro Ex-

terna.

A.71.1 ENTRADAS

1.Selecionar Entidades Externas.

2.Selecionar Cadastrar Novo Relacionamento de Confianca.

3.Selecionar Autoridade Externa Nao Cadastrada.

4.Clicar no botao Arquivo...

5.Selecionar o arquivo.

6.Clicar no botao Cadastrar.

A.71.2 SAIDAS

1.Se o arquivo for valido, devera ir para a tela que mostra as Entidades Externas confiaveis.

A AC adicionada deve aparecer na lista de ACs Confiaveis.

2.Se o arquivo for invalido, o usuario devera receber uma mensagem de erro.

A.71.3 DEPENDENCIAS DE OUTROS CASOS DE TESTE

•Caso de teste A.66, pagina 115.

A.72 ARQUIVO DE CONFIGURACAO - MUDAR PARA SIM

Altera a opcao do arquivo de configuracao para sim.

Page 120: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

119

A.72.1 ENTRADAS

1.Selecionar Arquivo de Configuracao.

2.Selecionar sim.

3.Clicar em Atualizar.

A.72.2 SAIDAS

1.O sistema devera continuar na mesma tela, sem exibir nenhum erro, porem com a opcao

selecionada em SIM. Para confirmar que o arquivo de configuracao esta sendo publicado,

devera clicar no link Arquivos de configuracao, na pagina de login. E verificar na lista-

gem, se existe a AR que foi publicado o arquivo de configuracao.

A.72.3 DEPENDENCIAS DE OUTROS CASOS DE TESTE

•Caso de teste A.66, pagina 115.

A.73 ARQUIVO DE CONFIGURACAO - MUDAR PARA NAO

Altera a opcao do arquivo de configuracao para nao.

A.73.1 ENTRADAS

1.Selecionar Arquivo de Configuracao.

2.Selecionar nao.

3.Clicar em Atualizar.

A.73.2 SAIDAS

1.O sistema devera continuar na mesma tela, sem exibir nenhum erro, porem com a opcao

selecionada em NAO. Para confirmar que o arquivo de configuracao nao esta sendo pu-

blicado, devera ser tentado estabelecer uma relacao de confianca, entre esta AR, e uma

outra AC.

Page 121: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

120

A.73.3 DEPENDENCIAS DE OUTROS CASOS DE TESTE

•Caso de teste A.66, pagina 115.

A.74 USUARIOS APARECEM CORRETAMENTE

Verifica se na lista de usuarios, aparecem os usuarios corretos.

A.74.1 ENTRADAS

1.Selecionar Usuarios.

2.Olhar a lista.

A.74.2 SAIDAS

1.Na tela, devem aparecer todos os usuarios corretamente.

A.74.3 DEPENDENCIAS DE OUTROS CASOS DE TESTE

•Caso de teste A.66, pagina 115.

A.75 INFORMACOES SOBRE USUARIOS

A.75.1 ENTRADAS

1.Selecionar Usuarios.

2.Clicar em Informacoes de cada usuario.

A.75.2 SAIDAS

1.Para cada usuario, devera abrir uma tela com as informacoes CORRETAS sobre o mesmo.

A.75.3 DEPENDENCIAS DE OUTROS CASOS DE TESTE

•Caso de teste A.66, pagina 115.

•Caso de teste A.74, pagina 120.

Page 122: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

121

A.76 CADASTRAR NOVO USUARIO

Cadastra um novo usuario vinculado ao administrador logado atualmente no sistema.

A.76.1 ENTRADAS

1.Selecionar Usuarios.

2.Selecionar Cadastrar Novo Usuario.

3.Preencher as informacoes login, nome, e-mail, data de nascimento, cpf e endereco.

4.Clicar em Cadastrar.

A.76.2 SAIDAS

1.Se as informacoes estiverem corretas, devera voltar para a tela em que aparecem os

usuarios, e o novo usuario devera estar presente com as Informacoes corretas.

2.Se alguma informacao for cadastrada de forma errada, o sistema devera informar o erro

ao usuario.

A.76.3 DEPENDENCIAS DE OUTROS CASOS DE TESTE

•Caso de teste A.66, pagina 115.

•Caso de teste A.74, pagina 120.

A.77 OPERADORES APARECEM CORRETAMENTE

Verfica se na lista de operadores aparecem os operadores corretos.

A.77.1 ENTRADAS

1.Selecionar Operadores.

2.Olhar a lista.

A.77.2 SAIDAS

1.Na tela, devem aparecer todos os operadores corretamente.

Page 123: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

122

A.77.3 DEPENDENCIAS DE OUTROS CASOS DE TESTE

•Caso de teste A.66, pagina 115.

A.78 CADASTRAR NOVO OPERADOR

Cadastra um novo operador vinculado ao administrador atualmente logado no sistema.

A.78.1 ENTRADAS

1.Selecionar Operadores.

2.Selecionar Cadastrar Novo Operador.

3.Preencher as informacoes usuario, senha para o operador, confirmacao da senha e senha

do administrador.

4.Clicar em Cadastrar.

A.78.2 SAIDAS

1.Se as informacoes estiverem corretas, devera voltar para a tela em que aparecem os ope-

radores, e o novo operados devera estar presente com as Informacoes corretas.

2.Se alguma informacao for cadastrada de forma errada, o sistema devera informar o erro

ao usuario.

A.78.3 DEPENDENCIAS DE OUTROS CASOS DE TESTE

•Caso de teste A.66, pagina 115.

•Caso de teste A.77, pagina 121.

A.79 EXCLUIR OPERADORES

Apaga algum operador da lista de operadores.

Page 124: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

123

A.79.1 ENTRADAS

1.Selecionar Operadores.

2.Selecionar um ou mais operadores.

3.Selecionar Excluir selecionadas.

4.Confirmar a exclusao.

A.79.2 SAIDAS

1.Se a exclusao for confirmada, devera voltar para a tela em que aparecem os operadores, e

o operador excluıdo nao aparecera mais.

2.Se a exclusao for cancelada, devera voltar para a tela em que aparecem os operadores,

e o operador que foi selecionado para ser excluıdo (mas que nao foi) devera continuar

aparecendo.

A.79.3 DEPENDENCIAS DE OUTROS CASOS DE TESTE

•Caso de teste A.66, pagina 115.

•Caso de teste A.77, pagina 121.

•Caso de teste A.78, pagina 122.

A.80 ALTERAR DADOS PESSOAIS

Altera os dados pessoas do usuario atualmente logado no sistema.

A.80.1 ENTRADAS

1.Selecionar Dados Pessoais.

2.Alterar os campos nome, e-mail, data de nascimento, CPF e endereco.

3.Clicar em Atualizar.

Page 125: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

124

A.80.2 SAIDAS

1.Se nao houverem campos com dados errados, o sistema devera voltar para a tela inicial

de administracao da AR. Se isto acontecer, faca o caso de teste A.74 da pagina 120 e o

caso de teste A.75 na pagina 120.

2.Se houver algum campo com dados errados, o sistema devera informar ao usuario.

A.80.3 DEPENDENCIAS DE OUTROS CASOS DE TESTE

•Caso de teste A.66, pagina 115.

A.81 ALTERAR SENHA PESSOAL

Altera a senha do usuario atualmente logado no sistema.

A.81.1 ENTRADAS

1.Selecionar Senha Pessoal.

2.Preencher as informacoes senha antiga, nova senha, e confirmacao da nova senha.

3.Clicar em Alterar.

4.Selecionar Sair.

5.Executar o caso de teste A.66 da pagina 115, com a nova senha.

A.81.2 SAIDAS

1.Se as informacoes estiverem todas corretos, o sistema devera voltar para a tela inicial de

administracao da AR.

2.Se alguma informacao for invalida, o sistema devera informar ao usuario.

A.81.3 DEPENDENCIAS DE OUTROS CASOS DE TESTE

•Caso de teste A.66, pagina 115.

Page 126: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

125

A.82 EFETUAR AUTENTICACAO COMO OPERADOR DE UMA AR (AU-TORIDADE DE REGISTRO)

Efetua o login como Operador de uma Autoridade de Registro.

A.82.1 ENTRADAS

1.Selecionar entidade AR.

2.Selecionar funcao Operador.

3.Informar valores para login e senha.

A.82.2 SAIDAS

1.Caso os valores de login e senha sejam corretos, deve-se redirecionar da pagina de autenticacao

para a pagina inicial de operacao de AR.

2.Caso os valores sejam invalidos, deve-se alertar o usuario e manter o sistema na tela de

login.

A.83 VERIFICAR SE O USUARIO AUTENTICADO E O CORRETO

Ao efetuar login, verifica se o usuario que esta logado e o correto.

A.83.1 ENTRADAS

1.Olhar na parte superior do programa, e procurar pelo nome de usuario e sua categoria

(devera ser Operador).

A.83.2 SAIDAS

1.Deve estar escrito o nome do usuario, e entre parenteses a sua categoria. Estes devem ser

os dados do usuario que logou-se.

A.83.3 DEPENDENCIAS DE OUTROS CASOS DE TESTE

•Caso de teste A.82, pagina 125.

Page 127: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

126

A.84 VERIFICAR SE O CERTIFICADO DA AR EXISTE

Verifica se o certificado que e mostrado na tela de Administracao de Autoridades de Regis-

tro esta salvo em algum lugar (ele existe em algum meio).

A.84.1 ENTRADAS

1.Clicar no ıcone do certificado da AR, no canto superior esquerdo.

A.84.2 SAIDAS

1.Devera abrir uma tela de “download”de um arquivo com o nome arcert.cer (que e o certi-

ficado da AR).

A.84.3 DEPENDENCIAS DE OUTROS CASOS DE TESTE

•Caso de teste A.82, pagina 125.

A.85 VERIFICAR SE AS REQUISICOES APARECEM CORRETAMENTE

Verifica se as requisicoes feitas por outras entidades entao aparecendo corretamente.

A.85.1 ENTRADAS

1.Selecionar Gerenciamento de Requisicoes.

2.Selecionar Aguardando avaliacao da AR.

3.Olhar a lista.

4.Selecionar Rejeitada pela AR.

5.Olhar a lista.

6.Aguardando avaliacao da AC.

7.Olhar a lista.

8.Selecionar Certificado Emitido pela AC.

9.Olhar a lista.

Page 128: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

127

10.Selecionar Rejeitada pela AC.

11.Olhar a lista.

12.Certificado Revogado.

13.Olhar a lista.

postgres add userpostgres add user

A.85.2 SAIDAS

1.A cada item selecionado verificar lista de requisicoes, as informacoes apresentadas devem

aparecer corretamente.

A.85.3 DEPENDENCIAS DE OUTROS CASOS DE TESTE

•Caso de teste A.82, pagina 125.

•Caso de teste A.1, pagina 77.

•Caso de teste A.3, pagina 79.

•Caso de teste A.86, pagina 127.

•Caso de teste A.87, pagina 128.

•Caso de teste A.90, pagina 130.

•Caso de teste A.56, pagina 109.

•Caso de teste A.57, pagina 110.

•Caso de teste A.60, pagina 112.

A.86 APROVAR REQUISICOES

Aprova uma requisicao da lista de requisicoes pendentes.

Page 129: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

128

A.86.1 ENTRADAS

1.Selecionar Gerenciamento de Requisicoes.

2.Selecionar uma requisicao.

3.Clicar em Aprovar selecionadas.

4.Preencher o campo senha do operador AR.

5.Clicar em Confirmar.

A.86.2 SAIDAS

1.Se todos os campos forem preenchidos corretamente, sera redirecionado para a tela de

gerenciamento de requisicoes.

2.Se algum campo for preenchido de forma errada, o usuaio devera ser informado atraves

de uma mensagem de erro.

A.86.3 DEPENDENCIAS DE OUTROS CASOS DE TESTE

•Caso de teste A.82, pagina 125.

•Caso de teste A.1, pagina 77.

•Caso de teste A.3, pagina 79.

A.87 REJEITAR REQUISICOES

Rejeita uma requisicao da lista de requisicoes pendentes.

A.87.1 ENTRADAS

1.Selecionar Gerenciamento de Requisicoes.

2.Selecionar uma requisicao.

3.Clicar em Rejeitar selecionadas.

4.Preencher o campo senha do operador AR.

5.Clicar em Confirmar.

Page 130: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

129

A.87.2 SAIDAS

1.Se todos os campos forem preenchidos corretamente, sera redirecionado para a tela de

gerenciamento de requisicoes. A requisicao rejeitada nao aparecera mais na lista Aguar-

dando Requisicao AR. Aparecera na lista Rejeitadas pela AR.

2.Se algum campo for preenchido de forma errada, o usuaio deveraser informado atraves

de uma mensagem de erro.

A.87.3 DEPENDENCIAS DE OUTROS CASOS DE TESTE

•Caso de teste A.82, pagina 125.

•Caso de teste A.1, pagina 77.

•Caso de teste A.3, pagina 79.

A.88 IMPORTAR UMA REQUISICAO POR ARQUIVO

Importa uma requisicao para a lista de requisicoes pendentes atraves de um arquivo.

A.88.1 ENTRADAS

1.Criar uma requisicao fora do sistema.

2.Selecione Gerenciamento de Requisicoes.

3.Selecione Importar.

4.Seleciona a AC de destino, atraves do “combo box” Selecione a AC de destino.

5.Clique em Browse.

6.Selecione o Arquivo.

7.Clique em Cadastrar.

A.88.2 SAIDAS

1.Se tudo ocorrer de forma correta, devera voltar para a tela de Importacao de Requisicao

2.Se houver algo errado, o usuario devera ser informado.

Page 131: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

130

A.88.3 DEPENDENCIAS DE OUTROS CASOS DE TESTE

•Caso de teste A.82, pagina 125.

A.89 IMPORTAR UMA REQUISICAO POR MODO TEXTO

Importa uma requisicao para a lista de requisicoes pendentes atraves de um texto.

A.89.1 ENTRADAS

1.Criar uma requisicao fora do sistema.

2.Selecione Gerenciamento de Requisicoes.

3.Selecione Importar.

4.Seleciona a AC de destino, atraves do “combo box” Selecione a AC de destino.

5.Selecione Colar requisicao em modo texto.

6.Escreava (ou cole) o texto na area especıfica para o mesmo.

7.Clique em Cadastrar.

A.89.2 SAIDAS

1.Se tudo ocorrer de forma correta, devera voltar para a tela de Importacao de Requisicao

2.Se houver algo errado, o usuario devera ser informado.

A.89.3 DEPENDENCIAS DE OUTROS CASOS DE TESTE

•Caso de teste A.82, pagina 125.

A.90 SOLICITAR REVOGACAO DE UM CERTIFICADO

Cria o pedido de revogacao de um certificado.

Page 132: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

131

A.90.1 ENTRADAS

1.Selecione Revogacao de Certificados.

2.Selecione Solicitar Revogacao de Certificados.

3.Selecione a Autoridade Certificadora emissora.

4.Selecione o certificado a ser revoado.

5.Preencha a Justificativa para a revogacao.

6.Clique em Solicitar Revogacao.

A.90.2 SAIDAS

1.Se todos os dados forem preenchidos corretamente, devera ser redirecionado para a tela

inicial da sessao de Operacao de AR.

2.Se algum dado estiver incorreto, o usuario devera ser informado.

A.90.3 DEPENDENCIAS DE OUTROS CASOS DE TESTE

•Caso de teste A.82, pagina 125.

•Caso de teste A.1, pagina 77.

•Caso de teste A.3, ppostgres add useragina 79.

•Caso de teste A.86, pagina 127.

A.91 VERIFICAR LISTA DE SOLICITACOES DE REVOGACAO DE CER-TIFICADOS

Verifica se na lista de solicitacoes para revogacao de certificados, estao aparecendo as

requisicoes corretamente.

A.91.1 ENTRADAS

1.Selecione Revogacao de Certificados.

2.Olhe a lista.

Page 133: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

132

A.91.2 SAIDAS

1.Devera aparecer os certificados que foram solicitados para serem revogados e ainda nao

tiveram aprovacao da AC.

A.91.3 DEPENDENCIAS DE OUTROS CASOS DE TESTE

•Caso de teste A.82, pagina 125.

•Caso de teste A.90, pagina 130.

A.92 ALTERAR DADOS PESSOAIS

Altera os dados pessoas do usuario atualmente logado no sistema.

A.92.1 ENTRADAS

1.Selecionar Dados Pessoais.

2.Alterar os campos nome, e-mail, data de nascimento, CPF e endereco.

3.Clicar em Atualizar.

A.92.2 SAIDAS

1.Se nao houverem campos com dados errados, o sistema devera voltar para a tela inicial

de operacao de AR.

2.Se houver algum campo com dados errados, o sistema devera informar ao usuario.

A.92.3 DEPENDENCIAS DE OUTROS CASOS DE TESTE

•Caso de teste A.82, pagina 125.

A.93 ALTERAR SENHA PESSOAL

Altera a senha do usuario atualmente logado no sistema.

Page 134: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

133

A.93.1 ENTRADAS

1.Selecionar Senha Pessoal.

2.Preencher as informacoes senha antiga, nova senha, e confirmacao da nova senha.

3.Clicar em Alterar.

4.Selecionar Sair.

5.Executar o caso de teste A.82 da pagina 125, com a nova senha.

A.93.2 SAIDAS

1.Se as informacoes estiverem todas corretas, o sistema devera voltar para a tela inicial de

operacao de AR.

2.Se alguma informacao for invalida, o sistema devera informar ao usuario.

A.93.3 DEPENDENCIAS DE OUTROS CASOS DE TESTE

•Caso de teste A.82, pagina 125.

Page 135: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

134

APENDICE B -- PLANOS DE REQUISITOS

B.1 REQUISITOS

B.1.1 UTILIZAR SOFTWARE LIVRE

Devera ser desenvolvido utilizando somente softwares livres.

B.1.2 UTILIZAR ORIENTACAO A OBJETOS

Fixar PHP 5.2 ou superior como pre requisito do sistema.

Analisar possibilidade de utilizacao do zend framework.

Vantagens de utilizacao do Zend Framework:

•Codigo mais limpo e organizado;

•Biblioteca orientada a objetos;

•Independencia do tipo de base de dados;

•Facil manipulacao dos dados na base de dados;

•Inumeras classes que facilitam o desenvolvimento;

•Apenas o arquivo index.php localizado na pasta public html fica visivel pelo servidor

web.

Desvantagens de utilizacao do Zend Framework:

•Implica em maior mudanca no sistema atual, praticamente tudo sera reimplementado a

partir do conteudo atual.

Page 136: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

135

B.1.3 CRIAR CAMADA DE PERSISTENCIA DO BANCO DE DADOS

Utilizar um padrao de projeto para implementar as classes de acesso a base de dados (exem-

plo: DAO). Caso o zend framework seja escolhido, pode-se utilizar o padrao proposto por eles

para a camada de persistencia.

B.1.4 VISIBILIDADE DOS ARQUIVOS

Atualmente todos os arquivos do sistema se encontram ”visıiveis” no servidor web. A

retirada de todos os arquivos que nao sao necessarios na pasta do servidor web e uma importante

melhoria de seguranca no sistema. Atualmente ate as chaves privadas das ACs estao visıveis

atraves do servidor web.

Uma nova hierarquia de diretorios deve ser criada, a fim de deixar visıvel apenas o que for

necessario. A listagem abaixo mostra a estrutura atual, e os elementos que nao precisam ficar

visıveis estao sublinhados:

ac/arquivos

ac/html

ac/lib

ac/script

ar/arquivos

ar/html

ar/lib

ar/script

common/html

common/lib

common/script

criador/arquivos

criador/html

Page 137: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

136

criador/lib

criador/script

engines/

imagens/

lib/

log/

publico/

engines/

A partir destas analise podemos criar uma nova hierarquia de diretorios onde consideramos

que a pasta public html e a pasta visivel pelo servidor web. A nova estrura e descrita abaixo:

/ sources/– Pasta onde ficarao os arquivos de criacao de banco de dados, e outros arquivos

referentes a instalacao do sistema.

/library/– Pasta que contem as classes e bibliotecas utilizadas pelo sistema.

/scripts/– Pasta que contem o conteudo server-side do sistema.

/scripts/ac/– Pasta que contem o conteudo server-side da AC (antigo ac/script).

/scripts/ar/– Pasta que contem o conteudo server-side da AR (antigo ar/script).

/scripts/criador/– Pasta que contem o conteudo server-side do criador (antigo criador/script).

/engines/– Pasta para armenzamento das engines cadastradas no sistema.

/logs/erros/– Pasta para armazenamento dos arquivos de log de erros do sistema.

/logs/acoes/– Pasta para armazenamento dos logs do sistema (antigo /logs).

/arquivos/ac/– Pasta para os arquivos de configuracao das ACs.

/arquivos/ar/– Pasta para os arquivos de configuracao das ARs.

/public html/– Pasta onde os arquivos visıveis pelo servidor web devem ficar.

/public html/ac/– Pasta que contem os arquivos HTML do perfil de operacao/administracao

das autoridades certificadoras.

Page 138: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

137

/public html/ar/– Pasta que contem os arquivos HTML do perfil de operacao/administracao

das autoridades de registro.

/public html/criador/– Pasta que contem os arquivos HTML do perfil do criador.

/public html/images/– Pasta que contem os arquivos de imagem do sistema.

/public html/styles/– Pasta que contem os arquivos CSS do sistema.

/public html/scripts/– Pasta que contem os arquivos javascript (.js) do sistema.

/public html/publico/– Pasta que contem os arquivos do diretorio publico.

Se for utilizado o zend framework, a estrutura deve ser a seguinte:

/ sources/– Pasta onde ficarao os arquivos de criacao de banco de dados, e outros arquivos

referentes a instalacao do sistema.

/library/– Pasta que contem as classes e bibliotecas utilizadas pelo sistema.

/library/Zend– Pasta que contem as classes do Zend Framework.

/application/– Pasta que contem o conteudo server-side do sistema.

/application/models/– Pasta que contem as classes referentes ao banco de dados do sistema.

/application/controllers/– Pasta que contem os controladores do sistema (AC, AR, Criador,

etc).

/application/views/– Pasta que contem os templates do conteudo html do sistema.

/application/views/scripts– Pasta que contem o conteudo html do sistema.

/engines/– Pasta para armenzamento das engines cadastradas no sistema.

/logs/erros/– Pasta para armazenamento dos arquivos de log de erros do sistema.

/logs/acoes/– Pasta para armazenamento dos logs do sistema (antigo /logs).

/arquivos/ac/– Pasta para os arquivos de configuracao das ACs.

/arquivos/ar/– Pasta para os arquivos de configuracao das ARs.

/public html/– Pasta onde os arquivos visıveis pelo servidor web devem ficar.

Page 139: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

138

/public html/scripts/– Pasta que contem os arquivos javascript (.js).

/public html/images/– Pasta que contem os arquivos de imagem do sistema.

/public html/styles/– Pasta que contem os arquivos CSS do sistema.

B.1.5 AUDITABILIDADE

Auditabilidade dos processos: todas as atividades executadas deverao ser registradas em

logs.

Auditabilidade do codigo: o codigo devera ser totalmente aberto.

B.1.6 TRATAMENTO DE ERROS

Melhorar tratamento de erros.

Criar log de erros e nao mostrar mais os erros na tela. Armazenar em /logs/erros.

B.1.7 MELHORIAS NO CODIGO FONTE

•Remover tratamento de posts ($ POST) dentro das funcoes, estes valores devem ser

parametros das funcoes.

•Remover funcoes duplicadas.

•Utilizar Orientacao a Objetos.

B.1.8 SCRIPT DE INICIALIZACAO

Script de verificacao inicial do sistema com as seguintes caracteristicas

•Permissoes das pastas

•Conexao com o banco

B.1.9 SCRIPT DE INSTALACAO

Script que ira ser executado somente quando o SGCI for executado pela primeira vez. Neste

script o usuario digita todas as configuracoes iniciais (nome do banco de dados, usuario do

banco de dados, etc) e o script realiza a instalacao (que atualmente e feita a mao) do sistema.

Page 140: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

139

B.1.10 CAMADA DE SEGURANCA

Conjunto de ferramentas para remover as chamadas system ao openssl via sistema.

Existem duas opcoes:

1.criar um modulo php para isso.

2.criar um conjunto de aplicacoes que substituam o openssl (pelo fato do openssl nao su-

portar parametros para engines em linha de comando) e continuar com chamadas system.

B.1.11 AR VINCULADA OBRIGATORIA

O sistema podera funcionar sem a necessidade de ARs. Isto se aplica tanto para AC Raiz

quanto para ACs intermediarias.

B.1.12 SUPORTE A CERTIFICADOS EV SSL

O sistema ira dar suporte a manipulacao de Certificados EV SSL.

B.1.13 INTERNACIONALIZACAO DO SISTEMA

O sistema ira ter suporta a internacionalizacao. Inicialmente o sistema sera feito nas lin-

guagens Portugues (Brasileiro) e Ingles.

B.2 ESTRUTURA DO SISTEMA

B.2.1 MODULO CRIADOR

•Cadastro de ACs (opcao para modelo de transacao)

Cadastro de Administradores

•Cadastro de ARs

Cadastro de Administradores

•Dados do Usuario (Criador)

•HSM

•Sessoes

Page 141: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

140

•Relatorios

Transferencia de base de historico

B.2.2 MODULO AC

Usuario Administrador

•Templates (AC e LCR)

•Polıticas

•Extensoes (base64 ou valor)

•Relacoes de Confianca

•Operadores

•Dados pessoais

USUARIO OPERADOR

•Gerenciamento de Requisicoes

Importar requisicoes assinadas pela AR

Importar requisicoes de certificados de AR

Importar requisicoes (apenas sistema sem AR)

Exibir relatorios sobre as requisicoes (emitidas, rejeitadas, pendentes e revogadas)

•Gerenciamento de Certificados

Listagem de certificados emitidos ( + visualizacao detalhada dos certificados)

Opcao para revogar certificados diretamente (apenas sistema sem AR)

Listagem de pedidos de revogacao

Importar pedido de revogacao

Listagem de certificados revogados (com opcao para ver certificados revogados ainda

validos ou todos)

Page 142: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

141

•LCRs

Emissao de lista de certificados revogados

•Publicacao de Certificados e LCRs

•Dados Pessoais

B.2.3 MODULO AR

USUARIO ADMINISTRADOR

•Relacoes de confianca

•Operadores

•Dados Pessoais

USUARIO OPERADOR

•Gerenciamento de Requisicoes

Exibir relatorios sobre as requisicoes (aprovadas, emitidas pela AC, rejeitadas, pen-

dentes, rejeitada pela AC)

•Gerenciamento de Certificados

Listagem de certificados emitidos ( + visualizacao detalhada dos certificados)

Listagem de pedidos de revogacao

Listagem de certificados revogados (com opcao para ver certificados revogados ainda

validos ou todos)

•Revogacao de Certificados

Solicitacao de revogacao - offline

•Dados Pessoais

Page 143: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

142

APENDICE C -- CASOS DE USO

C.1 DESCRICAO DOS CASOS DE USO GERAIS

C.2 DESCRICAO DOS CASOS DE USO DO PERFIL CRIADOR

C.3 DESCRICAO DOS CASOS DE USO DO PERFIL ADMINISTRADORDE AC

C.4 DESCRICAO DOS CASOS DE USO DO PERFIL ADMINISTRADORDE AR

C.5 DESCRICAO DOS CASOS DE USO DO PERFIL OPERADOR DE AC

C.6 DESCRICAO DOS CASOS DE USO DO PERFIL OPERADOR DE AR

Page 144: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

143

APENDICE D -- CODIGO-FONTE DA BIBLIOTECA

1 <?php

2 e r r o r r e p o r t i n g ( E ALL ) ;

3

4 /∗ ∗5 ∗ s g c i − i n t e r f a c e . S u b j e c t A l t e r n a t i v e N a m e E x t e n s i o n . php

6 ∗7 ∗ $ Id$

8 ∗9 ∗ T h i s f i l e i s p a r t o f s g c i .

10 ∗11 ∗ A u t o m a t i c g e n e r a t e d w i t h ArgoUML 0 . 2 4 on 1 4 . 0 8 . 2 0 0 7 , 1 7 : 0 6 : 1 1

12 ∗13 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

14 ∗ /

15

16 i f (0 > vers ion compare ( PHP VERSION , ’5’ ) ) {17 d i e ( ’This file was generated for PHP 5’ ) ;

18 }19

20 /∗ ∗21 ∗ i n c l u i E x t e n s i o n

22 ∗23 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

24 ∗ /

25 r e q u i r e o n c e ( ’Labsec/Security/Certification/Extension.php’ ) ;

26

27 /∗ ∗28 ∗ I n t e r f a c e que imp lemen ta a e x t e n s o S u b j e c t A l t e r n a t i v e N a v e <br>

29 ∗30 ∗ A e x t e n s o em f o r m a t o ASN . 1 :

31 ∗ S u b j e c t A l t N a m e : := GeneralNames

32 ∗33 ∗ @access p u b l i c

34 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

Page 145: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

144

35 ∗ /

36 a b s t r a c t c l a s s

L a b s e c S e c u r i t y C e r t i f i c a t i o n E x t e n s i o n S u b j e c t A l t e r n a t i v e N a m e E x t e n s i o n

37 e x t e n d s L a b s e c S e c u r i t y C e r t i f i c a t i o n E x t e n s i o n

38 {39 /∗ ∗40 ∗ S e t a o GeneralNames

41 ∗42 ∗ @access p u b l i c

43 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

44 ∗ @param GeneralNames o GeneralName a s e t a r

45 ∗ @return v o i d

46 ∗ /

47 p u b l i c a b s t r a c t f u n c t i o n s e t S u b j e c t A l t e r n a t i v e N a m e (

L a b s e c S e c u r i t y C e r t i f i c a t i o n D a t a T y p e s G e n e r a l N a m e s $genera lNames ) ;

48

49 /∗ ∗50 ∗ Re torna o v a l o r da e x t e n s o S u b j e c t A l t N a m e

51 ∗52 ∗ @access p u b l i c

53 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

54 ∗ @return GeneralNames o GeneralNames da e x t e n s o S u b j e c t A l t N a m e

55 ∗ /

56 p u b l i c a b s t r a c t f u n c t i o n g e t S u b j e c t A l t e r n a t i v e N a m e ( ) ;

57

58 } /∗ end o f i n t e r f a c e S u b j e c t A l t e r n a t i v e N a m e E x t e n s i o n ∗ /

59

60 ?>

1 <?php

2

3 e r r o r r e p o r t i n g ( E ALL ) ;

4

5 /∗ ∗6 ∗ s g c i − i n t e r f a c e . C R L D i s t r i b u t i o n P o i n t E x t e n s i o n . php

7 ∗8 ∗ $ Id$

9 ∗10 ∗ T h i s f i l e i s p a r t o f s g c i .

11 ∗12 ∗ A u t o m a t i c g e n e r a t e d w i t h ArgoUML 0 . 2 4 on 1 4 . 0 8 . 2 0 0 7 , 1 7 : 0 4 : 1 9

13 ∗14 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

Page 146: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

145

15 ∗ /

16

17 i f (0 > vers ion compare ( PHP VERSION , ’5’ ) ) {18 d i e ( ’This file was generated for PHP 5’ ) ;

19 }20

21 /∗ ∗22 ∗ i n c l u i E x t e n s i o n

23 ∗24 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

25 ∗ /

26 r e q u i r e o n c e ( ’Labsec/Security/Certification/Extension.php’ ) ;

27

28 /∗ ∗29 ∗ I n t e r f a c e que imp lemen ta a e x t e n s o C R L D i s t r i b u t i o n P o i n t <br>

30 ∗31 ∗ A e x t e n s o em f o r m a t o ASN . 1 :

32 ∗ C R L D i s t r i b u t i o n P o i n t s : := SEQUENCE SIZE ( 1 . . MAX) OF D i s t r i b u t i o n P o i n t

33 ∗34 ∗35 ∗ @access p u b l i c

36 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

37 ∗ /

38 i n t e r f a c e

L a b s e c S e c u r i t y C e r t i f i c a t i o n E x t e n s i o n C R L D i s t r i b u t i o n P o i n t E x t e n s i o n

39 e x t e n d s L a b s e c S e c u r i t y C e r t i f i c a t i o n E x t e n s i o n

40 {41 /∗ ∗42 ∗ A d i c i o n a um D i s t r i b u t i o n P o i n t

43 ∗44 ∗ @access p u b l i c

45 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

46 ∗ @param D i s t r i b u t i o n P o i n t o d i s t r i b u t i o n P o i n t a a d i c i o n a r

47 ∗ @return v o i d

48 ∗ /

49 p u b l i c f u n c t i o n a d d D i s t r i b u i t o n P o i n t (

L a b s e c S e c u r i t y C e r t i f i c a t i o n C R L D i s t r i b u t i o n P o i n t

$ d i s t r i b u t i o n P o i n t ) ;

50

51 /∗ ∗52 ∗ Re torna os D i s t i b u t i o n P o i n t s

53 ∗54 ∗ @access p u b l i c

Page 147: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

146

55 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

56 ∗ @return a r r a y Array c o n t e n d o em cada l i n h a um D i s t r i b u t i o n P o i n t

57 ∗ /

58 p u b l i c f u n c t i o n g e t D i s t r i b u i t i o n P o i n t s ( ) ;

59

60 /∗ ∗61 ∗ Re torna o v a l o r da e x t e n s o

62 ∗63 ∗ @access p u b l i c

64 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

65 ∗ @return s t r i n g o v a l o r

66 ∗ /

67 p u b l i c a b s t r a c t f u n c t i o n g e t V a l u e ( ) ;

68

69 /∗ ∗70 ∗ Re torna o v a l o r da e x t e n s o em base 64

71 ∗72 ∗ @access p u b l i c

73 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

74 ∗ @return s t r i n g o v a l o r

75 ∗ /

76 p u b l i c a b s t r a c t f u n c t i o n ge tBase64Va lue ( ) ;

77

78 } /∗ end o f i n t e r f a c e C R L D i s t r i b u t i o n P o i n t E x t e n s i o n ∗ /

79

80 ?>

1 <?php

2

3 e r r o r r e p o r t i n g ( E ALL ) ;

4

5 /∗ ∗6 ∗ s g c i − i n t e r f a c e . C e r t i f i c a t e P o l i c i e s E x t e n s i o n . php

7 ∗8 ∗ $ Id$

9 ∗10 ∗ T h i s f i l e i s p a r t o f s g c i .

11 ∗12 ∗ A u t o m a t i c g e n e r a t e d w i t h ArgoUML 0 . 2 4 on 1 4 . 0 8 . 2 0 0 7 , 1 7 : 0 3 : 5 7

13 ∗14 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

15 ∗ /

16

Page 148: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

147

17 i f (0 > vers ion compare ( PHP VERSION , ’5’ ) ) {18 d i e ( ’This file was generated for PHP 5’ ) ;

19 }20

21 /∗ ∗22 ∗ i n c l u i E x t e n s i o n

23 ∗24 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

25 ∗ /

26 r e q u i r e o n c e ( ’Labsec/Security/Certification/Extension.php’ ) ;

27 r e q u i r e o n c e ( ’Labsec/Security/Certification/Extension/Policy/

PolicyInformation.php’ ) ;

28

29 /∗ ∗30 ∗ I n t e r f a c e r e s p o n s v e l p e l a e x t e n s o C e r t i f i c a t e P o l i c i e s . <br>

31 ∗ A e x t e n s o em f o r m a t o ASN . 1 : <br>

32 ∗ c e r t i f i c a t e P o l i c i e s : := SEQUENCE SIZE ( 1 . . MAX) OF

P o l i c y I n f o r m a t i o n

33 ∗34 ∗ @access p u b l i c

35 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

36 ∗ /

37 a b s t r a c t c l a s s

L a b s e c S e c u r i t y C e r t i f i c a t i o n E x t e n s i o n C e r t i f i c a t e P o l i c i e s E x t e n s i o n

38 e x t e n d s L a b s e c S e c u r i t y C e r t i f i c a t i o n E x t e n s i o n

39 {40 /∗ ∗41 ∗ A d i c i o n a P o l i c y I n f o r m a t i o n .

42 ∗43 ∗ @access p u b l i c

44 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

45 ∗ @param P o l i c y I n f o r m a t i o n P o l i c y I n f o r m a t i o n a a d i c i o n a r

46 ∗ @return v o i d

47 ∗ /

48 p u b l i c a b s t r a c t f u n c t i o n a d d P o l i c y I n f o r m a t i o n (

L a b s e c S e c u r i t y C e r t i f i c a t i o n E x t e n s i o n P o l i c y P o l i c y I n f o r m a t i o n

$ p o l i c y I n f o ) ;

49

50 /∗ ∗51 ∗ Re torna o ( s ) P o l i c y I n f o r m a t i o n .

52 ∗53 ∗ @access p u b l i c

54 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

Page 149: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

148

55 ∗ @return a r r a y Array com cada l i n h a sendo um o b j e t o do t i p o P o l i c y

I n f o r m a t i o n .

56 ∗ /

57 p u b l i c a b s t r a c t f u n c t i o n g e t P o l i c i e s I n f o r m a t i o n ( ) ;

58

59 } /∗ end o f i n t e r f a c e C e r t i f i c a t e P o l i c i e s E x t e n s i o n ∗ /

60

61 ?>

1 <?php

2

3 e r r o r r e p o r t i n g ( E ALL ) ;

4

5 /∗ ∗6 ∗ s g c i − i n t e r f a c e . S u b j e c t K e y I d e n t i f i e r E x t e n s i o n . php

7 ∗8 ∗ $ Id$

9 ∗10 ∗ T h i s f i l e i s p a r t o f s g c i .

11 ∗12 ∗ A u t o m a t i c g e n e r a t e d w i t h ArgoUML 0 . 2 4 on 1 4 . 0 8 . 2 0 0 7 , 1 7 : 0 6 : 3 2

13 ∗14 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

15 ∗ /

16

17 i f (0 > vers ion compare ( PHP VERSION , ’5’ ) ) {18 d i e ( ’This file was generated for PHP 5’ ) ;

19 }20

21 /∗ ∗22 ∗ i n c l u i E x t e n s i o n

23 ∗24 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

25 ∗ /

26 r e q u i r e o n c e ( ’Labsec/Security/Certification/Extension.php’ ) ;

27

28 /∗ ∗29 ∗ I n t e r f a c e r e s p o n s a v e l p e l a e x t e n s o S u b j e c t K e y I d e n t i f i e r . <br>

30 ∗ A e x t e n s o em f o r m a t o ASN . 1 : <br>

31 ∗ S u b j e c t K e y I d e n t i f i e r : := K e y I d e n t i f i e r

32 ∗33 ∗ @access p u b l i c

34 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

Page 150: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

149

35 ∗ /

36 a b s t r a c t c l a s s

L a b s e c S e c u r i t y C e r t i f i c a t i o n E x t e n s i o n S u b j e c t K e y I d e n t i f i e r E x t e n s i o n

37 e x t e n d s L a b s e c S e c u r i t y C e r t i f i c a t i o n E x t e n s i o n

38 {39 /∗ ∗40 ∗ Re torna o v a l o r da e x t e n s o S u b j e c t K e y I d e n t i f i e r

41 ∗42 ∗ @access p u b l i c

43 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

44 ∗ @return s t r i n g v a l o r do campo K e y I d e n t i f i e r da e x t e n s o

S u b j e c t K e y I d e n t i f i e r

45 ∗ /

46 p u b l i c a b s t r a c t f u n c t i o n g e t K e y I d e n t i f i e r ( ) ;

47

48 /∗ ∗49 ∗ S e t a o v a l o r da e x t e n s o S u b j e c t K e y I d e n t i f i e r

50 ∗51 ∗ @access p u b l i c

52 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

53 ∗ @param s t r i n g

54 ∗ @return v o i d

55 ∗ /

56 p u b l i c a b s t r a c t f u n c t i o n s e t K e y I d e n t i f i e r ( $keyId ) ;

57

58 } /∗ end o f i n t e r f a c e S u b j e c t K e y I d e n t i f i e r E x t e n s i o n ∗ /

59

60 ?>

1 <?php

2

3 e r r o r r e p o r t i n g ( E ALL ) ;

4

5 /∗ ∗6 ∗ s g c i − i n t e r f a c e . A u t h o r i t y K e y I d e n t i f i e r E x t e n s i o n . php

7 ∗8 ∗ $ Id$

9 ∗10 ∗ T h i s f i l e i s p a r t o f s g c i .

11 ∗12 ∗ A u t o m a t i c g e n e r a t e d w i t h ArgoUML 0 . 2 4 on 1 4 . 0 8 . 2 0 0 7 , 1 7 : 0 3 : 1 4

13 ∗14 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

Page 151: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

150

15 ∗ /

16

17 i f (0 > vers ion compare ( PHP VERSION , ’5’ ) ) {18 d i e ( ’This file was generated for PHP 5’ ) ;

19 }20

21 /∗ ∗22 ∗ i n c l u i E x t e n s i o n

23 ∗24 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

25 ∗ /

26 r e q u i r e o n c e ( ’Labsec/Security/Certification/Extension.php’ ) ;

27 r e q u i r e o n c e ( ’Labsec/Security/Certification/DataTypes/GeneralNames.php’ ) ;

28

29 /∗ ∗30 ∗ I n t e r f a c e que imp lemen ta a e x t e n s o A u t h o r i t y K e y I d e n t i f i e r . <br>

31 ∗32 ∗ A e x t e n s o A u t h o r i t y K e y I d e n t i f i e r em f o r m a t d o ASN . 1 : <br>

33 ∗ A u t h o r i t y K e y I d e n t i f i e r : := SEQUENCE { <br>

34 ∗ k e y I d e n t i f i e r [ 0 ] K e y I d e n t i f i e r OPTIONAL , <br>

35 ∗ a u t h o r i t y C e r t I s s u e r [ 1 ] GeneralNames OPTIONAL , <br>

36 ∗ a u t h o r i t y C e r t S e r i a l N u m b e r [ 2 ] C e r t i f i c a t e S e r i a l N u m b e r OPTIONAL }<br>

37 ∗38 ∗ @access p u b l i c

39 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

40 ∗ /

41 a b s t r a c t c l a s s

L a b s e c S e c u r i t y C e r t i f i c a t i o n E x t e n s i o n A u t h o r i t y K e y I d e n t i f i e r E x t e n s i o n

42 e x t e n d s L a b s e c S e c u r i t y C e r t i f i c a t i o n E x t e n s i o n

43 {44 /∗ ∗45 ∗ S e t a o campo K e y I d e n t i f i e r da e x t e n s o A u t h o r i t y K e y I d e n t i f i e r

46 ∗47 ∗ @access p u b l i c

48 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

49 ∗ @param s t r i n g K e y I d e n t i f i e r

50 ∗ @return v o i d

51 ∗ /

52 p u b l i c a b s t r a c t f u n c t i o n s e t K e y I d e n t i f i e r ( $keyId ) ;

53

54 /∗ ∗55 ∗ Re torna o v a l o r do campo K e y I d e n t i f i e r da e x t e n s o

A u t h o r i t y K e y I d e n t i f i e r

Page 152: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

151

56 ∗57 ∗ @access p u b l i c

58 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

59 ∗ @return s t r i n g o v a l o r de K e y I d e n t i f i e r

60 ∗ /

61 p u b l i c a b s t r a c t f u n c t i o n g e t K e y I d e n t i f i e r ( ) ;

62

63 /∗ ∗64 ∗ S e t a o campo A u t h o r i t y C e r t I s s u e r da e x t e n s o A u t h o r i t y K e y I d e n t i f i e r

65 ∗66 ∗ @access p u b l i c

67 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

68 ∗ @param GeneralNames O GeneralNames a s e r a d i c i o n a d o no

A u t h o r i t y C e r t I s s u e r

69 ∗ @return v o i d

70 ∗ /

71 p u b l i c a b s t r a c t f u n c t i o n s e t A u t h o r i t y C e r t I s s u e r (

L a b s e c S e c u r i t y C e r t i f i c a t i o n D a t a T y p e s G e n e r a l N a m e s $ i s s u e r ) ;

72

73 /∗ ∗74 ∗ Re torna o v a l o r do campo A u t h o r i t y C e r t I s s u e r da e x t e n s o

A u t h o r i t y K e y I d e n t i f i e r

75 ∗76 ∗ @access p u b l i c

77 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

78 ∗ @return GeneralNames

79 ∗ /

80 p u b l i c a b s t r a c t f u n c t i o n g e t A u t h o r i t y C e r t I s s u e r ( ) ;

81

82 /∗ ∗83 ∗ S e t a o campo A u t h o r i t y C e r t S e r i a l N u m b e r da e x t e n s o

A u t h o r i t y K e y I d e n t i f i e r

84 ∗85 ∗ @access p u b l i c

86 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

87 ∗ @param s t r i n g o n m e r o s e r i a l

88 ∗ @return v o i d

89 ∗ /

90 p u b l i c a b s t r a c t f u n c t i o n s e t A u t h o r i t y C e r t S e r i a l N u m b e r ( $ s e r i a l ) ;

91

92 /∗ ∗93 ∗ Re torna o v a l o r do campo A u t h o r i t y C e r t S e r i a l N u m b e r da e x t e n s o

A u t h o r i t y K e y I d e n t i f i e r

Page 153: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

152

94 ∗95 ∗ @access p u b l i c

96 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

97 ∗ @return s t r i n g o n m e r o s e r i a l

98 ∗ /

99 p u b l i c a b s t r a c t f u n c t i o n g e t A u t h o r i t y C e r t S e r i a l N u m b e r ( ) ;

100

101 } /∗ end o f i n t e r f a c e A u t h o r i t y K e y I d e n t i f i e r E x t e n s i o n ∗ /

102

103 ?>

1 <?php

2 e r r o r r e p o r t i n g ( E ALL ) ;

3

4 /∗ ∗5 ∗ s g c i − i n t e r f a c e . B a s i c C o n s t r a i n t s E x t e n s i o n . php

6 ∗7 ∗ $ Id$

8 ∗9 ∗ T h i s f i l e i s p a r t o f s g c i .

10 ∗11 ∗ A u t o m a t i c g e n e r a t e d w i t h ArgoUML 0 . 2 4 on 1 4 . 0 8 . 2 0 0 7 , 1 7 : 0 3 : 3 6

12 ∗13 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

14 ∗ /

15

16 i f (0 > vers ion compare ( PHP VERSION , ’5’ ) ) {17 d i e ( ’This file was generated for PHP 5’ ) ;

18 }19

20 /∗ ∗21 ∗ i n c l u i E x t e n s i o n

22 ∗23 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

24 ∗ /

25 r e q u i r e o n c e ( ’Labsec/Security/Certification/Extension.php’ ) ;

26

27 /∗ ∗28 ∗ I n t e r f a c e que imp lemen ta a e x t e n s o B a s i c C o n s t r a i n t s . <br>

29 ∗30 ∗ A e x t e n s o em f o r m a t o ASN . 1 : <br>

31 ∗ B a s i c C o n s t r a i n t s : := SEQUENCE { <br>

32 ∗ cA BOOLEAN DEFAULT FALSE , <br>

Page 154: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

153

33 ∗ p a t h L e n C o n s t r a i n t INTEGER ( 0 . . MAX) OPTIONAL } <br>

34 ∗35 ∗ @access p u b l i c

36 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

37 ∗ /

38 a b s t r a c t c l a s s

L a b s e c S e c u r i t y C e r t i f i c a t i o n E x t e n s i o n B a s i c C o n s t r a i n t s E x t e n s i o n

39 e x t e n d s L a b s e c S e c u r i t y C e r t i f i c a t i o n E x t e n s i o n

40 {41 /∗ ∗42 ∗ S e t a r o v a l o r do campo CA da e x t e n s o B a s i c C o n s t r a i n t s . <br>

43 ∗ Se n o f o r passado nenhum p a r m e t r o , o v a l o r do campo s e t a d o <

br>

44 ∗ como TRUE .

45 ∗ Se o p a r m e t r o f o r passado , e s s e v a l o r s e r c o l o c a d o no campo .

46 ∗47 ∗ @access p u b l i c

48 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

49 ∗ @param boo lean Valor a s e r s e t a d o no campo CA da e x t e n s o

B a s i c C o n s t r a i n t s .

50 ∗ E s t e v a l o r o p c i o n a l . Se f o r o m i t i d o , o campo CA s e r s e t a d o como

TRUE .

51 ∗ @return v o i d

52 ∗ /

53 p u b l i c a b s t r a c t f u n c t i o n s e t C a ( $ v a l u e = TRUE) ;

54

55 /∗ ∗56 ∗ V e r i f i c a se o campo CA e s t s e t a d o como TRUE

57 ∗58 ∗ @access p u b l i c

59 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

60 ∗ @return boo lean Re torna o v a l o r do campo CA da e x t e n s o

B a s i c C o n s t r a i n t s .

61 ∗ Pode s e r TRUE ou FALSE .

62 ∗ /

63 p u b l i c a b s t r a c t f u n c t i o n i sCa ( ) ;

64

65 /∗ ∗66 ∗ S e t a o v a l o r do campo PathLeng th

67 ∗68 ∗ @access p u b l i c

69 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

70 ∗ @param i n t o tamanho do Pa thLeng th

Page 155: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

154

71 ∗ @return v o i d

72 ∗ /

73 p u b l i c a b s t r a c t f u n c t i o n s e t P a t h L e n g t h ( $ l e n g t h ) ;

74

75 /∗ ∗76 ∗ Re torna o v a l o r do campo Pa thLeng th

77 ∗78 ∗ @access p u b l i c

79 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

80 ∗ @return i n t o tamanho do Pa thLeng th

81 ∗ /

82 p u b l i c a b s t r a c t f u n c t i o n g e t P a t h L e n g t h ( ) ;

83

84 } /∗ end o f i n t e r f a c e B a s i c C o n s t r a i n t s E x t e n s i o n ∗ /

85

86 ?>

1 <?php

2 e r r o r r e p o r t i n g ( E ALL ) ;

3

4 /∗ ∗5 ∗ s g c i − i n t e r f a c e . CRLReasonCodeExtension . php

6 ∗7 ∗ $ Id$

8 ∗9 ∗ T h i s f i l e i s p a r t o f s g c i .

10 ∗11 ∗ A u t o m a t i c g e n e r a t e d w i t h ArgoUML 0 . 2 4 on 1 4 . 0 8 . 2 0 0 7 , 1 7 : 0 5 : 0 6

12 ∗13 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

14 ∗ /

15

16 i f (0 > vers ion compare ( PHP VERSION , ’5’ ) ) {17 d i e ( ’This file was generated for PHP 5’ ) ;

18 }19

20 /∗ ∗21 ∗ i n c l u i E x t e n s i o n

22 ∗23 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

24 ∗ /

25 r e q u i r e o n c e ( ’Labsec/Security/Certification/Extension.php’ ) ;

26

Page 156: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

155

27 /∗ ∗28 ∗ I n t e r f a c e que imp lemen ta a e x t e n s o CRLReasonCode <br>

29 ∗30 ∗ A e x t e n s o em f o r m a t o ASN . 1 : <br>

31 ∗ CRLReason : := ENUMERATED { <br>

32 ∗ u n s p e c i f i e d ( 0 ) , <br>

33 ∗ keyCompromise ( 1 ) , <br>

34 ∗ cACompromise ( 2 ) , <br>

35 ∗ a f f i l i a t i o n C h a n g e d ( 3 ) , <br>

36 ∗ s u p e r s e d e d ( 4 ) , <br>

37 ∗ c e s s a t i o n O f O p e r a t i o n ( 5 ) , <br>

38 ∗ c e r t i f i c a t e H o l d ( 6 ) , <br>

39 ∗ removeFromCRL ( 8 ) , <br>

40 ∗ p r i v i l e g e W i t h d r a w n ( 9 ) , <br>

41 ∗ aACompromise ( 1 0 ) }42 ∗43 ∗ @access p u b l i c

44 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

45 ∗ /

46 i n t e r f a c e L a b s e c S e c u r i t y C e r t i f i c a t i o n E x t e n s i o n C R L R e a s o n C o d e E x t e n s i o n

47 e x t e n d s L a b s e c S e c u r i t y C e r t i f i c a t i o n E x t e n s i o n

48 {49 /∗ ∗50 ∗ S e t a o ReasonCode

51 ∗52 ∗ @access p u b l i c

53 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

54 ∗ @param i n t o ReasonCode

55 ∗ @return v o i d

56 ∗ /

57 p u b l i c f u n c t i o n se tCode ( $code ) ;

58

59 /∗ ∗60 ∗ Re torna o ReasonCode

61 ∗62 ∗ @access p u b l i c

63 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

64 ∗ @return i n t o v a l o r do ReasonCode

65 ∗ /

66 p u b l i c f u n c t i o n getCode ( ) ;

67

68 /∗ ∗69 ∗ Re torna o v a l o r da e x t e n s o

Page 157: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

156

70 ∗71 ∗ @access p u b l i c

72 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

73 ∗ @return s t r i n g o v a l o r

74 ∗ /

75 p u b l i c a b s t r a c t f u n c t i o n g e t V a l u e ( ) ;

76

77 /∗ ∗78 ∗ Re torna o v a l o r da e x t e n s o em base 64

79 ∗80 ∗ @access p u b l i c

81 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

82 ∗ @return s t r i n g o v a l o r

83 ∗ /

84 p u b l i c a b s t r a c t f u n c t i o n ge tBase64Va lue ( ) ;

85

86 } /∗ end o f i n t e r f a c e CRLReasonCodeExtension ∗ /

87

88 ?>

1 <?php

2 e r r o r r e p o r t i n g ( E ALL ) ;

3

4 /∗ ∗5 ∗ s g c i − i n t e r f a c e . CRLNumberExtension . php

6 ∗7 ∗ $ Id$

8 ∗9 ∗ T h i s f i l e i s p a r t o f s g c i .

10 ∗11 ∗ A u t o m a t i c g e n e r a t e d w i t h ArgoUML 0 . 2 4 on 1 4 . 0 8 . 2 0 0 7 , 1 7 : 0 4 : 4 5

12 ∗13 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

14 ∗ /

15

16 i f (0 > vers ion compare ( PHP VERSION , ’5’ ) ) {17 d i e ( ’This file was generated for PHP 5’ ) ;

18 }19

20 /∗ ∗21 ∗ i n c l u i E x t e n s i o n

22 ∗23 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

Page 158: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

157

24 ∗ /

25 r e q u i r e o n c e ( ’Labsec/Security/Certification/Extension.php’ ) ;

26

27 /∗ ∗28 ∗ I n t e r f a c e que imp lemen ta a e x t e n s o CRLNumber <br>

29 ∗30 ∗ A e x t e n s o em f o r m a t o ASN . 1 : <br>

31 ∗ CRLNumber : := INTEGER ( 0 . . MAX)

32 ∗33 ∗ @access p u b l i c

34 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

35 ∗ /

36 i n t e r f a c e L a b s e c S e c u r i t y C e r t i f i c a t i o n E x t e n s i o n C R L N u m b e r E x t e n s i o n

37 e x t e n d s L a b s e c S e c u r i t y C e r t i f i c a t i o n E x t e n s i o n

38 {39 /∗ ∗40 ∗ Re torna o n m e r o da CRL

41 ∗42 ∗ @access p u b l i c

43 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

44 ∗ @return i n t o n m e r o da CRL

45 ∗ /

46 p u b l i c f u n c t i o n getNumber ( ) ;

47

48 /∗ ∗49 ∗ S e t a o n m e r o s e r i a l da CRL

50 ∗51 ∗ @access p u b l i c

52 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

53 ∗ @param i n t n m e r o s e r i a l da CRL

54 ∗ @return v o i d

55 ∗ /

56 p u b l i c f u n c t i o n setNumber ( $number ) ;

57

58 /∗ ∗59 ∗ Re torna o v a l o r da e x t e n s o

60 ∗61 ∗ @access p u b l i c

62 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

63 ∗ @return s t r i n g o v a l o r

64 ∗ /

65 p u b l i c a b s t r a c t f u n c t i o n g e t V a l u e ( ) ;

66

Page 159: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

158

67 /∗ ∗68 ∗ Re torna o v a l o r da e x t e n s o em base 64

69 ∗70 ∗ @access p u b l i c

71 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

72 ∗ @return s t r i n g o v a l o r

73 ∗ /

74 p u b l i c a b s t r a c t f u n c t i o n ge tBase64Va lue ( ) ;

75

76 } /∗ end o f i n t e r f a c e CRLNumberExtension ∗ /

77

78 ?>

1 <?php

2

3 e r r o r r e p o r t i n g ( E ALL ) ;

4

5 /∗ ∗6 ∗ s g c i − i n t e r f a c e . KeyUsageEx tens ion . php

7 ∗8 ∗ $ Id$

9 ∗10 ∗ T h i s f i l e i s p a r t o f s g c i .

11 ∗12 ∗ A u t o m a t i c g e n e r a t e d w i t h ArgoUML 0 . 2 4 on 1 4 . 0 8 . 2 0 0 7 , 1 7 : 0 5 : 5 5

13 ∗14 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

15 ∗ /

16

17 i f (0 > vers ion compare ( PHP VERSION , ’5’ ) ) {18 d i e ( ’This file was generated for PHP 5’ ) ;

19 }20

21 /∗ ∗22 ∗ i n c l u i E x t e n s i o n

23 ∗24 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

25 ∗ /

26 r e q u i r e o n c e ( ’Labsec/Security/Certification/Extension.php’ ) ;

27

28 /∗ ∗29 ∗ I n t e r f a c e r e s p o n s v e l p e l a e x t e n s o Key Usage . <br>

30 ∗ A e x t e n s o Key Usage em ASN . 1 : <br>

Page 160: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

159

31 ∗ KeyUsage : := BIT STRING { <br>

32 ∗ d i g i t a l S i g n a t u r e ( 0 ) , <br>

33 ∗ n o n R e p u d i a t i o n ( 1 ) , <br>

34 ∗ k e y E n c i p h e r m e n t ( 2 ) , <br>

35 ∗ d a t a E n c i p h e r m e n t ( 3 ) , <br>

36 ∗ keyAgreemen t ( 4 ) , <br>

37 ∗ k e y C e r t S i g n ( 5 ) , <br>

38 ∗ cRLSign ( 6 ) , <br>

39 ∗ e n c i p h e r O n l y ( 7 ) , <br>

40 ∗ d e c i p h e r O n l y ( 8 ) } <br>

41 ∗42 ∗ @access p u b l i c

43 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

44 ∗ /

45 a b s t r a c t c l a s s L a b s e c S e c u r i t y C e r t i f i c a t i o n E x t e n s i o n K e y U s a g e E x t e n s i o n

46 e x t e n d s L a b s e c S e c u r i t y C e r t i f i c a t i o n E x t e n s i o n

47 {48

49 /∗ ∗50 ∗ Re torna uma l i s t a com as p e r m i s s e s d e f i n i d a s na e x t e n s o Key

Usage

51 ∗52 ∗ @access p u b l i c

53 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

54 ∗ @return a r r a y

55 ∗ /

56 p u b l i c a b s t r a c t f u n c t i o n g e t U s a g e s L i s t ( ) ;

57

58 /∗ ∗59 ∗ M t o d o que a l t e r a os b i t s da e x t e n s o Key Usage . <br>

60 ∗61 ∗62 ∗ @access p u b l i c

63 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

64 ∗ @param i n t usage Uma c o n s t a n t e ( d e f i n i d a na c l a s s e ) , r e p r e s e n t a n d o

65 ∗ qua l p e r m i s s o v a i s e r a d i c i o n a d o .

66 ∗ @param boo lean v a l u e P a r m e t r o o p c i o n a l . E s t e p a r m e t r o s e r v e

67 ∗ para e s p e c i f i c a r o v a l o r da p e r m i s s o d e f i n i d a em v a l u e .

68 ∗ @return v o i d

69 ∗ /

70 p u b l i c a b s t r a c t f u n c t i o n addUsage ( $usage , $ v a l u e = t rue ) ;

71

72 /∗ ∗

Page 161: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

160

73 ∗ Re torna TRUE se a p e r m i s s o de uso da chave f o r p e r m i t i d o . <br>

74 ∗ F a l s e caso c o n t r r i o .

75 ∗76 ∗ @access p u b l i c

77 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

78 ∗ @param i n t usage Uma c o n s t a n t e ( d e f i n i d a na c l a s s e ) , r e p r e s e n t a n d o

79 ∗ qua l p e r m i s s o v a i s e r a d i c i o n a d o .

80 ∗ @return boo lean TRUE caso s e j a p e r m i t i d o a u t i l i z a o da chave

81 ∗ para o f i m d e f i n i d o no p a r m e t r o usage .

82 ∗ /

83 p u b l i c a b s t r a c t f u n c t i o n i sAl lowedUsage ( $usage ) ;

84

85 } /∗ end o f i n t e r f a c e KeyUsageEx tens ion ∗ /

86

87 ?>

1 <?php

2 e r r o r r e p o r t i n g ( E ALL ) ;

3 /∗ ∗4 ∗ s g c i − c l a s s . P o l i c y I n f o r m a t i o n . php

5 ∗6 ∗ $ Id$

7 ∗8 ∗ T h i s f i l e i s p a r t o f s g c i .

9 ∗10 ∗ A u t o m a t i c g e n e r a t e d w i t h ArgoUML 0 . 2 4 on 1 4 . 0 8 . 2 0 0 7 , 1 7 : 0 7 : 1 3

11 ∗12 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

13 ∗ /

14

15 i f (0 > vers ion compare ( PHP VERSION , ’5’ ) ) {16 d i e ( ’This file was generated for PHP 5’ ) ;

17 }18

19 r e q u i r e o n c e ( ’Labsec/Security/Certification/Extension/Policy/

PolicyQualifierInfo.php’ ) ;

20 r e q u i r e o n c e ( ’Labsec/Security/Certification/ObjectIdentifier.php’ ) ;

21

22 /∗ ∗23 ∗ C l a s s e que r e p r e s e n t a o t i p o P o l i c y I n f o r m a t i o n . <br>

24 ∗25 ∗ P o l i c y I n f o r m a t i o n em ASN . 1 : <br>

26 ∗

Page 162: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

161

27 ∗28 ∗ @access p u b l i c

29 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

30 ∗ /

31 c l a s s L a b s e c S e c u r i t y C e r t i f i c a t i o n E x t e n s i o n P o l i c y P o l i c y I n f o r m a t i o n

32 {33

34 p r i v a t e $ p o l i c y I d e n t i f i e r ;

35

36 p r i v a t e $ p o l i c y Q u a l i f i e r s = array ( ) ;

37

38

39 /∗ ∗40 ∗ A d i c i o n a r um P o l i c y Q u a l i f i e r I n f o

41 ∗42 ∗ @access p u b l i c

43 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

44 ∗ @param P o l i c y Q u a l i f i e r I n f o

45 ∗ @return v o i d

46 ∗ /

47 p u b l i c f u n c t i o n a d d P o l i c y Q u a l i f i e r I n f o (

L a b s e c S e c u r i t y C e r t i f i c a t i o n E x t e n s i o n P o l i c y P o l i c y Q u a l i f i e r I n f o

$ p o l i c y Q u a l i f i e r I n f o )

48

49 {50 $ t h i s−>p o l i c y Q u a l i f i e r s [ ] = $ p o l i c y Q u a l i f i e r I n f o ;

51 }52

53 /∗ ∗54 ∗ Re torna os P o l i c y Q u a l i f i e r s

55 ∗56 ∗ @access p u b l i c

57 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

58 ∗ @return a r r a y os P o l i c y Q u a l i f i e r s

59 ∗ /

60 p u b l i c f u n c t i o n g e t P o l i c y Q u a l i f i e r s ( )

61 {62 i f ( count ( $ t h i s−>p o l i c y Q u a l i f i e r s ) > 0) {63 r e t u r n $ t h i s−>p o l i c y Q u a l i f i e r s ;

64 } e l s e {65 th row new E x c e p t i o n ( "PolicyQualifier vazio.

66 Deve conter pelo menos 1 elemento!" ) ;

67 }

Page 163: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

162

68

69 }70

71 /∗ ∗72 ∗ S e t a o I d e n t i f i c a d o r P o l i c y I D

73 ∗74 ∗ @access p u b l i c

75 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

76 ∗ @param O b j e c t I d e n t i f i e r OID a s e t a r

77 ∗ @return v o i d

78 ∗ /

79 p u b l i c f u n c t i o n s e t P o l i c y I d e n t i f i e r (

L a b s e c S e c u r i t y C e r t i f i c a t i o n O b j e c t I d e n t i f i e r $o id )

80 {81 $ t h i s−>p o l i c y I d e n t i f i e r = $o id ;

82 }83

84 /∗ ∗85 ∗ Re torna o P o l i c y I D

86 ∗87 ∗ @access p u b l i c

88 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

89 ∗ @return O b j e c t I d e n t i f i e r p o l i c y I D

90 ∗ /

91 p u b l i c f u n c t i o n g e t P o l i c y I d e n t i f i e r ( )

92 {93 i f ( i s s e t ( $ t h i s−>p o l i c y I d e n t i f i e r ) ) {94 r e t u r n $ t h i s−>p o l i c y I d e n t i f i e r ;

95 } e l s e {96 th row new E x c e p t i o n ( ’ERRO: policyIdentifier n o definido.

’ ) ;

97 }98 }99

100 } /∗ end o f c l a s s P o l i c y I n f o r m a t i o n ∗ /

101

102 ?>

1 <?php

2 e r r o r r e p o r t i n g ( E ALL ) ;

3 /∗ ∗4 ∗ s g c i − c l a s s . P o l i c y Q u a l i f i e r I n f o . php

5 ∗

Page 164: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

163

6 ∗ $ Id$

7 ∗8 ∗ T h i s f i l e i s p a r t o f s g c i .

9 ∗10 ∗ A u t o m a t i c g e n e r a t e d w i t h ArgoUML 0 . 2 4 on 1 4 . 0 8 . 2 0 0 7 , 1 7 : 0 7 : 2 1

11 ∗12 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

13 ∗ /

14

15 i f (0 > vers ion compare ( PHP VERSION , ’5’ ) ) {16 d i e ( ’This file was generated for PHP 5’ ) ;

17 }18

19 r e q u i r e o n c e ( ’Labsec/Security/Certification/Extension/Policy/Qualifier.php’

) ;

20

21 /∗ ∗22 ∗ C l a s s e que r e p r e s e n t a o t i p o P o l i c y Q u a l i f i e r I n f o .

23 ∗24 ∗ P o l i Q u a l i f i e r I n f o em ASN . 1 :

25 ∗ P o l i c y Q u a l i f i e r I n f o : := SEQUENCE {26 ∗ p o l i c y Q u a l i f i e r I d P o l i c y Q u a l i f i e r I d ,

27 ∗ q u a l i f i e r ANY DEFINED BY p o l i c y Q u a l i f i e r I d }28 ∗29 ∗ @access p u b l i c

30 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

31 ∗ /

32 c l a s s L a b s e c S e c u r i t y C e r t i f i c a t i o n E x t e n s i o n P o l i c y P o l i c y Q u a l i f i e r I n f o

33 {34

35 p r i v a t e $ q u a l i f i e r s = array ( ) ;

36

37 /∗ ∗38 ∗ A d i c i o n a um q u a l i f i e r

39 ∗40 ∗ @access p u b l i c

41 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

42 ∗ $param O b j e c t I d e n t i f i e r o p o l i c y Q u a l i f i e r a a d i c i o n a r

43 ∗ @param Q u a l i f i e r o q u a l i f i e r a a d i c i o n a r

44 ∗ @return v o i d

45 ∗ /

46 p u b l i c f u n c t i o n a d d Q u a l i f i e r (

L a b s e c S e c u r i t y C e r t i f i c a t i o n E x t e n s i o n P o l i c y Q u a l i f i e r $ q u a l i f i e r )

Page 165: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

164

47 {48 $ t h i s−>q u a l i f i e r s [ ] = $ q u a l i f i e r ;

49 }50

51 /∗ ∗52 ∗ Re torna os q u a l i f i e r s

53 ∗54 ∗ @access p u b l i c

55 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

56 ∗ @return a r r a y Array c o n t e n d o os q u a l i f i e r s

57 ∗ /

58 p u b l i c f u n c t i o n g e t Q u a l i f i e r s ( )

59 {60 i f ( count ( $ t h i s−>q u a l i f i e r s ) > 0) {61 r e t u r n $ t h i s−>q u a l i f i e r s ;

62 } e l s e {63 th row new E x c e p t i o n ( "Qualifiers vazio. Deve conter pelo menos 1

elemento!" ) ;

64 }65 }66

67 } /∗ end o f c l a s s P o l i c y Q u a l i f i e r I n f o ∗ /

68

69 ?>

1 <?php

2 e r r o r r e p o r t i n g ( E ALL ) ;

3

4 /∗ ∗5 ∗ s g c i − c l a s s . CPSUri . php

6 ∗7 ∗ $ Id$

8 ∗9 ∗ T h i s f i l e i s p a r t o f s g c i .

10 ∗11 ∗ A u t o m a t i c g e n e r a t e d w i t h ArgoUML 0 . 2 4 on 1 4 . 0 8 . 2 0 0 7 , 1 7 : 0 6 : 5 4

12 ∗13 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

14 ∗ /

15

16 i f (0 > vers ion compare ( PHP VERSION , ’5’ ) ) {17 d i e ( ’This file was generated for PHP 5’ ) ;

18 }

Page 166: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

165

19

20 /∗ ∗21 ∗ i n c l u i Q u a l i f i e r

22 ∗23 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

24 ∗ /

25 r e q u i r e o n c e ( ’Labsec/Security/Certification/Extension/Policy/Qualifier.php’

) ;

26 r e q u i r e o n c e ( ’Labsec/Security/Certification/ObjectIdentifierFactory.php’ ) ;

27

28 /∗ ∗29 ∗ C l a s s e que r e p r e s e n t a o t i p o CPSUri . <br>

30 ∗31 ∗ CPSUri em ASN . 1 : <br>

32 ∗ CPSuri : := I A 5 S t r i n g

33 ∗34 ∗ @access p u b l i c

35 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

36 ∗ /

37 c l a s s L a b s e c S e c u r i t y C e r t i f i c a t i o n E x t e n s i o n P o l i c y C P S U r i

38 e x t e n d s L a b s e c S e c u r i t y C e r t i f i c a t i o n E x t e n s i o n P o l i c y Q u a l i f i e r

39 {40

41 p r i v a t e $CPSuri ;

42

43 /∗ ∗44 ∗ C o n s t r u t o r que s e t a o p o l i c y Q u a l i f i e r I D

45 ∗46 ∗ @access p u b l i c

47 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

48 ∗ @param s t r i n g a u r i a s e t a r . P a r m e t r o o p c i o n a l

49 ∗ @return v o i d

50 ∗ @throws E x c e p t i o n Quando o p a r m e t r o o p c i o n a l do c o n s t r u t o r n o

f o r uma s t r i n g

51 ∗ /

52 p u b l i c f u n c t i o n c o n s t r u c t ( $ u r i = n u l l )

53 {54 / / s e t a o p o l i c y Q u a l i f i e r I D

55 $oIDFa c to ry = new

L a b s e c S e c u r i t y C e r t i f i c a t i o n O b j e c t I d e n t i f i e r F a c t o r y ( ) ;

56 $ t h i s−>p o l i c y Q u a l i f i e r I d = $oIDFac tory−>g e t O b j e c t I d e n t i f i e r ( ’

1.3.6.1.5.5.7.2.1’ ) ;

57

Page 167: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

166

58 i f ( $ u r i != n u l l ) {59 $ t h i s−>s e t U r i ( $ u r i ) ;

60 }61 }62

63 /∗ ∗64 ∗ S e t a o v a l o r de CPSUri

65 ∗66 ∗ @access p u b l i c

67 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

68 ∗ @param s t r i n g o v a l o r a s e t a r

69 ∗ @return v o i d

70 ∗ /

71 p u b l i c f u n c t i o n s e t U r i ( $ u r i )

72 {73 i f ( i s s t r i n g ( $ u r i ) ) {74 $ t h i s−>CPSuri = $ u r i ;

75 } e l s e {76 th row new E x c e p t i o n ( ’O valor do p a r m e t r o uri deve ser string.

’ ) ;

77 }78 }79

80 /∗ ∗81 ∗ Re torna o v a l o r de CPSUri

82 ∗83 ∗ @access p u b l i c

84 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

85 ∗ @return s t r i n g o v a l o r de CPSUri

86 ∗ @throws E x c e p t i o n L a n a e x c e o quando

87 ∗ /

88 p u b l i c f u n c t i o n g e t U r i ( )

89 {90 i f ( i s s e t ( $ t h i s−>CPSuri ) ) {91 r e t u r n $ t h i s−>CPSuri ;

92 } e l s e {93 th row new E x c e p t i o n ( ’ERRO: CPSUri n o setado’ ) ;

94 }95 }96

97 } /∗ end o f c l a s s CPSUri ∗ /

98

99 ?>

Page 168: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

167

1 <?php

2 e r r o r r e p o r t i n g ( E ALL ) ;

3

4 /∗ ∗5 ∗ s g c i − c l a s s . Q u a l i f i e r . php

6 ∗7 ∗ $ Id$

8 ∗9 ∗ T h i s f i l e i s p a r t o f s g c i .

10 ∗11 ∗ A u t o m a t i c g e n e r a t e d w i t h ArgoUML 0 . 2 4 on 1 4 . 0 8 . 2 0 0 7 , 1 7 : 0 7 : 3 1

12 ∗13 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

14 ∗ /

15

16 i f (0 > vers ion compare ( PHP VERSION , ’5’ ) ) {17 d i e ( ’This file was generated for PHP 5’ ) ;

18 }19

20 /∗ ∗21 ∗ C l a s s e a b s t r a t a que r e p r e s e n t a o t i p o Q u a l i f i e r da RFC 3280 <br>

22 ∗23 ∗ Q u a l i f i e r em ASN . 1 : <br>

24 ∗ Q u a l i f i e r : := CHOICE {25 ∗ cP S u r i CPSuri ,

26 ∗ u s e r N o t i c e U s e r N o t i c e }27 ∗28 ∗ @abs t rac t

29 ∗ @access p u b l i c

30 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

31 ∗ /

32 a b s t r a c t c l a s s L a b s e c S e c u r i t y C e r t i f i c a t i o n E x t e n s i o n P o l i c y Q u a l i f i e r

33 {34

35 p r o t e c t e d $ p o l i c y Q u a l i f i e r I d ;

36

37 /∗ ∗38 ∗ Re torna o p o l i c y Q u a l i f i e r I d

39 ∗40 ∗ @access p u b l i c

41 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

Page 169: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

168

42 ∗ @return O b j e c t I d e n t i f i e r o OID do p o l i c y Q u a l i f i e r I D

43 ∗ /

44 p u b l i c f u n c t i o n g e t P o l i c y Q u a l i f i e r I d ( )

45 {46 r e t u r n $ t h i s−>p o l i c y Q u a l i f i e r I d ;

47 }48

49 } /∗ end o f a b s t r a c t c l a s s Q u a l i f i e r ∗ /

50

51 ?>

1 <?php

2 e r r o r r e p o r t i n g ( E ALL ) ;

3

4 /∗ ∗5 ∗ s g c i − c l a s s . U s e r N o t i c e . php

6 ∗7 ∗ $ Id$

8 ∗9 ∗ T h i s f i l e i s p a r t o f s g c i .

10 ∗11 ∗ A u t o m a t i c g e n e r a t e d w i t h ArgoUML 0 . 2 4 on 1 4 . 0 8 . 2 0 0 7 , 1 7 : 0 7 : 4 0

12 ∗13 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

14 ∗ /

15

16 i f (0 > vers ion compare ( PHP VERSION , ’5’ ) ) {17 d i e ( ’This file was generated for PHP 5’ ) ;

18 }19

20 /∗ ∗21 ∗ i n c l u d e Q u a l i f i e r

22 ∗23 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

24 ∗ /

25 r e q u i r e o n c e ( ’Labsec/Security/Certification/Extension/Policy/Qualifier.php’

) ;

26 r e q u i r e o n c e ( ’Labsec/Security/Certification/ObjectIdentifierFactory.php’ ) ;

27

28 /∗ ∗29 ∗ C l a s s e que r e p r e s e n t a o t i p o u s e r N o t i c e da RFC3280 :

30 ∗31 ∗ @access p u b l i c

Page 170: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

169

32 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

33 ∗ /

34 c l a s s L a b s e c S e c u r i t y C e r t i f i c a t i o n E x t e n s i o n P o l i c y U s e r N o t i c e

35 e x t e n d s L a b s e c S e c u r i t y C e r t i f i c a t i o n E x t e n s i o n P o l i c y Q u a l i f i e r

36 {37 p r i v a t e $ u s e r N o t i c e ;

38

39 /∗ ∗40 ∗ C o n s t r u t o r que s e t a o p o l i c y Q u a l i f i e r I D

41 ∗42 ∗ @access p u b l i c

43 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

44 ∗ @param s t r i n g o t e x t o a s e t a r . P a r m e t r o o p c i o n a l

45 ∗ @return v o i d

46 ∗ @throws E x c e p t i o n Quando o p a r m e t r o o p c i o n a l do c o n s t r u t o r n o

f o r uma s t r i n g

47 ∗ /

48 p u b l i c f u n c t i o n c o n s t r u c t ( $ t e x t = n u l l )

49 {50 / / s e t a o p o l i c y Q u a l i f i e r I D

51 $oIDFa c to ry = new

L a b s e c S e c u r i t y C e r t i f i c a t i o n O b j e c t I d e n t i f i e r F a c t o r y ( ) ;

52 $ t h i s−>p o l i c y Q u a l i f i e r I d = $oIDFac tory−>g e t O b j e c t I d e n t i f i e r ( ’

1.3.6.1.5.5.7.2.2’ ) ;

53

54 i f ( $ t e x t != n u l l ) {55 $ t h i s−>s e t T e x t ( $ t e x t ) ;

56 }57 }58

59 /∗ ∗60 ∗ A d i c i o n a uma d e s c r i o ao u s e r N o t i c e

61 ∗62 ∗ @access p u b l i c

63 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

64 ∗ @param s t r i n g o t e x t o a s e t a r

65 ∗ @return v o i d

66 ∗ @throws E x c e p t i o n Quando o p a r m e t r o t e x t n o f o r uma s t r i n g

67 ∗ /

68 p u b l i c f u n c t i o n s e t T e x t ( $ t e x t )

69 {70 i f ( i s s t r i n g ( $ t e x t ) ) {71 $ t h i s−>u s e r N o t i c e = $ t e x t ;

Page 171: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

170

72 } e l s e {73 th row new E x c e p t i o n ( ’ P a r m e t r o text de userNotice DEVE ser

string.’ ) ;

74 }75 }76

77 /∗ ∗78 ∗ Re torna o t e x t o de u s e r N o t i c e

79 ∗80 ∗ @access p u b l i c

81 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

82 ∗ @return s t r i n g o t e x t o em u s e r N o t i c e

83 ∗ @throws E x c e p t i o n Se o u s e r N o t i c e n o e s t i v e r s e t a d o .

84 ∗ /

85 p u b l i c f u n c t i o n g e t T e x t ( )

86 {87 i f ( i s s e t ( $ t h i s−>u s e r N o t i c e ) ) {88 r e t u r n $ t h i s−>u s e r N o t i c e ;

89 } e l s e {90 th row new E x c e p t i o n ( ’ERRO: UserNotice n o setado.’ ) ;

91 }92 }93

94

95

96 } /∗ end o f c l a s s U s e r N o t i c e ∗ /

97

98 ?>

1 <?php

2 e r r o r r e p o r t i n g ( E ALL ) ;

3

4 /∗ ∗5 ∗ s g c i − i n t e r f a c e . Ex t endedKeyUsageEx tens ion . php

6 ∗7 ∗ $ Id$

8 ∗9 ∗ T h i s f i l e i s p a r t o f s g c i .

10 ∗11 ∗ A u t o m a t i c g e n e r a t e d w i t h ArgoUML 0 . 2 4 on 1 4 . 0 8 . 2 0 0 7 , 1 7 : 0 5 : 3 6

12 ∗13 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

14 ∗ /

Page 172: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

171

15

16 i f (0 > vers ion compare ( PHP VERSION , ’5’ ) ) {17 d i e ( ’This file was generated for PHP 5’ ) ;

18 }19

20 /∗ ∗21 ∗ i n c l u i E x t e n s i o n

22 ∗23 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

24 ∗ /

25 r e q u i r e o n c e ( ’Labsec/Security/Certification/Extension.php’ ) ;

26

27 /∗ ∗28 ∗ I n t e r f a c e que imp lemen ta a e x t e n s o KeyUsage <br>

29 ∗30 ∗ A e x t e n s o em f o r m a t o ASN . 1 : <br>

31 ∗ ExtKeyUsageSyn tax : := SEQUENCE SIZE ( 1 . . MAX) OF KeyPurposeId <br>

32 ∗33 ∗ KeyPurposeId : := OBJECT IDENTIFIER

34 ∗35 ∗ @access p u b l i c

36 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

37 ∗ /

38 a b s t r a c t c l a s s

L a b s e c S e c u r i t y C e r t i f i c a t i o n E x t e n s i o n E x t e n d e d K e y U s a g e E x t e n s i o n

39 e x t e n d s L a b s e c S e c u r i t y C e r t i f i c a t i o n E x t e n s i o n

40 {41 /∗ ∗42 ∗ A d i c i o n a um KeyPurposeId

43 ∗44 ∗ @access p u b l i c

45 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

46 ∗ @param O b j e c t I d e n t i f i e r o k e y P u r p o s e I d a s e r a d i c i o n a d o

47 ∗ @return v o i d

48 ∗ /

49 p u b l i c a b s t r a c t f u n c t i o n addUsage (

L a b s e c S e c u r i t y C e r t i f i c a t i o n O b j e c t I d e n t i f i e r $o id ) ;

50

51 /∗ ∗52 ∗ Re torna uma l i s t a com os KeyPurpose

53 ∗54 ∗ @access p u b l i c

55 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

Page 173: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

172

56 ∗ @return a r r a y a r r a y c o n t e n d o em cada l i n h a um OID r e p r e s e n t a n d o o

KeyPurpose

57 ∗ /

58 p u b l i c a b s t r a c t f u n c t i o n g e t U s a g e s ( ) ;

59

60 } /∗ end o f i n t e r f a c e Ex t endedKeyUsageEx tens ion ∗ /

61

62 ?>

1 <?php

2 e r r o r r e p o r t i n g ( E ALL ) ;

3

4 /∗ ∗5 ∗ t e s t e − c l a s s . O b j e c t I d e n t i f i e r . php

6 ∗7 ∗ $ Id$

8 ∗9 ∗ T h i s f i l e i s p a r t o f t e s t e .

10 ∗11 ∗ A u t o m a t i c g e n e r a t e d w i t h ArgoUML 0 . 2 4 on 2 6 . 0 7 . 2 0 0 7 , 1 2 : 3 8 : 2 0

12 ∗13 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

14 ∗ /

15

16 i f (0 > vers ion compare ( PHP VERSION , ’5’ ) ) {17 d i e ( ’This file was generated for PHP 5’ ) ;

18 }19

20 /∗ ∗21 ∗ C l a s s e r e s p o n s v e l p e l o s O b j e c t s IDs

22 ∗23 ∗ @access p u b l i c

24 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

25 ∗ /

26 c l a s s L a b s e c S e c u r i t y C e r t i f i c a t i o n O b j e c t I d e n t i f i e r

27 {28

29 p r i v a t e $ i d ;

30

31 /∗ ∗32 ∗ S e t a o ID do O bj e to

33 ∗34 ∗ @access p u b l i c

Page 174: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

173

35 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

36 ∗ @param s t r i n g ID do Ob je to

37 ∗ @return v o i d

38 ∗ /

39 p u b l i c f u n c t i o n setOID ( $o id )

40 {41 $ t h i s−>i d = ( s t r i n g ) $o id ;

42 }43

44 /∗ ∗45 ∗ Re torna o ID do O bj e t o

46 ∗47 ∗ @access p u b l i c

48 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

49 ∗ @return s t r i n g ID do Obj e t o

50 ∗ /

51 p u b l i c f u n c t i o n getOID ( )

52 {53 r e t u r n $ t h i s−>i d ;

54 }55

56 } /∗ end o f c l a s s O b j e c t I d e n t i f i e r ∗ /

57

58 ?>

1 <?php

2 e r r o r r e p o r t i n g ( E ALL ) ;

3 / / TODO v e r i f i c a r d o c u m e n t a o dos th r ows da e x c p t i o n s

4 /∗ ∗5 ∗ s g c i − i n t e r f a c e . C e r t i f i c a t e . php

6 ∗7 ∗ $ Id$

8 ∗9 ∗ T h i s f i l e i s p a r t o f s g c i .

10 ∗11 ∗ A u t o m a t i c g e n e r a t e d w i t h ArgoUML 0 . 2 4 on 1 4 . 0 8 . 2 0 0 7 , 1 7 : 0 9 : 2 8

12 ∗13 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

14 ∗ /

15

16 i f (0 > vers ion compare ( PHP VERSION , ’5’ ) ) {17 d i e ( ’This file was generated for PHP 5’ ) ;

18 }

Page 175: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

174

19

20 /∗ ∗21 ∗ I n t e r f a c e que r e p r e s e n t a um C e r t i f i c a d o X . 5 0 9

22 ∗23 ∗ @access p u b l i c

24 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

25 ∗ /

26 i n t e r f a c e L a b s e c S e c u r i t y C e r t i f i c a t i o n C e r t i f i c a t e

27 {28

29 /∗ ∗30 ∗ C o n s t r u t o r

31 ∗32 ∗ @access p u b l i c

33 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

34 ∗ @param v o i d os ”dados” do c e r t i f i c a d o

35 ∗ @param s t r i n g o f o r m a t o do dados (PEM ou DER) . P a r m e t r o o p c i o n a l ,

o

36 ∗ d e f a u l t PEM

37 ∗ @return v o i d

38 ∗ /

39 p u b l i c f u n c t i o n c o n s t r u c t ( $da ta , $ t y p e = ’PEM’ ) ;

40

41 /∗ ∗42 ∗ Re torna o c e r t i f i c a d o em f o r m a t o PEM

43 ∗44 ∗ @access p u b l i c

45 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

46 ∗ @return s t r i n g o c e r t i f i c a d o em f o r m a t o PEM

47 ∗ /

48 p u b l i c f u n c t i o n getPem ( ) ;

49

50 /∗ ∗51 ∗ Re torna o c e r t i f i c a d o em f o r m a t o DER

52 ∗53 ∗ @access p u b l i c

54 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

55 ∗ @return v o i d o c e r t i f i c a d o em f o r m a t o DER

56 ∗ /

57 p u b l i c f u n c t i o n ge tD e r ( ) ;

58

59 /∗ ∗60 ∗ Re torna o s u b j e c t do c e r t i f i c a d o

Page 176: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

175

61 ∗62 ∗ @access p u b l i c

63 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

64 ∗ @return RDNSequence o s u j e i t o do c e r t i f i c a d o

65 ∗ /

66 p u b l i c f u n c t i o n g e t S u b j e c t ( ) ;

67

68 /∗ ∗69 ∗ Re torna o i s s u e r do c e r t i f i c a d o

70 ∗71 ∗ @access p u b l i c

72 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

73 ∗ @return RDNSequence o e m i s s o r do c e r t i f i c a d o

74 ∗ /

75 p u b l i c f u n c t i o n g e t I s s u e r ( ) ;

76

77 /∗ ∗78 ∗ Re torna o s e r i a l N u m b e r do c e r t i f i c a d o

79 ∗80 ∗ @access p u b l i c

81 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

82 ∗ @return s t r i n g o n m e r o s e r i a l do c e r t i f i c a d o

83 ∗ /

84 p u b l i c f u n c t i o n g e t S e r i a l N u m b e r ( ) ;

85

86 /∗ ∗87 ∗ Re torna o a l g o r i t m o que hash u t i l i z a d o

88 ∗89 ∗ @access p u b l i c

90 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

91 ∗ @return s t r i n g o a l g o r i t m o de hash

92 ∗ /

93 p u b l i c f u n c t i o n g e t M e s s a g e D i g e s t A l g o r i t h m ( ) ;

94

95 /∗ ∗96 ∗ Re torna o n o t B e f o r e do c e r t i f i c a d o

97 ∗98 ∗ @access p u b l i c

99 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

100 ∗ @return Zend Date a da ta de v a l i d a d e f i n a l do c e r t i f i c a d o

101 ∗ /

102 p u b l i c f u n c t i o n g e t N o t B e f o r e ( ) ;

103

Page 177: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

176

104 /∗ ∗105 ∗ Re torna o n o t A f t e r do c e r t i f i c a d o

106 ∗107 ∗ @access p u b l i c

108 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

109 ∗ @return Zend Date a da ta de v a l i d a d e i n i c i a l do c e r t i f i c a d o

110 ∗ /

111 p u b l i c f u n c t i o n g e t N o t A f t e r ( ) ;

112

113 /∗ ∗114 ∗ Re torna a v e r s o do c e r t i f i c a d o

115 ∗116 ∗ @access p u b l i c

117 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

118 ∗ @return i n t a v e r s o do c e r t i f i c a d o

119 ∗ /

120 p u b l i c f u n c t i o n g e t V e r s i o n ( ) ;

121

122 /∗ ∗123 ∗ Re torna a p u b l i c K e y do c e r t i f i c a d o

124 ∗125 ∗ @access p u b l i c

126 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

127 ∗ @return mixed a chave p b l i c a do c e r t i f i c a d o

128 ∗ /

129 p u b l i c f u n c t i o n g e t P u b l i c K e y ( ) ;

130

131 /∗ ∗132 ∗ V e r i f i c a a a s s i n a t u r a

133 ∗134 ∗ @access p u b l i c

135 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

136 ∗ @return boo lean TRUE se a a s s i n a t u r a f o r v l i d a , FALSE caso

c o n t r r i o

137 ∗ /

138 p u b l i c f u n c t i o n v e r i f y S i g n a t u r e (

L a b s e c S e c u r i t y C e r t i f i c a t i o n C e r t i f i c a t e $ i s s u e r ) ;

139

140 /∗ ∗141 ∗ Re torna uma l i s t a de e x t e n s e s do c e r t i f i c a d o

142 ∗143 ∗ @access p u b l i c

144 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

Page 178: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

177

145 ∗ @return a r r a y uma a r r a y c o n t e n d o em cada l i n h a uma e x t e n s o do

c e r t i f i c a d o

146 ∗ /

147 p u b l i c f u n c t i o n g e t E x t e n s i o n s ( ) ;

148

149 /∗ ∗150 ∗ Re torna uma e x t e n s o e s p e c f i c a do c e r t i f i c a d o

151 ∗152 ∗ @access p u b l i c

153 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

154 ∗ @param O b j e c t I d e n t i f i e r o OID da e x t e n s o a s e r r e t o r n a d a

155 ∗ @return E x t e n s i o n a e x t e n s o s o l i c i t a d a .

156 ∗ /

157 p u b l i c f u n c t i o n g e t E x t e n s i o n (

L a b s e c S e c u r i t y C e r t i f i c a t i o n O b j e c t I d e n t i f i e r $o id ) ;

158

159 /∗ ∗160 ∗ Re torna o F i n g e r P r i n t do c e r t i f i c a d o

161 ∗162 ∗ @access p u b l i c

163 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

164 ∗ @param i n t o a l g o r i t m o de hash

165 ∗ @return s t r i n g a ” i m p r e s s o d i g i t a l ” do c e r t i f i c a d o

166 ∗ /

167 p u b l i c f u n c t i o n g e t F i n g e r p r i n t ( $ a l g o r i t h m ) ;

168

169 /∗ ∗170 ∗ Re torna as e x t e n s e s d e s c o n h e c i d a s

171 ∗172 ∗ @access p u b l i c

173 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

174 ∗ @return a r r a y uma a r r a y c o n t e n d o em cada l i n h a uma UnknownExtens ion

175 ∗ /

176 p u b l i c f u n c t i o n ge tUnknownExtens ions ( ) ;

177

178

179 /∗ ∗180 ∗ Re torna P u b l i c K e y I n f o

181 ∗182 ∗ @access p u b l i c

183 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

184 ∗ @return a r r a y o P u b l i c K e y I n f o do c e r t i f i c a d o

185 ∗ /

Page 179: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

178

186 p u b l i c f u n c t i o n g e t P u b l i c K e y I n f o ( ) ;

187

188 } /∗ end o f i n t e r f a c e C e r t i f i c a t e ∗ /

189

190 ?>

1 <?php

2 e r r o r r e p o r t i n g ( E ALL ) ;

3

4 /∗ ∗5 ∗ t e s t e − c l a s s . E x t e n s i o n . php

6 ∗7 ∗ $ Id$

8 ∗9 ∗ T h i s f i l e i s p a r t o f t e s t e .

10 ∗11 ∗ A u t o m a t i c g e n e r a t e d w i t h ArgoUML 0 . 2 4 on 2 6 . 0 7 . 2 0 0 7 , 1 2 : 3 8 : 2 0

12 ∗13 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

14 ∗ /

15

16 i f (0 > vers ion compare ( PHP VERSION , ’5’ ) ) {17 d i e ( ’This file was generated for PHP 5’ ) ;

18 }19

20 /∗ ∗21 ∗ C l a s s e das e x t e n s e s do c e r t i f i c a d o .

22 ∗23 ∗ Segundo a RFC , o ASN . 1 de uma e x t e n s o d e f i n i d o como : <br>

24 ∗ E x t e n s i o n : := SEQUENCE { <br>

25 ∗ ex t n I D OBJECT IDENTIFIER , <br>

26 ∗ c r i t i c a l BOOLEAN DEFAULT FALSE , <br>

27 ∗ e x t n V a l u e OCTET STRING } <br>

28 ∗29 ∗ @access p u b l i c

30 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

31 ∗ /

32 a b s t r a c t c l a s s L a b s e c S e c u r i t y C e r t i f i c a t i o n E x t e n s i o n

33 {34 p r o t e c t e d $ex tnID ;

35

36 p r o t e c t e d $ c r i t i c a l = FALSE ;

37

Page 180: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

179

38 /∗ ∗39 ∗ C o n s t r u t o r . Cada E x t e n s o deve d e f i n i r o OID no c o n s t r u t o r

40 ∗ /

41 p u b l i c a b s t r a c t f u n c t i o n c o n s t r u c t ( ) ;

42

43 /∗ ∗44 ∗ Re torna o v a l o r da e x t e n s o

45 ∗46 ∗ @access p u b l i c

47 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

48 ∗ @return s t r i n g o v a l o r

49 ∗ /

50 p u b l i c a b s t r a c t f u n c t i o n g e t V a l u e ( ) ;

51 / / TODO i m p l e m e n t a r m t o d o g e t V a l u e em t o d a s as e x t e n s e s

52

53 /∗ ∗54 ∗ Re torna o v a l o r da e x t e n s o em base 64

55 ∗56 ∗ @access p u b l i c

57 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

58 ∗ @return s t r i n g o v a l o r

59 ∗ /

60 p u b l i c a b s t r a c t f u n c t i o n ge tBase64Va lue ( ) ;

61 / / TODO i m p l e m e n t a r m t o d o g e t B a s e 6 4 V a l u e em t o d a s as e x t e n s e s

62

63 /∗ ∗64 ∗ Re torna o e x tn ID da e x t e n s o

65 ∗66 ∗ @access p u b l i c

67 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

68 ∗ @return O b j e c t I d e n t i f i e r O ex t n I D da E x t e n s o

69 ∗ /

70 p u b l i c f u n c t i o n g e t O i d ( )

71 {72 r e t u r n $ t h i s−>extnID−>ge tO id ( ) ;

73 }74

75 /∗ ∗76 ∗ V e r i f i c a se a e x t e n s o CRITICAL

77 ∗78 ∗ @access p u b l i c

79 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

Page 181: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

180

80 ∗ @return boo lean TRUE se a e x t e n s o CRITICAL , caso c o n t r r i o

FALSE

81 ∗ /

82 p u b l i c f u n c t i o n i s C r i t i c a l ( )

83 {84 r e t u r n ( boo l ) $ t h i s−> c r i t i c a l ;

85 }86

87 /∗ ∗88 ∗ S e t a o v a l o r CRITICAL da e x t e n s o

89 ∗90 ∗ @access p u b l i c

91 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

92 ∗ @param boo lean Valor a s e r s e t a d o em CRITICAL

93 ∗ @return v o i d

94 ∗ /

95 p u b l i c f u n c t i o n s e t C r i t i c a l ( $ c r i t i c a l )

96 {97 $ t h i s−> c r i t i c a l = $ c r i t i c a l ;

98 }99

100 } /∗ end o f c l a s s E x t e n s i o n ∗ /

101

102 ?>

1 <?php

2 e r r o r r e p o r t i n g ( E ALL ) ;

3

4 /∗ ∗5 ∗ s g c i − i n t e r f a c e . C e r t i f i c a t e R e v o c a t i o n L i s t B u i l d e r . php

6 ∗7 ∗ $ Id$

8 ∗9 ∗ T h i s f i l e i s p a r t o f s g c i .

10 ∗11 ∗ A u t o m a t i c g e n e r a t e d w i t h ArgoUML 0 . 2 4 on 1 4 . 0 8 . 2 0 0 7 , 1 6 : 5 8 : 5 6

12 ∗13 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

14 ∗ /

15

16 i f (0 > vers ion compare ( PHP VERSION , ’5’ ) ) {17 d i e ( ’This file was generated for PHP 5’ ) ;

18 }

Page 182: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

181

19

20 /∗ ∗21 ∗ O B u i l d e r da c l a s s e C e r t i f i c a t e R e v o g a t i o n L i s t , que r e p r e s e n t a uma LCR

22 ∗ ( L i s t a de C e r t i f i c a d o s Revogados )

23 ∗24 ∗ @access p u b l i c

25 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

26 ∗ /

27 i n t e r f a c e L a b s e c S e c u r i t y C e r t i f i c a t i o n C e r t i f i c a t e R e v o c a t i o n L i s t B u i l d e r

28 {29 /∗ ∗30 ∗ C o n s t r u t o r

31 ∗32 ∗ @access p u b l i c

33 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

34 ∗ @return v o i d

35 ∗ /

36 p u b l i c f u n c t i o n c o n s t r u c t ( ) ;

37

38 /∗ ∗39 ∗ S e t a o e m i s s o r da CRL

40 ∗41 ∗ @access p u b l i c

42 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

43 ∗ @param RDNSequence o e m i s s o r

44 ∗ @return v o i d

45 ∗ /

46 p u b l i c f u n c t i o n s e t I s s u e r (

L a b s e c S e c u r i t y C e r t i f i c a t i o n D a t a T y p e s R D N S e q u e n c e $ i s s u e r ) ;

47

48 /∗ ∗49 ∗ S e t a a d a ta de e m i s s o da CRL

50 ∗51 ∗ @access p u b l i c

52 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

53 ∗ @param Zend Date a da ta de e m i s s o da CRL

54 ∗ @return v o i d

55 ∗ /

56 p u b l i c f u n c t i o n s e t T h i s U p d a t e ( Zend Date $ d a t e ) ;

57

58

59 /∗ ∗60 ∗ S e t a a d a ta de e m i s s o da p r x i m a CRL

Page 183: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

182

61 ∗62 ∗ @access p u b l i c

63 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

64 ∗ @param Zend Date a da ta de e m i s s o da p r x i m a CRL ( da ta de

v a l i d a d e ) .

65 ∗ @return v o i d

66 ∗ /

67 p u b l i c f u n c t i o n s e t N e x t U p d a t e ( Zend Date $ d a t e ) ;

68

69

70 /∗ ∗71 ∗ S e t a o n m e r i o s e r i a l

72 ∗73 ∗ @access p u b l i c

74 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

75 ∗ @param s t r i n g o n m e r o s e r i a l da CRL .

76 ∗ @return v o i d

77 ∗ /

78 p u b l i c f u n c t i o n s e t S e r i a l ( $ s e r i a l ) ;

79

80 /∗ ∗81 ∗ A d i c i o n a uma e n t r a d a na CRL

82 ∗83 ∗ @access p u b l i c

84 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

85 ∗ @param CRLEntry a e n t r a d a a a d i c i o n a r

86 ∗ @return v o i d

87 ∗ /

88 p u b l i c f u n c t i o n addCRLEntry ( L a b s e c S e c u r i t y C e r t i f i c a t i o n C R L C R L E n t r y

$ c r l E n t r y ) ;

89

90 /∗ ∗91 ∗ A s s i n a os dados , e r e t o r n a uma CRL

92 ∗93 ∗ @access p u b l i c

94 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

95 ∗ @param s t r i n g a chave p r i v a d a

96 ∗ @param s t r i n g o a l g o r i t m o de hash

97 ∗ @return C e r t i f i c a t e R e v o c a t i o n L i s t argumentos e x t r a s

98 ∗ /

99 p u b l i c f u n c t i o n s i g n ( $privKey , $hashAlgor i thm , $ e x t r a A r g s = n u l l ) ;

100

101 /∗ ∗

Page 184: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

183

102 ∗ A d i c i o n a uma e x t e n s o CRL

103 ∗104 ∗ @access p u b l i c

105 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

106 ∗ @param E x t e n s i o n E x t e n s o a d i c i o n a r

107 ∗ @return v o i d

108 ∗ /

109 p u b l i c f u n c t i o n a d d E x t e n s i o n ( L a b s e c S e c u r i t y C e r t i f i c a t i o n E x t e n s i o n

$ e x t e n s i o n ) ;

110

111 /∗ ∗112 ∗ A d i c i o n a v r i a s e x t e n s e s CRL

113 ∗114 ∗ @access p u b l i c

115 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

116 ∗ @param a r r a y uma a r r a y c o n t e n d o em cada l i n h a uma e x t e n s o

117 ∗ @return v o i d

118 ∗ /

119 p u b l i c f u n c t i o n a d d E x t e n s i o n s ( $ e x t e n s i o n s ) ;

120

121 } /∗ end o f i n t e r f a c e C e r t i f i c a t e R e v o c a t i o n L i s t B u i l d e r ∗ /

122

123 ?>

1 <?php

2

3 e r r o r r e p o r t i n g ( E ALL ) ;

4

5 /∗ ∗6 ∗ s g c i − i n t e r f a c e . CRLEntry . php

7 ∗8 ∗ $ Id$

9 ∗10 ∗ T h i s f i l e i s p a r t o f s g c i .

11 ∗12 ∗ A u t o m a t i c g e n e r a t e d w i t h ArgoUML 0 . 2 4 on 1 4 . 0 8 . 2 0 0 7 , 1 6 : 5 9 : 3 6

13 ∗14 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

15 ∗ /

16

17 i f (0 > vers ion compare ( PHP VERSION , ’5’ ) ) {18 d i e ( ’This file was generated for PHP 5’ ) ;

19 }

Page 185: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

184

20

21 r e q u i r e o n c e ( "Labsec/Security/Certification/ObjectIdentifier.php" ) ;

22 r e q u i r e o n c e ( "Labsec/Security/Certification/Extension.php" ) ;

23

24 /∗ ∗25 ∗ I n t e r f a c e que r e f r e s e n t a cada uma das e n t r a d a s de uma L i s t a de

C e r t i f i c a d o s Revogados (LCR)

26 ∗27 ∗ @access p u b l i c

28 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

29 ∗ /

30 i n t e r f a c e L a b s e c S e c u r i t y C e r t i f i c a t i o n C R L C R L E n t r y

31 {32 /∗ ∗33 ∗ Re torna o n m e r o s e r i a l do c e r t i f i c a d o revogado ( que e s t na

CRL) .

34 ∗35 ∗ @access p u b l i c

36 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

37 ∗ @return s t r i n g o n m e r o s e r i a l do c e r t i f i c a d o

38 ∗ /

39 p u b l i c f u n c t i o n g e t S e r i a l N u m b e r ( ) ;

40

41 /∗ ∗42 ∗ Re torna a da ta de r e v o g a o do c e r t i f i c a d o .

43 ∗44 ∗ @access p u b l i c

45 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

46 ∗ @return Zend Date a da ta de r e v o g a o .

47 ∗ /

48 p u b l i c f u n c t i o n g e t R e v o c a t i o n D a t e ( ) ;

49

50 /∗ ∗51 ∗ Re torna as e x t e n s e s da e n t r a d a do c e r t i f i c a d o .

52 ∗53 ∗ @access p u b l i c

54 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

55 ∗ @return a r r a y Array c o n t e n d o em cada l i n h a uma e x t e n s o .

56 ∗ /

57 p u b l i c f u n c t i o n g e t E x t e n s i o n s ( ) ;

58

59 /∗ ∗60 ∗ Re torna uma e x t e n s o do c e r t i f i c a d o .

Page 186: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

185

61 ∗62 ∗ @access p u b l i c

63 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

64 ∗ @param O b j e c t I d e n t i f i e r O OID da e x t e n s o a s e r r e t o r n a d a .

65 ∗ @return E x t e n s i o n A e x t e n s o r e q u i s i t a d a .

66 ∗ /

67 p u b l i c f u n c t i o n g e t E x t e n s i o n (

L a b s e c S e c u r i t y C e r t i f i c a t i o n O b j e c t I d e n t i f i e r $o id ) ;

68

69 /∗ ∗70 ∗ Re torna as e x t e n s e s d e s c o n h e c i d a s .

71 ∗72 ∗ @access p u b l i c

73 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

74 ∗ @return a r r a y Uma a r r a y de E x t e n s i o n , c o n t e n d o as e x t e n s e s

d e s c o n h e c i d a s .

75 ∗ /

76 p u b l i c f u n c t i o n ge tUnknownExtens ions ( ) ;

77

78 /∗ ∗79 ∗ S e t a o n m e r o s e r i a l da e n t r a d a ”X” da CRL .

80 ∗81 ∗ @access p u b l i c

82 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

83 ∗ @param s t r i n g o n m e r o s e r i a l .

84 ∗ @return v o i d

85 ∗ /

86 p u b l i c f u n c t i o n s e t S e r i a l N u m v e r ( $ s e r i a l ) ;

87

88 /∗ ∗89 ∗ A d i c i o n a e x t e n s o e n t r a d a ”X” da CRL .

90 ∗91 ∗ @access p u b l i c

92 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

93 ∗ @param E x t e n s i o n E x t e n s o a a d i c i o n a r

94 ∗ @return v o i d

95 ∗ /

96 p u b l i c f u n c t i o n a d d E x t e n s i o n (

L a b s e c S e c u r i t y C e r t i f i c a t i o n E x t e n s i o n $ e x t e n s i o n ) ;

97

98 /∗ ∗99 ∗ S e t a a da ta de r e v o g a o .

100 ∗

Page 187: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

186

101 ∗ @access p u b l i c

102 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

103 ∗ @param Zend Date da ta de r e v o g a o .

104 ∗ @return v o i d

105 ∗ /

106 p u b l i c f u n c t i o n s e t R e v o c a t i o n D a t e ( Zend Date $ d a t e ) ;

107

108 /∗ ∗109 ∗ Re torna a e n t r a d a da CRL em f o r m a t o PEM

110 ∗111 ∗ @access p u b l i c

112 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

113 ∗ @return var a e n t r a d a da CRL em f o r m a t o PEM

114 ∗ /

115 p u b l i c f u n c t i o n getPEM ( ) ;

116

117 /∗ ∗118 ∗ Re torna a e n t r a d a da CRL em f o r m a t o DER

119 ∗120 ∗ @access p u b l i c

121 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

122 ∗ @return var a e n t r a d a da CRL em f o r m a t o DER

123 ∗ /

124 p u b l i c f u n c t i o n getDER ( ) ;

125

126

127 } /∗ end o f i n t e r f a c e CRLEntry ∗ /

128

129 ?>

1 <?php

2 e r r o r r e p o r t i n g ( E ALL ) ;

3

4 /∗ ∗5 ∗ s g c i − c l a s s . D i s t r i b u t i o n P o i n t . php

6 ∗7 ∗ $ Id$

8 ∗9 ∗ T h i s f i l e i s p a r t o f s g c i .

10 ∗11 ∗ A u t o m a t i c g e n e r a t e d w i t h ArgoUML 0 . 2 4 on 2 7 . 0 8 . 2 0 0 7 , 1 8 : 3 5 : 1 4

12 ∗13 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

Page 188: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

187

14 ∗ /

15

16 i f (0 > vers ion compare ( PHP VERSION , ’5’ ) ) {17 d i e ( ’This file was generated for PHP 5’ ) ;

18 }19

20 /∗ ∗21 ∗ C l a s s e que r e p r e s e n t a o t i p o D i s t r i b u t i o n P o i n t <br>

22 ∗23 ∗ D i s t r i b u t i o n P o i n t em f o r m a t ASN . 1 : <br>

24 ∗ D i s t r i b u t i o n P o i n t : := SEQUENCE { <br>

25 ∗ d i s t r i b u t i o n P o i n t [ 0 ] D i s t r i b u t i o n P o i n t N a m e OPTIONAL , <

br>

26 ∗ r e a s o n s [ 1 ] ReasonFlags OPTIONAL , <br>

27 ∗ c R L I s s u e r [ 2 ] GeneralNames OPTIONAL } <br>

28 ∗29 ∗ D i s t r i b u t i o n P o i n t N a m e : := CHOICE { <br>

30 ∗ f u l lN a m e [ 0 ] GeneralNames , <br>

31 ∗ n a m e R e l a t i v e T o CR L I s s u e r [ 1 ] R e l a t i v e D i s t i n g u i s h e d N a m e } <br>

32 ∗33 ∗ ReasonFlags : := BIT STRING { <br>

34 ∗ unused ( 0 ) , <br>

35 ∗ keyCompromise ( 1 ) , <br>

36 ∗ cACompromise ( 2 ) , <br>

37 ∗ a f f i l i a t i o n C h a n g e d ( 3 ) , <br>

38 ∗ s u p e r s e d e d ( 4 ) , <br>

39 ∗ c e s s a t i o n O f O p e r a t i o n ( 5 ) , <br>

40 ∗ c e r t i f i c a t e H o l d ( 6 ) , <br>

41 ∗ p r i v i l e g e W i t h d r a w n ( 7 ) , <br>

42 ∗ aACompromise ( 8 ) } <br>

43 ∗44 ∗ @access p u b l i c

45 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

46 ∗ /

47 c l a s s L a b s e c S e c u r i t y C e r t i f i c a t i o n C R L D i s t r i b u t i o n P o i n t

48 {49 c o n s t UNUSED = 0 ;

50 c o n s t KEY COMPROMISE = 1 ;

51 c o n s t C ACOMPROMISE = 2 ;

52 c o n s t AFFILIATION CHANGED = 3 ;

53 c o n s t SUPERSEDED = 4 ;

54 c o n s t CESSATION OF OPERATION = 5 ;

55 c o n s t CERTIFICATE HOLD = 6 ;

Page 189: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

188

56 c o n s t PRIVILEGE WITHDRAW = 7 ;

57 c o n s t A ACOMPROMISE = 8 ;

58

59 p r i v a t e $ i s s u e r ;

60

61 p r i v a t e $ r e a s o n F l a g s = array ( ) ;

62

63 p r i v a t e $ u r i = ’’ ;

64

65 /∗ ∗66 ∗ C o n s t r u t o r .

67 ∗68 ∗ @access p u b l i c

69 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

70 ∗ @param s t r i n g URI

71 ∗ @param RDNSequence

72 ∗ @param a r r a y As r e a s o n F l a g s

73 ∗ @return v o i d

74 ∗75 ∗ @throws E x c e p t i o n Quando os p a r m e t r o s u r i e i s s u e r forem n u l o s .

76 ∗ ( A RFC p r o i b e i s t o )

77 ∗78 ∗ @throws E x c e p t i o n Quando o p a r m e t r o r e s o n F l a g s n o f o r uma a r r a y

79 ∗80 ∗ @throws E x c e p t i o n Quando o a r r a y do p a r m e t r o r e s o n F l a g s c o n t i v e r

81 ∗ v a l o r e s que n o s o b o o l e a n o s .

82 ∗83 ∗ @throws E x c e p t i o n Quando o tamanho do a r r a y do p a r m e t r o r e s o n F l a g s

84 ∗ f o r maior que 9 .

85 ∗86 ∗ /

87 p u b l i c f u n c t i o n c o n s t r u c t ( $ u r i = ’’ ,

88 L a b s e c S e c u r i t y C e r t i f i c a t i o n D a t a T y p e s R D N S e q u e n c e $ i s s u e r = n u l l ,

$ r e a s o n F l a g s = n u l l )

89 {90 i f ( $ u r i != ’’ ) {91 $ t h i s−>u r i = $ u r i ;

92 }93

94 i f ( $ r e a s o n F l a g s != n u l l ) {95

96 i f ( i s a r r a y ( $ r e a s o n F l a g s ) ) {97

Page 190: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

189

98 i f ( count ( $ r e a s o n F l a g s ) <= 9) {99

100 foreach ( $ r e a s o n F l a g s as $ v a l u e ) {101 i f ( ! i s b o o l ( $ v a l u e ) ) {102 th row new E x c e p t i o n ( ’O p a r m e t r o reasonFlags

DEVE conter

103 somente valores booleanos’ ) ;

104 }105 }106

107 $ t h i s−>r e a s o n F l a g s = $ r e a s o n F l a g s ;

108

109 } e l s e {110 th row new E x c e p t i o n ( ’O p a r m e t r o reasonFlags DEVE ser

uma array com no m x i m o

111 9 elementos booleanos’ ) ;

112 }113

114 } e l s e {115 th row new E x c e p t i o n ( ’O p a r m e t r o reasonFlags DEVE ser uma

array’ ) ;

116 }117

118 }119

120 i f ( $ i s s u e r != n u l l ) {121 $ t h i s−> i s s u e r = $ i s s u e r ;

122 } e l s e {123 $ t h i s−> i s s u e r = new

L a b s e c S e c u r i t y C e r t i f i c a t i o n D a t a T y p e s R D N S e q u e n c e ( ) ;

124 }125

126 i f ( $ u r i == ’’ && $ i s s u e r == NULL) {127 th row new E x c e p t i o n ( "OU o p a r m e t r o uri, OU o p a r m e t r o

issuer deve ser

128 informado no construtor do DistributionPoint" ) ;

129 }130 }131

132 /∗ ∗133 ∗ Re torna o I s s u e r

134 ∗135 ∗ @access p u b l i c

Page 191: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

190

136 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

137 ∗ @return RDNSequence o i s s u e r

138 ∗ /

139 p u b l i c f u n c t i o n g e t I s s u e r ( )

140 {141 r e t u r n $ t h i s−> i s s u e r ;

142 }143

144 /∗ ∗145 ∗ Re torna a a r r a y de boolean , c o n t e n d o os r e a s o n F l a g s

146 ∗147 ∗ @access p u b l i c

148 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

149 ∗ @return a r r a y a r r a y de boo lean dos r e a s o n F l a g s

150 ∗ /

151 p u b l i c f u n c t i o n g e t R e a s o n F l a g s ( )

152 {153 r e t u r n $ t h i s−>r e a s o n F l a g s ;

154 }155

156 /∗ ∗157 ∗ Re torna a URI

158 ∗159 ∗ @access p u b l i c

160 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

161 ∗ @return s t r i n g a u r i

162 ∗ /

163 p u b l i c f u n c t i o n g e t U r i ( )

164 {165 r e t u r n $ t h i s−>u r i ;

166 }167

168 /∗ ∗169 ∗ A d i c i o n a um ReasonFlag .

170 ∗171 ∗ @access p u b l i c

172 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

173 ∗ @param i n t Uma c o n s t a n t e de c l a s s e i n d i c a n d o o ReasonFlag

174 ∗ @param boo lean E s t e p a r m e t r o o p c i o n a r l . Se e s t e p a r m e t r o

175 ∗ f o r passado , o v a l o r do p a r a m e t r o s e r s e t a d o na r e s p e c t i v a

176 ∗ ReasonFlag . O D e f a u l t TRUE .

177 ∗ @return v o i d

178 ∗ @throws E x c e p t i o n Quando o p a r m e t r o v a l u e f o r e s p e c i f i c a d o , e

Page 192: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

191

179 ∗ o v a l o r e s p e c i f i c a d o n o f o r boo leano

180 ∗ /

181 p u b l i c f u n c t i o n addReasonFlag ( $ f l a g , $ v a l u e = TRUE)

182 {183 i f ( ( $ f l a g <= 8) && ( $ f l a g >= 0) ) {184 i f ( i s b o o l ( $ v a l u e ) ) {185 $ t h i s−>r e a s o n F l a g s [ $ f l a g ] = $ v a l u e ;

186

187 } e l s e {188 th row new E x c e p t i o n ( ’ P a r m e t r o value DEVE ser booleano.’ ) ;

189 }190 } e l s e {191 th row new E x c e p t i o n ( ’ P a r m e t r o flag deve estar entre 0 e 8.

192 Utilize as constantes de classe para este p a r m e t r o ’ ) ;

193 }194 }195

196 } /∗ end o f c l a s s D i s t r i b u t i o n P o i n t ∗ /

197

198 ?>

1 <?php

2 e r r o r r e p o r t i n g ( E ALL ) ;

3

4 /∗ ∗5 ∗ t e s t e − c l a s s . O b j e c t I d e n t i f i e r F a c t o r y . php

6 ∗7 ∗ $ Id$

8 ∗9 ∗ T h i s f i l e i s p a r t o f t e s t e .

10 ∗11 ∗ A u t o m a t i c g e n e r a t e d w i t h ArgoUML 0 . 2 4 on 2 6 . 0 7 . 2 0 0 7 , 1 2 : 3 8 : 2 0

12 ∗13 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

14 ∗ /

15

16 i f (0 > vers ion compare ( PHP VERSION , ’5’ ) ) {17 d i e ( ’This file was generated for PHP 5’ ) ;

18 }19

20 r e q u i r e o n c e ’Labsec/Security/Certification/ObjectIdentifier.php’ ;

21

22 /∗ ∗

Page 193: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

192

23 ∗ C l a s s e que u t i l i z a o p a d r o de p r o j e t o Fac tory , para c r i a r O b j e c t s IDs

24 ∗25 ∗ @access p u b l i c

26 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

27 ∗ /

28 c l a s s L a b s e c S e c u r i t y C e r t i f i c a t i o n O b j e c t I d e n t i f i e r F a c t o r y {29

30 c o n s t EXTENSION AUTHORITY KEY IDENTIFIER = 1 ;

31

32 c o n s t EXTENSION SUBJECT KEY IDENTIFIER = 2 ;

33

34 c o n s t EXTENSION KEY USAGE = 3 ;

35

36 c o n s t EXTENSION CERTIFICATE POLICIES = 4 ;

37

38 c o n s t DATA TYPE CPS QUALIFIER = 5 ;

39

40 c o n s t DATA TYPE USER NOTICE = 6 ;

41

42 c o n s t EXTENSION PRIVATE KEY USAGE PERIOD = 7 ;

43

44 c o n s t EXTENSION SUBJECT ALTERNATIVE NAME = 8 ;

45

46 c o n s t EXTENSION BASIC CONSTRAINTS = 9 ;

47

48 c o n s t EXTENSION EXTENDED KEY USAGE = 1 0 ;

49

50 c o n s t KEY USAGE SERVER AUTH = 1 1 ;

51

52 c o n s t KEY USAGE CLIENT AUTH = 1 2 ;

53

54 c o n s t KEY USAGE CODE SIGNING = 1 3 ;

55

56 c o n s t KEY USAGE EMAIL PROTECTION = 1 4 ;

57

58 c o n s t KEY USAGE TIME STAMPING = 1 5 ;

59

60 c o n s t KEY USAGE OCSP SIGNING = 1 6 ;

61

62 c o n s t EXTENSION CRL DISTRIBUTION POINTS = 1 7 ;

63

64 c o n s t EXTENSION CRL NUMBER = 1 8 ;

65

Page 194: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

193

66 c o n s t EXTENSION ISSUING DISTRIBUTION POINT = 1 9 ;

67

68 c o n s t EXTENSION REASON CODE = 2 0 ;

69

70 c o n s t EXTENSION CERTIFICATE ISSUER = 2 1 ;

71

72 /∗ ∗73 ∗ Re torna um O b j e c t I d e n t i f i e r a p a r t i r do c d i g o d e f i n i d o na ITU−T

74 ∗75 ∗ @access p u b l i c

76 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

77 ∗ @param s t r i n g C d i g o OID , segundo a ITU−T

78 ∗ @return O b j e c t I d e n t i f i e r O O b j e c t I d e n t i f i e r c o r r e s p o n d e n t e

79 ∗ @throws E x c e p t i o n O C d i g o OID n o c o n h e c i d o

80 ∗ /

81 p u b l i c s t a t i c f u n c t i o n g e t O b j e c t I d e n t i f i e r ( $o id ) {82 / / c r i a O b j e c t I d e n t i f i e r

83 $o = new L a b s e c S e c u r i t y C e r t i f i c a t i o n O b j e c t I d e n t i f i e r ( ) ;

84

85 $o−>setOID ( $o id ) ;

86

87 / / r e t o r n a O b j e c t I d e n t i f i e r c r i a d o .

88 r e t u r n $o ;

89 }90

91 /∗ ∗92 ∗ Re torna um O b j e c t I d e n t i f i e r a p a r t i r do c d i g o d e f i n i d o no SGCI

93 ∗94 ∗ @access p u b l i c

95 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

96 ∗ @param i n t C d i g o do OID , segundo o SGCI

97 ∗ @return O b j e c t I d e n t i f i e r O O b j e c t I d e n t i f i e r c o r r e s p o n d e n t e

98 ∗ @throws E x c e p t i o n O C d i g o OID n o c o n h e c i d o

99 ∗ /

100 p u b l i c s t a t i c f u n c t i o n g e t O b j e c t I d e n t i f i e r B y C o d e ( $code ) {101 / / c r i a O b j e c t I d e n t i f i e r

102 $o = new L a b s e c S e c u r i t y C e r t i f i c a t i o n O b j e c t I d e n t i f i e r ( ) ;

103

104 sw i t c h ( ( i n t ) $code ) {105 case 1 :

106 / / A u t h o r i t y Key I d e n t i f i e r E x t e n s i o n

107 $o−>setOID ( "2.5.29.35" ) ;

108 break ;

Page 195: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

194

109

110 case 2 :

111 / / S u b j e c t Key I d e n t i f i e r E x t e n s i o n

112 $o−>setOID ( "2.5.29.14" ) ;

113 break ;

114

115

116 case 3 :

117 / / Key Usage E x t e n s i o n

118 $o−>setOID ( "2.5.29.15" ) ;

119 break ;

120

121 case 4 :

122 / / C e r t i f i c a t e P o l i c i e s E x t e n s i o n

123 $o−>setOID ( "2.5.29.32" ) ;

124 break ;

125

126 case 5 :

127 / / CPS q u a l i f i e r DataType

128 $o−>setOID ( "1.3.6.1.5.5.7.2.1" ) ;

129 break ;

130

131 case 6 :

132 / / U s e r N o t i c e q u a l i f i e r DataType

133 $o−>setOID ( "1.3.6.1.5.5.7.2.2" ) ;

134 break ;

135

136 case 7 :

137 / / P r i v a t e Key Usage P er io d E x t e n s i o n

138 $o−>setOID ( "2.5.29.16" ) ;

139 break ;

140

141 case 8 :

142 / / S u b j e c t A l t e r n a t i v e Name E x t e n s i o n

143 $o−>setOID ( "2.5.29.17" ) ;

144 break ;

145

146 case 9 :

147 / / B a s i c C o n s t r a i n t s E x t e n s i o n

148 $o−>setOID ( "2.5.29.19" ) ;

149 break ;

150

151 case 10 :

Page 196: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

195

152 / / Ex tended Key Usage E x t e n s i o n

153 $o−>setOID ( "2.5.29.37" ) ;

154 break ;

155

156 case 11 :

157 / / Key usage i d k p s e r v e r A u t h

158 $o−>setOID ( "1.3.6.1.5.5.7.3.1" ) ;

159 break ;

160

161

162 case 12 :

163 / / Key usage i d k p c l i e n t A u t h

164 $o−>setOID ( "1.3.6.1.5.5.7.3.2" ) ;

165 break ;

166

167

168 case 13 :

169 / / Key usage i d k p c o d e S i g n i n g

170 $o−>setOID ( "1.3.6.1.5.5.7.3.3" ) ;

171 break ;

172

173

174 case 14 :

175 / / Key usage i d k p e m a i l P r o t e c t i o n

176 $o−>setOID ( "1.3.6.1.5.5.7.3.4" ) ;

177 break ;

178

179

180 case 15 :

181 / / Key usage i d k p t i m e S t a m p i n g

182 $o−>setOID ( "1.3.6.1.5.5.7.3.8" ) ;

183 break ;

184

185

186 case 16 :

187 / / Key usage OCSPSigning

188 $o−>setOID ( "1.3.6.1.5.5.7.3.9" ) ;

189 break ;

190

191

192 case 17 :

193 / / CRL D i s t r i b u t i o n P o i n t s E x t e n s i o n

194 $o−>setOID ( "2.5.29.31" ) ;

Page 197: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

196

195 break ;

196

197

198 case 18 :

199 / / TODO v e r i f i c a r OID

200 / / CRL Number E x t e n s i o n

201 $o−>setOID ( "2.5.29.20" ) ;

202 break ;

203

204 case 19 :

205 / / I s s u i n g D i s t r i b u t i o n P o i n t E x t e n s i o n

206 $o−>setOID ( "2.5.29.28" ) ;

207 break ;

208

209 case 20 :

210 / / TODO v e r i f i c a r OID

211 / / Reason Code E x t e n s i o n

212 $o−>setOID ( "2.5.29.20" ) ;

213 break ;

214

215 case 21 :

216 / / C e r t i f i c a t e I s s u e r E x t e n s i o n

217 $o−>setOID ( "2.5.29.29" ) ;

218 break ;

219

220 d e f a u l t :

221 th row new E x c e p t i o n ( $code . " n o encontrado" ) ;

222 }223

224 / / r e t o r n a O b j e c t I d e n t i f i e r c r i a d o .

225 r e t u r n $o ;

226 }227

228 } /∗ end o f c l a s s O b j e c t I d e n t i f i e r F a c t o r y ∗ /

229 ?>

1 <?php

2

3 e r r o r r e p o r t i n g ( E ALL ) ;

4

5 /∗ ∗6 ∗ s g c i − RFC822Name . php

7 ∗

Page 198: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

197

8 ∗ $ Id$

9 ∗10 ∗ T h i s f i l e i s p a r t o f s g c i .

11 ∗12 ∗ A u t o m a t i c g e n e r a t e d w i t h ArgoUML 0 . 2 4 on 2 6 . 0 7 . 2 0 0 7 , 1 2 : 3 8 : 2 0

13 ∗14 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

15 ∗ /

16

17 i f (0 > vers ion compare ( PHP VERSION , ’5’ ) ) {18 d i e ( ’This file was generated for PHP 5’ ) ;

19 }20

21 /∗ ∗22 ∗ i n c l u i GeneralName

23 ∗24 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

25 ∗ /

26 r e q u i r e o n c e ( ’Labsec/Security/Certification/DataTypes/GeneralName.php’ ) ;

27

28 /∗ ∗29 ∗ C l a s s e que r e p r e s e n t a o t i p o RFC822Name

30 ∗31 ∗ RFC822Name em f o r m a t o ASN . 1 : <br>

32 ∗ rfc822Name I A 5 S t r i n g <br>

33 ∗34 ∗ @access p u b l i c

35 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

36 ∗ /

37 c l a s s L a b s e c S e c u r i t y C e r t i f i c a t i o n D a t a T y p e s R F C 8 2 2 N a m e

38 e x t e n d s L a b s e c S e c u r i t y C e r t i f i c a t i o n D a t a T y p e s G e n e r a l N a m e

39 {40

41 p r i v a t e $rfc822Name ;

42

43 /∗ ∗44 ∗ S e t a o rfc822Name

45 ∗46 ∗ @access p u b l i c

47 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

48 ∗ @param s t r i n g rfc822Name

49 ∗ @return v o i d

50 ∗ @except ion E x c e p t i o n Caso o t i p o n o f o r v l i d o

Page 199: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

198

51 ∗ /

52 p u b l i c f u n c t i o n s e t V a l u e ( $rfc822Name )

53 {54 i f ( e r e g i ( ’^[^@ ]+\@[^@ ]+\.[A-Z]{2,3}$’ , $rfc822Name ) ) {55 $ t h i s−>rfc822Name = $rfc822Name ;

56 } e l s e {57 th row new E x c e p t i o n ( ’O p a r m e t r o rfc822Name informado

i n v l i d o .’ ) ;

58 }59 }60

61 /∗ ∗62 ∗ Re torna o v a l o r de rfc822Name

63 ∗64 ∗ @access p u b l i c

65 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

66 ∗ @return s t r i n g rfc822Name

67 ∗ /

68 p u b l i c f u n c t i o n g e t V a l u e ( )

69 {70 r e t u r n $ t h i s−>rfc822Name ;

71 }72

73 } /∗ end o f c l a s s RFC822Name ∗ /

74 ?>

1 <?php

2

3 e r r o r r e p o r t i n g ( E ALL ) ;

4

5 /∗ ∗6 ∗ s g c i − DNSName . php

7 ∗8 ∗ $ Id$

9 ∗10 ∗ T h i s f i l e i s p a r t o f s g c i .

11 ∗12 ∗ A u t o m a t i c g e n e r a t e d w i t h ArgoUML 0 . 2 4 on 2 6 . 0 7 . 2 0 0 7 , 1 2 : 3 8 : 2 0

13 ∗14 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

15 ∗ /

16

17 i f (0 > vers ion compare ( PHP VERSION , ’5’ ) ) {

Page 200: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

199

18 d i e ( ’This file was generated for PHP 5’ ) ;

19 }20

21 /∗ ∗22 ∗ i n c l u i GeneralName

23 ∗24 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

25 ∗ /

26 r e q u i r e o n c e ( ’Labsec/Security/Certification/DataTypes/GeneralName.php’ ) ;

27

28 /∗ ∗29 ∗ C l a s s e que r e p r e s e n t a o t i p o DNSName

30 ∗31 ∗ DNSName em f o r m a t o ASN . 1 : <br>

32 ∗ dNSName I A 5 S t r i n g <br>

33 ∗34 ∗ @access p u b l i c

35 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

36 ∗ /

37 c l a s s L a b s e c S e c u r i t y C e r t i f i c a t i o n D a t a T y p e s D N S N a m e

38 e x t e n d s L a b s e c S e c u r i t y C e r t i f i c a t i o n D a t a T y p e s G e n e r a l N a m e

39 {40

41 p r i v a t e $dnsName = ’’ ;

42

43 /∗ ∗44 ∗ S e t a o DNSName

45 ∗46 ∗ @access p u b l i c

47 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

48 ∗ @param s t r i n g o DNSName

49 ∗ @return v o i d

50 ∗ @except ion E x c e p t i o n Caso o t i p o n o f o r s t r i n g , d i s p a r a e x c e o

51 ∗ /

52 p u b l i c f u n c t i o n setDNSName ( $dnsName )

53 {54 i f ( i s s t r i n g ( $dnsName ) ) {55 $ t h i s−>dnsName = $dnsName ;

56 } e l s e {57 th row new E x c e p t i o n ( ’O DNSName informado na f u n o

58 setDNSName i n v l i d o .’ ) ;

59 }60 }

Page 201: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

200

61

62 /∗ ∗63 ∗ Re torna o DNSName

64 ∗65 ∗ @access p u b l i c

66 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

67 ∗ @return s t r i n g DNSName

68 ∗ /

69 p u b l i c f u n c t i o n getDNSName ( )

70 {71 r e t u r n $ t h i s−>dnsName ;

72 }73

74 } /∗ end o f c l a s s DNSName ∗ /

75

76 ?>

1 <?php

2

3 e r r o r r e p o r t i n g ( E ALL ) ;

4

5 /∗ ∗6 ∗ s g c i − GeneralNames . php

7 ∗8 ∗ $ Id$

9 ∗10 ∗ T h i s f i l e i s p a r t o f s g c i .

11 ∗12 ∗ A u t o m a t i c g e n e r a t e d w i t h ArgoUML 0 . 2 4 on 2 6 . 0 7 . 2 0 0 7 , 1 2 : 3 8 : 2 0

13 ∗14 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

15 ∗ /

16

17 i f (0 > vers ion compare ( PHP VERSION , ’5’ ) ) {18 d i e ( ’This file was generated for PHP 5’ ) ;

19 }20

21 r e q u i r e o n c e ( ’Labsec/Security/Certification/DataTypes/GeneralName.php’ ) ;

22

23 /∗ ∗24 ∗ C l a s s e que imp lemen ta o t i p o de dados GeneralNames da RFC 3280<br>

25 ∗26 ∗ GeneralNames em f o r m a t o ASN . 1 : <br>

Page 202: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

201

27 ∗ GeneralNames : := SEQUENCE SIZE ( 1 . . MAX) OF GeneralName

28 ∗29 ∗ @access p u b l i c

30 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

31 ∗ /

32 c l a s s L a b s e c S e c u r i t y C e r t i f i c a t i o n D a t a T y p e s G e n e r a l N a m e s

33 {34 p r i v a t e $name = array ( ) ;

35

36 /∗ ∗37 ∗ A d i c i o n a um GeneralName

38 ∗39 ∗ @access p u b l i c

40 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

41 ∗ @param GeneralName GeneralName a a d i c i o n a r

42 ∗ @return v o i d

43 ∗ /

44 p u b l i c f u n c t i o n addGeneralName (

L a b s e c S e c u r i t y C e r t i f i c a t i o n D a t a T y p e s G e n e r a l N a m e $genera lName )

45 {46 $ t h i s−>name [ ] = $genera lName ;

47 }48

49 /∗ ∗50 ∗ Re torna o GeneralNames

51 ∗52 ∗ @access p u b l i c

53 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

54 ∗ @return a r r a y Uma a r r a y em que cada l i n h a um GeneralName

55 ∗ @except ion E x c e p t i o n Caso o GeneralNames n o t i v e r nenhum

GeneralName

56 ∗ /

57 p u b l i c f u n c t i o n ge tGenera lNames ( )

58 {59 i f ( s i z e o f ( $ t h i s−>name ) > 0) {60 r e t u r n $ t h i s−>name ;

61 } e l s e {62 th row new E x c e p t i o n ( ’Tamanho do GeneralNames menor do que 1.’ .

63 ’Verifique se foi adicionado pelo menos 1

GeneralName’ ) ;

64 }65 }66

Page 203: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

202

67 } /∗ end o f c l a s s GeneralNames ∗ /

68

69 ?>

1 <?php

2 / / TODO NAO IMPLEMENTADO

3 e r r o r r e p o r t i n g ( E ALL ) ;

4

5 /∗ ∗6 ∗ s g c i − X400Address . php

7 ∗8 ∗ $ Id$

9 ∗10 ∗ T h i s f i l e i s p a r t o f s g c i .

11 ∗12 ∗ A u t o m a t i c g e n e r a t e d w i t h ArgoUML 0 . 2 4 on 2 6 . 0 7 . 2 0 0 7 , 1 2 : 3 8 : 2 0

13 ∗14 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

15 ∗ /

16

17 i f (0 > vers ion compare ( PHP VERSION , ’5’ ) ) {18 d i e ( ’This file was generated for PHP 5’ ) ;

19 }20

21 /∗ ∗22 ∗ i n c l u i GeneralName

23 ∗24 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

25 ∗ /

26 r e q u i r e o n c e ( ’Labsec/Security/Certification/DataTypes/GeneralName.php’ ) ;

27

28 /∗ ∗29 ∗ C l a s s e que r e p r e s e n t a o t i p o X400Address

30 ∗31 ∗ X400Address em f o r m a t o ASN . 1 : <br>

32 ∗ x400Address ORAddress<br>

33 ∗34 ∗ @access p u b l i c

35 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

36 ∗ /

37 c l a s s L a b s e c S e c u r i t y C e r t i f i c a t i o n D a t a T y p e s X 4 0 0 A d d r e s s

38 e x t e n d s L a b s e c S e c u r i t y C e r t i f i c a t i o n D a t a T y p e s G e n e r a l N a m e

39 {

Page 204: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

203

40

41 p r i v a t e $x400Address ;

42

43 /∗ ∗44 ∗ S e t a o x400Address

45 ∗46 ∗ @access p u b l i c

47 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

48 ∗ @param s t r i n g x400Address

49 ∗ @return v o i d

50 ∗ @except ion E x c e p t i o n Se o t i p o f o r i n v l i d o

51 ∗ /

52 p u b l i c f u n c t i o n se tX400Address ( $x400Address )

53 {54 $ t h i s−>x400Address = $x400Address ;

55 }56

57 /∗ ∗58 ∗ Re torna o v a l o r de x400Address

59 ∗60 ∗ @access p u b l i c

61 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

62 ∗ @return x400Address

63 ∗ /

64 p u b l i c f u n c t i o n ge tX400Address ( )

65 {66 r e t u r n $ t h i s−>x400Address ;

67 }68

69 } /∗ end o f c l a s s X400Address ∗ /

70

71 ?>

1 <?php

2

3 e r r o r r e p o r t i n g ( E ALL ) ;

4

5 /∗ ∗6 ∗ s g c i − U n i f o r m R e s o u r c e I d e n t i f i e r . php

7 ∗8 ∗ $ Id$

9 ∗10 ∗ T h i s f i l e i s p a r t o f s g c i .

Page 205: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

204

11 ∗12 ∗ A u t o m a t i c g e n e r a t e d w i t h ArgoUML 0 . 2 4 on 2 6 . 0 7 . 2 0 0 7 , 1 2 : 3 8 : 2 0

13 ∗14 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

15 ∗ /

16

17 i f (0 > vers ion compare ( PHP VERSION , ’5’ ) ) {18 d i e ( ’This file was generated for PHP 5’ ) ;

19 }20

21 /∗ ∗22 ∗ i n c l u i GeneralName

23 ∗24 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

25 ∗ /

26 r e q u i r e o n c e ( ’Labsec/Security/Certification/DataTypes/GeneralName.php’ ) ;

27

28 /∗ ∗29 ∗ C l a s s e que r e p r e s e n t a o t i p o U n i f o r m R e s o u r c e I d e n t i f i e r

30 ∗31 ∗ U n i f o r m R e s o u r c e I d e n t i f i e r em f o r m a t o ASN . 1 : <br>

32 ∗ u n i f o r m R e s o u r c e I d e n t i f i e r I A 5 S t r i n g <br>

33 ∗34 ∗ @access p u b l i c

35 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

36 ∗ /

37 c l a s s L a b s e c S e c u r i t y C e r t i f i c a t i o n D a t a T y p e s U n i f o r m R e s o u r c e I d e n t i f i e r

38 e x t e n d s L a b s e c S e c u r i t y C e r t i f i c a t i o n D a t a T y p e s G e n e r a l N a m e

39 {40

41 p r i v a t e $ u r i ;

42

43 /∗ ∗44 ∗ S e t a o u n i f o r m R e s o u r c e I d e n t i f i e r

45 ∗46 ∗ @access p u b l i c

47 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

48 ∗ @param s t r i n g u r i

49 ∗ @return v o i d

50 ∗ @except ion E x c e p t i o n Se o t i p o do p a r m e t r o u r i n o f o r s t r i n g

51 ∗ /

52 p u b l i c f u n c t i o n se tURI ( $ u r i )

53 {

Page 206: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

205

54 i f ( i s s t r i n g ( $ u r i ) ) {55 $ t h i s−>u r i = $ u r i ;

56 } e l s e {57 th row new E x c e p t i o n ( ’O p a r m e t r o URI informado

i n v l i d o .’ ) ;

58 }59 }60

61 /∗ ∗62 ∗ Re torna o v a l o r de u n i f o r m R e s o u r c e I d e n t i f i e r

63 ∗64 ∗ @access p u b l i c

65 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

66 ∗ @return s t r i n g o u r i

67 ∗ @throws E x c e p t i o n Caso o URI n o f o i s e t a d o

68 ∗ /

69 p u b l i c f u n c t i o n getURI ( )

70 {71 i f ( i s s e t ( $ t h i s−>u r i ) ) {72 r e t u r n $ t h i s−>u r i ;

73 } e l s e {74 th row new E x c e p t i o n ( ’ERRO: URI n o setado’ ) ;

75 }76 }77

78 } /∗ end o f c l a s s u n i f o r m R e s o u r c e I d e n t i f i e r ∗ /

79

80 ?>

1 <?php

2

3 e r r o r r e p o r t i n g ( E ALL ) ;

4

5 /∗ ∗6 ∗ s g c i − IPAddres s . php

7 ∗8 ∗ $ Id$

9 ∗10 ∗ T h i s f i l e i s p a r t o f s g c i .

11 ∗12 ∗ A u t o m a t i c g e n e r a t e d w i t h ArgoUML 0 . 2 4 on 2 6 . 0 7 . 2 0 0 7 , 1 2 : 3 8 : 2 0

13 ∗14 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

Page 207: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

206

15 ∗ /

16

17 i f (0 > vers ion compare ( PHP VERSION , ’5’ ) ) {18 d i e ( ’This file was generated for PHP 5’ ) ;

19 }20

21 /∗ ∗22 ∗ i n c l u i GeneralName

23 ∗24 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

25 ∗ /

26 r e q u i r e o n c e ( ’Labsec/Security/Certification/DataTypes/GeneralName.php’ ) ;

27

28 /∗ ∗29 ∗ C l a s s e que r e p r e s e n t a o t i p o IPAddres s

30 ∗31 ∗ IPAddres s em f o r m a t o ASN . 1 : <br>

32 ∗ i P A d d r e s s [ 7 ] OCTET STRING , <br>

33 ∗34 ∗ @access p u b l i c

35 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

36 ∗ /

37 c l a s s L a b s e c S e c u r i t y C e r t i f i c a t i o n D a t a T y p e s I P A d d r e s s

38 e x t e n d s L a b s e c S e c u r i t y C e r t i f i c a t i o n D a t a T y p e s G e n e r a l N a m e

39 {40

41 p r i v a t e $ i P A d d r e s s = ’’ ;

42

43 /∗ ∗44 ∗ S e t a o IPAddres s

45 ∗46 ∗ @access p u b l i c

47 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

48 ∗ @param s t r i n g IPAddres s a s e t a r

49 ∗ @return v o i d

50 ∗ @except ion E x c e p t i o n Caso o t i p o n o f o r s t r i n g

51 ∗ /

52 p u b l i c f u n c t i o n s e t I P A d d r e s s ( $ i P A d d r e s s )

53 {54 $ f o r m a t o I P v 4 = ’

^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}(/[0-9]{1,2})

{0,1}$’ ;

55

Page 208: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

207

56 $ f o r m a t o I P v 6 = ’^(

57 (([0-9A-Fa-f]{1,4}:){7}[0-9A-Fa-f]{1,4})|

58 (([0-9A-Fa-f]{1,4}:){6}:[0-9A-Fa-f]{1,4})|

59 (([0-9A-Fa-f]{1,4}:){5}:([0-9A-Fa-f]{1,4}:)?[0-9A-Fa-f

]{1,4})|

60 (([0-9A-Fa-f]{1,4}:){4}:([0-9A-Fa-f]{1,4}:){0,2}[0-9A-Fa-f

]{1,4})|

61 (([0-9A-Fa-f]{1,4}:){3}:([0-9A-Fa-f]{1,4}:){0,3}[0-9A-Fa-f

]{1,4})|

62 (([0-9A-Fa-f]{1,4}:){2}:([0-9A-Fa-f]{1,4}:){0,4}[0-9A-Fa-f

]{1,4})|

63 (([0-9A-Fa-f]{1,4}:){6}((\b((25[0-5])|(1\d{2})|(2[0-4]\d)

|(\d{1,2}))\b)\.){3}(\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\

d{1,2}))\b))|

64 (([0-9A-Fa-f]{1,4}:){0,5}:((\b((25[0-5])|(1\d{2})|(2[0-4]\d

)|(\d{1,2}))\b)\.){3}(\b((25[0-5])|(1\d{2})|(2[0-4]\d)

|(\d{1,2}))\b))|

65 (::([0-9A-Fa-f]{1,4}:){0,5}((\b((25[0-5])|(1\d{2})|(2[0-4]\

d)|(\d{1,2}))\b)\.){3}(\b((25[0-5])|(1\d{2})|(2[0-4]\d)

|(\d{1,2}))\b))|

66 ([0-9A-Fa-f]{1,4}::([0-9A-Fa-f]{1,4}:){0,5}[0-9A-Fa-f

]{1,4})|

67 (::([0-9A-Fa-f]{1,4}:){0,6}[0-9A-Fa-f]{1,4})|

68 (([0-9A-Fa-f]{1,4}:){1,7}:)

69 )$’ ;

70

71 i f ( e r e g i ( $ fo rmato IPv4 , $ i P A d d r e s s ) | | e r e g i ( $ fo rmato IPv6 ,

$ i P A d d r e s s ) ) {72 $ t h i s−>i P A d d r e s s = $ i P A d d r e s s ;

73 } e l s e {74 th row new E x c e p t i o n ( ’O e n d e r e o IP informado i n v l i d o .’ ) ;

75 }76

77 }78

79 /∗ ∗80 ∗ Re torna o v a l o r de i P A d d r e s s

81 ∗82 ∗ @access p u b l i c

83 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

84 ∗ @return s t r i n g v a l o r de i P A d d r e s s

85 ∗ @throws E x c e p t i o n Caso o IPAddres s n o e s t i v e r s e t a d o

86 ∗ /

Page 209: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

208

87 p u b l i c f u n c t i o n g e t I P A d d r e s s ( )

88 {89 i f ( $ t h i s−>i P A d d r e s s != ’’ ) {90 r e t u r n $ t h i s−>i P A d d r e s s ;

91 } e l s e {92 th row new E x c e p t i o n ( ’Erro: ipAddress vazio.’ ) ;

93 }94 }95

96 } /∗ end o f c l a s s IPAddres s ∗ /

97

98 ?>

1 <?php

2 e r r o r r e p o r t i n g ( E ALL ) ;

3

4 /∗ ∗5 ∗ s g c i − OtherName . php

6 ∗7 ∗ $ Id$

8 ∗9 ∗ T h i s f i l e i s p a r t o f s g c i .

10 ∗11 ∗ A u t o m a t i c g e n e r a t e d w i t h ArgoUML 0 . 2 4 on 2 6 . 0 7 . 2 0 0 7 , 1 2 : 3 8 : 2 0

12 ∗13 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

14 ∗ /

15

16 i f (0 > vers ion compare ( PHP VERSION , ’5’ ) ) {17 d i e ( ’This file was generated for PHP 5’ ) ;

18 }19

20 /∗ ∗21 ∗ i n c l u i GeneralName

22 ∗23 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

24 ∗ /

25 r e q u i r e o n c e ( ’Labsec/Security/Certification/DataTypes/GeneralName.php’ ) ;

26 r e q u i r e o n c e ( ’Labsec/Security/Certification/ObjectIdentifier.php’ ) ;

27

28 /∗ ∗29 ∗ C l a s s e que r e p r e s e n t a o t i p o OtherName

30 ∗

Page 210: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

209

31 ∗ OtherName em f o r m a t o ASN . 1 : <br>

32 ∗ otherName OtherName <br>

33 ∗34 ∗ OtherName : := SEQUENCE { <br>

35 ∗ t ype−i d OBJECT IDENTIFIER , <br>

36 ∗ v a l u e [ 0 ] EXPLICIT ANY DEFINED BY type−i d } <br>

37 ∗38 ∗ @access p u b l i c

39 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

40 ∗ /

41 c l a s s L a b s e c S e c u r i t y C e r t i f i c a t i o n D a t a T y p e s O t h e r N a m e

42 e x t e n d s L a b s e c S e c u r i t y C e r t i f i c a t i o n D a t a T y p e s G e n e r a l N a m e

43 {44 p r i v a t e $otherNames = array ( ) ;

45

46 p r i v a t e $ c o n t a d o r = 0 ;

47

48 /∗ ∗49 ∗ A d i c i o n a um OtherName

50 ∗51 ∗ @access p u b l i c

52 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

53 ∗ @param O b j e c t I d e n t i f i e r v a l o r do campo ID do OtherName

54 ∗ @param var v a l o r do campo v a l u e do OtherName

55 ∗ @return v o i d

56 ∗ /

57 p u b l i c f u n c t i o n addOtherName (

L a b s e c S e c u r i t y C e r t i f i c a t i o n O b j e c t I d e n t i f i e r $id , $ v a l u e )

58 {59 i f ( $ v a l u e != NULL) {60 $ t h i s−>otherNames [ $ t h i s−>c o n t a d o r ] [ ’id’ ] = $ i d ;

61 $ t h i s−>otherNames [ $ t h i s−>c o n t a d o r ] [ ’valor’ ] = $ v a l u e ;

62 $ t h i s−>c o n t a d o r ++;

63 } e l s e {64 th row new E x c e p t i o n ( ’ P a r m e t r o value do OtherName i n v l i d o ’ ) ;

65 }66 }67

68 /∗ ∗69 ∗ Re torna a s e q u ł n c i a de OtherNames

70 ∗71 ∗ @access p u b l i c

72 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

Page 211: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

210

73 ∗ @return a r r a y Os OtherNames

74 ∗ @throws E x c e p t i o n Quando os otherNames n o e s t i v e r e m s e t a d o s .

75 ∗ /

76 p u b l i c f u n c t i o n getOtherNames ( )

77 {78 i f ( count ( $ t h i s−>otherNames ) > 0) {79 r e t u r n $ t h i s−>otherNames ;

80 } e l s e {81 th row new E x c e p t i o n ( ’ERRO: OtherName vazio.’ ) ;

82 }83 }84

85 } /∗ end o f c l a s s OtherName ∗ /

86

87 ?>

1 <?php

2

3 e r r o r r e p o r t i n g ( E ALL ) ;

4

5 /∗ ∗6 ∗ s g c i − Direc toryName . php

7 ∗8 ∗ $ Id$

9 ∗10 ∗ T h i s f i l e i s p a r t o f s g c i .

11 ∗12 ∗ A u t o m a t i c g e n e r a t e d w i t h ArgoUML 0 . 2 4 on 2 6 . 0 7 . 2 0 0 7 , 1 2 : 3 8 : 2 0

13 ∗14 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

15 ∗ /

16

17 i f (0 > vers ion compare ( PHP VERSION , ’5’ ) ) {18 d i e ( ’This file was generated for PHP 5’ ) ;

19 }20

21 /∗ ∗22 ∗ i n c l u i GeneralName

23 ∗24 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

25 ∗ /

26 r e q u i r e o n c e ( ’Labsec/Security/Certification/DataTypes/GeneralName.php’ ) ;

27 r e q u i r e o n c e ( ’Labsec/Security/Certification/DataTypes/RDNSequence.php’ ) ;

Page 212: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

211

28

29 /∗ ∗30 ∗ C l a s s e que r e p r e s e n t a o t i p o Direc toryName

31 ∗32 ∗ Direc toryName em f o r m a t o ASN . 1 : <br>

33 ∗ d i r e c t o r y N a m e Name <br>

34 ∗35 ∗ Name ::= CHOICE { <br>

36 ∗ RDNSequence } <br>

37 ∗38 ∗ RDNSequence : := SEQUENCE OF R e l a t i v e D i s t i n g u i s h e d N a m e <br>

39 ∗40 ∗ @access p u b l i c

41 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

42 ∗ /

43 c l a s s L a b s e c S e c u r i t y C e r t i f i c a t i o n D a t a T y p e s D i r e c t o r y N a m e

44 e x t e n d s L a b s e c S e c u r i t y C e r t i f i c a t i o n D a t a T y p e s G e n e r a l N a m e

45 {46

47 p r i v a t e $ d i r e c t o r y N a m e s = array ( ) ;

48

49 /∗ ∗50 ∗ A d i c i o n a um d i r e c t o r y N a m e

51 ∗52 ∗ @access p u b l i c

53 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

54 ∗ @param s t r i n g d i r e c t o r y N a m e

55 ∗ @return v o i d

56 ∗ /

57 p u b l i c f u n c t i o n addDirec to ryName (

L a b s e c S e c u r i t y C e r t i f i c a t i o n D a t a T y p e s R D N S e q u e n c e $dirName )

58 {59 $ t h i s−>d i r e c t o r y N a m e s [ ] = $dirName ;

60 }61

62 /∗ ∗63 ∗ Re torna o v a l o r de d i r e c t o r y N a m e

64 ∗65 ∗ @access p u b l i c

66 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

67 ∗ @return Uma a r r a y c o n t e n d o t o d o s os d i r e c t o r y N a m e s .

68 ∗ @throws E x c e p t i o n D e x c e o quando Direc toryName e s t i v e r v a z i o .

69 ∗ /

Page 213: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

212

70 p u b l i c f u n c t i o n g e t D i r e c t o r y N a m e s ( )

71 {72 / / s e c o n t i v e r a lgo

73 i f ( count ( $ t h i s−>d i r e c t o r y N a m e s ) > 0) {74 r e t u r n $ t h i s−>d i r e c t o r y N a m e s ;

75 } e l s e {76 th row new E x c e p t i o n ( "DirectoryName Vazio" ) ;

77 }78 }79

80 } /∗ end o f c l a s s Direc toryName ∗ /

81

82 ?>

1 <?php

2

3 e r r o r r e p o r t i n g ( E ALL ) ;

4

5 /∗ ∗6 ∗ s g c i − EDIPartyName . php

7 ∗8 ∗ $ Id$

9 ∗10 ∗ T h i s f i l e i s p a r t o f s g c i .

11 ∗12 ∗ A u t o m a t i c g e n e r a t e d w i t h ArgoUML 0 . 2 4 on 2 6 . 0 7 . 2 0 0 7 , 1 2 : 3 8 : 2 0

13 ∗14 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

15 ∗ /

16

17 i f (0 > vers ion compare ( PHP VERSION , ’5’ ) ) {18 d i e ( ’This file was generated for PHP 5’ ) ;

19 }20

21 /∗ ∗22 ∗ i n c l u i GeneralName

23 ∗24 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

25 ∗ /

26 r e q u i r e o n c e ( ’Labsec/Security/Certification/DataTypes/GeneralName.php’ ) ;

27

28 /∗ ∗29 ∗ C l a s s e que r e p r e s e n t a o t i p o EdiPartyName

Page 214: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

213

30 ∗31 ∗ EdiPartyName em f o r m a t o ASN . 1 : <br>

32 ∗ ediPar tyName EDIPartyName <br>

33 ∗34 ∗ EDIPartyName : := SEQUENCE { <br>

35 ∗ nameAss igner [ 0 ] D i r e c t o r y S t r i n g OPTIONAL , <br>

36 ∗ partyName [ 1 ] D i r e c t o r y S t r i n g } <br>

37 ∗38 ∗ D i r e c t o r y S t r i n g : := CHOICE {39 ∗ t e l e t e x S t r i n g T e l e t e x S t r i n g ( SIZE ( 1 . . MAX) ) ,

40 ∗ p r i n t a b l e S t r i n g P r i n t a b l e S t r i n g ( SIZE ( 1 . . MAX) ) ,

41 ∗ u n i v e r s a l S t r i n g U n i v e r s a l S t r i n g ( SIZE ( 1 . . MAX) ) ,

42 ∗ u t f 8 S t r i n g UTF8Str ing ( SIZE ( 1 . . MAX) ) ,

43 ∗ bmpS t r ing BMPString ( SIZE ( 1 . . MAX) ) }44 ∗45 ∗ @access p u b l i c

46 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

47 ∗ /

48 c l a s s L a b s e c S e c u r i t y C e r t i f i c a t i o n D a t a T y p e s E d i P a r t y N a m e

49 e x t e n d s L a b s e c S e c u r i t y C e r t i f i c a t i o n D a t a T y p e s G e n e r a l N a m e

50 {51

52 p r i v a t e $ediPar tyName = array ( ) ;

53

54 / / c o n t a d o r para a s e q u e n c e EDIPartyName

55 p r i v a t e $ c o n t a d o r = 0 ;

56

57 /∗ ∗58 ∗ A d i c i o n a um ediPar tyName . Se o campo nameAss igner n o

59 ∗60 ∗ @access p u b l i c

61 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

62 ∗ @param s t r i n g EdiPartyName a a d i c i o n a r

63 ∗ @param s t r i n g NameAssigner a a d i c i o n a r . P a r m e t r o Opc iona l

64 ∗ @return v o i d

65 ∗ /

66 p u b l i c f u n c t i o n addEdiPar tyName ( $partyName , $nameAss igner =’’ )

67 {68 / / s e partyName f o r s t r i n g , add partyName

69 i f ( i s s t r i n g ( $partyName ) ) {70 $ t h i s−>ed iPar tyName [ $ t h i s−>c o n t a d o r ] [ ’partyName’ ] =

$partyName ;

71

Page 215: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

214

72 / / s e nameAss igner e s t i v e r p r e e n c h i d o E f o r uma

s t r i n g , add nameAss igner

73 i f ( ( $nameAss igner != ’’ ) && ( i s s t r i n g (

$nameAss igner ) ) ) {74 $ t h i s−>ed iPar tyName [ $ t h i s−>c o n t a d o r ] [ ’

nameAssigner’ ] = $nameAss igner ;

75

76 } e l s e i f ( ! i s s t r i n g ( $nameAss igner ) ) {77 th row new E x c e p t i o n ( ’ P a r m e t r o

nameAssigner no tipo EdiPartyName

i n v l i d o ’ ) ;

78 }79

80 / / i n c r e m e n t a c o n t a d o r

81 $ t h i s−>c o n t a d o r ++;

82

83 } e l s e i f ( ! i s s t r i n g ( $partyName ) ) {84 th row new E x c e p t i o n ( ’ P a r m e t r o partyName no tipo

EdiPartyName i n v l i d o ’ ) ;

85 }86 }87

88 /∗ ∗89 ∗ Re torna os EdiPartyNames

90 ∗91 ∗ @access p u b l i c

92 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

93 ∗ @return Array c o n t e n d o os Ed i tPar tyNames

94 ∗ /

95 p u b l i c f u n c t i o n ge tEd iPa r tyNames ( )

96 {97 r e t u r n $ t h i s−>ed iPar tyName ;

98 }99

100 } /∗ end o f c l a s s EdiPartyName ∗ /

101

102 ?>

1 <?php

2 e r r o r r e p o r t i n g ( E ALL ) ;

3

4 /∗ ∗5 ∗ s g c i − c l a s s . RDNSequence . php

Page 216: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

215

6 ∗7 ∗ $ Id$

8 ∗9 ∗ T h i s f i l e i s p a r t o f s g c i .

10 ∗11 ∗ A u t o m a t i c g e n e r a t e d w i t h ArgoUML 0 . 2 4 on 1 4 . 0 8 . 2 0 0 7 , 1 7 : 1 0 : 1 8

12 ∗13 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

14 ∗ /

15

16 i f (0 > vers ion compare ( PHP VERSION , ’5’ ) ) {17 d i e ( ’This file was generated for PHP 5’ ) ;

18 }19

20 /∗ ∗21 ∗ C l a s s e que r e p r e s e n t a o t i p o RDNSequence . <br>

22 ∗23 ∗ RDNSequence segundo ASN . 1 : <br>

24 ∗25 ∗ RDNSequence : := SEQUENCE OF R e l a t i v e D i s t i n g u i s h e d N a m e <br>

26 ∗27 ∗ R e l a t i v e D i s t i n g u i s h e d N a m e ::= <br>

28 ∗ SET OF A t t r i b u t e T y p e A n d V a l u e <br>

29 ∗30 ∗ A t t r i b u t e T y p e A n d V a l u e : := SEQUENCE { <br>

31 ∗ t y p e A t t r i b u t e T y p e , <br>

32 ∗ v a l u e A t t r i b u t e V a l u e } <br>

33 ∗34 ∗ A t t r i b u t e T y p e : := OBJECT IDENTIFIER <br>

35 ∗36 ∗ A t t r i b u t e V a l u e : := ANY DEFINED BY A t t r i b u t e T y p e <br>

37 ∗38 ∗ @access p u b l i c

39 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

40 ∗ /

41 c l a s s L a b s e c S e c u r i t y C e r t i f i c a t i o n D a t a T y p e s R D N S e q u e n c e

42 {43 c o n s t COMMON NAME = ’CN’ ;

44

45 c o n s t ORGANIZATION = ’O’ ;

46

47 c o n s t ORGANIZATION UNIT = ’OU’ ;

48

Page 217: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

216

49 c o n s t COUNTRY = ’C’ ;

50

51 c o n s t DISTINGUISHED NAME QUALIFIER = ’DNQ’ ;

52

53 c o n s t STATE = ’ST’ ;

54

55 c o n s t SERIAL NUMBER = ’S’ ;

56

57 c o n s t LOCALITY = ’L’ ;

58

59 c o n s t TITLE = ’T’ ;

60

61 c o n s t SURNAME = ’SN’ ;

62

63 c o n s t GIVEN NAME = ’GN’ ;

64

65 c o n s t INITIALS = ’I’ ;

66

67 c o n s t PSEUDONYM = ’PS’ ;

68

69 c o n s t GENERATION QUALIFIER = ’GQ’ ;

70

71 c o n s t EMAIL = ’E’ ;

72

73 p r i v a t e $ r d n s = array ( ) ;

74

75 /∗ ∗76 ∗ A d i c i o n a uma e n t r a d a no RDNSequence

77 ∗78 ∗ @access p u b l i c

79 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

80 ∗ @param i n t uma c o n s t a n t e de c l a s s e , i n d i c a n d o qua l o t i p o do

a t r i b u t o

81 ∗ @param s t r i n g O v a l o r

82 ∗ @return v o i d

83 ∗ @throws E x c e p t i o n Caso o p a r m e t r o t y p e n o s e j a n u m r i c o .

84 ∗ @throws E x c e p t i o n Caso o p a r m e t r o t y p e s e j a menor que 15 e maior

que 0 . E s t e

85 ∗ o i n t e r v a l o d e f i n i d o p e l a s c o n t a n t e s de c l a s s e

86 ∗ /

87 p u b l i c f u n c t i o n a d d E n t r y ( $ type , $ v a l u e )

88 {89 i f ( i s s t r i n g ( $ t y p e ) ) {

Page 218: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

217

90

91 i f ( $ t h i s−>v e r i f i c a T i p o ( $ t y p e ) ) {92 $ t h i s−>r d n s [ $ t y p e ] [ ] = $ v a l u e ;

93 } e l s e {94 th row new E x c e p t i o n ( ’ P a r m e t r o type de RDNSequence

i n v l i d o .’ . " Type: $type, Value: $value" ) ;

95 }96

97 } e l s e {98 th row new E x c e p t i o n ( ’ P a r m e t r o type de RDNSequence deve ser

string.’ ) ;

99 }100 }101

102 p r i v a t e f u n c t i o n v e r i f i c a T i p o ( $ t y p e ) {103 i f ( $ t y p e != ’CN’ && $ t y p e != ’O’ && $ t y p e != ’OU’ && $ t y p e != ’C’

&& $ t y p e != ’DNQ’ &&

104 $ t y p e != ’ST’ && $ t y p e != ’S’ && $ t y p e != ’L’ && $ t y p e != ’T’ &&

$ t y p e != ’SN’ &&

105 $ t y p e != ’GN’ && $ t y p e != ’I’ && $ t y p e != ’PS’ && $ t y p e != ’GQ’ &&

$ t y p e != ’E’ ) {106 r e t u r n f a l s e ;

107 } e l s e {108 r e t u r n t rue ;

109 }110

111 }112

113 /∗ ∗114 ∗ Re torna as e n t r a d a de RDNSequence

115 ∗116 ∗ @access p u b l i c

117 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

118 ∗ @return a r r a y uma a r r a y b i d i m e n s i o n a l , com o p r i m e i r o n v e l

n u m r i c o

119 ∗ e o segundo n v e l sendo os campos t y p e e v a l u e da RDNSequence .

120 ∗ I s t o f o i f e i t o p o i s uma RDNSequence pode s e r formada por 2

CommonNames

121 ∗ por exemplo ! E n t o t y p e n o pode s e r u t i l i z a d o como n d i c e do

a r r a y .

122 ∗ @throws E x c e p t i o n Caso o RDNSequence n o c o n t e n h a nenhuma en t rada ,

l a n a e x c e o

123 ∗ /

Page 219: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

218

124 p u b l i c f u n c t i o n g e t E n t r i e s ( )

125 {126 i f ( count ( $ t h i s−>r d n s ) > 0) {127 r e t u r n $ t h i s−>r d n s ;

128 } e l s e {129 th row new E x c e p t i o n ( ’RDNSequece sem nenhuma entrada. Deve haver

pelo menos uma entrada.’ ) ;

130 }131 }132

133 } /∗ end o f c l a s s RDNSequence ∗ /

134

135 ?>

1 <?php

2

3 e r r o r r e p o r t i n g ( E ALL ) ;

4

5 /∗ ∗6 ∗ s g c i − R e g i s t e r e d I D . php

7 ∗8 ∗ $ Id$

9 ∗10 ∗ T h i s f i l e i s p a r t o f s g c i .

11 ∗12 ∗ A u t o m a t i c g e n e r a t e d w i t h ArgoUML 0 . 2 4 on 2 6 . 0 7 . 2 0 0 7 , 1 2 : 3 8 : 2 0

13 ∗14 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

15 ∗ /

16

17 i f (0 > vers ion compare ( PHP VERSION , ’5’ ) ) {18 d i e ( ’This file was generated for PHP 5’ ) ;

19 }20

21 /∗ ∗22 ∗ i n c l u i GeneralName

23 ∗24 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

25 ∗ /

26 r e q u i r e o n c e ( ’Labsec/Security/Certification/DataTypes/GeneralName.php’ ) ;

27

28 /∗ ∗29 ∗ C l a s s e que r e p r e s e n t a o t i p o R e g i s t e r e d I D

Page 220: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

219

30 ∗31 ∗ R e g i s t e r e d I D em f o r m a t o ASN . 1 : <br>

32 ∗ r e g i s t e r e d I D OBJECT IDENTIFIER <br>

33 ∗34 ∗ @access p u b l i c

35 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

36 ∗ /

37 c l a s s L a b s e c S e c u r i t y C e r t i f i c a t i o n D a t a T y p e s R e g i s t e r e d I D

38 e x t e n d s L a b s e c S e c u r i t y C e r t i f i c a t i o n D a t a T y p e s G e n e r a l N a m e

39 {40

41 p r i v a t e $ r e g i s t e r e d I D ;

42

43 /∗ ∗44 ∗ S e t a o r e g i s t e r e d I D

45 ∗46 ∗ @access p u b l i c

47 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

48 ∗ @param O b j e c t I d e n t i f i e r r e g i s t e r e d I D

49 ∗ @return v o i d

50 ∗ @except ion E x c e p t i o n Caso o t i p o n o f o r v l i d o

51 ∗ /

52 p u b l i c f u n c t i o n s e t R e g i s t e r e d I D (

L a b s e c S e c u r i t y C e r t i f i c a t i o n O b j e c t I d e n t i f i e r $ r e g i s t e r e d I D )

53 {54 $ t h i s−>r e g i s t e r e d I D = $ r e g i s t e r e d I D ;

55 }56

57 /∗ ∗58 ∗ Re torna o v a l o r de r e g i s t e r e d I D

59 ∗60 ∗ @access p u b l i c

61 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

62 ∗ @return O b j e c t I d e n t i f i e r R e g i s t e r e d I D

63 ∗ @throws E x c e p t i o n Quando o r e g i s t e r e d I D n o e s t i v e r s e t a d o

64 ∗ /

65 p u b l i c f u n c t i o n g e t R e g i s t e r e d I D ( )

66 {67 i f ( i s s e t ( $ t h i s−>r e g i s t e r e d I D ) ) {68 r e t u r n $ t h i s−>r e g i s t e r e d I D ;

69 } e l s e {70 th row new E x c e p t i o n ( ’ERRO: registeredID n o setado.’ ) ;

71 }

Page 221: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

220

72 }73

74 } /∗ end o f c l a s s R e g i s t e r e d I D ∗ /

75

76 ?>

1 <?php

2

3 e r r o r r e p o r t i n g ( E ALL ) ;

4

5 /∗ ∗6 ∗ s g c i − GeneralName . php

7 ∗8 ∗ $ Id$

9 ∗10 ∗ T h i s f i l e i s p a r t o f s g c i .

11 ∗12 ∗ A u t o m a t i c g e n e r a t e d w i t h ArgoUML 0 . 2 4 on 2 6 . 0 7 . 2 0 0 7 , 1 2 : 3 8 : 2 0

13 ∗14 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

15 ∗ /

16

17 i f (0 > vers ion compare ( PHP VERSION , ’5’ ) ) {18 d i e ( ’This file was generated for PHP 5’ ) ;

19 }20

21 /∗ ∗22 ∗ C l a s s e a b s t r a t a que imp lemen ta o t i p o GeneralName da RFC 3280 . <br>

23 ∗24 ∗ GeneralName em f o r m a t o ASN . 1 : <br>

25 ∗ GeneralName : := CHOICE { <br>

26 ∗ otherName [ 0 ] OtherName , <br>

27 ∗ rfc822Name [ 1 ] I A 5 S t r i n g , <br>

28 ∗ dNSName [ 2 ] I A 5 S t r i n g , <br>

29 ∗ x400Address [ 3 ] ORAddress , <br>

30 ∗ d i r e c t o r y N a m e [ 4 ] Name , <br>

31 ∗ ediPar tyName [ 5 ] EDIPartyName , <br>

32 ∗ u n i f o r m R e s o u r c e I d e n t i f i e r [ 6 ] I A 5 S t r i n g , <br>

33 ∗ i P A d d r e s s [ 7 ] OCTET STRING , <br>

34 ∗ r e g i s t e r e d I D [ 8 ] OBJECT IDENTIFIER <br>

35 ∗ } <br>

36 ∗37 ∗ @abs t rac t

Page 222: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

221

38 ∗ @access p u b l i c

39 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

40 ∗ /

41 a b s t r a c t c l a s s L a b s e c S e c u r i t y C e r t i f i c a t i o n D a t a T y p e s G e n e r a l N a m e

42 {43 } /∗ end o f a b s t r a c t c l a s s GeneralName ∗ /

44

45 ?>

1 <?php

2 e r r o r r e p o r t i n g ( E ALL ) ;

3

4 /∗ ∗5 ∗ s g c i − i n t e r f a c e . C e r t i f i c a t e B u i l d e r . php

6 ∗7 ∗ $ Id$

8 ∗9 ∗ T h i s f i l e i s p a r t o f s g c i .

10 ∗11 ∗ A u t o m a t i c g e n e r a t e d w i t h ArgoUML 0 . 2 4 on 1 4 . 0 8 . 2 0 0 7 , 1 7 : 0 9 : 4 5

12 ∗13 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

14 ∗ /

15

16 i f (0 > vers ion compare ( PHP VERSION , ’5’ ) ) {17 d i e ( ’This file was generated for PHP 5’ ) ;

18 }19

20 /∗ ∗21 ∗ I n t e r f a c e do B u i l d e r da c l a s s e C e r t i f i c a t e

22 ∗23 ∗ @access p u b l i c

24 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

25 ∗ /

26 i n t e r f a c e L a b s e c S e c u r i t y C e r t i f i c a t i o n C e r t i f i c a t e B u i l d e r

27 {28 /∗ ∗29 ∗ C o n s t r u t o r . Se uma r e q u i s i o f o r passada como p a r m e t r o , os

dados s o

30 ∗ e x t r a d o s da r e q u i s i o a u t o m a t i c a m e n t e .

31 ∗32 ∗ @access p u b l i c

33 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

Page 223: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

222

34 ∗ @param L a b s e c S e c u r i t y C e r t i f i c a t i o n R e q u e s t C e r t i f i c a t e R e q u e s t Uma

r e q u i s i o de c e r t i f i c a d o . P a r m e t r o Opc iona l

35 ∗ @return v o i d

36 ∗ /

37 p u b l i c f u n c t i o n c o n s t r u c t (

L a b s e c S e c u r i t y C e r t i f i c a t i o n R e q u e s t C e r t i f i c a t e R e q u e s t $ r e q u e s t =

n u l l ) ;

38

39 /∗ ∗40 ∗ S e t a o S u b j e c t do C e r t i f i c a d o

41 ∗42 ∗ @access p u b l i c

43 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

44 ∗ @param L a b s e c S e c u r i t y C e r t i f i c a t i o n D a t a T y p e s R D N S e q u e n c e o s u j e i t o

45 ∗ @return v o i d

46 ∗ /

47 p u b l i c f u n c t i o n s e t S u b j e c t (

L a b s e c S e c u r i t y C e r t i f i c a t i o n D a t a T y p e s R D N S e q u e n c e $ s u b j e c t ) ;

48

49 /∗ ∗50 ∗ S e t a o I s s u e r do c e r t i f i c a d o

51 ∗52 ∗ @access p u b l i c

53 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

54 ∗ @param L a b s e c S e c u r i t y C e r t i f i c a t i o n D a t a T y p e s R D N S e q u e n c e o e m i s s o r

55 ∗ @return v o i d

56 ∗ /

57 p u b l i c f u n c t i o n s e t I s s u e r (

L a b s e c S e c u r i t y C e r t i f i c a t i o n D a t a T y p e s R D N S e q u e n c e $ i s s u e r ) ;

58

59 /∗ ∗60 ∗ S e t a o n m e r o s e r i a l do c e r t i f i c a d o .

61 ∗62 ∗ @access p u b l i c

63 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

64 ∗ @param mixed o n m e r o s e r i a l

65 ∗ @return v o i d

66 ∗ /

67 p u b l i c f u n c t i o n s e t S e r i a l N u m b e r ( $ s e r i a l ) ;

68

69 /∗ ∗70 ∗ S e t a a Pub l i cKey do c e r t i f i c a d o

71 ∗

Page 224: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

223

72 ∗ @access p u b l i c

73 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

74 ∗ @param var a chave p b l i c a

75 ∗ @return v o i d

76 ∗ /

77 p u b l i c f u n c t i o n s e t P u b l i c K e y ( L a b s e c S e c u r i t y C r y p t o P u b l i c K e y $pubKey ) ;

78

79 /∗ ∗80 ∗ S e t a o N o t B e f o r e do c e r t i f i c a d o

81 ∗82 ∗ @access p u b l i c

83 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

84 ∗ @param Zend Date A da ta de e x p i r a o do c e r t i f i c a d o

85 ∗ @return v o i d

86 ∗ /

87 p u b l i c f u n c t i o n s e t N o t B e f o r e ( Zend Date $ n o t B e f o r e ) ;

88

89 /∗ ∗90 ∗ S e t a o N o t A f t e r do c e r t i f i c a d o

91 ∗92 ∗ @access p u b l i c

93 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

94 ∗ @param Zend Date A da ta de i n i c i a l de v a l i d a d e do c e r t i f i c a d o

95 ∗ @return v o i d

96 ∗ /

97 p u b l i c f u n c t i o n s e t N o t A f t e r ( Zend Date $ n o t A f t e r ) ;

98

99 /∗ ∗100 ∗ A d i c i o n a uma e x t e n s o ao c e r t i f i c a d o

101 ∗102 ∗ @access p u b l i c

103 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

104 ∗ @param L a b s e c S e c u r i t y C e r t i f i c a t i o n E x t e n s i o n a e x t e n s o

105 ∗ @return v o i d

106 ∗ /

107 p u b l i c f u n c t i o n a d d E x t e n s i o n ( L a b s e c S e c u r i t y C e r t i f i c a t i o n E x t e n s i o n

$ e x t e n s i o n ) ;

108

109 /∗ ∗110 ∗ A d i c i o n a uma l i s t a e x t e n s e s ao c e r t i f i c a d o .

111 ∗112 ∗ @access p u b l i c

113 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

Page 225: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

224

114 ∗ @param a r r a y uma a r r a y c o n t e n d o em cada l i n h a uma e x t e n s o a s e r

a d i c i o n a d a

115 ∗ no c e r t i f i c a d o

116 ∗ @return v o i d

117 ∗ /

118 p u b l i c f u n c t i o n a d d E x t e n s i o n s ( $ e x t e n s i o n s ) ;

119

120 /∗ ∗121 ∗ A s s i n a os dados , e c r i a um o b j e t o C e r t i f i c a t e

122 ∗123 ∗ @access p u b l i c

124 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

125 ∗ @param P r i v a t e K e y a chave p r i v a d a do e m i s s o r

126 ∗ @param s t r i n g o a l g o r i t m o de hash

127 ∗ @param C e r t i f i c a t e T e m p l a t e o t e m p l a t e . P a r m e t r o Opc iona l

128 ∗ @param s t r i n g argumentos e x t r a s . P a r m e t r o Opc iona l

129 ∗ @return C e r t i f i c a t e Um c e r t i f i c a d o a s s i n a d o

130 ∗ /

131 p u b l i c f u n c t i o n s i g n ( L a b s e c S e c u r i t y C r y p t o P r i v a t e K e y $ p r i v a t e K e y ,

$hashAlgor i thm ,

132 L a b s e c S e c u r i t y C e r t i f i c a t i o n C e r t i f i c a t e T e m p l a t e $ t e m p a t e = n u l l ,

$ e x t r a A r g s = n u l l ) ;

133

134 } /∗ end o f i n t e r f a c e C e r t i f i c a t e B u i l d e r ∗ /

135

136 ?>

1 <?php

2 e r r o r r e p o r t i n g ( E ALL ) ;

3

4 /∗ ∗5 ∗ s g c i − i n t e r f a c e . C e r t i f i c a t e R e v o c a t i o n L i s t . php

6 ∗7 ∗ $ Id$

8 ∗9 ∗ T h i s f i l e i s p a r t o f s g c i .

10 ∗11 ∗ A u t o m a t i c g e n e r a t e d w i t h ArgoUML 0 . 2 4 on 1 4 . 0 8 . 2 0 0 7 , 1 6 : 5 8 : 3 6

12 ∗13 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

14 ∗ /

15

16 i f (0 > vers ion compare ( PHP VERSION , ’5’ ) ) {

Page 226: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

225

17 d i e ( ’This file was generated for PHP 5’ ) ;

18 }19

20 /∗ ∗21 ∗ C l a s s e que r e p r e s e n t a uma LCR( L i s t a de C e r t i f i c a d o s Revogados )

22 ∗23 ∗ @access p u b l i c

24 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

25 ∗ /

26 i n t e r f a c e L a b s e c S e c u r i t y C e r t i f i c a t i o n C e r t i f i c a t e R e v o c a t i o n L i s t

27 {28 /∗ ∗29 ∗ Re torna a LCR em f o r m a t o PEM

30 ∗31 ∗ @access p u b l i c

32 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

33 ∗ @return s t r i n g a LCR em f o r m a t o PEM

34 ∗ /

35 p u b l i c f u n c t i o n getPem ( ) ;

36

37 /∗ ∗38 ∗ Re torna a LCR em f o r m a t o DER

39 ∗40 ∗ @access p u b l i c

41 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

42 ∗ @return var a LCR em f o r m a t o DER

43 ∗ /

44 p u b l i c f u n c t i o n ge tD e r ( ) ;

45

46 /∗ ∗47 ∗ Re torna a v e r s o da LCR

48 ∗49 ∗ @access p u b l i c

50 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

51 ∗ @return i n t a v e r s o da LCR

52 ∗ /

53 p u b l i c f u n c t i o n g e t V e r s i o n ( ) ;

54

55 /∗ ∗56 ∗ Re torna o e m i s s o r da LCR

57 ∗58 ∗ @access p u b l i c

59 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

Page 227: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

226

60 ∗ @return RDNSequence o e m i s s o r

61 ∗ /

62 p u b l i c f u n c t i o n g e t I s s u e r ( ) ;

63

64 /∗ ∗65 ∗ Re torna a da ta de e m i s s o da LCR

66 ∗67 ∗ @access p u b l i c

68 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

69 ∗ @return Zend Date a da ta de e m i s s o

70 ∗ /

71 p u b l i c f u n c t i o n g e t T h i s U p d a t e ( ) ;

72

73 /∗ ∗74 ∗ Re torna a d a ta de e m i s s o da p r x i m a LCR

75 ∗76 ∗ @access p u b l i c

77 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

78 ∗ @return Zend Date a da ta de e m i s s o da p r x i m a LCR

79 ∗ /

80 p u b l i c f u n c t i o n ge tNex tUpda t e ( ) ;

81

82 /∗ ∗83 ∗ Re torna as e x t e n s e s da LCR

84 ∗85 ∗ @access p u b l i c

86 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

87 ∗ @return a r r a y uma a r r a y c o n t e n d o em cada l i n h a uma e x t e n s o da LCR

88 ∗ /

89 p u b l i c f u n c t i o n g e t E x t e n s i o n s ( ) ;

90

91 /∗ ∗92 ∗ Re torna uma e x t e n s o e s p e c f i c a

93 ∗94 ∗ @access p u b l i c

95 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

96 ∗ @param O b j e c t I d e n t i f i e r o OID da e x t e n s o a s e r r e t o r n a d a

97 ∗ @return E x t e n s i o n a e x t e n s o s o l i c i t a d a

98 ∗ /

99 p u b l i c f u n c t i o n g e t E x t e n s i o n (

L a b s e c S e c u r i t y C e r t i f i c a t i o n O b j e c t I d e n t i f i e r $o id ) ;

100

101 /∗ ∗

Page 228: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

227

102 ∗ Re torna as E x t e n s e s d e s c o n h e c i d a s

103 ∗104 ∗ @access p u b l i c

105 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

106 ∗ @return a r r a y uma a r r a y c o n t e n d o as e x t e n s e s d e s c o n h e c i d a s

107 ∗ /

108 p u b l i c f u n c t i o n ge tUnknownExtens ions ( ) ;

109

110 /∗ ∗111 ∗ V e r i f i c a a a s s i n a t u r a

112 ∗113 ∗ @access p u b l i c

114 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

115 ∗ @return boo lean TRUE caso a a s s i n a t u r a f o r v l i d a , FALSE caso

c o n t r r i o

116 ∗ /

117 p u b l i c f u n c t i o n v e r i f y S i g n a t u r e ( ) ;

118

119 /∗ ∗120 ∗ Re torna as e n t r a d a s da CRL

121 ∗122 ∗ @access p u b l i c

123 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

124 ∗ @return CRLEntry as e n t r a d a s da CRL

125 ∗ /

126 p u b l i c f u n c t i o n g e t C R L E n t r i e s ( ) ;

127

128 /∗ ∗129 ∗ V e r i f i c a se um c e r t i f i c a d o c o n s t a na LCR

130 ∗131 ∗ @access p u b l i c

132 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

133 ∗ @param C e r t i f i c a t e o c e r t i f i c a d o a s e r v e r i f i c a d o

134 ∗ @return boo lean TRUE se o c e r t i f i c a d o e s t i v e r revogado , FALSE caso

n o e s t i v e r .

135 ∗ /

136 p u b l i c f u n c t i o n i sRevoked ( L a b s e c S e c u r i t y C e r t i f i c a t i o n C e r t i f i c a t e

$ c e r t i f i c a t e ) ;

137

138 } /∗ end o f i n t e r f a c e C e r t i f i c a t e R e v o c a t i o n L i s t ∗ /

139

140 ?>

Page 229: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

228

1 <?php

2 e r r o r r e p o r t i n g ( E ALL ) ;

3

4 /∗ ∗5 ∗ s g c i − i n t e r f a c e . C e r t i f i c a t e T e m p l a t e . php

6 ∗7 ∗ $ Id$

8 ∗9 ∗ T h i s f i l e i s p a r t o f s g c i .

10 ∗11 ∗ A u t o m a t i c g e n e r a t e d w i t h ArgoUML 0 . 2 4 on 1 4 . 0 8 . 2 0 0 7 , 1 7 : 0 9 : 5 9

12 ∗13 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

14 ∗ /

15

16 i f (0 > vers ion compare ( PHP VERSION , ’5’ ) ) {17 d i e ( ’This file was generated for PHP 5’ ) ;

18 }19

20 /∗ ∗21 ∗ C l a s s e que r e p r e s e n t a os T e m p l a t e s de C e r t i f i c a d o s

22 ∗23 ∗ @access p u b l i c

24 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

25 ∗ /

26 i n t e r f a c e L a b s e c S e c u r i t y C e r t i f i c a t i o n C e r t i f i c a t e T e m p l a t e

27 {28

29 /∗ ∗30 ∗ S e t a V a l i d i t y D a y s

31 ∗32 ∗ @access p u b l i c

33 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

34 ∗ @param i n t q u a n t i d a d e de d i a s

35 ∗ @return v o i d

36 ∗ /

37 p u b l i c f u n c t i o n s e t V a l i d i t y D a y s ( $days ) ;

38

39 /∗ ∗40 ∗ A d i c i o n a uma e x t e n s o

41 ∗42 ∗ @access p u b l i c

43 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

Page 230: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

229

44 ∗ @param E x t e n s i o n a e x t e n s o a a d i c i o n a r

45 ∗ @return v o i d

46 ∗ /

47 p u b l i c f u n c t i o n a d d E x t e n s i o n ( L a b s e c S e c u r i t y C e r t i f i c a t i o n E x t e n s i o n

$ e x t e n s i o n ) ;

48

49 /∗ ∗50 ∗ A d i c i o n a v r i a s e x t e n s e s

51 ∗52 ∗ @access p u b l i c

53 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

54 ∗ @param a r r a y uma a r r a y c o n t e n d o em cada l i n h a uma e x t e n s o

55 ∗ @return v o i d

56 ∗ /

57 p u b l i c f u n c t i o n a d d E x t e n s i o n s ( $ e x t e n s i o n s ) ;

58

59 /∗ ∗60 ∗ Re torna os d i a s de v a l i d a d e

61 ∗62 ∗ @access p u b l i c

63 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

64 ∗ @return i n t a q u a n t i d a d e de d i a s de v a l i d a d e

65 ∗ /

66 p u b l i c f u n c t i o n g e t V a l i d i t y D a y s ( ) ;

67

68 /∗ ∗69 ∗ Re torna uma e x t e n s o e s p e c f i c a

70 ∗71 ∗ @access p u b l i c

72 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

73 ∗ @param O b j e c t I d e n t i f i e r o OID da e x t e n s o

74 ∗ @return E x t e n s i o n a e x t e n s o s o l i c i t a d a

75 ∗ /

76 p u b l i c f u n c t i o n g e t E x t e n s i o n (

L a b s e c S e c u r i t y C e r t i f i c a t i o n O b j e c t I d e n t i f i e r $o id ) ;

77

78 /∗ ∗79 ∗ Re torna as e x t e n s e s

80 ∗81 ∗ @access p u b l i c

82 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

83 ∗ @return a r r a y uma a r r a y c o n t e n d o em cada l i n h a uma e x t e n s o

84 ∗ /

Page 231: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

230

85 p u b l i c f u n c t i o n g e t E x t e n s i o n s ( ) ;

86

87 } /∗ end o f i n t e r f a c e C e r t i f i c a t e T e m p l a t e ∗ /

88

89 ?>

1 <?php

2 e r r o r r e p o r t i n g ( E ALL ) ;

3

4 /∗ ∗5 ∗ s g c i − i n t e r f a c e . C e r t i f i c a t e R e q u e s t . php

6 ∗7 ∗ $ Id$

8 ∗9 ∗ T h i s f i l e i s p a r t o f s g c i .

10 ∗11 ∗ A u t o m a t i c g e n e r a t e d w i t h ArgoUML 0 . 2 4 on 1 4 . 0 8 . 2 0 0 7 , 1 7 : 0 8 : 4 5

12 ∗13 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

14 ∗ /

15

16 i f (0 > vers ion compare ( PHP VERSION , ’5’ ) ) {17 d i e ( ’This file was generated for PHP 5’ ) ;

18 }19

20 /∗ ∗21 ∗ I n t e r f a c e r e s p o n s v e l p e l a r e q u i s i o de c e r t i f i c a d o

22 ∗23 ∗ @access p u b l i c

24 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

25 ∗ /

26 i n t e r f a c e L a b s e c S e c u r i t y C e r t i f i c a t i o n R e q u e s t C e r t i f i c a t e R e q u e s t

27 {28

29 /∗ ∗30 ∗ C o n s t r u t o r . Se f o r passado como p a r m e t r o , l ł a r e q u i s i o .

31 ∗32 ∗ @access p u b l i c

33 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

34 ∗ @return v o i d

35 ∗ /

36 p u b l i c f u n c t i o n c o n s t r u c t ( $da ta , $ t y p e ) ;

37

Page 232: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

231

38 /∗ ∗39 ∗ Re torna a r e q u i s i o em f o r m a t o PEM

40 ∗41 ∗ @access p u b l i c

42 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

43 ∗ @return s t r i n g a r e q u i s i a o em f o r m a t o PEM

44 ∗ /

45 p u b l i c f u n c t i o n getPem ( ) ;

46

47 /∗ ∗48 ∗ Re torna a r e q u i s i o em f o r m a t o DER

49 ∗50 ∗ @access p u b l i c

51 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

52 ∗ @return s t r i n g a r e q u i s i a o em f o r m a t o DER

53 ∗ /

54 p u b l i c f u n c t i o n g e t De r ( ) ;

55

56 /∗ ∗57 ∗ Re torna achave p b l i c a da r e q u i s i o

58 ∗59 ∗ @access p u b l i c

60 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

61 ∗ @return Pub l i cKey a chave p b l i c a

62 ∗ /

63 p u b l i c f u n c t i o n g e t P u b l i c K e y ( ) ;

64

65 /∗ ∗66 ∗ Re torna o S u b j e c t

67 ∗68 ∗ @access p u b l i c

69 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

70 ∗ @return RDNSequence o s u b j e c t

71 ∗ /

72 p u b l i c f u n c t i o n g e t S u b j e c t ( ) ;

73

74 /∗ ∗75 ∗ Re torna as e x t e n s e s

76 ∗77 ∗ @access p u b l i c

78 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

79 ∗ @return a r r a y Array com as e x t e n s e s

80 ∗ /

Page 233: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

232

81 p u b l i c f u n c t i o n g e t E x t e n s i o n s ( ) ;

82

83 /∗ ∗84 ∗ Re torna uma e x t e n s o e s p e c i f i c a . Se a e x t e n s o n o e x i s t i r ,

r e t o r n a NULL

85 ∗86 ∗ @access p u b l i c

87 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

88 ∗ @param O b j e c t I d e n t i f i e r O OID da e x t e n s o a s e r r e t o r n a d a

89 ∗ @return E x t e n s i o n a e x t e n s o

90 ∗ /

91 p u b l i c f u n c t i o n g e t E x t e n s i o n (

L a b s e c S e c u r i t y C e r t i f i c a t i o n O b j e c t I d e n t i f i e r $o id ) ;

92

93 /∗ ∗94 ∗ Re torna as e x t e n s e s d e s c o n h e c i d a s

95 ∗96 ∗ @access p u b l i c

97 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

98 ∗ @return a r r a y Array com as UnknownExtens ions

99 ∗ /

100 p u b l i c f u n c t i o n ge tUnknownExtens ions ( ) ;

101

102 /∗ ∗103 ∗ V e r i f i c a se a a s s i n a t u r a v l i d a

104 ∗105 ∗ @access p u b l i c

106 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

107 ∗ @return boo lean TRUE caso a a s s i n a t u r a s e j a v l i d a , FALSE caso

c o n t r r i o .

108 ∗ /

109 p u b l i c f u n c t i o n v e r i f y S i g n a t u r e ( ) ;

110

111 } /∗ end o f i n t e r f a c e C e r t i f i c a t e R e q u e s t ∗ /

112

113 ?>

1 <?php

2 e r r o r r e p o r t i n g ( E ALL ) ;

3 / / TODO DOCUMENTACAO

4

5 /∗ ∗6 ∗ s g c i − c l a s s . C e r t i f i c a t e R e q u e s t B u i l d e r . php

Page 234: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

233

7 ∗8 ∗ $ Id$

9 ∗10 ∗ T h i s f i l e i s p a r t o f s g c i .

11 ∗12 ∗ A u t o m a t i c g e n e r a t e d w i t h ArgoUML 0 . 2 4 on 1 4 . 0 8 . 2 0 0 7 , 1 7 : 0 8 : 5 9

13 ∗14 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

15 ∗ /

16

17 i f (0 > vers ion compare ( PHP VERSION , ’5’ ) ) {18 d i e ( ’This file was generated for PHP 5’ ) ;

19 }20

21 /∗ ∗22 ∗ I n t e r f a c e que imp lemen ta o p a d r o de p r o j e t o B u i l d e r das r e q u i s i e s

23 ∗ de c e r t i f i c a d o .

24 ∗ @access p u b l i c

25 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

26 ∗ /

27 i n t e r f a c e L a b s e c S e c u r i t y C e r t i f i c a t i o n R e q u e s t C e r t i f i c a t e R e q u e s t B u i l d e r

28 {29

30 /∗ ∗31 ∗ S h o r t d e s c r i p t i o n o f method c o n s t r u c t

32 ∗33 ∗ @access p u b l i c

34 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

35 ∗ @return v o i d

36 ∗ /

37 p u b l i c f u n c t i o n c o n s t r u c t ( ) ;

38

39 /∗ ∗40 ∗ S h o r t d e s c r i p t i o n o f method s e t P u b l i c K e y

41 ∗42 ∗ @access p u b l i c

43 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

44 ∗ @return v o i d

45 ∗ /

46 p u b l i c f u n c t i o n s e t P u b l i c K e y ( L a b s e c S e c u r i t y C r y p t o P u b l i c K e y

$pubKey ) ;

47

48 /∗ ∗

Page 235: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

234

49 ∗ S h o r t d e s c r i p t i o n o f method s e t S u b j e c t

50 ∗51 ∗ @access p u b l i c

52 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

53 ∗ @param RDNSequence

54 ∗ @return v o i d

55 ∗ /

56 p u b l i c f u n c t i o n s e t S u b j e c t (

L a b s e c S e c u r i t y C e r t i f i c a t i o n E x t e n s i o n D a t a T y p e s R D N S e q u e n c e

$rdnSequence ) ;

57

58 /∗ ∗59 ∗ S h o r t d e s c r i p t i o n o f method a d d E x t e n s i o n

60 ∗61 ∗ @access p u b l i c

62 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

63 ∗ @param E x t e n s i o n

64 ∗ @return v o i d

65 ∗ /

66 p u b l i c f u n c t i o n a d d E x t e n s i o n (

L a b s e c S e c u r i t y C e r t i f i c a t i o n E x t e n s i o n $ e x t e n s i o n ) ;

67

68 /∗ ∗69 ∗ S h o r t d e s c r i p t i o n o f method a d d E x t e n s i o n s

70 ∗71 ∗ @access p u b l i c

72 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

73 ∗ @param a r r a y

74 ∗ @return v o i d

75 ∗ /

76 p u b l i c f u n c t i o n a d d E x t e n s i o n s ( $ e x t e n s i o n s ) ;

77

78 /∗ ∗79 ∗ S h o r t d e s c r i p t i o n o f method s i g n

80 ∗81 ∗ @access p u b l i c

82 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

83 ∗ @param s t r i n g

84 ∗ @param s t r i n g

85 ∗ @return C e r t i f i c a t e R e q u e s t

86 ∗ /

87 p u b l i c f u n c t i o n s i g n ( L a b s e c S e c u r i t y C r y p t o P r i v a t e K e y $ p r i v a t e K e y ,

$hashAlgor i thm , $ e x t r a A r g s = n u l l ) ;

Page 236: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

235

88

89 } /∗ end o f i n t e r f a c e C e r t i f i c a t e R e q u e s t B u i l d e r ∗ /

90

91 ?>

1 <?php

2

3 e r r o r r e p o r t i n g ( E ALL ) ;

4

5 /∗ ∗6 ∗ s g c i − KeyPair . php

7 ∗8 ∗ $ Id$

9 ∗10 ∗ T h i s f i l e i s p a r t o f s g c i .

11 ∗12 ∗ A u t o m a t i c g e n e r a t e d w i t h ArgoUML 0 . 2 4 on 1 4 . 0 8 . 2 0 0 7 , 1 5 : 4 0 : 2 4

13 ∗14 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

15 ∗ /

16

17 i f (0 > vers ion compare ( PHP VERSION , ’5’ ) ) {18 d i e ( ’This file was generated for PHP 5’ ) ;

19 }20

21 /∗ ∗22 ∗ C l a s s e r e s p o n s v e l p e l o g e r e n c i a m e n t o de um par de c h av es

23 ∗24 ∗ @access p u b l i c

25 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

26 ∗ /

27 i n t e r f a c e L a b s e c S e c u r i t y C r y p t o K e y P a i r

28 {29

30 p u b l i c s t a t i c f u n c t i o n l o a d K e y P a i r ( $key , $passwd = n u l l ) ;

31

32 /∗ ∗33 ∗ S e t a a chave como sendo da e n g i n e .

34 ∗35 ∗ @access p u b l i c

36 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

37 ∗ @param L a b s e c S e c u r i t y E n g i n e H s m A e n g i n e

38 ∗ @param s t r i n g O I d e n t i f i c a d o r da chave .

Page 237: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

236

39 ∗ @return L a b s e c C L S e c u r i t y C r y p t o K e y P a i r C L O par de c ha v es

40 ∗ @throws E x c e p t i o n Quando o v a l o r de $keyName f o r nu lo

41 ∗ @throws E x c e p t i o n Quando o a l g o r i t m o da chave da e n g i n e n o f o r

s u p o r t a d a p e l a b i b l i o t e c a

42 ∗ /

43 p u b l i c s t a t i c f u n c t i o n loadKeyPa i rF romEngine (

L a b s e c S e c u r i t y E n g i n e H s m $hsm , $keyName ) ;

44

45 /∗ ∗46 ∗ Re torna a chave p b l i c a

47 ∗48 ∗ @access p u b l i c

49 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

50 ∗ @return L a b s e c S e c u r i t y C r y p t o P u b l i c K e y A chave p b l i c a

51 ∗ /

52 p u b l i c f u n c t i o n g e t P u b l i c K e y ( ) ;

53

54 /∗ ∗55 ∗ Re torna a chave p r i v a d a

56 ∗57 ∗ @access p u b l i c

58 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

59 ∗ @return L a b s e c S e c u r i t y C r y p t o P r i v a t e c K e y A chave p r i v a d a

60 ∗ /

61 p u b l i c f u n c t i o n g e t P r i v a t e K e y ( ) ;

62

63

64 } /∗ end o f KeyPair ∗ /

65

66 ?>

1 <?php

2

3 e r r o r r e p o r t i n g ( E ALL ) ;

4

5 /∗ ∗6 ∗ s g c i − S y m m e t r i c C i p h e r I n t e r f a c e . php

7 ∗8 ∗ $ Id$

9 ∗10 ∗ T h i s f i l e i s p a r t o f s g c i .

11 ∗12 ∗ A u t o m a t i c g e n e r a t e d w i t h ArgoUML 0 . 2 4 on 1 4 . 0 8 . 2 0 0 7 , 1 5 : 4 0 : 2 4

Page 238: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

237

13 ∗14 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

15 ∗ /

16

17 i f (0 > vers ion compare ( PHP VERSION , ’5’ ) ) {18 d i e ( ’This file was generated for PHP 5’ ) ;

19 }20

21 /∗ ∗22 ∗ I n t e r f a c e da c l a s s e S ymme t r i cC ipher

23 ∗24 ∗ @access p u b l i c

25 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

26 ∗ /

27 i n t e r f a c e L a b s e c S e c u r i t y C r y p t o S y m m e t r i c C i p h e r

28 {29 c o n s t ALGORITHM AES 128 = "AES_128" ;

30

31 c o n s t ALGORITHM AES 192 = "AES_192" ;

32

33 c o n s t ALGORITHM AES 256 = "AES_256" ;

34

35 c o n s t ALGORITHM DES = "DES" ;

36

37 c o n s t ALGORITHM DES EDE = "DES_EDE" ;

38

39 c o n s t ALGORITHM DES EDE3 = "DES_EDE3" ;

40

41 c o n s t ALGORITHM RC2 = "RC2" ;

42

43 c o n s t ALGORITHM RC4 = "RC4" ;

44

45

46 c o n s t MODE CBC = "CBC" ;

47

48 c o n s t MODE ECB = "ECB" ;

49

50 c o n s t MODE CFB = "CFB" ;

51

52 c o n s t MODE OFB = "OFB" ;

53

54

55 /∗ ∗

Page 239: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

238

56 ∗ C i f r a um dado com a chave s i m t r i c a in formada ,

57 ∗ u t i l i z a n d o o a l g o r i t m o no modo d e f i n i d o .

58 ∗59 ∗ @access p u b l i c

60 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

61 ∗ @param L a b s e c S e c u r i t y C r y p t o S y m m e t r i c K e y A chave que s e r

u t i l i z a d a

62 ∗ @param s t r i n g O a l g o r i t m o u t i l i z a d o

63 ∗ @param s t r e a m O dado a s e r c i f r a d o

64 ∗ @param s t r i n g O modo de o p e r a o que s e r u t i l i z a d o

65 ∗ @return s t r ea m O dado c i f r a d o

66 ∗ @throws E x c e p t i o n Quando o a l g o r i t m o ou o modo de o p e r a o f o r

i n v l i d o

67 ∗ /

68 p u b l i c f u n c t i o n e n c r y p t ( L a b s e c S e c u r i t y C r y p t o S y m m e t r i c K e y $key , $da ta

,

69 $ a l g o r i t h m = s e l f : :

ALGORITHM DES EDE3 ,

70 $opera t ionMode = s e l f : :

MODE CBC) ;

71

72 /∗ ∗73 ∗ D e c i f r a d o um dado com a chave in formada ,

74 ∗ u t i l i z a n d o o a l g o r i t m o no modo d e f i n i d o .

75 ∗76 ∗ @access p u b l i c

77 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

78 ∗ @param L a b s e c S e c u r i t y C r y p t o S y m m e t r i c K e y A chave que s e r

u t i l i z a d a

79 ∗ @param s t r i n g O a l g o r i t m o u t i l i z a d o

80 ∗ @param s t r e a m O dado a s e r d e c i f r a d o

81 ∗ @param s t r i n g O modo de o p e r a o que s e r u t i l i z a d o

82 ∗ @return s t r ea m O dado d e c i f r a d o

83 ∗ @throws E x c e p t i o n Quando o a l g o r i t m o ou o modo de o p e r a o f o r

i n v l i d o

84 ∗ /

85 p u b l i c f u n c t i o n d e c r y p t ( L a b s e c S e c u r i t y C r y p t o S y m m e t r i c K e y $key , $da ta

,

86 $ a l g o r i t h m = s e l f : :

ALGORITHM DES EDE3 ,

87 $opera t ionMode = s e l f : :

MODE CBC) ;

88

Page 240: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

239

89 } /∗ end o f i n t e r f a c e Symme t r i cC ipher ∗ /

90

91 ?>

1 <?php

2

3 e r r o r r e p o r t i n g ( E ALL ) ;

4

5 /∗ ∗6 ∗ s g c i − Pub l i cKey . php

7 ∗8 ∗ $ Id$

9 ∗10 ∗ T h i s f i l e i s p a r t o f s g c i .

11 ∗12 ∗ A u t o m a t i c g e n e r a t e d w i t h ArgoUML 0 . 2 4 on 1 4 . 0 8 . 2 0 0 7 , 1 5 : 4 0 : 2 4

13 ∗14 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

15 ∗ /

16

17 i f (0 > vers ion compare ( PHP VERSION , ’5’ ) ) {18 d i e ( ’This file was generated for PHP 5’ ) ;

19 }20

21 r e q u i r e o n c e ( ’AssymmetricKey.php’ ) ;

22

23 /∗ ∗24 ∗ C l a s s e a b s t r a t a Pub l i cKey

25 ∗26 ∗ @access p u b l i c

27 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

28 ∗ /

29 a b s t r a c t c l a s s L a b s e c S e c u r i t y C r y p t o P u b l i c K e y

30 e x t e n d s L a b s e c S e c u r i t y C r y p t o A s s y m m e t r i c K e y

31 {32 /∗ ∗33 ∗ C o n s t r u t o r .

34 ∗35 ∗ @access p u b l i c

36 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

37 ∗ @param mixed A chave p r o p r i a m e n t e d i t a

38 ∗ @param s t r i n g O f o r m a t o da chave

39 ∗ @return v o i d

Page 241: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

240

40 ∗ @throws E x c e p t i o n Quando o f o r m a t o in fo rmado f o r i n v l i d o

41 ∗ @throws E x c e p t i o n Quando a chave n o f o r do t i p o v l i d o

42 ∗ /

43 p u b l i c a b s t r a c t f u n c t i o n c o n s t r u c t ( $key , $ f o r m a t = s e l f : : FORMAT PEM) ;

44

45 } /∗ end o f i n t e r f a c e Pub l i cKey ∗ /

46

47 ?>

1 <?php

2

3 e r r o r r e p o r t i n g ( E ALL ) ;

4

5 /∗ ∗6 ∗ s g c i − P r i v a t e K e y . php

7 ∗8 ∗ $ Id$

9 ∗10 ∗ T h i s f i l e i s p a r t o f s g c i .

11 ∗12 ∗ A u t o m a t i c g e n e r a t e d w i t h ArgoUML 0 . 2 4 on 1 4 . 0 8 . 2 0 0 7 , 1 5 : 4 0 : 2 4

13 ∗14 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

15 ∗ /

16

17 i f (0 > vers ion compare ( PHP VERSION , ’5’ ) ) {18 d i e ( ’This file was generated for PHP 5’ ) ;

19 }20

21 r e q u i r e o n c e ( ’AssymmetricKey.php’ ) ;

22

23 /∗ ∗24 ∗ C l a s s e a b s t r a t a P r i v a t e K e y

25 ∗26 ∗ @access p u b l i c

27 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

28 ∗ /

29 a b s t r a c t c l a s s L a b s e c S e c u r i t y C r y p t o P r i v a t e K e y

30 e x t e n d s L a b s e c S e c u r i t y C r y p t o A s s y m m e t r i c K e y

31 {32 p r o t e c t e d $ e n g i n e = n u l l ;

33

34 p r o t e c t e d $keyName = n u l l ;

Page 242: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

241

35

36 /∗ ∗37 ∗ C o n s t r u t o r .

38 ∗39 ∗ @access p u b l i c

40 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

41 ∗ @param mixed A chave p r o p r i a m e n t e d i t a

42 ∗ @param s t r i n g A senha u t i l i z a d a na c i f r a g e m

43 ∗ @param s t r i n g O f o r m a t o da chave

44 ∗ @param L a b s e c S e c u r i t y E n g i n e H s m A Engine que pode s e r u t i l i z a d a

45 ∗ @param s t r i n g O i d e n t i f i c a d o r da chave da Engine

46 ∗ @return v o i d

47 ∗ @throws E x c e p t i o n Quando o f o r m a t o in fo rmado f o r i n v l i d o

48 ∗ @throws E x c e p t i o n Quando a chave f o r i n v l i d a

49 ∗ /

50 p u b l i c a b s t r a c t f u n c t i o n c o n s t r u c t ( $key , $passwd = n u l l , $ f o r m a t =

s e l f : : FORMAT PEM,

51 L a b s e c S e c u r i t y E n g i n e H s m

$hsm = n u l l ,

$keyName = n u l l )

;

52

53 /∗ ∗54 ∗ Re torna a chave c i f r a d a no f o r m a t o PEM

55 ∗56 ∗ @access p u b l i c

57 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

58 ∗ @param s t r i n g A senha u t i l i z a d a na c i f r a g e m

59 ∗ @param s t r i n g O nome do c i f r a d o r u t i l i z a d o

60 ∗ @throws E x c e p t i o n Quando o v a l o r de $passwd f o r nu lo

61 ∗ @throws E x c e p t i o n Quando a chave a inda n o f o i s e t a d a ou e s t i v e r em

Engine

62 ∗ /

63 p u b l i c a b s t r a c t f u n c t i o n ge tEncryp tedPemEncoded ( $passwd ,

64 $ c i p h e r =

L a b s e c S e c u r i t y C r y p t o S y m m e t r i c C i p h e r : :

ALGORITHM DES EDE3) ;

65

66 /∗ ∗67 ∗ V e r i f i c a se a chave e s t armazenada em d i s c o ou em alguma e n g i n e

68 ∗69 ∗ @access p u b l i c

70 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

Page 243: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

242

71 ∗ @return boo l TRUE caso e s t i v e r armazenada em e n g i n e e FALSE em casa

c o n t r r i o

72 ∗ /

73 p u b l i c f u n c t i o n useEng ine ( ) {74 $ r e s u l t = f a l s e ;

75 i f ( $ t h i s−>e n g i n e != n u l l ) {76 $ r e s u l t = t rue ;

77 }78 r e t u r n $ r e s u l t ;

79 }80

81 /∗ ∗82 ∗ Re torna a e n g i n e u t i l i z a d a na chave

83 ∗84 ∗ @access p u b l i c

85 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

86 ∗ @return L a b s e c S e c u r i t y E n g i n e H s m A e n g i n e u t i l i z a d o

87 ∗ @throws E x c e p t i o n Quando a chave a inda n o f o i s e t a d a

88 ∗ @throws E x c e p t i o n Quando a chave n o e s t i v e r armazenada em e n g i n e

89 ∗ /

90 p u b l i c f u n c t i o n g e t E n g i n e ( ) {91 i f ( $ t h i s−>useEng ine ( ) ) {92 r e t u r n $ t h i s−>e n g i n e ;

93 } e l s e {94 th row new E x c e p t i o n ( ’A chave ainda n o e s t armazenada

em uma Engine’ ) ;

95 }96 }97

98 /∗ ∗99 ∗ Re torna o i d e n t i f i c a d o r da chave armazenada em e n g i n e

100 ∗101 ∗ @access p u b l i c

102 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

103 ∗ @return s t r i n g O i d e n t i f i c a d o r da chave

104 ∗ @throws E x c e p t i o n Quando a chave a inda n o f o i s e t a d a

105 ∗ @throws E x c e p t i o n Quando a chave n o e s t i v e r armazenada em e n g i n e

106 ∗ /

107 p u b l i c f u n c t i o n getKeyName ( ) {108 i f ( $ t h i s−>useEng ine ( ) ) {109 r e t u r n ( s t r i n g ) $ t h i s−>keyName ;

110 } e l s e {

Page 244: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

243

111 th row new E x c e p t i o n ( ’A chave ainda n o e s t armazenada

em uma Engine’ ) ;

112 }113 }114

115 } /∗ end o f i n t e r f a c e P r i v a t e K e y ∗ /

116

117 ?>

1 <?php

2

3 e r r o r r e p o r t i n g ( E ALL ) ;

4

5 /∗ ∗6 ∗ s g c i − Assymmetr icKey . php

7 ∗8 ∗ $ Id$

9 ∗10 ∗ T h i s f i l e i s p a r t o f s g c i .

11 ∗12 ∗ A u t o m a t i c g e n e r a t e d w i t h ArgoUML 0 . 2 4 on 1 4 . 0 8 . 2 0 0 7 , 1 5 : 4 0 : 2 4

13 ∗14 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

15 ∗ /

16

17 i f (0 > vers ion compare ( PHP VERSION , ’5’ ) ) {18 d i e ( ’This file was generated for PHP 5’ ) ;

19 }20

21 r e q u i r e o n c e ( ’Labsec/Security/Util/Converters.php’ ) ;

22

23 /∗ ∗24 ∗ C l a s s e a b s t r a t a Assymmetr icKey

25 ∗26 ∗ @access p u b l i c

27 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

28 ∗ /

29 a b s t r a c t c l a s s L a b s e c S e c u r i t y C r y p t o A s s y m m e t r i c K e y

30 {31 c o n s t ALGORITHM RSA = "RSA" ;

32

33 c o n s t ALGORITHM DSA = "DSA" ;

34

Page 245: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

244

35 c o n s t FORMAT PEM = "PEM" ;

36

37 c o n s t FORMAT DER = "DER" ;

38

39 c o n s t SIZE DEFAULT = 1024 ;

40

41 p r o t e c t e d $ a l g o r i t h m ;

42

43 p r o t e c t e d $ f o r m a t = s e l f : : FORMAT PEM;

44

45 p r o t e c t e d $key = n u l l ;

46

47 p r o t e c t e d $ s i z e = s e l f : : SIZE DEFAULT ;

48

49 /∗ ∗50 ∗ Re torna a chave no f o r m a t o DER

51 ∗52 ∗ @access p u b l i c

53 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

54 ∗ @return mixed A chave no f o r m a t o DER

55 ∗ @throws E x c e p t i o n Quando a chave a inda n o f o i s e t a d a ou e s t i v e r em

Engine

56 ∗ /

57 p u b l i c f u n c t i o n ge tDerEncoded ( )

58 {59 $ r e s u l t = n u l l ;

60 i f ( $ t h i s−>key != n u l l ) {61 / / v e r i f i c a o f o r m a t o a t u a l da chave

62 i f ( $ t h i s−>f o r m a t == L a b s e c S e c u r i t y C r y p t o A s s y m m e t r i c K e y

: : FORMAT DER) {63 $ r e s u l t = $ t h i s−>key ;

64

65 } e l s e i f ( $ t h i s−>f o r m a t ==

L a b s e c S e c u r i t y C r y p t o A s s y m m e t r i c K e y : : FORMAT PEM) {66 $ t y p e = $ t h i s−>g e t C o n v e r t e r s T y p e ( ) ;

67 $ r e s u l t = L a b s e c S e c u r i t y U t i l C o n v e r t e r s : :

pemToDer ( $ t h i s−>key , $ t y p e ) ;

68 }69 } e l s e {70 th row new E x c e p t i o n ( ’A chave ainda n o foi setada. O

atributo key nulo. A chave pode estar armazenada em

uma Engine.’ ) ;

71 }

Page 246: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

245

72 r e t u r n $ r e s u l t ;

73 }74

75 /∗ ∗76 ∗ Re torna a chave no f o r m a t o PEM

77 ∗78 ∗ @access p u b l i c

79 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

80 ∗ @return mixed A chave no f o r m a t o PEM

81 ∗ @throws E x c e p t i o n Quando a chave a inda n o f o i s e t a d a ou e s t i v e r em

Engine

82 ∗ /

83 p u b l i c f u n c t i o n getPemEncoded ( )

84 {85 $ r e s u l t = n u l l ;

86 i f ( $ t h i s−>key != n u l l ) {87 / / v e r i f i c a o f o r m a t o a t u a l da chave

88 i f ( $ t h i s−>f o r m a t == L a b s e c S e c u r i t y C r y p t o A s s y m m e t r i c K e y

: : FORMAT PEM) {89 $ r e s u l t = $ t h i s−>key ;

90

91 } e l s e i f ( $ t h i s−>f o r m a t ==

L a b s e c S e c u r i t y C r y p t o A s s y m m e t r i c K e y : : FORMAT DER) {92 $ t y p e = $ t h i s−>g e t C o n v e r t e r s T y p e ( ) ;

93 $ r e s u l t = L a b s e c C L S e c u r i t y U t i l C o n v e r t e r s

: : derToPem ( $ t h i s−>key , $ t y p e ) ;

94 }95 } e l s e {96 th row new E x c e p t i o n ( ’A chave ainda n o foi setada. O

atributo key nulo. A chave pode estar armazenada em

uma Engine.’ ) ;

97 }98 r e t u r n $ r e s u l t ;

99 }100

101 /∗ ∗102 ∗ Re torna o a l g o r i t m o u t i l i z a d o na chave

103 ∗104 ∗ @access p u b l i c

105 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

106 ∗ @return s t r i n g O a l g o r i t m o u t i l i z a d o

107 ∗ @throws E x c e p t i o n Quando a chave a inda n o f o i s e t a d a ou e s t i v e r em

Engine

Page 247: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

246

108 ∗ /

109 p u b l i c f u n c t i o n g e t A l g o r i t h m ( )

110 {111 i f ( $ t h i s−>key != n u l l ) {112 r e t u r n ( s t r i n g ) $ t h i s−>a l g o r i t h m ;

113 } e l s e {114 th row new E x c e p t i o n ( ’A chave ainda n o foi setada. O

atributo key nulo. A chave pode estar armazenada em

uma Engine.’ ) ;

115 }116 }117

118 /∗ ∗119 ∗ Re torna o f o r m a t o da chave

120 ∗121 ∗ @access p u b l i c

122 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

123 ∗ @return s t r i n g O f o r m a t o da chave

124 ∗ @throws E x c e p t i o n Quando a chave a inda n o f o i s e t a d a ou e s t i v e r em

Engine

125 ∗ /

126 p u b l i c f u n c t i o n g e t F o r m a t ( )

127 {128 i f ( $ t h i s−>key != n u l l ) {129 r e t u r n ( s t r i n g ) $ t h i s−>f o r m a t ;

130 } e l s e {131 th row new E x c e p t i o n ( ’A chave ainda n o foi setada. O

atributo key nulo. A chave pode estar armazenada em

uma Engine.’ ) ;

132 }133 }134

135 /∗ ∗136 ∗ Re torna o tamanho da chave

137 ∗138 ∗ @access p u b l i c

139 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

140 ∗ @return i n t O tamanho da chave

141 ∗ @throws E x c e p t i o n Quando a chave a inda n o f o i s e t a d a ou e s t i v e r em

Engine

142 ∗ /

143 p u b l i c f u n c t i o n g e t S i z e ( )

144 {

Page 248: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

247

145 i f ( $ t h i s−>key != n u l l ) {146 r e t u r n ( i n t ) $ t h i s−>s i z e ;

147 } e l s e {148 th row new E x c e p t i o n ( ’A chave ainda n o foi setada. O

atributo key nulo. A chave pode estar armazenada em

uma Engine.’ ) ;

149 }150 }151

152 /∗ ∗153 ∗ Re torna a c o n s t a n t e da c l a s s e C o n v e r t e r s que deve s e r passada como

p a r m e t r o

154 ∗155 ∗ @access p r i v a t e

156 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

157 ∗ @return i n t A c o n s t a n t e

158 ∗ /

159 p r i v a t e f u n c t i o n g e t C o n v e r t e r s T y p e ( ) {160 i f ( $ t h i s i n s t a n c e O f L a b s e c S e c u r i t y C r y p t o P u b l i c K e y ) {161 $ t y p e = L a b s e c S e c u r i t y U t i l C o n v e r t e r s : : PUBLIC KEY ;

162 } e l s e i f ( $ t h i s i n s t a n c e O f L a b s e c S e c u r i t y C r y p t o P r i v a t e K e y ) {163 i f ( $ t h i s−>g e t A l g o r i t h m ( ) == s e l f : : ALGORITHM RSA) {164 $ t y p e = L a b s e c S e c u r i t y U t i l C o n v e r t e r s : :

PRIVATE KEY RSA ;

165 } e l s e i f ( $ t h i s−>g e t A l g o r i t h m ( ) == s e l f : : ALGORITHM DSA) {166 $ t y p e = L a b s e c S e c u r i t y U t i l C o n v e r t e r s : :

PRIVATE KEY DSA ;

167 }168 }169 r e t u r n $ t y p e ;

170 }171 } /∗ end o f i n t e r f a c e Assymmetr icKey ∗ /

172

173 ?>

1 <?php

2

3 e r r o r r e p o r t i n g ( E ALL ) ;

4

5 /∗ ∗6 ∗ s g c i − A s s y m m e t r i c C i p h e r I n t e r f a c e . php

7 ∗8 ∗ $ Id$

Page 249: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

248

9 ∗10 ∗ T h i s f i l e i s p a r t o f s g c i .

11 ∗12 ∗ A u t o m a t i c g e n e r a t e d w i t h ArgoUML 0 . 2 4 on 1 4 . 0 8 . 2 0 0 7 , 1 5 : 4 0 : 2 4

13 ∗14 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

15 ∗ /

16

17 i f (0 > vers ion compare ( PHP VERSION , ’5’ ) ) {18 d i e ( ’This file was generated for PHP 5’ ) ;

19 }20

21 /∗ ∗22 ∗ I n t e r f a c e da c l a s s e A s s y m m e t r i c C i p h e r

23 ∗24 ∗ @access p u b l i c

25 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

26 ∗ /

27 i n t e r f a c e L a b s e c S e c u r i t y C r y p t o A s s y m m e t r i c C i p h e r

28 {29

30 /∗ ∗31 ∗ C i f r a um dado com a chave p b l i c a in formada ,

32 ∗ u t i l i z a n d o o a l g o r i t m o no modo d e f i n i d o .

33 ∗34 ∗ @access p u b l i c

35 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

36 ∗ @param L a b s e c S e c u r i t y C r y p t o R S A P u b l i c K e y A chave p b l i c a que

s e r u t i l i z a d a

37 ∗ @param s t r e a m O dado a s e r c i f r a d o

38 ∗ @return s t r ea m O dado c i f r a d o

39 ∗ @throws E x c e p t i o n Quando o a l g o r i t m o f o r i n v l i d o

40 ∗ /

41 p u b l i c f u n c t i o n e n c r y p t ( L a b s e c S e c u r i t y C r y p t o P u b l i c K e y $key , $ d a t a ) ;

42

43 /∗ ∗44 ∗ D e c i f r a d o um dado com a chave p r i v a d a in formada ,

45 ∗ u t i l i z a n d o o a l g o r i t m o no modo d e f i n i d o .

46 ∗47 ∗ @access p u b l i c

48 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

49 ∗ @param L a b s e c S e c u r i t y C r y p t o R S A P r i v a t e K e y A chave p r i v a d a que

s e r u t i l i z a d a

Page 250: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

249

50 ∗ @param s t r ea m O dado a s e r d e c i f r a d o

51 ∗ @param s t r i n g A senha u t i l i z a d a

52 ∗ @return s t r e a m O dado d e c i f r a d o

53 ∗ @throws E x c e p t i o n Quando o a l g o r i t m o f o r i n v l i d o

54 ∗ /

55 p u b l i c f u n c t i o n d e c r y p t ( L a b s e c S e c u r i t y C r y p t o P r i v a t e K e y $key ,

56 $da ta , $passwd = n u l l ) ;

57

58 } /∗ end o f i n t e r f a c e A s s y m m e t r i c C i p h e r ∗ /

59

60 ?>

1 <?php

2

3 e r r o r r e p o r t i n g ( E ALL ) ;

4

5 /∗ ∗6 ∗ s g c i − K e y P a i r B u i l d e r . php

7 ∗8 ∗ $ Id$

9 ∗10 ∗ T h i s f i l e i s p a r t o f s g c i .

11 ∗12 ∗ A u t o m a t i c g e n e r a t e d w i t h ArgoUML 0 . 2 4 on 1 4 . 0 8 . 2 0 0 7 , 1 5 : 4 0 : 2 4

13 ∗14 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

15 ∗ /

16

17 i f (0 > vers ion compare ( PHP VERSION , ’5’ ) ) {18 d i e ( ’This file was generated for PHP 5’ ) ;

19 }20

21 /∗ ∗22 ∗ C l a s s e r e s p o n s v e l p e l a c o n s t r u o de um par de c h av es

23 ∗24 ∗ @access p u b l i c

25 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

26 ∗ /

27 i n t e r f a c e L a b s e c S e c u r i t y C r y p t o K e y P a i r B u i l d e r

28 {29

30 /∗ ∗31 ∗ C o n s t r u t o r

Page 251: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

250

32 ∗33 ∗ @access p u b l i c

34 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

35 ∗ @param s t r i n g O a l g o r i t m o da chave

36 ∗ @return v o i d

37 ∗ @throws E x c e p t i o n Quando o t i p o da chave f o r i n v l i d o

38 ∗ /

39 p u b l i c f u n c t i o n c o n s t r u c t ( $ a l g o r i t h m ) ;

40

41 /∗ ∗42 ∗ S e t a o c i f r a d o r que s e r u t i l i z a d o para c i f r a r o par de ch a ve s

43 ∗44 ∗ @access p u b l i c

45 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

46 ∗ @param s t r i n g O nome do c i f r a d o r que s e r u t i l i z a d o

47 ∗ @return v o i d

48 ∗ @throws E x c e p t i o n Quando o a l g o r i t m o n o f o r um a l g o r i t m o

s i m t r i c o v l i d o

49 ∗ /

50 p u b l i c f u n c t i o n s e t C i p h e r ( $ c i p h e r ) ;

51

52 /∗ ∗53 ∗ S e t a a senha que s e r u t i l i z a d a para c i f r a r o par de ch a ve s que

s e r gerada

54 ∗55 ∗ @access p u b l i c

56 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

57 ∗ @param s t r i n g A senha

58 ∗ @return v o i d

59 ∗ /

60 p u b l i c f u n c t i o n s e t P a s s w d ( $passwd ) ;

61

62 /∗ ∗63 ∗ S e t a o tamanho do par de ch av es que s e r gerado

64 ∗65 ∗ @access p u b l i c

66 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

67 ∗ @param i n t O tamanho da chave

68 ∗ @return v o i d

69 ∗ @throws E x c e p t i o n Quando o tamanho da chave f o r menos ou i g u a l a 0

70 ∗ /

71 p u b l i c f u n c t i o n s e t S i z e ( $ s i z e ) ;

72

Page 252: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

251

73 /∗ ∗74 ∗ S e t a a e n g i n e e o i d e n t i f i c a d o r da chave que s e r u t i l i z a d o

75 ∗76 ∗ @access p u b l i c

77 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

78 ∗ @param L a b s e c S e c u r i t y E n g i n e H s m A e n g i n e que s e r u t i l i z a d o

79 ∗ @param s t r i n g O i d e n t i f i c a d o r da chave

80 ∗ @return v o i d

81 ∗ @throws E x c e p t i o n Quando o i d e n t i f i c a d o r da chave f o r nu lo

82 ∗ /

83 p u b l i c f u n c t i o n s e t E n g i n e ( L a b s e c S e c u r i t y E n g i n e H s m $engine , $keyName )

;

84

85 /∗ ∗86 ∗ Re torna o par de ch av es c r i a d o

87 ∗88 ∗ @access p u b l i c

89 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

90 ∗ @param s t r i n g argumentos e x t r a s para serem u t i l i z a d o s

91 ∗ @return L a b s e c C L S e c u r i t y C r y p t o K e y P a i r C L O par de c ha v es

92 ∗ @throws E x c e p t i o n Quando o t i p o da chave f o r i n v l i d o

93 ∗ /

94 p u b l i c f u n c t i o n g e t K e y P a i r ( $ e x t r a A r g s = n u l l ) ;

95

96 } /∗ end o f K e y P a i r B u i l d e r ∗ /

97

98 ?>

1 <?php

2

3 e r r o r r e p o r t i n g ( E ALL ) ;

4

5 /∗ ∗6 ∗ s g c i − S i g n e r I n t e r f a c e . php

7 ∗8 ∗ $ Id$

9 ∗10 ∗ T h i s f i l e i s p a r t o f s g c i .

11 ∗12 ∗ A u t o m a t i c g e n e r a t e d w i t h ArgoUML 0 . 2 4 on 1 4 . 0 8 . 2 0 0 7 , 1 5 : 4 0 : 2 4

13 ∗14 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

15 ∗ /

Page 253: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

252

16

17 i f (0 > vers ion compare ( PHP VERSION , ’5’ ) ) {18 d i e ( ’This file was generated for PHP 5’ ) ;

19 }20

21 /∗ ∗22 ∗ I n t e r f a c e da c l a s s e S i g n e r

23 ∗24 ∗ @access p u b l i c

25 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

26 ∗ /

27 i n t e r f a c e L a b s e c S e c u r i t y C r y p t o S i g n e r

28 {29 /∗ ∗30 ∗ A s s i n a o hash de um dado

31 ∗32 ∗ @access p u b l i c

33 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

34 ∗ @param s t r i n g O a l g o r i t m o que s e r u t i l i z a d o na a s s i n a t u r a

35 ∗ @param L a b s e c S e c u r i t y C r y p t o P r i v a t e K e y A chave p r i v a d a no f o r m a t o

PEM

36 ∗ @param s t r e a m O hash do dado

37 ∗ @param s t r i n g A senha da chave p r i v a d a

38 ∗ @return s t r ea m O hash a s s i n a d o

39 ∗ @throws E x c e p t i o n Quando o a l g o r i t m o de a s s i n a t u r a n o f o r v l i d o

40 ∗ /

41 p u b l i c f u n c t i o n s i g n ( $ s i g n A l g o r i t h m ,

42 L a b s e c S e c u r i t y C r y p t o P r i v a t e K e y

$ p r i v a t e K e y ,

43 $hash , $passwd = NULL) ;

44

45 /∗ ∗46 ∗ V e r i f i c a a a s s i n a t u r a de um hash

47 ∗48 ∗ @access p u b l i c

49 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

50 ∗ @param s t r ea m O hash a s s i n a d o

51 ∗ @param s t r i n g O a l g o r i t m o que f o i u t i l i z a d o na a s s i n a t u r a

52 ∗ @param s t r ea m O hash do a r q u i v o o r i g i n a l

53 ∗ @param L a b s e c S e c u r i t y C r y p t o P u b l i c K e y A chave p b l i c a no f o r m a t o

PEM

54 ∗ @return boo lean TRUE caso o v a l o r de $ s i g n a t u r e s e j a i g u a l

a s s i n a t u r a do $hash ,

Page 254: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

253

55 ∗ FALSE caso s e j a d i f e r e n t e

56 ∗ /

57 p u b l i c f u n c t i o n v e r i f y ( $ s i g n a t u r e , $ s i g n A l g o r i t h m , $hash ,

58 L a b s e c S e c u r i t y C r y p t o P u b l i c K e y

$pub l i cKey ) ;

59

60 } /∗ end o f i n t e r f a c e S i g n e r ∗ /

61

62 ?>

1 <?php

2

3 e r r o r r e p o r t i n g ( E ALL ) ;

4

5 /∗ ∗6 ∗ s g c i − M e s s a g e D i g e s t I n t e r f a c e . php

7 ∗8 ∗ $ Id$

9 ∗10 ∗ T h i s f i l e i s p a r t o f s g c i .

11 ∗12 ∗ A u t o m a t i c g e n e r a t e d w i t h ArgoUML 0 . 2 4 on 1 4 . 0 8 . 2 0 0 7 , 1 5 : 4 0 : 2 4

13 ∗14 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

15 ∗ /

16

17 i f (0 > vers ion compare ( PHP VERSION , ’5’ ) ) {18 d i e ( ’This file was generated for PHP 5’ ) ;

19 }20

21 /∗ ∗22 ∗ I n t e r f a c e da c l a s s e MessageDiges t .

23 ∗24 ∗ @access p u b l i c

25 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

26 ∗ /

27 i n t e r f a c e L a b s e c S e c u r i t y C r y p t o M e s s a g e D i g e s t

28 {29 /∗ ∗30 ∗ C o n s t r u t o r

31 ∗ C o n s t r o i um o b j e t o L a b s e c C L S e c u r i t y C r y p t o M e s s a g e D i g e s t C L

32 ∗33 ∗ @access p u b l i c

Page 255: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

254

34 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

35 ∗ @return v o i d

36 ∗ /

37 p u b l i c f u n c t i o n c o n s t r u c t ( ) ;

38

39 /∗ ∗40 ∗ I n i c i a l i z a e s t r u t u r a s de resumos do OpenSSL

41 ∗42 ∗ @access p u b l i c

43 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

44 ∗ @param s t r i n g A l g o r i t m o de resumo

45 ∗ @return v o i d

46 ∗ @throws E x c e p t i o n Quando o e s t a d o do s i s t e m a n o f o r v l i d o

47 ∗ @throws E x c e p t i o n Quando o a l g o r i t m o n o f o r v l i d o

48 ∗ /

49 p u b l i c f u n c t i o n i n i t ( $ h a s h A l g o r i t h m = s e l f : : ALGORITHM SHA1) ;

50

51 /∗ ∗52 ∗ D e f i n e o c o n t e d o de e n t r a d a f u n o de resumo

53 ∗54 ∗ @access p u b l i c

55 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

56 ∗ @param s t r i n g C o n t e d o para resumo

57 ∗ @return v o i d

58 ∗ @throws E x c e p t i o n Quando o e s t a d o do s i s t e m a n o f o r v l i d o

59 ∗ /

60 p u b l i c f u n c t i o n u p d a t e ( $ d a t a ) ;

61

62 /∗ ∗63 ∗ R e a l i z a resumo c r i p t o g r f i c o .

64 ∗ Caso $da ta f o r d i f e r e n t e de NULL , r e a l i z a a t u a l i z a o do c o n t e x t o

65 ∗ e f a z resumo c r i p t o g r f i c o . E q u i v a l e n t e a f a z e r up da t e ( $da ta ) e , em

66 ∗ segu ida , d o F i n a l ( )

67 ∗68 ∗ @access p u b l i c

69 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

70 ∗ @param s t r i n g C o n t e d o para resumo

71 ∗ @return s t r i n g O resumo c a l c u l a d o

72 ∗ @throws E x c e p t i o n Quando o e s t a d o do s i s t e m a n o f o r v l i d o

73 ∗ /

74 p u b l i c f u n c t i o n d o F i n a l ( $ d a t a = n u l l ) ;

75

76 /∗ ∗

Page 256: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

255

77 ∗ Re torna a l g o r i t m o de resumo s e l e c i o n a d o

78 ∗79 ∗ @access p u b l i c

80 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

81 ∗ @return s t r i n g A l g o r i t m o de resumo s e l e c i o n a d o

82 ∗ /

83 p u b l i c f u n c t i o n g e t A l g o r i t h m ( ) ;

84

85

86

87 } /∗ end o f i n t e r f a c e MessageDiges t ∗ /

88

89 ?>

1 <?php

2 / / DOC t e r m i n a r d o c u m e n t a o

3

4 e r r o r r e p o r t i n g ( E ALL ) ;

5

6 /∗ ∗7 ∗ s g c i − S y m m e t r i c K e y I n t e r f a c e . php

8 ∗9 ∗ $ Id$

10 ∗11 ∗ T h i s f i l e i s p a r t o f s g c i .

12 ∗13 ∗ A u t o m a t i c g e n e r a t e d w i t h ArgoUML 0 . 2 4 on 1 4 . 0 8 . 2 0 0 7 , 1 5 : 4 0 : 2 4

14 ∗15 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

16 ∗ /

17

18 i f (0 > vers ion compare ( PHP VERSION , ’5’ ) ) {19 d i e ( ’This file was generated for PHP 5’ ) ;

20 }21

22 r e q u i r e o n c e ( ’LabsecCL/Security/Crypto/SymmetricCipherCL.php’ ) ;

23

24 /∗ ∗25 ∗ I n t e r f a c e da c l a s s e Symmetr icKey

26 ∗27 ∗ @access p u b l i c

28 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

29 ∗ /

Page 257: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

256

30 i n t e r f a c e L a b s e c S e c u r i t y C r y p t o S y m m e t r i c K e y

31 {32

33 c o n s t SIZE DEFAULT = 1024 ;

34

35 /∗ ∗36 ∗ Gera uma chave s i m t r i c a

37 ∗38 ∗ @access p u b l i c

39 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

40 ∗ @param s t r i n g O a l g o r i t m o que s e r u t i l i z a d o na g e r a o

41 ∗ @param i n t O tamanho da chave que s e r gerada

42 ∗ @return v o i d

43 ∗ @throws E x c e p t i o n Quando o tamanho da chave n o f o r v l i d o

44 ∗ /

45 p u b l i c f u n c t i o n gene ra t eSymmet r i cKey ( $ s i z e = s e l f : : SIZE DEFAULT ,

46 $ a l g o r i t h m =

L a b s e c S e c u r i t y C r y p t o S y m m e t r i c C i p h e r : :

ALGORITHM DES EDE3) ;

47

48 /∗ ∗49 ∗ S e t a uma chave com os s e u s p a r m e t r o s

50 ∗51 ∗ @access p u b l i c

52 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

53 ∗ @param mixed A chave p r o p r i a m e n t e d i t a

54 ∗ @param s t r i n g O a l g o r i t m o u t i l i z a d o na chave

55 ∗ @param i n t O tamanho da chave

56 ∗ @param s t r i n g O f o r m a t o da chave

57 ∗ @return v o i d

58 ∗ @throws E x c e p t i o n Quando o tamanho da chave in fo rmado f o r i n v l i d o

59 ∗ /

60 p u b l i c f u n c t i o n loadKey ( $key , $ s i z e = s e l f : : SIZE DEFAULT ,

61 $ a l g o r i t h m =

L a b s e c S e c u r i t y C r y p t o S y m m e t r i c C i p h e r : :

ALGORITHM DES EDE3) ;

62

63 /∗ ∗64 ∗ Re torna a chave

65 ∗66 ∗ @access p u b l i c

67 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

68 ∗ @return s t r i n g A chave

Page 258: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

257

69 ∗ /

70 p u b l i c f u n c t i o n ge tEncoded ( ) ;

71

72 /∗ ∗73 ∗ Re torna o a l g o r i t m o u t i l i z a d o na chave

74 ∗75 ∗ @access p u b l i c

76 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

77 ∗ @return s t r i n g O a l g o r i t m o u t i l i z a d o

78 ∗ /

79 p u b l i c f u n c t i o n g e t A l g o r i t h m ( ) ;

80

81 /∗ ∗82 ∗ Re torna o tamanho da chave

83 ∗84 ∗ @access p u b l i c

85 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

86 ∗ @return i n t O tamanho da chave

87 ∗ /

88 p u b l i c f u n c t i o n g e t S i z e ( ) ;

89

90 } /∗ end o f i n t e r f a c e Symmetr icKey ∗ /

91

92 ?>

1 <?php

2 / / TODO FAZER DOCUMENTA O

3

4 e r r o r r e p o r t i n g ( E ALL ) ;

5

6 /∗ ∗7 ∗ s g c i − c l a s s . C o n v e r t e r s . php

8 ∗9 ∗ $ Id$

10 ∗11 ∗ T h i s f i l e i s p a r t o f s g c i .

12 ∗13 ∗ A u t o m a t i c g e n e r a t e d w i t h ArgoUML 0 . 2 4 on 1 4 . 0 8 . 2 0 0 7 , 1 7 : 0 8 : 4 5

14 ∗15 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

16 ∗ /

17

18 i f (0 > vers ion compare ( PHP VERSION , ’5’ ) ) {

Page 259: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

258

19 d i e ( ’This file was generated for PHP 5’ ) ;

20 }21

22 /∗ ∗23 ∗ C l a s s e u t i l i t r i a com c o n v e r s o r e s

24 ∗25 ∗ @access p u b l i c

26 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

27 ∗ /

28 c l a s s L a b s e c S e c u r i t y U t i l C o n v e r t e r s

29 {30 c o n s t CERTIFICATE = 1 ;

31

32 c o n s t REQUEST = 2 ;

33

34 c o n s t PRIVATE KEY RSA = 3 ;

35

36 c o n s t PRIVATE KEY DSA = 4 ;

37

38 c o n s t PUBLIC KEY = 5 ;

39

40 c o n s t CRL = 6 ;

41

42 p u b l i c s t a t i c f u n c t i o n pemToDer(& $da ta , $ t y p e ) {43

44 / / pega o i n c i o e f i m

45 s wi t c h ( $ t y p e ) {46 case 1 :

47 $beg in = "CERTIFICATE -----" ;

48 $end = "-----END" ;

49 break ;

50

51 case 2 :

52 / / TODO TERMINAR

53 ;

54 break ;

55

56 case (3 o r 4 o r 5 ) :

57 $beg in = "KEY-----" ;

58 $end = "-----END" ;

59 break ;

60

61 case 6 :

Page 260: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

259

62 $beg in = "X509 CRL-----" ;

63 $end = "-----END" ;

64 break ;

65

66 d e f a u l t :

67 th row new E x c e p t i o n ( ’ P a r m e t r o type

i n v l i d o .’ ) ;

68 break ;

69 }70

71 / / f a z a c o n v e r s o

72 $pem data = s u b s t r ( $da ta , s t r p o s ( $da ta , $b eg in ) + s t r l e n (

$be g i n ) ) ;

73 $pem data = s u b s t r ( $pem data , 0 , s t r p o s ( $pem data , $end ) ) ;

74 $d e r = base64 decode ( $pem data ) ;

75

76 r e t u r n $de r ;

77 }78

79 p u b l i c s t a t i c f u n c t i o n derToPem(& $da ta , $ t y p e ) {80

81 / / pega o i n c i o e f i m

82 s wi t c h ( $ t y p e ) {83 case 1 :

84 $ p e m I n i c i o = "-----BEGIN CERTIFICATE -----" ;

85 $pemFina l = "-----END CERTIFICATE -----" ;

86 break ;

87

88 case 2 :

89 / / TODO TERMINAR

90 ;

91 break ;

92

93 case 3 :

94 $beg in = "-----BEGIN RSA PRIVATE KEY-----" ;

95 $end = "-----END RSA PRIVATE KEY-----" ;

96 break ;

97

98 case 4 :

99 $beg in = "-----BEGIN DSA PRIVATE KEY-----" ;

100 $end = "-----END DSA PRIVATE KEY-----" ;

101 break ;

102

Page 261: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

260

103 case 5 :

104 $beg in = "-----BEGIN PUBLIC KEY-----" ;

105 $end = "-----END PUBLIC KEY-----" ;

106 break ;

107

108 case 6 :

109 $beg in = "-----BEGIN X509 CRL-----" ;

110 $end = "-----END X509 CRL-----" ;

111 break ;

112

113 d e f a u l t :

114 th row new E x c e p t i o n ( ’ P a r m e t r o type

i n v l i d o .’ ) ;

115 break ;

116 }117

118 / / f a z a c o n v e r s o

119 $pem = c h u n k s p l i t ( base64 encode ( $ d a t a ) , 64 , "\n" ) ;

120 $pem = $b eg in . "\n" . $pem . $end . "\n" ;

121

122 r e t u r n $pem ;

123 }124 }125

126 ?>

1 <?php

2

3 e r r o r r e p o r t i n g ( E ALL ) ;

4

5 /∗ ∗6 ∗ s g c i − LDAP . php

7 ∗8 ∗ $ Id$

9 ∗10 ∗ T h i s f i l e i s p a r t o f s g c i .

11 ∗12 ∗ A u t o m a t i c g e n e r a t e d w i t h ArgoUML 0 . 2 4 on 1 4 . 0 8 . 2 0 0 7 , 1 5 : 4 0 : 0 0

13 ∗14 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

15 ∗ /

16

17 i f (0 > vers ion compare ( PHP VERSION , ’5’ ) ) {

Page 262: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

261

18 d i e ( ’This file was generated for PHP 5’ ) ;

19 }20 /∗ ∗21 ∗ C l a s s e r e s p o n s v e l p e l o s u p o r t e a LDAP

22 ∗23 ∗ @access p u b l i c

24 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

25 ∗ /

26 c l a s s Labsec Ut i l LDAP

27 {28 /∗ ∗29 ∗ M t o d o r e s p o n s v e l p e l a g e r a o do a r q u i v o LDIF

30 ∗31 ∗ @access p u b l i c

32 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

33 ∗ @param a r r a y Um a r r a y de o b j e t o s

L a b s e c S e c u r i t y C e r t i f i c a t i o n C e r t i f i c a t e

34 ∗ @param s t r i n g r v o r e de d i r e t r i o s , da AC , que s e r i n s e r i d o no

a r q u i v o l d i f

35 ∗ um exemplo s e r i a : ”dc=l a b s e c , dc=u f s c , dc=br ”

36 ∗ @return s t r i n g O t e x t o para o a r q u i v o l d i f

37 ∗ /

38 p u b l i c f u n c t i o n g e t L d i f ( $ c e r t i f i c a d o s , $ d i r e t o r i o A r v o r e )

39 {40 $ r e g i s t r o s = "" ;

41 $cn = "" ;

42 $sn = "" ;

43 $mai l = "" ;

44

45 $o id = new L a b s e c S e c u r i t y C e r t i f i c a t i o n O b j e c t I d e n t i f i e r F a c t o r y ( ) ;

46 $ b a s i c C o n s t r a i n t s = $oid−>g e t O b j e c t I d e n t i f i e r (

47 L a b s e c S e c u r i t y C e r t i f i c a t i o n O b j e c t I d e n t i f i e r F a c t o r y

: : EXTENSION BASIC CONSTRAINTS ) ;

48

49 / / I n s e r e as e n t r a d a s c o r r e s p o n d e n t e s aos c e r t i f i c a d o s

50 foreach ( $ c e r t i f i c a d o s as $ c e r t i f i c a d o ) {51

52 / / Guarda v a l o r TRUE , caso o c e r t i f i c a d o f o r de uma CA ,

FALSE caso c o n t r r i o

53 $isCA = $ c e r t i f i c a d o −>g e t E x t e n s i o n ( $ b a s i c C o n s t r a i n t s )−>isCA

( ) ;

54

55 / / Pega o PRIMEIRO campo COMMON NAME do c e r t i f i c a d o

Page 263: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

262

56 / / TODO pode e x i s t i r mais de um campo cn , por exemplo ,

r e f e r e n t e a um mesmo c e r t i f i c a d o no l d i f ???

57 $ r d n s = $ c e r t i f i c a d o −>g e t S u b j e c t ( )−>g e t E n t r i e s ( ) ;

58 foreach ( $ r d n s as $chaveCN )

59 {60 i f ( $chaveCN [ ’type’ ] ==

L a b s e c S e c u r i t y C e r t i f i c a t i o n D a t a T y p e s R D N S e q u e n c e

: :COMMON NAME) {61 $cn = $chaveCN [ ’value’ ] ;

62 break ;

63 }64 }65

66 / / Pega o PRIMEIRO campo SURNAME do c e r t i f i c a d o

67 / / TODO pode e x i s t i r mais de um campo cn , por exemplo ,

r e f e r e n t e a um mesmo c e r t i f i c a d o no l d i f ???

68 $ r d n s = $ c e r t i f i c a d o −>g e t S u b j e c t ( )−>g e t E n t r i e s ( ) ;

69 foreach ( $ r d n s as $chaveCN )

70 {71 i f ( $chaveCN [ ’type’ ] ==

L a b s e c S e c u r i t y C e r t i f i c a t i o n D a t a T y p e s R D N S e q u e n c e

: :COMMON NAME) {72 $cn = $chaveCN [ ’value’ ] ;

73 break ;

74 }75 }76

77 / / Pega o PRIMEIRO campo MAIL do c e r t i f i c a d o

78 / / TODO pode e x i s t i r mais de um campo cn , por exemplo ,

r e f e r e n t e a um mesmo c e r t i f i c a d o no l d i f ???

79 $ r d n s = $ c e r t i f i c a d o −>g e t S u b j e c t ( )−>g e t E n t r i e s ( ) ;

80 foreach ( $ r d n s as $chaveCN )

81 {82 i f ( $chaveCN [ ’type’ ] ==

L a b s e c S e c u r i t y C e r t i f i c a t i o n D a t a T y p e s R D N S e q u e n c e

: : EMAIL) {83 $mai l = $chaveCN [ ’value’ ] ;

84 break ;

85 }86 }87

88 / / Pega o n m e r o s e r i a do s e r t i f i c a d o

89 $ s e r i a l N u m b e r = $ c e r t i f i c a d o −>g e t S e r i a l N u m b e r ( ) ;

Page 264: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

263

90

91 / / C o m e a a g e r a r o l d i f do c e r t i f i c a d o

92 $ e n t r a d a = "dn: cn= $cn, $diretorioArvore \n

93 objectClass: top \n

94 objectclass: inetOrgPerson

\n" ;

95

96 i f ( $isCA ) {97 $ e n t r a d a . = "objectclass: Person \n" ;

98 } e l s e {99 $ e n t r a d a . = "objectclass: pkiCA \n" ;

100 }101

102 $ e n t r a d a . = "cn: $cn \n

103 sn: $sn \n

104 serialNumber: $serialNumber

\n

105 mail: = $mail" ;

106

107 / / TODO q u a i s o u t r o s dados i r o s e r

d i s p o n i b i l i z a d o s no d i r e t r i o ??? f i n g e r p r i n t ,

i s s u e r . . .

108

109 $ c e r t b a s e 6 4 = $ c e r t i f i c a d o −>getPem ( ) ;

110 i f ( $isCA ) {111 $ e n t r a d a . = " cACertificate;binary::

$cert_base64" ;

112 } e l s e {113 $ e n t r a d a . = " userCertificate;binary:: $cert_base64

" ;

114 }115

116 $ r e g i s t r o s . = tr im ( $ e n t r a d a ) . "\n\n" ;

117

118 }119

120 r e t u r n $ r e g i s t r o s ;

121

122 }123

124 } /∗ end o f c l a s s LDAP ∗ /

125

126 ?>

Page 265: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

264

1 <?php

2

3 e r r o r r e p o r t i n g ( E ALL ) ;

4

5 /∗ ∗6 ∗ s g c i − Engine . php

7 ∗8 ∗ $ Id$

9 ∗10 ∗ T h i s f i l e i s p a r t o f t e s t e .

11 ∗12 ∗ A u t o m a t i c g e n e r a t e d w i t h ArgoUML 0 . 2 4 on 2 6 . 0 7 . 2 0 0 7 , 1 2 : 3 8 : 2 0

13 ∗14 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

15 ∗ /

16

17 i f (0 > vers ion compare ( PHP VERSION , ’5’ ) ) {18 d i e ( ’This file was generated for PHP 5’ ) ;

19 }20

21 /∗ ∗22 ∗ I n t e r f a c e da c l a s s e Engine

23 ∗24 ∗ @access p u b l i c

25 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

26 ∗ /

27 i n t e r f a c e L a b s e c S e c u r i t y E n g i n e H s m

28 {29

30 /∗ ∗31 ∗ C o n s t r u t o r

32 ∗33 ∗ @access p u b l i c

34 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

35 ∗ @param s t r i n g E n d e r e o (HOST) do HSM

36 ∗ @param s t r i n g I d e n t i f i c a d o ( ID ) do HSM

37 ∗ @return v o i d

38 ∗ @throws E x c e p t i o n Quando $ e n g i n e P a t h n o v a l i d o

39 ∗ @throws E x c e p t i o n Quando $ e n g i n e I d n o v a l i d o

40 ∗ /

41 p u b l i c f u n c t i o n c o n s t r u c t ( $ e n g i n e P a t h , $ e n g i n e I d ) ;

Page 266: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

265

42

43 /∗ ∗44 ∗ S e t a o ID do HSM.

45 ∗46 ∗ @access p u b l i c

47 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

48 ∗ @param s t r i n g o ID do HSM

49 ∗ @return v o i d

50 ∗ /

51 p u b l i c f u n c t i o n s e t I d ( $ i d ) ;

52

53 /∗ ∗54 ∗ Re torna o ID do HSM.

55 ∗56 ∗ @access p u b l i c

57 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

58 ∗ @return s t r i n g O ID do HSM em forma de uma s t r i n g .

59 ∗ Se o ID n o e s t i v e r se tado , d i s p a r a e x c e o

60 ∗61 ∗ /

62 p u b l i c f u n c t i o n g e t I d ( ) ;

63

64 /∗ ∗65 ∗ R e a l i z a um t e s t e de c o n e x o , para v e r i f i c a r se o HSM e s t

respondendo .

66 ∗67 ∗ @access p u b l i c

68 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

69 ∗ @return boo lean TRUE se o HSM e s t i v e r OK.

70 ∗ FALSE se houver algum problema c o n e c t a n d o com o HSM

71 ∗ /

72 p u b l i c f u n c t i o n t e s t I n i t ( ) ;

73

74 /∗ ∗75 ∗ Re torna a l i s t a de comandos d e f i n i d o s para o HSM.

76 ∗77 ∗ @access p u b l i c

78 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

79 ∗ @return a r r a y Array c o n t e n d o os comandos d i s p o n v e i s do HSM

80 ∗ /

81 p u b l i c f u n c t i o n getCommands ( ) ;

82

83 /∗ ∗

Page 267: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

266

84 ∗ A d i c i o n a um comando na l i s t a de comandos . Um comando t r a t a d o

85 ∗ como um par ( chave , v a l o r )<br>

86 ∗ Se o comando j e x i s t i r , o v a l o r do comando s u b t i t u d o . <br>

87 ∗ S e n o o comando a d i c i o n a d o ao f i n a l da l i s t a de comandos . <br>

88 ∗89 ∗90 ∗ @access p u b l i c

91 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

92 ∗ @param s t r i n g A ” chave ” do comando

93 ∗ @param s t r i n g O ” v a l o r ” da chave do comando . E s t e p a r m e t r o

o p c i o n a l .

94 ∗ @return v o i d

95 ∗ /

96 p u b l i c f u n c t i o n addCommand ( $key , $ v a l u e = n u l l ) ;

97

98 /∗ ∗99 ∗ Re torna a e n d e r e o do HSM.

100 ∗101 ∗ @access p u b l i c

102 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

103 ∗ @return a r r a y Array c o n t e n d o os comandos d i s p o n v e i s do HSM

104 ∗ /

105 p u b l i c f u n c t i o n g e t E n g i n e P a t h ( ) ;

106

107 } /∗ end o f i n t e r f a c e Engine ∗ /

1 <?php

2 / / DOC t e r m i n a r d o c u m e n t a o

3

4 e r r o r r e p o r t i n g ( E ALL ) ;

5

6 /∗ ∗7 ∗ s g c i − MessageDigestCL . php

8 ∗9 ∗ $ Id$

10 ∗11 ∗ T h i s f i l e i s p a r t o f s g c i .

12 ∗13 ∗ A u t o m a t i c g e n e r a t e d w i t h ArgoUML 0 . 2 4 on 1 4 . 0 8 . 2 0 0 7 , 1 5 : 4 0 : 2 4

14 ∗15 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

16 ∗ /

17

Page 268: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

267

18 i f (0 > vers ion compare ( PHP VERSION , ’5’ ) ) {19 d i e ( ’This file was generated for PHP 5’ ) ;

20 }21

22 /∗ ∗23 ∗ i n c l u i MessageDiges t

24 ∗25 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

26 ∗ /

27 r e q u i r e o n c e ( ’Labsec/Security/Crypto/MessageDigestInterface.php’ ) ;

28

29 /∗ ∗30 ∗ Implementa as f u n c i o n a l i d a d e s de resumo c r i p t o g r f i c o .

31 ∗32 ∗ @access p u b l i c

33 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

34 ∗ /

35 c l a s s L a b s e c C L S e c u r i t y C r y p t o M e s s a g e D i g e s t C L

36 imp lemen t s L a b s e c S e c u r i t y C r y p t o M e s s a g e D i g e s t

37 {38 c o n s t ALGORITHM MD2 = ’MD2’ ;

39

40 c o n s t ALGORITHM MD4 = ’MD4’ ;

41

42 c o n s t ALGORITHM MD5 = ’MD5’ ;

43

44 c o n s t ALGORITHM RIPEMD160 = ’RIPEMD160’ ;

45

46 c o n s t ALGORITHM SHA = ’SHA’ ;

47

48 c o n s t ALGORITHM SHA1 = ’SHA1’ ;

49

50 c o n s t ALGORITHM SHA224 = ’SHA224’ ;

51

52 c o n s t ALGORITHM SHA256 = ’SHA256’ ;

53

54 c o n s t ALGORITHM SHA384 = ’SHA384’ ;

55

56 c o n s t ALGORITHM SHA512 = ’SHA512’ ;

57

58

59 c o n s t STATE NO INIT = 1 ;

60

Page 269: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

268

61 c o n s t STATE INIT = 2 ;

62

63 c o n s t STATE UPDATE = 3 ;

64

65

66 p r i v a t e $ s t a t e = s e l f : : STATE NO INIT ;

67

68 p r i v a t e $ a l g o r i t h m = "" ;

69

70 p r i v a t e $ d a t a = "" ;

71

72 /∗ ∗73 ∗ C o n s t r u t o r

74 ∗ C o n s t r o i um o b j e t o L a b s e c C L S e c u r i t y C r y p t o M e s s a g e D i g e s t C L

75 ∗76 ∗ @access p u b l i c

77 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

78 ∗ @return v o i d

79 ∗ /

80 p u b l i c f u n c t i o n c o n s t r u c t ( )

81 {82 $ t h i s−>s t a t e = s e l f : : STATE NO INIT ;

83 $ t h i s−>a l g o r i t h m = "" ;

84 $ t h i s−>d a t a = "" ;

85 }86

87 /∗ ∗88 ∗ I n i c i a l i z a e s t r u t u r a s de resumos do OpenSSL

89 ∗90 ∗ @access p u b l i c

91 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

92 ∗ @param s t r i n g A l g o r i t m o de resumo

93 ∗ @return v o i d

94 ∗ @throws E x c e p t i o n Quando o e s t a d o do s i s t e m a n o f o r v l i d o

95 ∗ @throws E x c e p t i o n Quando o a l g o r i t m o n o f o r v l i d o

96 ∗ /

97 p u b l i c f u n c t i o n i n i t ( $ h a s h A l g o r i t h m = s e l f : : ALGORITHM SHA1)

98 {99 i f ( $ t h i s−>s t a t e == s e l f : : STATE NO INIT ) {

100 i f ( ( $ h a s h A l g o r i t h m == s e l f : : ALGORITHM MD2)

101 | | ( $ h a s h A l g o r i t h m == s e l f : : ALGORITHM MD4)

102 | | ( $ h a s h A l g o r i t h m == s e l f : : ALGORITHM MD5)

103 | | ( $ h a s h A l g o r i t h m == s e l f : : ALGORITHM RIPEMD160)

Page 270: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

269

104 | | ( $ h a s h A l g o r i t h m == s e l f : : ALGORITHM SHA)

105 | | ( $ h a s h A l g o r i t h m == s e l f : : ALGORITHM SHA1)

106 | | ( $ h a s h A l g o r i t h m == s e l f : : ALGORITHM SHA224)

107 | | ( $ h a s h A l g o r i t h m == s e l f : : ALGORITHM SHA256)

108 | | ( $ h a s h A l g o r i t h m == s e l f : : ALGORITHM SHA384)

109 | | ( $ h a s h A l g o r i t h m == s e l f : : ALGORITHM SHA512) ) {110 $ t h i s−>d a t a = "" ;

111 $ t h i s−>a l g o r i t h m = $ h a s h A l g o r i t h m ;

112 $ t h i s−>s t a t e = s e l f : : STATE INIT ;

113 } e l s e {114 th row new E x c e p t i o n ( ’Algoritmo n o suportado’ ) ;

115 }116 } e l s e {117 th row new E x c e p t i o n ( ’Estado atual do sistema n o

v l i d o ’ ) ;

118 }119 }120

121 /∗ ∗122 ∗ D e f i n e o c o n t e d o de e n t r a d a f u n o de resumo

123 ∗124 ∗ @access p u b l i c

125 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

126 ∗ @param s t r i n g C o n t e d o para resumo

127 ∗ @return v o i d

128 ∗ @throws E x c e p t i o n Quando o e s t a d o do s i s t e m a n o f o r v l i d o

129 ∗ /

130 p u b l i c f u n c t i o n u p d a t e ( $ d a t a )

131 {132 i f ( $ t h i s−>s t a t e != s e l f : : STATE NO INIT ) {133 $ t h i s−>d a t a . = $ d a t a ;

134 $ t h i s−>s t a t e = s e l f : : STATE UPDATE ;

135 } e l s e {136 th row new E x c e p t i o n ( ’Estado atual do sistema n o

v l i d o ’ ) ;

137 }138 }139

140 /∗ ∗141 ∗ R e a l i z a resumo c r i p t o g r f i c o .

142 ∗ Caso $da ta f o r d i f e r e n t e de NULL , r e a l i z a a t u a l i z a o do c o n t e x t o

143 ∗ e f a z resumo c r i p t o g r f i c o . E q u i v a l e n t e a f a z e r up da t e ( $da ta ) e , em

144 ∗ segu ida , d o F i n a l ( )

Page 271: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

270

145 ∗146 ∗ @access p u b l i c

147 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

148 ∗ @param s t r i n g C o n t e d o para resumo

149 ∗ @return s t r i n g O resumo c a l c u l a d o

150 ∗ @throws E x c e p t i o n Quando o e s t a d o do s i s t e m a n o f o r v l i d o

151 ∗ /

152 p u b l i c f u n c t i o n d o F i n a l ( $ d a t a = n u l l )

153 {154 $ r e s u l t = n u l l ;

155 i f ( $ t h i s−>s t a t e == s e l f : : STATE UPDATE) {156 i f ( $ d a t a != n u l l ) {157 $ t h i s−>d a t a . = $ d a t a ;

158 }159 $ r e s u l t = l i b c r y p t o s e c c r y p t o g e t h a s h s t r i n g ( $ t h i s−>da ta ,

$ t h i s−>a l g o r i t h m ) ;

160 } e l s e {161 th row new E x c e p t i o n ( ’Estado atual do sistema n o

v l i d o ’ ) ;

162 }163 r e t u r n $ r e s u l t ;

164 }165

166 /∗ ∗167 ∗ Re torna a l g o r i t m o de resumo s e l e c i o n a d o

168 ∗169 ∗ @access p u b l i c

170 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

171 ∗ @return s t r i n g A l g o r i t m o de resumo s e l e c i o n a d o

172 ∗ /

173 p u b l i c f u n c t i o n g e t A l g o r i t h m ( )

174 {175 r e t u r n ( s t r i n g ) $ t h i s−>a l g o r i t h m ;

176 }177

178 } /∗ end o f c l a s s MessageDigestCL ∗ /

179

180 ?>

1 <?php

2

3 e r r o r r e p o r t i n g ( E ALL ) ;

4

Page 272: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

271

5 /∗ ∗6 ∗ s g c i − Priva teKeyCL . php

7 ∗8 ∗ $ Id$

9 ∗10 ∗ T h i s f i l e i s p a r t o f s g c i .

11 ∗12 ∗ A u t o m a t i c g e n e r a t e d w i t h ArgoUML 0 . 2 4 on 1 4 . 0 8 . 2 0 0 7 , 1 5 : 4 0 : 2 4

13 ∗14 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

15 ∗ /

16

17 i f (0 > vers ion compare ( PHP VERSION , ’5’ ) ) {18 d i e ( ’This file was generated for PHP 5’ ) ;

19 }20

21 r e q u i r e o n c e ( ’Labsec/Security/Crypto/PrivateKey.php’ ) ;

22 r e q u i r e o n c e ( ’Labsec/Security/Crypto/SymmetricCipher.php’ ) ;

23

24 /∗ ∗25 ∗ C l a s s e Pr iva teKeyCL

26 ∗27 ∗ @access p u b l i c

28 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

29 ∗ /

30 c l a s s L a b s e c C L S e c u r i t y C r y p t o P r i v a t e K e y C L

31 e x t e n d s L a b s e c S e c u r i t y C r y p t o P r i v a t e K e y

32 {33

34 /∗ ∗35 ∗ C o n s t r u t o r .

36 ∗37 ∗ @access p u b l i c

38 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

39 ∗ @param mixed A chave p r o p r i a m e n t e d i t a

40 ∗ @param s t r i n g A senha u t i l i z a d a na c i f r a g e m

41 ∗ @param s t r i n g O f o r m a t o da chave

42 ∗ @param L a b s e c S e c u r i t y E n g i n e H s m A Engine que pode s e r u t i l i z a d a

43 ∗ @param s t r i n g O i d e n t i f i c a d o r da chave da Engine

44 ∗ @return v o i d

45 ∗ @throws E x c e p t i o n Quando o f o r m a t o in fo rmado f o r i n v l i d o

46 ∗ @throws E x c e p t i o n Quando a chave f o r i n v l i d a

47 ∗ /

Page 273: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

272

48 p u b l i c f u n c t i o n c o n s t r u c t ( $key , $passwd = n u l l , $ f o r m a t = s e l f : :

FORMAT PEM,

49 L a b s e c S e c u r i t y E n g i n e H s m

$hsm = n u l l ,

$keyName = n u l l )

{50

51 i f ( $hsm == n u l l ) {52 / / XXX

53 / / i f ( l i b c r y p t o s e c c r y p t o a s s y m m e t r i c k e y i s v a l i d ( $key ,

$passwd ) ) {54 i f ( ( $ f o r m a t ==

L a b s e c S e c u r i t y C r y p t o A s s y m m e t r i c K e y : :

FORMAT PEM)

55 | | ( $ f o r m a t ==

L a b s e c S e c u r i t y C r y p t o A s s y m m e t r i c K e y : :

FORMAT DER) ) {56 $ t h i s−>s i z e =

l i b c r y p t o s e c c r y p t o a s s y m m e t r i c k e y g e t s i z e

( $key , $passwd ) ;

57 $ a l g o r i t h m =

l i b c r y p t o s e c c r y p t o a s s y m m e t r i c k e y g e t a l g o r i t h m

( $key , $passwd ) ;

58

59 $ t h i s−>f o r m a t = $ f o r m a t ;

60 } e l s e {61 th row new E x c e p t i o n ( ’O formato

informado ( p a r m e t r o format)

n o v l i d o . Ele deve ser

PEM ou DER’ ) ;

62 }63 / / } e l s e {64 / / throw new E x c e p t i o n ( ’ Es ta n o uma chave v l i d a

’ ) ;

65 / / }66 } e l s e {67 / / $ t h i s−>s i z e =

l i b c r y p t o s e c c r y p t o a s s y m m e t r i c k e y g e t s i z e f r o m e n g i n e (

68 / /

$hsm−>g e t E n g i n e P a t h ( ) ,

69 / /

$hsm−>g e t I d ( ) , $keyName ,

Page 274: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

273

70 / /

$hsm−>getCommands ( ) ) ;

71 / / $ a l g o r i t h m =

l i b c r y p t o s e c c r y p t o a s s y m m e t r i c k e y g e t a l g o r i t h m f r o m e n g i n e (

72 / /

$hsm−>g e t E n g i n e P a t h ( ) ,

73 / /

$hsm−>g e t I d ( ) , $keyName ,

74 / /

$hsm−>getCommands ( ) ) ;

75 / / XXX

76 $ t h i s−>s i z e = 1024 ;

77 $ a l g o r i t h m = "RSA" ;

78 }79 i f ( ( $ a l g o r i t h m == L a b s e c S e c u r i t y C r y p t o A s s y m m e t r i c K e y : :

ALGORITHM RSA)

80 | | ( $ a l g o r i t h m == L a b s e c S e c u r i t y C r y p t o A s s y m m e t r i c K e y : :

ALGORITHM DSA) ) {81 $ t h i s−>a l g o r i t h m = $ a l g o r i t h m ;

82 $ t h i s−>key = $key ;

83 $ t h i s−>e n g i n e = $hsm ;

84 $ t h i s−>keyName = $keyName ;

85 } e l s e {86 th row new E x c e p t i o n ( ’Esta chave privada n o v l i d a ’ ) ;

87 }88

89 }90

91 /∗ ∗92 ∗ Re torna a chave c i f r a d a no f o r m a t o PEM

93 ∗94 ∗ @access p u b l i c

95 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

96 ∗ @param s t r i n g A senha u t i l i z a d a na c i f r a g e m

97 ∗ @param s t r i n g O nome do c i f r a d o r u t i l i z a d o

98 ∗ @throws E x c e p t i o n Quando o v a l o r de $passwd f o r nu lo

99 ∗ @throws E x c e p t i o n Quando a chave a inda n o f o i s e t a d a ou e s t i v e r em

Engine

100 ∗ /

101 p u b l i c f u n c t i o n ge tEncryp tedPemEncoded ( $passwd ,

102 $ c i p h e r =

L a b s e c S e c u r i t y C r y p t o S y m m e t r i c C i p h e r : :

ALGORITHM DES EDE3) {

Page 275: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

274

103 $ r e s u l t = n u l l ;

104 i f ( $ t h i s−>key != n u l l ) {105 i f ( ! ( ( $passwd == "" ) | | ( $passwd == n u l l ) ) ) {106 i f ( L a b s e c C L S e c u r i t y C r y p t o S y m m e t r i c C i p h e r C L : :

v e r i f y A l g o r i t h m ( $ c i p h e r ) ) {107 $ r e s u l t =

l i b c r y p t o s e c c r y p t o e n c r y p t p r i v a t e k e y (

$ t h i s−>getPemEncoded ( ) , $passwd , $ c i p h e r

) ;

108 }109 } e l s e {110 th row new E x c e p t i o n ( ’O p a r m e t r o passwd deve ser

diferente de nulo’ ) ;

111 }112 } e l s e {113 th row new E x c e p t i o n ( ’A chave ainda n o foi gerada. O

atributo key nulo. A chave pode estar armazenada em

uma Engine.’ ) ;

114 }115 r e t u r n $ r e s u l t ;

116 }117

118 } /∗ end o f i n t e r f a c e Pr iva teKeyCL ∗ /

119

120 ?>

1 <?php

2 / / DOC t e r m i n a r d o c u m e n t a o

3

4 e r r o r r e p o r t i n g ( E ALL ) ;

5

6 /∗ ∗7 ∗ s g c i − SignerCL . php

8 ∗9 ∗ $ Id$

10 ∗11 ∗ T h i s f i l e i s p a r t o f s g c i .

12 ∗13 ∗ A u t o m a t i c g e n e r a t e d w i t h ArgoUML 0 . 2 4 on 1 4 . 0 8 . 2 0 0 7 , 1 5 : 4 0 : 2 4

14 ∗15 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

16 ∗ /

17

Page 276: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

275

18 i f (0 > vers ion compare ( PHP VERSION , ’5’ ) ) {19 d i e ( ’This file was generated for PHP 5’ ) ;

20 }21

22 /∗ ∗23 ∗ i n c l u i S i g n e r

24 ∗25 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

26 ∗ /

27 r e q u i r e o n c e ( ’Labsec/Security/Crypto/SignerInterface.php’ ) ;

28

29 /∗ ∗30 ∗ C l a s s e r e s p o n s v e l p e l a a s s i n a t u r a de um hash e p e l a v e r i f i c a o da

a s s i n a t u r a de um hash

31 ∗32 ∗ @access p u b l i c

33 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

34 ∗ /

35 c l a s s L a b s e c C L S e c u r i t y C r y p t o S i g n e r C L

36 imp lemen t s L a b s e c S e c u r i t y C r y p t o S i g n e r

37 {38 /∗ ∗39 ∗ A s s i n a o hash de um dado

40 ∗41 ∗ @access p u b l i c

42 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

43 ∗ @param s t r i n g O a l g o r i t m o que s e r u t i l i z a d o na a s s i n a t u r a

44 ∗ @param L a b s e c S e c u r i t y C r y p t o P r i v a t e K e y A chave p r i v a d a no f o r m a t o

PEM

45 ∗ @param s t r e a m O hash do dado

46 ∗ @param s t r i n g A senha da chave p r i v a d a

47 ∗ @return s t r ea m O hash a s s i n a d o

48 ∗ @throws E x c e p t i o n Quando o a l g o r i t m o de a s s i n a t u r a n o f o r v l i d o

49 ∗ /

50 p u b l i c f u n c t i o n s i g n ( $ s i g n A l g o r i t h m ,

51 L a b s e c S e c u r i t y C r y p t o P r i v a t e K e y

$ p r i v a t e K e y ,

52 $hash , $passwd = NULL)

53 {54 i f ( $ t h i s−>v e r i f y S i g n A l g o r i t h m ( $ s i g n A l g o r i t h m ) ) {55

56 i f ( $ p r i v a t e K e y−>useEng ine ( ) ) {57 / / a s s i n a u t i l i z a n d o a e n g i n e

Page 277: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

276

58 $hsm = $ p r i v a t e K e y−>g e t E n g i n e ( ) ;

59 $keyName = $ p r i v a t e K e y−>getKeyName ( ) ;

60 $ s i g n =

l i b c r y p t o s e c c r y p t o s i g n w i t h e n g i n e (

$hash , $ s i g n A l g o r i t h m ,

61 $hsm

−>

g e t E n g i n e P a t h

( )

,

62 $hsm

−>

g e t I d

( )

,

$keyName

,

63 $hsm

−>

getCommands

( )

)

;

64

65 } e l s e {66 $key = $ p r i v a t e K e y−>getPemEncoded ( ) ;

67 $keyAlgor i thm = $ p r i v a t e K e y−>g e t A l g o r i t h m ( ) ;

68 / / a s s i n a o hash

69 $ s i g n = l i b c r y p t o s e c c r y p t o s i g n ( $hash ,

$ s i g n A l g o r i t h m , $keyAlgor i thm , $key , $passwd

) ;

70 }71 r e t u r n $ s i g n ;

72 }73 }74

75 /∗ ∗76 ∗ V e r i f i c a a a s s i n a t u r a de um hash

77 ∗

Page 278: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

277

78 ∗ @access p u b l i c

79 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

80 ∗ @param s t r ea m O hash a s s i n a d o

81 ∗ @param s t r i n g O a l g o r i t m o que f o i u t i l i z a d o na a s s i n a t u r a

82 ∗ @param s t r ea m O hash do a r q u i v o o r i g i n a l

83 ∗ @param L a b s e c S e c u r i t y C r y p t o P u b l i c K e y A chave p b l i c a no f o r m a t o

PEM

84 ∗ @return boo lean TRUE caso o v a l o r de $ s i g n a t u r e s e j a i g u a l

a s s i n a t u r a do $hash ,

85 ∗ FALSE caso s e j a d i f e r e n t e

86 ∗ /

87 p u b l i c f u n c t i o n v e r i f y ( $ s i g n a t u r e , $ s i g n A l g o r i t h m , $hash ,

88 L a b s e c S e c u r i t y C r y p t o P u b l i c K e y

$pub l i cKey )

89 {90 / / v e r i f i c a se $ a l g o r i t h m eh s u p o r t a d o

91 i f ( $ t h i s−>v e r i f y S i g n A l g o r i t h m ( $ s i g n A l g o r i t h m ) ) {92 $key = $publ icKey−>getPemEncoded ( ) ;

93 $keyAlgor i thm = $publ icKey−>g e t A l g o r i t h m ( ) ;

94

95 $ v e r i f y =

l i b c r y p t o s e c c r y p t o v e r i f y s i g n a t u r e (

$ s i g n a t u r e , $hash ,

96 $ s i g n A l g o r i t h m

,

$keyAlgor i thm

,

97 $key

)

;

98 r e t u r n ( boo l ) $ v e r i f y ;

99 }100 }101

102 /∗ ∗103 ∗ V e r i f i c a se o a l g o r i t m o de a s s i n a t u r a v l i d o

104 ∗105 ∗ @access p r i v a t e

106 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

107 ∗ @param s t r i n g O a l g o r i t m o

Page 279: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

278

108 ∗ @return b oo l TRUE se o a l g o r i t m o f o r v l i d o , FALSE caso c o n t r r i o

109 ∗ @throws E x c e p t i o n Quando o a l g o r i t m o f o r i n v l i d o

110 ∗ /

111 p r i v a t e f u n c t i o n v e r i f y S i g n A l g o r i t h m ( $ h a s h A l g o r i t h m ) {112 $ r e s u l t = n u l l ;

113 i f ( ( $ h a s h A l g o r i t h m == L a b s e c C L S e c u r i t y C r y p t o M e s s a g e D i g e s t C L : :

ALGORITHM MD2)

114 | | ( $ h a s h A l g o r i t h m ==

L a b s e c C L S e c u r i t y C r y p t o M e s s a g e D i g e s t C L : : ALGORITHM MD4)

115 | | ( $ h a s h A l g o r i t h m ==

L a b s e c C L S e c u r i t y C r y p t o M e s s a g e D i g e s t C L : : ALGORITHM MD5)

116 | | ( $ h a s h A l g o r i t h m ==

L a b s e c C L S e c u r i t y C r y p t o M e s s a g e D i g e s t C L : :

ALGORITHM RIPEMD160)

117 | | ( $ h a s h A l g o r i t h m ==

L a b s e c C L S e c u r i t y C r y p t o M e s s a g e D i g e s t C L : : ALGORITHM SHA)

118 | | ( $ h a s h A l g o r i t h m ==

L a b s e c C L S e c u r i t y C r y p t o M e s s a g e D i g e s t C L : : ALGORITHM SHA1

)

119 | | ( $ h a s h A l g o r i t h m ==

L a b s e c C L S e c u r i t y C r y p t o M e s s a g e D i g e s t C L : :

ALGORITHM SHA224)

120 | | ( $ h a s h A l g o r i t h m ==

L a b s e c C L S e c u r i t y C r y p t o M e s s a g e D i g e s t C L : :

ALGORITHM SHA256)

121 | | ( $ h a s h A l g o r i t h m ==

L a b s e c C L S e c u r i t y C r y p t o M e s s a g e D i g e s t C L : :

ALGORITHM SHA384)

122 | | ( $ h a s h A l g o r i t h m ==

L a b s e c C L S e c u r i t y C r y p t o M e s s a g e D i g e s t C L : :

ALGORITHM SHA512) ) {123 $ r e s u l t = t rue ;

124 } e l s e {125 $ r e s u l t = f a l s e ;

126 th row new E x c e p t i o n ( "Algoritmo informado n o v l i d o ." )

;

127 }128 r e t u r n $ r e s u l t ;

129 }130

131 } /∗ end o f c l a s s SignerCL ∗ /

132

133 ?>

Page 280: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

279

1 <?php

2 / / DOC t e r m i n a r d o c u m e n t a o

3

4 e r r o r r e p o r t i n g ( E ALL ) ;

5

6 /∗ ∗7 ∗ s g c i − Assymmetr icCipherCL . php

8 ∗9 ∗ $ Id$

10 ∗11 ∗ T h i s f i l e i s p a r t o f s g c i .

12 ∗13 ∗ A u t o m a t i c g e n e r a t e d w i t h ArgoUML 0 . 2 4 on 1 4 . 0 8 . 2 0 0 7 , 1 5 : 4 0 : 2 4

14 ∗15 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

16 ∗ /

17

18 i f (0 > vers ion compare ( PHP VERSION , ’5’ ) ) {19 d i e ( ’This file was generated for PHP 5’ ) ;

20 }21

22 /∗ ∗23 ∗ i n c l u i A s s y m e t r i c C i p h e r

24 ∗25 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

26 ∗ /

27 r e q u i r e o n c e ( ’Labsec/Security/Crypto/AssymmetricCipherInterface.php’ ) ;

28

29 /∗ ∗30 ∗ C l a s s e r e s p o n v e l p e l a c i f r a g e m a s s i m t r i c a , u t i l i z a n d o ch av es

a s s i m t r i c a s .

31 ∗32 ∗ @access p u b l i c

33 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

34 ∗ /

35 c l a s s L a b s e c C L S e c u r i t y C r y p t o A s s y m m e t r i c C i p h e r C L

36 imp lemen t s L a b s e c S e c u r i t y C r y p t o A s s y m m e t r i c C i p h e r

37 {38

39 /∗ ∗40 ∗ C i f r a um dado com a chave p b l i c a in formada ,

Page 281: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

280

41 ∗ u t i l i z a n d o o a l g o r i t m o no modo d e f i n i d o .

42 ∗43 ∗ @access p u b l i c

44 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

45 ∗ @param L a b s e c S e c u r i t y C r y p t o R S A P u b l i c K e y A chave p b l i c a que

s e r u t i l i z a d a

46 ∗ @param s t r e a m O dado a s e r c i f r a d o

47 ∗ @return s t r ea m O dado c i f r a d o

48 ∗ @throws E x c e p t i o n Quando o a l g o r i t m o f o r i n v l i d o

49 ∗ /

50 p u b l i c f u n c t i o n e n c r y p t ( L a b s e c S e c u r i t y C r y p t o P u b l i c K e y $key , $ d a t a )

51 {52 / / t r y {53 $ r e s u l t = n u l l ;

54 i f ( $key−>g e t A l g o r i t h m ( ) ==

L a b s e c S e c u r i t y C r y p t o A s s y m m e t r i c K e y : : ALGORITHM RSA) {55 $ r e s u l t = l i b c r y p t o s e c c r y p t o a s s y m m e t r i c e n c r y p t s t r e a m (

$key−>getPemEncoded ( ) ,

56 $ d a t a

)

;

57 } e l s e {58 th row new E x c e p t i o n ( ’A chave deve ser RSA.’ ) ;

59 }60

61 r e t u r n $ r e s u l t ;

62 / / } c a t c h ( E x c e p t i o n $e ) {63 / / echo ’ Tipo Excecao : ’ . $e−>ge tMessage ( ) ;

64 / / }65 }66

67 /∗ ∗68 ∗ D e c i f r a d o um dado com a chave p r i v a d a in formada ,

69 ∗ u t i l i z a n d o o a l g o r i t m o no modo d e f i n i d o .

70 ∗71 ∗ @access p u b l i c

72 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

73 ∗ @param L a b s e c S e c u r i t y C r y p t o R S A P r i v a t e K e y A chave p r i v a d a que

s e r u t i l i z a d a

74 ∗ @param s t r ea m O dado a s e r d e c i f r a d o

75 ∗ @param s t r i n g A senha u t i l i z a d a

76 ∗ @return s t r e a m O dado d e c i f r a d o

Page 282: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

281

77 ∗ @throws E x c e p t i o n Quando o a l g o r i t m o f o r i n v l i d o

78 ∗ /

79 p u b l i c f u n c t i o n d e c r y p t ( L a b s e c S e c u r i t y C r y p t o P r i v a t e K e y $key ,

80 $da ta , $passwd = n u l l )

81 {82 / / t r y {83 / / TODO e com e n g i n e ??? e com chave c i f r a d a ???

84 $ r e s u l t = n u l l ;

85 i f ( $key−>g e t A l g o r i t h m ( ) ==

L a b s e c S e c u r i t y C r y p t o A s s y m m e t r i c K e y : : ALGORITHM RSA) {86

87 $ r e s u l t = l i b c r y p t o s e c c r y p t o a s s y m m e t r i c d e c r y p t ( $da ta

, $key−>getPemEncoded ( ) ,

88 $passwd

)

;

89 } e l s e {90 th row new E x c e p t i o n ( ’A chave deve ser RSA.’ ) ;

91 }92

93 r e t u r n $ r e s u l t ;

94 / / } c a t c h ( E x c e p t i o n $e ) {95 / / echo ’ Tipo Excecao : ’ . $e−>ge tMessage ( ) ;

96 / / }97 }98

99 } /∗ end o f c l a s s A s s y m e t r i c C i p h e r C L ∗ /

100

101 ?>

1 <?php

2

3 e r r o r r e p o r t i n g ( E ALL ) ;

4

5 /∗ ∗6 ∗ s g c i − PublicKeyCL . php

7 ∗8 ∗ $ Id$

9 ∗10 ∗ T h i s f i l e i s p a r t o f s g c i .

11 ∗12 ∗ A u t o m a t i c g e n e r a t e d w i t h ArgoUML 0 . 2 4 on 1 4 . 0 8 . 2 0 0 7 , 1 5 : 4 0 : 2 4

Page 283: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

282

13 ∗14 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

15 ∗ /

16

17 i f (0 > vers ion compare ( PHP VERSION , ’5’ ) ) {18 d i e ( ’This file was generated for PHP 5’ ) ;

19 }20

21 r e q u i r e o n c e ( ’Labsec/Security/Crypto/PublicKey.php’ ) ;

22

23 /∗ ∗24 ∗ C l a s s e Publ icKeyCL

25 ∗26 ∗ @access p u b l i c

27 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

28 ∗ /

29 c l a s s L a b s e c C L S e c u r i t y C r y p t o P u b l i c K e y C L

30 e x t e n d s L a b s e c S e c u r i t y C r y p t o P u b l i c K e y

31 {32 /∗ ∗33 ∗ C o n s t r u t o r .

34 ∗35 ∗ @access p u b l i c

36 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

37 ∗ @param mixed A chave p r o p r i a m e n t e d i t a

38 ∗ @param s t r i n g O f o r m a t o da chave

39 ∗ @return v o i d

40 ∗ @throws E x c e p t i o n Quando o f o r m a t o in fo rmado f o r i n v l i d o

41 ∗ @throws E x c e p t i o n Quando a chave n o f o r do t i p o v l i d o

42 ∗ /

43 p u b l i c f u n c t i o n c o n s t r u c t ( $key , $ f o r m a t = s e l f : : FORMAT PEM) {44 $ a l g o r i t h m = l i b c r y p t o s e c c r y p t o a s s y m m e t r i c k e y g e t a l g o r i t h m ( $key

) ;

45 / / XXX

46 / / i f ( l i b c r y p t o s e c c r y p t o a s s y m m e t r i c k e y i s v a l i d ( $key , $passwd ) ) {47 i f ( ( $ a l g o r i t h m == L a b s e c S e c u r i t y C r y p t o A s s y m m e t r i c K e y : :

ALGORITHM DSA)

48 | | ( $ a l g o r i t h m == L a b s e c S e c u r i t y C r y p t o A s s y m m e t r i c K e y : :

ALGORITHM RSA) ) {49 i f ( ( $ f o r m a t ==

L a b s e c S e c u r i t y C r y p t o A s s y m m e t r i c K e y : :

FORMAT PEM)

Page 284: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

283

50 | | ( $ f o r m a t ==

L a b s e c S e c u r i t y C r y p t o A s s y m m e t r i c K e y : :

FORMAT DER) ) {51 $ t h i s−>a l g o r i t h m = $ a l g o r i t h m ;

52 $ t h i s−>f o r m a t = $ f o r m a t ;

53 $ t h i s−>key = $key ;

54 $ t h i s−>s i z e =

l i b c r y p t o s e c c r y p t o a s s y m m e t r i c k e y g e t s i z e

( $key ) ;

55 } e l s e {56 th row new E x c e p t i o n ( ’O formato

informado ( p a r m e t r o format)

n o v l i d o . Ele deve ser

PEM ou DER’ ) ;

57 }58 } e l s e {59 th row new E x c e p t i o n ( ’A chave informada ( p a r m e t r o

key) n o v l i d a ’ ) ;

60 }61 / / } e l s e {62 / / throw new E x c e p t i o n ( ’ Es ta n o uma chave v l i d a ’ ) ;

63 / / }64 }65

66 } /∗ end o f i n t e r f a c e Publ icKeyCL ∗ /

67

68 ?>

1 <?php

2 / / DOC t e r m i n a r d o c u m e n t a o

3

4 e r r o r r e p o r t i n g ( E ALL ) ;

5

6 /∗ ∗7 ∗ s g c i − S y m m e t r i c K e y I n t e r f a c e . php

8 ∗9 ∗ $ Id$

10 ∗11 ∗ T h i s f i l e i s p a r t o f s g c i .

12 ∗13 ∗ A u t o m a t i c g e n e r a t e d w i t h ArgoUML 0 . 2 4 on 1 4 . 0 8 . 2 0 0 7 , 1 5 : 4 0 : 2 4

14 ∗15 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

Page 285: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

284

16 ∗ /

17

18 i f (0 > vers ion compare ( PHP VERSION , ’5’ ) ) {19 d i e ( ’This file was generated for PHP 5’ ) ;

20 }21

22 r e q u i r e o n c e ( ’Labsec/Security/Crypto/SymmetricKeyInterface.php’ ) ;

23 r e q u i r e o n c e ( ’LabsecCL/Security/Crypto/SymmetricCipherCL.php’ ) ;

24

25 /∗ ∗26 ∗ I n t e r f a c e da c l a s s e Symmetr icKey

27 ∗28 ∗ @access p u b l i c

29 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

30 ∗ /

31 c l a s s LabsecCL Secur i ty Cryp to Symmet r i cKeyCL

32 imp lemen t s L a b s e c S e c u r i t y C r y p t o S y m m e t r i c K e y

33 {34 p r i v a t e $ a l g o r i t h m ;

35

36 p r i v a t e $key = n u l l ;

37

38 p r i v a t e $ s i z e ;

39

40 /∗ ∗41 ∗ Gera uma chave s i m t r i c a

42 ∗43 ∗ @access p u b l i c

44 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

45 ∗ @param s t r i n g O a l g o r i t m o que s e r u t i l i z a d o na g e r a o

46 ∗ @param i n t O tamanho da chave que s e r gerada

47 ∗ @return v o i d

48 ∗ @throws E x c e p t i o n Quando o tamanho da chave n o f o r v l i d o

49 ∗ /

50 p u b l i c f u n c t i o n gene ra t eSymmet r i cKey ( $ s i z e = s e l f : : SIZE DEFAULT ,

51 $ a l g o r i t h m =

L a b s e c S e c u r i t y C r y p t o S y m m e t r i c C i p h e r : :

ALGORITHM DES EDE3) {52 i f ( L a b s e c C L S e c u r i t y C r y p t o S y m m e t r i c C i p h e r C L : :

v e r i f y A l g o r i t h m ( $ a l g o r i t h m ) )

53 {54 i f ( $ s i z e > 0) {

Page 286: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

285

55 $key =

l i b c r y p t o s e c c r y p t o g e n e r a t e s y m m e t r i c k e y

( $ a l g o r i t h m , $ s i z e ) ;

56 $ t h i s−>loadKey ( $key , $ s i z e , $ a l g o r i t h m ) ;

57 } e l s e {58 th row new E x c e p t i o n ( "O tamanho da chave (

p a r m e t r o size) n o v l i d o " ) ;

59 }60 }61 }62

63 /∗ ∗64 ∗ S e t a uma chave com os s e u s p a r m e t r o s

65 ∗66 ∗ @access p u b l i c

67 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

68 ∗ @param mixed A chave p r o p r i a m e n t e d i t a

69 ∗ @param s t r i n g O a l g o r i t m o u t i l i z a d o na chave

70 ∗ @param i n t O tamanho da chave

71 ∗ @param s t r i n g O f o r m a t o da chave

72 ∗ @return v o i d

73 ∗ @throws E x c e p t i o n Quando o tamanho da chave in fo rmado f o r i n v l i d o

74 ∗ /

75 p u b l i c f u n c t i o n loadKey ( $key , $ s i z e = s e l f : : SIZE DEFAULT ,

76 $ a l g o r i t h m =

L a b s e c S e c u r i t y C r y p t o S y m m e t r i c C i p h e r : :

ALGORITHM DES EDE3) {77 i f ( $ s i z e > 0) {78 i f ( L a b s e c C L S e c u r i t y C r y p t o S y m m e t r i c C i p h e r C L : :

v e r i f y A l g o r i t h m ( $ a l g o r i t h m ) ) {79 $ t h i s−>key = $key ;

80 $ t h i s−>a l g o r i t h m = $ a l g o r i t h m ;

81 $ t h i s−>s i z e = $ s i z e ;

82 }83 } e l s e {84 th row new E x c e p t i o n ( ’O tamanho da chave informado (

p a r m e t r o size) n o v l i d o ’ ) ;

85 }86 }87

88 /∗ ∗89 ∗ Re torna a chave

90 ∗

Page 287: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

286

91 ∗ @access p u b l i c

92 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

93 ∗ @return s t r i n g A chave

94 ∗ /

95 p u b l i c f u n c t i o n ge tEncoded ( )

96 {97 r e t u r n $ t h i s−>key ;

98 }99

100 /∗ ∗101 ∗ Re torna o a l g o r i t m o u t i l i z a d o na chave

102 ∗103 ∗ @access p u b l i c

104 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

105 ∗ @return s t r i n g O a l g o r i t m o u t i l i z a d o

106 ∗ /

107 p u b l i c f u n c t i o n g e t A l g o r i t h m ( )

108 {109 r e t u r n ( s t r i n g ) $ t h i s−>a l g o r i t h m ;

110 }111

112 /∗ ∗113 ∗ Re torna o tamanho da chave

114 ∗115 ∗ @access p u b l i c

116 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

117 ∗ @return i n t O tamanho da chave

118 ∗ /

119 p u b l i c f u n c t i o n g e t S i z e ( )

120 {121 r e t u r n ( i n t ) $ t h i s−>s i z e ;

122 }123 } /∗ end o f i n t e r f a c e Symmetr icKey ∗ /

124

125 ?>

1 <?php

2 / / DOC t e r m i n a r d o c u m e n t a o

3

4 e r r o r r e p o r t i n g ( E ALL ) ;

5

6 /∗ ∗7 ∗ s g c i − Symmetr icCipherCL . php

Page 288: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

287

8 ∗9 ∗ $ Id$

10 ∗11 ∗ T h i s f i l e i s p a r t o f s g c i .

12 ∗13 ∗ A u t o m a t i c g e n e r a t e d w i t h ArgoUML 0 . 2 4 on 1 4 . 0 8 . 2 0 0 7 , 1 5 : 4 0 : 2 4

14 ∗15 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

16 ∗ /

17

18 i f (0 > vers ion compare ( PHP VERSION , ’5’ ) ) {19 d i e ( ’This file was generated for PHP 5’ ) ;

20 }21

22 /∗ ∗23 ∗ i n c l u i S y mm e t r i c C ipher

24 ∗25 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

26 ∗ /

27 r e q u i r e o n c e ( ’Labsec/Security/Crypto/SymmetricCipherInterface.php’ ) ;

28 r e q u i r e o n c e ( ’LabsecCL/Security/Crypto/SymmetricKeyCL.php’ ) ;

29

30 /∗ ∗31 ∗ C l a s s e r e s p o n v e l p e l a c i f r a g e m s i m t r i c a , u t i l i z a n d o chave s i m t r i c a

.

32 ∗33 ∗ @access p u b l i c

34 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

35 ∗ /

36 c l a s s L a b s e c C L S e c u r i t y C r y p t o S y m m e t r i c C i p h e r C L

37 imp lemen t s L a b s e c S e c u r i t y C r y p t o S y m m e t r i c C i p h e r

38 {39 /∗ ∗40 ∗ C i f r a um dado com a chave s i m t r i c a in formada ,

41 ∗ u t i l i z a n d o o a l g o r i t m o no modo d e f i n i d o .

42 ∗43 ∗ @access p u b l i c

44 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

45 ∗ @param L a b s e c S e c u r i t y C r y p t o S y m m e t r i c K e y A chave que s e r

u t i l i z a d a

46 ∗ @param s t r i n g O a l g o r i t m o u t i l i z a d o

47 ∗ @param s t r e a m O dado a s e r c i f r a d o

48 ∗ @param s t r i n g O modo de o p e r a o que s e r u t i l i z a d o

Page 289: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

288

49 ∗ @return s t r ea m O dado c i f r a d o

50 ∗ @throws E x c e p t i o n Quando o a l g o r i t m o ou o modo de o p e r a o f o r

i n v l i d o

51 ∗ /

52 p u b l i c f u n c t i o n e n c r y p t ( L a b s e c S e c u r i t y C r y p t o S y m m e t r i c K e y $key , $da ta

,

53 $ a l g o r i t h m = s e l f : :

ALGORITHM DES EDE3 ,

54 $opera t ionMode = s e l f : :

MODE CBC) {55 $ r e s u l t = n u l l ;

56 i f ( ( s e l f : : v e r i f y A l g o r i t h m ( $ a l g o r i t h m ) ) && ( $ t h i s−>

v e r i f y O p e r a t i o n M o d e ( $opera t ionMode ) ) ) {57 $ r e s u l t = l i b c r y p t o s e c c r y p t o s y m m e t r i c e n c r y p t s t r e a m ( $key

−>ge tEncoded ( ) , $da ta ,

58 $ a l g o r i t h m

,

$opera t ionMode

)

;

59 }60 r e t u r n $ r e s u l t ;

61 }62

63 /∗ ∗64 ∗ D e c i f r a d o um dado com a chave in formada ,

65 ∗ u t i l i z a n d o o a l g o r i t m o no modo d e f i n i d o .

66 ∗67 ∗ @access p u b l i c

68 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

69 ∗ @param L a b s e c S e c u r i t y C r y p t o S y m m e t r i c K e y A chave que s e r

u t i l i z a d a

70 ∗ @param s t r i n g O a l g o r i t m o u t i l i z a d o

71 ∗ @param s t r e a m O dado a s e r d e c i f r a d o

72 ∗ @param s t r i n g O modo de o p e r a o que s e r u t i l i z a d o

73 ∗ @return s t r ea m O dado d e c i f r a d o

74 ∗ @throws E x c e p t i o n Quando o a l g o r i t m o ou o modo de o p e r a o f o r

i n v l i d o

75 ∗ /

76 p u b l i c f u n c t i o n d e c r y p t ( L a b s e c S e c u r i t y C r y p t o S y m m e t r i c K e y $key , $da ta

,

Page 290: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

289

77 $ a l g o r i t h m = s e l f : :

ALGORITHM DES EDE3 ,

78 $opera t ionMode = s e l f : :

MODE CBC) {79 $ r e s u l t = n u l l ;

80 i f ( ( s e l f : : v e r i f y A l g o r i t h m ( $ a l g o r i t h m ) ) && ( $ t h i s−>

v e r i f y O p e r a t i o n M o d e ( $opera t ionMode ) ) ) {81 $ r e s u l t = l i b c r y p t o s e c c r y p t o s y m m e t r i c d e c r y p t ( $key−>

ge tEncoded ( ) , $da ta ,

82 $ a l g o r i t h m

,

$opera t ionMode

)

;

83 }84 r e t u r n $ r e s u l t ;

85 }86

87 /∗ ∗88 ∗ V e r i f i c a se o a l g o r i t m o v l i d o

89 ∗90 ∗ @access p u b l i c

91 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

92 ∗ @param s t r i n g O a l g o r i t m o

93 ∗ @return boo l TRUE se o a l g o r i t m o f o r v l i d o , FALSE caso c o n t r r i o

94 ∗ @throws E x c e p t i o n Quando o a l g o r i t m o f o r i n v l i d o

95 ∗ /

96 p u b l i c s t a t i c f u n c t i o n v e r i f y A l g o r i t h m ( $ a l g o r i t h m ) {97 $ r e s u l t = n u l l ;

98 i f ( ( $ a l g o r i t h m == s e l f : : ALGORITHM AES 128 )

99 | | ( $ a l g o r i t h m == s e l f : : ALGORITHM AES 192 )

100 | | ( $ a l g o r i t h m == s e l f : : ALGORITHM AES 256 )

101 | | ( $ a l g o r i t h m == s e l f : : ALGORITHM DES)

102 | | ( $ a l g o r i t h m == s e l f : : ALGORITHM DES EDE)

103 | | ( $ a l g o r i t h m == s e l f : : ALGORITHM DES EDE3)

104 | | ( $ a l g o r i t h m == s e l f : : ALGORITHM RC2)

105 | | ( $ a l g o r i t h m == s e l f : : ALGORITHM RC4) ) {106 $ r e s u l t = t rue ;

107 } e l s e {108 $ r e s u l t = f a l s e ;

109 th row new E x c e p t i o n ( "Algoritmo informado i n v l i d o ." ) ;

Page 291: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

290

110 }111 r e t u r n $ r e s u l t ;

112 }113

114 /∗ ∗115 ∗ V e r i f i c a se o modo de o p e r a o v l i d o

116 ∗117 ∗ @access p r i v a t e

118 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

119 ∗ @param s t r i n g O modo de o p e r a o

120 ∗ @return b oo l TRUE se o modo de o p e r a o f o r v l i d o , FALSE caso

c o n t r r i o

121 ∗ @throws E x c e p t i o n Quando o modo de o p e r a o f o r i n v l i d o

122 ∗ /

123 p r i v a t e f u n c t i o n v e r i f y O p e r a t i o n M o d e ( $opera t ionMode ) {124 $ r e s u l t = n u l l ;

125 i f ( ( $ope ra t ionMode == s e l f : : MODE CBC)

126 | | ( $ope ra t ionMode == s e l f : : MODE ECB)

127 | | ( $ope ra t ionMode == s e l f : : MODE CFB)

128 | | ( $ope ra t ionMode == s e l f : : MODE OFB) ) {129 $ r e s u l t = t rue ;

130 } e l s e {131 $ r e s u l t = f a l s e ;

132 th row new E x c e p t i o n ( "Modo de o p e r a o ( p a r m e t r o

operationMode) n o v l i d o " ) ;

133 }134 r e t u r n $ r e s u l t ;

135 }136

137 } /∗ end o f c l a s s Symmetr icCipherCL ∗ /

138

139 ?>

1 <?php

2

3 e r r o r r e p o r t i n g ( E ALL ) ;

4

5 /∗ ∗6 ∗ s g c i − K e y P a i r B u i l d e r . php

7 ∗8 ∗ $ Id$

9 ∗10 ∗ T h i s f i l e i s p a r t o f s g c i .

Page 292: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

291

11 ∗12 ∗ A u t o m a t i c g e n e r a t e d w i t h ArgoUML 0 . 2 4 on 1 4 . 0 8 . 2 0 0 7 , 1 5 : 4 0 : 2 4

13 ∗14 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

15 ∗ /

16

17 i f (0 > vers ion compare ( PHP VERSION , ’5’ ) ) {18 d i e ( ’This file was generated for PHP 5’ ) ;

19 }20

21 /∗ ∗22 ∗ i n c l u i Assymmetr icKey

23 ∗24 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

25 ∗ /

26 r e q u i r e o n c e ( ’Labsec/Security/Crypto/KeyPairBuilderInterface.php’ ) ;

27 r e q u i r e o n c e ( ’Labsec/Security/Crypto/AssymmetricKey.php’ ) ;

28 r e q u i r e o n c e ( ’Labsec/Security/Crypto/SymmetricCipherInterface.php’ ) ;

29

30 /∗ ∗31 ∗ C l a s s e r e s p o n s v e l p e l a c o n s t r u o de um par de c h av es

32 ∗33 ∗ @access p u b l i c

34 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

35 ∗ /

36 c l a s s L a b s e c C L S e c u r i t y C r y p t o K e y P a i r B u i l d e r C L

37 imp lemen t s L a b s e c S e c u r i t y C r y p t o K e y P a i r B u i l d e r

38 {39 p r i v a t e $ a l g o r i t h m ;

40

41 p r i v a t e $ c i p h e r = L a b s e c S e c u r i t y C r y p t o S y m m e t r i c C i p h e r : :

ALGORITHM DES EDE3 ;

42

43 p r i v a t e $ f o r m a t = L a b s e c S e c u r i t y C r y p t o A s s y m m e t r i c K e y : : FORMAT PEM;

44

45 p r i v a t e $passwd = n u l l ;

46

47 p r i v a t e $ s i z e = L a b s e c S e c u r i t y C r y p t o A s s y m m e t r i c K e y : : SIZE DEFAULT ;

48

49 p r i v a t e $ e n g i n e = n u l l ;

50

51 p r i v a t e $keyName = n u l l ;

52

Page 293: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

292

53 /∗ ∗54 ∗ C o n s t r u t o r

55 ∗56 ∗ @access p u b l i c

57 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

58 ∗ @param s t r i n g O a l g o r i t m o da chave

59 ∗ @return v o i d

60 ∗ @throws E x c e p t i o n Quando o t i p o da chave f o r i n v l i d o

61 ∗ /

62 p u b l i c f u n c t i o n c o n s t r u c t ( $ a l g o r i t h m )

63 {64 i f ( ( $ a l g o r i t h m == L a b s e c S e c u r i t y C r y p t o A s s y m m e t r i c K e y : :

ALGORITHM RSA)

65 | | ( $ a l g o r i t h m == L a b s e c S e c u r i t y C r y p t o A s s y m m e t r i c K e y : :

ALGORITHM DSA) ) {66 $ t h i s−>a l g o r i t h m = $ a l g o r i t h m ;

67 } e l s e {68 th row new E x c e p t i o n ( "O tipo da chave ( p a r m e t r o type) deve

ser RSA ou DSA" ) ;

69 }70 }71

72 /∗ ∗73 ∗ S e t a o c i f r a d o r que s e r u t i l i z a d o para c i f r a r o par de ch a ve s

74 ∗75 ∗ @access p u b l i c

76 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

77 ∗ @param s t r i n g O nome do c i f r a d o r que s e r u t i l i z a d o

78 ∗ @return v o i d

79 ∗ @throws E x c e p t i o n Quando o a l g o r i t m o n o f o r um a l g o r i t m o

s i m t r i c o v l i d o

80 ∗ /

81 p u b l i c f u n c t i o n s e t C i p h e r ( $ c i p h e r )

82 {83 i f ( L a b s e c C L S e c u r i t y C r y p t o S y m m e t r i c C i p h e r C L : : v e r i f y A l g o r i t h m (

$ c i p h e r ) ) {84 $ t h i s−>c i p h e r = $ c i p h e r ;

85 }86 }87

88 /∗ ∗89 ∗ S e t a a senha que s e r u t i l i z a d a para c i f r a r o par de ch a ve s que

s e r gerada

Page 294: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

293

90 ∗91 ∗ @access p u b l i c

92 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

93 ∗ @param s t r i n g A senha

94 ∗ @return v o i d

95 ∗ /

96 p u b l i c f u n c t i o n s e t P a s s w d ( $passwd )

97 {98 $ t h i s−>passwd = $passwd ;

99 }100

101 /∗ ∗102 ∗ S e t a o tamanho do par de ch av es que s e r gerado

103 ∗104 ∗ @access p u b l i c

105 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

106 ∗ @param i n t O tamanho da chave

107 ∗ @return v o i d

108 ∗ @throws E x c e p t i o n Quando o tamanho da chave f o r menos ou i g u a l a 0

109 ∗ /

110 p u b l i c f u n c t i o n s e t S i z e ( $ s i z e )

111 {112 i f ( $ s i z e > 0) {113 $ t h i s−>s i z e = $ s i z e ;

114 } e l s e {115 th row new E x c e p t i o n ( "Tamanho informado i n v l i d o " ) ;

116 }117 }118

119 /∗ ∗120 ∗ S e t a a e n g i n e e o i d e n t i f i c a d o r da chave que s e r u t i l i z a d o

121 ∗122 ∗ @access p u b l i c

123 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

124 ∗ @param L a b s e c S e c u r i t y E n g i n e H s m A e n g i n e que s e r u t i l i z a d o

125 ∗ @param s t r i n g O i d e n t i f i c a d o r da chave

126 ∗ @return v o i d

127 ∗ @throws E x c e p t i o n Quando o i d e n t i f i c a d o r da chave f o r nu lo

128 ∗ /

129 p u b l i c f u n c t i o n s e t E n g i n e ( L a b s e c S e c u r i t y E n g i n e H s m $engine , $keyName )

130 {131 i f ( ( $keyName != "" ) && ( $keyName != n u l l ) ) {132 $ t h i s−>e n g i n e = $ e n g i n e ;

Page 295: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

294

133 $ t h i s−>keyName = $keyName ;

134 } e l s e {135 th row new E x c e p t i o n ( "O identificador da chave n o pode ser

nulo" ) ;

136 }137 }138

139 /∗ ∗140 ∗ Re torna o par de ch av es c r i a d o

141 ∗142 ∗ @access p u b l i c

143 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

144 ∗ @param s t r i n g argumentos e x t r a s para serem u t i l i z a d o s

145 ∗ @return L a b s e c C L S e c u r i t y C r y p t o K e y P a i r C L O par de c ha v es

146 ∗ @throws E x c e p t i o n Quando o t i p o da chave f o r i n v l i d o

147 ∗ /

148 p u b l i c f u n c t i o n g e t K e y P a i r ( $ e x t r a A r g s = n u l l )

149 {150 $ k e y P a i r = n u l l ;

151 i f ( $ t h i s−>e n g i n e == n u l l ) {152

153 $key = ( s t r i n g ) l i b c r y p t o s e c c r y p t o g e n e r a t e p r i v a t e k e y (

$ t h i s−>a l g o r i t h m ,

154 $ t h i s

−>

s i z e

,

$ t h i s

−>

c i p h e r

,

155 $ t h i s

−>

passwd

)

;

156 $ k e y P a i r = L a b s e c C L S e c u r i t y C r y p t o K e y P a i r C L : :

l o a d K e y P a i r ( $key , $ t h i s−>passwd ) ;

157

158 } e l s e {

Page 296: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

295

159 $ a l g o r i t h m =

l i b c r y p t o s e c c r y p t o a s s y m m e t r i c k e y g e t a l g o r i t h m f r o m e n g i n e

(

160 $ t h i s

−>

eng ine

−>

g e t E n g i n e P a t h

( )

,

161 $ t h i s

−>

eng ine

−>

g e t I d

( )

,

$ t h i s

−>

keyName

,

162 $ t h i s

−>

eng ine

−>

getCommands

( )

)

;

163 / / XXX

164 / / $ a l g o r i t h m = ”DSA”;

165 i f ( $ a l g o r i t h m == $ t h i s−>a l g o r i t h m ) {166 $ k e y P a i r = L a b s e c C L S e c u r i t y C r y p t o K e y P a i r C L : :

loadKeyPa i rFromEngine ( $ t h i s−>eng ine , $ t h i s−>

keyName ) ;

167 } e l s e {168 th row new E x c e p t i o n ( "A chave informada n o

do tipo definido." ) ;

169 }

Page 297: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

296

170 }171

172 r e t u r n $ k e y P a i r ;

173 }174 } /∗ end o f K e y P a i r B u i l d e r ∗ /

175

176 ?>

1 <?php

2

3 e r r o r r e p o r t i n g ( E ALL ) ;

4

5 /∗ ∗6 ∗ s g c i − KeyPair . php

7 ∗8 ∗ $ Id$

9 ∗10 ∗ T h i s f i l e i s p a r t o f s g c i .

11 ∗12 ∗ A u t o m a t i c g e n e r a t e d w i t h ArgoUML 0 . 2 4 on 1 4 . 0 8 . 2 0 0 7 , 1 5 : 4 0 : 2 4

13 ∗14 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

15 ∗ /

16

17 i f (0 > vers ion compare ( PHP VERSION , ’5’ ) ) {18 d i e ( ’This file was generated for PHP 5’ ) ;

19 }20

21 /∗ ∗22 ∗ i n c l u i Assymmetr icKey

23 ∗24 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

25 ∗ /

26 r e q u i r e o n c e ( ’Labsec/Security/Crypto/KeyPairInterface.php’ ) ;

27 r e q u i r e o n c e ( ’PrivateKeyCL.php’ ) ;

28 r e q u i r e o n c e ( ’PublicKeyCL.php’ ) ;

29

30 /∗ ∗31 ∗ C l a s s e r e s p o n s v e l p e l o g e r e n c i a m e n t o de um par de c h av es

32 ∗33 ∗ @access p u b l i c

34 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

35 ∗ /

Page 298: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

297

36 c l a s s L a b s e c C L S e c u r i t y C r y p t o K e y P a i r C L

37 imp lemen t s L a b s e c S e c u r i t y C r y p t o K e y P a i r

38 {39

40 p r i v a t e $pub l i cKey ;

41

42 p r i v a t e $ p r i v a t e K e y ;

43

44 p u b l i c s t a t i c f u n c t i o n l o a d K e y P a i r ( $key , $passwd = n u l l ) {45 $ a l g o r i t h m = l i b c r y p t o s e c c r y p t o a s s y m m e t r i c k e y g e t a l g o r i t h m ( $key

, $passwd ) ;

46 $ s i z e = l i b c r y p t o s e c c r y p t o a s s y m m e t r i c k e y g e t s i z e ( $key , $passwd )

;

47

48 / / XXX enquan to que o m d u l o n o implemen tado . . .

49 / / $ a l g o r i t h m = ”RSA”;

50 / / $ s i z e = 1024;

51

52 i f ( ( $ a l g o r i t h m == L a b s e c S e c u r i t y C r y p t o A s s y m m e t r i c K e y : :

ALGORITHM RSA)

53 | | ( $ a l g o r i t h m == L a b s e c S e c u r i t y C r y p t o A s s y m m e t r i c K e y : :

ALGORITHM DSA) ) {54 $ p r i v a t e K e y = new L a b s e c C L S e c u r i t y C r y p t o P r i v a t e K e y C L (

$key , $passwd ) ;

55 } e l s e {56 th row new E x c e p t i o n ( ’A chave informada deve ser RSA ou DSA’

) ;

57 }58

59 r e t u r n new L a b s e c C L S e c u r i t y C r y p t o K e y P a i r C L ( $ p r i v a t e K e y , $passwd )

;

60 }61

62 /∗ ∗63 ∗ S e t a a chave como sendo da e n g i n e .

64 ∗65 ∗ @access p u b l i c

66 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

67 ∗ @param L a b s e c S e c u r i t y E n g i n e H s m A e n g i n e

68 ∗ @param s t r i n g O I d e n t i f i c a d o r da chave .

69 ∗ @return L a b s e c C L S e c u r i t y C r y p t o K e y P a i r C L O par de c ha v es

70 ∗ @throws E x c e p t i o n Quando o v a l o r de $keyName f o r nu lo

Page 299: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

298

71 ∗ @throws E x c e p t i o n Quando o a l g o r i t m o da chave da e n g i n e n o f o r

s u p o r t a d a p e l a b i b l i o t e c a

72 ∗ /

73 p u b l i c s t a t i c f u n c t i o n loadKeyPa i rF romEngine (

L a b s e c S e c u r i t y E n g i n e H s m $hsm , $keyName ) {74 i f ( ! ( ( $keyName == "" ) | | ( $keyName == n u l l ) ) ) {75 $ a l g o r i t h m =

l i b c r y p t o s e c c r y p t o a s s y m m e t r i c k e y g e t a l g o r i t h m f r o m e n g i n e

(

76 $hsm

−>

g e t E n g i n e P a t h

( )

,

77 $hsm

−>

g e t I d

( )

,

$keyName

,

78 $hsm

−>

getCommands

( )

)

;

79 $ s i z e =

l i b c r y p t o s e c c r y p t o a s s y m m e t r i c k e y g e t s i z e f r o m e n g i n e

(

80 $hsm

−>

g e t E n g i n e P a t h

( )

,

81 $hsm

−>

g e t I d

Page 300: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

299

( )

,

$keyName

,

82 $hsm

−>

getCommands

( )

)

;

83 / / XXX

84 / / $ a l g o r i t h m = ”RSA”;

85 / / $ s i z e = 1024;

86

87 i f ( ( $ a l g o r i t h m ==

L a b s e c S e c u r i t y C r y p t o A s s y m m e t r i c K e y : :

ALGORITHM RSA)

88 | | ( $ a l g o r i t h m == L a b s e c S e c u r i t y C r y p t o A s s y m m e t r i c K e y : :

ALGORITHM DSA) ) {89 $ p r i v a t e K e y = new

L a b s e c C L S e c u r i t y C r y p t o P r i v a t e K e y C L ( n u l l , n u l l

, n u l l , $hsm , $keyName ) ;

90 } e l s e {91 th row new E x c e p t i o n ( ’A chave informada deve ser RSA

ou DSA’ ) ;

92 }93

94

95 r e t u r n new L a b s e c C L S e c u r i t y C r y p t o K e y P a i r C L ( $ p r i v a t e K e y ,

n u l l ) ;

96

97 } e l s e {98 th row new E x c e p t i o n ( ’O identificador da chave deve ser

diferente de nulo’ ) ;

99 }100 }101

102 /∗ ∗103 ∗ C o n s t r u t o r

104 ∗

Page 301: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

300

105 ∗ @access p u b l i c

106 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

107 ∗ @param L a b s e c S e c u r i t y C r y p t o P u b l i c K e y a chave p b l i c a

108 ∗ @param L a b s e c S e c u r i t y C r y p t o P r i v a t e K e y a chave p r i v a d a

109 ∗ @return v o i d

110 ∗ @throws E x c e p t i o n Quando o t i p o da chave f o r i n v l i d o

111 ∗ /

112 p r i v a t e f u n c t i o n c o n s t r u c t ( L a b s e c S e c u r i t y C r y p t o P r i v a t e K e y

$ p r i v a t e K e y , $passwd = n u l l ) {113 $ t h i s−>p r i v a t e K e y = $ p r i v a t e K e y ;

114 $ t h i s−>pub l i cKey = $ t h i s−>g e t P u b l i c K e y F r o m P r i v a t e K e y (

$ p r i v a t e K e y , $passwd ) ;

115 }116

117 /∗ ∗118 ∗ Re torna uma chave p b l i c a no mesmo f o r m a t o da chave p r i v a d a . No

caso de uma

119 ∗ chave em engine , e l a r e t o r n a r no f o r m a t o PEM

120 ∗121 ∗ @access p u b l i c

122 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

123 ∗ @param s t r i n g A senha que f o i u t i l i z a d a na e n c r i p t a o

124 ∗ @return L a b s e c S e c u r i t y C r y p t o P u b l i c K e y A chave p b l i c a

125 ∗ /

126 p r i v a t e f u n c t i o n g e t P u b l i c K e y F r o m P r i v a t e K e y (

L a b s e c S e c u r i t y C r y p t o P r i v a t e K e y $ p r i v a t e K e y , $passwd = n u l l )

127 {128 / / v e r i f i c a se a chave p r i v a d a e s t em hsm

129 i f ( $ p r i v a t e K e y−>useEng ine ( ) ) {130 $hsm = $ p r i v a t e K e y−>g e t E n g i n e ( ) ;

131 $keyName = $ p r i v a t e K e y−>getKeyName ( ) ;

132 $ r e t =

l i b c r y p t o s e c c r y p t o g e t p u b l i c k e y f r o m e n g i n e (

$hsm−>g e t E n g i n e P a t h ( ) ,

133 $hsm

−>

g e t I d

( )

,

$keyName

,

Page 302: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

301

134 $hsm

−>

getCommands

( )

)

;

135 } e l s e {136 $ r e t = l i b c r y p t o s e c c r y p t o g e t p u b l i c k e y (

$ p r i v a t e K e y−>getPemEncoded ( ) , $passwd ) ;

137 }138

139 $pub l i cKey = new L a b s e c C L S e c u r i t y C r y p t o P u b l i c K e y C L ( $ r e t [

’key’ ] ) ;

140

141 r e t u r n $pub l i cKey ;

142 }143

144 /∗ ∗145 ∗ Re torna a chave p b l i c a

146 ∗147 ∗ @access p u b l i c

148 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

149 ∗ @return L a b s e c S e c u r i t y C r y p t o P u b l i c K e y A chave p b l i c a

150 ∗ /

151 p u b l i c f u n c t i o n g e t P u b l i c K e y ( )

152 {153 r e t u r n $ t h i s−>pub l i cKey ;

154 }155

156 /∗ ∗157 ∗ Re torna a chave p r i v a d a

158 ∗159 ∗ @access p u b l i c

160 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

161 ∗ @return L a b s e c S e c u r i t y C r y p t o P r i v a t e c K e y A chave p r i v a d a

162 ∗ /

163 p u b l i c f u n c t i o n g e t P r i v a t e K e y ( )

164 {165 r e t u r n $ t h i s−>p r i v a t e K e y ;

166 }167

168

Page 303: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

302

169 } /∗ end o f KeyPair ∗ /

170

171 ?>

1 <?php

2 / / DOC t e r m i n a r d o c u m e n t a o

3

4 e r r o r r e p o r t i n g ( E ALL ) ;

5

6 /∗ ∗7 ∗ t e s t e − c l a s s . OpenHSMdEngine . php

8 ∗9 ∗ $ Id$

10 ∗11 ∗ T h i s f i l e i s p a r t o f t e s t e .

12 ∗13 ∗ A u t o m a t i c g e n e r a t e d w i t h ArgoUML 0 . 2 4 on 2 6 . 0 7 . 2 0 0 7 , 1 2 : 3 8 : 2 0

14 ∗15 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

16 ∗ /

17

18 i f (0 > vers ion compare ( PHP VERSION , ’5’ ) ) {19 d i e ( ’This file was generated for PHP 5’ ) ;

20 }21

22 /∗ ∗23 ∗ Implementa a I n t e r f a c e Engine

24 ∗25 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

26 ∗ /

27 r e q u i r e o n c e ( ’Labsec/Security/Engine/HsmInterface.php’ ) ;

28

29 /∗ ∗30 ∗ Es ta c l a s s e f o i implemen tada para s e r u t i l i z a d a com o HSM

31 ∗ d e s e n v o l v i d o p e l o LabSEC

32 ∗33 ∗ @access p u b l i c

34 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

35 ∗ /

36 c l a s s LabsecCL Securi ty Engine OpenHSMdEngineCL

37 imp lemen t s L a b s e c S e c u r i t y E n g i n e H s m

38 {39

Page 304: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

303

40 / / ID da Engine . N o tem t i p o , p o i s pode s e r i n t , hexa , e t c

41 p r i v a t e $eng ine ID ;

42 p r i v a t e $ e n g i n e P a t h ;

43 p r i v a t e $commands = array ( ) ;

44

45 /∗ ∗46 ∗ C o n s t r u t o r

47 ∗48 ∗ @access p u b l i c

49 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

50 ∗ @param s t r i n g E n d e r e o (HOST) do HSM

51 ∗ @param s t r i n g I d e n t i f i c a d o ( ID ) do HSM

52 ∗ @return v o i d

53 ∗ @throws E x c e p t i o n Quando $ e n g i n e P a t h n o v a l i d o

54 ∗ @throws E x c e p t i o n Quando $ e n g i n e I d n o v a l i d o

55 ∗ /

56 p u b l i c f u n c t i o n c o n s t r u c t ( $ e n g i n e P a t h , $ e n g i n e I d )

57 {58 i f ( $ e n g i n e I d != n u l l && $ e n g i n e I d != "" ) {59 i f ( $ e n g i n e P a t h != n u l l && $ e n g i n e P a t h != "" ) {60 $ t h i s−>eng ine ID = $ e n g i n e I d ;

61 $ t h i s−>e n g i n e P a t h = $ e n g i n e P a t h ;

62 } e l s e {63 th row new E x c e p t i o n ( ’O valor de enginePath n o

valido.’ ) ;

64 }65 } e l s e {66 th row new E x c e p t i o n ( ’O valor de engineId n o valido.’ )

;

67 }68 }69

70 /∗ ∗71 ∗ S e t a o ID do HSM.

72 ∗73 ∗ @access p u b l i c

74 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

75 ∗ @param s t r i n g o ID do HSM

76 ∗ @return v o i d

77 ∗ @throws E x c e p t i o n Quando o v a l o r passado como p a r m e t r o n o

v a l i d o

78 ∗ /

79 p u b l i c f u n c t i o n s e t I d ( $ i d )

Page 305: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

304

80 {81 i f ( $ i d != n u l l && $ i d != "" ) {82 $ t h i s−>eng ine ID = $ i d ;

83 } e l s e {84 th row new E x c e p t i o n ( ’O valor de Id n o valido.’ ) ;

85 }86 }87

88 /∗ ∗89 ∗ Re torna o ID do HSM.

90 ∗91 ∗ @access p u b l i c

92 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

93 ∗ @return s t r i n g O ID do HSM em forma de uma s t r i n g .

94 ∗ Se o ID n o e s t i v e r se tado ,

d i s p a r a e x c e o

95 ∗96 ∗ /

97 p u b l i c f u n c t i o n g e t I d ( )

98 {99 r e t u r n ( s t r i n g ) $ t h i s−>eng ine ID ;

100 }101

102 /∗ ∗103 ∗ R e a l i z a um t e s t e de c o n e x o , para v e r i f i c a r se o HSM e s t

respondendo .

104 ∗105 ∗ @access p u b l i c

106 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

107 ∗ @return boo lean TRUE se o HSM e s t i v e r OK.

108 ∗ FALSE se houver algum problema

c o n e c t a n d o com o HSM

109 ∗ /

110 p u b l i c f u n c t i o n t e s t I n i t ( )

111 {112 $ r e t = l i b c r y p t o s e c e n g i n e t e s t i n i t ( $ t h i s−>e n g i n e P a t h ,

113 $ t h i s

−>

engineID

,

114 $ t h i s

−>

Page 306: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

305

commands

)

;

115

116 r e t u r n $ r e t ;

117 }118

119 /∗ ∗120 ∗ Re torna a l i s t a de comandos d e f i n i d o s para o HSM.

121 ∗122 ∗ @access p u b l i c

123 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

124 ∗ @return a r r a y Array c o n t e n d o os comandos d i s p o n v e i s do HSM

125 ∗ /

126 p u b l i c f u n c t i o n getCommands ( )

127 {128 r e t u r n $ t h i s−>commands ;

129 }130

131 /∗ ∗132 ∗ A d i c i o n a um comando na l i s t a de comandos . Um comando t r a t a d o

133 ∗ como um par ( chave , v a l o r )<br>

134 ∗ Se o comando j e x i s t i r , o v a l o r do comando s u b t i t u d o . <br>

135 ∗ S e n o o comando a d i c i o n a d o ao f i n a l da l i s t a de comandos . <br>

136 ∗137 ∗138 ∗ @access p u b l i c

139 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

140 ∗ @param s t r i n g A ” chave ” do comando

141 ∗ @param s t r i n g O ” v a l o r ” da chave do comando . E s t e p a r m e t r o

o p c i o n a l .

142 ∗ @return v o i d

143 ∗ @throws E x c e p t i o n Quando o v a l o r passado como p a r m e t r o n o

v a l i d o

144 ∗ /

145 p u b l i c f u n c t i o n addCommand ( $key , $ v a l u e = n u l l )

146 {147 i f ( $key != n u l l && $key != "" ) {148 $ t h i s−>commands [ $key ] = $ v a l u e ;

149 } e l s e {150 th row new E x c e p t i o n ( ’O valor de Id n o valido.’ ) ;

151 }

Page 307: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

306

152 }153

154 /∗ ∗155 ∗ Re torna a e n d e r e o do HSM.

156 ∗157 ∗ @access p u b l i c

158 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

159 ∗ @return a r r a y Array c o n t e n d o os comandos d i s p o n v e i s do HSM

160 ∗ /

161 p u b l i c f u n c t i o n g e t E n g i n e P a t h ( )

162 {163 r e t u r n ( s t r i n g ) $ t h i s−>e n g i n e P a t h ;

164 }165

166 } /∗ f i m da c l a s s e OpenHSMdEngine ∗ /

167

168 ?>

1 <?php

2 / / TODO FAZER DOCUMENTA O

3

4 e r r o r r e p o r t i n g ( E ALL ) ;

5

6 /∗ ∗7 ∗ s g c i − c l a s s . C o n v e r t e r s . php

8 ∗9 ∗ $ Id$

10 ∗11 ∗ T h i s f i l e i s p a r t o f s g c i .

12 ∗13 ∗ A u t o m a t i c g e n e r a t e d w i t h ArgoUML 0 . 2 4 on 1 4 . 0 8 . 2 0 0 7 , 1 7 : 0 8 : 4 5

14 ∗15 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

16 ∗ /

17

18 i f (0 > vers ion compare ( PHP VERSION , ’5’ ) ) {19 d i e ( ’This file was generated for PHP 5’ ) ;

20 }21

22 r e q u i r e o n c e ( ’LabsecCL/Security/Certification/Extension/KeyUsageExtensionCL

.php’ ) ;

23 r e q u i r e o n c e ( ’LabsecCL/Security/Certification/Extension/

BasicConstraintsExtensionCL.php’ ) ;

Page 308: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

307

24 r e q u i r e o n c e ( ’LabsecCL/Security/Certification/Extension/

SubjectKeyIdentifierExtensionCL.php’ ) ;

25 r e q u i r e o n c e ( ’LabsecCL/Security/Certification/Extension/

AuthorityKeyIdentifierExtensionCL.php’ ) ;

26 r e q u i r e o n c e ( ’LabsecCL/Security/Certification/Extension/

ExtendedKeyUsageExtensionCL.php’ ) ;

27 r e q u i r e o n c e ( ’LabsecCL/Security/Certification/Extension/

SubjectAlternativeNameExtensionCL.php’ ) ;

28 r e q u i r e o n c e ( ’LabsecCL/Security/Certification/Extension/

CertificatePoliciesExtensionCL.php’ ) ;

29 r e q u i r e o n c e ( ’Labsec/Security/Certification/Extension/Policy/CPSUri.php’ ) ;

30 r e q u i r e o n c e ( ’Labsec/Security/Certification/Extension/Policy/UserNotice.php

’ ) ;

31

32 /∗ ∗33 ∗ C l a s s e u t i l i t r i a com c o n v e r s o r e s . Os p a r m e t r o s p a s sa d o s

34 ∗ para e s t a c l a s s e DEVEM e s t a r em f o r m a t o PEM.

35 ∗36 ∗ @access p u b l i c

37 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

38 ∗ /

39 c l a s s L a b s e c C L S e c u r i t y U t i l P a r s e r s

40 {41

42 /∗ ∗43 ∗ Trans forma um Array em um RDNSequence

44 ∗45 ∗ @access p r i v a t e

46 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

47 ∗ @param a r r a y Array com os campos a t r a n s f o r m a r em RDNSequence .

48 ∗ @return RDNSequence o RDNSequence c r i a d o a p a r t i r do a r r a y .

49 ∗ /

50 p u b l i c s t a t i c f u n c t i o n t ransformArrayToRDNSequence (& $ a r r a y )

51 {52 / / i n s t a n c i a um RDNSequence

53 $rdn = new

L a b s e c S e c u r i t y C e r t i f i c a t i o n D a t a T y p e s R D N S e q u e n c e ( ) ;

54

55 / / a d i c i o n a cada e n t r a d a num o b j e t o RDNSequence

56 foreach ( $ a r r a y as $key => $ c o u n t e r ) {57 foreach ( $ c o u n t e r a s $ v a l u e ) {58 $rdn−>ad d E n t r y ( $key , $ v a l u e ) ;

59 }

Page 309: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

308

60 }61

62 r e t u r n $rdn ;

63 }64

65 p u b l i c s t a t i c f u n c t i o n c o n v e r t C e r t i f i c a t e E x t e n s i o n s (& $ d a t a )

66 {67 $ e x t e n s i o n s = array ( ) ;

68

69 $keyUsage = L a b s e c C L S e c u r i t y U t i l P a r s e r s : :

c o n v e r t K e y U s a g e E x t e n s i o n ( $ d a t a ) ;

70

71 i f ( $keyUsage != n u l l ) {72 $ e x t e n s i o n s [ $keyUsage−>ge tO id ( ) ] = $keyUsage ;

73 }74

75 / /

−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−//

76 $ b a s i c C o n s t r a i n t s = L a b s e c C L S e c u r i t y U t i l P a r s e r s : :

c o n v e r t B a s i c C o n s t r a i n t s E x t e n s i o n ( $ d a t a ) ;

77

78 i f ( $ b a s i c C o n s t r a i n t s != n u l l ) {79 $ e x t e n s i o n s [ $ b a s i c C o n s t r a i n t s −>ge tO id ( ) ] =

$ b a s i c C o n s t r a i n t s ;

80 }81 / /

−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−//

82

83 $ s u b j e c t K e y I d e n t i f i e r = L a b s e c C L S e c u r i t y U t i l P a r s e r s : :

c o n v e r t S u b j e c t K e y I d e n t i f i e r E x t e n s i o n ( $ d a t a ) ;

84

85 i f ( $ s u b j e c t K e y I d e n t i f i e r != n u l l ) {86 $ e x t e n s i o n s [ $ s u b j e c t K e y I d e n t i f i e r −>ge t O i d ( ) ] =

$ s u b j e c t K e y I d e n t i f i e r ;

87 }88 / /

−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−//

89

90 $ a u t h o r i t y K e y I d e n t i f i e r = L a b s e c C L S e c u r i t y U t i l P a r s e r s : :

c o n v e r t A u t h o r i t y K e y I d e n t i f i e r E x t e n s i o n ( $ d a t a ) ;

Page 310: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

309

91

92 i f ( $ a u t h o r i t y K e y I d e n t i f i e r != n u l l ) {93 $ e x t e n s i o n s [ $ a u t h o r i t y K e y I d e n t i f i e r −>ge t O i d ( ) ] =

$ a u t h o r i t y K e y I d e n t i f i e r ;

94 }95 / /

−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−//

96

97 $extendedKeyUsage = L a b s e c C L S e c u r i t y U t i l P a r s e r s : :

c o n v e r t E x t e n d e d K e y U s a g e E x t e n s i o n ( $ d a t a ) ;

98

99 i f ( $extendedKeyUsage != n u l l ) {100 $ e x t e n s i o n s [ $extendedKeyUsage−>ge tO id ( ) ] =

$extendedKeyUsage ;

101 }102 / /

−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−//

103

104 $s u b j ec tA l tName = L a b s e c C L S e c u r i t y U t i l P a r s e r s : :

c o n v e r t S u b j e c t A l t e r n a t i v e N a m e E x t e n s i o n ( $ d a t a ) ;

105

106 i f ( $ sub j ec tA l tName != n u l l ) {107 $ e x t e n s i o n s [ $sub jec tAl tName−>ge tO id ( ) ] =

$sub j ec tA l tName ;

108 }109 / /

−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−//

110

111 $ p o l i c i e s = L a b s e c C L S e c u r i t y U t i l P a r s e r s : :

c o n v e r t P o l i c i e s E x t e n s i o n ( $ d a t a ) ;

112

113 i f ( $ p o l i c i e s != n u l l ) {114 / / TODO v e r i f i c a r se pode s e r o OID n e s s e caso

115 $ e x t e n s i o n s [ $ p o l i c i e s −>ge tO id ( ) ] = $ p o l i c i e s ;

116 }117 / /

−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−//

118

119 / / p r i n t r ( $ e x t e n s i o n s ) ;

Page 311: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

310

120

121 r e t u r n $ e x t e n s i o n s ;

122

123 }124

125 p u b l i c s t a t i c f u n c t i o n c o n v e r t C R L E x t e n s i o n s (& $ d a t a )

126 {127 / / TODO FAZER

128 }129

130 p u b l i c s t a t i c f u n c t i o n c o n v e r t C e r t i f i c a t e E x t e n s i o n s T o A r r a y (&

$ e x t e n s i o n s )

131 {132 / / TODO FAZER

133 r e t u r n array ( ) ;

134 }135

136 p u b l i c s t a t i c f u n c t i o n conve r tCRLExtens ionsToAr ray (& $ e x t e n s i o n s )

137 {138 / / TODO FAZER

139 }140

141 p r i v a t e f u n c t i o n c o n v e r t K e y U s a g e E x t e n s i o n (& $ d a t a )

142 {143 $keyUsage =

l i b c r y p t o s e c c e r t i f i c a t e e x t e n s i o n g e t k e y u s a g e ( $ d a t a ) ;

144

145 i f ( $keyUsage != n u l l ) {146 $keyUsageEx tens ion = new

L a b s e c C L S e c u r i t y C e r t i f i c a t i o n E x t e n s i o n K e y U s a g e E x t e n s i o n C L

( ) ;

147

148 / / pega o c r i t i c a l do m d u l o e s e t a na e x t e n s o

149 i f ( $keyUsage [ $keyUsageExtens ion−>ge tO id ( ) ] [ ’

critical’ ] ) {150 $keyUsageExtens ion−> s e t C r i t i c a l ( t rue ) ;

151 }152

153 / / pega o v a l u e do m d u l o

154 $ v a l u e = $keyUsage [ $keyUsageExtens ion−>ge tO i d ( ) ] [ ’

value’ ] ;

155

156 / / a p l i c a as m s c a r a s

Page 312: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

311

157 $usage = array ( ) ;

158 $usage [ ’digitalSignature’ ] = ( $ v a l u e & 2) ? TRUE :

FALSE ;

159 $usage [ ’nonRepudiation’ ] = ( $ v a l u e & 4) ? TRUE :

FALSE ;

160 $usage [ ’keyEncipherment’ ] = ( $ v a l u e & 8) ? TRUE :

FALSE ;

161 $usage [ ’dataEncipherment’ ] = ( $ v a l u e & 16) ? TRUE :

FALSE ;

162 $usage [ ’keyAgreement’ ] = ( $ v a l u e & 32) ? TRUE :FALSE;

163 $usage [ ’keyCertSign’ ] = ( $ v a l u e & 64) ? TRUE :FALSE ;

164 $usage [ ’cRLSign’ ] = ( $ v a l u e & 128) ? TRUE :FALSE ;

165 $usage [ ’encipherOnly’ ] = ( $ v a l u e & 256) ? TRUE :

FALSE ;

166 $usage [ ’decipherOnly’ ] = ( $ v a l u e & 512) ? TRUE :

FALSE ;

167

168 $keyUsageExtens ion−>addUsage (

L a b s e c C L S e c u r i t y C e r t i f i c a t i o n E x t e n s i o n K e y U s a g e E x t e n s i o n C L

: : DIGITAL SIGNATURE , $usage [ ’digitalSignature’ ]

) ;

169 $keyUsageExtens ion−>addUsage (

L a b s e c C L S e c u r i t y C e r t i f i c a t i o n E x t e n s i o n K e y U s a g e E x t e n s i o n C L

: : NON REPUDIATION , $usage [ ’nonRepudiation’ ] ) ;

170 $keyUsageExtens ion−>addUsage (

L a b s e c C L S e c u r i t y C e r t i f i c a t i o n E x t e n s i o n K e y U s a g e E x t e n s i o n C L

: : KEY ENCIPHERMENT, $usage [ ’keyEncipherment’ ] ) ;

171 $keyUsageExtens ion−>addUsage (

L a b s e c C L S e c u r i t y C e r t i f i c a t i o n E x t e n s i o n K e y U s a g e E x t e n s i o n C L

: : DATA ENCIPHERMENT, $usage [ ’dataEncipherment’ ]

) ;

172 $keyUsageExtens ion−>addUsage (

L a b s e c C L S e c u r i t y C e r t i f i c a t i o n E x t e n s i o n K e y U s a g e E x t e n s i o n C L

: : KEY AGREEMENT, $usage [ ’keyAgreement’ ] ) ;

173 $keyUsageExtens ion−>addUsage (

L a b s e c C L S e c u r i t y C e r t i f i c a t i o n E x t e n s i o n K e y U s a g e E x t e n s i o n C L

: : KEY CERT SIGN , $usage [ ’keyCertSign’ ] ) ;

174 $keyUsageExtens ion−>addUsage (

L a b s e c C L S e c u r i t y C e r t i f i c a t i o n E x t e n s i o n K e y U s a g e E x t e n s i o n C L

: : CRL SIGN , $usage [ ’cRLSign’ ] ) ;

175 $keyUsageExtens ion−>addUsage (

L a b s e c C L S e c u r i t y C e r t i f i c a t i o n E x t e n s i o n K e y U s a g e E x t e n s i o n C L

Page 313: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

312

: : ENCIPHER ONLY , $usage [ ’encipherOnly’ ] ) ;

176 $keyUsageExtens ion−>addUsage (

L a b s e c C L S e c u r i t y C e r t i f i c a t i o n E x t e n s i o n K e y U s a g e E x t e n s i o n C L

: : DECIPHER ONLY , $usage [ ’decipherOnly’ ] ) ;

177

178 $ r e s u l t = $keyUsageEx tens ion ;

179

180 } e l s e {181 $ r e s u l t = n u l l ;

182 }183

184 r e t u r n $ r e s u l t ;

185 }186

187 p r i v a t e f u n c t i o n c o n v e r t B a s i c C o n s t r a i n t s E x t e n s i o n (& $ d a t a )

188 {189 / / pega o v a l o r do m d u l o

190 $ i sCa =

l i b c r y p t o s e c c e r t i f i c a t e e x t e n s i o n g e t b a s i c c o n s t r a i n t s

( $ d a t a ) ;

191

192 / / s e e x i s t i r a e x t e n s o

193 i f ( $ i sCa != n u l l ) {194 $ b a s i c C o n s t r a i n t s = new

L a b s e c C L S e c u r i t y C e r t i f i c a t i o n E x t e n s i o n B a s i c C o n s t r a i n t s E x t e n s i o n C L

( ) ;

195

196 / / v e r i f i c a se c r i t i c a l

197 i f ( $ i sCa [ $ b a s i c C o n s t r a i n t s −>ge tO id ( ) ] [ ’critical’ ] )

{198 $ b a s i c C o n s t r a i n t s −> s e t C r i t i c a l ( t rue ) ;

199 }200

201 / / s e t a o v a l o r de CA

202 $ b a s i c C o n s t r a i n t s −>s e t C a ( ( boo l ) $ i sCa [

$ b a s i c C o n s t r a i n t s −>ge tO i d ( ) ] [ ’value’ ] [ ’ca’ ] ) ;

203

204 / / pega o v a l o r do p a t h L e n g t h

205 $ p a t h L e n g t h = $ i sCa [ $ b a s i c C o n s t r a i n t s −>ge tO i d ( ) ] [ ’

value’ ] [ ’pathLen’ ] ;

206 / / s e o v a l o r f o r d i f e r e n t e de NULL , s e t a o v a l o r de

Pa thLeng th

207 i f ( $ p a t h L e n g t h != n u l l ) {

Page 314: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

313

208 $ b a s i c C o n s t r a i n t s −>s e t P a t h L e n g t h (

$ p a t h L e n g t h ) ;

209 }210

211 $ r e s u l t = $ b a s i c C o n s t r a i n t s ;

212

213 } e l s e {214 $ r e s u l t = n u l l ;

215 }216

217 r e t u r n $ r e s u l t ;

218 }219

220 p r i v a t e f u n c t i o n c o n v e r t S u b j e c t K e y I d e n t i f i e r E x t e n s i o n (& $ d a t a )

221 {222 / / pega o v a l o r no m d u l o

223 $ s u b j e c t K e y I d =

l i b c r y p t o s e c c e r t i f i c a t e e x t e n s i o n g e t s u b j e c t k e y i d e n t i f i e r

( $ d a t a ) ;

224

225 / / Se a e x t e n s o e x i s t i r

226 i f ( $ s u b j e c t K e y I d != n u l l ) {227 / / c r i a o o b j e t o , e s e t a o a t r i b u t o

228 $ s u b j e c t K e y I d E x t e n s i o n = new

L a b s e c C L S e c u r i t y C e r t i f i c a t i o n E x t e n s i o n S u b j e c t K e y I d e n t i f i e r E x t e n s i o n C L

( ) ;

229 $ s u b j e c t K e y I d E x t e n s i o n−>s e t K e y I d e n t i f i e r (

$ s u b j e c t K e y I d [ $ s u b j e c t K e y I d E x t e n s i o n−>ge tO id ( ) ] [

’value’ ] [ ’keyIdentifier’ ] ) ;

230

231 / / v e r i f i c a se c r i t i c a l

232 i f ( $ s u b j e c t K e y I d [ $ s u b j e c t K e y I d E x t e n s i o n−>ge t O i d ( )

] [ ’critical’ ] ) {233 $ s u b j e c t K e y I d E x t e n s i o n−> s e t C r i t i c a l ( t rue ) ;

234 }235

236 $ r e s u l t = $ s u b j e c t K e y I d E x t e n s i o n ;

237

238 } e l s e {239 $ r e s u l t = n u l l ;

240 }241

242 r e t u r n $ r e s u l t ;

Page 315: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

314

243 }244

245 p r i v a t e f u n c t i o n c o n v e r t A u t h o r i t y K e y I d e n t i f i e r E x t e n s i o n (& $ d a t a )

246 {247 / / TODO v e r como f a z e r , para n o a d i c i o n a r , caso s e j a n u l l

os 3 campos

248

249 / / a d i c i o n a o K e y I d e n t i f i e r , s e e x i s t i r

250 $ e x t e n s i o n =

l i b c r y p t o s e c c e r t i f i c a t e e x t e n s i o n g e t a u t h o r i t y k e y i d e n t i f i e r

( $ d a t a ) ;

251

252 i f ( $ e x t e n s i o n != n u l l ) {253 / / c r i a um o b j e t o

254 $ a u t h o r i t y K e y I d E x t e n s i o n = new

L a b s e c C L S e c u r i t y C e r t i f i c a t i o n E x t e n s i o n A u t h o r i t y K e y I d e n t i f i e r E x t e n s i o n C L

( ) ;

255

256

257 / / v e r i f i c a se c r i t i c a l

258 i f ( $ e x t e n s i o n [ $ a u t h o r i t y K e y I d E x t e n s i o n−>ge tO id ( ) ] [

’critical’ ] ) {259 $ a u t h o r i t y K e y I d E x t e n s i o n−> s e t C r i t i c a l ( t rue )

;

260 }261

262 / / pega o campo K e y I d e n t i f i e r

263 $keyID = $ e x t e n s i o n [ $ a u t h o r i t y K e y I d E x t e n s i o n−>

ge t O i d ( ) ] [ ’value’ ] [ ’keyIdentifier’ ] ;

264 i f ( $keyID != NULL) {265 $ a u t h o r i t y K e y I d E x t e n s i o n−>s e t K e y I d e n t i f i e r (

$keyID ) ;

266 }267

268 / / pega o campo c e r t I s s u e r

269 $ a u t h o r i t y C e r t I s s u e r = $ e x t e n s i o n [

$ a u t h o r i t y K e y I d E x t e n s i o n−>ge tO id ( ) ] [ ’value’ ] [ ’

certIssuer’ ] ;

270 i f ( $ a u t h o r i t y C e r t I s s u e r != n u l l ) {271 / / $generalNames = new

L a b s e c S e c u r i t y C e r t i f i c a t i o n D a t a T y p e s G e n e r a l N a m e s

( ) ;

Page 316: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

315

272 / / TODO como s a b e r qua l o t i p o de g e n e r a l

name?

273 / / $ a u t h o r i t y K e y I d E x t e n s i o n−>

s e t A u t h o r i t y C e r t I s s u e r ( ) ;

274 }275 / / pega o campo s e r i a l N u m b e r

276 $ a u t h o r i t y C e r t S e r i a l N u m b e r = $ e x t e n s i o n [

$ a u t h o r i t y K e y I d E x t e n s i o n−>ge tO id ( ) ] [ ’value’ ] [ ’

certSerialNumber’ ] ;

277 i f ( $ a u t h o r i t y C e r t S e r i a l N u m b e r != n u l l ) {278 $ a u t h o r i t y K e y I d E x t e n s i o n−>

s e t A u t h o r i t y C e r t S e r i a l N u m b e r (

$ a u t h o r i t y C e r t S e r i a l N u m b e r ) ;

279 }280

281 $ r e s u l t = $ a u t h o r i t y K e y I d E x t e n s i o n ;

282

283 } e l s e {284 $ r e s u l t = n u l l ;

285 }286

287 r e t u r n $ r e s u l t ;

288 }289

290 p r i v a t e f u n c t i o n c o n v e r t E x t e n d e d K e y U s a g e E x t e n s i o n (& $ d a t a )

291 {292 $extendedKeyUsage =

l i b c r y p t o s e c c e r t i f i c a t e e x t e n s i o n g e t e x t e n d e d k e y u s a g e

( $ d a t a ) ;

293

294 i f ( $extendedKeyUsage != n u l l ) {295 $ex tendedKeyUsageEx tens ion = new

L a b s e c C L S e c u r i t y C e r t i f i c a t i o n E x t e n s i o n E x t e n d e d K e y U s a g e E x t e n s i o n C L

( ) ;

296

297 / / v e r i f i c a se c r i t i c a l

298 i f ( $extendedKeyUsage [ $ex tendedKeyUsageExtens ion−>

ge t O i d ( ) ] [ ’critical’ ] ) {299 $aex tendedKeyUsageEx tens ion−> s e t C r i t i c a l (

t rue ) ;

300 }301

Page 317: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

316

302 / / p e r c o r r e o a r r a y r e t o r n a d o , e v a i a d i c i o n a n d o os

OIDs

303 foreach ( $extendedKeyUsage [

$ex tendedKeyUsageExtens ion−>ge tO id ( ) ] [ ’value’ ]

a s $ v a l u e ) {304 $o id = new

L a b s e c S e c u r i t y C e r t i f i c a t i o n O b j e c t I d e n t i f i e r

( ) ;

305 $oid−>setOID ( $ v a l u e ) ;

306 $ex tendedKeyUsageExtens ion−>addUsage ( $o id ) ;

307 }308

309 $ r e s u l t = $ex t endedKeyUsageEx tens ion ;

310

311 } e l s e {312 $ r e s u l t = n u l l ;

313 }314

315 r e t u r n $ r e s u l t ;

316 }317

318 p r i v a t e f u n c t i o n c o n v e r t S u b j e c t A l t e r n a t i v e N a m e E x t e n s i o n (& $ d a t a )

319 {320 $ a l t e r n a t i v e N a m e =

l i b c r y p t o s e c c e r t i f i c a t e e x t e n s i o n g e t s u b j e c t a l t e r n a t i v e n a m e

( $ d a t a ) ;

321

322 i f ( $ a l t e r n a t i v e N a m e != n u l l ) {323 $ a l t e r n a t i v e N a m e = new

L a b s e c C L S e c u r i t y C e r t i f i c a t i o n E x t e n s i o n S u b j e c t A l t e r n a t i v e N a m e E x t e n s i o n C L

( ) ;

324

325 / / $ a l t e r n a t i v e N a m e−>s e t S u b j e c t A l t e r n a t i v e N a m e ( ) ;

326 / / TODO como s a b e r qua l o t i p o de g e n e r a l name?

327 }328 }329

330 p r i v a t e f u n c t i o n c o n v e r t I s s u e r A l t e r n a t i v e N a m e E x t e n s i o n (& $ d a t a )

331 {332 $ a l t e r n a t i v e N a m e =

l i b c r y p t o s e c c e r t i f i c a t e e x t e n s i o n g e t i s s u e r a l t e r n a t i v e n a m e

( $ d a t a ) ;

333

Page 318: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

317

334 i f ( $ a l t e r n a t i v e N a m e != n u l l ) {335 $ a l t e r n a t i v e N a m e = new

L a b s e c C L S e c u r i t y C e r t i f i c a t i o n E x t e n s i o n I s s u e r A l t e r n a t i v e N a m e E x t e n s i o n C L

( ) ;

336

337 / / $ a l t e r n a t i v e N a m e−>s e t S u b j e c t A l t e r n a t i v e N a m e ( ) ;

338 / / TODO como s a b e r qua l o t i p o de g e n e r a l name?

339 }340 }341

342 p r i v a t e f u n c t i o n c o n v e r t P o l i c i e s E x t e n s i o n (& $ d a t a )

343 {344 $ v a l u e =

l i b c r y p t o s e c c e r t i f i c a t e e x t e n s i o n g e t c e r t i f i c a t e p o l i c i e s

( $ d a t a ) ;

345

346 i f ( $ v a l u e != n u l l ) {347

348 $ p o l i c i e s = new

L a b s e c C L S e c u r i t y C e r t i f i c a t i o n E x t e n s i o n C e r t i f i c a t e P o l i c i e s E x t e n s i o n C L

( ) ;

349

350 / / v e r i f i c a se c r i t i c a l

351 i f ( $ v a l u e [ $ p o l i c i e s −>ge t O i d ( ) ] [ ’critical’ ] ) {352 $ p o l i c i e s −> s e t C r i t i c a l ( t rue ) ;

353 }354

355 / / i n s t a n c i a os o b j e t o s

356 $ p o l i c y I n f o r m a t i o n = new

L a b s e c S e c u r i t y C e r t i f i c a t i o n E x t e n s i o n P o l i c y P o l i c y I n f o r m a t i o n

( ) ;

357

358 foreach ( $ v a l u e [ $ p o l i c i e s −>ge t O i d ( ) ] [ ’value’ ] a s

$ p o l i c y ) {359

360 / / pega os dados do c e r t i f i c a d o

361 $o id = $ p o l i c y [ ’oid_pc’ ] ;

362

363 / / s e t a o OID da PC , se houver

364 i f ( $o id != n u l l ) {365 $ o i d O b j e c t = new

L a b s e c S e c u r i t y C e r t i f i c a t i o n O b j e c t I d e n t i f i e r

( ) ;

Page 319: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

318

366 $ o i d O b j e c t−>setOID ( $o id ) ;

367

368 $ p o l i c y I n f o r m a t i o n−>

s e t P o l i c y I d e n t i f i e r ( $ o i d O b j e c t ) ;

369 }370

371 f o r ( $ i = 0 ; $ i < s i z e o f ( $ p o l i c y ) − 1 ; $ i

++){372

373 $ p o l i c y Q u a l i f i e r = new

L a b s e c S e c u r i t y C e r t i f i c a t i o n E x t e n s i o n P o l i c y P o l i c y Q u a l i f i e r I n f o

( ) ;

374

375 $ c p s U r i = @$policy [ $ i ] [ ’url_dpc’ ] ;

376 $ n o t i c e = @$policy [ $ i ] [ ’user_notice

’ ] ;

377

378 i f ( $ c p s U r i != n u l l ) {379 / / s e houver u r l , a d i c i o n a

u r l

380 $ u r i = new

L a b s e c S e c u r i t y C e r t i f i c a t i o n E x t e n s i o n P o l i c y C P S U r i

( $ c p s U r i ) ;

381 $ p o l i c y Q u a l i f i e r −>

a d d Q u a l i f i e r ( $ u r i ) ;

382 }383

384 i f ( $ n o t i c e != n u l l ) {385 / / s e houver n o t i c e , add

u s e r n o t i c e

386 $ u s e r N o t i c e = new

L a b s e c S e c u r i t y C e r t i f i c a t i o n E x t e n s i o n P o l i c y U s e r N o t i c e

( $ n o t i c e ) ;

387 $ p o l i c y Q u a l i f i e r −>

a d d Q u a l i f i e r ( $ u s e r N o t i c e

) ;

388 }389

390 / / a d i c i o n a os o b j e t o s que e x i s t i r e m

( u s e r N o t i c e / Uri )

391 $ p o l i c y I n f o r m a t i o n−>

a d d P o l i c y Q u a l i f i e r I n f o (

$ p o l i c y Q u a l i f i e r ) ;

Page 320: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

319

392

393 }394

395 / / a d i c i o n a na E x t e n s o p o l i c y E x t e n s i o n

396 $ p o l i c i e s −>a d d P o l i c y I n f o r m a t i o n (

$ p o l i c y I n f o r m a t i o n ) ;

397

398 }399

400 $ r e s u l t a d o = $ p o l i c i e s ;

401

402 } e l s e {403 $ r e s u l t a d o = n u l l ;

404 }405

406 r e t u r n $ r e s u l t a d o ;

407 }408

409 }410

411 ?>

1 <?php

2 / / TODO t e r m i n a r d o c u m e n t a o

3 e r r o r r e p o r t i n g ( E ALL ) ;

4

5 /∗ ∗6 ∗ s g c i − c l a s s . C e r t i f i c a t e R e v o c a t i o n L i s t B u i l d e r C L . php

7 ∗8 ∗ $ Id$

9 ∗10 ∗ T h i s f i l e i s p a r t o f s g c i .

11 ∗12 ∗ A u t o m a t i c g e n e r a t e d w i t h ArgoUML 0 . 2 4 on 1 4 . 0 8 . 2 0 0 7 , 1 7 : 2 1 : 4 8

13 ∗14 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

15 ∗ /

16

17 i f (0 > vers ion compare ( PHP VERSION , ’5’ ) ) {18 d i e ( ’This file was generated for PHP 5’ ) ;

19 }20

21 /∗ ∗

Page 321: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

320

22 ∗ i n c l u d e C e r t i f i c a t e R e v o c a t i o n L i s t B u i l d e r

23 ∗24 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

25 ∗ /

26 r e q u i r e o n c e ( ’Labsec/Security/Certification/

CertificateRevocationListBuilderInterface.php’ ) ;

27

28

29 /∗ ∗30 ∗ S h o r t d e s c r i p t i o n o f c l a s s C e r t i f i c a t e R e v o c a t i o n L i s t B u i l d e r C L

31 ∗32 ∗ @access p u b l i c

33 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

34 ∗ /

35 c l a s s L a b s e c C L S e c u r i t y C e r t i f i c a t i o n C e r t i f i c a t e R e v o c a t i o n L i s t B u i l d e r C L

36 imp lemen t s L a b s e c S e c u r i t y C e r t i f i c a t i o n C e r t i f i c a t e R e v o c a t i o n L i s t B u i l d e r

37 {38 p r i v a t e $ i s s u e r ;

39

40 p r i v a t e $ t h i s U p d a t e ;

41

42 p r i v a t e $nex tUpda t e ;

43

44 p r i v a t e $ s e r i a l ;

45

46 p r i v a t e $ c r l E n t r i e s ;

47

48 p r i v a t e $ e x t e n s i o n s ;

49

50 /∗ ∗51 ∗ C o n s t r u t o r

52 ∗53 ∗ @access p u b l i c

54 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

55 ∗ @return v o i d

56 ∗ /

57 p u b l i c f u n c t i o n c o n s t r u c t ( )

58 {59 }60

61 /∗ ∗62 ∗ S h o r t d e s c r i p t i o n o f method s e t I s s u e r

63 ∗

Page 322: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

321

64 ∗ @access p u b l i c

65 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

66 ∗ @param RDNSequence

67 ∗ @return v o i d

68 ∗ /

69 p u b l i c f u n c t i o n s e t I s s u e r (

L a b s e c S e c u r i t y C e r t i f i c a t i o n D a t a T y p e s R D N S e q u e n c e $ i s s u e r )

70 {71 $ t h i s−> i s s u e r = $ i s s u e r ;

72 }73

74 /∗ ∗75 ∗ S h o r t d e s c r i p t i o n o f method s e t T h i s U p d a t e

76 ∗77 ∗ @access p u b l i c

78 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

79 ∗ @param Zend Date

80 ∗ @return v o i d

81 ∗ /

82 p u b l i c f u n c t i o n s e t T h i s U p d a t e ( Zend Date $ d a t e )

83 {84 $ t h i s−>t h i s U p d a t e = $ d a t e ;

85 }86

87 /∗ ∗88 ∗ S h o r t d e s c r i p t i o n o f method s e t N e x t U p d a t e

89 ∗90 ∗ @access p u b l i c

91 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

92 ∗ @param Zend Date

93 ∗ @return v o i d

94 ∗ /

95 p u b l i c f u n c t i o n s e t N e x t U p d a t e ( Zend Date $ d a t e )

96 {97 $ t h i s−>n e x t U p d a t e = $ d a t e ;

98 }99

100 /∗ ∗101 ∗ S h o r t d e s c r i p t i o n o f method s e t S e r i a l

102 ∗103 ∗ @access p u b l i c

104 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

105 ∗ @param s t r i n g

Page 323: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

322

106 ∗ @return v o i d

107 ∗ /

108 p u b l i c f u n c t i o n s e t S e r i a l ( $ s e r i a l )

109 {110 $ t h i s−> s e r i a l = $ s e r i a l ;

111 }112

113 /∗ ∗114 ∗ S h o r t d e s c r i p t i o n o f method addCRLEntry

115 ∗116 ∗ @access p u b l i c

117 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

118 ∗ @param CRLEntry

119 ∗ @return v o i d

120 ∗ /

121 p u b l i c f u n c t i o n addCRLEntry ( CRLEntry $ c r l E n t r y )

122 {123 $ t h i s−>c r l E n t r i e s [ ] = $ c r l E n t r y ;

124 }125

126 /∗ ∗127 ∗ S h o r t d e s c r i p t i o n o f method a d d E x t e n s i o n

128 ∗129 ∗ @access p u b l i c

130 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

131 ∗ @param E x t e n s i o n

132 ∗ @return v o i d

133 ∗ /

134 p u b l i c f u n c t i o n a d d E x t e n s i o n ( E x t e n s i o n $ e x t e n s i o n )

135 {136 $ t h i s−>e x t e n s i o n s [ ] = $ e x t e n s i o n ;

137 }138

139 /∗ ∗140 ∗ S h o r t d e s c r i p t i o n o f method a d d E x t e n s i o n s

141 ∗142 ∗ @access p u b l i c

143 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

144 ∗ @param a r r a y

145 ∗ @return v o i d

146 ∗ /

147 p u b l i c f u n c t i o n a d d E x t e n s i o n s ( $ e x t e n s i o n s )

148 {

Page 324: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

323

149 i f ( i s a r r a y ( $ e x t e n s i o n s ) ) {150 foreach ( $ e x t e n s i o n s as $ e x t e n s a o ) {151 i f ( $ e x t e n s a o i n s t a n c e o f

L a b s e c S e c u r i t y C e r t i f i c a t i o n E x t e n s i o n )

{152 $ t h i s−>e x t e n s i o n s = $ e x t e n s a o ;

153 } e l s e {154 th row new E x c e p t i o n ( ’O p a r m e t r o

$extensions DEVE ser um array

155 com elementos somento do

tipo Extension’ ) ;

156 }157 }158 } e l s e {159 th row new E x c e p t i o n ( ’O p a r m e t r o $extensions DEVE

ser array.’ ) ;

160 }161 }162

163 /∗ ∗164 ∗ S h o r t d e s c r i p t i o n o f method s i g n

165 ∗166 ∗ @access p u b l i c

167 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

168 ∗ @param s t r i n g

169 ∗ @param s t r i n g

170 ∗ @return C e r t i f i c a t e R e v o c a t i o n L i s t

171 ∗ /

172 p u b l i c f u n c t i o n s i g n ( $hashAlgor i thm , $privKey , $password = n u l l ,

$ e x t r a A r g s = n u l l )

173 {174 / / TODO FAZER

175 $ r e t u r n V a l u e = n u l l ;

176

177 l i b c r y p t o s e c i s s u e c r l (

178 $ t h i s−>s e r i a l ,

179 $ t h i s−>i s s u e r−>g e t E n t r i e s ( ) ,

180 $ t h i s−>t h i s U p d a t e ,

181 $ t h i s−>nex tUpda te ,

182 $ t h i s−>c r l E n t r i e s , / / TODO VERIFICAR SE ASSIM

FUNCIONA

183 $privKey ,

184 $password ,

Page 325: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

324

185 L a b s e c C L S e c u r i t y U t i l P a r s e r s : :

conve r tCRLExtens ionsToAr ray ( $ t h i s−>e x t e n s i o n s )

186 ) ;

187

188 r e t u r n $ r e t u r n V a l u e ;

189 }190

191 } /∗ end o f c l a s s C e r t i f i c a t e R e v o c a t i o n L i s t B u i l d e r C L ∗ /

192

193 ?>

1 <?php

2 / / DOC t e r m i n a r d o c u m e n t a o

3 e r r o r r e p o r t i n g ( E ALL ) ;

4

5 /∗ ∗6 ∗ s g c i − c l a s s . C R L D i s t r i b u t i o n P o i n t E x t e n s i o n C L . php

7 ∗8 ∗ $ Id$

9 ∗10 ∗ T h i s f i l e i s p a r t o f s g c i .

11 ∗12 ∗ A u t o m a t i c g e n e r a t e d w i t h ArgoUML 0 . 2 4 on 1 4 . 0 8 . 2 0 0 7 , 1 7 : 2 7 : 2 7

13 ∗14 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

15 ∗ /

16

17 i f (0 > vers ion compare ( PHP VERSION , ’5’ ) ) {18 d i e ( ’This file was generated for PHP 5’ ) ;

19 }20

21 /∗ ∗22 ∗ i n c l u d e C R L D i s t r i b u t i o n P o i n t E x t e n s i o n

23 ∗24 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

25 ∗ /

26 r e q u i r e o n c e ( ’

Labsec_Security_Certificate_Extension_CRLDistributionPointExtension.php’

) ;

27

28

29 /∗ ∗30 ∗ S h o r t d e s c r i p t i o n o f c l a s s C R L D i s t r i b u t i o n P o i n t E x t e n s i o n C L

Page 326: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

325

31 ∗32 ∗ @access p u b l i c

33 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

34 ∗ /

35 c l a s s

L a b s e c C L S e c u r i t y C e r t i f i c a t i o n E x t e n s i o n C R L D i s t r i b u t i o n P o i n t E x t e n s i o n C L

36 imp lemen t s

L a b s e c S e c u r i t y C e r t i f i c a t i o n E x t e n s i o n C R L D i s t r i b u t i o n P o i n t E x t e n s i o n

37 {38 p r i v a t e $ d i s t r i b u t i o n P o i n t s = array ( ) ;

39

40 /∗ ∗41 ∗ C o n s t r u t o r .<br>

42 ∗43 ∗ /

44 p u b l i c f u n c t i o n c o n s t r u c t ( ) {45

46 $ o i d F a c t o r y = new

L a b s e c S e c u r i t y C e r t i f i c a t i o n O b j e c t I d e n t i f i e r F a c t o r y ( ) ;

47

48 / / pega OID usando f a c t o r y

49 $ t h i s−>ex tn ID = $ o i d F a c t o r y−>g e t O b j e c t I d e n t i f i e r B y C o d e (

50 L a b s e c S e c u r i t y C e r t i f i c a t i o n O b j e c t I d e n t i f i e r F a c t o r y : :

EXTENSION CRL DISTRIBUTION POINTS ) ;

51

52 / / segundo a RFC , e s t a e x t e n s o pode ou n o s e r c r i t i c a l

53 }54

55 /∗ ∗56 ∗ S h o r t d e s c r i p t i o n o f method a d d D i s t r i b u i t o n P o i n t

57 ∗58 ∗ @access p u b l i c

59 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

60 ∗ @param s t r i n g

61 ∗ @param s t r i n g

62 ∗ @param RDNSequence

63 ∗ @return v o i d

64 ∗ /

65 p u b l i c f u n c t i o n a d d D i s t r i b u i t o n P o i n t (

L a b s e c S e c u r i t y C e r t i f i c a t e C R L D i s t r i b u t i o n P o i n t $ d i s t r i b u t i o n P o i n t

)

66 {

Page 327: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

326

67 $ t h i s−>d i s t r i b u t i o n P o i n t s [ ] = $ d i s t r i b u t i o n P o i n t ;

68 }69

70 /∗ ∗71 ∗ S h o r t d e s c r i p t i o n o f method g e t D i s t r i b u i t i o n P o i n t

72 ∗73 ∗ @access p u b l i c

74 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

75 ∗ @return v o i d

76 ∗ /

77 p u b l i c f u n c t i o n g e t D i s t r i b u i t i o n P o i n t ( )

78 {79 r e t u r n $ t h i s−>d i s t r i b u t i o n P o i n t s ;

80 }81

82 /∗ ∗83 ∗ Re torna o v a l o r da e x t e n s o

84 ∗85 ∗ @access p u b l i c

86 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

87 ∗ @return s t r i n g o v a l o r

88 ∗ /

89 p u b l i c f u n c t i o n g e t V a l u e ( )

90 {91 }92

93 /∗ ∗94 ∗ Re torna o v a l o r da e x t e n s o em base 64

95 ∗96 ∗ @access p u b l i c

97 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

98 ∗ @return s t r i n g o v a l o r

99 ∗ /

100 p u b l i c f u n c t i o n ge tBase64Va lue ( )

101 {102 }103

104 } /∗ end o f c l a s s C R L D i s t r i b u t i o n P o i n t E x t e n s i o n C L ∗ /

105

106 ?>

1 <?php

2

Page 328: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

327

3 e r r o r r e p o r t i n g ( E ALL ) ;

4

5 /∗ ∗6 ∗ s g c i − c l a s s . S u b j e c t K e y I d e n t i f i e r E x t e n s i o n C L . php

7 ∗8 ∗ $ Id$

9 ∗10 ∗ T h i s f i l e i s p a r t o f s g c i .

11 ∗12 ∗ A u t o m a t i c g e n e r a t e d w i t h ArgoUML 0 . 2 4 on 1 4 . 0 8 . 2 0 0 7 , 1 7 : 3 1 : 4 7

13 ∗14 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

15 ∗ /

16

17 i f (0 > vers ion compare ( PHP VERSION , ’5’ ) ) {18 d i e ( ’This file was generated for PHP 5’ ) ;

19 }20

21 /∗ ∗22 ∗ i n c l u i S u b j e c t K e y I d e n t i f i e r E x t e n s i o n I n t e r f a c e

23 ∗24 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

25 ∗ /

26 r e q u i r e o n c e ( ’Labsec/Security/Certification/Extension/

SubjectKeyIdentifierExtensionInterface.php’ ) ;

27 r e q u i r e o n c e ( ’Labsec/Security/Certification/ObjectIdentifierFactory.php’ ) ;

28 r e q u i r e o n c e ( ’Zend/Validate.php’ ) ;

29

30 /∗ ∗31 ∗ C l a s s e r e s p o n s v e l por i m p l e m e n t a r a i n t e r f a c e

32 ∗ S u b j e c t K e y I d e n t i f i e r E x t e n s i o n I n t e r f a c e , que por sua v e z

33 ∗ r e s p o n s v e l p e l a e x t e n s o S u b j e c t Key I d e n t i f i e r . <br>

34 ∗ A e x t e n s o S u b j e c t Key I d e n t i f i e r em f o r m a t o ASN . 1 : <br>

35 ∗ S u b j e c t K e y I d e n t i f i e r : := K e y I d e n t i f i e r

36 ∗37 ∗ @access p u b l i c

38 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

39 ∗ /

40 c l a s s

L a b s e c C L S e c u r i t y C e r t i f i c a t i o n E x t e n s i o n S u b j e c t K e y I d e n t i f i e r E x t e n s i o n C L

41 e x t e n d s

L a b s e c S e c u r i t y C e r t i f i c a t i o n E x t e n s i o n S u b j e c t K e y I d e n t i f i e r E x t e n s i o n

Page 329: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

328

42 {43

44 p r i v a t e $ k e y I d e n t i f i e r ;

45

46 /∗ ∗47 ∗ C o n s t r u t o r .<br>

48 ∗49 ∗ /

50 p u b l i c f u n c t i o n c o n s t r u c t ( ) {51

52 $ o i d F a c t o r y = new

L a b s e c S e c u r i t y C e r t i f i c a t i o n O b j e c t I d e n t i f i e r F a c t o r y ( ) ;

53

54 / / pega OID usando f a c t o r y

55 $ t h i s−>ex tn ID = $ o i d F a c t o r y−>g e t O b j e c t I d e n t i f i e r B y C o d e (

56 L a b s e c S e c u r i t y C e r t i f i c a t i o n O b j e c t I d e n t i f i e r F a c t o r y : :

EXTENSION SUBJECT KEY IDENTIFIER ) ;

57

58 / / segundo a RFC , e s t a e x t e n s o SEMPRE s e r FALSE

59 $ t h i s−> c r i t i c a l = FALSE ;

60 }61

62 /∗ ∗63 ∗ Re torna o v a l o r da e x t e n s o S u b j e c t Key I d e n t i f i e r .

64 ∗65 ∗ @access p u b l i c

66 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

67 ∗ @return s t r i n g v a l o r da e x t e n s o

68 ∗ /

69 p u b l i c f u n c t i o n g e t K e y I d e n t i f i e r ( )

70 {71 r e t u r n ( s t r i n g ) $ t h i s−>k e y I d e n t i f i e r ;

72 }73

74 /∗ ∗75 ∗ S e t a o v a l o r da e x t e n s o S u b j e c t Key I d e n t i f i e r .

76 ∗77 ∗ @access p u b l i c

78 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

79 ∗ @param s t r i n g o v a l o r em h e x a d e c i m a l a s e r s e t a d o

80 ∗ @return v o i d

81 ∗ /

82 p u b l i c f u n c t i o n s e t K e y I d e n t i f i e r ( $keyId )

Page 330: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

329

83 {84 i f ( Z e n d V a l i d a t e : : i s ( $keyId , ’Hex’ ) ) {85 $ t h i s−>k e y I d e n t i f i e r = $keyId ;

86 } e l s e {87 th row new E x c e p t i o n ( " V a r i v e l somente pode ser setada

88 com valores Hexadecimais" ) ;

89 }90 }91

92 /∗ ∗93 ∗ Re torna o v a l o r da e x t e n s o

94 ∗95 ∗ @access p u b l i c

96 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

97 ∗ @return s t r i n g o v a l o r

98 ∗ /

99 p u b l i c f u n c t i o n g e t V a l u e ( )

100 {101 }102

103 /∗ ∗104 ∗ Re torna o v a l o r da e x t e n s o em base 64

105 ∗106 ∗ @access p u b l i c

107 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

108 ∗ @return s t r i n g o v a l o r

109 ∗ /

110 p u b l i c f u n c t i o n ge tBase64Va lue ( )

111 {112 }113

114 } /∗ end o f c l a s s S u b j e c t K e y I d e n t i f i e r E x t e n s i o n C L ∗ /

115

116 ?>

1 <?php

2 / / DOC t e r m i n a r d o c u m e n t a o

3 e r r o r r e p o r t i n g ( E ALL ) ;

4

5 /∗ ∗6 ∗ s g c i − c l a s s . CRLReasonCodeExtensionCL . php

7 ∗8 ∗ $ Id$

Page 331: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

330

9 ∗10 ∗ T h i s f i l e i s p a r t o f s g c i .

11 ∗12 ∗ A u t o m a t i c g e n e r a t e d w i t h ArgoUML 0 . 2 4 on 1 4 . 0 8 . 2 0 0 7 , 1 7 : 2 9 : 0 9

13 ∗14 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

15 ∗ /

16

17 i f (0 > vers ion compare ( PHP VERSION , ’5’ ) ) {18 d i e ( ’This file was generated for PHP 5’ ) ;

19 }20

21 /∗ ∗22 ∗ i n c l u d e CRLReasonCodeExtension

23 ∗24 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

25 ∗ /

26 r e q u i r e o n c e ( ’Labsec/Security/Certification/Extension/

CRLReasonCodeExtensionInterface.php’ ) ;

27

28 /∗ ∗29 ∗ S h o r t d e s c r i p t i o n o f c l a s s CRLReasonCodeExtensionCL

30 ∗31 ∗ @access p u b l i c

32 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

33 ∗ /

34 c l a s s L a b s e c C L S e c u r i t y C e r t i f i c a t i o n E x t e n s i o n C R L R e a s o n C o d e E x t e n s i o n C L

35 imp lemen t s L a b s e c S e c u r i t y C e r t i f i c a t i o n E x t e n s i o n C R L R e a s o n C o d e E x t e n s i o n

36 {37 c o n s t UNSPECIFIED = 0 ;

38

39 c o n s t KEY COMPROMISE = 1 ;

40

41 c o n s t CA COMPROMISE = 2 ;

42

43 c o n s t AFFILIATION CHANGED = 3 ;

44

45 c o n s t SUPERSEDED = 4 ;

46

47 c o n s t CESSATION OF OPERATION = 5 ;

48

49 c o n s t CERTIFICATE HOLD = 6 ;

50

Page 332: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

331

51 c o n s t REMOVE FROM CRL = 8 ;

52

53 c o n s t PRIVILEGE WITHDRAWN = 9 ;

54

55 c o n s t AA COMPROMISE = 1 0 ;

56

57 p r i v a t e $reasonCode ;

58

59 /∗ ∗60 ∗ C o n s t r u t o r .<br>

61 ∗62 ∗ /

63 p u b l i c f u n c t i o n c o n s t r u c t ( ) {64

65 $ o i d F a c t o r y = new

L a b s e c S e c u r i t y C e r t i f i c a t i o n O b j e c t I d e n t i f i e r F a c t o r y ( ) ;

66

67 / / pega OID usando f a c t o r y

68 $ t h i s−>ex tn ID = $ o i d F a c t o r y−>g e t O b j e c t I d e n t i f i e r B y C o d e (

69 L a b s e c S e c u r i t y C e r t i f i c a t i o n O b j e c t I d e n t i f i e r F a c t o r y : :

EXTENSION REASON CODE) ;

70

71 / / segundo a RFC , e s t a e x t e n s o N O C R T I C A

72 }73

74 /∗ ∗75 ∗ S h o r t d e s c r i p t i o n o f method getCode

76 ∗77 ∗ @access p u b l i c

78 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

79 ∗ @return i n t

80 ∗ /

81 p u b l i c f u n c t i o n getCode ( )

82 {83 r e t u r n $ t h i s−>reasonCode ;

84 }85

86 p u b l i c f u n c t i o n se tCode ( $code )

87 {88 / / e x p r e s s o n o pode t e r 7

89 i f ( ereg ( ’^([0-6]|[8-9]|10){1}$’ , $code ) ) {90 $ t h i s−>reasonCode = $code ;

91 } e l s e {

Page 333: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

332

92 th row new E x c e p t i o n ( ’ P a r m e t r o "code" da e x t e n s o

CRLReasonCode i n v l i d o ’ ) ;

93 }94 }95

96 /∗ ∗97 ∗ Re torna o v a l o r da e x t e n s o

98 ∗99 ∗ @access p u b l i c

100 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

101 ∗ @return s t r i n g o v a l o r

102 ∗ /

103 p u b l i c f u n c t i o n g e t V a l u e ( )

104 {105 }106

107 /∗ ∗108 ∗ Re torna o v a l o r da e x t e n s o em base 64

109 ∗110 ∗ @access p u b l i c

111 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

112 ∗ @return s t r i n g o v a l o r

113 ∗ /

114 p u b l i c f u n c t i o n ge tBase64Va lue ( )

115 {116 }117

118 } /∗ end o f c l a s s CRLReasonCodeExtensionCL ∗ /

119

120 ?>

1 <?php

2

3 e r r o r r e p o r t i n g ( E ALL ) ;

4

5 /∗ ∗6 ∗ s g c i − c l a s s . KeyUsageExtens ionCL . php

7 ∗8 ∗ $ Id$

9 ∗10 ∗ T h i s f i l e i s p a r t o f s g c i .

11 ∗12 ∗ A u t o m a t i c g e n e r a t e d w i t h ArgoUML 0 . 2 4 on 1 4 . 0 8 . 2 0 0 7 , 1 7 : 3 0 : 3 7

Page 334: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

333

13 ∗14 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

15 ∗ /

16

17 i f (0 > vers ion compare ( PHP VERSION , ’5’ ) ) {18 d i e ( ’This file was generated for PHP 5’ ) ;

19 }20

21 /∗ ∗22 ∗ i n c l u i KeyUsageEx tens ion

23 ∗24 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

25 ∗ /

26 r e q u i r e o n c e ( ’Labsec/Security/Certification/Extension/

KeyUsageExtensionInterface.php’ ) ;

27 r e q u i r e o n c e ( ’Labsec/Security/Certification/ObjectIdentifierFactory.php’ ) ;

28

29 /∗ ∗30 ∗ Re torna uma l i s t a com as p e r m i s s e s d e f i n i d a s na e x t e n s o Key Usage

31 ∗32 ∗ @access p u b l i c

33 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

34 ∗ /

35 c l a s s L a b s e c C L S e c u r i t y C e r t i f i c a t i o n E x t e n s i o n K e y U s a g e E x t e n s i o n C L

36 e x t e n d s L a b s e c S e c u r i t y C e r t i f i c a t i o n E x t e n s i o n K e y U s a g e E x t e n s i o n

37 {38 / / c o n s t a n t e s de c l a s s e

39

40 c o n s t DIGITAL SIGNATURE = 0 ;

41

42 c o n s t NON REPUDIATION = 1 ;

43

44 c o n s t KEY ENCIPHERMENT = 2 ;

45

46 c o n s t DATA ENCIPHERMENT = 3 ;

47

48 c o n s t KEY AGREEMENT = 4 ;

49

50 c o n s t KEY CERT SIGN = 5 ;

51

52 c o n s t CRL SIGN = 6 ;

53

54 c o n s t ENCIPHER ONLY = 7 ;

Page 335: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

334

55

56 c o n s t DECIPHER ONLY = 8 ;

57

58 p r i v a t e $ u s a g e s ;

59

60 /∗ ∗61 ∗ C o n s t r u t o r .<br>

62 ∗63 ∗ /

64 p u b l i c f u n c t i o n c o n s t r u c t ( ) {65

66 $ o i d F a c t o r y = new

L a b s e c S e c u r i t y C e r t i f i c a t i o n O b j e c t I d e n t i f i e r F a c t o r y ( ) ;

67

68 / / pega OID usando f a c t o r y

69 $ t h i s−>ex tn ID = $ o i d F a c t o r y−>g e t O b j e c t I d e n t i f i e r B y C o d e (

70 L a b s e c S e c u r i t y C e r t i f i c a t i o n O b j e c t I d e n t i f i e r F a c t o r y : :

EXTENSION KEY USAGE) ;

71

72 / / segundo a RFC , RECOMENDA s e r c r i t i c a l . Mas n o o b r i g a

73 }74

75 /∗ ∗76 ∗ Re torna uma l i s t a com as p e r m i s s e s d e f i n i d a s na e x t e n s o Key

Usage .

77 ∗78 ∗ @access p u b l i c

79 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

80 ∗ @return a r r a y a r r a y c o n t e n d o as c o n s t a n t e s que e s t o d e f i n i d a s como

TRUE .

81 ∗ /

82 p u b l i c f u n c t i o n g e t U s a g e s L i s t ( )

83 {84 r e t u r n $ t h i s−>u s a g e s ;

85 }86

87 /∗ ∗88 ∗ M t o d o que a l t e r a os b i t s da e x t e n s o Key Usage . <br>

89 ∗90 ∗ @access p u b l i c

91 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

92 ∗ @param i n t usage Uma c o n s t a n t e ( d e f i n i d a na c l a s s e ) , r e p r e s e n t a n d o

93 ∗ qua l p e r m i s s o v a i s e r a d i c i o n a d o .

Page 336: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

335

94 ∗ @param boo lean v a l u e P a r m e t r o o p c i o n a l . E s t e p a r m e t r o s e r v e

95 ∗ para e s p e c i f i c a r o v a l o r da p e r m i s s o d e f i n i d a em v a l u e .

96 ∗ @return v o i d

97 ∗ /

98 p u b l i c f u n c t i o n addUsage ( $usage , $ v a l u e = t rue )

99 {100 i f ( ereg ( "[0-8]" , $usage ) ) {101 i f ( i s b o o l ( $ v a l u e ) ) {102 $ t h i s−>u s a g e s [ "$usage" ] = $ v a l u e ;

103 } e l s e {104 th row new E x c e p t i o n ( ’O valor do p a r m e t r o "value" DEVE ser

booleano.’ ) ;

105 }106 } e l s e {107 th row new E x c e p t i o n ( ’O valor do p a r m e t r o "usage" DEVE ser

num rico , ’ .

108 ’e estar entre 0 e 8’ ) ;

109 }110 }111

112 /∗ ∗113 ∗ Re torna TRUE se a p e r m i s s o de uso da chave f o r p e r m i t i d o . <br>

114 ∗ F a l s e caso c o n t r r i o .

115 ∗116 ∗ @access p u b l i c

117 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

118 ∗ @param i n t usage Uma c o n s t a n t e ( d e f i n i d a na c l a s s e ) , r e p r e s e n t a n d o

119 ∗ qua l p e r m i s s o v a i s e r a d i c i o n a d o .

120 ∗ @return boo lean TRUE caso s e j a p e r m i t i d o a u t i l i z a o da chave

121 ∗ para o f i m d e f i n i d o no p a r m e t r o usage .

122 ∗ /

123 p u b l i c f u n c t i o n i sAl lowedUsage ( $usage )

124 {125 i f ( ereg ( "[0-8]" , $usage ) ) {126 r e t u r n $ t h i s−>u s a g e s [ "$usage" ] ;

127 } e l s e {128 th row new E x c e p t i o n ( ’O valor do p a r m e t r o "usage" DEVE ser

num rico , ’ .

129 ’e estar entre 0 e 8’ ) ;

130 }131 }132

133 /∗ ∗

Page 337: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

336

134 ∗ Re torna o v a l o r da e x t e n s o

135 ∗136 ∗ @access p u b l i c

137 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

138 ∗ @return s t r i n g o v a l o r

139 ∗ /

140 p u b l i c f u n c t i o n g e t V a l u e ( )

141 {142 }143

144 /∗ ∗145 ∗ Re torna o v a l o r da e x t e n s o em base 64

146 ∗147 ∗ @access p u b l i c

148 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

149 ∗ @return s t r i n g o v a l o r

150 ∗ /

151 p u b l i c f u n c t i o n ge tBase64Va lue ( )

152 {153 }154

155 } /∗ end o f c l a s s KeyUsageExtens ionCL ∗ /

156

157 ?>

1 <?php

2 / / DOC t e r m i n a r d o c u m e n t a o

3 e r r o r r e p o r t i n g ( E ALL ) ;

4

5 /∗ ∗6 ∗ s g c i − c l a s s . Ex tendedKeyUsageExtens ionCL . php

7 ∗8 ∗ $ Id$

9 ∗10 ∗ T h i s f i l e i s p a r t o f s g c i .

11 ∗12 ∗ A u t o m a t i c g e n e r a t e d w i t h ArgoUML 0 . 2 4 on 1 4 . 0 8 . 2 0 0 7 , 1 7 : 2 9 : 3 5

13 ∗14 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

15 ∗ /

16

17 i f (0 > vers ion compare ( PHP VERSION , ’5’ ) ) {18 d i e ( ’This file was generated for PHP 5’ ) ;

Page 338: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

337

19 }20

21 /∗ ∗22 ∗ i n c l u d e Ex t endedKeyUsageEx tens ion

23 ∗24 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

25 ∗ /

26 r e q u i r e o n c e ( ’Labsec/Security/Certification/Extension/

ExtendedKeyUsageExtensionInterface.php’ ) ;

27

28 /∗ ∗29 ∗ S h o r t d e s c r i p t i o n o f c l a s s Ex tendedKeyUsageExtens ionCL

30 ∗31 ∗ @access p u b l i c

32 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

33 ∗ /

34 c l a s s L a b s e c C L S e c u r i t y C e r t i f i c a t i o n E x t e n s i o n E x t e n d e d K e y U s a g e E x t e n s i o n C L

35 e x t e n d s L a b s e c S e c u r i t y C e r t i f i c a t i o n E x t e n s i o n E x t e n d e d K e y U s a g e E x t e n s i o n

36 {37 p r i v a t e $extKeyUsages = array ( ) ;

38

39 /∗ ∗40 ∗ C o n s t r u t o r .<br>

41 ∗42 ∗ /

43 p u b l i c f u n c t i o n c o n s t r u c t ( )

44 {45

46 $ o i d F a c t o r y = new

L a b s e c S e c u r i t y C e r t i f i c a t i o n O b j e c t I d e n t i f i e r F a c t o r y ( ) ;

47

48 / / pega OID usando f a c t o r y

49 $ t h i s−>ex tn ID = $ o i d F a c t o r y−>g e t O b j e c t I d e n t i f i e r B y C o d e (

50 L a b s e c S e c u r i t y C e r t i f i c a t i o n O b j e c t I d e n t i f i e r F a c t o r y : :

EXTENSION EXTENDED KEY USAGE) ;

51

52 / / segundo a RFC , e s t a e x t e n s o pode ou n o s e r c r i t i c a l

53 }54

55 /∗ ∗56 ∗ S h o r t d e s c r i p t i o n o f method addUsage

57 ∗58 ∗ @access p u b l i c

Page 339: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

338

59 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

60 ∗ @param O b j e c t I d e n t i f i e r

61 ∗ @return v o i d

62 ∗ /

63 p u b l i c f u n c t i o n addUsage (

L a b s e c S e c u r i t y C e r t i f i c a t i o n O b j e c t I d e n t i f i e r $o id )

64 {65 $ t h i s−>extKeyUsages [ ] = $o id ;

66 }67

68 /∗ ∗69 ∗ S h o r t d e s c r i p t i o n o f method ge tUsages

70 ∗71 ∗ @access p u b l i c

72 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

73 ∗ @return a r r a y

74 ∗ /

75 p u b l i c f u n c t i o n g e t U s a g e s ( )

76 {77 i f ( count ( $ t h i s−>extKeyUsages ) > 0) {78 r e t u r n $ t h i s−>extKeyUsages ;

79 } e l s e {80 th row new E x c e p t i o n ( "Tamanho de extKeyUsages menor que 1." ) ;

81 }82 }83

84 /∗ ∗85 ∗ Re torna o v a l o r da e x t e n s o

86 ∗87 ∗ @access p u b l i c

88 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

89 ∗ @return s t r i n g o v a l o r

90 ∗ /

91 p u b l i c f u n c t i o n g e t V a l u e ( )

92 {93 }94

95 /∗ ∗96 ∗ Re torna o v a l o r da e x t e n s o em base 64

97 ∗98 ∗ @access p u b l i c

99 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

100 ∗ @return s t r i n g o v a l o r

Page 340: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

339

101 ∗ /

102 p u b l i c f u n c t i o n ge tBase64Va lue ( )

103 {104 }105

106 } /∗ end o f c l a s s Ex tendedKeyUsageExtens ionCL ∗ /

107

108 ?>

1 <?php

2

3 e r r o r r e p o r t i n g ( E ALL ) ;

4

5 /∗ ∗6 ∗ t e s t e − c l a s s . A u t h o r i t y K e y I d e n t i f i e r E x t e n s i o n . php

7 ∗8 ∗ $ Id$

9 ∗10 ∗ T h i s f i l e i s p a r t o f t e s t e .

11 ∗12 ∗ A u t o m a t i c g e n e r a t e d w i t h ArgoUML 0 . 2 4 on 2 6 . 0 7 . 2 0 0 7 , 1 2 : 3 8 : 2 0

13 ∗14 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

15 ∗ /

16

17 i f (0 > vers ion compare ( PHP VERSION , ’5’ ) ) {18 d i e ( ’This file was generated for PHP 5’ ) ;

19 }20

21 /∗ ∗22 ∗ i n c l u i E x t e n s i o n

23 ∗24 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

25 ∗ /

26 r e q u i r e o n c e ( ’Labsec/Security/Certification/Extension/

AuthorityKeyIdentifierExtensionInterface.php’ ) ;

27 r e q u i r e o n c e ( ’Labsec/Security/Certification/ObjectIdentifierFactory.php’ ) ;

28

29 /∗ ∗30 ∗ C l a s s e que imp lemen ta a e x t e n s o A u t h o r i t y Key I d e n t i f i e r . <br>

31 ∗ A e x t e n s o A u t h o r i t y Key em f o r m a t o ASN . 1 : <br>

32 ∗ A u t h o r i t y K e y I d e n t i f i e r : := SEQUENCE { <br>

33 ∗ k e y I d e n t i f i e r [ 0 ] K e y I d e n t i f i e r OPTIONAL , <br>

Page 341: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

340

34 ∗ a u t h o r i t y C e r t I s s u e r [ 1 ] GeneralNames OPTIONAL , <br>

35 ∗ a u t h o r i t y C e r t S e r i a l N u m b e r [ 2 ] C e r t i f i c a t e S e r i a l N u m b e r OPTIONAL } <br

>

36 ∗<br>

37 ∗ K e y I d e n t i f i e r : := OCTET STRING <br>

38 ∗ <br>

39 ∗ C e r t i f i c a t e S e r i a l N u m b e r : := INTEGER <br>

40 ∗ <br>

41 ∗42 ∗43 ∗ @access p u b l i c

44 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

45 ∗ /

46 c l a s s

L a b s e c C L S e c u r i t y C e r t i f i c a t i o n E x t e n s i o n A u t h o r i t y K e y I d e n t i f i e r E x t e n s i o n C L

47 e x t e n d s

L a b s e c S e c u r i t y C e r t i f i c a t i o n E x t e n s i o n A u t h o r i t y K e y I d e n t i f i e r E x t e n s i o n

48 {49 p r i v a t e $ k e y I d e n t i f i e r ;

50

51 p r i v a t e $ a u t h o r i t y C e r t I s s u e r ;

52

53 p r i v a t e $ a u t h o r i t y C e r t S e r i a l N u m b e r ;

54

55 /∗ ∗56 ∗ C o n s t r u t o r .<br>

57 ∗ S e t a o ID do e x t e n s o A u t h o r i t y Key I d e n t i f i e r

58 ∗59 ∗ /

60 p u b l i c f u n c t i o n c o n s t r u c t ( ) {61

62 $ o i d F a c t o r y = new

L a b s e c S e c u r i t y C e r t i f i c a t i o n O b j e c t I d e n t i f i e r F a c t o r y ( ) ;

63

64 / / pega OID usando f a c t o r y

65 $ t h i s−>ex tn ID = $ o i d F a c t o r y−>g e t O b j e c t I d e n t i f i e r B y C o d e (

66 L a b s e c S e c u r i t y C e r t i f i c a t i o n O b j e c t I d e n t i f i e r F a c t o r y : :

EXTENSION AUTHORITY KEY IDENTIFIER ) ;

67

68 / / segundo a RFC , e s t a e x t e n s o SEMPRE s e r FALSE

69 $ t h i s−> c r i t i c a l = FALSE ;

70 }

Page 342: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

341

71

72 /∗ ∗73 ∗ Re torna o v a l o r da e x t e n s o

74 ∗75 ∗ @access p u b l i c

76 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

77 ∗ @return s t r i n g o v a l o r

78 ∗ /

79 p u b l i c f u n c t i o n g e t V a l u e ( )

80 {81 }82

83 /∗ ∗84 ∗ Re torna o v a l o r da e x t e n s o em base 64

85 ∗86 ∗ @access p u b l i c

87 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

88 ∗ @return s t r i n g o v a l o r

89 ∗ /

90 p u b l i c f u n c t i o n ge tBase64Va lue ( )

91 {92 }93

94 /∗ ∗95 ∗ S e t a o k e y I d e n t i f i e r da e x t e n s o A u t h o r i t y Key I d e n t i f i e r

96 ∗97 ∗ @access p u b l i c

98 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

99 ∗ @param s t r i n g K e y I d e n t i f i e r

100 ∗ @return v o i d

101 ∗ /

102 p u b l i c f u n c t i o n s e t K e y I d e n t i f i e r ( $keyId ) {103 $ t h i s−>k e y I d e n t i f i e r = ( s t r i n g ) $keyId ;

104 }105

106 /∗ ∗107 ∗ Re torna o k e y I d e n t i f i e r da e x t e n s o A u t h o r i t y Key I d e n t i f i e r

108 ∗109 ∗ @access p u b l i c

110 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

111 ∗ @return s t r i n g K e y I d e n t i f i e r na forma de o c t e t o s separado por

”:” .

112 ∗ /

Page 343: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

342

113 p u b l i c f u n c t i o n g e t K e y I d e n t i f i e r ( ) {114 i f ( i s s e t ( $ t h i s−>k e y I d e n t i f i e r ) ) {115 $ r e s u l t = ( s t r i n g ) $ t h i s−>k e y I d e n t i f i e r ;

116 } e l s e {117 $ r e s u l t = n u l l ;

118 }119 r e t u r n $ r e s u l t ;

120 }121

122 /∗ ∗123 ∗ S e t a o a u t h o r i t y C e r t I s s u e r da e x t e n s o A u t h o r i t y Key I d e n t i f i e r

124 ∗125 ∗ @access p u b l i c

126 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

127 ∗ @param GeneralNames O( s ) GeneralName do e m i s s o r do c e r t i f i c a d o

da a u t o r i d a d e c e r t i f i c a d o r a

128 ∗ @return v o i d

129 ∗ /

130 p u b l i c f u n c t i o n s e t A u t h o r i t y C e r t I s s u e r (

L a b s e c S e c u r i t y C e r t i f i c a t i o n D a t a T y p e s G e n e r a l N a m e s $ i s s u e r ) {131 $ t h i s−>a u t h o r i t y C e r t I s s u e r = $ i s s u e r ;

132 }133

134 /∗ ∗135 ∗ Re torna o a u t h o r i t y C e r t I s s u e r da e x t e n s o A u t h o r i t y Key

I d e n t i f i e r

136 ∗137 ∗ @access p u b l i c

138 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

139 ∗ @return GeneralNames O a u t h o r i t y C e r t I s s u e r da e x t e n s o

A u t h o r i t y Key I d e n t i f i e r

140 ∗ /

141 p u b l i c f u n c t i o n g e t A u t h o r i t y C e r t I s s u e r ( ) {142 r e t u r n $ t h i s−>a u t h o r i t y C e r t I s s u e r ;

143 }144

145 /∗ ∗146 ∗ S e t a o a u t h o r i t y C e r t S e r i a l N u m b e r da e x t e n s o A u t h o r i t y Key

I d e n t i f i e r

147 ∗148 ∗ @access p u b l i c

149 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

Page 344: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

343

150 ∗ @param mixed O n m e r o s e r i a l do c e r t i f i c a d o da a u t o r i d a d e

c e r t i f i c a d o r a .

151 ∗ @return v o i d

152 ∗ /

153 p u b l i c f u n c t i o n s e t A u t h o r i t y C e r t S e r i a l N u m b e r ( $ s e r i a l ) {154 i f ( i s n u m e r i c ( $ s e r i a l ) ) {155 $ t h i s−>a u t h o r i t y C e r t S e r i a l N u m b e r = $ s e r i a l ;

156 } e l s e {157 th row new E x c e p t i o n ( ’O n m e r o serial do campo

AuthorityCertSerialNumber’ .

158 ’DEVE ser n m e r i c o (inteiro, double, hexadecimal ,

etc)’ ) ;

159 }160 }161

162 /∗ ∗163 ∗ Re torna o a u t h o r i t y C e r t S e r i a l N u m b e r da e x t e n s o A u t h o r i t y Key

I d e n t i f i e r

164 ∗165 ∗ @access p u b l i c

166 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

167 ∗ @return i n t O a u t h o r i t y C e r t S e r i a l N u m b e r da e x t e n s o A u t h o r i t y

Key I d e n t i f i e r

168 ∗ /

169 p u b l i c f u n c t i o n g e t A u t h o r i t y C e r t S e r i a l N u m b e r ( ) {170 i f ( i s s e t ( $ t h i s−>a u t h o r i t y C e r t S e r i a l N u m b e r ) ) {171 $ r e s u l t a d o = ( i n t ) $ t h i s−>a u t h o r i t y C e r t S e r i a l N u m b e r

;

172 } e l s e {173 $ r e s u l t a d o = n u l l ;

174 }175

176 r e t u r n $ r e s u l t a d o ;

177 }178

179 } /∗ end o f c l a s s A u t h o r i t y K e y I d e n t i f i e r E x t e n s i o n C L ∗ /

180 ?>

1 <?php

2

3 e r r o r r e p o r t i n g ( E ALL ) ;

4

5 /∗ ∗

Page 345: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

344

6 ∗ s g c i − c l a s s . C e r t i f i c a t e P o l i c i e s E x t e n s i o n C L . php

7 ∗8 ∗ $ Id$

9 ∗10 ∗ T h i s f i l e i s p a r t o f s g c i .

11 ∗12 ∗ A u t o m a t i c g e n e r a t e d w i t h ArgoUML 0 . 2 4 on 1 4 . 0 8 . 2 0 0 7 , 1 7 : 2 6 : 3 0

13 ∗14 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

15 ∗ /

16

17 i f (0 > vers ion compare ( PHP VERSION , ’5’ ) ) {18 d i e ( ’This file was generated for PHP 5’ ) ;

19 }20

21 /∗ ∗22 ∗ i n c l u i C e r t i f i c a t e P o l i c i e s E x t e n s i o n

23 ∗24 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

25 ∗ /

26 r e q u i r e o n c e ( ’Labsec/Security/Certification/Extension/

CertificatePoliciesExtensionInterface.php’ ) ;

27

28 /∗ ∗29 ∗ C l a s s e r e s p o n s v e l por i m p l e m e n t a r a i n t e r f a c e r e s p o n s v e l p e l a

e x t e n s o

30 ∗ C e r t i f i c a t e P o l i c i e s . <br>

31 ∗ A e x t e n s o em f o r m a t o ASN . 1 : <br>

32 ∗ c e r t i f i c a t e P o l i c i e s : := SEQUENCE SIZE ( 1 . . MAX) OF

P o l i c y I n f o r m a t i o n

33 ∗34 ∗ @access p u b l i c

35 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

36 ∗ /

37 c l a s s

L a b s e c C L S e c u r i t y C e r t i f i c a t i o n E x t e n s i o n C e r t i f i c a t e P o l i c i e s E x t e n s i o n C L

38 e x t e n d s

L a b s e c S e c u r i t y C e r t i f i c a t i o n E x t e n s i o n C e r t i f i c a t e P o l i c i e s E x t e n s i o n

39 {40 p r i v a t e $ p o l i c y I n f o r m a t i o n = array ( ) ;

41

42 /∗ ∗43 ∗ C o n s t r u t o r .<br>

Page 346: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

345

44 ∗45 ∗ /

46 p u b l i c f u n c t i o n c o n s t r u c t ( ) {47

48 $ o i d F a c t o r y = new

L a b s e c S e c u r i t y C e r t i f i c a t i o n O b j e c t I d e n t i f i e r F a c t o r y ( ) ;

49

50 / / pega OID usando f a c t o r y

51 $ t h i s−>ex tn ID = $ o i d F a c t o r y−>g e t O b j e c t I d e n t i f i e r B y C o d e (

52 L a b s e c S e c u r i t y C e r t i f i c a t i o n O b j e c t I d e n t i f i e r F a c t o r y : :

EXTENSION CERTIFICATE POLICIES ) ;

53

54 / / segundo a RFC , e s t a e x t e n s o pode ou n o s e r c r i t i c a l

55 }56

57 /∗ ∗58 ∗ A d i c i o n a P o l i c y I n f o r m a t i o n .

59 ∗60 ∗ @access p u b l i c

61 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

62 ∗ @param P o l i c y I n f o r m a t i o n Um o b j e t o do t i p o P o l i c y I n f o r m a t i o n para

a d i c i o n a r .

63 ∗ @return v o i d

64 ∗ /

65 p u b l i c f u n c t i o n a d d P o l i c y I n f o r m a t i o n (

L a b s e c S e c u r i t y C e r t i f i c a t i o n E x t e n s i o n P o l i c y P o l i c y I n f o r m a t i o n

$ p o l i c y I n f o )

66 {67 / / TODO v e r i f i c a r se n e c e s s r i o alguma v e r i f i c a o !

68 $ t h i s−>p o l i c y I n f o r m a t i o n [ ] = $ p o l i c y I n f o ;

69 }70

71 /∗ ∗72 ∗ Re torna os C e r t i f i c a t e P o l i c i e s

73 ∗74 ∗ @access p u b l i c

75 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

76 ∗ @return a r r a y Re torna uma a r r a y c o n t e n d o em cada l i n h a um o b j e t o

77 ∗ do t i p o C e r t i f i c a t e P o l i c y

78 ∗ /

79 p u b l i c f u n c t i o n g e t P o l i c i e s I n f o r m a t i o n ( )

80 {81 r e t u r n $ t h i s−>p o l i c y I n f o r m a t i o n ;

Page 347: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

346

82 }83

84 /∗ ∗85 ∗ Re torna o v a l o r da e x t e n s o

86 ∗87 ∗ @access p u b l i c

88 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

89 ∗ @return s t r i n g o v a l o r

90 ∗ /

91 p u b l i c f u n c t i o n g e t V a l u e ( )

92 {93 }94

95 /∗ ∗96 ∗ Re torna o v a l o r da e x t e n s o em base 64

97 ∗98 ∗ @access p u b l i c

99 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

100 ∗ @return s t r i n g o v a l o r

101 ∗ /

102 p u b l i c f u n c t i o n ge tBase64Va lue ( )

103 {104 }105

106 } /∗ end o f c l a s s C e r t i f i c a t e P o l i c i e s E x t e n s i o n C L ∗ /

107

108 ?>

1 <?php

2 / / DOC t e r m i n a r d o c u m e n t a o

3 e r r o r r e p o r t i n g ( E ALL ) ;

4

5 /∗ ∗6 ∗ s g c i − c l a s s . S u b j e c t A l t e r n a t i v e N a m e E x t e n s i o n C L . php

7 ∗8 ∗ $ Id$

9 ∗10 ∗ T h i s f i l e i s p a r t o f s g c i .

11 ∗12 ∗ A u t o m a t i c g e n e r a t e d w i t h ArgoUML 0 . 2 4 on 1 4 . 0 8 . 2 0 0 7 , 1 7 : 3 1 : 0 6

13 ∗14 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

15 ∗ /

Page 348: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

347

16

17 i f (0 > vers ion compare ( PHP VERSION , ’5’ ) ) {18 d i e ( ’This file was generated for PHP 5’ ) ;

19 }20

21 /∗ ∗22 ∗ i n c l u d e S u b j e c t A l t e r n a t i v e N a m e E x t e n s i o n

23 ∗24 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

25 ∗ /

26 r e q u i r e o n c e ( ’Labsec/Security/Certification/Extension/

SubjectAlternativeNameExtensionInterface.php’ ) ;

27

28 /∗ ∗29 ∗ S h o r t d e s c r i p t i o n o f c l a s s S u b j e c t A l t e r n a t i v e N a m e E x t e n s i o n C L

30 ∗31 ∗ @access p u b l i c

32 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

33 ∗ /

34 c l a s s

L a b s e c C L S e c u r i t y C e r t i f i c a t i o n E x t e n s i o n S u b j e c t A l t e r n a t i v e N a m e E x t e n s i o n C L

35 e x t e n d s

L a b s e c S e c u r i t y C e r t i f i c a t i o n E x t e n s i o n S u b j e c t A l t e r n a t i v e N a m e E x t e n s i o n

36 {37

38 p r i v a t e $genera lNames = array ( ) ;

39

40 /∗ ∗41 ∗ C o n s t r u t o r .<br>

42 ∗43 ∗ /

44 p u b l i c f u n c t i o n c o n s t r u c t ( ) {45

46 $ o i d F a c t o r y = new

L a b s e c S e c u r i t y C e r t i f i c a t i o n O b j e c t I d e n t i f i e r F a c t o r y ( ) ;

47

48 / / pega OID usando f a c t o r y

49 $ t h i s−>ex tn ID = $ o i d F a c t o r y−>g e t O b j e c t I d e n t i f i e r B y C o d e (

50 L a b s e c S e c u r i t y C e r t i f i c a t i o n O b j e c t I d e n t i f i e r F a c t o r y : :

EXTENSION SUBJECT ALTERNATIVE NAME) ;

51

52 / / segundo a RFC , e s t a e x t e n s o pode ou n o s e r c r i t i c a l

Page 349: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

348

53 $ t h i s−> c r i t i c a l = TRUE ;

54 }55

56 /∗ ∗57 ∗ S h o r t d e s c r i p t i o n o f method s e t S u b j e c t A l t e r n a t i v e N a m e

58 ∗59 ∗ @access p u b l i c

60 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

61 ∗ @param GeneralNames

62 ∗ @return v o i d

63 ∗ /

64 p u b l i c f u n c t i o n s e t S u b j e c t A l t e r n a t i v e N a m e (

L a b s e c S e c u r i t y C e r t i f i c a t i o n D a t a T y p e s G e n e r a l N a m e s

$genera lNames )

65 {66 $ t h i s−>genera lNames [ ] = $genera lNames ;

67 }68

69 /∗ ∗70 ∗ S h o r t d e s c r i p t i o n o f method g e t S u b j e c t A l t e r n a t i v e N a m e

71 ∗72 ∗ @access p u b l i c

73 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

74 ∗ @return GeneralNames

75 ∗ /

76 p u b l i c f u n c t i o n g e t S u b j e c t A l t e r n a t i v e N a m e ( )

77 {78 r e t u r n $ t h i s−>genera lNames ;

79 }80

81 /∗ ∗82 ∗ Re torna o v a l o r da e x t e n s o

83 ∗84 ∗ @access p u b l i c

85 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

86 ∗ @return s t r i n g o v a l o r

87 ∗ /

88 p u b l i c f u n c t i o n g e t V a l u e ( )

89 {90 }91

92 /∗ ∗93 ∗ Re torna o v a l o r da e x t e n s o em base 64

Page 350: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

349

94 ∗95 ∗ @access p u b l i c

96 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

97 ∗ @return s t r i n g o v a l o r

98 ∗ /

99 p u b l i c f u n c t i o n ge tBase64Va lue ( )

100 {101 }102

103 } /∗ end o f c l a s s S u b j e c t A l t e r n a t i v e N a m e E x t e n s i o n C L ∗ /

104

105 ?>

1 <?php

2 / / DOC t e r m i n a r d o c u m e n t a o

3 e r r o r r e p o r t i n g ( E ALL ) ;

4

5 /∗ ∗6 ∗ s g c i − c l a s s . B a s i c C o n s t r a i n t s E x t e n s i o n C L . php

7 ∗8 ∗ $ Id$

9 ∗10 ∗ T h i s f i l e i s p a r t o f s g c i .

11 ∗12 ∗ A u t o m a t i c g e n e r a t e d w i t h ArgoUML 0 . 2 4 on 1 4 . 0 8 . 2 0 0 7 , 1 7 : 2 5 : 3 1

13 ∗14 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

15 ∗ /

16

17 i f (0 > vers ion compare ( PHP VERSION , ’5’ ) ) {18 d i e ( ’This file was generated for PHP 5’ ) ;

19 }20

21 /∗ ∗22 ∗ i n c l u i B a s i c C o n s t r a i n t s E x t e n s i o n

23 ∗24 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

25 ∗ /

26 r e q u i r e o n c e ( ’Labsec/Security/Certification/Extension/

BasicConstraintsExtensionInterface.php’ ) ;

27 r e q u i r e o n c e ( ’Labsec/Security/Certification/ObjectIdentifierFactory.php’ ) ;

28

29 /∗ ∗

Page 351: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

350

30 ∗ S h o r t d e s c r i p t i o n o f c l a s s B a s i c C o n s t r a i n t s E x t e n s i o n C L

31 ∗32 ∗ @access p u b l i c

33 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

34 ∗ /

35 c l a s s L a b s e c C L S e c u r i t y C e r t i f i c a t i o n E x t e n s i o n B a s i c C o n s t r a i n t s E x t e n s i o n C L

36 e x t e n d s L a b s e c S e c u r i t y C e r t i f i c a t i o n E x t e n s i o n B a s i c C o n s t r a i n t s E x t e n s i o n

37 {38

39 c o n s t INFINITE = −1;

40

41 p r i v a t e $ca = FALSE ;

42

43 p r i v a t e $ p a t h L e n g t h ;

44

45 /∗ ∗46 ∗ C o n s t r u t o r <br>

47 ∗ /

48 p u b l i c f u n c t i o n c o n s t r u c t ( ) {49

50 $ o i d F a c t o r y = new

L a b s e c S e c u r i t y C e r t i f i c a t i o n O b j e c t I d e n t i f i e r F a c t o r y ( ) ;

51

52 / / pega OID usando f a c t o r y

53 $ t h i s−>ex tn ID = $ o i d F a c t o r y−>g e t O b j e c t I d e n t i f i e r B y C o d e (

54 L a b s e c S e c u r i t y C e r t i f i c a t i o n O b j e c t I d e n t i f i e r F a c t o r y : :

EXTENSION BASIC CONSTRAINTS ) ;

55

56 / / segundo a RFC , e s t a e x t e n s o pode s e r c r i t i c a ou n o

57 }58

59 /∗ ∗60 ∗ S h o r t d e s c r i p t i o n o f method se tCa

61 ∗62 ∗ @access p u b l i c

63 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

64 ∗ @return v o i d

65 ∗ /

66 p u b l i c f u n c t i o n s e t C a ( $ v a l u e = TRUE)

67 {68 i f ( i s b o o l ( $ v a l u e ) ) {69 $ t h i s−>ca = $ v a l u e ;

70 } e l s e {

Page 352: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

351

71 $ t h i s−>ca = TRUE ;

72 }73 }74

75 /∗ ∗76 ∗ S h o r t d e s c r i p t i o n o f method isCa

77 ∗78 ∗ @access p u b l i c

79 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

80 ∗ @return boo lean

81 ∗ /

82 p u b l i c f u n c t i o n i sCa ( )

83 {84 r e t u r n ( boo l ) $ t h i s−>ca ;

85 }86

87 /∗ ∗88 ∗ S h o r t d e s c r i p t i o n o f method s e t P a t h L e n g t h

89 ∗90 ∗ @access p u b l i c

91 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

92 ∗ @param i n t

93 ∗ @return v o i d

94 ∗ /

95 p u b l i c f u n c t i o n s e t P a t h L e n g t h ( $ l e n g t h )

96 {97 / / RFC d e f i n e

98 $ t h i s−>ca = t rue ;

99

100 i f ( i s n u m e r i c ( $ l e n g t h ) ) {101 $ t h i s−>p a t h L e n g t h = $ l e n g t h ;

102 } e l s e {103 th row new E x c e p t i o n ( " P a r m e t r o I n v l i d o : length.

Deve ser n u m r i c o " ) ;

104 }105 }106

107 /∗ ∗108 ∗ S h o r t d e s c r i p t i o n o f method g e t P a t h L e n g t h

109 ∗110 ∗ @access p u b l i c

111 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

112 ∗ @return i n t

Page 353: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

352

113 ∗ /

114 p u b l i c f u n c t i o n g e t P a t h L e n g t h ( )

115 {116 i f ( i s s e t ( $ t h i s−>p a t h L e n g t h ) ) {117 $ r e s u l t a d o = ( i n t ) $ t h i s−>p a t h L e n g t h ;

118 } e l s e {119 $ r e s u l t a d o = n u l l ;

120 }121

122 r e t u r n $ r e s u l t a d o ;

123 }124

125 /∗ ∗126 ∗ Re torna o v a l o r da e x t e n s o

127 ∗128 ∗ @access p u b l i c

129 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

130 ∗ @return s t r i n g o v a l o r

131 ∗ /

132 p u b l i c f u n c t i o n g e t V a l u e ( )

133 {134 }135

136 /∗ ∗137 ∗ Re torna o v a l o r da e x t e n s o em base 64

138 ∗139 ∗ @access p u b l i c

140 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

141 ∗ @return s t r i n g o v a l o r

142 ∗ /

143 p u b l i c f u n c t i o n ge tBase64Va lue ( )

144 {145 }146

147 } /∗ end o f c l a s s B a s i c C o n s t r a i n t s E x t e n s i o n C L ∗ /

148

149 ?>

1 <?php

2

3 e r r o r r e p o r t i n g ( E ALL ) ;

4

5 /∗ ∗

Page 354: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

353

6 ∗ s g c i − c l a s s . CRLNumberExtensionCL . php

7 ∗8 ∗ $ Id$

9 ∗10 ∗ T h i s f i l e i s p a r t o f s g c i .

11 ∗12 ∗ A u t o m a t i c g e n e r a t e d w i t h ArgoUML 0 . 2 4 on 1 4 . 0 8 . 2 0 0 7 , 1 7 : 2 8 : 0 6

13 ∗14 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

15 ∗ /

16

17 i f (0 > vers ion compare ( PHP VERSION , ’5’ ) ) {18 d i e ( ’This file was generated for PHP 5’ ) ;

19 }20

21 /∗ ∗22 ∗ i n c l u d e CRLNumberExtension

23 ∗24 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

25 ∗ /

26 r e q u i r e o n c e ( ’Labsec/Security/Certification/Extension/

CRLNumberExtensionInterface.php’ ) ;

27

28 /∗ ∗29 ∗ S h o r t d e s c r i p t i o n o f c l a s s CRLNumberExtensionCL

30 ∗31 ∗ @access p u b l i c

32 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

33 ∗ /

34 c l a s s L a b s e c C L S e c u r i t y C e r t i f i c a t i o n E x t e n s i o n C R L N u m b e r E x t e n s i o n C L

35 imp lemen t s

L a b s e c S e c u r i t y C e r t i f i c a t i o n E x t e n s i o n C R L N u m b e r E x t e n s i o n

36 {37

38 p r i v a t e $number ;

39

40 /∗ ∗41 ∗ C o n s t r u t o r .<br>

42 ∗43 ∗ /

44 p u b l i c f u n c t i o n c o n s t r u c t ( ) {45

Page 355: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

354

46 $ o i d F a c t o r y = new

L a b s e c S e c u r i t y C e r t i f i c a t i o n O b j e c t I d e n t i f i e r F a c t o r y ( ) ;

47

48 / / pega OID usando f a c t o r y

49 $ t h i s−>ex tn ID = $ o i d F a c t o r y−>g e t O b j e c t I d e n t i f i e r B y C o d e (

50 L a b s e c S e c u r i t y C e r t i f i c a t i o n O b j e c t I d e n t i f i e r F a c t o r y : :

EXTENSION CRL NUMBER) ;

51

52 / / segundo a RFC , e s t a e x t e n s o n o pode s e r c r i t i c a l

53 }54

55 /∗ ∗56 ∗ S h o r t d e s c r i p t i o n o f method getNumber

57 ∗58 ∗ @access p u b l i c

59 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

60 ∗ @return i n t

61 ∗ /

62 p u b l i c f u n c t i o n getNumber ( )

63 {64 r e t u r n $ t h i s−>number ;

65 }66

67 /∗ ∗68 ∗ S h o r t d e s c r i p t i o n o f method setNumber

69 ∗70 ∗ @access p u b l i c

71 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

72 ∗ @param i n t

73 ∗ @return v o i d

74 ∗ /

75 p u b l i c f u n c t i o n setNumber ( $number )

76 {77 i f ( Z e n d V a l i d a t e : : i s ( $number , ’Hex’ ) ) {78 $ t h i s−>number = $number ;

79 } e l s e {80 th row new E x c e p t i o n ( ’ P a r m e t r o "number" deve ser hexadecimal’ )

;

81 }82 }83

84 /∗ ∗85 ∗ Re torna o v a l o r da e x t e n s o

Page 356: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

355

86 ∗87 ∗ @access p u b l i c

88 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

89 ∗ @return s t r i n g o v a l o r

90 ∗ /

91 p u b l i c f u n c t i o n g e t V a l u e ( )

92 {93 }94

95 /∗ ∗96 ∗ Re torna o v a l o r da e x t e n s o em base 64

97 ∗98 ∗ @access p u b l i c

99 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

100 ∗ @return s t r i n g o v a l o r

101 ∗ /

102 p u b l i c f u n c t i o n ge tBase64Va lue ( )

103 {104 }105

106 } /∗ end o f c l a s s CRLNumberExtensionCL ∗ /

107

108 ?>

1 <?php

2 e r r o r r e p o r t i n g ( E ALL ) ;

3

4 /∗ ∗5 ∗ s g c i − c l a s s . CRLEntryCL . php

6 ∗7 ∗ $ Id$

8 ∗9 ∗ T h i s f i l e i s p a r t o f s g c i .

10 ∗11 ∗ A u t o m a t i c g e n e r a t e d w i t h ArgoUML 0 . 2 4 on 1 4 . 0 8 . 2 0 0 7 , 1 7 : 2 1 : 0 5

12 ∗13 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

14 ∗ /

15

16 i f (0 > vers ion compare ( PHP VERSION , ’5’ ) ) {17 d i e ( ’This file was generated for PHP 5’ ) ;

18 }19

Page 357: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

356

20 /∗ ∗21 ∗ i n c l u i CRLEntry

22 ∗23 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

24 ∗ /

25 r e q u i r e o n c e ( ’Labsec/Security/Certification/CRL/CRLEntry.php’ ) ;

26

27 /∗ ∗28 ∗ C l a s s e c o n c r e t a que imp lemen ta as e n t r a d a da CRL

29 ∗30 ∗ @access p u b l i c

31 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

32 ∗ /

33 c l a s s L a b s e c C L S e c u r i t y C e r t i f i c a t i o n C R L C R L E n t r y C L

34 imp lemen t s L a b s e c S e c u r i t y C e r t i f i c a t i o n C R L C R L E n t r y

35 {36

37 p r i v a t e $ s e r i a l N u m b e r ;

38

39 p r i v a t e $ r e v o g a t i o n D a t e ;

40

41 p r i v a t e $ e x t e n s i o n s = array ( ) ;

42

43 /∗ ∗44 ∗ Re torna o n m e r o s e r i a l do c e r t i f i c a d o revogado

45 ∗46 ∗ @access p u b l i c

47 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

48 ∗ @return s t r i n g o n m e r o s e r i a l

49 ∗ /

50 p u b l i c f u n c t i o n g e t S e r i a l N u m b e r ( )

51 {52 r e t u r n $ t h i s−>s e r i a l N u m b e r ;

53 }54

55 /∗ ∗56 ∗ Re torna a da ta de r e v o g a o do c e r t i f i c a d o

57 ∗58 ∗ @access p u b l i c

59 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

60 ∗ @return Zend Date A da ta de r e v o g a o

61 ∗ /

62 p u b l i c f u n c t i o n g e t R e v o c a t i o n D a t e ( )

Page 358: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

357

63 {64 r e t u r n $ t h i s−>r e v o g a t i o n D a t e ;

65 }66

67 /∗ ∗68 ∗ Re torna as e x t e n s e s da e n t r a d a da CRL

69 ∗70 ∗ @access p u b l i c

71 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

72 ∗ @return a r r a y Uma a r r a y com as e x t e n s e s de cada e n t r a d a da CRL

73 ∗ /

74 p u b l i c f u n c t i o n g e t E x t e n s i o n s ( )

75 {76 r e t u r n $ t h i s−>e x t e n s i o n s ;

77 }78

79 /∗ ∗80 ∗ Re torna o v a l o r de uma e x t e n s o s o l i c i t a d a .

81 ∗82 ∗ @access p u b l i c

83 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

84 ∗ @param O b j e c t I d e n t i f i e r o OID da e x t e n s o a s e r r e t o r n a d a

85 ∗ @return E x t e n s i o n A e x t e n s o que f o i s o l i c i t a d a . Se n o

e n c o n t r a r

86 ∗ a e x t e n s o , r e t o r n a NULL .

87 ∗ /

88 p u b l i c f u n c t i o n g e t E x t e n s i o n (

L a b s e c S e c u r i t y C e r t i f i c a t i o n O b j e c t I d e n t i f i e r $o id )

89 {90 / / v a r r e o a r r a y

91 foreach ( $ t h i s−>e x t e n s i o n s as $key => $ v a l u e ) {92 i f ( $va lue−>ge t O i d ( ) == $oid−>getOID ( ) ) {93 r e t u r n $ $ v a l u e ;

94 }95 }96 / / s e n o e n c o n t r a r a e x t e n s o , r e t o r n a NULL

97 r e t u r n NULL;

98

99 }100

101 /∗ ∗102 ∗ S e t a o n m e r o S e r i a l

103 ∗

Page 359: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

358

104 ∗ @access p u b l i c

105 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

106 ∗ @param s t r i n g o n m e r o s e r i a l em h e x a d e c i m a l

107 ∗ @return v o i d

108 ∗ /

109 p u b l i c f u n c t i o n s e t S e r i a l N u m b e r ( $ s e r i a l )

110 {111 i f ( Z e n d V a l i d a t e : : i s ( $ s e r i a l , ’Hex’ ) ) {112 $ t h i s−>s e r i a l N u m b e r = $ s e r i a l ;

113 } e l s e {114 th row new E x c e p t i o n ( ’ P a r m e t r o "serial" deve ser

um hexa’ ) ;

115 }116 }117

118 /∗ ∗119 ∗ A d i c i o n a uma e x t e n s o

120 ∗121 ∗ @access p u b l i c

122 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

123 ∗ @param E x t e n s i o n a e x t e n s o a a d i c i o n a r

124 ∗ @return v o i d

125 ∗ /

126 p u b l i c f u n c t i o n a d d E x t e n s i o n (

L a b s e c S e c u r i t y C e r t i f i c a t i o n E x t e n s i o n $ e x t e n s i o n )

127 {128 $ t h i s−>e x t e n s i o n s [ ] = $ e x t e n s i o n ;

129 }130

131 /∗ ∗132 ∗ S e t a a da ta de r e v o g a o da e n t r a d a da CRL

133 ∗134 ∗ @access p u b l i c

135 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

136 ∗ @param Zend Date a da ta de r e v o g a o do c e r t i f i c a d o

137 ∗ @return v o i d

138 ∗ /

139 p u b l i c f u n c t i o n s e t R e v o c a t i o n D a t e ( Zend Date $ d a t e )

140 {141 $ t h i s−>r e v o g a t i o n D a t e = $ d a t e ;

142 }143

144 } /∗ end o f c l a s s CRLEntryCL ∗ /

Page 360: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

359

145

146 ?>

1 <?php

2 / / DOC t e r m i n a r d o c u m e n t a o

3 e r r o r r e p o r t i n g ( E ALL ) ;

4

5 /∗ ∗6 ∗ s g c i − c l a s s . C e r t i f i c a t e B u i l d e r C L . php

7 ∗8 ∗ $ Id$

9 ∗10 ∗ T h i s f i l e i s p a r t o f s g c i .

11 ∗12 ∗ A u t o m a t i c g e n e r a t e d w i t h ArgoUML 0 . 2 4 on 1 4 . 0 8 . 2 0 0 7 , 1 7 : 1 8 : 5 0

13 ∗14 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

15 ∗ /

16

17 i f (0 > vers ion compare ( PHP VERSION , ’5’ ) ) {18 d i e ( ’This file was generated for PHP 5’ ) ;

19 }20

21 r e q u i r e o n c e ( ’Labsec/Security/Certification/CertificateBuilderInterface.php

’ ) ;

22

23 /∗ ∗24 ∗ S h o r t d e s c r i p t i o n o f c l a s s C e r t i f i c a t e B u i l d e r C L

25 ∗26 ∗ @access p u b l i c

27 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

28 ∗ /

29 c l a s s L a b s e c C L S e c u r i t y C e r t i f i c a t i o n C e r t i f i c a t e B u i l d e r C L

30 imp lemen t s L a b s e c S e c u r i t y C e r t i f i c a t i o n C e r t i f i c a t e B u i l d e r

31 {32

33 p r i v a t e $ s u b j e c t ;

34

35 p r i v a t e $ i s s u e r ;

36

37 p r i v a t e $ v e r s i o n ;

38

39 p r i v a t e $ s e r i a l N u m b e r ;

Page 361: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

360

40

41 p r i v a t e $ s i g n a t u r e ;

42

43 p r i v a t e $ n o t A f t e r ;

44

45 p r i v a t e $ n o t B e f o r e ;

46

47 p r i v a t e $ s u b j e c t P u b l i c K e y ;

48

49 p r i v a t e $ e x t e n s i o n s ;

50

51 p r i v a t e $ d a t a ;

52

53 p r i v a t e $ t y p e ;

54

55 /∗ ∗56 ∗ S h o r t d e s c r i p t i o n o f method c o n s t r u c t

57 ∗58 ∗ @access p u b l i c

59 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

60 ∗ @param C e r t i f i c a t e R e q u e s t

61 ∗ @return v o i d

62 ∗ /

63 p u b l i c f u n c t i o n c o n s t r u c t (

L a b s e c S e c u r i t y C e r t i f i c a t i o n R e q u e s t C e r t i f i c a t e R e q u e s t

$ r e q u e s t = n u l l )

64 {65 i f ( $ r e q u e s t != NULL) {66 / / TODO FAZER

67 }68 }69

70 /∗ ∗71 ∗ S h o r t d e s c r i p t i o n o f method s e t S u b j e c t

72 ∗73 ∗ @access p u b l i c

74 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

75 ∗ @param RDNSequence

76 ∗ @return v o i d

77 ∗ /

78 p u b l i c f u n c t i o n s e t S u b j e c t (

L a b s e c S e c u r i t y C e r t i f i c a t i o n D a t a T y p e s R D N S e q u e n c e $ s u b j e c t )

79 {

Page 362: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

361

80 $ t h i s−>s u b j e c t = $ s u b j e c t ;

81 }82

83 /∗ ∗84 ∗ S h o r t d e s c r i p t i o n o f method s e t I s s u e r

85 ∗86 ∗ @access p u b l i c

87 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

88 ∗ @param RDNSequence

89 ∗ @return v o i d

90 ∗ /

91 p u b l i c f u n c t i o n s e t I s s u e r (

L a b s e c S e c u r i t y C e r t i f i c a t i o n D a t a T y p e s R D N S e q u e n c e $ i s s u e r )

92 {93 $ t h i s−> i s s u e r = $ i s s u e r ;

94 }95

96 /∗ ∗97 ∗ S h o r t d e s c r i p t i o n o f method s e t S e r i a l N u m b e r

98 ∗99 ∗ @access p u b l i c

100 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

101 ∗ @param s t r i n g

102 ∗ @return v o i d

103 ∗ /

104 p u b l i c f u n c t i o n s e t S e r i a l N u m b e r ( $ s e r i a l )

105 {106 $ t h i s−>s e r i a l N u m b e r = $ s e r i a l ;

107 }108

109 /∗ ∗110 ∗ S h o r t d e s c r i p t i o n o f method s e t P u b l i c K e y

111 ∗112 ∗ @access p u b l i c

113 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

114 ∗ @return v o i d

115 ∗ /

116 p u b l i c f u n c t i o n s e t P u b l i c K e y ( L a b s e c S e c u r i t y C r y p t o P u b l i c K e y

$pubKey )

117 {118 $ t h i s−>s u b j e c t P u b l i c K e y = $pubKey ;

119 }120

Page 363: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

362

121 /∗ ∗122 ∗ S h o r t d e s c r i p t i o n o f method s e t N o t B e f o r e

123 ∗124 ∗ @access p u b l i c

125 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

126 ∗ @param Zend Date

127 ∗ @return v o i d

128 ∗ /

129 p u b l i c f u n c t i o n s e t N o t B e f o r e ( Zend Date $ n o t B e f o r e )

130 {131 $ t h i s−>n o t B e f o r e = $ n o t B e f o r e ;

132 }133

134 /∗ ∗135 ∗ S h o r t d e s c r i p t i o n o f method s e t N o t A f t e r

136 ∗137 ∗ @access p u b l i c

138 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

139 ∗ @param Zend Date

140 ∗ @return v o i d

141 ∗ /

142 p u b l i c f u n c t i o n s e t N o t A f t e r ( Zend Date $ n o t A f t e r )

143 {144 $ t h i s−>n o t A f t e r = $ n o t A f t e r ;

145 }146

147 /∗ ∗148 ∗ S h o r t d e s c r i p t i o n o f method a d d E x t e n s i o n

149 ∗150 ∗ @access p u b l i c

151 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

152 ∗ @param E x t e n s i o n

153 ∗ @return v o i d

154 ∗ /

155 p u b l i c f u n c t i o n a d d E x t e n s i o n (

L a b s e c S e c u r i t y C e r t i f i c a t i o n E x t e n s i o n $ e x t e n s i o n )

156 {157 $ t h i s−>c e r t i f i c a t e −>s e t V e r s i o n ( 3 ) ;

158

159 $ t h i s−>e x t e n s i o n s [ ] = $ e x t e n s i o n ;

160 }161

162 /∗ ∗

Page 364: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

363

163 ∗ S h o r t d e s c r i p t i o n o f method a d d E x t e n s i o n s

164 ∗165 ∗ @access p u b l i c

166 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

167 ∗ @param a r r a y

168 ∗ @return v o i d

169 ∗ /

170 p u b l i c f u n c t i o n a d d E x t e n s i o n s ( $ e x t e n s i o n s )

171 {172 i f ( i s a r r a y ( $ e x t e n s i o n s ) ) {173 foreach ( $ e x t e n s i o n s as $ e x t e n s a o ) {174 i f ( $ e x t e n s a o i n s t a n c e o f

L a b s e c S e c u r i t y C e r t i f i c a t i o n E x t e n s i o n )

{175 $ t h i s−>e x t e n s i o n s = $ e x t e n s a o ;

176 } e l s e {177 th row new E x c e p t i o n ( ’O p a r m e t r o

$extensions DEVE ser um array

178 com elementos somento do

tipo Extension’ ) ;

179 }180 }181 } e l s e {182 th row new E x c e p t i o n ( ’O p a r m e t r o $extensions DEVE

ser array.’ ) ;

183 }184 }185

186 /∗ ∗187 ∗ S h o r t d e s c r i p t i o n o f method s i g n

188 ∗189 ∗ @access p u b l i c

190 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

191 ∗ @param P r i v a t e K e y

192 ∗ @param s t r i n g

193 ∗ @param C e r t i f i c a t e T e m p l a t e a

194 ∗ @param s t r i n g

195 ∗ @return C e r t i f i c a t e

196 ∗ /

197 p u b l i c f u n c t i o n s i g n ( L a b s e c S e c u r i t y C r y p t o P r i v a t e K e y $ p r i v a t e K e y

, $hashAlgor i thm ,

198 L a b s e c S e c u r i t y C e r t i f i c a t i o n C e r t i f i c a t e T e m p l a t e $ t e m p a t e

= n u l l , $ e x t r a A r g s = n u l l )

Page 365: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

364

199 {200 / / TODO APLICAR TEMPLATE . . . .

201

202 $ d a t a = l i b c r y p t o s e c i s s u e c e r t i f i c a t e (

203 $ t h i s−>s e r i a l Nu mb er ,

204 $ t h i s−>i s s u e r−>g e t E n t r i e s ( ) ,

205 $ t h i s−>s u b j e c t−>g e t E n t r i e s ( ) ,

206 $ t h i s−>n o t B e f o r e−>ge tTimes tamp ( ) ,

207 $ t h i s−>n o t A f t e r−>ge tTimes tamp ( ) ,

208 $ t h i s−>s u b j e c t P u b l i c K e y−>getPemEncoded ( ) ,

209 $ p r i v a t e K e y−>getPemEncoded ( ) ,

210 $password ="" ,

211 L a b s e c C L S e c u r i t y U t i l P a r s e r s : :

c o n v e r t C e r t i f i c a t e E x t e n s i o n s T o A r r a y ( $ t h i s−>

e x t e n s i o n s )

212 ) ;

213

214 p r i n t r ( new L a b s e c C L S e c u r i t y C e r t i f i c a t i o n C e r t i f i c a t e C L (

$ d a t a ) ) ;

215 e x i t ( 0 ) ;

216

217 r e t u r n new L a b s e c C L S e c u r i t y C e r t i f i c a t i o n C e r t i f i c a t e C L (

$ d a t a ) ;

218 }219

220 } /∗ end o f c l a s s C e r t i f i c a t e B u i l d e r C L ∗ /

221

222 ?>

1 <?php

2 / / TODO t e r m i n a r d o c u m e n t a o

3

4 e r r o r r e p o r t i n g ( E ALL ) ;

5

6 /∗ ∗7 ∗ s g c i − c l a s s . C e r t i f i c a t e R e v o c a t i o n L i s t C L . php

8 ∗9 ∗ $ Id$

10 ∗11 ∗ T h i s f i l e i s p a r t o f s g c i .

12 ∗13 ∗ A u t o m a t i c g e n e r a t e d w i t h ArgoUML 0 . 2 4 on 1 4 . 0 8 . 2 0 0 7 , 1 7 : 2 2 : 3 3

14 ∗

Page 366: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

365

15 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

16 ∗ /

17

18 i f (0 > vers ion compare ( PHP VERSION , ’5’ ) ) {19 d i e ( ’This file was generated for PHP 5’ ) ;

20 }21

22 /∗ ∗23 ∗ i n c l u i C e r t i f i c a t e R e v o c a t i o n L i s t

24 ∗25 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

26 ∗ /

27 r e q u i r e o n c e ( ’Labsec/Security/Certification/

CertificateRevocationListInterface.php’ ) ;

28

29 /∗ ∗30 ∗ S h o r t d e s c r i p t i o n o f c l a s s C e r t i f i c a t e R e v o c a t i o n L i s t C L

31 ∗32 ∗ @access p u b l i c

33 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

34 ∗ /

35 c l a s s L a b s e c C L S e c u r i t y C e r t i f i c a t i o n C e r t i f i c a t e R e v o c a t i o n L i s t C L

36 imp lemen t s L a b s e c S e c u r i t y C e r t i f i c a t i o n C e r t i f i c a t e R e v o c a t i o n L i s t

37 {38

39 p r i v a t e $ s e r i a l N u m b e r ;

40

41 p r i v a t e $ i s s u e r ;

42

43 p r i v a t e $ t h i s U p d a t e ;

44

45 p r i v a t e $nex tUpda t e ;

46

47 / / TODO c a l c u l a r a u t o m a t i c a m e n t e v e r s i o n

48 p r i v a t e $ v e r s i o n ;

49

50 p r i v a t e $ e x t e n s i o n s ;

51

52 p r i v a t e $ e n t r i e s = array ( ) ;

53

54 p r i v a t e $ d a t a ;

55

56 p r i v a t e $ t y p e ;

Page 367: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

366

57

58 /∗ ∗59 ∗ S h o r t d e s c r i p t i o n o f method getPem

60 ∗61 ∗ @access p u b l i c

62 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

63 ∗ @return s t r i n g

64 ∗ /

65 p u b l i c f u n c t i o n getPem ( )

66 {67 i f ( $ t h i s−>t y p e == ’PEM’ ) {68 $ r e s u l t a d o = $ t h i s−>d a t a ;

69 } e l s e {70 $ r e s u l t a d o = L a b s e c C L S e c u r i t y U t i l C o n v e r t e r s : : derToPem ( $ t h i s

−>da ta , L a b s e c C L S e c u r i t y U t i l C o n v e r t e r s : : CRL) ;

71 }72

73 r e t u r n $ r e s u l t a d o ;

74 }75

76 /∗ ∗77 ∗ S h o r t d e s c r i p t i o n o f method ge tDer

78 ∗79 ∗ @access p u b l i c

80 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

81 ∗ @return v o i d

82 ∗ /

83 p u b l i c f u n c t i o n ge tD e r ( )

84 {85 i f ( $ t h i s−>t y p e == ’DER’ ) {86 $ r e s u l t a d o = $ t h i s−>d a t a ;

87 } e l s e {88 $ r e s u l t a d o = L a b s e c C L S e c u r i t y U t i l C o n v e r t e r s : : pemToDer ( $ t h i s

−>da ta , L a b s e c C L S e c u r i t y U t i l C o n v e r t e r s : : CRL) ;

89 }90

91 r e t u r n $ r e s u l t a d o ;

92 }93

94 /∗ ∗95 ∗ S h o r t d e s c r i p t i o n o f method g e t V e r s i o n

96 ∗97 ∗ @access p u b l i c

Page 368: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

367

98 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

99 ∗ @return i n t

100 ∗ /

101 p u b l i c f u n c t i o n g e t V e r s i o n ( )

102 {103 r e t u r n $ t h i s−>v e r s i o n ;

104 }105

106 /∗ ∗107 ∗ S h o r t d e s c r i p t i o n o f method g e t I s s u e r

108 ∗109 ∗ @access p u b l i c

110 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

111 ∗ @return RDNSequence

112 ∗ /

113 p u b l i c f u n c t i o n g e t I s s u e r ( )

114 {115 r e t u r n $ t h i s−> i s s u e r ;

116 }117

118 /∗ ∗119 ∗ S h o r t d e s c r i p t i o n o f method g e t T h i s U p d a t e

120 ∗121 ∗ @access p u b l i c

122 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

123 ∗ @return Zend Date

124 ∗ /

125 p u b l i c f u n c t i o n g e t T h i s U p d a t e ( )

126 {127 r e t u r n $ t h i s−>t h i s U p d a t e ;

128 }129

130 /∗ ∗131 ∗ S h o r t d e s c r i p t i o n o f method g e t N e x t U p d a t e

132 ∗133 ∗ @access p u b l i c

134 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

135 ∗ @return Zend Date

136 ∗ /

137 p u b l i c f u n c t i o n ge tNex tUpda t e ( )

138 {139 r e t u r n $ t h i s−>ne x t U p d a t e ;

140 }

Page 369: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

368

141

142 /∗ ∗143 ∗ S h o r t d e s c r i p t i o n o f method g e t E x t e n s i o n s

144 ∗145 ∗ @access p u b l i c

146 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

147 ∗ @return a r r a y

148 ∗ /

149 p u b l i c f u n c t i o n g e t E x t e n s i o n s ( )

150 {151 r e t u r n $ t h i s−>e x t e n s i o n s ;

152 }153

154 /∗ ∗155 ∗ S h o r t d e s c r i p t i o n o f method g e t E x t e n s i o n

156 ∗157 ∗ @access p u b l i c

158 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

159 ∗ @param O b j e c t I d e n t i f i e r

160 ∗ @return E x t e n s i o n

161 ∗ /

162 p u b l i c f u n c t i o n g e t E x t e n s i o n ( O b j e c t I d e n t i f i e r $o id )

163 {164 foreach ( $ t h i s−>e x t e n s i o n s as $key => $ v a l u e ) {165 i f ( $va lue−>getOID ( ) == $oid−>getOID ( ) ) {166 r e t u r n $ v a l u e ;

167 }168 }169

170 r e t u r n n u l l ;

171

172 }173

174 /∗ ∗175 ∗ S h o r t d e s c r i p t i o n o f method ge tUnknownEx tens ions

176 ∗177 ∗ @access p u b l i c

178 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

179 ∗ @return a r r a y

180 ∗ /

181 p u b l i c f u n c t i o n ge tUnknownExtens ions ( )

182 {

Page 370: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

369

183 r e t u r n l i b c r y p t o s e c c r l e x t e n s i o n g e t u n k n o w n e x t e n s i o n s ( $ t h i s−>

getPem ( ) ) ;

184 }185

186 /∗ ∗187 ∗ S h o r t d e s c r i p t i o n o f method v e r i f y S i g n a t u r e

188 ∗189 ∗ @access p u b l i c

190 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

191 ∗ @return boo lean

192 ∗ /

193 p u b l i c f u n c t i o n v e r i f y S i g n a t u r e ( )

194 {195 / / TODO TERMINAR , QUANDO M DULO ESTIVER PRONTO

196 r e t u r n l i b c r y p t o s e c c r l v e r i f y s i g n a t u r e ( $ t h i s−>getPem ( ) ) ;

197 }198

199 /∗ ∗200 ∗ S h o r t d e s c r i p t i o n o f method g e t C R L E n t r i e s

201 ∗202 ∗ @access p u b l i c

203 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

204 ∗ @return CRLEntry

205 ∗ /

206 p u b l i c f u n c t i o n g e t C R L E n t r i e s ( )

207 {208 r e t u r n $ t h i s−>e n t r i e s ;

209 }210

211 /∗ ∗212 ∗ S h o r t d e s c r i p t i o n o f method i s R e v o k e d

213 ∗214 ∗ @access p u b l i c

215 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

216 ∗ @param C e r t i f i c a t e

217 ∗ @return boo lean

218 ∗ /

219 p u b l i c f u n c t i o n i sRevoked ( L a b s e c S e c u r i t y C e r t i f i c a t i o n C e r t i f i c a t e

$ c e r t i f i c a t e )

220 {221 / / v a r r e as e n t r a d a s da CRL , em busca do c e r t i f i c a d o

222 foreach ( $ t h i s−>e n t r i e s a s $key => $ v a l u e ) {

Page 371: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

370

223 i f ( $va lue−>g e t S e r i a l N u m b e r ( ) == $ c e r t i f i c a t e −>g e t S e r i a l N u m b e r

( ) ) {224 / / s e achar r e t o r n a t r u e

225 r e t u r n t rue ;

226 }227 }228 / / s e n o achar , r e t o r n a f a l s e

229 r e t u r n f a l s e ;

230 }231

232 / / p r i v a t e f u n c t i o n pemToDer ( $pem data )

233 / / {234 / / $ be g i n = ”X509 CRL−−−−−”;

235 / / $end = ”−−−−−END”;

236 / /

237 / / $pem data = s u b s t r ( $pem data , s t r p o s ( $pem data , $ be g in )+ s t r l e n (

$ be g in ) ) ;

238 / / $pem data = s u b s t r ( $pem data , 0 , s t r p o s ( $pem data , $end ) ) ;

239 / /

240 / / $der = b a s e 6 4 d e c o d e ( $pem data ) ;

241 / /

242 / / r e t u r n $der ;

243 / / }244 / /

245 / / p r i v a t e f u n c t i o n derToPem ( $ d e r d a t a )

246 / / {247 / / $pem = c h u n k s p l i t ( b a s e 6 4 e n c o d e ( $ d e r d a t a ) , 64 , ”\n ”) ;

248 / /

249 / / $pem = ”−−−−−BEGIN X509 CRL−−−−−\n ” . $pem.”−−−−−END X509 CRL−−−−−\n ”;

250 / /

251 / / r e t u r n $pem ;

252 / / }253

254 } /∗ end o f c l a s s C e r t i f i c a t e R e v o c a t i o n L i s t C L ∗ /

255

256 ?>

1 <?php

2

3 e r r o r r e p o r t i n g ( E ALL ) ;

4

5 /∗ ∗

Page 372: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

371

6 ∗ s g c i − i n t e r f a c e . C e r t i f i c a t e . php

7 ∗8 ∗ $ Id$

9 ∗10 ∗ T h i s f i l e i s p a r t o f s g c i .

11 ∗12 ∗ A u t o m a t i c g e n e r a t e d w i t h ArgoUML 0 . 2 4 on 2 9 . 0 8 . 2 0 0 7 , 1 8 : 2 5 : 2 7

13 ∗14 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

15 ∗ /

16

17 i f (0 > vers ion compare ( PHP VERSION , ’5’ ) ) {18 d i e ( ’This file was generated for PHP 5’ ) ;

19 }20

21 r e q u i r e o n c e ( ’Labsec/Security/Certification/CertificateInterface.php’ ) ;

22 r e q u i r e o n c e ( ’Labsec/Security/Certification/DataTypes/RDNSequence.php’ ) ;

23 r e q u i r e o n c e ( ’Labsec/Security/Crypto/PublicKey.php’ ) ;

24 r e q u i r e o n c e ( ’LabsecCL/Security/Util/Parsers.php’ ) ;

25 r e q u i r e o n c e ( ’LabsecCL/Security/Util/Converters.php’ ) ;

26

27 r e q u i r e o n c e ( ’Zend/Date.php’ ) ;

28

29

30 /∗ ∗31 ∗ C l a s s e que r e p r e s e n t a um C e r t i f i c a t o D i g i t a l X . 5 0 9

32 ∗33 ∗ @access p u b l i c

34 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

35 ∗ /

36 c l a s s L a b s e c C L S e c u r i t y C e r t i f i c a t i o n C e r t i f i c a t e C L

37 imp lemen t s L a b s e c S e c u r i t y C e r t i f i c a t i o n C e r t i f i c a t e

38 {39 p r i v a t e $ s u b j e c t ;

40

41 p r i v a t e $ i s s u e r ;

42

43 p r i v a t e $ v e r s i o n ;

44

45 p r i v a t e $ s e r i a l N u m b e r ;

46

47 p r i v a t e $ s i g n a t u r e A l g o r i t h m ;

48

Page 373: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

372

49 p r i v a t e $ n o t A f t e r ;

50

51 p r i v a t e $ n o t B e f o r e ;

52

53 p r i v a t e $ s u b j e c t P u b l i c K e y I n f o ;

54

55 p r i v a t e $ e x t e n s i o n s ;

56

57 p r i v a t e $ d a t a ;

58

59 /∗ ∗60 ∗ C o n s t r u t o r . Cr ia um c e r t i f i c a d o a p a r t i r de dados pa s s a d o s

61 ∗ como p a r m e t r o

62 ∗63 ∗ @access p u b l i c

64 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

65 ∗ @param var os dados do c e r t i f i c a d o

66 ∗ @param s t r i n g o f o r m a t o dos dados (PEM/DER) . E s t e p a r m e t r o

67 ∗ o p c i o n a l . O v a l o r d e f a u l t PEM.

68 ∗ @return v o i d

69 ∗ /

70 p u b l i c f u n c t i o n c o n s t r u c t ( $da ta , $ t y p e = ’PEM’ )

71 {72 i f ( ( $ t y p e !== ’PEM’ ) && ( $ t y p e !== ’DER’ ) ) {73 th row new E x c e p t i o n ( " P a r m e t r o type da classe

CerificateCL i n v l i d o " ) ;

74 }75

76 / / s e o p a r m e t r o f o r passado , c o n s t r i o c e r t i f i c a d o a

p a r t i r dos dados

77 / / do a r q u i v o passado como p a r m e t r o

78 i f ( $ d a t a != n u l l ) {79

80 / / s e f o r DER, t r a n s f o r m a em PEM.

81 / / i n t e r n a m e n t e , a c l a s s e u t i l i z a somente em f o r m a t o

PEM

82 i f ( $ t y p e === ’DER’ ) {83 $ d a t a = L a b s e c C L S e c u r i t y U t i l C o n v e r t e r s : :

derToPem ( $da ta ,

L a b s e c C L S e c u r i t y U t i l C o n v e r t e r s : :

CERTIFICATE ) ;

84 }85

Page 374: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

373

86 / / passa os dados para a t r i b u t o da c l a s s e , para s e r

u t i l i z a d o em o u t r o s m t o d o s

87 $ t h i s−>d a t a = $ d a t a ;

88

89 / / S u b j e c t

90 / / pega o s u b j e c t

91 $ a r r a y = l i b c r y p t o s e c c e r t i f i c a t e g e t s u b j e c t ( $ d a t a

) ;

92 / / t r a n s f o r m a em um RDNSequence e s e t a o s u b j e c t

93 $ t h i s−>s u b j e c t = L a b s e c C L S e c u r i t y U t i l P a r s e r s : :

t ransformArrayToRDNSequence ( $ a r r a y ) ;

94 / /

−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−//

95

96 / / I s s u e r

97 / / pega o i s s u e r

98 $ a r r a y = l i b c r y p t o s e c c e r t i f i c a t e g e t i s s u e r ( $ d a t a )

;

99 / / t r a n s f o r m a em um RDNSequence e s e t a o s u b j e c t

100 $ t h i s−> i s s u e r = L a b s e c C L S e c u r i t y U t i l P a r s e r s : :

t ransformArrayToRDNSequence ( $ a r r a y ) ;

101 / /

−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−//

102

103 / / Se r ia lNumber

104 / / pega o ser ia lNumber , e s e t a o a t r i b u t o

105 $ t h i s−>s e r i a l N u m b e r = ( i n t )

l i b c r y p t o s e c c e r t i f i c a t e g e t s e r i a l n u m b e r ( $ d a t a

) ;

106 / /

−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−//

107

108 / / N o t B e f o r e

109 / / pega o n o t B e f o r e , e s e t a o a t r i b u t o

110 $ t h i s−>n o t B e f o r e = new Zend Date (

l i b c r y p t o s e c c e r t i f i c a t e g e t n o t b e f o r e ( $ d a t a ) ,

Zend Date : : TIMESTAMP) ;

111 / /

−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−//

Page 375: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

374

112

113 / / N o t A f t e r

114 / / pega o N o t A f t e r , e s e t a o a t r i b u t o

115 $ t h i s−>n o t A f t e r = new Zend Date (

l i b c r y p t o s e c c e r t i f i c a t e g e t n o t a f t e r ( $ d a t a ) ,

Zend Date : : TIMESTAMP) ;

116 / /

−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−//

117

118 / / V e r s i o n

119 / / pega a v e r s o do c e r t i f i c a d o , e s e t a o a t r i b u t o

120 $ t h i s−>v e r s i o n = ( i n t ) (

l i b c r y p t o s e c c e r t i f i c a t e g e t v e r s i o n ( $ d a t a ) + 1)

;

121 / /

−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−//

122

123 / / S i g n a t u r e

124 $ t h i s−>s i g n a t u r e A l g o r i t h m =

l i b c r y p t o s e c c e r t i f i c a t e g e t m e s s a g e d i g e s t a l g o r i t h m

( $ d a t a ) ;

125 / /

−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−//

126

127 / / S u b j e c t P u b l i c K e y I n f o

128 $pubKey = l i b c r y p t o s e c c e r t i f i c a t e g e t p u b l i c k e y (

$ d a t a ) ;

129

130 $ t h i s−>s u b j e c t P u b l i c K e y I n f o = new

L a b s e c S e c u r i t y C r y p t o P u b l i c K e y ( $pubKey [ ’key’ ] ,

"PEM" ) ;

131 / /

−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−//

132

133 / / E x t e n s i o n s

134 $ t h i s−>e x t e n s i o n s = L a b s e c C L S e c u r i t y U t i l P a r s e r s

: : c o n v e r t C e r t i f i c a t e E x t e n s i o n s ( $ d a t a ) ;

135 / /

−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−//

Page 376: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

375

136

137 / / TODO Fazer m t o o d o para v e r i f i c a r se e s t

con forme a RFC 3280

138

139 } e l s e {140 th row new E x c e p t i o n ( ’Parametro data igual a null’ ) ;

141 }142 }143

144 /∗ ∗145 ∗ Re torna o c e r t i f i c a d o em f o r m a t o PEM

146 ∗147 ∗ @access p u b l i c

148 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

149 ∗ @return s t r i n g O c e r t i f i c a d o em uma s t r i n g no f o r m a t o PEM

150 ∗ /

151 p u b l i c f u n c t i o n getPem ( )

152 {153 / / i n t e r n a m e n t e , SEMPRE v a i e s t a r em f o r m a t o PEM

154 r e t u r n $ t h i s−>d a t a ;

155 }156

157 /∗ ∗158 ∗ Re torna o c e r t i f i c a d o em f o r m a t o DER

159 ∗160 ∗ @access p u b l i c

161 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

162 ∗ @return s t r i n g O c e r t i f i c a d o em uma s t r i n g no f o r m a t o DER

163 ∗ /

164 p u b l i c f u n c t i o n g e t De r ( )

165 {166 / / i n t e r n a m e n t e , SEMPRE v a i e s t a r em f o r m a t o PEM

167 r e t u r n L a b s e c C L S e c u r i t y U t i l C o n v e r t e r s : : pemToDer ( $ t h i s−>

da t a , L a b s e c C L S e c u r i t y U t i l C o n v e r t e r s : : CERTIFICATE ) ;

168 }169

170 /∗ ∗171 ∗ Re torna o s u j e i t o do c e r t i f i c a d o

172 ∗173 ∗ @access p u b l i c

174 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

175 ∗ @return RDNSequence um o b j e t o do t i p o RDNSequence com os

Page 377: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

376

176 ∗ campos do s u j e i t o do c e r t i f i c a d o

177 ∗ @throws E x c e p t i o n Quando o s u b j e c t e s t i v e r v a z i o .

178 ∗ /

179 p u b l i c f u n c t i o n g e t S u b j e c t ( )

180 {181 i f ( i s s e t ( $ t h i s−>s u b j e c t ) ) {182 r e t u r n $ t h i s−>s u b j e c t ;

183 } e l s e {184 th row new E x c e p t i o n ( ’Subject vazio!’ ) ;

185 }186 }187

188 /∗ ∗189 ∗ Re torna o e m i s s o r do c e r t i f i c a d o

190 ∗191 ∗ @access p u b l i c

192 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

193 ∗ @return RDNSequence um o b j e t o do t i p o RDNSequence com os

194 ∗ campos do e m i s s o r do c e r t i f i c a d o

195 ∗ @throws E x c e p t i o n Quando o i s s u e r f o r v a z i o

196 ∗ /

197 p u b l i c f u n c t i o n g e t I s s u e r ( )

198 {199 i f ( i s s e t ( $ t h i s−> i s s u e r ) ) {200 r e t u r n $ t h i s−> i s s u e r ;

201 } e l s e {202 th row new E x c e p t i o n ( ’Issuer vazio!’ ) ;

203 }204 }205

206 /∗ ∗207 ∗ Re torna o n m e r o s e r i a l do c e r t i f i c a d o

208 ∗209 ∗ @access p u b l i c

210 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

211 ∗ @return s t r i n g o n m e r o s e r i a l do c e r t i f i c a d o , em f o r m a t o

s t r i n g . O n m e r o s e r i a l e s t em d e c i m a l

212 ∗ @throws E x c e p t i o n Quando o n m e r o s e r i a l f o r v a z i o

213 ∗ /

214 p u b l i c f u n c t i o n g e t S e r i a l N u m b e r ( )

215 {216 i f ( i s s e t ( $ t h i s−>s e r i a l N u m b e r ) ) {217 r e t u r n $ t h i s−>s e r i a l N u m b e r ;

Page 378: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

377

218 } e l s e {219 th row new E x c e p t i o n ( ’ N m e r o serial vazio’ ) ;

220 }221 }222

223 /∗ ∗224 ∗ Re torna o a l g o r i t m o de Hash u t i l i z a d o para a s s i n a r o c e r t i f i c a d o

225 ∗ @access p u b l i c

226 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

227 ∗ @return s t r i n g uma s t r i n g r e p r e s e n t a n d o o a l g o r i t m o ( SHA1 ,

SHA256 , MD5, e t c )

228 ∗ @throws E x c e p t i o n Quando o a l g o r i t m o de a s s i n a t u r a f o r v a z i o

229 ∗ /

230 p u b l i c f u n c t i o n g e t M e s s a g e D i g e s t A l g o r i t h m ( )

231 {232 i f ( i s s e t ( $ t h i s−>s i g n a t u r e A l g o r i t h m ) ) {233 r e t u r n $ t h i s−>s i g n a t u r e A l g o r i t h m ;

234 } e l s e {235 th row new E x c e p t i o n ( ’Algoritmo de hash utilizado

na assinatura ’

236 . ’do certificado vazio’ ) ;

237 }238 }239

240 /∗ ∗241 ∗ Re torna o campo n o t B e f o r e do c e r t i f i c a d o

242 ∗243 ∗ @access p u b l i c

244 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

245 ∗ @return Zend Date A da ta do campo n o t B e f o r e do c e r t i f i c a d o

246 ∗ @throws E x c e p t i o n Quando a da ta n o t B e f o r e e s t i v e r v a z i a

247 ∗ /

248 p u b l i c f u n c t i o n g e t N o t B e f o r e ( )

249 {250 i f ( i s s e t ( $ t h i s−>n o t B e f o r e ) ) {251 r e t u r n $ t h i s−>n o t B e f o r e ;

252 } e l s e {253 th row new E x c e p t i o n ( ’Data notBefore do certificado

e s t vazia’ ) ;

254 }255 }256

257 /∗ ∗

Page 379: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

378

258 ∗ Re torna o campo n o t A f t e r do c e r t i f i c a d o

259 ∗260 ∗ @access p u b l i c

261 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

262 ∗ @return Zend Date A da ta do campo n o t A f t e r do c e r t i f i c a d o

263 ∗ @throws E x c e p t i o n Quando a da ta n o t A f t e r e s t i v e r v a z i a

264 ∗ /

265 p u b l i c f u n c t i o n g e t N o t A f t e r ( )

266 {267 i f ( i s s e t ( $ t h i s−>n o t A f t e r ) ) {268 r e t u r n $ t h i s−>n o t A f t e r ;

269 } e l s e {270 th row new E x c e p t i o n ( ’Data notBefore do certificado

e s t vazia’ ) ;

271 }272 }273

274 /∗ ∗275 ∗ Re torna a v e r s o do c e r t i f i c a d o

276 ∗277 ∗ @access p u b l i c

278 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

279 ∗ @return i n t a v e r s o do c e r t i f i c a d o

280 ∗ @throws E x c e p t i o n Quando a v e r s o e s t i v e r v a z i a

281 ∗ /

282 p u b l i c f u n c t i o n g e t V e r s i o n ( )

283 {284 i f ( i s s e t ( $ t h i s−>v e r s i o n ) ) {285 r e t u r n $ t h i s−>v e r s i o n ;

286 } e l s e {287 th row new E x c e p t i o n ( ’O campo v e r s o do certificado

e s t vazio’ ) ;

288 }289 }290

291 /∗ ∗292 ∗ Re torna a chave p b l i c a do c e r t i f i c a d o

293 ∗294 ∗ @access p u b l i c

295 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

296 ∗ @return mixed a chave p b l i c a

297 ∗ @throws E x c e p t i o n Quando a chave p b l i c a e s t i v e r v a z i a

298 ∗ /

Page 380: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

379

299 p u b l i c f u n c t i o n g e t P u b l i c K e y ( )

300 {301 i f ( i s s e t ( $ t h i s−>s u b j e c t P u b l i c K e y I n f o [ ’publickey’ ] ) ) {302 r e t u r n $ t h i s−>s u b j e c t P u b l i c K e y I n f o [ ’publickey’ ] ;

303 } e l s e {304 th row new E x c e p t i o n ( ’A chave p b l i c a e s t vazia’ )

;

305 }306 }307

308 /∗ ∗309 ∗ V e r i f i c a a a s s i n a t u r a do c e r t i f i c a d o

310 ∗311 ∗ @access p u b l i c

312 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

313 ∗ @return boo lean TRUE caso a a s s i n a t u r a e s t e j a c o r r e t a , FALSE

caso

314 ∗ c o n t r r i o

315 ∗ /

316 p u b l i c f u n c t i o n v e r i f y S i g n a t u r e (

L a b s e c S e c u r i t y C e r t i f i c a t i o n C e r t i f i c a t e $ i s s u e r )

317 {318 r e t u r n l i b c r y p t o s e c c e r t i f i c a t e v e r i f y s i g n a t u r e ( $ t h i s−>

da t a , $ i s s u e r−>getPem ( ) ) ;

319 }320

321 /∗ ∗322 ∗ Re torna as e x t e n s e s

323 ∗324 ∗ @access p u b l i c

325 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

326 ∗ @return a r r a y Uma Array com as e x t e n s e s do c e r t i f i c a d o

327 ∗ /

328 p u b l i c f u n c t i o n g e t E x t e n s i o n s ( )

329 {330 r e t u r n $ t h i s−>e x t e n s i o n s ;

331 }332

333 /∗ ∗334 ∗ A p a r t i r de um OID , procura um e x t e n s o . Se a e x t e n s o e x i s t i r

no c e r t i f i c a d o ,

335 ∗ r e t o r n a a e x t e n s o . Se n o e x i s t i r , r e t o r n a NULL .

336 ∗

Page 381: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

380

337 ∗ @access p u b l i c

338 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

339 ∗ @param O b j e c t I d e n t i f i e r o OID da e x t e n s o a p r o c u r a r

340 ∗ @return E x t e n s i o n a E x t e n s o

341 ∗ /

342 p u b l i c f u n c t i o n g e t E x t e n s i o n (

L a b s e c S e c u r i t y C e r t i f i c a t i o n O b j e c t I d e n t i f i e r $o id )

343 {344 r e t u r n $ t h i s−>e x t e n s i o n s [ $oid−>getOID ( ) ] ;

345 }346

347 /∗ ∗348 ∗ Re torna a ” i m p r e s s o d i g i t a l ” ( i d e n t i f i c a d o r ) do c e r t i f i c a d o

349 ∗350 ∗ @access p u b l i c

351 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

352 ∗ @param i n t uma c o n s t a n t e da c l a s s e MessageDiges t , que r e p r e s e n t a

o a l g o r i t m o

353 ∗ @return s t r i n g a ” i m p r e s s o d i g i t a l ” do c e r t i f i c a d o

354 ∗ /

355 p u b l i c f u n c t i o n g e t F i n g e r p r i n t ( $ a l g o r i t h m ) {356 r e t u r n l i b c r y p t o s e c c e r t i f i c a t e g e t f i n g e r p r i n t ( $ t h i s−>

getPem ( ) , $ a l g o r i t h m ) ;

357 }358

359 /∗ ∗360 ∗ Re torna as e x t e n s e s d e s c o n h e c i d a s p e l a b i b l i o t e c a . As

e x t e n s e s

361 ∗ s o r e t o r n a d a s na forma de um par ( chave , v a l o r )

362 ∗363 ∗ @access p u b l i c

364 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

365 ∗ @return a r r a y uma a r r a y com as e x t e n s e s d e s c o n h e c i d a s

366 ∗ /

367 p u b l i c f u n c t i o n ge tUnknownExtens ions ( ) {368 r e t u r n l i b c r y p t o s e c c e r t i f i c a t e u n k n o w n e x t e n s i o n s ( $ t h i s−>

da t a , $ t h i s−>t y p e ) ;

369 }370

371 /∗ ∗372 ∗ Re torna as i n f o r m a e s da Chave P b l i c a

373 ∗374 ∗ @access p u b l i c

Page 382: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

381

375 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

376 ∗ @return var as i n f o r m a o e s da Chave P b l i c a do c e r t i f i c a d o

377 ∗ /

378 p u b l i c f u n c t i o n g e t P u b l i c K e y I n f o ( ) {379 / / TODO ALTERAR QUANDO O MODULO FICAR PRONTO

380 }381

382 } /∗ end o f i n t e r f a c e C e r t i f i c a t e ∗ /

383

384 ?>

1 <?php

2 / / DOC t e r m i n a r d o c u m e n t a o

3

4 e r r o r r e p o r t i n g ( E ALL ) ;

5

6 /∗ ∗7 ∗ s g c i − c l a s s . C e r t i f i c a t e T e m p l a t e C L . php

8 ∗9 ∗ $ Id$

10 ∗11 ∗ T h i s f i l e i s p a r t o f s g c i .

12 ∗13 ∗ A u t o m a t i c g e n e r a t e d w i t h ArgoUML 0 . 2 4 on 1 4 . 0 8 . 2 0 0 7 , 1 7 : 1 9 : 5 5

14 ∗15 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

16 ∗ /

17

18 i f (0 > vers ion compare ( PHP VERSION , ’5’ ) ) {19 d i e ( ’This file was generated for PHP 5’ ) ;

20 }21

22 /∗ ∗23 ∗ i n c l u d e C e r t i f i c a t e T e m p l a t e a

24 ∗25 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

26 ∗ /

27 r e q u i r e o n c e ( ’Labsec/Security/Certification/CertificateTemplateInterface.

php’ ) ;

28

29 /∗ ∗30 ∗ S h o r t d e s c r i p t i o n o f c l a s s C e r t i f i c a t e T e m p l a t e C L

31 ∗

Page 383: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

382

32 ∗ @access p u b l i c

33 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

34 ∗ /

35 c l a s s L a b s e c C L S e c u r i t y C e r t i f i c a t i o n C e r t i f i c a t e T e m p l a t e C L

36 imp lemen t s L a b s e c S e c u r i t y C e r t i f i c a t i o n C e r t i f i c a t e T e m p l a t e

37 {38

39 p r i v a t e $ v a l i d i t y D a y s ;

40

41 p r i v a t e $ e x t e n s i o n s = array ( ) ;

42

43 /∗ ∗44 ∗ S h o r t d e s c r i p t i o n o f method s e t V a l i d i t y D a y s

45 ∗46 ∗ @access p u b l i c

47 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

48 ∗ @param i n t

49 ∗ @return v o i d

50 ∗ /

51 p u b l i c f u n c t i o n s e t V a l i d i t y D a y s ( $days )

52 {53 i f ( i s n u m e r i c ( $days ) ) {54 $ t h i s−>v a l i d i t y D a y s = $days ;

55 } e l s e {56 th row new E x c e p t i o n ( ’ P a r m e t r o "days" de

CertificateTemplate deve ser n u m r i c o .’ ) ;

57 }58 }59

60 /∗ ∗61 ∗ S h o r t d e s c r i p t i o n o f method a d d E x t e n s i o n

62 ∗63 ∗ @access p u b l i c

64 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

65 ∗ @param E x t e n s i o n

66 ∗ @return v o i d

67 ∗ /

68 p u b l i c f u n c t i o n a d d E x t e n s i o n ( E x t e n s i o n $ e x t e n s i o n )

69 {70 $ t h i s−>e x t e n s i o n s [ ] = $ e x t e n s i o n ;

71 }72

73 /∗ ∗

Page 384: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

383

74 ∗ S h o r t d e s c r i p t i o n o f method a d d E x t e n s i o n s

75 ∗76 ∗ @access p u b l i c

77 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

78 ∗ @param a r r a y

79 ∗ @return v o i d

80 ∗ /

81 p u b l i c f u n c t i o n a d d E x t e n s i o n s ( $ e x t e n s i o n s )

82 {83 foreach ( $ e x t e n s i o n s as $key => $ v a l u e ) {84 i f ( i s s u b c l a s s o f ( $va lue , ’Extension’ ) ) {85 $ t h i s−>e x t e n s i o n s [ ] = $ v a l u e ;

86 } e l s e {87 th row new E x c e p t i o n ( ’A array passada como

par metro , "extensions",’ .

88 ’deve possuir somente itens Exception’ ) ;

89 }90 }91 }92

93 /∗ ∗94 ∗ S h o r t d e s c r i p t i o n o f method g e t V a l i d i t y D a y s

95 ∗96 ∗ @access p u b l i c

97 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

98 ∗ @return i n t

99 ∗ /

100 p u b l i c f u n c t i o n g e t V a l i d i t y D a y s ( )

101 {102 r e t u r n $ t h i s−>v a l i d i t y D a y s ;

103 }104

105 /∗ ∗106 ∗ S h o r t d e s c r i p t i o n o f method g e t E x t e n s i o n

107 ∗108 ∗ @access p u b l i c

109 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

110 ∗ @param O b j e c t I d e n t i f i e r

111 ∗ @return v o i d

112 ∗ /

113 p u b l i c f u n c t i o n g e t E x t e n s i o n ( O b j e c t I d e n t i f i e r $o id )

114 {115 foreach ( $ t h i s−>e x t e n s i o n s as $key => $ v a l u e ) {

Page 385: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

384

116 i f ( $va lue−>getOID ( ) == $oid−>getOID ( ) ) {117 r e t u r n $ v a l u e ;

118 }119 }120 r e t u r n n u l l ;

121 }122

123 /∗ ∗124 ∗ S h o r t d e s c r i p t i o n o f method g e t E x t e n s i o n s

125 ∗126 ∗ @access p u b l i c

127 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

128 ∗ @return a r r a y

129 ∗ /

130 p u b l i c f u n c t i o n g e t E x t e n s i o n s ( )

131 {132 r e t u r n $ t h i s−>e x t e n s i o n s ;

133 }134

135 } /∗ end o f c l a s s C e r t i f i c a t e T e m p l a t e C L ∗ /

136

137 ?>

1 <?php

2 / / TODO FAZER DOCUMENTA O

3

4 e r r o r r e p o r t i n g ( E ALL ) ;

5

6 /∗ ∗7 ∗ s g c i − i n t e r f a c e . C e r t i f i c a t e R e q u e s t . php

8 ∗9 ∗ $ Id$

10 ∗11 ∗ T h i s f i l e i s p a r t o f s g c i .

12 ∗13 ∗ A u t o m a t i c g e n e r a t e d w i t h ArgoUML 0 . 2 4 on 1 4 . 0 8 . 2 0 0 7 , 1 7 : 0 8 : 4 5

14 ∗15 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

16 ∗ /

17

18 i f (0 > vers ion compare ( PHP VERSION , ’5’ ) ) {19 d i e ( ’This file was generated for PHP 5’ ) ;

20 }

Page 386: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

385

21

22 /∗ ∗23 ∗ C l a s s e r e s p o n s v e l p e l a r e q u i s i o de c e r t i f i c a d o

24 ∗25 ∗ @access p u b l i c

26 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

27 ∗ /

28 c l a s s L a b s e c C L S e c u r i t y C e r t i f i c a t i o n R e q u e s t C e r t i f i c a t e R e q u e s t

29 imp lemen t s L a b s e c S e c u r i t y C e r t i f i c a t i o n R e q u e s t C e r t i f i c a t e R e q u e s t

30 {31

32 p r i v a t e $ d a t a ;

33

34 p r i v a t e $pub l i cKey ;

35

36 p r i v a t e $ s u b j e c t ;

37

38 /∗ ∗39 ∗ C o n s t r u t o r . Se f o r passado como p a r m e t r o , l ł a r e q u i s i o .

40 ∗41 ∗ @access p u b l i c

42 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

43 ∗ @return v o i d

44 ∗ /

45 p u b l i c f u n c t i o n c o n s t r u c t ( $da ta , $ t y p e )

46 {47 i f ( $ t y p e == ’DER’ ) {48 $ d a t a = $ t h i s−>derToPem ( $ d a t a ) ;

49 } e l s e i f ( $ t y p e != ’PEM’ ) {50 th row new E x c e p t i n ( ’Type i n v l i d o . Deve ser PEM ou

DER’ ) ;

51 }52

53 $ t h i s−>d a t a = $ d a t a ;

54

55 / / TODO TERMINAR QUANDO M DULO TIVER SUPORTE PARA CRIAR UMA

R E Q U I S I O

56 }57 /∗ ∗58 ∗ Re torna a r e q u i s i o em f o r m a t o PEM

59 ∗60 ∗ @access p u b l i c

61 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

Page 387: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

386

62 ∗ @return s t r i n g a r e q u i s i a o em f o r m a t o PEM

63 ∗ /

64 p u b l i c f u n c t i o n getPem ( )

65 {66 r e t u r n $ t h i s−>d a t a ;

67 }68

69 /∗ ∗70 ∗ Re torna a r e q u i s i o em f o r m a t o DER

71 ∗72 ∗ @access p u b l i c

73 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

74 ∗ @return s t r i n g a r e q u i s i a o em f o r m a t o DER

75 ∗ /

76 p u b l i c f u n c t i o n ge tD e r ( )

77 {78 r e t u r n $ t h i s−>pemToDer ( $ t h i s−>d a t a ) ;

79 }80

81 /∗ ∗82 ∗ Re torna achave p b l i c a da r e q u i s i o

83 ∗84 ∗ @access p u b l i c

85 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

86 ∗ @return Pub l i cKey a chave p b l i c a

87 ∗ /

88 p u b l i c f u n c t i o n g e t P u b l i c K e y ( )

89 {90 r e t u r n $ t h i s−>pub l i cKey ;

91 }92

93 /∗ ∗94 ∗ Re torna o S u b j e c t

95 ∗96 ∗ @access p u b l i c

97 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

98 ∗ @return RDNSequence o s u b j e c t

99 ∗ /

100 p u b l i c f u n c t i o n g e t S u b j e c t ( )

101 {102 r e t u r n $ t h i s−>s u b j e c t ;

103 }104

Page 388: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

387

105 /∗ ∗106 ∗ Re torna as e x t e n s e s

107 ∗108 ∗ @access p u b l i c

109 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

110 ∗ @return a r r a y Array com as e x t e n s e s

111 ∗ /

112 p u b l i c f u n c t i o n g e t E x t e n s i o n s ( )

113 {114 r e t u r n $ t h i s−>e x t e n s i o n s ;

115 }116

117 /∗ ∗118 ∗ Re torna uma e x t e n s o e s p e c i f i c a . Se a e x t e n s o n o e x i s t i r ,

r e t o r n a NULL

119 ∗120 ∗ @access p u b l i c

121 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

122 ∗ @param O b j e c t I d e n t i f i e r O OID da e x t e n s o a s e r r e t o r n a d a

123 ∗ @return E x t e n s i o n a e x t e n s o

124 ∗ /

125 p u b l i c f u n c t i o n g e t E x t e n s i o n (

L a b s e c S e c u r i t y C e r t i f i c a t i o n O b j e c t I d e n t i f i e r $o id )

126 {127 foreach ( $ t h i s−>e x t e n s i o n s as $ e x t e n s i o n )

128 {129 i f ( $ e x t e n s i o n−>ge tO id ( ) == $oid−>getOID ( ) ) {130 r e t u r n $ e x t e n s i o n ;

131 }132 }133 }134

135 /∗ ∗136 ∗ Re torna as e x t e n s e s d e s c o n h e c i d a s

137 ∗138 ∗ @access p u b l i c

139 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

140 ∗ @return a r r a y Array com as UnknownExtens ions

141 ∗ /

142 p u b l i c f u n c t i o n ge tUnknownExtens ions ( )

143 {144 r e t u r n

l i b c r y p t o s e c r e q u e s t e x t e n s i o n g e t u n k n o w n e x t e n s i o n s (

Page 389: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

388

$ t h i s−>getPem ( ) ) ;

145 }146

147 /∗ ∗148 ∗ V e r i f i c a se a a s s i n a t u r a v l i d a

149 ∗150 ∗ @access p u b l i c

151 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

152 ∗ @return boo lean TRUE caso a a s s i n a t u r a s e j a v l i d a , FALSE caso

c o n t r r i o .

153 ∗ /

154 p u b l i c f u n c t i o n v e r i f y S i g n a t u r e ( )

155 {156 r e t u r n l i b c r y p t o s e c r e q u e s t v e r i f y s i g n a t u r e ( $ t h i s−>getPem

( ) ) ;

157 }158

159 } /∗ end o f i n t e r f a c e C e r t i f i c a t e R e q u e s t ∗ /

160

161 ?>

162 ?>

1 <?php

2 / / TODO FAZER DOCUMENTACAO

3

4 e r r o r r e p o r t i n g ( E ALL ) ;

5

6 /∗ ∗7 ∗ s g c i − i n t e r f a c e . C e r t i f i c a t e R e q u e s t B u i l d e r . php

8 ∗9 ∗ $ Id$

10 ∗11 ∗ T h i s f i l e i s p a r t o f s g c i .

12 ∗13 ∗ A u t o m a t i c g e n e r a t e d w i t h ArgoUML 0 . 2 4 on 0 1 . 1 1 . 2 0 0 7 , 1 3 : 3 6 : 4 3

14 ∗15 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

16 ∗ /

17

18 i f (0 > vers ion compare ( PHP VERSION , ’5’ ) ) {19 d i e ( ’This file was generated for PHP 5’ ) ;

20 }21

Page 390: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

389

22 /∗ u s e r d e f i n e d i n c l u d e s ∗ /

23 / / s e c t i o n 127−0−1−1−486c20c2 :1144 c6beb8d :−8000:0000000000000AF0−i n c l u d e s

b e g i n

24 / / s e c t i o n 127−0−1−1−486c20c2 :1144 c6beb8d :−8000:0000000000000AF0−i n c l u d e s

end

25

26 /∗ u s e r d e f i n e d c o n s t a n t s ∗ /

27 / / s e c t i o n 127−0−1−1−486c20c2 :1144 c6beb8d :−8000:0000000000000AF0−c o n s t a n t s

b e g i n

28 / / s e c t i o n 127−0−1−1−486c20c2 :1144 c6beb8d :−8000:0000000000000AF0−c o n s t a n t s

end

29

30 /∗ ∗31 ∗ S h o r t d e s c r i p t i o n o f c l a s s C e r t i f i c a t e R e q u e s t B u i l d e r

32 ∗33 ∗ @access p u b l i c

34 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

35 ∗ /

36 c l a s s L a b s e c C L S e c u r i t y C e r t i f i c a t i o n R e q u e s t C e r t i f i c a t e R e q u e s t B u i l d e r

37 imp lemen t s L a b s e c S e c u r i t y C e r t i f i c a t i o n R e q u e s t C e r t i f i c a t e R e q u e s t B u i l d e r

38 {39

40

41

42 p r i v a t e $pub l i cKey ;

43

44 p r i v a t e $ s u b j e c t ;

45

46 p r i v a t e $ e x t e n s i o n s ;

47 /∗ ∗48 ∗ C o n s t r u t o r . Faz a i n i c i a l i z a o dos a t r i b u t o s da c l a s s e

49 ∗50 ∗ @access p u b l i c

51 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

52 ∗ @return v o i d

53 ∗ /

54 p u b l i c f u n c t i o n c o n s t r u c t ( )

55 {56 / / i n i c i a l i z a v a r i v e i s

57 $ t h i s−>pub l i cKey = new LabsecCL Secur i ty Cryp to KeyCL ( ) ;

58 $ t h i s−>s u b j e c t = new

L a b s e c S e c u r i t y C e r t i f i c a t i o n D a t a T y p e s R D N S e q u e n c e ( ) ;

59 $ t h i s−>e x t e n s i o n s = array ( ) ;

Page 391: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

390

60 }61

62

63 /∗ ∗64 ∗ S e t a a chave p b l i c a da r e q u i s i o

65 ∗66 ∗ @access p u b l i c

67 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

68 ∗ @param var chave p b l i c a

69 ∗ @return v o i d

70 ∗ /

71 p u b l i c f u n c t i o n s e t P u b l i c K e y ( L a b s e c S e c u r i t y C r y p t o P u b l i c K e y

$pubKey )

72 {73 / / TODO VERIFICAR O TIPO DE $pubKey

74 $ t h i s−>pub l i cKey = $pubKey ;

75 }76

77 /∗ ∗78 ∗ S e t a o s u j e i t o da r e q u i s i o

79 ∗80 ∗ @access p u b l i c

81 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

82 ∗ @param RDNSequence O s u j e i t o

83 ∗ @return v o i d

84 ∗ /

85 p u b l i c f u n c t i o n s e t S u b j e c t (

L a b s e c S e c u r i t y C e r t i f i c a t i o n D a t a T y p e s R D N S e q u e n c e $rdnSequence

)

86 {87 $ t h i s−>s u b j e c t = $rdnSequence ;

88 }89

90 /∗ ∗91 ∗ A d i c i o n a uma e x t e n s o

92 ∗93 ∗ @access p u b l i c

94 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

95 ∗ @param E x t e n s i o n e x t e n s o a d i c i o n a r

96 ∗ @return v o i d

97 ∗ /

98 p u b l i c f u n c t i o n a d d E x t e n s i o n (

L a b s e c S e c u r i t y C e r t i f i c a t i o n E x t e n s i o n $ e x t e n s i o n )

Page 392: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

391

99 {100 $ t h i s−>e x t e n s i o n s [ ] = $ e x t e n s i o n ;

101 }102

103 /∗ ∗104 ∗ A d i c i o n a uma l i s t a de e x t e n s e s

105 ∗106 ∗ @access p u b l i c

107 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

108 ∗ @param a r r a y l i s t a de e x t e n s e s a a d i c i o n a r

109 ∗ @return v o i d

110 ∗ /

111 p u b l i c f u n c t i o n a d d E x t e n s i o n s ( $ e x t e n s i o n s )

112 {113 i f ( i s a r r a y ( $ e x t e n s i o n s ) ) {114 foreach ( $ e x t e n s i o n s as $ e x t e n s i o n ) {115 i f ( $ e x t e n s i o n i n s t a n c e o f

L a b s e c S e c u r i t y C e r t i f i c a t i o n E x t e n s i o n

) {116 $ t h i s−>e x t e n s i o n s [ ] = $ e x t e n s i o n ;

117 } e l s e {118 th row new E x c e p t i o n ( ’O p a r m e t r o

$extensions DEVE conter somente

119 elementos do tipo

Labsec_Security_Certification_Extension

’ ) ;

120 }121 }122 } e l s e {123 th row new E x c e p t i o n ( ’O p a r m e t r o $extensions DEVE

ser uma array’ ) ;

124 }125 }126

127 /∗ ∗128 ∗ M t o d o que a s s i n a os dados passados , e c r i a o o b j e t o

C e r t i f i c a t e R e q u e s t

129 ∗130 ∗ @access p u b l i c

131 ∗ @author f i r s t n a m e and l a s t n a m e o f au thor , <author@example . org>

132 ∗ @param P r i v a t e K e y

133 ∗ @param s t r i n g Chave p r i v a d a

134 ∗ @param s t r i n g A l g o r i t m o de Hash

Page 393: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

392

135 ∗ @param s t r i n g Argumentos e x t r a s ( o p c i o n a l )

136 ∗ @return C e r t i f i c a t e R e q u e s t

137 ∗ /

138 p u b l i c f u n c t i o n s i g n ( L a b s e c S e c u r i t y C r y p t o P r i v a t e K e y $ p r i v a t e K e y

, $hashAlgor i thm , $ e x t r a A r g s = n u l l )

139 {140 / / TODO FAZER QUANDO O M DULO SUPORTAR!

141 }142

143

144

145 } /∗ end o f i n t e r f a c e C e r t i f i c a t e R e q u e s t B u i l d e r ∗ /

146

147 ?>

Page 394: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

Sistema de Gerenciamento de Certificados Digitais ICPEDU

Jonathan Gehard Kohler1, Rogerio Bodemuller Junior1

1 Laboratorio de Seguranca em Computacao (LabSEC)Departamento de Informatica e Estatıstica (INE)Universidade Federal de Santa Catarina (UFSC)

Florianopolis – SC – Brasil

[email protected]

[email protected]

Abstract. This meta-paper describes the style to be used in articles and shortpapers for SBC conferences. For papers in English, you should add just anabstract while for the papers in Portuguese, we also ask for an abstract in Por-tuguese (“resumo”). In both cases, abstracts should not have more than 10 linesand must be in the first page of the paper.

Resumo. Este meta-artigo descreve o estilo a ser usado na confeccao de artigose resumos de artigos para publicacao nos anais das conferencias organizadaspela SBC. E solicitada a escrita de resumo e abstract apenas para os artigosescritos em portugues. Artigos em ingles deverao apresentar apenas abstract.Nos dois casos, o autor deve tomar cuidado para que o resumo (e o abstract)nao ultrapassem 10 linhas cada, sendo que ambos devem estar na primeirapagina do artigo.

1. IntroducaoAtualmente a seguranca das informacoes e algo muito importante, principalmente com osurgimento da internet. Informacoes transmitidas entre 2 pessoas, pela internet, podemser interceptadas. Estas informacoes poderao ter o seu conteudo alterado, ou caso seremconfidenciais, serem lidas (e talvez ate divulgada) por terceiros desautorizados.

Para evitar este tipo de problema no mundo virtual, foram criados os certificadosdigitais. Uma especie de um documento eletronico que “prova” que uma pessoa e elamesma. A utilizacao de certificados digitais necessita de uma estrutura chamada de Infra-Estrutura de Chaves Publicas (ICP). E como se o certificado digital fosse o seu cartaode Cadastro de Pessoa Fısica (CPF), e a ICP fosse a Receita Federal Brasileira (orgaobrasileiro responsavel pelos cartoes de CPFs).

Para administrar estas estruturas, ICPs, existe uma “classe” de programas chamadade Sistemas de Gerenciamento de Certificados (SGC). Sistemas complexos que proveemfuncionalidades para facilitar a administracao de Infra-Estruturas de Chaves Publicas.

O desenvolvimento de programas deste tipo parece muito simples, porem exis-tem requisitos importantes que devem ser satisfeitos por esta “classe” de programas. Osrequisitos demonstrados neste artigo foram detectados a partir da experiencia do desenvol-vimento e manutencao de outro software SGC existente. Na apresentacao dos requisitosserao detalhados os benefıcios e alguns problemas causados pelo mesmo.

Page 395: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

2. Certificado Digital, ICP e SGC. O que e isto tudo?

Um SGC e basicamente um programa que gerencia uma ICP e seus certificados. A seguir,sera brevemente explicado o funcionamento de um Certificado Digital, de uma ICP e suasrespectivas funcionalidades.

Um certificado digital e um objeto digital que garante que uma chave publica ede uma certa pessoa. Este certificado e considerado valido atraves da confianca em umaterceira entidade. Na Figura 1 pode-se ver um exemplo da utilizacao do certificado digital.

Figura 1. Exemplo da utilizacao de um Certificado Digital

Beto pede um certificado para Carlos. Carlos confere os dados de Beto, e verificaque Beto e mesmo Beto, e que a chave publica apresentada e de Beto. Carlos emite umcertificado assinado por ele, afirmando que Beto e o dono daquela chave. Agora, Betopossui um certificado assinado por uma terceira parte.

Alice quer enviar uma mensagem para Beto, e Alice confia em Carlos. Alicepega o certificado de Beto e verifica se o certificado e genuıno e se os dados nao foramalterados. Alice verifica tambem quem assinou aquele certificado. Ela ve que foi Carlos.Alice confia em Carlos, consequentemente Alice confia que o certificado e valido. Alicepergunta a Carlos se o certificado ainda e valido. Carlos confirma que o certificado aindaesta valido. Agora Alice sabe que a chave publica que esta no certificado, e mesmo achave publica de Beto. Entao ela pode enviar uma mensagem para Beto com seguranca.

E surge um problema, e se roubarem o certificado de Beto? Alice enviara mensa-gens para o ladrao, achando que esta enviando mensagens para Beto? Isto nao acontece,pois quando for roubado, ele avisara Carlos. E a proxima vez que Alice for enviar umamensagem a Beto, Carlos ira avisar que aquele certificado foi roubado.

Nessa pequena historia, temos varios conceitos. Vamos identifica-los um a um.

• Alice e Beto, sao indivıduos (pessoas, computadores, etc) querendo transmitiruma mensagem.

Page 396: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

• Carlos e na verdade uma entidade emissora de certificados (que normalmente euma empresa ou um orgao governamental).

• Quando Beto pede a Carlos que seja emitido um certificado para ele, Beto estafazendo uma requisicao a entidade emissora de certificados. Este e o primeiropasso para a emissao de um certificado digital.

• Apos Beto fazer a requisicao, Carlos confere varios dados de Beto. Estaverificacao e feita no mundo real pela entidade emissora de certificados. Estee o segundo passo para a emissao de um certificado digital.

• Com os dados conferidos, a entidade emissora de certificados (ou Carlos) emiteum certificado para Beto. Esta etapa e a terceira e ultima etapa executada para aemissao de um certificado digital.

• Alice confia em Carlos. Numa ICP chamamos isto de relacao de confianca. Alicepossui uma relacao de confianca com Carlos, quer dizer que se Carlos assina algo,Alice acredita que aquilo e verdade.

• Alice pega o certificado de Beto, verifica se os dados nao foram alterados, verificase o certificado e genuıno e verifica quem assinou. Se todas as verificacoes obti-veram sucesso e quem assinou o certificado possui uma relacao de confianca comAlice, entao Alice confia nesse certificado.

• Alice pergunta a Carlos se o certificado ainda e valido. Os certificados digitaispodem ter o seu uso indevido, podem ser perdidos, ou outros problemas que inuti-lizem o certificado. Para saber quais certificados estao validos, e quais nao estao,a entidade emissora de certificados possui um Lista de Certificados Revogados(LCR). Toda vez que Alice for assinar uma mensagem, ela verifica se este certifi-cado esta na LCR. Se estiver Alice sabe que este certificado nao e mais valido, eo detentor da chave privada pode nao ser Beto.

Para facilitar a divisao de trabalhos, e aumentar a seguranca, as entidades emisso-ras de certificados sao divididas em duas autoridades:

1. Autoridades de Registro (AR) - Quando e feita uma requisicao, esta e a autori-dade que verifica se os dados sao verdadeiros. Esta autoridade somente faz asverificacoes, ela nao consegue emitir certificados.

2. Autoridade Certificadora (AC) - Esta autoridade e quem emite o certificado. UmaAC somente pode emitir um certificado apos a requisicao de emissao de um certi-ficado ser aprovado por alguma AR confiavel.

Uma AR confiavel e uma AR que possui uma relacao de confianca com algumaoutra entidade. Uma relacao de confianca igual a que existe entre Alice e Carlos. Comisto, percebemos que uma ICP e baseada totalmente em relacoes de confianca.

Um programa SGC basicamente tera que ter as seguintes caracterısticas:

• Deve permitir que sejam gerenciados os certificados (emitir e revogar certificados)• Deve armazenar de forma segura as informacoes referentes aos certificados

(validos ou nao), e as LCRs• Deve possuir a capacidade de publicar os certificados validos e as LCRs.• Deve impedir o acesso a chave privada da entidade aonde o programa esta insta-

lado. Este programa muito provavelmente sera o unico que tera acesso ao localaonde esta armazenada a chave privada da entidade.

Page 397: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

3. Construindo um SGCA tarefa de construir um SGC pode parecer muito simples, porem alguns requisitos saonecessarios para ter-se um bom SGC. A seguir sera apresentado um SGC ja existente,com alguns problemas. Apos sera feita uma proposta de mudancas para aumentar algunsaspectos como seguranca, manutenibilidade, etc.

3.1. O Primeiro SGCiNesta secao sera feito um estudo de caso sobre um SGC, o Sistema de Gerenciamento deCertificados Digitais ICPEDU(SGCi). Este SGC foi desenvolvido atraves de uma parceriaente as equipes do Laboratorio de Seguranca em Computacao(LabSEC) da UniversidadeFederal de Santa Catarina(UFSC), Laboratorio de Criptografia Aplicada (LCA) da Uni-camp e o Laboratorio de Computacao Cientıfica(LCC) da Universidade Federal de MinasGerais(UFMG).

Este sistema foi desenvolvido para ser o mais flexıvel possıvel na implantacaoe no gerenciamento de uma ICP. Este sistema pode gerenciar uma ICP aonde todas asentidades (ACs e ARs) estejam no mesmo computador, ou em computadores separados.No segundo caso, cada computador devera ter uma copia do SGCi rodando, e cada com-putador ira gerenciar a sua entidade somente. Este requisito de projeto e algo muitointeressante, pois poderıamos ter uma AC em cada universidade do paıs, e uma AC-Raizque seria de confianca de todas essas ACs. Assim um certificado emitido para um alunoda universidade A, seria considerado confiavel para um aluno da universidade B.

Outro requisito deste projeto, e a disponibilizacao do programa para livreutilizacao no meio academico. Para isto o SGCi foi todo desenvolvido com softwareslivres, e o seu codigo-fonte e publico.

O SGCi esta dividido em 3 modulos-componentes:• Modulo Publico - Neste modulo os usuarios geram as requisicoes e estas sao en-

viadas ao modulo gestor.• Modulo Gestor - Este modulo gerencia toda a administracao das ACs e ARs.• Diretorio Publico - E uma especie de banco de dados especializado em buscas,

aonde sao armazenados os certificados emitidos e as LCRs.

Este artigo ira se focar no modulo gestor, pois este e o modulo que realiza a gestaodas entidades.

A Figura 2 representa o funcionamento do SGCi. A operacao de emissao de umcertificado seria realizada pela seguinte sequencia:

1. O usuario entra com seus dados no modulo publico2. O modulo publico gera uma requisicao e envia para a AR que o usuario selecionou.3. O operador da AR verifica se os dados da requisicao estao corretos. Se os dados

estiverem corretos, a requisicao e aprovada, assinada e enviada para a AC. Sehouver algum problema, a requisicao e rejeitada.

4. A AC entao recebe a requisicao assinada pela AR, emite o certificado, e o publicano Diretorio Publico.

Ja para revogar um certificados, os seguintes passos sao feitos:1. O operador da AR escolhe o certificado a ser revogado, e envia uma requisicao

assinada para a AC.

Page 398: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

Figura 2. Exemplo da utilizacao de um Certificado Digital XXXXXXXXXXXXXFALTA REFERENCIAR O MANUAL DO SGCi

2. A AC recebe a requisicao assinada pela AR, revoga o certificado e o adiciona naLCR. Esta sera publicada (na maioria dos casos em datas pre-definidas) e armaze-nada no Diretorio Publico.

3.2. Analise do SGCiDurante alguns meses este programa foi avaliado e testado. O primeiro item a ser ana-lisado, e a instalacao do SGCi. A instalacao nao e automatica, mas existe um manualcom uma “receita-de-bolo” muito simples. Seguindo-se esta receita, a instalacao ocorrefacilmente! Porem, isto as vezes pode nao ser tao simples para um usuario leigo.

O projeto possui requisitos de flexibilidade muito interessantes, descritos anteri-ormente, e o SGCi tentou faze-los de forma automatica. Isto muito facilmente pode setornar um problema, imagine a situacao da Figura 3. Uma AR esta configurada numSGCi rodando no computador A, enquanto uma AC esta configurada em outro SGCi, queesta rodando no computador B. A maquina B esta protegida por um firewall (softwareque controla os dados que entram e saem do computador atraves da rede) que bloqueiaqualquer tentativa de conexao remota (esta e uma configuracao tıpica de um firewall).

Figura 3. Funcionamento do SGCi em maquinas diferentes

Em algum determinado momento uma requisicao e enviada para o computador

Page 399: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

A. Este verifica os dados, e aprova a requisicao. O passo seguinte e enviar a requisicaoassinada para a AC. O SGCi tenta automatizar este procedimento fazendo uma conexaoremota ao computador B, e adicionado a requisicao no computador B. Porem, como ocomputador esta protegido por um firewall, esta conexao ira ser bloqueada, acabandocom a tentativa do SGCi em automatizar essa operacao, alem de gerar um erro.

Uma possıvel solucao para este problema, seria reconfigurar o firewall para aceitarconexoes remotas a partir do endereco IP do computador A (um endereco IP e um numeroque identifica aquela maquina, no mundo real seria como o endereco da casa de alguem).Isto resolveria o problema, agora o computador B aceita as requisicoes enviadas pelocomputador A. Porem criaria uma outra grande falha de seguranca! Um atacante poderiase passar pela maquina A (mudando o seu IP, para ser igual ao do computador A), e efetuarconexoes remotas ao computador B.

Outro problema causado por essa automatizacao e explorando-se uma falha nofirewall, poderia ser enviada qualquer requisicao ao sistema (e o mesmo iria aceitar).Inclusive, poderiam ser enviadas requisicoes invalidas que causariam comportamentosindesejaveis ao SGCi.

A unica forma de automatizar com seguranca este processo seria tendo as entida-des (ACs e ARs) no mesmo computador, algo que esta perfeitamente implementado noSGCi. So que esta situacao acontece muito raramente nas ICPs!

Ao serem realizados os testes das funcoes basicas do sistema (com ARs e ACs nomesmo computador) ele se comportou muito bem.

Com os testes basicos realizados, foi criado um plano de testes com mais de 90testes que deveriam ser realizados para testar exaustivamente as funcoes do programa,afim de encontrar o maior numero de erros possıveis.

Dos 90 testes, o SGCi passou em pouco mais do que 30 testes, sendo encontradomais de 80 erros! Como o SGCi e um software de codigo-fonte aberto, foi verificadoo seu codigo para encontrar os erros, na tentativa de soluciona-los. Mais detalhessobre os erros encontrados podem ser vistos em: http://projetos.labsec.ufsc.br/sgci/query?status=new&status=assigned&status=reopened&status=

closed&version=1.3.0&type=erro&order=priority

Todos os problemas citados acima (assim como os que nao foram citados) foramresolvidos com sucesso, analisando e alterando o codigo-fonte do programa. Porem, umagrande dificuldade surgiu quando foram encontrados trechos de codigo duplicados. Es-ses trechos eram praticamente iguais, exceto que um tinha uma linha escrito AC e outroescrito AR, por exemplo. Esta e uma pratica comum em programas estruturados, e seriafacilmente resolvida se fosse utilizado como paradigma de programacao a Orientacao aObjetos (OO).

Outra falha foi descoberta, esta sendo extremamente grande na questao deseguranca. Manter a chave privada segura! No SGCi, para fazer o “download” da chaveprivada de alguma entidade basta saber qual o codigo da entidade no banco de dados (senao souber pode ir por tentativa e erro). Isto acontece devido aos diretorios aonde sao gra-vadas as chaves, os certificados e outros dados da entidade estarem em subdiretorios quepodem ser acessados pela internet. Imagine que uma certa AC, foi cadastrada no banco

Page 400: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

de dados com o codigo 5. E o IP da maquina aonde esta este sistema e 200.193.27.88.Para pegar a chave privada desta AC bastaria ser digitado o seguinte endereco em algumnavegador: http://200.193.27.88/ac/arquivos/2/chave/chave.pem.

A Figura 4 mostra ao lado esquerdo a estrutura de diretorios utilizada pelo SGCi,e ao lado direito o conteudo do diretorio chave. Qualquer dos diretorios mostrados naFigura 4 pode ser acessados atraves de um navegador de internet.

Figura 4. Estrutura de diretorios do SGCI e o conteudo da pasta chave

Partindo-se para a analise do Bando de Dados, foi verificado que a estrutura dobanco estava muito boa. Mas, se fosse adicionado qualquer funcionalidade ao sistema,muito provavelmente o banco teria que sofrer muitas modificacoes.

3.3. SGCi 2.0

Com o intuito de resolver todos os problemas apresentados anteriormente, e adicionaralgumas funcionalidades ao SGCi, resolveu-se criar uma nova versao. Uma versao quenao seria necessariamente compatıvel com a versao anterior. Algo como se fosse comecarum software do inıcio, porem utilizando as experiencias boas que a versao anterior deixou.Para isto, foram definidos varios requisitos, que serao apresentados neste momento.

Documentacao Total

Um dos requisitos mais simples para quem programa, e documentar o codigo. Todos osprogramadores sabem que a documentacao de um programa e muito importante. Mas,nem sempre isso acontece no dia-a-dia. Entao, foi determinado que a nova versao doSGCi tera o planejamento, desenvolvimento e os testes completamente documentados.

Modularizacao e facilidade de manutencao do programa

Acredita-se que este sistema seja um sistema que ira crescer muito nos proximos anos,tornando-se um programa reconhecido nacionalmente. Como todos os outros programasque cresceram sofreram varias modificacoes, com o SGCi devera acontecer o mesmo.

Para cumprir este requisito o SGCi sera dividido em varios pequenos modulos.Estes modulos terao um comportamento padrao em relacao a comunicacao com os outrosmodulos. Se algum dos modulos for ruim ou tiver problemas, ele podera ser facilmente

Page 401: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

subtituıdo por outro modulo, bastando apenas que o novo modulo apresente o mesmopadrao de comunicacao que o modulo anterior. Atualmente e utilizado o banco de dadosPostgreSQL. Se por algum motivo no futuro este banco deixar se ser utilizado, e passar aser utilizado o MySQL, bastara criar um novo modulo para o SGCi que converse com oMySQL, e troca-lo pelo modulo que oferecia suporte ao PostgreSQL. O resto do sistemaira funcionar perfeitamente sem necessitar de nenhuma mudanca. O mesmo vai acontecercom a interface grafica, com o modulo publico, com o diretorio publico, e outras partes.

Este requisito ira ser muito util tanto para a manutencao do programa (correcao deerros), como para adicionar novas funcionalidades ao SGCi no futuro.

Para se ter garantia que no futuro o sistema comporte novas funcionalidades, de-vera ser dada bastante atencao ao banco de dados. Afinal, e aonde os dados sao armazena-dos, e se o banco de dados nao tiver uma certa flexibilidade, muitas novas funcionalidadesnao poderao ser implementadas.

Suporte a varios “modos de operacao”

Uma ICP pode se comportar de dois diferentes “modos de operacao”. A Figura 5 mostraestes modos.

Figura 5. “Modos de operacao” de um ICP

No primeiro modo, um usuario envia uma requisicao a AR. A AR verifica osdados, assina a requisicao e envia para a AC. A AC emite o certificado, devolve para aAR, e a AR envia o certificado ao usuario.

No segundo modo, um usuario envia uma requisicao a AC. A AC envia arequisicao para a AR, a AR verifica os dados, assina a requisicao e envia para a AC.A AC emite o certificado, e o envia ao usuario.

No primeiro modo o certificado e gerado na AC, e enviado a AR. No segundomodo o certificado e gerado na AC, mas nao e enviado a AR. Cada “modo de operacao”possui as suas vantagens e desvantagens. Quem vai implementar a ICP devera escolherqual sera o modo como o SGCi vai se comportar.

Para incorporar estes 2 “modos de operacao”, a automatizacao da comunicacaofeita entre as entidades, devera ser totalmente nula. Fazendo esta comunicacao manual-

Page 402: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

mente, alem de poder utilizar o mesmo sistema para operar de 2 modos distintos, ganha-seem seguranca, pois nao havera a necessidade de fazer acessos remotos (conforme descritoanteriormente).

Maior seguranca possıvel

A nova estrutura de diretorios sera a estrutura que e apresentada na Figura 6. Pode-mos notar que os diretorios aonde ficam salvos os arquivos (chaves, certificados, etc) naosao visıveis ao servidor web (apache), pois a unica pasta visıvel e a public html. Sendoassim, o acesso a esses arquivos utilizando apenas um navegador de internet torna-sepraticamente impossıvel. Esta e a forma mais simples de resolver o maior problema deseguranca existente no SGCi anterior.

Figura 6. Nova Estrutura de diretorios do SGCi

Facilidade de instalacao, configuracao e utilizacao

A instalacao do sistema sera a mais simples possıvel, nao sendo necessario digitar varioscomando manualmente, como era feito no SGCi anterior.

A configuracao das opcoes do SGCi tambem poderao ser feitas atraves de umprograma muito simples de utilizar.

Quando o sistema for instalado sera necessario escolher uma senha para po-der executar o utilitario de configuracao do sistema. Alem da senha, este utilitario deconfiguracao somente podera ser acessado na maquina aonde esta instalado o SGCi. Estamedida foi tomada para impedir o acesso deste utilitario atraves da rede, mantendo oSGCi o mais seguro possıvel.

Atualmente o sistema e muito facil de utilizar, entao este aspecto sera mantidoo mais parecido possıvel ao SGCi anterior. Inclusive se possıvel a interface grafica seramantida a mesma.

Page 403: CONTRIBUIC¸OES AO SISTEMA DE GERENCIAMENTO … · MVC Model-View-Control, p. 35 OID Object Identifier, p. 55 PC Pol´ıticas de Certificac¸ ao, p. 18˜ PHP PHP: ... POO Programac¸ao

Internacionalizacao do programa

Como este projeto e academico, as fronteiras interculturais devem ser removidas,forcando o SGCi a oferecer suporte a varias lınguas. Para isto, basta criar um arquivocom as mensagens traduzidas, mudar algumas configuracoes e o sistema estara totalmentetraduzido. Inicialmente o SGCi sera disponibilizado em Ingles e Portugues.

Programacao Orientada a Objetos

Como o paradigma de programacao escolhido para a nova versao do SGCi foi Orientacaoa Objetos, todos os benefıcios deste paradigma sao adicionados ao programa, comoheranca, polimorfismo, padroes de projeto, etc. Isto ira facilitar a correcao de erros que osistema tera, e ira facilitar a manutenibilidade do SGCi.

4. ConclusaoOs requisitos apresentados nao sao requisitos especıficos ao SGCi. Sao requisitos defundamental importancia para todo e qualquer sistema de gerenciamento de certificadosdigitais. A ideia do SGCi e fazer um programa de gerenciamento de certificados com amaior qualidade possıvel. Sendo assim, toda a modelagem do programa sera feita pen-sando nos requisitos citados anteriormente. Alguns requisitos demonstrados no decorrerdeste artigo foram exemplificados utilizado as solucoes encontradas pela equipe que iradesenvolver o SGCi 2.0.

5. Agradecimentos

ReferenciasHousley, R. and Polk, T. (2001). Planning for PKI - Best Practices Guide for Deploying

Public Key Infrastructure. Wiley Computer Publishing, New York.

ICPEDU (2005). GT - ICP-EDU Manual de Sistemas de Infra-Estrutura de ChavePublicas Educacional.

Schneier, B. (1996). Applied cryptography: protocols, algorithms, and source code in C.Wiley Computer Publishing, New York, 2nd edition.

Stallings, W. (2003). Cryptography and Network Security: Principles and Practice. Pe-arson Education, Upper Saddle River, NJ, USA, 3rd. edition.