| Crypt-Random-Source documentation | Contained in the Crypt-Random-Source distribution. |
Crypt::Random::Source::Base - Abstract base class for Crypt::Random::Source classes
use Moose;
extends qw(Crypt::Random::Source::Base);
This is an abstract base class.
In the future it will be a role.
Gets $n random bytes and returns them as a string.
This method may produce fatal errors if the source was unable to provide enough data.
This method is cannibalized from IO::Scalar. It provides an IO::Handle work-alike.
Note that subclasses override this to operate on a real handle directly if available.
On supporting sources this method will add @stuff, whatever it may be, to
the random seed.
Some sources may not support this, so be careful.
This is a class method, such that when it returns true calling new without
arguments on the class should provide a working source of random data.
This is use by Crypt::Random::Source::Factory.
This is a class method, with some futz value for a ranking, to help known good sources be tried before known bad (slower, less available) sources.
Provided for compatibility with Crypt::Random
Yuval Kogman <nothingmuch@woobling.org>
This software is copyright (c) 2011 by Yuval Kogman.
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.
| Crypt-Random-Source documentation | Contained in the Crypt-Random-Source distribution. |
package Crypt::Random::Source::Base; BEGIN { $Crypt::Random::Source::Base::AUTHORITY = 'cpan:NUFFIN'; } BEGIN { $Crypt::Random::Source::Base::VERSION = '0.07'; } # ABSTRACT: Abstract base class for L<Crypt::Random::Source> classes use Any::Moose; sub available { 0 } sub rank { 0 } sub seed { } sub get { die "abstract" } # cannibalized from IO::Scalar sub read { my $self = $_[0]; my $n = $_[2]; my $off = $_[3] || 0; my $read = $self->get($n); $n = length($read); ($off ? substr($_[1], $off) : $_[1]) = $read; return $n; } sub get_data { my ( $self, %params ) = @_; if ( my $n = $params{Length} ) { return $self->get($n); } else { my $size = $params{Size}; if (ref $size && ref $size eq "Math::Pari") { $size = Math::Pari::pari2num($size); } return $self->get( int($size / 8) + 1 ); } } 1; # ex: set sw=4 et: __END__