#!/usr/bin/env perl

use strict;
use warnings;

use Acme::Indigest::Crypt;
use Term::ReadKey;

sub _readline {
    my $prompt = shift;
    if ( defined $prompt ) {
        print $prompt;
    }
    ReadMode 2;
    my $line = <STDIN>;
    chomp $line;
    ReadMode 0;
    print "\n";
    return $line;
}

sub _digest {
    my $phrase = shift;
    return Acme::Indigest::Crypt->digest( $phrase, $ENV{ AIC_LIMIT } || 0 );
}

if ( $ENV{ AIC_EMIT } ) {
    my $phrase = _readline( 'Passphrase: ' );
    print _digest $phrase;
}
else {
    my $phrase = _readline( 'Passphrase: ' );
    my $phrase_again = _readline( 'Passphrase (again): ' );
    if ( $phrase ne $phrase_again ) {
        die "Passphrase mismatch\n";
    }
    print _digest $phrase;
}

1;
