Krb5
view release on metacpan or search on metacpan
if (!free_hash) return;
sprintf(key,"%p",sv);
hv_delete(free_hash,key,strlen(key),G_DISCARD);
}
MODULE = Authen::Krb5 PACKAGE = Authen::Krb5 PREFIX = krb5_
double
constant(name, arg)
char *name
int arg
void
krb5_error(e = 0)
krb5_error_code e;
CODE:
if (e) {
ST(0) = sv_2mortal(newSVpv((char *)error_message(e), 0));
}
else {
ST(0) = sv_2mortal(newSVpv((char *)error_message(err), 0));
(void) SvUPGRADE(ST(0), SVt_PVIV);
SvIVX(ST(0)) = err;
SvIOK_on(ST(0));
}
void
krb5_init_context()
CODE:
if (context) croak("Authen::Krb5 already initialized");
err = krb5_init_context(&context);
if (err) XSRETURN_UNDEF;
XSRETURN_YES;
void
krb5_free_context()
CODE:
if (!context) croak("Authen::Krb5 not yet initialized");
krb5_free_context(context);
context = NULL;
void
krb5_init_ets()
CODE:
#if KRB5_DEPRECATED
krb5_init_ets(context);
#endif /* KRB5_DEPRECATED */
XSRETURN_YES;
void
krb5_get_default_realm()
PREINIT:
char *realm;
PPCODE:
err = krb5_get_default_realm(context,&realm);
if (err || !realm) XSRETURN_UNDEF;
XPUSHs(sv_2mortal(newSVpv(realm,strlen(realm))));
Safefree(realm);
void
krb5_get_host_realm(host)
char *host
PREINIT:
char **realmlist;
int i;
PPCODE:
err = krb5_get_host_realm(context,host,&realmlist);
if (err || !realmlist) XSRETURN_UNDEF;
for (i = 0; realmlist[i]; i++) {
XPUSHs(sv_2mortal(newSVpv(realmlist[i],
strlen(realmlist[i]))));
}
krb5_free_host_realm(context,realmlist);
void
krb5_get_krbhst(realm)
char *realm
PREINIT:
krb5_data realm_data;
char **hostlist;
int i;
PPCODE:
realm_data.data = realm;
realm_data.length = strlen(realm);
err = krb5_get_krbhst(context,&realm_data,&hostlist);
if (err || !hostlist) XSRETURN_UNDEF;
for (i = 0; hostlist[i]; i++) {
XPUSHs(sv_2mortal(newSVpv(hostlist[i],
strlen(hostlist[i]))));
}
krb5_free_krbhst(context,hostlist);
Authen::Krb5::Principal
krb5_build_principal_ext(p)
Authen::Krb5::Principal p
CODE:
err = krb5_build_principal_ext(context, &RETVAL,
krb5_princ_realm(context, p)->length,
krb5_princ_realm(context, p)->data,
KRB5_TGS_NAME_SIZE, KRB5_TGS_NAME,
krb5_princ_realm(context, p)->length,
krb5_princ_realm(context, p)->data,
0);
if (err) XSRETURN_UNDEF;
can_free((SV *)RETVAL);
OUTPUT:
RETVAL
Authen::Krb5::Principal
krb5_parse_name(name)
char *name
CODE:
err = krb5_parse_name(context,name,&RETVAL);
if (err) XSRETURN_UNDEF;
can_free((SV *)RETVAL);
OUTPUT:
RETVAL
Authen::Krb5::Principal
krb5_sname_to_principal(hostname,sname,type)
char *hostname
char *sname
krb5_int32 type
CODE:
err = krb5_sname_to_principal(context,hostname,sname,type,&RETVAL);
if (err) XSRETURN_UNDEF;
can_free((SV *)RETVAL);
OUTPUT:
RETVAL
Authen::Krb5::Ccache
krb5_cc_resolve(string_name)
CODE:
if (!New(0,t,1,krb5_ticket)) XSRETURN_UNDEF;
in_data.data = SvPV(in,in_data.length);
err = krb5_rd_req(context,&auth_context,&in_data,server,keytab,
NULL,&t);
if (err) XSRETURN_UNDEF;
RETVAL = t;
can_free((SV *)RETVAL);
OUTPUT:
RETVAL
Authen::Krb5::Address
gen_portaddr(addr,port)
Authen::Krb5::Address addr
unsigned short port
CODE:
err = krb5_gen_portaddr(context,addr,(krb5_pointer)&port,&RETVAL);
if (err) XSRETURN_UNDEF;
OUTPUT:
RETVAL
void
genaddrs(auth_context,fh,flags)
Authen::Krb5::AuthContext auth_context
FILE *fh;
krb5_flags flags
PREINIT:
int fd;
CODE:
fd = fileno(fh);
err = krb5_auth_con_genaddrs(context,auth_context,fd,flags);
if (err) XSRETURN_UNDEF;
XSRETURN_YES;
char *
gen_replay_name(addr,uniq)
Authen::Krb5::Address addr
char *uniq
CODE:
err = krb5_gen_replay_name(context,addr,uniq,&RETVAL);
if (err) XSRETURN_UNDEF;
OUTPUT:
RETVAL
void
krb5_mk_priv(auth_context,in)
Authen::Krb5::AuthContext auth_context
SV *in
PREINIT:
krb5_data in_data, out_data;
PPCODE:
in_data.data = SvPV(in,in_data.length);
err = krb5_mk_priv(context,auth_context,&in_data,&out_data,NULL);
if (err) XSRETURN_UNDEF;
XPUSHs(sv_2mortal(newSVpv(out_data.data,out_data.length)));
/* krb5_free_data(context,&out_data); */
void
krb5_rd_priv(auth_context,in)
Authen::Krb5::AuthContext auth_context
SV *in
PREINIT:
krb5_data in_data, out_data;
PPCODE:
in_data.data = SvPV(in,in_data.length);
err = krb5_rd_priv(context,auth_context,&in_data,&out_data,NULL);
if (err) XSRETURN_UNDEF;
XPUSHs(sv_2mortal(newSVpv(out_data.data,out_data.length)));
Authen::Krb5::Rcache
krb5_get_server_rcache(piece)
SV *piece
PREINIT:
krb5_data rc_data;
CODE:
rc_data.data=SvPV(piece,rc_data.length);
err = krb5_get_server_rcache(context,&rc_data,&RETVAL);
if (err) XSRETURN_UNDEF;
OUTPUT:
RETVAL
void
krb5_sendauth(auth_context,fh,version,client,server,options,in,in_creds,cc)
Authen::Krb5::AuthContext auth_context
FILE *fh
char *version
Authen::Krb5::Principal client
Authen::Krb5::Principal server
int options
SV *in
Authen::Krb5::Creds in_creds
Authen::Krb5::Ccache cc
PREINIT:
krb5_data in_data;
krb5_creds *out_creds = NULL;
int fd;
PPCODE:
fd = fileno(fh);
in_data.data = SvPV(in,in_data.length);
err = krb5_sendauth(context,&auth_context,&fd,version,client,server,
options,&in_data,in_creds,cc,NULL,NULL,&out_creds);
if (err) XSRETURN_UNDEF;
XSRETURN_YES;
void
krb5_recvauth(auth_context,fh,version,server,keytab)
Authen::Krb5::AuthContext auth_context
FILE *fh
char *version
Authen::Krb5::Principal server
Authen::Krb5::Keytab keytab
PREINIT:
krb5_ticket *ticket = NULL;
int fd;
PPCODE:
fd = fileno(fh);
err = krb5_recvauth(context,&auth_context,&fd,version,server,0,
keytab,&ticket);
if (err) XSRETURN_UNDEF;
ST(0) = sv_newmortal();
sv_setref_pv(ST(0),"Authen::Krb5::Ticket",(void*)ticket);
XSRETURN(1);
MODULE = Authen::Krb5 PACKAGE = Authen::Krb5::Principal
void
realm(p)
Authen::Krb5::Principal p
CODE:
ST(0) = sv_2mortal(newSVpv(p->realm.data,p->realm.length));
krb5_int32
type(p)
Authen::Krb5::Principal p
CODE:
RETVAL = p->type;
OUTPUT:
RETVAL
void
data(p)
Authen::Krb5::Principal p
PPCODE:
if (p->length > 0) {
int len = p->length;
krb5_data *data;
EXTEND(sp,len);
for (data = p->data; len--; data++) {
PUSHs(sv_2mortal(newSVpv(data->data,data->length)));
}
}
void
DESTROY(p)
Authen::Krb5::Principal p
CODE:
if (p && should_free((SV *)p)) {
krb5_free_principal(context,p);
freed((SV *)p);
}
MODULE = Authen::Krb5 PACKAGE = Authen::Krb5::Ccache
void
initialize(cc, p)
Authen::Krb5::Ccache cc
Authen::Krb5::Principal p
CODE:
err = krb5_cc_initialize(context, cc, p);
if (err) XSRETURN_UNDEF;
else {
can_free((SV *)cc);
XSRETURN_YES;
}
void
store_cred(cc, creds)
Authen::Krb5::Ccache cc
Authen::Krb5::Creds creds
CODE:
err = krb5_cc_store_cred(context, cc, creds);
if (err) XSRETURN_UNDEF;
XSRETURN_YES;
const char *
get_name(cc)
Authen::Krb5::Ccache cc
CODE:
RETVAL = krb5_cc_get_name(context, cc);
OUTPUT:
RETVAL
Authen::Krb5::Principal
get_principal(cc)
Authen::Krb5::Ccache cc
err = krb5_cc_start_seq_get(context, cc, RETVAL);
if (err)
XSRETURN_UNDEF;
OUTPUT:
RETVAL
Authen::Krb5::Creds
next_cred(cc, cursor)
krb5_cc_cursor *cursor
Authen::Krb5::Ccache cc
CODE:
if (!New(0, RETVAL, 1, krb5_creds))
XSRETURN_UNDEF;
err = krb5_cc_next_cred(context, cc, cursor, RETVAL);
if (err)
XSRETURN_UNDEF;
can_free((SV *)RETVAL);
OUTPUT:
RETVAL
void
end_seq_get(cc, cursor)
Authen::Krb5::Ccache cc
krb5_cc_cursor *cursor
CODE:
err = krb5_cc_end_seq_get(context, cc, cursor);
if (err)
XSRETURN_UNDEF;
XSRETURN_YES;
void
DESTROY(cc)
Authen::Krb5::Ccache cc
CODE:
if (should_free((SV *)cc)) {
krb5_cc_close(context, cc);
freed((SV *)cc);
}
MODULE = Authen::Krb5 PACKAGE = Authen::Krb5::KeyBlock
int
length(kb)
Authen::Krb5::KeyBlock kb
CODE:
RETVAL = kb->length;
OUTPUT:
RETVAL
void
contents(kb)
Authen::Krb5::KeyBlock kb
PPCODE:
/* sv_2mortal here causes 'Attempt to free unreferenced scalar' later */
XPUSHs(newSVpvn((char*)(kb->contents), kb->length));
int
enctype(kb)
Authen::Krb5::KeyBlock kb
CODE:
RETVAL = (int)kb->enctype;
OUTPUT:
RETVAL
void
enctype_string(kb)
Authen::Krb5::KeyBlock kb
PREINIT:
char buf[256];
PPCODE:
err = krb5_enctype_to_string(kb->enctype, buf, 255);
if (err) {
XSRETURN_UNDEF;
}
XPUSHs(newSVpv(buf, 0));
void
DESTROY(kb)
Authen::Krb5::KeyBlock kb
CODE:
if (kb && should_free((SV *)kb)) {
krb5_free_keyblock(context,kb);
freed((SV *)kb);
}
MODULE = Authen::Krb5 PACKAGE = Authen::Krb5::AuthContext
Authen::Krb5::AuthContext
new(class)
char *class
CODE:
err = krb5_auth_con_init(context, &RETVAL);
if (err) XSRETURN_UNDEF;
can_free((SV *)RETVAL);
OUTPUT:
RETVAL
int
getflags(auth_context)
Authen::Krb5::AuthContext auth_context
PREINIT:
krb5_int32 flags;
CODE:
err = krb5_auth_con_getflags(context,auth_context,&flags);
RETVAL = (int)flags;
OUTPUT:
RETVAL
void
setflags(auth_context,flags)
Authen::Krb5::AuthContext auth_context
krb5_int32 flags
CODE:
err = krb5_auth_con_setflags(context,auth_context,flags);
if(err) XSRETURN_UNDEF;
XSRETURN_YES;
Authen::Krb5::Rcache
getrcache(auth_context)
Authen::Krb5::AuthContext auth_context
( run in 1.613 second using v1.01-cache-2.11-cpan-5511b514fd6 )