Authen::Passphrase::Clear - cleartext passphrases


Authen-Passphrase documentation Contained in the Authen-Passphrase distribution.

Index


Code Index:

NAME

Top

Authen::Passphrase::Clear - cleartext passphrases

SYNOPSIS

Top

	use Authen::Passphrase::Clear;

	$ppr = Authen::Passphrase::Clear->new("passphrase");

	if($ppr->match($passphrase)) { ...

	$passphrase = $ppr->passphrase;

	$userPassword = $ppr->as_rfc2307;

DESCRIPTION

Top

An object of this class is a passphrase recogniser that accepts some particular passphrase which it knows. This is a subclass of Authen::Passphrase, and this document assumes that the reader is familiar with the documentation for that class.

Warning: Storing a passphrase in cleartext, as this class does, is a very bad idea. It means that anyone who sees the passphrase file immediately knows all the passphrases. Do not use this unless you really know what you're doing.

CONSTRUCTORS

Top

Authen::Passphrase::Clear->new(PASSPHRASE)

Returns a passphrase recogniser object that stores the specified passphrase in cleartext and accepts only that passphrase.

Authen::Passphrase::Clear->from_rfc2307(USERPASSWORD)

Generates a cleartext passphrase recogniser from the supplied RFC2307 encoding. The string must consist of "{CLEARTEXT}" (case insensitive) followed by the passphrase.

METHODS

Top

$ppr->match(PASSPHRASE)
$ppr->passphrase
$ppr->as_rfc2307

These methods are part of the standard Authen::Passphrase interface. The passphrase method trivially works.

SEE ALSO

Top

Authen::Passphrase

AUTHOR

Top

Andrew Main (Zefram) <zefram@fysh.org>

COPYRIGHT

Top

LICENSE

Top

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


Authen-Passphrase documentation Contained in the Authen-Passphrase distribution.
package Authen::Passphrase::Clear;

{ use 5.006; }
use warnings;
use strict;

use Authen::Passphrase 0.003;
use Carp qw(croak);

our $VERSION = "0.007";

use parent "Authen::Passphrase";

# An object of this class is a blessed scalar containing the passphrase.

sub new {
	my($class, $passphrase) = @_;
	$passphrase = "$passphrase";
	return bless(\$passphrase, $class);
}

sub from_rfc2307 {
	my($class, $userpassword) = @_;
	if($userpassword =~ /\A\{(?i:cleartext)\}/) {
		$userpassword =~ /\A\{.*?\}([!-~]*)\z/
			or croak "malformed {CLEARTEXT} data";
		return $class->new($1);
	}
	return $class->SUPER::from_rfc2307($userpassword);
}

sub match {
	my($self, $passphrase) = @_;
	return $passphrase eq $$self;
}

sub passphrase { ${$_[0]} }

sub as_rfc2307 {
	my($self) = @_;
	croak "can't put this passphrase into an RFC 2307 string"
		if $$self =~ /[^!-~]/;
	return "{CLEARTEXT}".$$self;
}

1;