Merge in last changes from Asanka for the win32 port
Signed-off-by: Love Hornquist Astrand <lha@h5l.org>
This commit is contained in:
		| @@ -55,7 +55,7 @@ typedef unsigned char   krb5_octet; | ||||
| typedef krb5_octet      krb5_boolean; | ||||
| typedef krb5short       krb5_keytype; /* in k5.2 it's a short */ | ||||
| typedef krb5_int32      krb5_flags; | ||||
| typedef krb5_int32  krb5_timestamp; | ||||
| typedef krb5_int32  krb5_timestamp; /* is a time_t in krb5.h */ | ||||
|  | ||||
| typedef char * krb5_pointer;  /* pointer to unexposed data */ | ||||
|  | ||||
|   | ||||
							
								
								
									
										0
									
								
								autogen.sh
									
									
									
									
									
										
										
										Normal file → Executable file
									
								
							
							
						
						
									
										0
									
								
								autogen.sh
									
									
									
									
									
										
										
										Normal file → Executable file
									
								
							| @@ -167,7 +167,7 @@ AM_CONDITIONAL(SQLITE3,  test "X$with_sqlite3" = Xyes) | ||||
| AC_ARG_ENABLE(sqlite-cache,  | ||||
| 	AS_HELP_STRING([--disable-sqlite-cache],[if you want support for cache in sqlite])) | ||||
| if test "$enable_sqlite_cache" != no; then | ||||
|     AC_DEFINE(HAVE_SCC, 1, [Define if you want support for DCE/DFS PAG's.]) | ||||
|     AC_DEFINE(HAVE_SCC, 1, [Define if you want support for cache in sqlite.]) | ||||
| fi | ||||
| AM_CONDITIONAL(have_scc, test "$enable_sqlite_cache" != no) | ||||
|  | ||||
|   | ||||
| @@ -43,19 +43,12 @@ INCFILES=			\ | ||||
| 	$(INCDIR)\krb5-types.h	\ | ||||
| 	$(INCDIR)\version.h | ||||
|  | ||||
| MAKECRYPTO=$(OBJ)\make_crypto.exe | ||||
| $(INCDIR)\krb5-types.h: $(OBJ)\bits.exe | ||||
| 	$(OBJ)\bits.exe $(INCDIR)\krb5-types.h | ||||
|  | ||||
| $(MAKECRYPTO): $(OBJ)\make_crypto.obj | ||||
| $(OBJ)\bits.exe: $(OBJ)\bits.obj | ||||
| 	$(EXECONLINK) | ||||
| 	$(_VC_MANIFEST_EMBED_EXE) | ||||
| 	$(_VC_MANIFEST_CLEAN) | ||||
| 	$(_CODESIGN) | ||||
|  | ||||
| $(INCDIR)\krb5-types.h: krb5-types.h.w32 | ||||
| 	$(CP) $** $@ | ||||
|  | ||||
| $(INCDIR)\crypto-headers.h: $(MAKECRYPTO) | ||||
| 	$(MAKECRYPTO) $@ | ||||
| 	$(EXEPREP_NODIST) | ||||
|  | ||||
| $(INCDIR)\config.h: config.h.w32 ..\windows\NTMakefile.config NTMakefile | ||||
| 	$(PERL) << < config.h.w32 > $@ | ||||
| @@ -79,14 +72,16 @@ while(<>) { | ||||
|     if ("$(HAVE_PTHREAD_H)") { print "#define HAVE_PTHREAD_H 1\n"; } | ||||
|     if ("$(ENV_HACK)") { print "#define ENV_HACK 1\n"; } | ||||
|     if ("$(HAVE_KCM)") { print "#define HAVE_KCM 1\n"; } | ||||
|     if ("$(DIR_hdbdir)") { print "#define HDB_DB_DIR \"$(DIR_hdbdir)\"\n"; } | ||||
|     if ("$(HAVE_SCC)") { print "#define HAVE_SCC 1\n"; } | ||||
|     if ("$(DIR_hdbdir)") { print "#define HDB_DB_DIR \"".'$(DIR_hdbdir)'."\"\n"; } | ||||
|  | ||||
|   } elsif (m/\@VERSION_OPTDEFS\@/) { | ||||
|  | ||||
|     if ("$(VER_PRERELEASE)") { print "#define VER_PRERELEASE 1\n"; } | ||||
|     if ("$(VER_PRIVATE)") { print "#define VER_PRIVATE \"$(VER_PRIVATE)\""; } | ||||
|     if ("$(VER_SPECIAL)") { print "#define VER_SPECIAL \"$(VER_SPECIAL)\""; } | ||||
|     if ("$(VER_PRIVATE)") { print "#define VER_PRIVATE \"$(VER_PRIVATE)\"\n"; } | ||||
|     if ("$(VER_SPECIAL)") { print "#define VER_SPECIAL \"$(VER_SPECIAL)\"\n"; } | ||||
|     if ("$(BUILD)" =~ "dbg") { print "#define VER_DEBUG 1\n"; } | ||||
|     print "#define HOST \"$(COMPUTERNAME)\"\n"; | ||||
|  | ||||
|   } else { | ||||
|  | ||||
|   | ||||
| @@ -39,6 +39,9 @@ RCSID("$Id$"); | ||||
| #include <string.h> | ||||
| #include <stdlib.h> | ||||
| #include <ctype.h> | ||||
| #ifdef WIN32 | ||||
| #include <ws2tcpip.h> | ||||
| #endif | ||||
|  | ||||
| #define BITSIZE(TYPE)						\ | ||||
| {								\ | ||||
| @@ -157,7 +160,11 @@ int main(int argc, char **argv) | ||||
|     fprintf(f, "#include <netinet/in6_machtypes.h>\n"); | ||||
| #endif | ||||
| #ifdef HAVE_SOCKLEN_T | ||||
| #ifndef WIN32 | ||||
|     fprintf(f, "#include <sys/socket.h>\n"); | ||||
| #else | ||||
|     fprintf(f, "#include <ws2tcpip.h>\n"); | ||||
| #endif | ||||
| #endif | ||||
|     fprintf(f, "\n"); | ||||
|  | ||||
| @@ -236,7 +243,6 @@ int main(int argc, char **argv) | ||||
|     fprintf(f, "\n"); | ||||
|  | ||||
| #if defined(_WIN32) | ||||
|     #include <ws2tcpip.h> | ||||
|     fprintf(f, "typedef SOCKET krb5_socket_t;\n"); | ||||
| #else | ||||
|     fprintf(f, "typedef int krb5_socket_t;\n"); | ||||
|   | ||||
| @@ -2,4 +2,5 @@ | ||||
|  | ||||
| include $(top_srcdir)/Makefile.am.common | ||||
|  | ||||
| CLEANFILES = admin.h kadm5_err.h private.h kadm5-private.h kadm5-protos.h | ||||
| CLEANFILES = admin.h kadm5_err.h private.h | ||||
| CLEANFILES += kadm5-private.h kadm5-protos.h kadm5-pwcheck.h | ||||
|   | ||||
| @@ -124,15 +124,15 @@ spawn_child(krb5_context context, int *socks, | ||||
|     struct sockaddr_storage __ss; | ||||
|     struct sockaddr *sa = (struct sockaddr *)&__ss; | ||||
|     socklen_t sa_size = sizeof(__ss); | ||||
|     int s; | ||||
|     krb5_socket_t s; | ||||
|     pid_t pid; | ||||
|     krb5_address addr; | ||||
|     char buf[128]; | ||||
|     size_t buf_len; | ||||
|  | ||||
|     s = accept(socks[this_sock], sa, &sa_size); | ||||
|     if(s < 0) { | ||||
| 	krb5_warn(context, errno, "accept"); | ||||
|     if(rk_IS_BAD_SOCKET(s)) { | ||||
| 	krb5_warn(context, rk_SOCK_ERRNO, "accept"); | ||||
| 	return 1; | ||||
|     } | ||||
|     e = krb5_sockaddr2address(context, sa, &addr); | ||||
| @@ -151,21 +151,21 @@ spawn_child(krb5_context context, int *socks, | ||||
|     pid = fork(); | ||||
|     if(pid == 0) { | ||||
| 	for(i = 0; i < num_socks; i++) | ||||
| 	    close(socks[i]); | ||||
| 	    rk_closesocket(socks[i]); | ||||
| 	dup2(s, STDIN_FILENO); | ||||
| 	dup2(s, STDOUT_FILENO); | ||||
| 	if(s != STDIN_FILENO && s != STDOUT_FILENO) | ||||
| 	    close(s); | ||||
| 	    rk_closesocket(s); | ||||
| 	return 0; | ||||
|     } else { | ||||
| 	close(s); | ||||
| 	rk_closesocket(s); | ||||
|     } | ||||
|     return 1; | ||||
| } | ||||
|  | ||||
| static int | ||||
| wait_for_connection(krb5_context context, | ||||
| 		    int *socks, unsigned int num_socks) | ||||
| 		    krb5_socket_t *socks, unsigned int num_socks) | ||||
| { | ||||
|     unsigned int i; | ||||
|     int e; | ||||
| @@ -195,9 +195,9 @@ wait_for_connection(krb5_context context, | ||||
|     while (term_flag == 0) { | ||||
| 	read_set = orig_read_set; | ||||
| 	e = select(max_fd + 1, &read_set, NULL, NULL, NULL); | ||||
| 	if(e < 0) { | ||||
| 	    if(errno != EINTR) | ||||
| 		krb5_warn(context, errno, "select"); | ||||
| 	if(rk_IS_SOCKET_ERROR(e)) { | ||||
| 	    if(rk_SOCK_ERRNO != EINTR) | ||||
| 		krb5_warn(context, rk_SOCK_ERRNO, "select"); | ||||
| 	} else if(e == 0) | ||||
| 	    krb5_warnx(context, "select returned 0"); | ||||
| 	else { | ||||
| @@ -226,7 +226,7 @@ start_server(krb5_context context) | ||||
|     int e; | ||||
|     struct kadm_port *p; | ||||
|  | ||||
|     int *socks = NULL, *tmp; | ||||
|     krb5_socket_t *socks = NULL, *tmp; | ||||
|     unsigned int num_socks = 0; | ||||
|     int i; | ||||
|  | ||||
| @@ -259,23 +259,23 @@ start_server(krb5_context context) | ||||
| 	} | ||||
| 	socks = tmp; | ||||
| 	for(ap = ai; ap; ap = ap->ai_next) { | ||||
| 	    int s = socket(ap->ai_family, ap->ai_socktype, ap->ai_protocol); | ||||
| 	    if(s < 0) { | ||||
| 		krb5_warn(context, errno, "socket"); | ||||
| 	    krb5_socket_t s = socket(ap->ai_family, ap->ai_socktype, ap->ai_protocol); | ||||
| 	    if(rk_IS_BAD_SOCKET(s)) { | ||||
| 		krb5_warn(context, rk_SOCK_ERRNO, "socket"); | ||||
| 		continue; | ||||
| 	    } | ||||
|  | ||||
| 	    socket_set_reuseaddr(s, 1); | ||||
| 	    socket_set_ipv6only(s, 1); | ||||
|  | ||||
| 	    if (bind (s, ap->ai_addr, ap->ai_addrlen) < 0) { | ||||
| 		krb5_warn(context, errno, "bind"); | ||||
| 		close(s); | ||||
| 	    if (rk_IS_SOCKET_ERROR(bind (s, ap->ai_addr, ap->ai_addrlen))) { | ||||
| 		krb5_warn(context, rk_SOCK_ERRNO, "bind"); | ||||
| 		rk_closesocket(s); | ||||
| 		continue; | ||||
| 	    } | ||||
| 	    if (listen (s, SOMAXCONN) < 0) { | ||||
| 		krb5_warn(context, errno, "listen"); | ||||
| 		close(s); | ||||
| 	    if (rk_IS_SOCKET_ERROR(listen (s, SOMAXCONN))) { | ||||
| 		krb5_warn(context, rk_SOCK_ERRNO, "listen"); | ||||
| 		rk_closesocket(s); | ||||
| 		continue; | ||||
| 	    } | ||||
| 	    socks[num_socks++] = s; | ||||
| @@ -284,5 +284,6 @@ start_server(krb5_context context) | ||||
|     } | ||||
|     if(num_socks == 0) | ||||
| 	krb5_errx(context, 1, "no sockets to listen to - exiting"); | ||||
|  | ||||
|     return wait_for_connection(context, socks, num_socks); | ||||
| } | ||||
|   | ||||
| @@ -95,6 +95,7 @@ main(int argc, char **argv) | ||||
|     int i; | ||||
|     krb5_log_facility *logfacility; | ||||
|     krb5_keytab keytab; | ||||
|     krb5_socket_t sfd = rk_INVALID_SOCKET; | ||||
|  | ||||
|     setprogname(argv[0]); | ||||
|  | ||||
| @@ -168,8 +169,9 @@ main(int argc, char **argv) | ||||
| 					     "tcp", 749); | ||||
| 	else | ||||
| 	    debug_port = htons(atoi(port_str)); | ||||
| 	mini_inetd(debug_port, NULL); | ||||
| 	mini_inetd(debug_port, &sfd); | ||||
|     } else { | ||||
| #ifndef NO_INETD | ||||
| 	struct sockaddr_storage __ss; | ||||
| 	struct sockaddr *sa = (struct sockaddr *)&__ss; | ||||
| 	socklen_t sa_size = sizeof(__ss); | ||||
| @@ -180,17 +182,22 @@ main(int argc, char **argv) | ||||
| 	 */ | ||||
|  | ||||
| 	if(roken_getsockname(STDIN_FILENO, sa, &sa_size) < 0 && | ||||
| 	       errno == ENOTSOCK) { | ||||
| 	   SOCK_ERRNO == ENOTSOCK) { | ||||
| #endif | ||||
| 	    parse_ports(context, port_str ? port_str : "+"); | ||||
| 	    pidfile(NULL); | ||||
| 	    start_server(context); | ||||
| 	    start_server(context, &sfd); | ||||
| #ifndef NO_INETD | ||||
| 	} else { | ||||
| 	    sfd = STDIN_FILENO; | ||||
| 	} | ||||
| #endif | ||||
|     } | ||||
|  | ||||
|     if(realm) | ||||
| 	krb5_set_default_realm(context, realm); /* XXX */ | ||||
|  | ||||
|     kadmind_loop(context, keytab, STDIN_FILENO); | ||||
|     kadmind_loop(context, keytab, sfd); | ||||
|  | ||||
|     return 0; | ||||
| } | ||||
|   | ||||
| @@ -1091,13 +1091,13 @@ process_stream(krb5_context context, | ||||
|  | ||||
|  | ||||
| int | ||||
| handle_mit(krb5_context context, void *buf, size_t len, int fd) | ||||
| handle_mit(krb5_context context, void *buf, size_t len, krb5_socket_t sock) | ||||
| { | ||||
|     krb5_storage *sp; | ||||
|  | ||||
|     dcontext = context; | ||||
|  | ||||
|     sp = krb5_storage_from_fd(fd); | ||||
|     sp = krb5_storage_from_fd(sock); | ||||
|     INSIST(sp != NULL); | ||||
|      | ||||
|     process_stream(context, buf, len, sp); | ||||
|   | ||||
| @@ -440,7 +440,7 @@ v5_loop (krb5_context context, | ||||
| 	 krb5_auth_context ac, | ||||
| 	 krb5_boolean initial, | ||||
| 	 void *kadm_handle, | ||||
| 	 int fd) | ||||
| 	 krb5_socket_t fd) | ||||
| { | ||||
|     krb5_error_code ret; | ||||
|     krb5_data in, out; | ||||
| @@ -476,7 +476,7 @@ match_appl_version(const void *data, const char *appl_version) | ||||
| static void | ||||
| handle_v5(krb5_context context, | ||||
| 	  krb5_keytab keytab, | ||||
| 	  int fd) | ||||
| 	  krb5_socket_t fd) | ||||
| { | ||||
|     krb5_error_code ret; | ||||
|     krb5_ticket *ticket; | ||||
| @@ -539,13 +539,13 @@ handle_v5(krb5_context context, | ||||
| krb5_error_code | ||||
| kadmind_loop(krb5_context context, | ||||
| 	     krb5_keytab keytab, | ||||
| 	     int fd) | ||||
| 	     krb5_socket_t sock) | ||||
| { | ||||
|     u_char buf[sizeof(KRB5_SENDAUTH_VERSION) + 4]; | ||||
|     ssize_t n; | ||||
|     unsigned long len; | ||||
|  | ||||
|     n = krb5_net_read(context, &fd, buf, 4); | ||||
|     n = krb5_net_read(context, &sock, buf, 4); | ||||
|     if(n == 0) | ||||
| 	exit(0); | ||||
|     if(n < 0) | ||||
| @@ -554,21 +554,21 @@ kadmind_loop(krb5_context context, | ||||
|  | ||||
|     if (len == sizeof(KRB5_SENDAUTH_VERSION)) { | ||||
|  | ||||
| 	n = krb5_net_read(context, &fd, buf + 4, len); | ||||
| 	n = krb5_net_read(context, &sock, buf + 4, len); | ||||
| 	if (n < 0) | ||||
| 	    krb5_err (context, 1, errno, "reading sendauth version"); | ||||
| 	if (n == 0) | ||||
| 	    krb5_errx (context, 1, "EOF reading sendauth version"); | ||||
|  | ||||
| 	if(memcmp(buf + 4, KRB5_SENDAUTH_VERSION, len) == 0) { | ||||
| 	    handle_v5(context, keytab, fd); | ||||
| 	    handle_v5(context, keytab, sock); | ||||
| 	    return 0; | ||||
| 	} | ||||
| 	len += 4; | ||||
|     } else | ||||
| 	len = 4; | ||||
|  | ||||
|     handle_mit(context, buf, len, fd); | ||||
|     handle_mit(context, buf, len, sock); | ||||
|  | ||||
|     return 0; | ||||
| } | ||||
|   | ||||
| @@ -128,12 +128,18 @@ stash(struct stash_options *opt, int argc, char **argv) | ||||
| 	    unlink(new); | ||||
| 	else { | ||||
| 	    unlink(old); | ||||
| #ifndef NO_POSIX_LINKS | ||||
| 	    if(link(opt->key_file_string, old) < 0 && errno != ENOENT) { | ||||
| 		ret = errno; | ||||
| 		unlink(new); | ||||
| 	    } else if(rename(new, opt->key_file_string) < 0) { | ||||
| 		ret = errno; | ||||
| 	    } else { | ||||
| #endif | ||||
| 		if(rename(new, opt->key_file_string) < 0) { | ||||
| 		    ret = errno; | ||||
| 		} | ||||
| #ifndef NO_POSIX_LINKS | ||||
| 	    } | ||||
| #endif | ||||
| 	} | ||||
|     out: | ||||
| 	free(old); | ||||
|   | ||||
| @@ -37,7 +37,11 @@ BINPROGRAMS=$(BINDIR)\string2key.exe | ||||
|  | ||||
| SBINPROGRAMS=$(SBINDIR)\kstash.exe | ||||
|  | ||||
| LIBEXECPROGRAMS=$(LIBEXECDIR)\hprop.exe $(LIBEXECDIR)\hpropd.exe $(LIBEXECDIR)\kdc.exe | ||||
| LIBEXECPROGRAMS= \ | ||||
| 	$(LIBEXECDIR)\hprop.exe \ | ||||
| 	$(LIBEXECDIR)\hpropd.exe \ | ||||
| 	$(LIBEXECDIR)\kdc.exe \ | ||||
| #	$(LIBEXECDIR)\digest-service.exe | ||||
|  | ||||
| NOINST_PROGRAMS=$(OBJ)\kdc-replay.exe | ||||
|  | ||||
| @@ -90,7 +94,14 @@ $(BINDIR)\string2key.exe: $(OBJ)\string2key.obj $(BIN_LIBS) | ||||
| 	$(_VC_MANIFEST_CLEAN) | ||||
| 	$(_CODESIGN) | ||||
|  | ||||
| $(LIBEXECDIR)\kdc.exe: $(OBJ)\connect.obj $(OBJ)\config.obj $(OBJ)\main.obj $(LIBKDC) $(BIN_LIBS) | ||||
| $(BINDIR)\digest-service.exe: $(OBJ)\digest-service.obj $(BIN_LIBS) | ||||
| 	$(EXECONLINK) | ||||
| 	$(_VC_MANIFEST_EMBED_EXE) | ||||
| 	$(_VC_MANIFEST_CLEAN) | ||||
| 	$(_CODESIGN) | ||||
|  | ||||
| $(LIBEXECDIR)\kdc.exe: \ | ||||
| $(OBJ)\connect.obj $(OBJ)\config.obj $(OBJ)\announce.obj $(OBJ)\main.obj $(LIBKDC) $(BIN_LIBS) | ||||
| 	$(EXECONLINK) | ||||
| 	$(_VC_MANIFEST_EMBED_EXE) | ||||
| 	$(_VC_MANIFEST_CLEAN) | ||||
|   | ||||
| @@ -877,11 +877,13 @@ loop(krb5_context context, | ||||
| 		    clear_descr(&d[i]); | ||||
| 		    continue; | ||||
| 		} | ||||
| #ifndef NO_LIMIT_FD_SETSIZE | ||||
| 		if(max_fd < d[i].s) | ||||
| 		    max_fd = d[i].s; | ||||
| #ifdef FD_SETSIZE | ||||
| 		if (max_fd >= FD_SETSIZE) | ||||
| 		    krb5_errx(context, 1, "fd too large"); | ||||
| #endif | ||||
| #endif | ||||
| 		FD_SET(d[i].s, &fds); | ||||
| 	    } else if(min_free < 0 || i < min_free) | ||||
|   | ||||
| @@ -286,8 +286,9 @@ _kdc_encode_reply(krb5_context context, | ||||
|  | ||||
|     ret = krb5_crypto_init(context, skey, etype, &crypto); | ||||
|     if (ret) { | ||||
|         const char *msg; | ||||
| 	free(buf); | ||||
| 	const char *msg = krb5_get_error_message(context, ret); | ||||
| 	msg = krb5_get_error_message(context, ret); | ||||
| 	kdc_log(context, config, 0, "krb5_crypto_init failed: %s", msg); | ||||
| 	krb5_free_error_message(context, msg); | ||||
| 	return ret; | ||||
|   | ||||
| @@ -10,3 +10,4 @@ EXPORTS | ||||
| 	krb5_kdc_process_request | ||||
| 	krb5_kdc_save_request | ||||
| 	krb5_kdc_update_time | ||||
| 	krb5_kdc_pk_initialize | ||||
|   | ||||
| @@ -37,8 +37,8 @@ gen_files_k5 =						    \ | ||||
| 	$(OBJ)\asn1_AD_AND_OR.x				    \ | ||||
| 	$(OBJ)\asn1_AD_IF_RELEVANT.x			    \ | ||||
| 	$(OBJ)\asn1_AD_KDCIssued.x			    \ | ||||
| 	$(OBJ)\asn1_AD_MANDATORY_FOR_KDC.x		    \ | ||||
| 	$(OBJ)\asn1_AD_LoginAlias.x			    \ | ||||
| 	$(OBJ)\asn1_AD_MANDATORY_FOR_KDC.x		    \ | ||||
| 	$(OBJ)\asn1_APOptions.x				    \ | ||||
| 	$(OBJ)\asn1_AP_REP.x				    \ | ||||
| 	$(OBJ)\asn1_AP_REQ.x				    \ | ||||
| @@ -66,12 +66,15 @@ gen_files_k5 =						    \ | ||||
| 	$(OBJ)\asn1_EncryptedData.x			    \ | ||||
| 	$(OBJ)\asn1_EncryptionKey.x			    \ | ||||
| 	$(OBJ)\asn1_EtypeList.x				    \ | ||||
| 	$(OBJ)\asn1_FastOptions.x			    \ | ||||
| 	$(OBJ)\asn1_HostAddress.x			    \ | ||||
| 	$(OBJ)\asn1_HostAddresses.x			    \ | ||||
| 	$(OBJ)\asn1_KDCOptions.x			    \ | ||||
| 	$(OBJ)\asn1_KDC_REP.x				    \ | ||||
| 	$(OBJ)\asn1_KDC_REQ.x				    \ | ||||
| 	$(OBJ)\asn1_KDC_REQ_BODY.x			    \ | ||||
| 	$(OBJ)\asn1_KRB5SignedPath.x			    \ | ||||
| 	$(OBJ)\asn1_KRB5SignedPathData.x		    \ | ||||
| 	$(OBJ)\asn1_KRB_CRED.x				    \ | ||||
| 	$(OBJ)\asn1_KRB_ERROR.x				    \ | ||||
| 	$(OBJ)\asn1_KRB_PRIV.x				    \ | ||||
| @@ -80,27 +83,35 @@ gen_files_k5 =						    \ | ||||
| 	$(OBJ)\asn1_KerberosString.x			    \ | ||||
| 	$(OBJ)\asn1_KerberosTime.x			    \ | ||||
| 	$(OBJ)\asn1_KrbCredInfo.x			    \ | ||||
| 	$(OBJ)\asn1_KrbFastArmor.x			    \ | ||||
| 	$(OBJ)\asn1_KrbFastArmoredRep.x			    \ | ||||
| 	$(OBJ)\asn1_KrbFastArmoredReq.x			    \ | ||||
| 	$(OBJ)\asn1_KrbFastFinished.x			    \ | ||||
| 	$(OBJ)\asn1_KrbFastReq.x			    \ | ||||
| 	$(OBJ)\asn1_KrbFastResponse.x			    \ | ||||
| 	$(OBJ)\asn1_LR_TYPE.x				    \ | ||||
| 	$(OBJ)\asn1_LastReq.x				    \ | ||||
| 	$(OBJ)\asn1_MESSAGE_TYPE.x			    \ | ||||
| 	$(OBJ)\asn1_METHOD_DATA.x			    \ | ||||
| 	$(OBJ)\asn1_NAME_TYPE.x				    \ | ||||
| 	$(OBJ)\asn1_PA_FX_FAST_REPLY.x			    \ | ||||
| 	$(OBJ)\asn1_PA_FX_FAST_REQUEST.x		    \ | ||||
| 	$(OBJ)\asn1_PADATA_TYPE.x			    \ | ||||
| 	$(OBJ)\asn1_PA_ClientCanonicalized.x		    \ | ||||
| 	$(OBJ)\asn1_PA_ClientCanonicalizedNames.x	    \ | ||||
| 	$(OBJ)\asn1_PA_DATA.x				    \ | ||||
| 	$(OBJ)\asn1_PA_ENC_SAM_RESPONSE_ENC.x         	    \ | ||||
| 	$(OBJ)\asn1_PA_ENC_SAM_RESPONSE_ENC.x		    \ | ||||
| 	$(OBJ)\asn1_PA_ENC_TS_ENC.x			    \ | ||||
| 	$(OBJ)\asn1_PA_PAC_REQUEST.x			    \ | ||||
| 	$(OBJ)\asn1_PA_S4U2Self.x			    \ | ||||
| 	$(OBJ)\asn1_PA_SAM_CHALLENGE_2.x		    \ | ||||
| 	$(OBJ)\asn1_PA_SAM_CHALLENGE_2_BODY.x 		    \ | ||||
| 	$(OBJ)\asn1_PA_SAM_CHALLENGE_2_BODY.x		    \ | ||||
| 	$(OBJ)\asn1_PA_SAM_REDIRECT.x			    \ | ||||
| 	$(OBJ)\asn1_PA_SAM_RESPONSE_2.x			    \ | ||||
| 	$(OBJ)\asn1_PA_SAM_TYPE.x			    \ | ||||
| 	$(OBJ)\asn1_PA_ClientCanonicalized.x		    \ | ||||
| 	$(OBJ)\asn1_PA_ClientCanonicalizedNames.x	    \ | ||||
| 	$(OBJ)\asn1_PA_SvrReferralData.x		    \ | ||||
| 	$(OBJ)\asn1_PA_ServerReferralData.x		    \ | ||||
| 	$(OBJ)\asn1_PA_SERVER_REFERRAL_DATA.x		    \ | ||||
| 	$(OBJ)\asn1_PA_ServerReferralData.x		    \ | ||||
| 	$(OBJ)\asn1_PA_SvrReferralData.x		    \ | ||||
| 	$(OBJ)\asn1_PROV_SRV_LOCATION.x			    \ | ||||
| 	$(OBJ)\asn1_Principal.x				    \ | ||||
| 	$(OBJ)\asn1_PrincipalName.x			    \ | ||||
| @@ -115,9 +126,7 @@ gen_files_k5 =						    \ | ||||
| 	$(OBJ)\asn1_TransitedEncoding.x			    \ | ||||
| 	$(OBJ)\asn1_TypedData.x				    \ | ||||
| 	$(OBJ)\asn1_krb5int32.x				    \ | ||||
| 	$(OBJ)\asn1_krb5uint32.x			    \ | ||||
| 	$(OBJ)\asn1_KRB5SignedPathData.x		    \ | ||||
| 	$(OBJ)\asn1_KRB5SignedPath.x | ||||
| 	$(OBJ)\asn1_krb5uint32.x | ||||
|  | ||||
| gen_files_cms =						    \ | ||||
| 	$(OBJ)\asn1_CMSAttributes.x			    \ | ||||
| @@ -215,7 +224,6 @@ gen_files_rfc2459 =					    \ | ||||
| 	$(OBJ)\asn1_SubjectPublicKeyInfo.x		    \ | ||||
| 	$(OBJ)\asn1_TBSCRLCertList.x			    \ | ||||
| 	$(OBJ)\asn1_TBSCertificate.x			    \ | ||||
| 	$(OBJ)\asn1_TeletexStringx.x			    \ | ||||
| 	$(OBJ)\asn1_Time.x				    \ | ||||
| 	$(OBJ)\asn1_UniqueIdentifier.x			    \ | ||||
| 	$(OBJ)\asn1_ValidationParms.x			    \ | ||||
| @@ -426,8 +434,10 @@ gen_files_pkcs9 =					    \ | ||||
| 	$(OBJ)\asn1_PKCS9_friendlyName.x | ||||
|  | ||||
| gen_files_test =					    \ | ||||
| 	$(OBJ)\asn1_TESTOptional.x			    \ | ||||
| 	$(OBJ)\asn1_TESTAlloc.x				    \ | ||||
| 	$(OBJ)\asn1_TESTAllocInner.x			    \ | ||||
| 	$(OBJ)\asn1_TESTBitString.x			    \ | ||||
| 	$(OBJ)\asn1_TESTCONTAINING.x			    \ | ||||
| 	$(OBJ)\asn1_TESTCONTAININGENCODEDBY.x		    \ | ||||
| 	$(OBJ)\asn1_TESTCONTAININGENCODEDBY2.x		    \ | ||||
| @@ -441,14 +451,21 @@ gen_files_test =					    \ | ||||
| 	$(OBJ)\asn1_TESTInteger2.x			    \ | ||||
| 	$(OBJ)\asn1_TESTInteger3.x			    \ | ||||
| 	$(OBJ)\asn1_TESTLargeTag.x			    \ | ||||
| 	$(OBJ)\asn1_TESTSeq.x				    \ | ||||
| 	$(OBJ)\asn1_TESTUSERCONSTRAINED.x		    \ | ||||
| 	$(OBJ)\asn1_TESTSeqOf.x				    \ | ||||
| 	$(OBJ)\asn1_TESTOSSize1.x			    \ | ||||
| 	$(OBJ)\asn1_TESTPreserve.x			    \ | ||||
| 	$(OBJ)\asn1_TESTSeq.x				    \ | ||||
| 	$(OBJ)\asn1_TESTSeqOf.x				    \ | ||||
| 	$(OBJ)\asn1_TESTSeqOf2.x			    \ | ||||
| 	$(OBJ)\asn1_TESTSeqOf3.x			    \ | ||||
| 	$(OBJ)\asn1_TESTSeqOfSeq.x			    \ | ||||
| 	$(OBJ)\asn1_TESTSeqOfSeq2.x			    \ | ||||
| 	$(OBJ)\asn1_TESTSeqOfSeq3.x			    \ | ||||
| 	$(OBJ)\asn1_TESTSeqSizeOf1.x			    \ | ||||
| 	$(OBJ)\asn1_TESTSeqSizeOf2.x			    \ | ||||
| 	$(OBJ)\asn1_TESTSeqSizeOf3.x			    \ | ||||
| 	$(OBJ)\asn1_TESTSeqSizeOf4.x | ||||
| 	$(OBJ)\asn1_TESTSeqSizeOf4.x			    \ | ||||
| 	$(OBJ)\asn1_TESTUSERCONSTRAINED.x		    \ | ||||
| 	$(OBJ)\asn1_TESTuint32.x | ||||
|  | ||||
| gen_files_digest =					    \ | ||||
| 	$(OBJ)\asn1_DigestError.x			    \ | ||||
| @@ -464,18 +481,22 @@ gen_files_digest =					    \ | ||||
| 	$(OBJ)\asn1_NTLMInit.x				    \ | ||||
| 	$(OBJ)\asn1_NTLMInitReply.x			    \ | ||||
| 	$(OBJ)\asn1_NTLMRequest.x			    \ | ||||
| 	$(OBJ)\asn1_NTLMResponse.x | ||||
| 	$(OBJ)\asn1_NTLMRequest2.x			    \ | ||||
| 	$(OBJ)\asn1_NTLMResponse.x			    \ | ||||
| 	$(OBJ)\asn1_NTLMReply.x | ||||
|  | ||||
| gen_files_kx509 =					    \ | ||||
| 	$(OBJ)\asn1_Kx509Response.x			    \ | ||||
| 	$(OBJ)\asn1_KX509_ERROR_CODE.x			    \ | ||||
| 	$(OBJ)\asn1_Kx509Request.x | ||||
|  | ||||
| ASN1_BINARIES =						    \ | ||||
| 	$(BINDIR)\asn1_compile.exe			    \ | ||||
| 	$(BINDIR)\asn1_print.exe			    \ | ||||
| 	$(LIBEXECDIR)\asn1_compile.exe			    \ | ||||
| 	$(LIBEXECDIR)\asn1_print.exe			    \ | ||||
| 	$(BINDIR)\asn1_gen.exe | ||||
|  | ||||
| $(BINDIR)\asn1_compile.exe:				    \ | ||||
| 	$(OBJ)\asn1parse.obj				    \ | ||||
| 	$(OBJ)\gen.obj					    \ | ||||
| 	$(OBJ)\gen_copy.obj				    \ | ||||
| 	$(OBJ)\gen_decode.obj				    \ | ||||
| @@ -484,10 +505,10 @@ $(BINDIR)\asn1_compile.exe:				    \ | ||||
| 	$(OBJ)\gen_glue.obj				    \ | ||||
| 	$(OBJ)\gen_length.obj				    \ | ||||
| 	$(OBJ)\gen_seq.obj				    \ | ||||
| 	$(OBJ)\gen_template.obj				    \ | ||||
| 	$(OBJ)\hash.obj					    \ | ||||
| 	$(OBJ)\lex.obj					    \ | ||||
| 	$(OBJ)\main.obj					    \ | ||||
| 	$(OBJ)\asn1parse.obj				    \ | ||||
| 	$(OBJ)\symbol.obj | ||||
| 	$(EXECONLINK) $(LIBROKEN) $(LIBVERS) | ||||
| 	$(_VC_MANIFEST_EMBED_EXE) | ||||
| @@ -675,25 +696,41 @@ $(gen_files_test) $(OBJ)\test_asn1.hx: $(BINDIR)\asn1_compile.exe test.asn1 | ||||
| 	|| ($(RM) $(OBJ)\test_asn1.h ; exit /b 1) | ||||
| 	cd $(SRCDIR) | ||||
|  | ||||
| INCFILES=$(INCDIR)\der.h $(INCDIR)\heim_asn1.h $(INCDIR)\der-protos.h \ | ||||
| INCFILES=			    \ | ||||
| 	$(INCDIR)\der.h		    \ | ||||
| 	$(INCDIR)\heim_asn1.h	    \ | ||||
| 	$(INCDIR)\der-protos.h	    \ | ||||
| 	$(INCDIR)\der-private.h	    \ | ||||
| 	$(INCDIR)\asn1-common.h	    \ | ||||
| 	$(INCDIR)\asn1-template.h   \ | ||||
| 	$(OBJ)\asn1_err.h | ||||
|  | ||||
| $(INCDIR)\der-protos.h: $(OBJ)\der-protos.h | ||||
|  | ||||
| GENINCFILES=	\ | ||||
| 	$(INCDIR)\asn1_err.h	\ | ||||
| 	$(INCDIR)\cms_asn1.h	\ | ||||
| 	$(INCDIR)\digest_asn1.h	\ | ||||
| 	$(INCDIR)\krb5_asn1.h	\ | ||||
| 	$(INCDIR)\kx509_asn1.h	\ | ||||
| 	$(INCDIR)\pkcs12_asn1.h	\ | ||||
| 	$(INCDIR)\pkcs8_asn1.h	\ | ||||
| 	$(INCDIR)\pkcs9_asn1.h	\ | ||||
| 	$(INCDIR)\pkinit_asn1.h	\ | ||||
| 	$(INCDIR)\rfc2459_asn1.h | ||||
| GENINCFILES=			    \ | ||||
| 	$(INCDIR)\asn1_err.h	    \ | ||||
| 	$(INCDIR)\cms_asn1.h	    \ | ||||
| 	$(INCDIR)\digest_asn1.h	    \ | ||||
| 	$(INCDIR)\krb5_asn1.h	    \ | ||||
| 	$(INCDIR)\kx509_asn1.h	    \ | ||||
| 	$(INCDIR)\pkcs12_asn1.h	    \ | ||||
| 	$(INCDIR)\pkcs8_asn1.h	    \ | ||||
| 	$(INCDIR)\pkcs9_asn1.h	    \ | ||||
| 	$(INCDIR)\pkinit_asn1.h	    \ | ||||
| 	$(INCDIR)\rfc2459_asn1.h    \ | ||||
| 	$(OBJ)\krb5_asn1-priv.h	    \ | ||||
| 	$(OBJ)\pkinit_asn1-priv.h   \ | ||||
| 	$(OBJ)\cms_asn1-priv.h	    \ | ||||
| 	$(OBJ)\rfc2459_asn1-priv.h  \ | ||||
| 	$(OBJ)\pkcs8_asn1-priv.h    \ | ||||
| 	$(OBJ)\pkcs9_asn1-priv.h    \ | ||||
| 	$(OBJ)\pkcs12_asn1-priv.h   \ | ||||
| 	$(OBJ)\digest_asn1-priv.h   \ | ||||
| 	$(OBJ)\kx509_asn1-priv.h    \ | ||||
| 	$(OBJ)\test_asn1.h	    \ | ||||
| 	$(OBJ)\test_asn1-priv.h | ||||
|  | ||||
| libasn1_SOURCES=	\ | ||||
| 	der-protos.h 	\ | ||||
| 	der_locl.h 	\ | ||||
| 	der.c		\ | ||||
| 	der.h		\ | ||||
| @@ -708,9 +745,12 @@ libasn1_SOURCES=	\ | ||||
| 	extra.c		\ | ||||
| 	timegm.c | ||||
|  | ||||
| $(OBJ)\der-protos.h: $(libasn1_SOURCES:der-protos.h=) | ||||
| $(OBJ)\der-protos.h: $(libasn1_SOURCES) | ||||
| 	$(PERL) ..\..\cf\make-proto.pl -q -P remove -o $(OBJ)\der-protos.h $(libasn1_SOURCES) || $(RM) $(OBJ)\der-protos.h | ||||
|  | ||||
| $(OBJ)\der-private.h: $(libasn1_SOURCES) | ||||
| 	$(PERL) ..\..\cf\make-proto.pl -q -P remove -p $(OBJ)\der-private.h $(libasn1_SOURCES) || $(RM) $(OBJ)\der-private.h | ||||
|  | ||||
| clean:: | ||||
| 	-$(RM) $(INCDIR)\der-protos.h | ||||
|  | ||||
|   | ||||
| @@ -739,7 +739,7 @@ define_type (int level, const char *name, const char *basename, Type *t, int typ | ||||
| 	 | ||||
| 		/* pad unused */ | ||||
| 		while (pos < m->val) { | ||||
| 		    asprintf (&n, "_unused%d:1;", pos); | ||||
| 		    asprintf (&n, "_unused%d:1", pos); | ||||
| 		    define_type (level + 1, n, newbasename, &i, FALSE, FALSE); | ||||
| 		    free(n); | ||||
| 		    pos++; | ||||
| @@ -755,7 +755,7 @@ define_type (int level, const char *name, const char *basename, Type *t, int typ | ||||
| 	    /* pad to 32 elements */ | ||||
| 	    while (pos < 32) { | ||||
| 		char *n; | ||||
| 		asprintf (&n, "_unused%d:1;", pos); | ||||
| 		asprintf (&n, "_unused%d:1", pos); | ||||
| 		define_type (level + 1, n, newbasename, &i, FALSE, FALSE); | ||||
| 		free(n); | ||||
| 		pos++; | ||||
|   | ||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| @@ -1,5 +1,6 @@ | ||||
| EXPORTS | ||||
| 	com_right | ||||
|         com_right_r | ||||
| 	free_error_table | ||||
| 	initialize_error_table_r | ||||
| 	add_to_error_table | ||||
| @@ -10,3 +11,4 @@ EXPORTS | ||||
| 	init_error_table | ||||
| 	reset_com_err_hook | ||||
| 	set_com_err_hook | ||||
|         _et_list            DATA | ||||
|   | ||||
| @@ -42,6 +42,7 @@ krb5src = \ | ||||
| 	krb5/aeap.c \ | ||||
| 	krb5/arcfour.c \ | ||||
| 	krb5/canonicalize_name.c \ | ||||
| 	krb5/creds.c \ | ||||
| 	krb5/ccache_name.c \ | ||||
| 	krb5/cfx.c \ | ||||
| 	krb5/cfx.h \ | ||||
| @@ -101,6 +102,7 @@ mechsrc = \ | ||||
| 	mech/gss_compare_name.c \ | ||||
| 	mech/gss_context_time.c \ | ||||
| 	mech/gss_create_empty_oid_set.c \ | ||||
| 	mech/gss_cred.c \ | ||||
| 	mech/gss_decapsulate_token.c \ | ||||
| 	mech/gss_delete_sec_context.c \ | ||||
| 	mech/gss_display_name.c \ | ||||
| @@ -219,19 +221,15 @@ $(gssapi_files:.x=.c): $$(@R).x | ||||
|  | ||||
| $(spnego_files:.x=.c): $$(@R).x | ||||
|  | ||||
| $(OBJ)\gssapi\gssapi_asn1.h: $(OBJ)\gssapi\gssapi_asn1.hx | ||||
| 	$(CP) $** $@ | ||||
|  | ||||
| $(OBJ)\spnego\spnego_asn1.h: $(OBJ)\spnego\spnego_asn1.hx | ||||
| 	$(CP) $** $@ | ||||
|  | ||||
| $(gssapi_files) $(OBJ)\gssapi\gssapi_asn1.hx: $(BINDIR)\asn1_compile.exe mech\gssapi.asn1 | ||||
| $(gssapi_files) $(OBJ)\gssapi\gssapi_asn1.hx $(OBJ)\gssapi\gssapi_asn1-priv.hx: \ | ||||
| $(BINDIR)\asn1_compile.exe mech\gssapi.asn1 | ||||
| 	cd $(OBJ)\gssapi | ||||
| 	$(BINDIR)\asn1_compile.exe $(SRCDIR)\mech\gssapi.asn1 gssapi_asn1 \ | ||||
| 	|| ( $(RM) $(OBJ)\gssapi\gssapi_asn1.h ; exit /b 1 ) | ||||
| 	cd $(SRCDIR) | ||||
|  | ||||
| $(spnego_files) $(OBJ)\spnego\spnego_asn1.hx: $(BINDIR)\asn1_compile.exe spnego\spnego.asn1 | ||||
| $(spnego_files) $(OBJ)\spnego\spnego_asn1.hx $(OBJ)\spnego\spnego_asn1-priv.hx: \ | ||||
| $(BINDIR)\asn1_compile.exe spnego\spnego.asn1 | ||||
| 	cd $(OBJ)\spnego | ||||
| 	$(BINDIR)\asn1_compile --sequence=MechTypeList $(SRCDIR)\spnego\spnego.asn1 spnego_asn1 \ | ||||
| 	|| ( $(RM) $(OBJ)\spnego\spnego_asn1.h ; exit /b 1 ) | ||||
| @@ -242,164 +240,168 @@ $(OBJ)\gkrb5_err.c $(OBJ)\gkrb5_err.h: krb5\gkrb5_err.et | ||||
| 	$(BINDIR)\compile_et.exe $(SRCDIR)\krb5\gkrb5_err.et | ||||
| 	cd $(SRCDIR) | ||||
|  | ||||
| INCFILES=	\ | ||||
| 	$(INCDIR)\gssapi.h	\ | ||||
| 	$(INCDIR)\gssapi\gssapi.h	\ | ||||
| 	$(INCDIR)\gssapi\gssapi_krb5.h	\ | ||||
| 	$(INCDIR)\gssapi\gssapi_ntlm.h	\ | ||||
| 	$(INCDIR)\gssapi\gssapi_spnego.h \ | ||||
| 	$(OBJ)\ntlm\ntlm-private.h	\ | ||||
| 	$(OBJ)\spnego\spnego-private.h	\ | ||||
| 	$(OBJ)\krb5\gsskrb5-private.h	\ | ||||
| 	$(OBJ)\gkrb5_err.h	\ | ||||
| 	$(OBJ)\gssapi\gssapi_asn1.h	\ | ||||
| 	$(OBJ)\spnego\spnego_asn1.h | ||||
| INCFILES=				\ | ||||
|     $(INCDIR)\gssapi.h			\ | ||||
|     $(INCDIR)\gssapi\gssapi.h		\ | ||||
|     $(INCDIR)\gssapi\gssapi_krb5.h	\ | ||||
|     $(INCDIR)\gssapi\gssapi_ntlm.h	\ | ||||
|     $(INCDIR)\gssapi\gssapi_spnego.h	\ | ||||
|     $(OBJ)\ntlm\ntlm-private.h		\ | ||||
|     $(OBJ)\spnego\spnego-private.h	\ | ||||
|     $(OBJ)\krb5\gsskrb5-private.h	\ | ||||
|     $(OBJ)\gkrb5_err.h			\ | ||||
|     $(OBJ)\gssapi\gssapi_asn1.h		\ | ||||
|     $(OBJ)\gssapi\gssapi_asn1-priv.h	\ | ||||
|     $(OBJ)\spnego\spnego_asn1.h		\ | ||||
|     $(OBJ)\spnego\spnego_asn1-priv.h | ||||
|  | ||||
| all:: $(INCFILES) | ||||
|  | ||||
| libgssapi_OBJs= \ | ||||
| 	$(OBJ)\krb5\8003.obj \ | ||||
| 	$(OBJ)\krb5\accept_sec_context.obj \ | ||||
| 	$(OBJ)\krb5\acquire_cred.obj \ | ||||
| 	$(OBJ)\krb5\add_cred.obj \ | ||||
| 	$(OBJ)\krb5\address_to_krb5addr.obj \ | ||||
| 	$(OBJ)\krb5\aeap.obj \ | ||||
| 	$(OBJ)\krb5\arcfour.obj \ | ||||
| 	$(OBJ)\krb5\canonicalize_name.obj \ | ||||
| 	$(OBJ)\krb5\ccache_name.obj \ | ||||
| 	$(OBJ)\krb5\cfx.obj \ | ||||
| 	$(OBJ)\krb5\compare_name.obj \ | ||||
| 	$(OBJ)\krb5\compat.obj \ | ||||
| 	$(OBJ)\krb5\context_time.obj \ | ||||
| 	$(OBJ)\krb5\copy_ccache.obj \ | ||||
| 	$(OBJ)\krb5\decapsulate.obj \ | ||||
| 	$(OBJ)\krb5\delete_sec_context.obj \ | ||||
| 	$(OBJ)\krb5\display_name.obj \ | ||||
| 	$(OBJ)\krb5\display_status.obj \ | ||||
| 	$(OBJ)\krb5\duplicate_name.obj \ | ||||
| 	$(OBJ)\krb5\encapsulate.obj \ | ||||
| 	$(OBJ)\krb5\export_name.obj \ | ||||
| 	$(OBJ)\krb5\export_sec_context.obj \ | ||||
| 	$(OBJ)\krb5\external.obj \ | ||||
| 	$(OBJ)\krb5\get_mic.obj \ | ||||
| 	$(OBJ)\krb5\import_name.obj \ | ||||
| 	$(OBJ)\krb5\import_sec_context.obj \ | ||||
| 	$(OBJ)\krb5\indicate_mechs.obj \ | ||||
| 	$(OBJ)\krb5\init.obj \ | ||||
| 	$(OBJ)\krb5\init_sec_context.obj \ | ||||
| 	$(OBJ)\krb5\inquire_context.obj \ | ||||
| 	$(OBJ)\krb5\inquire_cred.obj \ | ||||
| 	$(OBJ)\krb5\inquire_cred_by_mech.obj \ | ||||
| 	$(OBJ)\krb5\inquire_cred_by_oid.obj \ | ||||
| 	$(OBJ)\krb5\inquire_mechs_for_name.obj \ | ||||
| 	$(OBJ)\krb5\inquire_names_for_mech.obj \ | ||||
| 	$(OBJ)\krb5\inquire_sec_context_by_oid.obj \ | ||||
| 	$(OBJ)\krb5\process_context_token.obj \ | ||||
| 	$(OBJ)\krb5\prf.obj \ | ||||
| 	$(OBJ)\krb5\release_buffer.obj \ | ||||
| 	$(OBJ)\krb5\release_cred.obj \ | ||||
| 	$(OBJ)\krb5\release_name.obj \ | ||||
| 	$(OBJ)\krb5\sequence.obj \ | ||||
| 	$(OBJ)\krb5\store_cred.obj \ | ||||
| 	$(OBJ)\krb5\set_cred_option.obj \ | ||||
| 	$(OBJ)\krb5\set_sec_context_option.obj \ | ||||
| 	$(OBJ)\krb5\ticket_flags.obj \ | ||||
| 	$(OBJ)\krb5\unwrap.obj \ | ||||
| 	$(OBJ)\krb5\verify_mic.obj \ | ||||
| 	$(OBJ)\krb5\wrap.obj \ | ||||
| 	$(OBJ)\mech\context.obj \ | ||||
| 	$(OBJ)\mech\doxygen.obj \ | ||||
| 	$(OBJ)\mech\gss_accept_sec_context.obj \ | ||||
| 	$(OBJ)\mech\gss_acquire_cred.obj \ | ||||
| 	$(OBJ)\mech\gss_add_cred.obj \ | ||||
| 	$(OBJ)\mech\gss_add_oid_set_member.obj \ | ||||
| 	$(OBJ)\mech\gss_aeap.obj \ | ||||
| 	$(OBJ)\mech\gss_buffer_set.obj \ | ||||
| 	$(OBJ)\mech\gss_canonicalize_name.obj \ | ||||
| 	$(OBJ)\mech\gss_compare_name.obj \ | ||||
| 	$(OBJ)\mech\gss_context_time.obj \ | ||||
| 	$(OBJ)\mech\gss_create_empty_oid_set.obj \ | ||||
| 	$(OBJ)\mech\gss_decapsulate_token.obj \ | ||||
| 	$(OBJ)\mech\gss_delete_sec_context.obj \ | ||||
| 	$(OBJ)\mech\gss_display_name.obj \ | ||||
| 	$(OBJ)\mech\gss_display_status.obj \ | ||||
| 	$(OBJ)\mech\gss_duplicate_name.obj \ | ||||
| 	$(OBJ)\mech\gss_duplicate_oid.obj \ | ||||
| 	$(OBJ)\mech\gss_encapsulate_token.obj \ | ||||
| 	$(OBJ)\mech\gss_export_name.obj \ | ||||
| 	$(OBJ)\mech\gss_export_sec_context.obj \ | ||||
| 	$(OBJ)\mech\gss_get_mic.obj \ | ||||
| 	$(OBJ)\mech\gss_import_name.obj \ | ||||
| 	$(OBJ)\mech\gss_import_sec_context.obj \ | ||||
| 	$(OBJ)\mech\gss_indicate_mechs.obj \ | ||||
| 	$(OBJ)\mech\gss_init_sec_context.obj \ | ||||
| 	$(OBJ)\mech\gss_inquire_context.obj \ | ||||
| 	$(OBJ)\mech\gss_inquire_cred.obj \ | ||||
| 	$(OBJ)\mech\gss_inquire_cred_by_mech.obj \ | ||||
| 	$(OBJ)\mech\gss_inquire_cred_by_oid.obj \ | ||||
| 	$(OBJ)\mech\gss_inquire_mechs_for_name.obj \ | ||||
| 	$(OBJ)\mech\gss_inquire_names_for_mech.obj \ | ||||
| 	$(OBJ)\mech\gss_krb5.obj \ | ||||
| 	$(OBJ)\mech\gss_mech_switch.obj \ | ||||
| 	$(OBJ)\mech\gss_names.obj \ | ||||
| 	$(OBJ)\mech\gss_oid_equal.obj \ | ||||
| 	$(OBJ)\mech\gss_oid_to_str.obj \ | ||||
| 	$(OBJ)\mech\gss_process_context_token.obj \ | ||||
| 	$(OBJ)\mech\gss_pseudo_random.obj \ | ||||
| 	$(OBJ)\mech\gss_release_buffer.obj \ | ||||
| 	$(OBJ)\mech\gss_release_cred.obj \ | ||||
| 	$(OBJ)\mech\gss_release_name.obj \ | ||||
| 	$(OBJ)\mech\gss_release_oid.obj \ | ||||
| 	$(OBJ)\mech\gss_release_oid_set.obj \ | ||||
| 	$(OBJ)\mech\gss_seal.obj \ | ||||
| 	$(OBJ)\mech\gss_set_cred_option.obj \ | ||||
| 	$(OBJ)\mech\gss_set_sec_context_option.obj \ | ||||
| 	$(OBJ)\mech\gss_sign.obj \ | ||||
| 	$(OBJ)\mech\gss_store_cred.obj \ | ||||
| 	$(OBJ)\mech\gss_test_oid_set_member.obj \ | ||||
| 	$(OBJ)\mech\gss_unseal.obj \ | ||||
| 	$(OBJ)\mech\gss_unwrap.obj \ | ||||
| 	$(OBJ)\mech\gss_utils.obj \ | ||||
| 	$(OBJ)\mech\gss_verify.obj \ | ||||
| 	$(OBJ)\mech\gss_verify_mic.obj \ | ||||
| 	$(OBJ)\mech\gss_wrap.obj \ | ||||
| 	$(OBJ)\mech\gss_wrap_size_limit.obj \ | ||||
| 	$(OBJ)\mech\gss_inquire_sec_context_by_oid.obj \ | ||||
| 	$(OBJ)\ntlm\accept_sec_context.obj \ | ||||
| 	$(OBJ)\ntlm\acquire_cred.obj \ | ||||
| 	$(OBJ)\ntlm\add_cred.obj \ | ||||
| 	$(OBJ)\ntlm\canonicalize_name.obj \ | ||||
| 	$(OBJ)\ntlm\compare_name.obj \ | ||||
| 	$(OBJ)\ntlm\context_time.obj \ | ||||
| 	$(OBJ)\ntlm\crypto.obj \ | ||||
| 	$(OBJ)\ntlm\delete_sec_context.obj \ | ||||
| 	$(OBJ)\ntlm\display_name.obj \ | ||||
| 	$(OBJ)\ntlm\display_status.obj \ | ||||
| 	$(OBJ)\ntlm\duplicate_name.obj \ | ||||
| 	$(OBJ)\ntlm\export_name.obj \ | ||||
| 	$(OBJ)\ntlm\export_sec_context.obj \ | ||||
| 	$(OBJ)\ntlm\external.obj \ | ||||
| 	$(OBJ)\ntlm\import_name.obj \ | ||||
| 	$(OBJ)\ntlm\import_sec_context.obj \ | ||||
| 	$(OBJ)\ntlm\indicate_mechs.obj \ | ||||
| 	$(OBJ)\ntlm\init_sec_context.obj \ | ||||
| 	$(OBJ)\ntlm\inquire_context.obj \ | ||||
| 	$(OBJ)\ntlm\inquire_cred.obj \ | ||||
| 	$(OBJ)\ntlm\inquire_cred_by_mech.obj \ | ||||
| 	$(OBJ)\ntlm\inquire_mechs_for_name.obj \ | ||||
| 	$(OBJ)\ntlm\inquire_names_for_mech.obj \ | ||||
| 	$(OBJ)\ntlm\process_context_token.obj \ | ||||
| 	$(OBJ)\ntlm\release_cred.obj \ | ||||
| 	$(OBJ)\ntlm\release_name.obj \ | ||||
| 	$(OBJ)\ntlm\kdc.obj \ | ||||
| 	$(OBJ)\spnego\accept_sec_context.obj \ | ||||
| 	$(OBJ)\spnego\compat.obj \ | ||||
| 	$(OBJ)\spnego\context_stubs.obj \ | ||||
| 	$(OBJ)\spnego\cred_stubs.obj \ | ||||
| 	$(OBJ)\spnego\external.obj \ | ||||
| 	$(OBJ)\spnego\init_sec_context.obj \ | ||||
| libgssapi_OBJs = \ | ||||
| 	$(OBJ)\krb5/8003.obj \ | ||||
| 	$(OBJ)\krb5/accept_sec_context.obj \ | ||||
| 	$(OBJ)\krb5/acquire_cred.obj \ | ||||
| 	$(OBJ)\krb5/add_cred.obj \ | ||||
| 	$(OBJ)\krb5/address_to_krb5addr.obj \ | ||||
| 	$(OBJ)\krb5/aeap.obj \ | ||||
| 	$(OBJ)\krb5/arcfour.obj \ | ||||
| 	$(OBJ)\krb5/canonicalize_name.obj \ | ||||
| 	$(OBJ)\krb5/creds.obj \ | ||||
| 	$(OBJ)\krb5/ccache_name.obj \ | ||||
| 	$(OBJ)\krb5/cfx.obj \ | ||||
| 	$(OBJ)\krb5/compare_name.obj \ | ||||
| 	$(OBJ)\krb5/compat.obj \ | ||||
| 	$(OBJ)\krb5/context_time.obj \ | ||||
| 	$(OBJ)\krb5/copy_ccache.obj \ | ||||
| 	$(OBJ)\krb5/decapsulate.obj \ | ||||
| 	$(OBJ)\krb5/delete_sec_context.obj \ | ||||
| 	$(OBJ)\krb5/display_name.obj \ | ||||
| 	$(OBJ)\krb5/display_status.obj \ | ||||
| 	$(OBJ)\krb5/duplicate_name.obj \ | ||||
| 	$(OBJ)\krb5/encapsulate.obj \ | ||||
| 	$(OBJ)\krb5/export_name.obj \ | ||||
| 	$(OBJ)\krb5/export_sec_context.obj \ | ||||
| 	$(OBJ)\krb5/external.obj \ | ||||
| 	$(OBJ)\krb5/get_mic.obj \ | ||||
| 	$(OBJ)\krb5/import_name.obj \ | ||||
| 	$(OBJ)\krb5/import_sec_context.obj \ | ||||
| 	$(OBJ)\krb5/indicate_mechs.obj \ | ||||
| 	$(OBJ)\krb5/init.obj \ | ||||
| 	$(OBJ)\krb5/init_sec_context.obj \ | ||||
| 	$(OBJ)\krb5/inquire_context.obj \ | ||||
| 	$(OBJ)\krb5/inquire_cred.obj \ | ||||
| 	$(OBJ)\krb5/inquire_cred_by_mech.obj \ | ||||
| 	$(OBJ)\krb5/inquire_cred_by_oid.obj \ | ||||
| 	$(OBJ)\krb5/inquire_mechs_for_name.obj \ | ||||
| 	$(OBJ)\krb5/inquire_names_for_mech.obj \ | ||||
| 	$(OBJ)\krb5/inquire_sec_context_by_oid.obj \ | ||||
| 	$(OBJ)\krb5/process_context_token.obj \ | ||||
| 	$(OBJ)\krb5/prf.obj \ | ||||
| 	$(OBJ)\krb5/release_buffer.obj \ | ||||
| 	$(OBJ)\krb5/release_cred.obj \ | ||||
| 	$(OBJ)\krb5/release_name.obj \ | ||||
| 	$(OBJ)\krb5/sequence.obj \ | ||||
| 	$(OBJ)\krb5/store_cred.obj \ | ||||
| 	$(OBJ)\krb5/set_cred_option.obj \ | ||||
| 	$(OBJ)\krb5/set_sec_context_option.obj \ | ||||
| 	$(OBJ)\krb5/ticket_flags.obj \ | ||||
| 	$(OBJ)\krb5/unwrap.obj \ | ||||
| 	$(OBJ)\krb5/verify_mic.obj \ | ||||
| 	$(OBJ)\krb5/wrap.obj \ | ||||
| 	$(OBJ)\mech/context.obj \ | ||||
| 	$(OBJ)\mech/doxygen.obj \ | ||||
| 	$(OBJ)\mech/gss_accept_sec_context.obj \ | ||||
| 	$(OBJ)\mech/gss_acquire_cred.obj \ | ||||
| 	$(OBJ)\mech/gss_add_cred.obj \ | ||||
| 	$(OBJ)\mech/gss_add_oid_set_member.obj \ | ||||
| 	$(OBJ)\mech/gss_aeap.obj \ | ||||
| 	$(OBJ)\mech/gss_buffer_set.obj \ | ||||
| 	$(OBJ)\mech/gss_canonicalize_name.obj \ | ||||
| 	$(OBJ)\mech/gss_compare_name.obj \ | ||||
| 	$(OBJ)\mech/gss_context_time.obj \ | ||||
| 	$(OBJ)\mech/gss_create_empty_oid_set.obj \ | ||||
| 	$(OBJ)\mech/gss_cred.obj \ | ||||
| 	$(OBJ)\mech/gss_decapsulate_token.obj \ | ||||
| 	$(OBJ)\mech/gss_delete_sec_context.obj \ | ||||
| 	$(OBJ)\mech/gss_display_name.obj \ | ||||
| 	$(OBJ)\mech/gss_display_status.obj \ | ||||
| 	$(OBJ)\mech/gss_duplicate_name.obj \ | ||||
| 	$(OBJ)\mech/gss_duplicate_oid.obj \ | ||||
| 	$(OBJ)\mech/gss_encapsulate_token.obj \ | ||||
| 	$(OBJ)\mech/gss_export_name.obj \ | ||||
| 	$(OBJ)\mech/gss_export_sec_context.obj \ | ||||
| 	$(OBJ)\mech/gss_get_mic.obj \ | ||||
| 	$(OBJ)\mech/gss_import_name.obj \ | ||||
| 	$(OBJ)\mech/gss_import_sec_context.obj \ | ||||
| 	$(OBJ)\mech/gss_indicate_mechs.obj \ | ||||
| 	$(OBJ)\mech/gss_init_sec_context.obj \ | ||||
| 	$(OBJ)\mech/gss_inquire_context.obj \ | ||||
| 	$(OBJ)\mech/gss_inquire_cred.obj \ | ||||
| 	$(OBJ)\mech/gss_inquire_cred_by_mech.obj \ | ||||
| 	$(OBJ)\mech/gss_inquire_cred_by_oid.obj \ | ||||
| 	$(OBJ)\mech/gss_inquire_mechs_for_name.obj \ | ||||
| 	$(OBJ)\mech/gss_inquire_names_for_mech.obj \ | ||||
| 	$(OBJ)\mech/gss_krb5.obj \ | ||||
| 	$(OBJ)\mech/gss_mech_switch.obj \ | ||||
| 	$(OBJ)\mech/gss_names.obj \ | ||||
| 	$(OBJ)\mech/gss_oid_equal.obj \ | ||||
| 	$(OBJ)\mech/gss_oid_to_str.obj \ | ||||
| 	$(OBJ)\mech/gss_process_context_token.obj \ | ||||
| 	$(OBJ)\mech/gss_pseudo_random.obj \ | ||||
| 	$(OBJ)\mech/gss_release_buffer.obj \ | ||||
| 	$(OBJ)\mech/gss_release_cred.obj \ | ||||
| 	$(OBJ)\mech/gss_release_name.obj \ | ||||
| 	$(OBJ)\mech/gss_release_oid.obj \ | ||||
| 	$(OBJ)\mech/gss_release_oid_set.obj \ | ||||
| 	$(OBJ)\mech/gss_seal.obj \ | ||||
| 	$(OBJ)\mech/gss_set_cred_option.obj \ | ||||
| 	$(OBJ)\mech/gss_set_sec_context_option.obj \ | ||||
| 	$(OBJ)\mech/gss_sign.obj \ | ||||
| 	$(OBJ)\mech/gss_store_cred.obj \ | ||||
| 	$(OBJ)\mech/gss_test_oid_set_member.obj \ | ||||
| 	$(OBJ)\mech/gss_unseal.obj \ | ||||
| 	$(OBJ)\mech/gss_unwrap.obj \ | ||||
| 	$(OBJ)\mech/gss_utils.obj \ | ||||
| 	$(OBJ)\mech/gss_verify.obj \ | ||||
| 	$(OBJ)\mech/gss_verify_mic.obj \ | ||||
| 	$(OBJ)\mech/gss_wrap.obj \ | ||||
| 	$(OBJ)\mech/gss_wrap_size_limit.obj \ | ||||
| 	$(OBJ)\mech/gss_inquire_sec_context_by_oid.obj \ | ||||
| 	$(OBJ)\spnego/accept_sec_context.obj \ | ||||
| 	$(OBJ)\spnego/compat.obj \ | ||||
| 	$(OBJ)\spnego/context_stubs.obj \ | ||||
| 	$(OBJ)\spnego/cred_stubs.obj \ | ||||
| 	$(OBJ)\spnego/external.obj \ | ||||
| 	$(OBJ)\spnego/init_sec_context.obj \ | ||||
| 	$(OBJ)\ntlm/accept_sec_context.obj \ | ||||
| 	$(OBJ)\ntlm/acquire_cred.obj \ | ||||
| 	$(OBJ)\ntlm/add_cred.obj \ | ||||
| 	$(OBJ)\ntlm/canonicalize_name.obj \ | ||||
| 	$(OBJ)\ntlm/compare_name.obj \ | ||||
| 	$(OBJ)\ntlm/context_time.obj \ | ||||
| 	$(OBJ)\ntlm/crypto.obj \ | ||||
| 	$(OBJ)\ntlm/delete_sec_context.obj \ | ||||
| 	$(OBJ)\ntlm/display_name.obj \ | ||||
| 	$(OBJ)\ntlm/display_status.obj \ | ||||
| 	$(OBJ)\ntlm/duplicate_name.obj \ | ||||
| 	$(OBJ)\ntlm/export_name.obj \ | ||||
| 	$(OBJ)\ntlm/export_sec_context.obj \ | ||||
| 	$(OBJ)\ntlm/external.obj \ | ||||
| 	$(OBJ)\ntlm/import_name.obj \ | ||||
| 	$(OBJ)\ntlm/import_sec_context.obj \ | ||||
| 	$(OBJ)\ntlm/indicate_mechs.obj \ | ||||
| 	$(OBJ)\ntlm/init_sec_context.obj \ | ||||
| 	$(OBJ)\ntlm/inquire_context.obj \ | ||||
| 	$(OBJ)\ntlm/inquire_cred.obj \ | ||||
| 	$(OBJ)\ntlm/inquire_cred_by_mech.obj \ | ||||
| 	$(OBJ)\ntlm/inquire_mechs_for_name.obj \ | ||||
| 	$(OBJ)\ntlm/inquire_names_for_mech.obj \ | ||||
| 	$(OBJ)\ntlm/process_context_token.obj \ | ||||
| 	$(OBJ)\ntlm/release_cred.obj \ | ||||
| 	$(OBJ)\ntlm/release_name.obj \ | ||||
| 	$(OBJ)\ntlm/kdc.obj \ | ||||
| 	$(OBJ)\gkrb5_err.obj \ | ||||
| 	$(spnego_files:.x=.obj)	\ | ||||
| 	$(spnego_files:.x=.obj) \ | ||||
| 	$(gssapi_files:.x=.obj) | ||||
|  | ||||
| GCOPTS=-I$(SRCDIR) -I$(OBJ) -Igssapi -DBUILD_GSSAPI_LIB | ||||
| @@ -446,6 +448,12 @@ GCOPTS=-I$(SRCDIR) -I$(OBJ) -Igssapi -DBUILD_GSSAPI_LIB | ||||
| {gssapi}.h{$(INCDIR)\gssapi}.h: | ||||
| 	$(CP) $** $@ | ||||
|  | ||||
| {$(OBJ)\gssapi}.hx{$(OBJ)\gssapi}.h: | ||||
| 	$(CP) $** $@ | ||||
|  | ||||
| {$(OBJ)\spnego}.hx{$(OBJ)\spnego}.h: | ||||
| 	$(CP) $** $@ | ||||
|  | ||||
| LIBGSSAPI_LIBS=\ | ||||
| 	$(LIBROKEN)	\ | ||||
| 	$(LIBASN1)	\ | ||||
| @@ -516,3 +524,14 @@ clean:: | ||||
| 	-$(RM) $(OBJ)\spnego\*.* | ||||
| 	-$(RM) $(OBJ)\mech\*.* | ||||
| 	-$(RM) $(OBJ)\gssapi\*.* | ||||
|  | ||||
| !ifdef ELISP | ||||
| # This macro invocation is used to update the libgssapi_OBJs | ||||
| # definition below (generate-obj-macro is defined in maint.el): | ||||
|  | ||||
| (generate-obj-macro "libgssapi_OBJs" | ||||
| 	            (concat "\t$(OBJ)\\gkrb5_err.obj \\\n" | ||||
|                             "\t$(spnego_files:.x=.obj) \\\n" | ||||
|                             "\t$(gssapi_files:.x=.obj)") | ||||
|                     "krb5src" "mechsrc" "spnegosrc" "ntlmsrc") | ||||
| !endif | ||||
|   | ||||
| @@ -45,10 +45,12 @@ | ||||
|  | ||||
| #ifndef BUILD_GSSAPI_LIB | ||||
| #if defined(_WIN32) | ||||
| #define GSSAPI_LIB_FUNCTION _stdcall __declspec(dllimport) | ||||
| #define GSSAPI_LIB_FUNCTION __declspec(dllimport) | ||||
| #define GSSAPI_LIB_CALL     __stdcall | ||||
| #define GSSAPI_LIB_VARIABLE __declspec(dllimport) | ||||
| #else | ||||
| #define GSSAPI_LIB_FUNCTION | ||||
| #define GSSAPI_LIB_CALL | ||||
| #define GSSAPI_LIB_VARIABLE | ||||
| #endif | ||||
| #endif | ||||
|   | ||||
| @@ -106,27 +106,27 @@ gss_krb5_ccache_name(OM_uint32 * /*minor_status*/, | ||||
| 		     const char ** /*out_name */); | ||||
|  | ||||
| OM_uint32 GSSAPI_LIB_FUNCTION gsskrb5_register_acceptor_identity | ||||
|         (const char */*identity*/); | ||||
|         (const char * /*identity*/); | ||||
|  | ||||
| OM_uint32 GSSAPI_LIB_FUNCTION krb5_gss_register_acceptor_identity | ||||
| 	(const char */*identity*/); | ||||
| 	(const char * /*identity*/); | ||||
|  | ||||
| OM_uint32 GSSAPI_LIB_FUNCTION gss_krb5_copy_ccache | ||||
| 	(OM_uint32 */*minor*/, | ||||
| 	(OM_uint32 * /*minor*/, | ||||
| 	 gss_cred_id_t /*cred*/, | ||||
| 	 struct krb5_ccache_data */*out*/); | ||||
| 	 struct krb5_ccache_data * /*out*/); | ||||
|  | ||||
| OM_uint32 GSSAPI_LIB_FUNCTION | ||||
| gss_krb5_import_cred(OM_uint32 */*minor*/, | ||||
| gss_krb5_import_cred(OM_uint32 * /*minor*/, | ||||
| 		     struct krb5_ccache_data * /*in*/, | ||||
| 		     struct Principal * /*keytab_principal*/, | ||||
| 		     struct krb5_keytab_data * /*keytab*/, | ||||
| 		     gss_cred_id_t */*out*/); | ||||
| 		     gss_cred_id_t * /*out*/); | ||||
|  | ||||
| OM_uint32 GSSAPI_LIB_FUNCTION gss_krb5_get_tkt_flags | ||||
| 	(OM_uint32 */*minor*/, | ||||
| 	(OM_uint32 * /*minor*/, | ||||
| 	 gss_ctx_id_t /*context_handle*/, | ||||
| 	 OM_uint32 */*tkt_flags*/); | ||||
| 	 OM_uint32 * /*tkt_flags*/); | ||||
|  | ||||
| OM_uint32 GSSAPI_LIB_FUNCTION | ||||
| gsskrb5_extract_authz_data_from_sec_context | ||||
|   | ||||
							
								
								
									
										100
									
								
								lib/gssapi/libgssapi-exports.def
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										100
									
								
								lib/gssapi/libgssapi-exports.def
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,100 @@ | ||||
| EXPORTS | ||||
| 	GSS_KRB5_MECHANISM | ||||
| 	GSS_NTLM_MECHANISM | ||||
| 	GSS_SPNEGO_MECHANISM | ||||
| 	GSS_SASL_DIGEST_MD5_MECHANISM | ||||
| 	GSS_C_NT_ANONYMOUS | ||||
| 	GSS_C_NT_EXPORT_NAME | ||||
| 	GSS_C_NT_HOSTBASED_SERVICE | ||||
| 	GSS_C_NT_HOSTBASED_SERVICE_X | ||||
| 	GSS_C_NT_MACHINE_UID_NAME | ||||
| 	GSS_C_NT_STRING_UID_NAME | ||||
| 	GSS_C_NT_USER_NAME | ||||
| 	GSS_KRB5_NT_PRINCIPAL_NAME | ||||
| 	GSS_KRB5_NT_USER_NAME | ||||
| 	GSS_KRB5_NT_MACHINE_UID_NAME | ||||
| 	GSS_KRB5_NT_STRING_UID_NAME | ||||
| 	gss_accept_sec_context | ||||
| 	gss_acquire_cred | ||||
| 	gss_add_buffer_set_member | ||||
| 	gss_add_cred | ||||
| 	gss_add_oid_set_member | ||||
| 	gss_canonicalize_name | ||||
| 	gss_compare_name | ||||
| 	gss_context_query_attributes | ||||
| 	gss_context_time | ||||
| 	gss_create_empty_buffer_set | ||||
| 	gss_create_empty_oid_set | ||||
| 	gss_decapsulate_token | ||||
| 	gss_delete_sec_context | ||||
| 	gss_display_name | ||||
| 	gss_display_status | ||||
| 	gss_duplicate_name | ||||
| 	gss_duplicate_oid | ||||
| 	gss_encapsulate_token | ||||
| 	gss_export_name | ||||
| 	gss_export_sec_context | ||||
| 	gss_get_mic | ||||
| 	gss_import_name | ||||
| 	gss_import_sec_context | ||||
| 	gss_indicate_mechs | ||||
| 	gss_init_sec_context | ||||
| 	gss_inquire_context | ||||
| 	gss_inquire_cred | ||||
| 	gss_inquire_cred_by_mech | ||||
| 	gss_inquire_cred_by_oid | ||||
| 	gss_inquire_mechs_for_name | ||||
| 	gss_inquire_names_for_mech | ||||
| 	gss_inquire_sec_context_by_oid | ||||
| 	gss_inquire_sec_context_by_oid | ||||
| 	gss_krb5_ccache_name | ||||
| 	gss_krb5_copy_ccache | ||||
| 	gss_krb5_export_lucid_sec_context | ||||
| 	gss_krb5_free_lucid_sec_context | ||||
| 	gss_krb5_get_tkt_flags | ||||
| 	gss_krb5_import_cred | ||||
| 	gss_krb5_set_allowable_enctypes | ||||
| 	gss_mg_collect_error | ||||
| 	gss_oid_equal | ||||
| 	gss_oid_to_str | ||||
| 	gss_process_context_token | ||||
| 	gss_pseudo_random | ||||
| 	gss_release_buffer | ||||
| 	gss_release_buffer_set | ||||
| 	gss_release_cred | ||||
| 	gss_release_iov_buffer | ||||
| 	gss_release_name | ||||
| 	gss_release_oid | ||||
| 	gss_release_oid_set | ||||
| 	gss_seal | ||||
| 	gss_set_cred_option | ||||
| 	gss_set_sec_context_option | ||||
| 	gss_sign | ||||
| 	gss_test_oid_set_member | ||||
| 	gss_unseal | ||||
| 	gss_unwrap | ||||
| 	gss_unwrap_iov | ||||
| 	gss_verify | ||||
| 	gss_verify_mic | ||||
| 	gss_wrap | ||||
| 	gss_wrap_iov | ||||
| 	gss_wrap_iov_length | ||||
| 	gss_wrap_size_limit | ||||
| 	gsskrb5_extract_authtime_from_sec_context | ||||
| 	gsskrb5_extract_authz_data_from_sec_context | ||||
| 	gsskrb5_extract_service_keyblock | ||||
| 	gsskrb5_get_initiator_subkey | ||||
| 	gsskrb5_get_subkey | ||||
| 	gsskrb5_get_time_offset | ||||
| 	gsskrb5_register_acceptor_identity | ||||
| 	gsskrb5_set_default_realm | ||||
| 	gsskrb5_set_dns_canonicalize | ||||
| 	gsskrb5_set_send_to_kdc | ||||
| 	gsskrb5_set_time_offset | ||||
| 	krb5_gss_register_acceptor_identity | ||||
|  | ||||
| ; _gsskrb5cfx_ are really internal symbols, but export | ||||
| ; then now to make testing easier. | ||||
| 	_gsskrb5cfx_wrap_length_cfx | ||||
| 	_gssapi_wrap_size_cfx | ||||
|  | ||||
| @@ -41,17 +41,17 @@ OM_uint32 | ||||
| _gss_ntlm_allocate_ctx(OM_uint32 *minor_status, ntlm_ctx *ctx) | ||||
| { | ||||
|     OM_uint32 maj_stat; | ||||
|     struct ntlm_server_interface *interface = NULL; | ||||
|     struct ntlm_server_interface *ns_interface = NULL; | ||||
|      | ||||
| #ifdef DIGEST | ||||
|     interface = &ntlmsspi_kdc_digest; | ||||
|     ns_interface = &ntlmsspi_kdc_digest; | ||||
| #endif | ||||
|     if (interface == NULL) | ||||
|     if (ns_interface == NULL) | ||||
| 	return GSS_S_FAILURE; | ||||
|      | ||||
|     *ctx = calloc(1, sizeof(**ctx)); | ||||
|  | ||||
|     (*ctx)->server = interface; | ||||
|     (*ctx)->server = ns_interface; | ||||
|  | ||||
|     maj_stat = (*(*ctx)->server->nsi_init)(minor_status, &(*ctx)->ictx); | ||||
|     if (maj_stat != GSS_S_COMPLETE) | ||||
|   | ||||
| @@ -44,12 +44,13 @@ | ||||
| #include <string.h> | ||||
| #include <errno.h> | ||||
|  | ||||
| #include <roken.h> | ||||
|  | ||||
| #include <gssapi.h> | ||||
| #include <gssapi_ntlm.h> | ||||
| #include <gssapi_mech.h> | ||||
|  | ||||
| #include <krb5.h> | ||||
| #include <roken.h> | ||||
| #include <heim_threads.h> | ||||
|  | ||||
| #include <heimntlm.h> | ||||
|   | ||||
| @@ -44,6 +44,8 @@ | ||||
| #include <sys/param.h> | ||||
| #endif | ||||
|  | ||||
| #include <roken.h> | ||||
|  | ||||
| #ifdef HAVE_PTHREAD_H | ||||
| #include <pthread.h> | ||||
| #endif | ||||
| @@ -69,8 +71,6 @@ | ||||
| #include "utils.h" | ||||
| #include <der.h> | ||||
|  | ||||
| #include <roken.h> | ||||
|  | ||||
| #define ALLOC(X, N) (X) = calloc((N), sizeof(*(X))) | ||||
|  | ||||
| typedef struct { | ||||
|   | ||||
| @@ -31,7 +31,7 @@ | ||||
|  | ||||
| RELDIR=lib\hcrypto | ||||
|  | ||||
| AUXCFLAGS=$(AUXCFLAGS) -DKRB5 -I$(INCDIR)\hcrypto | ||||
| AUXCFLAGS=$(AUXCFLAGS) -DKRB5 -I$(HCRYPTOINCLUDEDIR) | ||||
|  | ||||
| !include ../../windows/NTMakefile.w32 | ||||
|  | ||||
| @@ -45,8 +45,13 @@ INCFILES=	\ | ||||
| 	$(HCRYPTOINCLUDEDIR)\des.h	\ | ||||
| 	$(HCRYPTOINCLUDEDIR)\dh.h	\ | ||||
| 	$(HCRYPTOINCLUDEDIR)\dsa.h	\ | ||||
| 	$(HCRYPTOINCLUDEDIR)\ec.h	\ | ||||
| 	$(HCRYPTOINCLUDEDIR)\ecdh.h	\ | ||||
| 	$(HCRYPTOINCLUDEDIR)\ecdsa.h	\ | ||||
| 	$(HCRYPTOINCLUDEDIR)\engine.h	\ | ||||
| 	$(HCRYPTOINCLUDEDIR)\evp.h	\ | ||||
| 	$(HCRYPTOINCLUDEDIR)\evp-hcrypto.h	\ | ||||
| 	$(HCRYPTOINCLUDEDIR)\evp-cc.h	\ | ||||
| 	$(HCRYPTOINCLUDEDIR)\hmac.h	\ | ||||
| 	$(HCRYPTOINCLUDEDIR)\md2.h	\ | ||||
| 	$(HCRYPTOINCLUDEDIR)\md4.h	\ | ||||
| @@ -74,8 +79,8 @@ all:: $(INCFILES) | ||||
|  | ||||
| # libhcrypto | ||||
|  | ||||
| libhcrypt_OBJs = \ | ||||
| 	$(OBJ)\imath.obj		\ | ||||
| libhcrypto_OBJs = \ | ||||
| 	$(OBJ)\imath.obj	\ | ||||
| 	$(OBJ)\iprime.obj	\ | ||||
| 	$(OBJ)\aes.obj		\ | ||||
| 	$(OBJ)\bn.obj		\ | ||||
| @@ -87,16 +92,14 @@ libhcrypt_OBJs = \ | ||||
| 	$(OBJ)\dsa.obj		\ | ||||
| 	$(OBJ)\evp.obj		\ | ||||
| 	$(OBJ)\evp-hcrypto.obj	\ | ||||
| 	$(OBJ)\evp-aes-cts.obj	\ | ||||
| 	$(OBJ)\engine.obj	\ | ||||
| 	$(OBJ)\hmac.obj		\ | ||||
| 	$(OBJ)\md2.obj		\ | ||||
| 	$(OBJ)\md4.obj		\ | ||||
| 	$(OBJ)\md5.obj		\ | ||||
| 	$(OBJ)\pkcs5.obj		\ | ||||
| 	$(OBJ)\pkcs5.obj	\ | ||||
| 	$(OBJ)\pkcs12.obj	\ | ||||
| 	$(OBJ)\rand-fortuna.obj	\ | ||||
| 	$(OBJ)\rand-timer.obj	\ | ||||
| 	$(OBJ)\rand-w32.obj	\ | ||||
| 	$(OBJ)\rand.obj		\ | ||||
| 	$(OBJ)\rc2.obj		\ | ||||
| 	$(OBJ)\rc4.obj		\ | ||||
| @@ -113,13 +116,13 @@ libhcrypt_OBJs = \ | ||||
|  | ||||
| $(LIBHCRYPTO): $(BINDIR)\libhcrypto.dll | ||||
|  | ||||
| $(BINDIR)\libhcrypto.dll: $(libhcrypt_OBJs) $(LIBROKEN) $(LIBASN1) | ||||
| $(BINDIR)\libhcrypto.dll: $(libhcrypto_OBJs) $(LIBROKEN) $(LIBASN1) | ||||
| 	$(DLLGUILINK) -def:libhcrypto-exports.def -implib:$(LIBHCRYPTO) | ||||
| 	$(DLLPREP) | ||||
|  | ||||
| !else | ||||
|  | ||||
| $(LIBHCRYPTO): $(libhcrypt_OBJs) | ||||
| $(LIBHCRYPTO): $(libhcrypto_OBJs) | ||||
| 	$(LIBCON) | ||||
|  | ||||
| !endif | ||||
| @@ -136,27 +139,28 @@ clean:: | ||||
|  | ||||
| TESTLIB=$(OBJ)\libhctest.lib | ||||
|  | ||||
| $(TESTLIB): \ | ||||
| 	$(OBJ)\imath.obj	\ | ||||
| 	$(OBJ)\des.obj	\ | ||||
| $(TESTLIB):		    \ | ||||
| 	$(OBJ)\imath.obj    \ | ||||
| 	$(OBJ)\des.obj	    \ | ||||
| 	$(OBJ)\ui.obj | ||||
| 	$(LIBCON) | ||||
|  | ||||
| test-binaries:	\ | ||||
| 	$(OBJ)\destest.exe \ | ||||
| 	$(OBJ)\mdtest.exe \ | ||||
| 	$(OBJ)\rc2test.exe  \ | ||||
| 	$(OBJ)\rctest.exe \ | ||||
| 	$(OBJ)\test_bn.exe \ | ||||
| 	$(OBJ)\test_cipher.exe \ | ||||
| 	$(OBJ)\test_engine_dso.exe \ | ||||
| 	$(OBJ)\test_hmac.exe \ | ||||
| 	$(OBJ)\test_imath.exe \ | ||||
| 	$(OBJ)\test_pkcs5.exe \ | ||||
| 	$(OBJ)\test_pkcs12.exe	\ | ||||
| 	$(OBJ)\test_rsa.exe	\ | ||||
| 	$(OBJ)\test_dh.exe	\ | ||||
| 	$(OBJ)\test_rand.exe	\ | ||||
| test-binaries:				\ | ||||
| 	$(OBJ)\destest.exe		\ | ||||
| 	$(OBJ)\example_evp_cipher.exe	\ | ||||
| 	$(OBJ)\mdtest.exe		\ | ||||
| 	$(OBJ)\rc2test.exe		\ | ||||
| 	$(OBJ)\rctest.exe		\ | ||||
| 	$(OBJ)\test_bn.exe		\ | ||||
| 	$(OBJ)\test_cipher.exe		\ | ||||
| 	$(OBJ)\test_engine_dso.exe	\ | ||||
| 	$(OBJ)\test_hmac.exe		\ | ||||
| 	$(OBJ)\test_imath.exe		\ | ||||
| 	$(OBJ)\test_pkcs5.exe		\ | ||||
| 	$(OBJ)\test_pkcs12.exe		\ | ||||
| 	$(OBJ)\test_rsa.exe		\ | ||||
| 	$(OBJ)\test_dh.exe		\ | ||||
| 	$(OBJ)\test_rand.exe		\ | ||||
| 	$(OBJ)\test_crypto.sh | ||||
|  | ||||
| $(OBJ)\destest.exe: $(OBJ)\destest.obj $(TESTLIB) $(LIBROKEN) | ||||
|   | ||||
| @@ -138,14 +138,6 @@ EXPORTS | ||||
| 	hc_EVP_aes_128_cbc | ||||
| 	hc_EVP_aes_192_cbc | ||||
| 	hc_EVP_aes_256_cbc | ||||
| 	hc_EVP_hcrypto_aes_128_cbc | ||||
| 	hc_EVP_hcrypto_aes_192_cbc | ||||
| 	hc_EVP_hcrypto_aes_256_cbc | ||||
| 	hc_EVP_hcrypto_aes_128_cts | ||||
| 	hc_EVP_hcrypto_aes_256_cts | ||||
| ;	hc_EVP_hcrypto_aes_cts_128_cbc | ||||
| ;	hc_EVP_hcrypto_aes_cts_192_cbc | ||||
| ;	hc_EVP_hcrypto_aes_cts_256_cbc | ||||
| 	hc_EVP_des_cbc | ||||
| 	hc_EVP_des_ede3_cbc | ||||
| 	hc_EVP_camellia_128_cbc | ||||
| @@ -165,6 +157,33 @@ EXPORTS | ||||
| 	hc_EVP_sha | ||||
| 	hc_EVP_sha1 | ||||
| 	hc_EVP_sha256 | ||||
|  | ||||
| ;	hc_EVP_cc_md2 | ||||
| ;	hc_EVP_cc_md4 | ||||
| ;	hc_EVP_cc_md5 | ||||
| ;	hc_EVP_cc_sha1 | ||||
| ;	hc_EVP_cc_sha256 | ||||
| ;	hc_EVP_cc_des_ede3_cbc | ||||
| ;	hc_EVP_cc_aes_128_cbc | ||||
| ;	hc_EVP_cc_aes_192_cbc | ||||
| ;	hc_EVP_cc_aes_256_cbc | ||||
|  | ||||
| 	hc_EVP_hcrypto_md2 | ||||
| 	hc_EVP_hcrypto_md4 | ||||
| 	hc_EVP_hcrypto_md5 | ||||
| 	hc_EVP_hcrypto_sha1 | ||||
| 	hc_EVP_hcrypto_sha256 | ||||
| 	hc_EVP_hcrypto_des_ede3_cbc | ||||
| 	hc_EVP_hcrypto_aes_128_cbc | ||||
| 	hc_EVP_hcrypto_aes_192_cbc | ||||
| 	hc_EVP_hcrypto_aes_256_cbc | ||||
| 	hc_EVP_hcrypto_rc4 | ||||
| 	hc_EVP_hcrypto_rc4_40 | ||||
|  | ||||
| ;	hc_EVP_hcrypto_aes_128_cts | ||||
| ;	hc_EVP_hcrypto_aes_192_cts | ||||
| ;	hc_EVP_hcrypto_aes_256_cts | ||||
|  | ||||
| 	hc_HMAC | ||||
| 	hc_HMAC_CTX_cleanup | ||||
| 	hc_HMAC_CTX_init | ||||
| @@ -193,7 +212,7 @@ EXPORTS | ||||
| ;	hc_RAND_egd_bytes | ||||
| ;	hc_RAND_egd_method | ||||
| 	hc_RAND_file_name | ||||
| 	hc_RAND_fortuna_method | ||||
| ;	hc_RAND_fortuna_method | ||||
| 	hc_RAND_get_rand_method | ||||
| 	hc_RAND_load_file | ||||
| 	hc_RAND_pseudo_bytes | ||||
| @@ -203,6 +222,7 @@ EXPORTS | ||||
| 	hc_RAND_status | ||||
| ;	hc_RAND_unix_method | ||||
| ;	hc_RAND_timer_method | ||||
|         hc_RAND_w32crypto_method | ||||
| 	hc_RAND_write_file | ||||
| 	hc_RC2_cbc_encrypt | ||||
| 	hc_RC2_decryptc | ||||
| @@ -242,5 +262,12 @@ EXPORTS | ||||
| 	hc_d2i_RSAPrivateKey | ||||
| 	hc_i2d_RSAPrivateKey | ||||
| 	hc_i2d_RSAPublicKey | ||||
| 	hc_d2i_RSAPublicKey | ||||
| 	hc_EVP_CIPHER_CTX_ctrl | ||||
| 	hc_EVP_CIPHER_CTX_rand_key | ||||
| 	hc_EVP_CIPHER_CTX_set_key_length | ||||
| 	hc_EVP_hcrypto_rc2_40_cbc | ||||
| 	hc_EVP_hcrypto_camellia_128_cbc | ||||
| 	hc_EVP_CipherUpdate | ||||
| 	hc_EVP_CipherFinal_ex | ||||
|  | ||||
|   | ||||
							
								
								
									
										134
									
								
								lib/hcrypto/rand-w32.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										134
									
								
								lib/hcrypto/rand-w32.c
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,134 @@ | ||||
| /* | ||||
|  * Copyright (c) 2006 Kungliga Tekniska Högskolan | ||||
|  * (Royal Institute of Technology, Stockholm, Sweden). | ||||
|  * 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. | ||||
|  * | ||||
|  * 3. Neither the name of the Institute nor the names of its contributors | ||||
|  *    may be used to endorse or promote products derived from this software | ||||
|  *    without specific prior written permission. | ||||
|  * | ||||
|  * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE 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 INSTITUTE 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. | ||||
|  */ | ||||
|  | ||||
| #include <config.h> | ||||
| #include <roken.h> | ||||
|  | ||||
| #include <wincrypt.h> | ||||
|  | ||||
| #include <stdio.h> | ||||
| #include <stdlib.h> | ||||
| #include <rand.h> | ||||
| #include <heim_threads.h> | ||||
|  | ||||
| #include "randi.h" | ||||
|  | ||||
| volatile static HCRYPTPROV g_cryptprovider = 0; | ||||
|  | ||||
| static HCRYPTPROV | ||||
| _hc_CryptProvider(void) | ||||
| { | ||||
|     BOOL res; | ||||
|     HCRYPTPROV cryptprovider = 0; | ||||
|  | ||||
|     if (g_cryptprovider != 0) | ||||
| 	return g_cryptprovider; | ||||
|  | ||||
|     res = CryptAcquireContext(&cryptprovider, NULL, | ||||
| 			      MS_ENHANCED_PROV, PROV_RSA_FULL, | ||||
| 			      0); | ||||
|  | ||||
|     if (GetLastError() == NTE_BAD_KEYSET) { | ||||
|         if(!res) | ||||
|             res = CryptAcquireContext(&cryptprovider, NULL, | ||||
|                                       MS_ENHANCED_PROV, PROV_RSA_FULL, | ||||
|                                       CRYPT_NEWKEYSET); | ||||
|     } | ||||
|  | ||||
|     if (res && | ||||
|         InterlockedCompareExchange(&g_cryptprovider, cryptprovider, 0) != 0) { | ||||
|  | ||||
|         CryptReleaseContext(cryptprovider, 0); | ||||
|         cryptprovider = g_cryptprovider; | ||||
|     } | ||||
|  | ||||
|     return cryptprovider; | ||||
| } | ||||
|  | ||||
| /* | ||||
|  * | ||||
|  */ | ||||
|  | ||||
|  | ||||
| static void | ||||
| w32crypto_seed(const void *indata, int size) | ||||
| { | ||||
| } | ||||
|  | ||||
|  | ||||
| static int | ||||
| w32crypto_bytes(unsigned char *outdata, int size) | ||||
| { | ||||
|     if (CryptGenRandom(_hc_CryptProvider(), size, outdata)) | ||||
| 	return 0; | ||||
|     return 1; | ||||
| } | ||||
|  | ||||
| static void | ||||
| w32crypto_cleanup(void) | ||||
| { | ||||
| } | ||||
|  | ||||
| static void | ||||
| w32crypto_add(const void *indata, int size, double entropi) | ||||
| { | ||||
| } | ||||
|  | ||||
| static int | ||||
| w32crypto_pseudorand(unsigned char *outdata, int size) | ||||
| { | ||||
|     return 1; | ||||
| } | ||||
|  | ||||
| static int | ||||
| w32crypto_status(void) | ||||
| { | ||||
|     if (_hc_CryptProvider() == 0) | ||||
| 	return 0; | ||||
|     return 1; | ||||
| } | ||||
|  | ||||
| const RAND_METHOD hc_rand_w32crypto_method = { | ||||
|     w32crypto_seed, | ||||
|     w32crypto_bytes, | ||||
|     w32crypto_cleanup, | ||||
|     w32crypto_add, | ||||
|     w32crypto_pseudorand, | ||||
|     w32crypto_status | ||||
| }; | ||||
|  | ||||
| const RAND_METHOD * | ||||
| RAND_w32crypto_method(void) | ||||
| { | ||||
|     return &hc_rand_w32crypto_method; | ||||
| } | ||||
| @@ -60,7 +60,9 @@ init_method(void) | ||||
| { | ||||
|     if (selected_meth != NULL) | ||||
| 	return; | ||||
| #ifdef __APPLE__ | ||||
| #if defined(_WIN32) | ||||
|     selected_meth = &hc_rand_w32crypto_method; | ||||
| #elif defined(__APPLE__) | ||||
|     selected_meth = &hc_rand_unix_method; | ||||
| #else | ||||
|     selected_meth = &hc_rand_fortuna_method; | ||||
|   | ||||
| @@ -62,6 +62,7 @@ typedef struct RAND_METHOD RAND_METHOD; | ||||
| #define RAND_fortuna_method hc_RAND_fortuna_method | ||||
| #define RAND_egd_method hc_RAND_egd_method | ||||
| #define RAND_unix_method hc_RAND_unix_method | ||||
| #define RAND_w32crypto_method hc_RAND_w32crypto_method | ||||
|  | ||||
| /* | ||||
|  * | ||||
|   | ||||
| @@ -42,6 +42,7 @@ extern const RAND_METHOD hc_rand_fortuna_method; | ||||
| extern const RAND_METHOD hc_rand_unix_method; | ||||
| extern const RAND_METHOD hc_rand_egd_method; | ||||
| extern const RAND_METHOD hc_rand_timer_method; | ||||
| extern const RAND_METHOD hc_rand_w32crypto_method; | ||||
|  | ||||
| const RAND_METHOD * RAND_timer_method(void); | ||||
|  | ||||
|   | ||||
| @@ -52,7 +52,7 @@ gen_files_hdb = \ | ||||
| 	$(OBJ)\asn1_hdb_entry_alias.x \ | ||||
| 	$(OBJ)\asn1_hdb_keyset.x | ||||
|  | ||||
| $(gen_files_hdb) $(OBJ)\hdb_asn1.hx: $(BINDIR)\asn1_compile.exe hdb.asn1 | ||||
| $(gen_files_hdb) $(OBJ)\hdb_asn1.hx $(OBJ)\hdb_asn1-priv.hx: $(BINDIR)\asn1_compile.exe hdb.asn1 | ||||
| 	cd $(OBJ) | ||||
| 	$(BINDIR)\asn1_compile.exe $(SRCDIR)\hdb.asn1 hdb_asn1 | ||||
| 	cd $(SRCDIR) | ||||
| @@ -90,6 +90,8 @@ dist_libhdb_la_SOURCES =			\ | ||||
| 	$(ldap_c)				\ | ||||
| 	hdb.c					\ | ||||
| 	hdb-sqlite.c				\ | ||||
| 	hdb-keytab.c				\ | ||||
| 	hdb-mitdb.c				\ | ||||
| 	hdb_locl.h				\ | ||||
| 	keys.c					\ | ||||
| 	keytab.c				\ | ||||
| @@ -98,7 +100,7 @@ dist_libhdb_la_SOURCES =			\ | ||||
| 	ndbm.c					\ | ||||
| 	print.c | ||||
|  | ||||
| libhdb_OBJs= \ | ||||
| libhdb_OBJs = \ | ||||
| 	$(OBJ)\common.obj	\ | ||||
| 	$(OBJ)\db.obj		\ | ||||
| 	$(OBJ)\db3.obj		\ | ||||
| @@ -106,6 +108,8 @@ libhdb_OBJs= \ | ||||
| 	$(ldap)			\ | ||||
| 	$(OBJ)\hdb.obj		\ | ||||
| 	$(OBJ)\hdb-sqlite.obj	\ | ||||
| 	$(OBJ)\hdb-keytab.obj	\ | ||||
| 	$(OBJ)\hdb-mitdb.obj	\ | ||||
| 	$(OBJ)\keys.obj		\ | ||||
| 	$(OBJ)\keytab.obj	\ | ||||
| 	$(OBJ)\dbinfo.obj	\ | ||||
| @@ -128,12 +132,13 @@ $(OBJ)\hdb-private.h: $(dist_libhdb_la_SOURCES) | ||||
| 	$(PERL) ../../cf/make-proto.pl -q -P remote -p $@ $(dist_libhdb_la_SOURCES) \ | ||||
| 		|| $(RM) $@ | ||||
|  | ||||
| INCFILES=\ | ||||
| 	$(INCDIR)\hdb.h \ | ||||
| 	$(INCDIR)\hdb-protos.h \ | ||||
| INCFILES=			\ | ||||
| 	$(INCDIR)\hdb.h		\ | ||||
| 	$(INCDIR)\hdb-protos.h	\ | ||||
| 	$(OBJ)\hdb-private.h	\ | ||||
| 	$(INCDIR)\hdb_err.h \ | ||||
| 	$(INCDIR)\hdb_asn1.h | ||||
| 	$(INCDIR)\hdb_err.h	\ | ||||
| 	$(INCDIR)\hdb_asn1.h	\ | ||||
| 	$(INCDIR)\hdb_asn1-priv.h | ||||
|  | ||||
| !ifndef STATICLIBS | ||||
|  | ||||
|   | ||||
| @@ -191,7 +191,10 @@ INCFILES=			    \ | ||||
| 	$(INCDIR)\hx509_err.h	    \ | ||||
| 	$(INCDIR)\ocsp_asn1.h	    \ | ||||
| 	$(INCDIR)\pkcs10_asn1.h	    \ | ||||
| 	$(INCDIR)\crmf_asn1.h | ||||
| 	$(INCDIR)\crmf_asn1.h	    \ | ||||
| 	$(OBJ)\ocsp_asn1-priv.h	    \ | ||||
| 	$(OBJ)\pkcs10_asn1-priv.h   \ | ||||
| 	$(OBJ)\crmf_asn1-priv.h | ||||
|  | ||||
| hxtool.c: $(OBJ)\hxtool-commands.h | ||||
|  | ||||
| @@ -240,4 +243,3 @@ all:: $(INCFILES) $(LIBHX509) $(BINDIR)\hxtool.exe | ||||
|  | ||||
| clean:: | ||||
| 	-$(RM) $(BINDIR)\hxtool.exe | ||||
|  | ||||
|   | ||||
| @@ -113,9 +113,7 @@ dir_iter_start(hx509_context context, | ||||
| 	free(d); | ||||
| 	return errno; | ||||
|     } | ||||
| #ifndef _WIN32 | ||||
|     rk_cloexec(dirfd(d->dir)); | ||||
| #endif | ||||
|     rk_cloexec_dir(d->dir); | ||||
|     d->certs = NULL; | ||||
|     d->iter = NULL; | ||||
|  | ||||
|   | ||||
| @@ -81,12 +81,14 @@ EXPORTS | ||||
| 	hx509_certs_add | ||||
| 	hx509_certs_append | ||||
| 	hx509_certs_end_seq | ||||
| 	hx509_certs_ref | ||||
| 	hx509_certs_filter | ||||
| 	hx509_certs_find | ||||
| 	hx509_certs_free | ||||
| 	hx509_certs_info | ||||
| 	hx509_certs_init | ||||
| 	hx509_certs_iter | ||||
| ;	hx509_certs_iter | ||||
| 	hx509_certs_iter_f | ||||
| 	hx509_certs_merge | ||||
| 	hx509_certs_next_cert | ||||
| 	hx509_certs_start_seq | ||||
| @@ -176,6 +178,7 @@ EXPORTS | ||||
| 	hx509_pem_read | ||||
| 	hx509_pem_write | ||||
| 	hx509_print_stdout | ||||
| 	hx509_print_cert | ||||
| 	hx509_prompt_hidden | ||||
| 	hx509_query_alloc | ||||
| 	hx509_query_free | ||||
|   | ||||
| @@ -53,6 +53,8 @@ set_funcs(kadm5_server_context *c) | ||||
|     SET(c, rename_principal); | ||||
| } | ||||
|  | ||||
| #ifndef NO_UNIX_SOCKETS | ||||
|  | ||||
| static void | ||||
| set_socket_name(krb5_context context, struct sockaddr_un *un) | ||||
| { | ||||
| @@ -61,7 +63,17 @@ set_socket_name(krb5_context context, struct sockaddr_un *un) | ||||
|     memset(un, 0, sizeof(*un)); | ||||
|     un->sun_family = AF_UNIX; | ||||
|     strlcpy (un->sun_path, fn, sizeof(un->sun_path)); | ||||
|  | ||||
| } | ||||
| #else | ||||
|  | ||||
| static void | ||||
| set_socket_info(krb5_context context, struct addrinfo **info) | ||||
| { | ||||
|     kadm5_log_signal_socket_info(context, 0, info); | ||||
| } | ||||
|  | ||||
| #endif | ||||
|  | ||||
| static kadm5_ret_t | ||||
| find_db_spec(kadm5_server_context *ctx) | ||||
| @@ -115,7 +127,11 @@ find_db_spec(kadm5_server_context *ctx) | ||||
|     if (ctx->log_context.log_file == NULL) | ||||
| 	asprintf(&ctx->log_context.log_file, "%s/log", hdb_db_dir(context)); | ||||
|  | ||||
| #ifndef NO_UNIX_SOCKETS | ||||
|     set_socket_name(context, &ctx->log_context.socket_name); | ||||
| #else | ||||
|     set_socket_info(context, &ctx->log_context.socket_info); | ||||
| #endif | ||||
|  | ||||
|     return 0; | ||||
| } | ||||
|   | ||||
| @@ -56,7 +56,13 @@ static void | ||||
| destroy_kadm5_log_context (kadm5_log_context *c) | ||||
| { | ||||
|     free (c->log_file); | ||||
|     close (c->socket_fd); | ||||
|     rk_closesocket (c->socket_fd); | ||||
| #ifndef NO_UNIX_SOCKETS | ||||
|     if (c->socket_info) { | ||||
| 	freeaddrinfo(c->socket_info); | ||||
| 	c->socket_info = NULL; | ||||
|     } | ||||
| #endif | ||||
| } | ||||
|  | ||||
| /* | ||||
|   | ||||
| @@ -61,7 +61,7 @@ add_tl_data(kadm5_principal_ent_t ent, int16_t type, | ||||
|     return 0; | ||||
| } | ||||
|  | ||||
| krb5_ssize_t KRB5_LIB_FUNCTION | ||||
| KRB5_LIB_FUNCTION krb5_ssize_t KRB5_LIB_CALL | ||||
| _krb5_put_int(void *buffer, unsigned long value, size_t size); /* XXX */ | ||||
|  | ||||
| kadm5_ret_t | ||||
|   | ||||
| @@ -33,9 +33,15 @@ | ||||
|  | ||||
| #include "kadm5_locl.h" | ||||
| #include <sys/types.h> | ||||
| #ifdef HAVE_SYS_SOCKET_H | ||||
| #include <sys/socket.h> | ||||
| #endif | ||||
| #ifdef HAVE_NETINET_IN_H | ||||
| #include <netinet/in.h> | ||||
| #endif | ||||
| #ifdef HAVE_NETDB_H | ||||
| #include <netdb.h> | ||||
| #endif | ||||
|  | ||||
| RCSID("$Id$"); | ||||
|  | ||||
|   | ||||
| @@ -55,7 +55,11 @@ kadm5_s_init_with_context(krb5_context context, | ||||
|     assert(ctx->config.stash_file != NULL); | ||||
|     assert(ctx->config.acl_file != NULL); | ||||
|     assert(ctx->log_context.log_file != NULL); | ||||
| #ifndef NO_UNIX_SOCKETS | ||||
|     assert(ctx->log_context.socket_name.sun_path[0] != '\0'); | ||||
| #else | ||||
|     assert(ctx->log_context.socket_info != NULL); | ||||
| #endif | ||||
|  | ||||
|     ret = hdb_create(ctx->context, &ctx->db, ctx->config.dbname); | ||||
|     if(ret) | ||||
| @@ -67,7 +71,13 @@ kadm5_s_init_with_context(krb5_context context, | ||||
|  | ||||
|     ctx->log_context.log_fd   = -1; | ||||
|  | ||||
| #ifndef NO_UNIX_SOCKETS | ||||
|     ctx->log_context.socket_fd = socket (AF_UNIX, SOCK_DGRAM, 0); | ||||
| #else | ||||
|     ctx->log_context.socket_fd = socket (ctx->log_context.socket_info->ai_family, | ||||
| 					 ctx->log_context.socket_info->ai_socktype, | ||||
| 					 ctx->log_context.socket_info->ai_protocol); | ||||
| #endif | ||||
|  | ||||
|     ret = krb5_parse_name(ctx->context, client_name, &ctx->caller); | ||||
|     if(ret) | ||||
|   | ||||
| @@ -63,7 +63,11 @@ setup_signal(void) | ||||
| #else | ||||
|     signal(SIGINT, sigterm); | ||||
|     signal(SIGTERM, sigterm); | ||||
| #ifndef NO_SIGXCPU | ||||
|     signal(SIGXCPU, sigterm); | ||||
| #endif | ||||
| #ifndef NO_SIGPIPE | ||||
|     signal(SIGPIPE, SIG_IGN); | ||||
| #endif | ||||
| #endif | ||||
| } | ||||
|   | ||||
| @@ -45,12 +45,13 @@ static int time_before_gone; | ||||
|  | ||||
| const char *master_hostname; | ||||
|  | ||||
| static int | ||||
| static krb5_socket_t | ||||
| make_signal_socket (krb5_context context) | ||||
| { | ||||
| #ifndef NO_UNIX_SOCKETS | ||||
|     struct sockaddr_un addr; | ||||
|     const char *fn; | ||||
|     int fd; | ||||
|     krb5_socket_t fd; | ||||
|  | ||||
|     fn = kadm5_log_signal_socket(context); | ||||
|  | ||||
| @@ -64,18 +65,32 @@ make_signal_socket (krb5_context context) | ||||
|     if (bind (fd, (struct sockaddr *)&addr, sizeof(addr)) < 0) | ||||
| 	krb5_err (context, 1, errno, "bind %s", addr.sun_path); | ||||
|     return fd; | ||||
| #else | ||||
|     struct addrinfo *ai = NULL; | ||||
|     krb5_socket_t fd; | ||||
|  | ||||
|     kadm5_log_signal_socket_info(context, 1, &ai); | ||||
|  | ||||
|     fd = socket(ai->ai_family, ai->ai_socktype, ai->ai_protocol); | ||||
|     if (rk_IS_BAD_SOCKET(fd)) | ||||
| 	krb5_err (context, 1, rk_SOCK_ERRNO, "socket AF=%d", ai->ai_family); | ||||
|  | ||||
|     if (rk_IS_SOCKET_ERROR( bind (fd, ai->ai_addr, ai->ai_addrlen) )) | ||||
| 	krb5_err (context, 1, rk_SOCK_ERRNO, "bind"); | ||||
|     return fd; | ||||
| #endif | ||||
| } | ||||
|  | ||||
| static int | ||||
| static krb5_socket_t | ||||
| make_listen_socket (krb5_context context, const char *port_str) | ||||
| { | ||||
|     int fd; | ||||
|     krb5_socket_t fd; | ||||
|     int one = 1; | ||||
|     struct sockaddr_in addr; | ||||
|  | ||||
|     fd = socket (AF_INET, SOCK_STREAM, 0); | ||||
|     if (fd < 0) | ||||
| 	krb5_err (context, 1, errno, "socket AF_INET"); | ||||
|     if (rk_IS_BAD_SOCKET(fd)) | ||||
| 	krb5_err (context, 1, rk_SOCK_ERRNO, "socket AF_INET"); | ||||
|     setsockopt (fd, SOL_SOCKET, SO_REUSEADDR, (void *)&one, sizeof(one)); | ||||
|     memset (&addr, 0, sizeof(addr)); | ||||
|     addr.sin_family = AF_INET; | ||||
| @@ -105,7 +120,7 @@ make_listen_socket (krb5_context context, const char *port_str) | ||||
| } | ||||
|  | ||||
| struct slave { | ||||
|     int fd; | ||||
|     krb5_socket_t fd; | ||||
|     struct sockaddr_in addr; | ||||
|     char *name; | ||||
|     krb5_auth_context ac; | ||||
| @@ -180,9 +195,9 @@ slave_dead(krb5_context context, slave *s) | ||||
| { | ||||
|     krb5_warnx(context, "slave %s dead", s->name); | ||||
|  | ||||
|     if (s->fd >= 0) { | ||||
| 	close (s->fd); | ||||
| 	s->fd = -1; | ||||
|     if (!rk_IS_BAD_SOCKET(s->fd)) { | ||||
| 	rk_closesocket (s->fd); | ||||
| 	s->fd = rk_INVALID_SOCKET; | ||||
|     } | ||||
|     s->flags |= SLAVE_F_DEAD; | ||||
|     slave_seen(s); | ||||
| @@ -193,8 +208,8 @@ remove_slave (krb5_context context, slave *s, slave **root) | ||||
| { | ||||
|     slave **p; | ||||
|  | ||||
|     if (s->fd >= 0) | ||||
| 	close (s->fd); | ||||
|     if (!rk_IS_BAD_SOCKET(s->fd)) | ||||
| 	rk_closesocket (s->fd); | ||||
|     if (s->name) | ||||
| 	free (s->name); | ||||
|     if (s->ac) | ||||
| @@ -209,7 +224,8 @@ remove_slave (krb5_context context, slave *s, slave **root) | ||||
| } | ||||
|  | ||||
| static void | ||||
| add_slave (krb5_context context, krb5_keytab keytab, slave **root, int fd) | ||||
| add_slave (krb5_context context, krb5_keytab keytab, slave **root, | ||||
| 	   krb5_socket_t fd) | ||||
| { | ||||
|     krb5_principal server; | ||||
|     krb5_error_code ret; | ||||
| @@ -228,8 +244,8 @@ add_slave (krb5_context context, krb5_keytab keytab, slave **root, int fd) | ||||
|  | ||||
|     addr_len = sizeof(s->addr); | ||||
|     s->fd = accept (fd, (struct sockaddr *)&s->addr, &addr_len); | ||||
|     if (s->fd < 0) { | ||||
| 	krb5_warn (context, errno, "accept"); | ||||
|     if (rk_IS_BAD_SOCKET(s->fd)) { | ||||
| 	krb5_warn (context, rk_SOCK_ERRNO, "accept"); | ||||
| 	goto error; | ||||
|     } | ||||
|     if (master_hostname) | ||||
| @@ -294,7 +310,7 @@ error: | ||||
|  | ||||
| struct prop_context { | ||||
|     krb5_auth_context auth_context; | ||||
|     int fd; | ||||
|     krb5_socket_t fd; | ||||
| }; | ||||
|  | ||||
| static int | ||||
| @@ -744,7 +760,7 @@ main(int argc, char **argv) | ||||
|     void *kadm_handle; | ||||
|     kadm5_server_context *server_context; | ||||
|     kadm5_config_params conf; | ||||
|     int signal_fd, listen_fd; | ||||
|     krb5_socket_t signal_fd, listen_fd; | ||||
|     int log_fd; | ||||
|     slave *slaves = NULL; | ||||
|     uint32_t current_version = 0, old_version = 0; | ||||
| @@ -837,8 +853,10 @@ main(int argc, char **argv) | ||||
| 	struct timeval to = {30, 0}; | ||||
| 	uint32_t vers; | ||||
|  | ||||
| #ifndef NO_LIMIT_FD_SETSIZE | ||||
| 	if (signal_fd >= FD_SETSIZE || listen_fd >= FD_SETSIZE) | ||||
| 	    krb5_errx (context, 1, "fd too large"); | ||||
| #endif | ||||
|  | ||||
| 	FD_ZERO(&readset); | ||||
| 	FD_SET(signal_fd, &readset); | ||||
| @@ -880,7 +898,11 @@ main(int argc, char **argv) | ||||
| 	} | ||||
|  | ||||
| 	if (ret && FD_ISSET(signal_fd, &readset)) { | ||||
| #ifndef NO_UNIX_SOCKETS | ||||
| 	    struct sockaddr_un peer_addr; | ||||
| #else | ||||
| 	    struct sockaddr_storage peer_addr; | ||||
| #endif | ||||
| 	    socklen_t peer_len = sizeof(peer_addr); | ||||
|  | ||||
| 	    if(recvfrom(signal_fd, (void *)&vers, sizeof(vers), 0, | ||||
| @@ -931,8 +953,11 @@ main(int argc, char **argv) | ||||
| 	write_stats(context, slaves, current_version); | ||||
|     } | ||||
|  | ||||
|     if(exit_flag == SIGXCPU) | ||||
|     if (0) ; | ||||
| #ifndef NO_SIGXCPU | ||||
|     else if(exit_flag == SIGXCPU) | ||||
| 	krb5_warnx(context, "%s CPU time limit exceeded", getprogname()); | ||||
| #endif | ||||
|     else if(exit_flag == SIGINT || exit_flag == SIGTERM) | ||||
| 	krb5_warnx(context, "%s terminated", getprogname()); | ||||
|     else | ||||
|   | ||||
| @@ -657,8 +657,10 @@ main(int argc, char **argv) | ||||
| 	    fd_set readset; | ||||
| 	    struct timeval to; | ||||
|  | ||||
| #ifndef NO_LIMIT_FD_SETSIZE | ||||
| 	    if (master_fd >= FD_SETSIZE) | ||||
| 		krb5_errx (context, 1, "fd too large"); | ||||
| #endif | ||||
|  | ||||
| 	    FD_ZERO(&readset); | ||||
| 	    FD_SET(master_fd, &readset); | ||||
| @@ -730,8 +732,11 @@ main(int argc, char **argv) | ||||
| 	    reconnect = reconnect_max; | ||||
|     } | ||||
|  | ||||
|     if(exit_flag == SIGXCPU) | ||||
|     if (0); | ||||
| #ifndef NO_SIGXCPU | ||||
|     else if(exit_flag == SIGXCPU) | ||||
| 	krb5_warnx(context, "%s CPU time limit exceeded", getprogname()); | ||||
| #endif | ||||
|     else if(exit_flag == SIGINT || exit_flag == SIGTERM) | ||||
| 	krb5_warnx(context, "%s terminated", getprogname()); | ||||
|     else | ||||
|   | ||||
| @@ -37,6 +37,7 @@ | ||||
| #define __KADM5_LOCL_H__ | ||||
|  | ||||
| #include <config.h> | ||||
| #include <roken.h> | ||||
|  | ||||
| #include <stdio.h> | ||||
| #include <stdlib.h> | ||||
| @@ -76,7 +77,6 @@ | ||||
| #include "kadm5_err.h" | ||||
| #include <hdb.h> | ||||
| #include <der.h> | ||||
| #include <roken.h> | ||||
| #include <parse_units.h> | ||||
| #include "private.h" | ||||
|  | ||||
|   | ||||
							
								
								
									
										61
									
								
								lib/kadm5/libkadm5srv-exports.def
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										61
									
								
								lib/kadm5/libkadm5srv-exports.def
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,61 @@ | ||||
| EXPORTS | ||||
| ;	kadm5_ad_init_with_password | ||||
| ;	kadm5_ad_init_with_password_ctx | ||||
| 	kadm5_add_passwd_quality_verifier | ||||
| 	kadm5_check_password_quality | ||||
| 	kadm5_chpass_principal | ||||
| 	kadm5_chpass_principal_with_key | ||||
| 	kadm5_create_principal | ||||
| 	kadm5_delete_principal | ||||
| 	kadm5_destroy | ||||
| 	kadm5_flush | ||||
| 	kadm5_free_key_data | ||||
| 	kadm5_free_name_list | ||||
| 	kadm5_free_principal_ent | ||||
| 	kadm5_get_principal | ||||
| 	kadm5_get_principals | ||||
| 	kadm5_get_privs | ||||
| 	kadm5_init_with_creds | ||||
| 	kadm5_init_with_creds_ctx | ||||
| 	kadm5_init_with_password | ||||
| 	kadm5_init_with_password_ctx | ||||
| 	kadm5_init_with_skey | ||||
| 	kadm5_init_with_skey_ctx | ||||
| 	kadm5_modify_principal | ||||
| 	kadm5_randkey_principal | ||||
| 	kadm5_rename_principal | ||||
| 	kadm5_ret_key_data | ||||
| 	kadm5_ret_principal_ent | ||||
| 	kadm5_ret_principal_ent_mask | ||||
| 	kadm5_ret_tl_data | ||||
| 	kadm5_setup_passwd_quality_check | ||||
| 	kadm5_store_key_data | ||||
| 	kadm5_store_principal_ent | ||||
| 	kadm5_store_principal_ent_mask | ||||
| 	kadm5_store_tl_data | ||||
| 	kadm5_s_init_with_password_ctx | ||||
| 	kadm5_s_init_with_password | ||||
| 	kadm5_s_init_with_skey_ctx | ||||
| 	kadm5_s_init_with_skey | ||||
| 	kadm5_s_init_with_creds_ctx | ||||
| 	kadm5_s_init_with_creds | ||||
| 	kadm5_s_chpass_principal_cond | ||||
| 	kadm5_log_set_version | ||||
| ;	kadm5_log_signal_socket | ||||
| 	kadm5_log_signal_socket_info | ||||
| 	kadm5_log_previous | ||||
| 	kadm5_log_goto_end | ||||
| 	kadm5_log_foreach | ||||
| 	kadm5_log_get_version_fd | ||||
| 	kadm5_log_get_version | ||||
| 	kadm5_log_replay | ||||
| 	kadm5_log_end | ||||
| 	kadm5_log_reinit | ||||
| 	kadm5_log_init | ||||
| 	kadm5_log_nop | ||||
| 	kadm5_log_truncate | ||||
| 	kadm5_log_modify | ||||
| 	_kadm5_acl_check_permission | ||||
| 	_kadm5_unmarshal_params | ||||
| 	_kadm5_s_get_db | ||||
| 	_kadm5_privs_to_string | ||||
| @@ -206,15 +206,25 @@ kadm5_log_flush (kadm5_log_context *log_context, | ||||
| 	krb5_data_free(&data); | ||||
| 	return errno; | ||||
|     } | ||||
|  | ||||
|     /* | ||||
|      * Try to send a signal to any running `ipropd-master' | ||||
|      */ | ||||
| #ifndef NO_UNIX_SOCKETS | ||||
|     sendto (log_context->socket_fd, | ||||
| 	    (void *)&log_context->version, | ||||
| 	    sizeof(log_context->version), | ||||
| 	    0, | ||||
| 	    (struct sockaddr *)&log_context->socket_name, | ||||
| 	    sizeof(log_context->socket_name)); | ||||
| #else | ||||
|     sendto (log_context->socket_fd, | ||||
| 	    (void *)&log_context->version, | ||||
| 	    sizeof(log_context->version), | ||||
| 	    0, | ||||
| 	    log_context->socket_info->ai_addr, | ||||
| 	    log_context->socket_info->ai_addrlen); | ||||
| #endif | ||||
|  | ||||
|     krb5_data_free(&data); | ||||
|     return 0; | ||||
| @@ -970,6 +980,8 @@ kadm5_log_truncate (kadm5_server_context *server_context) | ||||
|  | ||||
| } | ||||
|  | ||||
| #ifndef NO_UNIX_SOCKETS | ||||
|  | ||||
| static char *default_signal = NULL; | ||||
| static HEIMDAL_MUTEX signal_mutex = HEIMDAL_MUTEX_INITIALIZER; | ||||
|  | ||||
| @@ -988,3 +1000,55 @@ kadm5_log_signal_socket(krb5_context context) | ||||
| 					  "signal_socket", | ||||
| 					  NULL); | ||||
| } | ||||
|  | ||||
| #else  /* NO_UNIX_SOCKETS */ | ||||
|  | ||||
| #define SIGNAL_SOCKET_HOST "127.0.0.1" | ||||
| #define SIGNAL_SOCKET_PORT "12701" | ||||
|  | ||||
| kadm5_ret_t | ||||
| kadm5_log_signal_socket_info(krb5_context context, | ||||
| 			     int server_end, | ||||
| 			     struct addrinfo **ret_addrs) | ||||
| { | ||||
|     struct addrinfo hints; | ||||
|     struct addrinfo *addrs = NULL; | ||||
|     kadm5_ret_t ret = KADM5_FAILURE; | ||||
|     int wsret; | ||||
|  | ||||
|     memset(&hints, 0, sizeof(hints)); | ||||
|  | ||||
|     hints.ai_flags = AI_NUMERICHOST; | ||||
|     if (server_end) | ||||
| 	hints.ai_flags |= AI_PASSIVE; | ||||
|     hints.ai_family = AF_INET; | ||||
|     hints.ai_socktype = SOCK_STREAM; | ||||
|     hints.ai_protocol = IPPROTO_TCP; | ||||
|  | ||||
|     wsret = getaddrinfo(SIGNAL_SOCKET_HOST, | ||||
| 			SIGNAL_SOCKET_PORT, | ||||
| 			&hints, &addrs); | ||||
|  | ||||
|     if (wsret != 0) { | ||||
| 	krb5_set_error_message(context, KADM5_FAILURE, | ||||
| 			       "%s", gai_strerror(wsret)); | ||||
| 	goto done; | ||||
|     } | ||||
|  | ||||
|     if (addrs == NULL) { | ||||
| 	krb5_set_error_message(context, KADM5_FAILURE, | ||||
| 			       "getaddrinfo() failed to return address list"); | ||||
| 	goto done; | ||||
|     } | ||||
|  | ||||
|     *ret_addrs = addrs; | ||||
|     addrs = NULL; | ||||
|     ret = 0; | ||||
|  | ||||
|  done: | ||||
|     if (addrs) | ||||
| 	freeaddrinfo(addrs); | ||||
|     return ret; | ||||
| } | ||||
|  | ||||
| #endif | ||||
|   | ||||
| @@ -199,7 +199,7 @@ external_passwd_quality (krb5_context context, | ||||
|  | ||||
| 	fclose(out); | ||||
| 	fclose(error); | ||||
| 	waitpid(child, &status, 0); | ||||
| 	wait_for_process(child); | ||||
| 	return 1; | ||||
|     } | ||||
|     reply[strcspn(reply, "\n")] = '\0'; | ||||
| @@ -207,12 +207,9 @@ external_passwd_quality (krb5_context context, | ||||
|     fclose(out); | ||||
|     fclose(error); | ||||
|  | ||||
|     if (waitpid(child, &status, 0) < 0) { | ||||
| 	snprintf(message, length, "external program failed: %s", reply); | ||||
| 	free(p); | ||||
| 	return 1; | ||||
|     } | ||||
|     if (!WIFEXITED(status) || WEXITSTATUS(status) != 0) { | ||||
|     status = wait_for_process(child); | ||||
|  | ||||
|     if (SE_IS_ERROR(status) || SE_PROCSTATUS(status) != 0) { | ||||
| 	snprintf(message, length, "external program failed: %s", reply); | ||||
| 	free(p); | ||||
| 	return 1; | ||||
|   | ||||
| @@ -74,8 +74,12 @@ typedef struct kadm5_log_context { | ||||
|     char *log_file; | ||||
|     int log_fd; | ||||
|     uint32_t version; | ||||
| #ifndef NO_UNIX_SOCKETS | ||||
|     struct sockaddr_un socket_name; | ||||
|     int socket_fd; | ||||
| #else | ||||
|     struct addrinfo *socket_info; | ||||
| #endif | ||||
|     krb5_socket_t socket_fd; | ||||
| } kadm5_log_context; | ||||
|  | ||||
| typedef struct kadm5_server_context { | ||||
|   | ||||
| @@ -425,7 +425,7 @@ krb5_auth_con_setlocalseqnumber (krb5_context context, | ||||
|   return 0; | ||||
| } | ||||
|  | ||||
| KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_FUNCTION | ||||
| KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL | ||||
| krb5_auth_con_getremoteseqnumber(krb5_context context, | ||||
| 				 krb5_auth_context auth_context, | ||||
| 				 int32_t *seqnumber) | ||||
|   | ||||
| @@ -473,6 +473,21 @@ krb5_config_parse_file_multi (krb5_context context, | ||||
| 	return ENOENT; | ||||
| #endif | ||||
|     } else { | ||||
| #ifdef KRB5_USE_PATH_TOKENS | ||||
| 	char * exp_fname = NULL; | ||||
|  | ||||
| 	ret = _krb5_expand_path_tokens(context, fname, &exp_fname); | ||||
| 	if (ret) { | ||||
| 	    if (newfname) | ||||
| 		free(newfname); | ||||
| 	    return ret; | ||||
| 	} | ||||
| 	 | ||||
| 	if (newfname) | ||||
| 	    free(newfname); | ||||
| 	fname = newfname = exp_fname; | ||||
| #endif | ||||
|  | ||||
| 	f.f = fopen(fname, "r"); | ||||
| 	f.s = NULL; | ||||
| 	if(f.f == NULL) { | ||||
| @@ -494,8 +509,6 @@ krb5_config_parse_file_multi (krb5_context context, | ||||
| 	    return ret; | ||||
| 	} | ||||
|     } | ||||
|     if (newfname) | ||||
| 	free(newfname); | ||||
|     return 0; | ||||
| } | ||||
|  | ||||
| @@ -1236,10 +1249,11 @@ krb5_config_get_int (krb5_context context, | ||||
|  * @ingroup krb5_deprecated | ||||
|  */ | ||||
|  | ||||
| KRB5_DEPRECATED | ||||
| krb5_error_code KRB5_LIB_FUNCTION | ||||
| krb5_config_parse_string_multi(krb5_context context, | ||||
| 			       const char *string, | ||||
| 			       krb5_config_section **res) KRB5_DEPRECATED | ||||
| 			       krb5_config_section **res) | ||||
| { | ||||
|     const char *str; | ||||
|     unsigned lineno = 0; | ||||
|   | ||||
| @@ -245,22 +245,25 @@ cc_ops_register(krb5_context context) | ||||
| static krb5_error_code | ||||
| cc_ops_copy(krb5_context context, const krb5_context src_context) | ||||
| { | ||||
|     krb5_cc_ops **cc_ops; | ||||
|  | ||||
|     context->cc_ops = NULL; | ||||
|     context->num_cc_ops = 0; | ||||
|  | ||||
|     if (src_context->num_cc_ops == 0) | ||||
| 	return 0; | ||||
|  | ||||
|     context->cc_ops = malloc(sizeof(context->cc_ops[0]) * src_context->num_cc_ops); | ||||
|     if (context->cc_ops == NULL) { | ||||
|     cc_ops = malloc(sizeof(cc_ops[0]) * src_context->num_cc_ops); | ||||
|     if (cc_ops == NULL) { | ||||
| 	krb5_set_error_message(context, KRB5_CC_NOMEM, | ||||
| 			       N_("malloc: out of memory", "")); | ||||
| 	return KRB5_CC_NOMEM; | ||||
|     } | ||||
|  | ||||
|     memcpy(cc_ops, src_context->cc_ops, | ||||
| 	   sizeof(cc_ops[0]) * src_context->num_cc_ops); | ||||
|     context->cc_ops = cc_ops; | ||||
|     context->num_cc_ops = src_context->num_cc_ops; | ||||
|     memcpy(context->cc_ops, src_context->cc_ops, | ||||
| 	   sizeof(context->cc_ops[0]) * src_context->num_cc_ops); | ||||
|  | ||||
|     return 0; | ||||
| } | ||||
| @@ -363,10 +366,8 @@ krb5_init_context(krb5_context *context) | ||||
|     if (ret) | ||||
| 	goto out; | ||||
| #endif	 | ||||
| #ifdef NEED_SOCK_INIT | ||||
|     if (SOCK_INIT) | ||||
|     if (rk_SOCK_INIT()) | ||||
| 	p->flags |= KRB5_CTX_F_SOCKETS_INITIALIZED; | ||||
| #endif | ||||
|  | ||||
| out: | ||||
|     if(ret) { | ||||
| @@ -539,11 +540,9 @@ krb5_free_context(krb5_context context) | ||||
|  | ||||
|     HEIMDAL_MUTEX_destroy(context->mutex); | ||||
|     free(context->mutex); | ||||
| #ifdef NEED_SOCK_INIT | ||||
|     if (context->flags & KRB5_CTX_F_SOCKETS_INITIALIZED) { | ||||
|  	SOCK_EXIT; | ||||
|  	rk_SOCK_EXIT(); | ||||
|     } | ||||
| #endif | ||||
|  | ||||
|     memset(context, 0, sizeof(*context)); | ||||
|     free(context); | ||||
|   | ||||
| @@ -631,8 +631,9 @@ krb5_get_cred_from_kdc(krb5_context context, | ||||
|  * @ingroup krb5_deprecated | ||||
|  */ | ||||
|  | ||||
| KRB5_DEPRECATED | ||||
| void KRB5_LIB_FUNCTION | ||||
| krb5_free_unparsed_name(krb5_context context, char *str) KRB5_DEPRECATED | ||||
| krb5_free_unparsed_name(krb5_context context, char *str) | ||||
| { | ||||
|     krb5_xfree(str); | ||||
| } | ||||
| @@ -643,10 +644,11 @@ krb5_free_unparsed_name(krb5_context context, char *str) KRB5_DEPRECATED | ||||
|  * @ingroup krb5_deprecated | ||||
|  */ | ||||
|  | ||||
| KRB5_DEPRECATED | ||||
| krb5_error_code KRB5_LIB_FUNCTION | ||||
| krb5_generate_subkey(krb5_context context, | ||||
| 		     const krb5_keyblock *key, | ||||
| 		     krb5_keyblock **subkey) KRB5_DEPRECATED | ||||
| 		     krb5_keyblock **subkey) | ||||
| { | ||||
|     return krb5_generate_subkey_extended(context, key, ETYPE_NULL, subkey); | ||||
| } | ||||
| @@ -657,10 +659,11 @@ krb5_generate_subkey(krb5_context context, | ||||
|  * @ingroup krb5_deprecated | ||||
|  */ | ||||
|  | ||||
| KRB5_DEPRECATED | ||||
| krb5_error_code KRB5_LIB_FUNCTION | ||||
| krb5_auth_getremoteseqnumber(krb5_context context, | ||||
| 			     krb5_auth_context auth_context, | ||||
| 			     int32_t *seqnumber) KRB5_DEPRECATED | ||||
| 			     int32_t *seqnumber) | ||||
| { | ||||
|   *seqnumber = auth_context->remote_seqnumber; | ||||
|   return 0; | ||||
|   | ||||
| @@ -279,8 +279,9 @@ krb5_free_error_message(krb5_context context, const char *msg) | ||||
|  * @ingroup krb5 | ||||
|  */ | ||||
|  | ||||
| KRB5_DEPRECATED | ||||
| KRB5_LIB_FUNCTION const char* KRB5_LIB_CALL | ||||
| krb5_get_err_text(krb5_context context, krb5_error_code code) KRB5_DEPRECATED | ||||
| krb5_get_err_text(krb5_context context, krb5_error_code code) | ||||
| { | ||||
|     const char *p = NULL; | ||||
|     if(context != NULL) | ||||
|   | ||||
| @@ -242,6 +242,8 @@ krb5_kuserok (krb5_context context, | ||||
|     char *buf; | ||||
|     size_t buflen; | ||||
|     struct passwd *pwd = NULL; | ||||
|     char *profile_dir = NULL; | ||||
|     krb5_boolean free_profile_dir = FALSE; | ||||
|     krb5_error_code ret; | ||||
|     krb5_boolean result = FALSE; | ||||
|  | ||||
| @@ -258,14 +260,15 @@ krb5_kuserok (krb5_context context, | ||||
| #endif | ||||
|     if (pwd == NULL) | ||||
| 	return FALSE; | ||||
|     profile_dir = pwd->pw_dir; | ||||
|  | ||||
| #define KLOGIN "/.k5login" | ||||
|     buflen = strlen(pwd->pw_dir) + sizeof(KLOGIN) + 2; /* 2 for .d */ | ||||
|     buflen = strlen(profile_dir) + sizeof(KLOGIN) + 2; /* 2 for .d */ | ||||
|     buf = malloc(buflen); | ||||
|     if(buf == NULL) | ||||
| 	return FALSE; | ||||
|     /* check user's ~/.k5login */ | ||||
|     strlcpy(buf, pwd->pw_dir, buflen); | ||||
|     strlcpy(buf, profile_dir, buflen); | ||||
|     strlcat(buf, KLOGIN, buflen); | ||||
|     ret = check_one_file(context, buf, pwd, principal, &result); | ||||
|  | ||||
|   | ||||
| @@ -57,7 +57,6 @@ EXPORTS | ||||
| 	krb5_auth_con_setuserkey | ||||
| 	krb5_auth_getremoteseqnumber | ||||
| 	krb5_build_ap_req | ||||
| 	krb5_build_authenticator | ||||
| 	krb5_build_principal | ||||
| 	krb5_build_principal_ext | ||||
| 	krb5_build_principal_va | ||||
| @@ -96,6 +95,7 @@ EXPORTS | ||||
| 	krb5_cc_get_config | ||||
| 	krb5_cc_get_friendly_name | ||||
| 	krb5_cc_get_full_name | ||||
| 	krb5_cc_get_kdc_offset | ||||
| 	krb5_cc_get_lifetime | ||||
| 	krb5_cc_get_name | ||||
| 	krb5_cc_get_ops | ||||
| @@ -115,8 +115,10 @@ EXPORTS | ||||
| 	krb5_cc_set_config | ||||
| 	krb5_cc_set_default_name | ||||
| 	krb5_cc_set_flags | ||||
| 	krb5_cc_set_kdc_offset | ||||
| 	krb5_cc_start_seq_get | ||||
| 	krb5_cc_store_cred | ||||
| 	krb5_cc_support_switch | ||||
| 	krb5_cc_switch | ||||
|  	krb5_cc_set_friendly_name | ||||
| 	krb5_change_password | ||||
| @@ -135,13 +137,13 @@ EXPORTS | ||||
| 	krb5_compare_creds | ||||
| 	krb5_config_file_free | ||||
| 	krb5_config_free_strings | ||||
| 	krb5_config_get | ||||
|         _krb5_config_get | ||||
| 	krb5_config_get_bool | ||||
| 	krb5_config_get_bool_default | ||||
| 	krb5_config_get_int | ||||
| 	krb5_config_get_int_default | ||||
| 	krb5_config_get_list | ||||
| 	krb5_config_get_next | ||||
| 	_krb5_config_get_next | ||||
| 	krb5_config_get_string | ||||
| 	krb5_config_get_string_default | ||||
| 	krb5_config_get_strings | ||||
| @@ -150,13 +152,13 @@ EXPORTS | ||||
| 	krb5_config_parse_file | ||||
| 	krb5_config_parse_file_multi | ||||
| 	krb5_config_parse_string_multi | ||||
| 	krb5_config_vget | ||||
| 	_krb5_config_vget | ||||
| 	krb5_config_vget_bool | ||||
| 	krb5_config_vget_bool_default | ||||
| 	krb5_config_vget_int | ||||
| 	krb5_config_vget_int_default | ||||
| 	krb5_config_vget_list | ||||
| 	krb5_config_vget_next | ||||
| 	_krb5_config_vget_next | ||||
| 	krb5_config_vget_string | ||||
| 	krb5_config_vget_string_default | ||||
| 	krb5_config_vget_strings | ||||
| @@ -176,6 +178,7 @@ EXPORTS | ||||
| 	krb5_create_checksum | ||||
| 	krb5_create_checksum_iov | ||||
| 	krb5_crypto_destroy | ||||
| 	krb5_crypto_fx_cf2 | ||||
| 	krb5_crypto_get_checksum_type | ||||
| 	krb5_crypto_getblocksize | ||||
| 	krb5_crypto_getconfoundersize | ||||
| @@ -293,6 +296,7 @@ EXPORTS | ||||
| 	krb5_free_principal | ||||
| 	krb5_free_salt | ||||
| 	krb5_free_ticket | ||||
| 	krb5_free_unparsed_name | ||||
| 	krb5_fwd_tgt_creds | ||||
| 	krb5_generate_random_block | ||||
| 	krb5_generate_random_keyblock | ||||
| @@ -328,6 +332,7 @@ EXPORTS | ||||
| 	krb5_get_host_realm | ||||
| 	krb5_get_ignore_addresses | ||||
| 	krb5_get_in_cred | ||||
| 	krb5_cccol_last_change_time | ||||
| 	krb5_get_in_tkt | ||||
| 	krb5_get_in_tkt_with_keytab | ||||
| 	krb5_get_in_tkt_with_password | ||||
| @@ -380,8 +385,8 @@ EXPORTS | ||||
| 	krb5_init_ets | ||||
| 	krb5_init_etype | ||||
| 	krb5_initlog | ||||
| 	krb5_is_thread_safe | ||||
| 	krb5_is_config_principal | ||||
| 	krb5_is_thread_safe | ||||
| 	krb5_kerberos_enctypes | ||||
| 	krb5_keyblock_get_enctype | ||||
| 	krb5_keyblock_init | ||||
| @@ -403,10 +408,10 @@ EXPORTS | ||||
| 	krb5_kt_close | ||||
| 	krb5_kt_compare | ||||
| 	krb5_kt_copy_entry_contents | ||||
| 	krb5_kt_destroy | ||||
| 	krb5_kt_default | ||||
| 	krb5_kt_default_modify_name | ||||
| 	krb5_kt_default_name | ||||
| 	krb5_kt_destroy | ||||
| 	krb5_kt_end_seq_get | ||||
| 	krb5_kt_free_entry | ||||
| 	krb5_kt_get_entry | ||||
| @@ -471,6 +476,7 @@ EXPORTS | ||||
| 	krb5_plugin_register | ||||
| 	krb5_prepend_config_files | ||||
| 	krb5_prepend_config_files_default | ||||
| 	krb5_prepend_error_message | ||||
| 	krb5_princ_realm | ||||
| 	krb5_princ_set_realm | ||||
| 	krb5_principal_compare | ||||
| @@ -554,15 +560,15 @@ EXPORTS | ||||
| 	krb5_sendto_ctx_set_type | ||||
| 	krb5_sendto_kdc | ||||
| 	krb5_sendto_kdc_flags | ||||
| 	krb5_set_home_dir_access | ||||
| 	krb5_set_config_files | ||||
| 	krb5_set_default_in_tkt_etypes | ||||
| 	krb5_set_default_realm | ||||
| 	krb5_set_dns_canonicalize_hostname | ||||
| 	krb5_set_error_string | ||||
| 	krb5_set_error_message | ||||
| 	krb5_set_error_string | ||||
| 	krb5_set_extra_addresses | ||||
| 	krb5_set_fcache_version | ||||
| 	krb5_set_home_dir_access | ||||
| 	krb5_set_ignore_addresses | ||||
| 	krb5_set_kdc_sec_offset | ||||
| 	krb5_set_max_time_skew | ||||
| @@ -662,8 +668,9 @@ EXPORTS | ||||
| 	krb5_verrx | ||||
| 	krb5_vlog | ||||
| 	krb5_vlog_msg | ||||
| 	krb5_vset_error_string | ||||
| 	krb5_vprepend_error_message | ||||
| 	krb5_vset_error_message | ||||
| 	krb5_vset_error_string | ||||
| 	krb5_vwarn | ||||
| 	krb5_vwarnx | ||||
| 	krb5_warn | ||||
| @@ -687,36 +694,40 @@ EXPORTS | ||||
| 	initialize_k524_error_table_r | ||||
| 	initialize_k524_error_table | ||||
|  | ||||
| 	; variables | ||||
| 	krb5_mcc_ops		DATA | ||||
| 	krb5_acc_ops		DATA | ||||
| 	krb5_fcc_ops		DATA | ||||
| 	krb5_scc_ops		DATA | ||||
|         ; variables | ||||
| 	krb5_mcc_ops            DATA | ||||
| 	krb5_acc_ops            DATA | ||||
| 	krb5_fcc_ops            DATA | ||||
| #ifdef HAVE_SCC | ||||
| 	krb5_scc_ops            DATA | ||||
| #endif | ||||
| #ifdef HAVE_KCM | ||||
| 	krb5_kcm_ops		DATA | ||||
| 	krb5_kcm_ops            DATA | ||||
| #endif | ||||
| #ifdef KRB4 | ||||
| ;	krb4_fkt_ops		DATA | ||||
| #ifdef HAVE_KRB4 | ||||
| 	krb4_fkt_ops            DATA | ||||
| #endif | ||||
| 	krb5_wrfkt_ops		DATA | ||||
| 	krb5_mkt_ops		DATA | ||||
| 	krb5_akf_ops		DATA | ||||
| 	krb5_any_ops		DATA | ||||
| 	__heimdal_version	DATA | ||||
| 	__heimdal_long_version	DATA | ||||
| 	krb5_config_file	DATA | ||||
| 	krb5_defkeyname		DATA | ||||
| 	krb5_cc_type_api	DATA | ||||
| 	krb5_cc_type_file	DATA | ||||
| 	krb5_cc_type_memory	DATA | ||||
| 	krb5_cc_type_kcm	DATA | ||||
| 	krb5_cc_type_scc	DATA | ||||
| 	krb5_wrfkt_ops          DATA | ||||
| 	krb5_mkt_ops            DATA | ||||
| 	krb5_akf_ops            DATA | ||||
| 	krb5_any_ops            DATA | ||||
| 	heimdal_version         DATA | ||||
| 	heimdal_long_version    DATA | ||||
| 	krb5_config_file        DATA | ||||
| 	krb5_defkeyname         DATA | ||||
| 	krb5_cc_type_api        DATA | ||||
| 	krb5_cc_type_file       DATA | ||||
| 	krb5_cc_type_memory     DATA | ||||
| 	krb5_cc_type_kcm        DATA | ||||
| 	krb5_cc_type_scc        DATA | ||||
|  | ||||
| 	; Shared with GSSAPI krb5 | ||||
| 	_krb5_crc_init_table;	 | ||||
| 	_krb5_crc_update;	 | ||||
|         ; Shared with GSSAPI krb5 | ||||
| 	_krb5_crc_init_table | ||||
| 	_krb5_crc_update | ||||
| 	_krb5_get_krbtgt | ||||
| 	_krb5_build_authenticator | ||||
|  | ||||
| 	; V4 compat glue | ||||
|         ; V4 compat glue | ||||
| 	_krb5_krb_tf_setup | ||||
| 	_krb5_krb_dest_tkt | ||||
| 	_krb5_krb_life_to_time | ||||
| @@ -737,7 +748,6 @@ EXPORTS | ||||
| 	_krb5_get_int | ||||
| 	_krb5_pac_sign | ||||
| 	_krb5_parse_moduli | ||||
| 	_krb5_pk_enterprise_cert | ||||
| 	_krb5_pk_kdf | ||||
| 	_krb5_pk_load_id | ||||
| 	_krb5_pk_mk_ContentInfo | ||||
| @@ -752,6 +762,10 @@ EXPORTS | ||||
| 	_krb5_s4u2self_to_checksumdata | ||||
| 	_krb5_expand_path_tokens | ||||
|  | ||||
|         ; kinit helper | ||||
| 	_krb5_get_init_creds_opt_set_pkinit_user_certs | ||||
| 	_krb5_pk_enterprise_cert | ||||
|  | ||||
| 	; testing | ||||
| ;	_krb5_aes_cts_encrypt | ||||
| 	_krb5_n_fold | ||||
|   | ||||
| @@ -1959,7 +1959,6 @@ _krb5_pk_load_id(krb5_context context, | ||||
| 	hx509_certs_free(&id->anchors); | ||||
| 	hx509_certs_free(&id->certpool); | ||||
| 	hx509_revoke_free(&id->revokectx); | ||||
| 	hx509_context_free(&context->hx509ctx); | ||||
| 	free(id); | ||||
|     } else | ||||
| 	*ret_id = id; | ||||
|   | ||||
| @@ -205,9 +205,7 @@ load_plugins(krb5_context context) | ||||
| 	d = opendir(*di); | ||||
| 	if (d == NULL) | ||||
| 	    continue; | ||||
| #ifdef HAVE_DIRFD | ||||
| 	rk_cloexec(dirfd(d)); | ||||
| #endif | ||||
| 	rk_cloexec_dir(d); | ||||
|  | ||||
| 	while ((entry = readdir(d)) != NULL) { | ||||
| 	    char *n = entry->d_name; | ||||
|   | ||||
							
								
								
									
										21
									
								
								lib/ntlm/libheimntlm-exports.def
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								lib/ntlm/libheimntlm-exports.def
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,21 @@ | ||||
| EXPORTS | ||||
| 	heim_ntlm_build_ntlm1_master | ||||
| 	heim_ntlm_calculate_ntlm1 | ||||
| 	heim_ntlm_calculate_ntlm2 | ||||
| 	heim_ntlm_calculate_ntlm2_sess | ||||
| 	heim_ntlm_decode_targetinfo | ||||
| 	heim_ntlm_decode_type1 | ||||
| 	heim_ntlm_decode_type2 | ||||
| 	heim_ntlm_decode_type3 | ||||
| 	heim_ntlm_encode_targetinfo | ||||
| 	heim_ntlm_encode_type1 | ||||
| 	heim_ntlm_encode_type2 | ||||
| 	heim_ntlm_encode_type3 | ||||
| 	heim_ntlm_free_buf | ||||
| 	heim_ntlm_free_targetinfo | ||||
| 	heim_ntlm_free_type1 | ||||
| 	heim_ntlm_free_type2 | ||||
| 	heim_ntlm_free_type3 | ||||
| 	heim_ntlm_nt_key | ||||
| 	heim_ntlm_ntlmv2_key | ||||
| 	heim_ntlm_verify_ntlm2 | ||||
| @@ -41,8 +41,8 @@ | ||||
| #include <errno.h> | ||||
| #include <limits.h> | ||||
|  | ||||
| #include <krb5.h> | ||||
| #include <roken.h> | ||||
| #include <krb5.h> | ||||
|  | ||||
| #define HC_DEPRECATED_CRYPTO | ||||
|  | ||||
|   | ||||
| @@ -38,6 +38,7 @@ libroken_la_OBJS =			\ | ||||
| 	$(OBJ)\bswap.obj		\ | ||||
| 	$(OBJ)\concat.obj		\ | ||||
| 	$(OBJ)\cloexec.obj		\ | ||||
| 	$(OBJ)\ct.obj			\ | ||||
| 	$(OBJ)\dirent.obj		\ | ||||
| 	$(OBJ)\dlfcn_w32.obj		\ | ||||
| 	$(OBJ)\dumpdata.obj		\ | ||||
| @@ -88,6 +89,7 @@ libroken_la_OBJS =			\ | ||||
| 	$(OBJ)\socket.obj		\ | ||||
| 	$(OBJ)\sockstartup_w32.obj	\ | ||||
| 	$(OBJ)\strcollect.obj		\ | ||||
| 	$(OBJ)\strerror_r.obj		\ | ||||
| 	$(OBJ)\strlcat.obj		\ | ||||
| 	$(OBJ)\strlcpy.obj		\ | ||||
| 	$(OBJ)\strpool.obj		\ | ||||
|   | ||||
| @@ -56,3 +56,11 @@ rk_cloexec_file(FILE *f) | ||||
|     rk_cloexec(fileno(f)); | ||||
| #endif | ||||
| } | ||||
|  | ||||
| void ROKEN_LIB_FUNCTION | ||||
| rk_cloexec_dir(DIR * d) | ||||
| { | ||||
| #ifdef HAVE_DIRFD | ||||
|     rk_cloexec(dirfd(d)); | ||||
| #endif | ||||
| } | ||||
|   | ||||
| @@ -29,33 +29,38 @@ | ||||
|  * | ||||
|  **********************************************************************/ | ||||
| 
 | ||||
| #ifndef __krb5_types_h__ | ||||
| #define __krb5_types_h__ | ||||
| #ifndef __DIRENT_H__ | ||||
| #define __DIRENT_H__ | ||||
| 
 | ||||
| #ifndef __BIT_TYPES_DEFINED__ | ||||
| #define __BIT_TYPES_DEFINED__ | ||||
| 
 | ||||
| typedef __int8             int8_t; | ||||
| typedef __int16            int16_t; | ||||
| typedef __int32            int32_t; | ||||
| typedef __int64            int64_t; | ||||
| typedef unsigned __int8    uint8_t; | ||||
| typedef unsigned __int16   uint16_t; | ||||
| typedef unsigned __int32   uint32_t; | ||||
| typedef unsigned __int64   uint64_t; | ||||
| typedef uint8_t            u_int8_t; | ||||
| typedef uint16_t           u_int16_t; | ||||
| typedef uint32_t           u_int32_t; | ||||
| typedef uint64_t           u_int64_t; | ||||
| 
 | ||||
| #endif  /* __BIT_TYPES_DEFINED__ */ | ||||
| 
 | ||||
| typedef int                krb5_socklen_t; | ||||
| 
 | ||||
| #ifdef _WIN64 | ||||
| typedef __int64            krb5_ssize_t; | ||||
| #ifndef ROKEN_LIB_FUNCTION | ||||
| #ifdef _WIN32 | ||||
| #define ROKEN_LIB_FUNCTION | ||||
| #define ROKEN_LIB_CALL     __cdecl | ||||
| #else | ||||
| typedef int                krb5_ssize_t; | ||||
| #define ROKEN_LIB_FUNCTION | ||||
| #define ROKEN_LIB_CALL | ||||
| #endif | ||||
| #endif | ||||
| 
 | ||||
| #endif  /* __krb5_types_h__ */ | ||||
| #include<sys/types.h> | ||||
| 
 | ||||
| struct dirent { | ||||
|     ino_t   d_ino; | ||||
|     char    d_name[1]; | ||||
| }; | ||||
| 
 | ||||
| typedef struct _dirent_dirinfo DIR; | ||||
| 
 | ||||
| ROKEN_LIB_FUNCTION int ROKEN_LIB_CALL closedir(DIR *); | ||||
| 
 | ||||
| ROKEN_LIB_FUNCTION DIR * ROKEN_LIB_CALL opendir(const char *); | ||||
| 
 | ||||
| ROKEN_LIB_FUNCTION struct dirent * ROKEN_LIB_CALL readdir(DIR *); | ||||
| 
 | ||||
| ROKEN_LIB_FUNCTION void ROKEN_LIB_CALL rewinddir(DIR *); | ||||
| 
 | ||||
| ROKEN_LIB_FUNCTION void ROKEN_LIB_CALL seekdir(DIR *, long); | ||||
| 
 | ||||
| ROKEN_LIB_FUNCTION long ROKEN_LIB_CALL telldir(DIR *); | ||||
| 
 | ||||
| #endif | ||||
| @@ -41,7 +41,7 @@ | ||||
|  | ||||
|  | ||||
| ROKEN_LIB_FUNCTION int ROKEN_LIB_CALL | ||||
| fk_flock(int fd, int operation) | ||||
| rk_flock(int fd, int operation) | ||||
| { | ||||
| #if defined(HAVE_FCNTL) && defined(F_SETLK) | ||||
|   struct flock arg; | ||||
|   | ||||
| @@ -480,6 +480,9 @@ rk_cloexec(int); | ||||
| ROKEN_LIB_FUNCTION void ROKEN_LIB_CALL | ||||
| rk_cloexec_file(FILE *); | ||||
|  | ||||
| ROKEN_LIB_FUNCTION void ROKEN_LIB_CALL | ||||
| rk_cloexec_dir(DIR *); | ||||
|  | ||||
| ROKEN_LIB_FUNCTION int ROKEN_LIB_CALL | ||||
| ct_memcmp(const void *, const void *, size_t); | ||||
|  | ||||
|   | ||||
| @@ -63,6 +63,8 @@ | ||||
|  | ||||
| typedef SOCKET rk_socket_t; | ||||
|  | ||||
| #define rk_closesocket(x) closesocket(x) | ||||
| #define rk_INVALID_SOCKET INVALID_SOCKET | ||||
| #define rk_IS_BAD_SOCKET(s) ((s) == INVALID_SOCKET) | ||||
| #define rk_IS_SOCKET_ERROR(rv) ((rv) == SOCKET_ERROR) | ||||
| #define rk_SOCK_ERRNO WSAGetLastError() | ||||
| @@ -72,8 +74,8 @@ typedef SOCKET rk_socket_t; | ||||
| #define EWOULDBLOCK             WSAEWOULDBLOCK | ||||
| #define ENOTSOCK		WSAENOTSOCK | ||||
|  | ||||
| #define rk_SOCK_INIT rk_WSAStartup() | ||||
| #define rk_SOCK_EXIT rk_WSACleanup() | ||||
| #define rk_SOCK_INIT() rk_WSAStartup() | ||||
| #define rk_SOCK_EXIT() rk_WSACleanup() | ||||
|  | ||||
| ROKEN_LIB_FUNCTION int ROKEN_LIB_CALL rk_WSAStartup(void); | ||||
| ROKEN_LIB_FUNCTION int ROKEN_LIB_CALL rk_WSACleanup(void); | ||||
| @@ -220,6 +222,14 @@ struct sockaddr_dl; | ||||
| #include <paths.h> | ||||
| #endif | ||||
|  | ||||
| #ifdef HAVE_DIRENT_H | ||||
| #include <dirent.h> | ||||
| #endif | ||||
|  | ||||
| #ifdef BACKSLASH_PATH_DELIM | ||||
| #define rk_PATH_DELIM '\\' | ||||
| #endif | ||||
|  | ||||
| #ifndef HAVE_SSIZE_T | ||||
| #ifdef _WIN64 | ||||
| typedef __int64 ssize_t; | ||||
| @@ -303,7 +313,7 @@ rk_vsnprintf (char *str, size_t sz, const char *format, va_list args); | ||||
|  S_ISBLK(m) | ||||
| */ | ||||
|  | ||||
| #endif | ||||
| #endif  /* _MSC_VER */ | ||||
|  | ||||
| #ifndef HAVE_PUTENV | ||||
| #define putenv rk_putenv | ||||
| @@ -827,8 +837,10 @@ struct msghdr { | ||||
|     int             msg_flags; | ||||
| }; | ||||
|  | ||||
| #define sendmsg sendmsg_w32 | ||||
|  | ||||
| ROKEN_LIB_FUNCTION ssize_t ROKEN_LIB_CALL | ||||
| sendmsg(rk_socket_t s, const struct msghdr * msg, int flags); | ||||
| sendmsg_w32(rk_socket_t s, const struct msghdr * msg, int flags); | ||||
|  | ||||
| #endif | ||||
|  | ||||
|   | ||||
| @@ -100,7 +100,7 @@ sendmsg(rk_socket_t s, const struct msghdr *msg, int flags) | ||||
|  *  | ||||
|  **********************************************************************/ | ||||
|  | ||||
| /* | ||||
| /** | ||||
|  * Implementation of sendmsg() for WIN32 | ||||
|  * | ||||
|  * We are using a contrived definition of msghdr which actually uses | ||||
|   | ||||
| @@ -39,6 +39,25 @@ | ||||
| #include <string.h> | ||||
| #include <errno.h> | ||||
|  | ||||
| #ifdef _MSC_VER | ||||
|  | ||||
| int ROKEN_LIB_FUNCTION | ||||
| rk_strerror_r(int eno, char * strerrbuf, size_t buflen) | ||||
| { | ||||
|     errno_t err; | ||||
|  | ||||
|     err = strerror_s(strerrbuf, buflen, eno); | ||||
|     if (err != 0) { | ||||
|         int code; | ||||
|         code = sprintf_s(strerrbuf, buflen, "Error % occurred.", eno); | ||||
|         err = ((code != 0)? errno : 0); | ||||
|     } | ||||
|  | ||||
|     return err; | ||||
| } | ||||
|  | ||||
| #else  /* _MSC_VER */ | ||||
|  | ||||
| #ifndef HAVE_STRERROR_R | ||||
| extern int sys_nerr; | ||||
| extern char *sys_errlist[]; | ||||
| @@ -68,4 +87,6 @@ rk_strerror_r(int eno, char *strerrbuf, size_t buflen) | ||||
| #endif | ||||
| } | ||||
|  | ||||
| #endif  /* !_MSC_VER */ | ||||
|  | ||||
| #endif | ||||
|   | ||||
| @@ -82,7 +82,7 @@ get_connected_socket(rk_socket_t * s_ret) | ||||
| 	goto done; | ||||
|  | ||||
|     *s_ret = s; | ||||
|     s = INVALID_SOCKET; | ||||
|     s = rk_INVALID_SOCKET; | ||||
|     rv = 0; | ||||
|  | ||||
|  done: | ||||
| @@ -105,7 +105,7 @@ const char * test_strings[] = { | ||||
| static int | ||||
| test_simple_echo_client(void) | ||||
| { | ||||
|     rk_socket_t s = INVALID_SOCKET; | ||||
|     rk_socket_t s = rk_INVALID_SOCKET; | ||||
|     int rv; | ||||
|     char buf[81]; | ||||
|     int i; | ||||
| @@ -165,7 +165,7 @@ test_simple_echo_socket(void) | ||||
| 	return test_simple_echo_client(); | ||||
|     } else { | ||||
|  | ||||
| 	rk_socket_t s = INVALID_SOCKET; | ||||
| 	rk_socket_t s = rk_INVALID_SOCKET; | ||||
|  | ||||
| 	fprintf (stderr, "[%s] Listening for connections...\n", prog); | ||||
| 	mini_inetd(htons(PORT), &s); | ||||
|   | ||||
| @@ -42,6 +42,7 @@ HEIMDAL_ROKEN_1.0 { | ||||
| 		rk_cgetstr; | ||||
| 		rk_cloexec; | ||||
| 		rk_cloexec_file; | ||||
|                 rk_cloexec_dir; | ||||
| 		rk_closefrom; | ||||
| 		rk_copyhostent; | ||||
| 		rk_dns_free_data; | ||||
|   | ||||
| @@ -91,4 +91,7 @@ ENABLE_PTHREAD_SUPPORT=1 | ||||
| # Use the Kerberos Credentials Manager | ||||
| # HAVE_KCM=1 | ||||
|  | ||||
| DIR_hdbdir=%{COMMON_APPDATA}\heimdal\hdb | ||||
| # Use the sqlite backend | ||||
| HAVE_SCC=1 | ||||
|  | ||||
| DIR_hdbdir=%{COMMON_APPDATA}/heimdal/hdb | ||||
|   | ||||
| @@ -277,6 +277,9 @@ prep:: show-cmds | ||||
| {$(OBJ)}.hx{$(INCDIR)}.h: | ||||
| 	$(CP) $< $@ | ||||
|  | ||||
| {$(OBJ)}.hx{$(OBJ)}.h: | ||||
| 	$(CP) $< $@ | ||||
|  | ||||
| {}.rc{$(OBJ)}.res: | ||||
| 	$(RC2RES) | ||||
|  | ||||
| @@ -444,6 +447,8 @@ LIBHCRYPTO  =$(LIBDIR)\libhcrypto.lib | ||||
| LIBHX509    =$(LIBDIR)\libhx509.lib | ||||
| LIBKRB5	    =$(LIBDIR)\libkrb5.lib | ||||
| LIBHEIMNTLM =$(LIBDIR)\libheimntlm.lib | ||||
| LIBHEIMIPCC =$(LIBDIR)\libheim-ipcc.lib | ||||
| LIBHEIMIPCS =$(LIBDIR)\libheim-ipcs.lib | ||||
| LIBGSSAPI   =$(LIBDIR)\libgssapi.lib | ||||
| LIBHDB	    =$(LIBDIR)\libhdb.lib | ||||
| LIBKADM5SRV =$(LIBDIR)\libkadm5srv.lib | ||||
|   | ||||
							
								
								
									
										34
									
								
								windows/maint.el
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										34
									
								
								windows/maint.el
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,34 @@ | ||||
|  | ||||
|  | ||||
| (defun generate-obj-macro (mname &optional postfix &rest slist) | ||||
|   "Generates a macro definition for an OBJs dependency based on a list of source definitions" | ||||
|  | ||||
|   (let* | ||||
|       ((replist (apply 'append (mapcar (lambda (sdef) | ||||
|                                          (goto-char 0) | ||||
|                                          (let* | ||||
|                                              ((def (buffer-substring-no-properties | ||||
|                                                     (search-forward (concat sdef " = \\\n") nil t) | ||||
|                                                     (search-forward "\n\n" nil t))) | ||||
|                                               (st (split-string | ||||
|                                                    (replace-regexp-in-string "^.*\\.h.*\n" "" def) | ||||
|                                                    "\\s-+\\\\?\\|\n" t))) | ||||
|                                            st)) slist))) | ||||
|        (def-start (search-forward (concat mname " = \\\n") nil t)) | ||||
|        (def-end (search-forward "\n\n" nil t)) | ||||
|  | ||||
|        (repl (mapconcat | ||||
|               (lambda (s) | ||||
|                 (concat "\t" | ||||
|                         (replace-regexp-in-string | ||||
|                          "\\(\\s-*\\)\\(.*\\)\\.c" "\\1$(OBJ)\\\\\\2.obj" s) | ||||
|                         " \\")) | ||||
|               replist "\n")) | ||||
|        (erepl (if postfix | ||||
|                   (concat repl "\n" postfix "\n\n") | ||||
|                 (concat repl "\n\n"))) | ||||
|        ) | ||||
|     (delete-region def-start def-end) | ||||
|     (insert erepl)) | ||||
|   ) | ||||
|  | ||||
		Reference in New Issue
	
	Block a user
	 Love Hornquist Astrand
					Love Hornquist Astrand