From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-9.1 required=3.0 tests=DKIMWL_WL_HIGH,DKIMWL_WL_MED, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_PASS,URIBL_BLOCKED, USER_AGENT_NEOMUTT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 07A2BC282D7 for ; Wed, 30 Jan 2019 22:55:16 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 9EC74218AF for ; Wed, 30 Jan 2019 22:55:15 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=fb.com header.i=@fb.com header.b="cvNsUpFS"; dkim=pass (1024-bit key) header.d=fb.onmicrosoft.com header.i=@fb.onmicrosoft.com header.b="IhrzB09S" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731922AbfA3WzO (ORCPT ); Wed, 30 Jan 2019 17:55:14 -0500 Received: from mx0a-00082601.pphosted.com ([67.231.145.42]:43104 "EHLO mx0a-00082601.pphosted.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727963AbfA3WzN (ORCPT ); Wed, 30 Jan 2019 17:55:13 -0500 Received: from pps.filterd (m0109333.ppops.net [127.0.0.1]) by mx0a-00082601.pphosted.com (8.16.0.27/8.16.0.27) with SMTP id x0ULt8Ym009051; Wed, 30 Jan 2019 13:58:21 -0800 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=fb.com; h=from : to : cc : subject : date : message-id : content-type : content-id : content-transfer-encoding : mime-version; s=facebook; bh=yybc/QbMIEEcT8BXoPYv6koXmkRWAGuctuG5F6JpHQw=; b=cvNsUpFSsmmUyQ02nMYucVZo07QI2iasBPEdjB1KqlSFzt1RRsFNTp/kNMU+eyiSnyJT jqQkDkZVhpei1lTjDKXy23nTrIdkxMkIMtewI+e6DWipJKupPRZX1mv5vGce9UFP8R+U yXdRjQxrLgcyLK32WB2B2DqS/zg2g5GjxiI= Received: from maileast.thefacebook.com ([199.201.65.23]) by mx0a-00082601.pphosted.com with ESMTP id 2qbj1a0fmq-3 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384 bits=256 verify=NOT); Wed, 30 Jan 2019 13:58:20 -0800 Received: from frc-hub01.TheFacebook.com (2620:10d:c021:18::171) by frc-hub05.TheFacebook.com (2620:10d:c021:18::175) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.1.1531.3; Wed, 30 Jan 2019 13:58:14 -0800 Received: from NAM02-BL2-obe.outbound.protection.outlook.com (192.168.183.28) by o365-in.thefacebook.com (192.168.177.71) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.1.1531.3 via Frontend Transport; Wed, 30 Jan 2019 13:58:14 -0800 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=fb.onmicrosoft.com; s=selector1-fb-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=yybc/QbMIEEcT8BXoPYv6koXmkRWAGuctuG5F6JpHQw=; b=IhrzB09SVicwcOBhVw7s1j3ynyE3J+vW76fVp3vYDyYavCf9wuJ+5LmeJ80kN+kSqaUIi4+CQ3weFQZoVlghHiD41Oi3AytOVXfmR7lPA+b/UbbtZ0/Qq3qFQJV4gJRRptHOLFCIyw9be8NsyHsBt2Y0v3C0fjWcF9iqFcGck64= Received: from MWHPR15MB1134.namprd15.prod.outlook.com (10.175.2.12) by MWHPR15MB1695.namprd15.prod.outlook.com (10.175.142.16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1558.17; Wed, 30 Jan 2019 21:58:13 +0000 Received: from MWHPR15MB1134.namprd15.prod.outlook.com ([fe80::93f:b6fe:a6e9:80dc]) by MWHPR15MB1134.namprd15.prod.outlook.com ([fe80::93f:b6fe:a6e9:80dc%8]) with mapi id 15.20.1580.017; Wed, 30 Jan 2019 21:58:13 +0000 From: Dave Watson To: "netdev@vger.kernel.org" , Dave Miller CC: Vakul Garg , Boris Pismenny , Aviad Yehezkel , John Fastabend , Daniel Borkmann Subject: [PATCH net-next v2 2/5] net: tls: Refactor tls aad space size calculation Thread-Topic: [PATCH net-next v2 2/5] net: tls: Refactor tls aad space size calculation Thread-Index: AQHUuOblfs/cGBMR1EqWNZig2rNBFw== Date: Wed, 30 Jan 2019 21:58:12 +0000 Message-ID: <20190130215810.w5tx3wf5a6knluf5@davejwatson-mba.local> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: user-agent: NeoMutt/20180716 x-clientproxiedby: MWHPR06CA0014.namprd06.prod.outlook.com (2603:10b6:301:39::27) To MWHPR15MB1134.namprd15.prod.outlook.com (2603:10b6:320:22::12) x-ms-exchange-messagesentrepresentingtype: 1 x-originating-ip: [2620:10d:c090:180::1:7423] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1;MWHPR15MB1695;20:v6bWI5vNlyj6NWy4J34gsqtQMigXuhIQUyHjqm8ot6Ac9jeaGHCF8K7vGa/2O2PAjNJKPPw/wTNdAqGi6IEKvvsVWWLu9gKtnpJJzwm8uq75KSwViI5zG1eolp63TiCFB1fydMhN7OGgbeizOFS7dXtG3t9qRntG5jDOlH2DhOE= x-ms-office365-filtering-correlation-id: 6dbaa613-cea1-49e2-eff7-08d686fe0771 x-microsoft-antispam: BCL:0;PCL:0;RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600110)(711020)(4605077)(2017052603328)(7153060)(7193020);SRVR:MWHPR15MB1695; x-ms-traffictypediagnostic: MWHPR15MB1695: x-microsoft-antispam-prvs: x-forefront-prvs: 0933E9FD8D x-forefront-antispam-report: SFV:NSPM;SFS:(10019020)(366004)(396003)(39860400002)(376002)(136003)(346002)(189003)(199004)(386003)(2501003)(25786009)(68736007)(81156014)(6512007)(4326008)(1076003)(53936002)(33896004)(186003)(2906002)(52116002)(6486002)(256004)(14444005)(98436002)(6116002)(6506007)(102836004)(6436002)(39060400002)(7736002)(486006)(8676002)(14454004)(9686003)(105586002)(71200400001)(71190400001)(54906003)(316002)(476003)(86362001)(110136005)(58126008)(97736004)(81166006)(8936002)(305945005)(106356001)(99286004)(46003)(478600001);DIR:OUT;SFP:1102;SCL:1;SRVR:MWHPR15MB1695;H:MWHPR15MB1134.namprd15.prod.outlook.com;FPR:;SPF:None;LANG:en;PTR:InfoNoRecords;MX:1;A:1; received-spf: None (protection.outlook.com: fb.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam-message-info: KF3+mPwcMO0wMF2gIX2+Y7CsD+afMhbn8EJ2/F2yRMYKbommhEtkv+iBhw6zAQ26IlSXT5bxbbHQoszeC1CJ8MblBVgjaxj/x1mWk5XqfXj2sXzCJXF1Zx6uIUWUWI2ShxUI3Q6bKd/vSZ8xN2LL6BJT3GnFJ/IvD5AEm2xC4zVT9FuR8tBWpnLb7Z8mNRSGjvPqn7qhPaK6uikE56BRri8WwkIjldWl5QVv0M/Ob1t1kJHKw1PA5GKESbl1P+WSNMLyiFnazB9GGnH7LZ87ODt5OTQxOWZj68rzWgmTbrsP34GxeHs4D7tSZtX2fscwFZwN7CUJO8vJjwPl2s5XzhlRDgMr6/FwjBq8Is/Zmy7JQCu1u/SZLu2A94R1oCDZi0TNjBhwoZEwoYGpGS2tcUKU7eiGdoA3DVWhVb5x6FU= Content-Type: text/plain; charset="us-ascii" Content-ID: <33E5824CC5BDC142B5555182DA2F0B1A@namprd15.prod.outlook.com> Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-MS-Exchange-CrossTenant-Network-Message-Id: 6dbaa613-cea1-49e2-eff7-08d686fe0771 X-MS-Exchange-CrossTenant-originalarrivaltime: 30 Jan 2019 21:58:12.3445 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 8ae927fe-1255-47a7-a2af-5f3a069daaa2 X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR15MB1695 X-OriginatorOrg: fb.com X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:,, definitions=2019-01-30_16:,, signatures=0 X-Proofpoint-Spam-Reason: safe X-FB-Internal: Safe Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org TLS 1.3 has a different AAD size, use a variable in the code to make TLS 1.3 support easy. Signed-off-by: Dave Watson --- include/net/tls.h | 1 + net/tls/tls_sw.c | 17 +++++++++-------- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/include/net/tls.h b/include/net/tls.h index da616db48413..754b130672f0 100644 --- a/include/net/tls.h +++ b/include/net/tls.h @@ -202,6 +202,7 @@ struct cipher_context { char *iv; u16 rec_seq_size; char *rec_seq; + u16 aad_size; }; =20 union tls_crypto_context { diff --git a/net/tls/tls_sw.c b/net/tls/tls_sw.c index 9326c06c2ffe..7b6386f4c685 100644 --- a/net/tls/tls_sw.c +++ b/net/tls/tls_sw.c @@ -185,7 +185,7 @@ static int tls_do_decryption(struct sock *sk, int ret; =20 aead_request_set_tfm(aead_req, ctx->aead_recv); - aead_request_set_ad(aead_req, TLS_AAD_SPACE_SIZE); + aead_request_set_ad(aead_req, tls_ctx->rx.aad_size); aead_request_set_crypt(aead_req, sgin, sgout, data_len + tls_ctx->rx.tag_size, (u8 *)iv_recv); @@ -289,12 +289,12 @@ static struct tls_rec *tls_get_rec(struct sock *sk) =20 sg_init_table(rec->sg_aead_in, 2); sg_set_buf(&rec->sg_aead_in[0], rec->aad_space, - sizeof(rec->aad_space)); + tls_ctx->tx.aad_size); sg_unmark_end(&rec->sg_aead_in[1]); =20 sg_init_table(rec->sg_aead_out, 2); sg_set_buf(&rec->sg_aead_out[0], rec->aad_space, - sizeof(rec->aad_space)); + tls_ctx->tx.aad_size); sg_unmark_end(&rec->sg_aead_out[1]); =20 return rec; @@ -455,7 +455,7 @@ static int tls_do_encryption(struct sock *sk, msg_en->sg.curr =3D start; =20 aead_request_set_tfm(aead_req, ctx->aead_send); - aead_request_set_ad(aead_req, TLS_AAD_SPACE_SIZE); + aead_request_set_ad(aead_req, tls_ctx->tx.aad_size); aead_request_set_crypt(aead_req, rec->sg_aead_in, rec->sg_aead_out, data_len, rec->iv_data); @@ -1317,7 +1317,7 @@ static int decrypt_internal(struct sock *sk, struct s= k_buff *skb, =20 aead_size =3D sizeof(*aead_req) + crypto_aead_reqsize(ctx->aead_recv); mem_size =3D aead_size + (nsg * sizeof(struct scatterlist)); - mem_size =3D mem_size + TLS_AAD_SPACE_SIZE; + mem_size =3D mem_size + tls_ctx->rx.aad_size; mem_size =3D mem_size + crypto_aead_ivsize(ctx->aead_recv); =20 /* Allocate a single block of memory which contains @@ -1333,7 +1333,7 @@ static int decrypt_internal(struct sock *sk, struct s= k_buff *skb, sgin =3D (struct scatterlist *)(mem + aead_size); sgout =3D sgin + n_sgin; aad =3D (u8 *)(sgout + n_sgout); - iv =3D aad + TLS_AAD_SPACE_SIZE; + iv =3D aad + tls_ctx->rx.aad_size; =20 /* Prepare IV */ err =3D skb_copy_bits(skb, rxm->offset + TLS_HEADER_SIZE, @@ -1352,7 +1352,7 @@ static int decrypt_internal(struct sock *sk, struct s= k_buff *skb, =20 /* Prepare sgin */ sg_init_table(sgin, n_sgin); - sg_set_buf(&sgin[0], aad, TLS_AAD_SPACE_SIZE); + sg_set_buf(&sgin[0], aad, tls_ctx->rx.aad_size); err =3D skb_to_sgvec(skb, &sgin[1], rxm->offset + tls_ctx->rx.prepend_size, rxm->full_len - tls_ctx->rx.prepend_size); @@ -1364,7 +1364,7 @@ static int decrypt_internal(struct sock *sk, struct s= k_buff *skb, if (n_sgout) { if (out_iov) { sg_init_table(sgout, n_sgout); - sg_set_buf(&sgout[0], aad, TLS_AAD_SPACE_SIZE); + sg_set_buf(&sgout[0], aad, tls_ctx->rx.aad_size); =20 *chunk =3D 0; err =3D tls_setup_from_iter(sk, out_iov, data_len, @@ -2100,6 +2100,7 @@ int tls_set_sw_offload(struct sock *sk, struct tls_co= ntext *ctx, int tx) goto free_priv; } =20 + cctx->aad_size =3D TLS_AAD_SPACE_SIZE; cctx->prepend_size =3D TLS_HEADER_SIZE + nonce_size; cctx->tag_size =3D tag_size; cctx->overhead_size =3D cctx->prepend_size + cctx->tag_size; --=20 2.17.1