File: Keystore.pm

package info (click to toggle)
libauthen-u2f-tester-perl 0.03-1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, bullseye, buster, forky, sid, trixie
  • size: 176 kB
  • sloc: perl: 384; makefile: 2
file content (120 lines) | stat: -rw-r--r-- 2,789 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
#
# This file is part of Authen-U2F-Tester
#
# This software is copyright (c) 2017 by Michael Schout.
#
# This is free software; you can redistribute it and/or modify it under
# the same terms as the Perl 5 programming language system itself.
#
package Authen::U2F::Tester::Role::Keystore;
$Authen::U2F::Tester::Role::Keystore::VERSION = '0.03';
# ABSTRACT: U2F Tester Keystore Role.

use Moose::Role;


requires qw(exists put get remove);

1;

__END__

=pod

=head1 NAME

Authen::U2F::Tester::Role::Keystore - U2F Tester Keystore Role.

=head1 VERSION

version 0.03

=head1 SYNOPSIS

 package Authen::U2F::Tester::Keystore::Example;

 use Moose;
 use namespace::autoclean;

 with 'Authen::U2F::Tester::Role::Keystore';

 sub exists {
     my ($self, $handle) = @_;
     ...
     # if handle is valid and exists in the keystore:
     return 1;

     # else
     return 0;
 }

 sub put {
     my ($self, $private_key) = @_;

     # somehow generate a unique handle
     return $handle;
 }

 sub get {
     my ($self, $handle) = @_;

     $handle = decode_base64url($handle);

     # fetch the Crypt::PK::ECC private key object associated with this handle.
     return $pkec;
 }

 __PACKAGE__->meta->make_immutable;

=head1 DESCRIPTION

This is a L<Moose::Role> that L<Authen::U2F::Tester> keystore's must consume.
All required methods must be implemented by the consuming L<Moose> class.

=head1 METHODS

=head2 exists($handle): bool

Check if the given handle (in Base64 URL format) exists (or is valid) in the key store.

=head2 get($handle): Crypt::PK::ECC

Given the key handle (in Base64 URL format), return the private key (as a
L<Crypt::PK::ECC> object) associated with it in the key store.

=head2 put($private_key): scalar

Save the given keypair in the keystore, returning a unique key handle that
uniquely identifies the keypair.  The returned handle should B<NOT> be Base64
URL encoded.  C<$private_key> is a raw private key string.

=head2 remove($handle): void

Remove the given key handle from the key store.

=head1 SOURCE

The development version is on github at L<http://https://github.com/mschout/perl-authen-u2f-tester>
and may be cloned from L<git://https://github.com/mschout/perl-authen-u2f-tester.git>

=head1 BUGS

Please report any bugs or feature requests on the bugtracker website
L<https://github.com/mschout/perl-authen-u2f-tester/issues>

When submitting a bug or request, please include a test-file or a
patch to an existing test-file that illustrates the bug or desired
feature.

=head1 AUTHOR

Michael Schout <mschout@cpan.org>

=head1 COPYRIGHT AND LICENSE

This software is copyright (c) 2017 by Michael Schout.

This is free software; you can redistribute it and/or modify it under
the same terms as the Perl 5 programming language system itself.

=cut