70 lines
1.5 KiB
Perl
70 lines
1.5 KiB
Perl
#! /usr/bin/env perl
|
|
|
|
use v5.10.1;
|
|
use strict;
|
|
use warnings;
|
|
use File::Temp qw/ tempfile /;
|
|
use Pod::Usage;
|
|
|
|
BEGIN {
|
|
push @INC, "../../";
|
|
}
|
|
|
|
use ACU::Process;
|
|
use ACU::API::Base;
|
|
use ACU::Log;
|
|
|
|
sub check_key($)
|
|
{
|
|
my $filename = shift;
|
|
# Call ssh-keygen
|
|
if (`ssh-keygen -l -f $filename 2> /dev/null` =~ /^([0-9]+) [0-9a-f:]+ [a-zA-Z0-9\/_-]+ \(([A-Z]+)\)$/)
|
|
{
|
|
log INFO, "Receive valid key: type $2, size $1";
|
|
if ($2 eq "RSA") {
|
|
if ($1 >= 4096) {
|
|
return API::Base::make_response("0", "Clef RSA valide.");
|
|
}
|
|
else {
|
|
return API::Base::make_response("2", "Clef RSA trop petite, utilisez ssh-keygen -t rsa -b 4096.");
|
|
}
|
|
}
|
|
elsif ($2 eq "ECDSA") {
|
|
return API::Base::make_response("0", "Clef ECDSA valide.");
|
|
}
|
|
elsif ($2 eq "DSA") {
|
|
return API::Base::make_response("3", "Veuillez utiliser ssh-keygen -t rsa ou ssh-keygen -t ecdsa");
|
|
}
|
|
else {
|
|
do_warn("Unknown type: $2");
|
|
return API::Base::make_response("3", "Veuillez utiliser ssh-keygen -t rsa ou ssh-keygen -t ecdsa");
|
|
}
|
|
}
|
|
else {
|
|
return API::Base::make_response("4", "Veuillez utiliser ssh-keygen -t rsa ou ssh-keygen -t ecdsa");
|
|
}
|
|
}
|
|
|
|
sub process
|
|
{
|
|
my ($given_args, $args) = @_;
|
|
|
|
my ($fh, $filename) = tempfile();
|
|
# Write key to file
|
|
print $fh $args->{param}{key};
|
|
close $fh;
|
|
|
|
my $msg = check_key $filename;
|
|
|
|
unlink $filename;
|
|
|
|
return $msg;
|
|
}
|
|
|
|
if (@ARGV) {
|
|
check_key shift;
|
|
}
|
|
else {
|
|
Process::register("check_ssh_key", \&process);
|
|
}
|