ldap_passwd 0.1.3 copy "ldap_passwd: ^0.1.3" to clipboard
ldap_passwd: ^0.1.3 copied to clipboard

A simple password utility for ldap userPassword writing using dart, you can find some alternatives in other language world.

example/lib/main.dart

import 'dart:io';

import 'package:ldap_passwd/ldap_passwd.dart';
import 'package:args/args.dart';
import 'package:ansicolor/ansicolor.dart';

AnsiPen success = AnsiPen()..green();
AnsiPen info = AnsiPen()..blue();
AnsiPen warning = AnsiPen()..yellow();
AnsiPen error = AnsiPen()..red();

String commandUsage() {
  return '''
Usage: ldap_passwd <command> [options]

Commands:
  ldap-passwd.js check     Check the password and the hashed password is match
  ldap-passwd.js generate  Generate the hashed password from the plain password

  ''';
}

void main(List<String> arguments) {
  var parser = ArgParser();
  parser.addOption('password', abbr: 'p', help: 'plain password for checking');
  parser.addOption('hash', abbr: 'h', help: 'Hashed password for checking...');
  parser.addOption('encoder',
      abbr: 'e',
      help: 'The encoder for hash, like md5, sha1, sha256, ...',
      defaultsTo: 'sha1');
  parser.addFlag('suffixed',
      negatable: false,
      help: 'Wether the salt prefixed or suffixed',
      defaultsTo: true);
  parser.addOption('salt',
      abbr: 's',
      help: 'Salt, 8 bytes string or 12-length base64',
      defaultsTo: null);
  parser.addOption('salt_size',
      help: 'salt length in hex format, equals to 8 bytes or 12-length base64',
      defaultsTo: '16');
  parser.addFlag('help', negatable: false);

  var argResults;
  try {
    argResults = parser.parse(arguments);
  } catch (e) {
    print(error(e.toString()));
    print(info(commandUsage()));
    print(info(parser.usage));
    exit(-1);
  }

  if (argResults['help']) {
    print(info(commandUsage()));
    print(info(parser.usage));
    exit(0);
  }

  if (argResults.rest.isEmpty) {
    print(warning('command should be specified as check or generate'));
    print(info(commandUsage()));
    print(info(parser.usage));
    exit(-1);
  }
  var command = argResults.rest[0];
  if (argResults.rest.length != 1 ||
      (command != 'check' && command != 'generate')) {
    print(warning('command need to be check or generate'));
    print(info(commandUsage()));
    print(info(parser.usage));
    exit(-1);
  }
  var ldapPasswd = LdapPasswd(argResults['password'],
      salt: argResults['salt'],
      saltSize: int.parse(argResults['salt_size']),
      encoder: argResults['encoder'],
      suffixed: argResults['suffixed']);
  switch (command) {
    case 'check':
      var result = ldapPasswd.checkPassword(argResults['hash']);
      if (result) {
        print(success('check result: ${result}'));
      } else {
        print(warning('check result: ${result}'));
      }
      break;
    case 'generate':
      var result = ldapPasswd.generatePassword();
      print(success('generate result: ${result}'));
      break;
  }
}
1
likes
40
pub points
0%
popularity

Publisher

unverified uploader

A simple password utility for ldap userPassword writing using dart, you can find some alternatives in other language world.

Homepage

License

MIT (LICENSE)

Dependencies

ansicolor, args, convert, crypto

More

Packages that depend on ldap_passwd