NAME
    Crypt::Passphrase::Argon2::HSM - HSM encrypted Argon2 hashes for
    Crypt::Passphrase
SYNOPSIS
     my $passphrase = Crypt::Passphrase->new(
         encoder => {
             module   => 'Argon2::HSM',
             provider => '/usr/lib/pkcs11/some-pkcs11.so',
             active   => '3',
         },
     );
DESCRIPTION
    This class implements peppering by encrypting the hash using HSM. Note
    that it does not do the argon2 computation in the HSM.
METHODS
 new
    This constructor takes all arguments also taken by
    Crypt::Passphrase::Argon2, with the following additions:
      * provider
      The path to the PKCS11 provider. This is mandatory.
      * slot
      The slot used on the provider, this defaults to the first listed
      slot.
      * active
      This is the identifier of the active pepper. This is mandatory.
      * prefix
      The prefix that is used when looking up keys in the HSM. It defaults
      to 'pepper-'.
      * pin
      The PIN that is used for logging in, if any.
      * user_type
      The type of user you're logging in with. This defaults to 'user', and
      you're unlikely to want to change that.
      * cipher
      This is the cipher that's used for peppering. This can be any
      mechanism supporting encrypt/decrypt. The default is 'aes-cbc'.
AUTHOR
    Leon Timmermans <leont@cpan.org>
COPYRIGHT AND LICENSE
    This software is copyright (c) 2023 by Leon Timmermans.
    This is free software; you can redistribute it and/or modify it under
    the same terms as the Perl 5 programming language system itself.