Authen-Krb5-Admin
view release on metacpan or search on metacpan
/*
* Copyright (c) 2002 Andrew J. Korty
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* $Id: Admin.xs,v 1.23 2007/01/05 23:41:38 ajk Exp $
*/
#include "EXTERN.h"
#include "perl.h"
#include "XSUB.h"
#include <krb5.h>
#ifdef HAVE_KDB_H
#define SECURID /* This should not be necessary */
#include <kdb.h>
#endif /* HAVE_KDB_H */
#include <com_err.h>
#ifdef USE_LOCAL_ADMINH
#include "admin.h"
#else
#include <krb5/krb5.h>
#include <kadm5/admin.h>
#endif
#include "ppport.h"
static int
not_here(char *s)
{
croak("%s not implemented on this architecture", s);
return -1;
}
static double
constant(char *name, int arg)
{
errno = 0;
switch (*name) {
case 'E':
if (strEQ(name, "ENCTYPE_NULL"))
#ifdef ENCTYPE_NULL
return ENCTYPE_NULL;
#else
goto not_there;
#endif
if (strEQ(name, "ENCTYPE_DES_CBC_CRC"))
#ifdef ENCTYPE_DES_CBC_CRC
return ENCTYPE_DES_CBC_CRC;
#else
goto not_there;
#endif
if (strEQ(name, "ENCTYPE_DES_CBC_MD4"))
#ifdef ENCTYPE_DES_CBC_MD4
return ENCTYPE_DES_CBC_MD4;
#else
goto not_there;
#endif
if (strEQ(name, "ENCTYPE_DES_CBC_MD5"))
#ifdef ENCTYPE_DES_CBC_MD5
return ENCTYPE_DES_CBC_MD5;
#else
goto not_there;
#endif
if (strEQ(name, "ENCTYPE_DES_CBC_RAW"))
#ifdef ENCTYPE_DES_CBC_RAW
return ENCTYPE_DES_CBC_RAW;
#else
goto not_there;
#endif
if (strEQ(name, "ENCTYPE_DES_HMAC_SHA1"))
#ifdef ENCTYPE_DES_HMAC_SHA1
return ENCTYPE_DES_HMAC_SHA1;
#else
goto not_there;
#endif
if (strEQ(name, "ENCTYPE_DES3_CBC_RAW"))
#ifdef ENCTYPE_DES3_CBC_RAW
return ENCTYPE_DES3_CBC_RAW;
#else
goto not_there;
#endif
if (strEQ(name, "ENCTYPE_DES3_CBC_SHA"))
#ifdef ENCTYPE_DES3_CBC_SHA
return ENCTYPE_DES3_CBC_SHA;
#else
goto not_there;
#endif
if (strEQ(name, "ENCTYPE_DES3_CBC_SHA1"))
#ifdef ENCTYPE_DES3_CBC_SHA1
return ENCTYPE_DES3_CBC_SHA1;
#else
goto not_there;
#endif
if (strEQ(name, "ENCTYPE_LOCAL_DES3_HMAC_SHA1"))
#ifdef ENCTYPE_LOCAL_DES3_HMAC_SHA1
return ENCTYPE_LOCAL_DES3_HMAC_SHA1;
#else
goto not_there;
#endif
if (strEQ(name, "ENCTYPE_UNKNOWN"))
#ifdef ENCTYPE_UNKNOWN
return ENCTYPE_UNKNOWN;
#else
goto not_there;
#endif
break;
case 'K':
if (strEQ(name, "KADM5_API_VERSION_1"))
#ifdef KADM5_API_VERSION_1
return KADM5_API_VERSION_1;
#else
goto not_there;
#endif
if (strEQ(name, "KADM5_API_VERSION_2"))
#ifdef KADM5_API_VERSION_2
return KADM5_API_VERSION_2;
#else
goto not_there;
#endif
if (strEQ(name, "KADM5_API_VERSION_3"))
#ifdef KADM5_API_VERSION_3
return KADM5_API_VERSION_3;
#else
goto not_there;
#endif
if (strEQ(name, "KADM5_API_VERSION_4"))
#ifdef KADM5_API_VERSION_4
return KADM5_API_VERSION_4;
#else
goto not_there;
#endif
if (strEQ(name, "KADM5_API_VERSION_MASK"))
#ifdef KADM5_API_VERSION_MASK
return KADM5_API_VERSION_MASK;
#else
goto not_there;
#endif
if (strEQ(name, "KADM5_ATTRIBUTES"))
#ifdef KADM5_ATTRIBUTES
return KADM5_ATTRIBUTES;
#else
goto not_there;
#endif
if (strEQ(name, "KADM5_AUTH_ADD"))
#ifdef KADM5_AUTH_ADD
return KADM5_AUTH_ADD;
#else
goto not_there;
#endif
if (strEQ(name, "KADM5_AUTH_CHANGEPW"))
#ifdef KADM5_AUTH_CHANGEPW
return KADM5_AUTH_CHANGEPW;
#else
goto not_there;
#endif
if (strEQ(name, "KADM5_AUTH_DELETE"))
#ifdef KADM5_AUTH_DELETE
return KADM5_AUTH_DELETE;
#else
goto not_there;
#endif
if (strEQ(name, "KADM5_AUTH_GET"))
#ifdef KADM5_AUTH_GET
return KADM5_AUTH_GET;
#else
goto not_there;
#endif
if (strEQ(name, "KADM5_AUTH_INSUFFICIENT"))
#ifdef KADM5_AUTH_INSUFFICIENT
return KADM5_AUTH_INSUFFICIENT;
#else
goto not_there;
#endif
if (strEQ(name, "KADM5_AUTH_LIST"))
#ifdef KADM5_AUTH_LIST
return KADM5_AUTH_LIST;
#else
goto not_there;
#endif
if (strEQ(name, "KADM5_AUTH_MODIFY"))
#ifdef KADM5_AUTH_MODIFY
return KADM5_AUTH_MODIFY;
#else
goto not_there;
#endif
if (strEQ(name, "KADM5_AUTH_SETKEY"))
#ifdef KADM5_AUTH_SETKEY
return KADM5_AUTH_SETKEY;
#else
goto not_there;
#endif
if (strEQ(name, "KADM5_AUX_ATTRIBUTES"))
#ifdef KADM5_AUX_ATTRIBUTES
return KADM5_AUX_ATTRIBUTES;
#else
goto not_there;
#endif
if (strEQ(name, "KADM5_BAD_API_VERSION"))
#ifdef KADM5_BAD_API_VERSION
return KADM5_BAD_API_VERSION;
#else
goto not_there;
#endif
if (strEQ(name, "KADM5_BAD_AUX_ATTR"))
#ifdef KADM5_BAD_AUX_ATTR
return KADM5_BAD_AUX_ATTR;
#else
goto not_there;
#endif
if (strEQ(name, "KADM5_BAD_CLASS"))
#ifdef KADM5_BAD_CLASS
return KADM5_BAD_CLASS;
#else
goto not_there;
#endif
if (strEQ(name, "KADM5_BAD_CLIENT_PARAMS"))
#ifdef KADM5_BAD_CLIENT_PARAMS
return KADM5_BAD_CLIENT_PARAMS;
#else
goto not_there;
#endif
if (strEQ(name, "KADM5_BAD_DB"))
#ifdef KADM5_BAD_DB
return KADM5_BAD_DB;
#else
goto not_there;
#endif
if (strEQ(name, "KADM5_BAD_HISTORY"))
#ifdef KADM5_BAD_HISTORY
return KADM5_BAD_HISTORY;
#else
goto not_there;
#endif
if (strEQ(name, "KADM5_BAD_HIST_KEY"))
#ifdef KADM5_BAD_HIST_KEY
return KADM5_BAD_HIST_KEY;
#else
goto not_there;
#endif
if (strEQ(name, "KADM5_BAD_LENGTH"))
#ifdef KADM5_BAD_LENGTH
return KADM5_BAD_LENGTH;
#else
goto not_there;
#endif
if (strEQ(name, "KADM5_BAD_MASK"))
#ifdef KADM5_BAD_MASK
return KADM5_BAD_MASK;
#else
goto not_there;
#endif
if (strEQ(name, "KADM5_BAD_MIN_PASS_LIFE"))
#ifdef KADM5_BAD_MIN_PASS_LIFE
return KADM5_BAD_MIN_PASS_LIFE;
#else
goto not_there;
#endif
if (strEQ(name, "KADM5_BAD_PASSWORD"))
#ifdef KADM5_BAD_PASSWORD
return KADM5_BAD_PASSWORD;
#else
goto not_there;
#endif
if (strEQ(name, "KADM5_BAD_POLICY"))
#ifdef KADM5_BAD_POLICY
return KADM5_BAD_POLICY;
#else
goto not_there;
#endif
if (strEQ(name, "KADM5_BAD_PRINCIPAL"))
#ifdef KADM5_BAD_PRINCIPAL
return KADM5_BAD_PRINCIPAL;
#else
goto not_there;
#endif
if (strEQ(name, "KADM5_BAD_SERVER_HANDLE"))
#ifdef KADM5_BAD_SERVER_HANDLE
return KADM5_BAD_SERVER_HANDLE;
#else
goto not_there;
#endif
if (strEQ(name, "KADM5_BAD_SERVER_NAME"))
#ifdef KADM5_BAD_SERVER_NAME
return KADM5_BAD_SERVER_NAME;
#else
goto not_there;
#endif
if (strEQ(name, "KADM5_BAD_SERVER_PARAMS"))
#ifdef KADM5_BAD_SERVER_PARAMS
return KADM5_BAD_SERVER_PARAMS;
#else
goto not_there;
#endif
if (strEQ(name, "KADM5_BAD_STRUCT_VERSION"))
#ifdef KADM5_BAD_STRUCT_VERSION
return KADM5_BAD_STRUCT_VERSION;
#else
goto not_there;
#endif
if (strEQ(name, "KADM5_BAD_TL_TYPE"))
#ifdef KADM5_BAD_TL_TYPE
return KADM5_BAD_TL_TYPE;
#else
goto not_there;
#endif
if (strEQ(name, "KADM5_CONFIG_ACL_FILE"))
#ifdef KADM5_CONFIG_ACL_FILE
return KADM5_CONFIG_ACL_FILE;
#else
goto not_there;
#endif
if (strEQ(name, "KADM5_CONFIG_ADBNAME"))
#ifdef KADM5_CONFIG_ADBNAME
return KADM5_CONFIG_ADBNAME;
#else
goto not_there;
#endif
if (strEQ(name, "KADM5_CONFIG_ADB_LOCKFILE"))
#ifdef KADM5_CONFIG_ADB_LOCKFILE
return KADM5_CONFIG_ADB_LOCKFILE;
#else
goto not_there;
#endif
if (strEQ(name, "KADM5_CONFIG_ADMIN_KEYTAB"))
#ifdef KADM5_CONFIG_ADMIN_KEYTAB
return KADM5_CONFIG_ADMIN_KEYTAB;
#else
goto not_there;
#endif
if (strEQ(name, "KADM5_CONFIG_ADMIN_SERVER"))
#ifdef KADM5_CONFIG_ADMIN_SERVER
return KADM5_CONFIG_ADMIN_SERVER;
#else
goto not_there;
#endif
if (strEQ(name, "KADM5_CONFIG_AUTH_NOFALLBACK"))
#ifdef KADM5_CONFIG_AUTH_NOFALLBACK
return KADM5_CONFIG_AUTH_NOFALLBACK;
#else
goto not_there;
#endif
if (strEQ(name, "KADM5_CONFIG_DBNAME"))
#ifdef KADM5_CONFIG_DBNAME
return KADM5_CONFIG_DBNAME;
#else
goto not_there;
#endif
if (strEQ(name, "KADM5_CONFIG_DICT_FILE"))
#ifdef KADM5_CONFIG_DICT_FILE
return KADM5_CONFIG_DICT_FILE;
#else
goto not_there;
#endif
if (strEQ(name, "KADM5_CONFIG_ENCTYPE"))
#ifdef KADM5_CONFIG_ENCTYPE
return KADM5_CONFIG_ENCTYPE;
#else
goto not_there;
#endif
if (strEQ(name, "KADM5_CONFIG_ENCTYPES"))
#ifdef KADM5_CONFIG_ENCTYPES
return KADM5_CONFIG_ENCTYPES;
#else
goto not_there;
#endif
if (strEQ(name, "KADM5_CONFIG_EXPIRATION"))
#ifdef KADM5_CONFIG_EXPIRATION
return KADM5_CONFIG_EXPIRATION;
#else
goto not_there;
#endif
if (strEQ(name, "KADM5_CONFIG_FLAGS"))
#ifdef KADM5_CONFIG_FLAGS
return KADM5_CONFIG_FLAGS;
#else
goto not_there;
#endif
if (strEQ(name, "KADM5_CONFIG_KADMIND_PORT"))
#ifdef KADM5_CONFIG_KADMIND_PORT
return KADM5_CONFIG_KADMIND_PORT;
#else
goto not_there;
#endif
if (strEQ(name, "KADM5_CONFIG_KPASSWD_PORT"))
#ifdef KADM5_CONFIG_KPASSWD_PORT
return KADM5_CONFIG_KPASSWD_PORT;
#else
goto not_there;
#endif
if (strEQ(name, "KADM5_CONFIG_MAX_LIFE"))
#ifdef KADM5_CONFIG_MAX_LIFE
return KADM5_CONFIG_MAX_LIFE;
#else
goto not_there;
#endif
if (strEQ(name, "KADM5_CONFIG_MAX_RLIFE"))
#ifdef KADM5_CONFIG_MAX_RLIFE
return KADM5_CONFIG_MAX_RLIFE;
#else
goto not_there;
#endif
if (strEQ(name, "KADM5_CONFIG_MKEY_FROM_KBD"))
#ifdef KADM5_CONFIG_MKEY_FROM_KBD
return KADM5_CONFIG_MKEY_FROM_KBD;
#else
goto not_there;
#endif
if (strEQ(name, "KADM5_CONFIG_MKEY_NAME"))
#ifdef KADM5_CONFIG_MKEY_NAME
return KADM5_CONFIG_MKEY_NAME;
#else
goto not_there;
#endif
if (strEQ(name, "KADM5_CONFIG_NO_AUTH"))
#ifdef KADM5_CONFIG_NO_AUTH
return KADM5_CONFIG_NO_AUTH;
#else
goto not_there;
#endif
if (strEQ(name, "KADM5_CONFIG_OLD_AUTH_GSSAPI"))
#ifdef KADM5_CONFIG_OLD_AUTH_GSSAPI
return KADM5_CONFIG_OLD_AUTH_GSSAPI;
#else
goto not_there;
#endif
if (strEQ(name, "KADM5_CONFIG_PROFILE"))
#ifdef KADM5_CONFIG_PROFILE
return KADM5_CONFIG_PROFILE;
#else
goto not_there;
#endif
if (strEQ(name, "KADM5_CONFIG_REALM"))
#ifdef KADM5_CONFIG_REALM
return KADM5_CONFIG_REALM;
#else
goto not_there;
#endif
if (strEQ(name, "KADM5_CONFIG_STASH_FILE"))
#ifdef KADM5_CONFIG_STASH_FILE
return KADM5_CONFIG_STASH_FILE;
#else
goto not_there;
#endif
if (strEQ(name, "KADM5_DUP"))
#ifdef KADM5_DUP
return KADM5_DUP;
#else
goto not_there;
#endif
if (strEQ(name, "KADM5_FAILURE"))
#ifdef KADM5_FAILURE
return KADM5_FAILURE;
#else
goto not_there;
#endif
if (strEQ(name, "KADM5_FAIL_AUTH_COUNT"))
#ifdef KADM5_FAIL_AUTH_COUNT
return KADM5_FAIL_AUTH_COUNT;
#else
goto not_there;
#endif
if (strEQ(name, "KADM5_GSS_ERROR"))
#ifdef KADM5_GSS_ERROR
return KADM5_GSS_ERROR;
#else
goto not_there;
#endif
if (strEQ(name, "KADM5_INIT"))
#ifdef KADM5_INIT
return KADM5_INIT;
#else
goto not_there;
#endif
if (strEQ(name, "KADM5_KEY_DATA"))
#ifdef KADM5_KEY_DATA
return KADM5_KEY_DATA;
#else
goto not_there;
#endif
if (strEQ(name, "KADM5_KVNO"))
#ifdef KADM5_KVNO
return KADM5_KVNO;
#else
goto not_there;
#endif
if (strEQ(name, "KADM5_LAST_FAILED"))
#ifdef KADM5_LAST_FAILED
return KADM5_LAST_FAILED;
#else
goto not_there;
#endif
if (strEQ(name, "KADM5_LAST_PWD_CHANGE"))
#ifdef KADM5_LAST_PWD_CHANGE
return KADM5_LAST_PWD_CHANGE;
#else
goto not_there;
#endif
if (strEQ(name, "KADM5_LAST_SUCCESS"))
#ifdef KADM5_LAST_SUCCESS
return KADM5_LAST_SUCCESS;
#else
goto not_there;
#endif
if (strEQ(name, "KADM5_MASK_BITS"))
#ifdef KADM5_MASK_BITS
return KADM5_MASK_BITS;
#else
goto not_there;
#endif
if (strEQ(name, "KADM5_MAX_LIFE"))
#ifdef KADM5_MAX_LIFE
return KADM5_MAX_LIFE;
#else
goto not_there;
#endif
if (strEQ(name, "KADM5_MAX_RLIFE"))
#ifdef KADM5_MAX_RLIFE
return KADM5_MAX_RLIFE;
#else
goto not_there;
#endif
if (strEQ(name, "KADM5_MISSING_CONF_PARAMS"))
#ifdef KADM5_MISSING_CONF_PARAMS
return KADM5_MISSING_CONF_PARAMS;
#else
goto not_there;
#endif
if (strEQ(name, "KADM5_MKVNO"))
#ifdef KADM5_MKVNO
return KADM5_MKVNO;
#else
goto not_there;
#endif
if (strEQ(name, "KADM5_MOD_NAME"))
#ifdef KADM5_MOD_NAME
return KADM5_MOD_NAME;
#else
goto not_there;
#endif
if (strEQ(name, "KADM5_MOD_TIME"))
#ifdef KADM5_MOD_TIME
return KADM5_MOD_TIME;
#else
goto not_there;
#endif
if (strEQ(name, "KADM5_NEW_LIB_API_VERSION"))
#ifdef KADM5_NEW_LIB_API_VERSION
return KADM5_NEW_LIB_API_VERSION;
#else
goto not_there;
#endif
if (strEQ(name, "KADM5_NEW_SERVER_API_VERSION"))
#ifdef KADM5_NEW_SERVER_API_VERSION
return KADM5_NEW_SERVER_API_VERSION;
#else
goto not_there;
#endif
if (strEQ(name, "KADM5_NEW_STRUCT_VERSION"))
#ifdef KADM5_NEW_STRUCT_VERSION
return KADM5_NEW_STRUCT_VERSION;
#else
goto not_there;
#endif
if (strEQ(name, "KADM5_NOT_INIT"))
#ifdef KADM5_NOT_INIT
return KADM5_NOT_INIT;
#else
goto not_there;
#endif
if (strEQ(name, "KADM5_NO_RENAME_SALT"))
#ifdef KADM5_NO_RENAME_SALT
return KADM5_NO_RENAME_SALT;
#else
goto not_there;
#endif
if (strEQ(name, "KADM5_NO_SRV"))
#ifdef KADM5_NO_SRV
return KADM5_NO_SRV;
#else
goto not_there;
#endif
if (strEQ(name, "KADM5_OK"))
#ifdef KADM5_OK
return KADM5_OK;
#else
goto not_there;
#endif
if (strEQ(name, "KADM5_OLD_LIB_API_VERSION"))
#ifdef KADM5_OLD_LIB_API_VERSION
return KADM5_OLD_LIB_API_VERSION;
#else
goto not_there;
#endif
if (strEQ(name, "KADM5_OLD_SERVER_API_VERSION"))
#ifdef KADM5_OLD_SERVER_API_VERSION
return KADM5_OLD_SERVER_API_VERSION;
#else
goto not_there;
#endif
if (strEQ(name, "KADM5_OLD_STRUCT_VERSION"))
#ifdef KADM5_OLD_STRUCT_VERSION
return KADM5_OLD_STRUCT_VERSION;
#else
goto not_there;
#endif
if (strEQ(name, "KADM5_PASS_Q_CLASS"))
#ifdef KADM5_PASS_Q_CLASS
return KADM5_PASS_Q_CLASS;
#else
goto not_there;
#endif
if (strEQ(name, "KADM5_PASS_Q_DICT"))
#ifdef KADM5_PASS_Q_DICT
return KADM5_PASS_Q_DICT;
#else
goto not_there;
#endif
if (strEQ(name, "KADM5_PASS_Q_TOOSHORT"))
#ifdef KADM5_PASS_Q_TOOSHORT
return KADM5_PASS_Q_TOOSHORT;
#else
goto not_there;
#endif
if (strEQ(name, "KADM5_PASS_REUSE"))
#ifdef KADM5_PASS_REUSE
return KADM5_PASS_REUSE;
#else
goto not_there;
#endif
if (strEQ(name, "KADM5_PASS_TOOSOON"))
#ifdef KADM5_PASS_TOOSOON
return KADM5_PASS_TOOSOON;
#else
goto not_there;
#endif
if (strEQ(name, "KADM5_POLICY"))
#ifdef KADM5_POLICY
return KADM5_POLICY;
#else
goto not_there;
#endif
if (strEQ(name, "KADM5_POLICY_CLR"))
#ifdef KADM5_POLICY_CLR
return KADM5_POLICY_CLR;
#else
goto not_there;
#endif
if (strEQ(name, "KADM5_POLICY_REF"))
#ifdef KADM5_POLICY_REF
return KADM5_POLICY_REF;
#else
goto not_there;
#endif
if (strEQ(name, "KADM5_PRINCIPAL"))
#ifdef KADM5_PRINCIPAL
return KADM5_PRINCIPAL;
#else
goto not_there;
#endif
if (strEQ(name, "KADM5_PRINCIPAL_NORMAL_MASK"))
#ifdef KADM5_PRINCIPAL_NORMAL_MASK
return KADM5_PRINCIPAL_NORMAL_MASK;
#else
goto not_there;
#endif
if (strEQ(name, "KADM5_PRINC_EXPIRE_TIME"))
#ifdef KADM5_PRINC_EXPIRE_TIME
return KADM5_PRINC_EXPIRE_TIME;
#else
goto not_there;
#endif
if (strEQ(name, "KADM5_PRIV_ADD"))
#ifdef KADM5_PRIV_ADD
return KADM5_PRIV_ADD;
#else
goto not_there;
#endif
if (strEQ(name, "KADM5_PRIV_DELETE"))
#ifdef KADM5_PRIV_DELETE
return KADM5_PRIV_DELETE;
#else
goto not_there;
#endif
if (strEQ(name, "KADM5_PRIV_GET"))
#ifdef KADM5_PRIV_GET
return KADM5_PRIV_GET;
#else
goto not_there;
#endif
if (strEQ(name, "KADM5_PRIV_MODIFY"))
#ifdef KADM5_PRIV_MODIFY
return KADM5_PRIV_MODIFY;
#else
goto not_there;
#endif
if (strEQ(name, "KADM5_PROTECT_PRINCIPAL"))
#ifdef KADM5_PROTECT_PRINCIPAL
return KADM5_PROTECT_PRINCIPAL;
#else
goto not_there;
#endif
if (strEQ(name, "KADM5_PW_EXPIRATION"))
#ifdef KADM5_PW_EXPIRATION
return KADM5_PW_EXPIRATION;
#else
goto not_there;
#endif
if (strEQ(name, "KADM5_PW_HISTORY_NUM"))
#ifdef KADM5_PW_HISTORY_NUM
return KADM5_PW_HISTORY_NUM;
#else
goto not_there;
#endif
if (strEQ(name, "KADM5_PW_MAX_LIFE"))
#ifdef KADM5_PW_MAX_LIFE
return KADM5_PW_MAX_LIFE;
#else
goto not_there;
#endif
if (strEQ(name, "KADM5_PW_MIN_CLASSES"))
#ifdef KADM5_PW_MIN_CLASSES
return KADM5_PW_MIN_CLASSES;
#else
goto not_there;
#endif
if (strEQ(name, "KADM5_PW_MIN_LENGTH"))
#ifdef KADM5_PW_MIN_LENGTH
return KADM5_PW_MIN_LENGTH;
#else
goto not_there;
#endif
if (strEQ(name, "KADM5_PW_MIN_LIFE"))
#ifdef KADM5_PW_MIN_LIFE
return KADM5_PW_MIN_LIFE;
#else
goto not_there;
#endif
if (strEQ(name, "KADM5_PW_MAX_FAILURE"))
#ifdef KADM5_PW_MAX_FAILURE
return KADM5_PW_MAX_FAILURE;
#else
goto not_there;
#endif
if (strEQ(name, "KADM5_PW_FAILURE_COUNT_INTERVAL"))
#ifdef KADM5_PW_FAILURE_COUNT_INTERVAL
return KADM5_PW_FAILURE_COUNT_INTERVAL;
#else
goto not_there;
#endif
if (strEQ(name, "KADM5_PW_LOCKOUT_DURATION"))
#ifdef KADM5_PW_LOCKOUT_DURATION
return KADM5_PW_LOCKOUT_DURATION;
#else
goto not_there;
#endif
if (strEQ(name, "KADM5_REF_COUNT"))
#ifdef KADM5_REF_COUNT
return KADM5_REF_COUNT;
#else
goto not_there;
#endif
if (strEQ(name, "KADM5_RPC_ERROR"))
#ifdef KADM5_RPC_ERROR
return KADM5_RPC_ERROR;
#else
goto not_there;
#endif
if (strEQ(name, "KADM5_SECURE_PRINC_MISSING"))
#ifdef KADM5_SECURE_PRINC_MISSING
return KADM5_SECURE_PRINC_MISSING;
#else
goto not_there;
#endif
if (strEQ(name, "KADM5_SETKEY3_ETYPE_MISMATCH"))
#ifdef KADM5_SETKEY3_ETYPE_MISMATCH
return KADM5_SETKEY3_ETYPE_MISMATCH;
#else
goto not_there;
#endif
if (strEQ(name, "KADM5_SETKEY_DUP_ENCTYPES"))
#ifdef KADM5_SETKEY_DUP_ENCTYPES
return KADM5_SETKEY_DUP_ENCTYPES;
#else
goto not_there;
#endif
if (strEQ(name, "KADM5_SETV4KEY_INVAL_ENCTYPE"))
#ifdef KADM5_SETV4KEY_INVAL_ENCTYPE
return KADM5_SETV4KEY_INVAL_ENCTYPE;
#else
goto not_there;
#endif
if (strEQ(name, "KADM5_STRUCT_VERSION"))
#ifdef KADM5_STRUCT_VERSION
return KADM5_STRUCT_VERSION;
#else
goto not_there;
#endif
if (strEQ(name, "KADM5_STRUCT_VERSION_1"))
#ifdef KADM5_STRUCT_VERSION_1
return KADM5_STRUCT_VERSION_1;
#else
goto not_there;
#endif
if (strEQ(name, "KADM5_STRUCT_VERSION_MASK"))
#ifdef KADM5_STRUCT_VERSION_MASK
return KADM5_STRUCT_VERSION_MASK;
#else
goto not_there;
#endif
if (strEQ(name, "KADM5_TL_DATA"))
#ifdef KADM5_TL_DATA
return KADM5_TL_DATA;
#else
goto not_there;
#endif
if (strEQ(name, "KADM5_UNK_POLICY"))
#ifdef KADM5_UNK_POLICY
return KADM5_UNK_POLICY;
#else
goto not_there;
#endif
if (strEQ(name, "KADM5_UNK_PRINC"))
#ifdef KADM5_UNK_PRINC
return KADM5_UNK_PRINC;
#else
goto not_there;
#endif
if (strEQ(name, "KRB5_KDB_DISALLOW_ALL_TIX"))
#ifdef KRB5_KDB_DISALLOW_ALL_TIX
return KRB5_KDB_DISALLOW_ALL_TIX;
#else
goto not_there;
#endif
if (strEQ(name, "KRB5_KDB_DISALLOW_DUP_SKEY"))
#ifdef KRB5_KDB_DISALLOW_DUP_SKEY
return KRB5_KDB_DISALLOW_DUP_SKEY;
#else
goto not_there;
#endif
if (strEQ(name, "KRB5_KDB_DISALLOW_FORWARDABLE"))
#ifdef KRB5_KDB_DISALLOW_FORWARDABLE
return KRB5_KDB_DISALLOW_FORWARDABLE;
#else
goto not_there;
#endif
if (strEQ(name, "KRB5_KDB_DISALLOW_POSTDATED"))
#ifdef KRB5_KDB_DISALLOW_POSTDATED
return KRB5_KDB_DISALLOW_POSTDATED;
#else
goto not_there;
#endif
if (strEQ(name, "KRB5_KDB_DISALLOW_PROXIABLE"))
#ifdef KRB5_KDB_DISALLOW_PROXIABLE
return KRB5_KDB_DISALLOW_PROXIABLE;
#else
goto not_there;
#endif
if (strEQ(name, "KRB5_KDB_DISALLOW_RENEWABLE"))
#ifdef KRB5_KDB_DISALLOW_RENEWABLE
return KRB5_KDB_DISALLOW_RENEWABLE;
#else
goto not_there;
#endif
if (strEQ(name, "KRB5_KDB_DISALLOW_SVR"))
#ifdef KRB5_KDB_DISALLOW_SVR
return KRB5_KDB_DISALLOW_SVR;
#else
goto not_there;
#endif
if (strEQ(name, "KRB5_KDB_DISALLOW_TGT_BASED"))
#ifdef KRB5_KDB_DISALLOW_TGT_BASED
return KRB5_KDB_DISALLOW_TGT_BASED;
#else
goto not_there;
#endif
if (strEQ(name, "KRB5_KDB_NEW_PRINC"))
#ifdef KRB5_KDB_NEW_PRINC
return KRB5_KDB_NEW_PRINC;
#else
goto not_there;
#endif
if (strEQ(name, "KRB5_KDB_REQUIRES_HW_AUTH"))
#ifdef KRB5_KDB_REQUIRES_HW_AUTH
return KRB5_KDB_REQUIRES_HW_AUTH;
#else
goto not_there;
#endif
if (strEQ(name, "KRB5_KDB_REQUIRES_PRE_AUTH"))
#ifdef KRB5_KDB_REQUIRES_PRE_AUTH
return KRB5_KDB_REQUIRES_PRE_AUTH;
#else
goto not_there;
#endif
if (strEQ(name, "KRB5_KDB_REQUIRES_PWCHANGE"))
#ifdef KRB5_KDB_REQUIRES_PWCHANGE
return KRB5_KDB_REQUIRES_PWCHANGE;
#else
goto not_there;
#endif
if (strEQ(name, "KRB5_KDB_SALTTYPE_AFS3"))
#ifdef KRB5_KDB_SALTTYPE_AFS3
return KRB5_KDB_SALTTYPE_AFS3;
#else
goto not_there;
#endif
if (strEQ(name, "KRB5_KDB_SALTTYPE_NOREALM"))
#ifdef KRB5_KDB_SALTTYPE_NOREALM
return KRB5_KDB_SALTTYPE_NOREALM;
#else
goto not_there;
#endif
if (strEQ(name, "KRB5_KDB_SALTTYPE_NORMAL"))
#ifdef KRB5_KDB_SALTTYPE_NORMAL
return KRB5_KDB_SALTTYPE_NORMAL;
#else
goto not_there;
#endif
if (strEQ(name, "KRB5_KDB_SALTTYPE_ONLYREALM"))
#ifdef KRB5_KDB_SALTTYPE_ONLYREALM
return KRB5_KDB_SALTTYPE_ONLYREALM;
#else
goto not_there;
#endif
if (strEQ(name, "KRB5_KDB_SALTTYPE_SPECIAL"))
#ifdef KRB5_KDB_SALTTYPE_SPECIAL
return KRB5_KDB_SALTTYPE_SPECIAL;
#else
goto not_there;
#endif
if (strEQ(name, "KRB5_KDB_SALTTYPE_V4"))
#ifdef KRB5_KDB_SALTTYPE_V4
return KRB5_KDB_SALTTYPE_V4;
#else
goto not_there;
#endif
if (strEQ(name, "KRB5_KDB_SUPPORT_DESMD5"))
#ifdef KRB5_KDB_SUPPORT_DESMD5
return KRB5_KDB_SUPPORT_DESMD5;
#else
goto not_there;
#endif
if (strEQ(name, "KRB5_KDB_ACCESS_ERROR"))
#ifdef KRB5_KDB_ACCESS_ERROR
return KRB5_KDB_ACCESS_ERROR;
#else
goto not_there;
#endif
break;
}
errno = EINVAL;
return 0;
not_there:
errno = ENOENT;
return 0;
}
static kadm5_ret_t err;
#ifdef KADM5_API_VERSION_3
/* krb5 1.8+ requires a context argument for init_with_* functions */
static krb5_context context = NULL;
#endif
/*
* Some Kerberos data objects contain others, so we don't always want
* to free an object when the Perl program is done with it. For
* example, kadm5_principal_ent_rec contains a couple of
* krb5_principals, but we don't necessarily want them freed when the
* SVs referring to them go out of scope because we still have the
* kadm5_principal_ent_rec pointing to them.
*
* Authen::Krb5 solves this by remembering every independently created
* object so that no contained objects are freed. Unfortunately, this
* approach causes all child objects to become invalid once the parent
* is destroyed. So instead, create meta-structures containing, in
* addition to the Kerberos data itself, pointers to SVs to which we
* return references. We account for the parent's dependency on the
* child in the reference count of the SV. When it's time to destroy
* a parent object, we decrease the reference counts, and we don't use
* the Kerberos free functions.
*
* The policy and principal methods keep track of the mask in the
* meta-struct so the user doesn't have to. They assume that if the
* user set the value, it should be changed.
*/
struct kadm5_policy_mit {
kadm5_policy_ent_rec policy;
long mask;
};
struct kadm5_principal_mit {
kadm5_principal_ent_rec kadm5_princ;
SV **key_data;
SV *krb5_princ;
SV *krb5_princ_mod;
long mask;
};
/* for zeroing structs */
static struct kadm5_policy_mit kadm5_policy_mit_init;
static struct kadm5_principal_mit kadm5_principal_mit_init;
static kadm5_config_params kadm5_config_params_init;
static krb5_key_data krb5_key_data_init;
typedef kadm5_config_params *Authen__Krb5__Admin__Config;
typedef krb5_ccache Authen__Krb5__Ccache;
typedef krb5_key_data *Authen__Krb5__Admin__Key;
typedef krb5_keyblock *Authen__Krb5__Keyblock;
typedef krb5_principal Authen__Krb5__Principal;
typedef struct kadm5_policy_mit *Authen__Krb5__Admin__Policy;
( run in 1.943 second using v1.01-cache-2.11-cpan-a49fcb8fa48 )