summaryrefslogtreecommitdiff
path: root/lib/Data/Session/ID/SHA1.pm
diff options
context:
space:
mode:
Diffstat (limited to 'lib/Data/Session/ID/SHA1.pm')
-rw-r--r--lib/Data/Session/ID/SHA1.pm130
1 files changed, 130 insertions, 0 deletions
diff --git a/lib/Data/Session/ID/SHA1.pm b/lib/Data/Session/ID/SHA1.pm
new file mode 100644
index 0000000..7a40c38
--- /dev/null
+++ b/lib/Data/Session/ID/SHA1.pm
@@ -0,0 +1,130 @@
+package Data::Session::ID::SHA1;
+
+use parent 'Data::Session::SHA';
+no autovivification;
+use strict;
+use warnings;
+
+use Hash::FieldHash ':all';
+
+our $VERSION = '1.18';
+
+# -----------------------------------------------
+
+sub generate
+{
+ my($self) = @_;
+
+ return $self -> SUPER::generate(1);
+
+} # End of generate.
+
+# -----------------------------------------------
+
+sub id_length
+{
+ my($self) = @_;
+
+ return 40;
+
+} # End of id_length.
+
+# -----------------------------------------------
+
+sub new
+{
+ my($class, %arg) = @_;
+ $arg{verbose} ||= 0;
+
+ return from_hash(bless({}, $class), \%arg);
+
+} # End of new.
+
+# -----------------------------------------------
+
+1;
+
+=pod
+
+=head1 NAME
+
+L<Data::Session::ID::SHA1> - A persistent session manager
+
+=head1 Synopsis
+
+See L<Data::Session> for details.
+
+=head1 Description
+
+L<Data::Session::ID::SHA1> allows L<Data::Session> to generate session ids using L<Digest::SHA>.
+
+To use this module do this:
+
+=over 4
+
+=item o Specify an id generator of type SHA1, as Data::Session -> new(type => '... id:SHA1 ...')
+
+=back
+
+=head1 Case-sensitive Options
+
+See L<Data::Session/Case-sensitive Options> for important information.
+
+=head1 Method: new()
+
+Creates a new object of type L<Data::Session::ID::SHA1>.
+
+C<new()> takes a hash of key/value pairs, some of which might mandatory. Further, some combinations
+might be mandatory.
+
+The keys are listed here in alphabetical order.
+
+They are lower-case because they are (also) method names, meaning they can be called to set or get
+the value at any time.
+
+=over 4
+
+=item o verbose => $integer
+
+Print to STDERR more or less information.
+
+Typical values are 0, 1 and 2.
+
+This key is normally passed in as Data::Session -> new(verbose => $integer).
+
+This key is optional.
+
+=back
+
+=head1 Method: generate()
+
+Generates the next session id, or dies if it can't.
+
+The algorithm is Digest::SHA -> new(1) -> add($$, time, rand(time) ) -> hexdigest.
+
+Returns the new id.
+
+=head1 Method: id_length()
+
+Returns 40 because that's the number of hex digits in an SHA1 digest.
+
+=head1 Support
+
+Log a bug on RT: L<https://rt.cpan.org/Public/Dist/Display.html?Name=Data-Session>.
+
+=head1 Author
+
+L<Data::Session> was written by Ron Savage I<E<lt>ron@savage.net.auE<gt>> in 2010.
+
+Home page: L<http://savage.net.au/index.html>.
+
+=head1 Copyright
+
+Australian copyright (c) 2010, Ron Savage.
+
+ All Programs of mine are 'OSI Certified Open Source Software';
+ you can redistribute them and/or modify them under the terms of
+ The Artistic License, a copy of which is available at:
+ http://www.opensource.org/licenses/index.html
+
+=cut