1178825Sdfr/* 2233294Sstas * Copyright (c) 2003, 2005 Kungliga Tekniska H��gskolan 3233294Sstas * (Royal Institute of Technology, Stockholm, Sweden). 4233294Sstas * All rights reserved. 5178825Sdfr * 6233294Sstas * Redistribution and use in source and binary forms, with or without 7233294Sstas * modification, are permitted provided that the following conditions 8233294Sstas * are met: 9178825Sdfr * 10233294Sstas * 1. Redistributions of source code must retain the above copyright 11233294Sstas * notice, this list of conditions and the following disclaimer. 12178825Sdfr * 13233294Sstas * 2. Redistributions in binary form must reproduce the above copyright 14233294Sstas * notice, this list of conditions and the following disclaimer in the 15233294Sstas * documentation and/or other materials provided with the distribution. 16178825Sdfr * 17233294Sstas * 3. Neither the name of the Institute nor the names of its contributors 18233294Sstas * may be used to endorse or promote products derived from this software 19233294Sstas * without specific prior written permission. 20178825Sdfr * 21233294Sstas * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND 22233294Sstas * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 23233294Sstas * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 24233294Sstas * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE 25233294Sstas * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 26233294Sstas * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 27233294Sstas * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 28233294Sstas * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 29233294Sstas * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 30233294Sstas * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 31233294Sstas * SUCH DAMAGE. 32178825Sdfr */ 33178825Sdfr 34178825Sdfr#include "kadm5_locl.h" 35178825Sdfr#include <getarg.h> 36178825Sdfr 37233294SstasRCSID("$Id$"); 38178825Sdfr 39178825Sdfrstatic int version_flag; 40178825Sdfrstatic int help_flag; 41178825Sdfrstatic char *principal; 42178825Sdfrstatic char *password; 43178825Sdfr 44178825Sdfrstatic struct getargs args[] = { 45178825Sdfr { "principal", 0, arg_string, &principal }, 46178825Sdfr { "password", 0, arg_string, &password }, 47178825Sdfr { "version", 0, arg_flag, &version_flag }, 48178825Sdfr { "help", 0, arg_flag, &help_flag } 49178825Sdfr}; 50178825Sdfrint num_args = sizeof(args) / sizeof(args[0]); 51178825Sdfr 52178825Sdfrint 53178825Sdfrmain(int argc, char **argv) 54178825Sdfr{ 55178825Sdfr krb5_error_code ret; 56178825Sdfr krb5_context context; 57178825Sdfr krb5_principal p; 58178825Sdfr const char *s; 59178825Sdfr krb5_data pw_data; 60178825Sdfr 61178825Sdfr krb5_program_setup(&context, argc, argv, args, num_args, NULL); 62233294Sstas 63178825Sdfr if(help_flag) 64178825Sdfr krb5_std_usage(0, args, num_args); 65178825Sdfr if(version_flag) { 66178825Sdfr print_version(NULL); 67178825Sdfr exit(0); 68178825Sdfr } 69178825Sdfr 70178825Sdfr if (principal == NULL) 71178825Sdfr krb5_errx(context, 1, "no principal given"); 72178825Sdfr if (password == NULL) 73178825Sdfr krb5_errx(context, 1, "no password given"); 74178825Sdfr 75178825Sdfr ret = krb5_parse_name(context, principal, &p); 76178825Sdfr if (ret) 77178825Sdfr krb5_errx(context, 1, "krb5_parse_name: %s", principal); 78178825Sdfr 79178825Sdfr pw_data.data = password; 80178825Sdfr pw_data.length = strlen(password); 81178825Sdfr 82178825Sdfr kadm5_setup_passwd_quality_check (context, NULL, NULL); 83178825Sdfr ret = kadm5_add_passwd_quality_verifier(context, NULL); 84178825Sdfr if (ret) 85178825Sdfr krb5_errx(context, 1, "kadm5_add_passwd_quality_verifier"); 86178825Sdfr 87178825Sdfr s = kadm5_check_password_quality (context, p, &pw_data); 88178825Sdfr if (s) 89178825Sdfr krb5_errx(context, 1, "kadm5_check_password_quality:\n%s", s); 90178825Sdfr 91178825Sdfr krb5_free_principal(context, p); 92178825Sdfr krb5_free_context(context); 93178825Sdfr 94178825Sdfr return 0; 95178825Sdfr} 96