From owner-svn-src-projects@freebsd.org Sun Mar 8 18:45:50 2020 Return-Path: Delivered-To: svn-src-projects@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 5675D27218D for ; Sun, 8 Mar 2020 18:45:50 +0000 (UTC) (envelope-from rmacklem@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 48b9KT6GRlz3CYd; Sun, 8 Mar 2020 18:45:49 +0000 (UTC) (envelope-from rmacklem@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 8AAA726379; Sun, 8 Mar 2020 18:45:49 +0000 (UTC) (envelope-from rmacklem@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 028IjnLg024506; Sun, 8 Mar 2020 18:45:49 GMT (envelope-from rmacklem@FreeBSD.org) Received: (from rmacklem@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 028Ijmxm024502; Sun, 8 Mar 2020 18:45:48 GMT (envelope-from rmacklem@FreeBSD.org) Message-Id: <202003081845.028Ijmxm024502@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: rmacklem set sender to rmacklem@FreeBSD.org using -f From: Rick Macklem Date: Sun, 8 Mar 2020 18:45:48 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r358766 - projects/nfs-over-tls/sys/rpc/rpcsec_tls X-SVN-Group: projects X-SVN-Commit-Author: rmacklem X-SVN-Commit-Paths: projects/nfs-over-tls/sys/rpc/rpcsec_tls X-SVN-Commit-Revision: 358766 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 08 Mar 2020 18:45:50 -0000 Author: rmacklem Date: Sun Mar 8 18:45:48 2020 New Revision: 358766 URL: https://svnweb.freebsd.org/changeset/base/358766 Log: Add support for the RPCTLS_FLAGS_xxx flags that indicate results of client certificates being replied into the kernel by the rpctlssd daemon. Modified: projects/nfs-over-tls/sys/rpc/rpcsec_tls/rpctls_impl.c projects/nfs-over-tls/sys/rpc/rpcsec_tls/rpctlscd.x projects/nfs-over-tls/sys/rpc/rpcsec_tls/rpctlssd.x Modified: projects/nfs-over-tls/sys/rpc/rpcsec_tls/rpctls_impl.c ============================================================================== --- projects/nfs-over-tls/sys/rpc/rpcsec_tls/rpctls_impl.c Sun Mar 8 18:37:04 2020 (r358765) +++ projects/nfs-over-tls/sys/rpc/rpcsec_tls/rpctls_impl.c Sun Mar 8 18:45:48 2020 (r358766) @@ -93,6 +93,8 @@ static struct opaque_auth rpctls_null_verf; static CLIENT *rpctls_connect_client(void); static CLIENT *rpctls_server_client(void); +static enum clnt_stat rpctls_server(struct socket *so, + uint32_t *flags); static void rpctls_init(void *dummy) @@ -425,11 +427,12 @@ printf("aft wakeup\n"); } /* Do an upcall for a new server socket using TLS. */ -enum clnt_stat -rpctls_server(struct socket *so) +static enum clnt_stat +rpctls_server(struct socket *so, uint32_t *flags) { enum clnt_stat stat; CLIENT *cl; + struct rpctlssd_connect_res res; static bool rpctls_server_busy = false; printf("In rpctls_server\n"); @@ -449,8 +452,10 @@ printf("server_client=%p\n", cl); printf("rpctls_conect so=%p\n", so); /* Do the server upcall. */ - stat = rpctlssd_connect_1(NULL, NULL, cl); -printf("aft server upcall=%d\n", stat); + stat = rpctlssd_connect_1(NULL, &res, cl); + if (stat == RPC_SUCCESS) + *flags = res.flags; +printf("aft server upcall stat=%d flags=0x%x\n", stat, res.flags); CLNT_RELEASE(cl); /* Once the upcall is done, the daemon is done with the fp and so. */ @@ -477,6 +482,7 @@ _svcauth_rpcsec_tls(struct svc_req *rqst, struct rpc_m bool_t call_stat; enum clnt_stat stat; SVCXPRT *xprt; + uint32_t flags; /* Initialize reply. */ rqst->rq_verf = rpctls_null_verf; @@ -523,19 +529,17 @@ printf("authtls: null reply=%d\n", call_stat); } /* Do an upcall to do the TLS handshake. */ - stat = rpctls_server(rqst->rq_xprt->xp_socket); + stat = rpctls_server(rqst->rq_xprt->xp_socket, &flags); /* Re-enable reception on the socket within the krpc. */ sx_xlock(&xprt->xp_lock); xprt->xp_dontrcv = FALSE; if (stat == RPC_SUCCESS) - xprt->xp_tls = TRUE; + xprt->xp_tls = flags; sx_xunlock(&xprt->xp_lock); xprt_active(xprt); /* Harmless if already active. */ printf("authtls: aft handshake stat=%d\n", stat); - if (stat != RPC_SUCCESS) - return (AUTH_REJECTEDCRED); return (RPCSEC_GSS_NODISPATCH); } Modified: projects/nfs-over-tls/sys/rpc/rpcsec_tls/rpctlscd.x ============================================================================== --- projects/nfs-over-tls/sys/rpc/rpcsec_tls/rpctlscd.x Sun Mar 8 18:37:04 2020 (r358765) +++ projects/nfs-over-tls/sys/rpc/rpcsec_tls/rpctlscd.x Sun Mar 8 18:45:48 2020 (r358766) @@ -25,9 +25,9 @@ * SUCH DAMAGE. */ -/* Modified from gssd.x for the client side of RPC-over-TLS. */ - /* $FreeBSD$ */ + +/* Modified from gssd.x for the client side of RPC-over-TLS. */ program RPCTLSCD { version RPCTLSCDVERS { Modified: projects/nfs-over-tls/sys/rpc/rpcsec_tls/rpctlssd.x ============================================================================== --- projects/nfs-over-tls/sys/rpc/rpcsec_tls/rpctlssd.x Sun Mar 8 18:37:04 2020 (r358765) +++ projects/nfs-over-tls/sys/rpc/rpcsec_tls/rpctlssd.x Sun Mar 8 18:45:48 2020 (r358766) @@ -25,14 +25,19 @@ * SUCH DAMAGE. */ +/* $FreeBSD$ */ + /* Modified from gssd.x for the server side of RPC-over-TLS. */ -/* $FreeBSD$ */ +struct rpctlssd_connect_res { + uint32_t flags; +}; program RPCTLSSD { version RPCTLSSDVERS { void RPCTLSSD_NULL(void) = 0; - void RPCTLSSD_CONNECT(void) = 1; + rpctlssd_connect_res + RPCTLSSD_CONNECT(void) = 1; } = 1; } = 0x40677375;