App-CamelPKI

 view release on metacpan or  search on metacpan

lib/App/CamelPKI/CertTemplate.pm  view on Meta::CPAN

$zulutime.

=back

=cut

# abstract method

=head2 list_keys()

Called in list context, returns the valid nominative informations keys
list to be passed to L</prepare_certificate> and
L</test_certificate_conflict>. 

The CA will not give any key to this methods unless these keys are
present in the return value of I<list_keys()>, excepted C<time> which
will be passed even if the template do not mention it.

The base class implementation returns the empty list, which is only
appropriate for Camel-PKI internal certificates.

=cut

sub list_keys { return }

=head2 signature_hash

Returns the cryptographic algorithm to use for certificates
signing, under the form of a name ("md5" or "sha1", for example).

The base class implementation returns "sha256", as "md5" and "sha1"
are now not recommanded because of progress done on their cryptanalysis
(L<http://www.win.tue.nl/~bdeweger/CollidingCertificates/>).

=cut

sub signature_hash { "sha256" }

=head2 test_certificate_conflict($db, $key1 => $val1, ...)

FIXME-TR: ouch, du pour une sommeillant comme moi - � faire la t�te fraiche
Doit se terminer avec succès si et seulement si le gabarit de
certificat considère qu'il est légitime d'ajouter à la base $db (une
instance de L<App::CamelPKI::CADB>) un certificat avec les options
nominatives $key1 => $val1, ... tel que L</prepare_certificate> le
créerait, et lancer une exception dans le cas contraire.  Plus
précisément, I<certificate_test_conflict> est appelé en contexte liste
et doit

=over

=item *

return an empty list if the certificate creation is unconditionnaly
valid, due the to actual $db status;

=item *

or must return a certificates list (in the form of L<App::CamelPKI::Certificates>
instances) if I<certificate_test_conflict> thinks to be conflict with
the new putative certificate. The calling CA then decides its have to
cancel the transaction, revoke certificates, or bypass the restriction
(see L<App::CamelPKI::CA/Coherence>);

=item *

or must throw an exception if there is no means to consider such a 
certificate compliant in terms of the certificate policy.

=back

FIXME-TR: creuv�...
Noter que le principe de moindre privilège s'applique à
I<test_certificate_conflict>, et que la version de $db qu'il récupère
est en réalité une facette de la véritable base de données de CA, en
lecture seule et dont le contenu est de surcroît filtré sur la base
d'un I<need-to-know>: typiquement, I<test_certificate_conflict> ne
pourra voir que les certificats qu'il a lui-même fabriqués par le
passé.

The base class implementation is always happy, and always returns
the empty list.

=cut

sub test_certificate_conflict { return }

=head2 test_issued_certs_coherent( \%data1, \%data2, ... )

TODO-TR: stoppedhere
Doit se terminer avec succès si et seulement si le gabarit de
certificat considère qu'il est légitime d'émettre B<en une seule
transaction> les certificats dont les données nominatives figurent en
argument.  I<test_issued_certs_coherent> doit se terminer
normalement s'il estime que les certificats qui seraient créés en
appelant C<prepare_certificate(%data1)>,
C<prepare_certificate(%data2)>, etc sont cohérents les uns avec les
autres, et lever une exception dans le cas contraire.  L'AC prend
cette information en compte comme il est décrit dans
L<App::CamelPKI::CA/Cohérence>.

The base class implementation is always happy, and always ends
with success.

=cut

sub test_issued_certs_coherent { return }

=head1 METHODS PROVIDED BY THE BASE CLASS

Dans sa tâche d'implémenter les L</MÉTHODES À SURCHARGER>, le
programmeur est aidé par les méthodes suivantes, dont il bénéficie par
voie d'héritage:

=head2 normalize_opts($template, $key1 => $val1, ...)

Lorsqu'on invoque cette méthode (indifféremment de classe ou
d'instance) en contexte liste, elle renvoie la liste associative
passée en paramètre ($key1 => $val1, ...) après l'avoir «nettoyée» de
la façon suivante :



( run in 0.500 second using v1.01-cache-2.11-cpan-75ffa21a3d4 )