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=-14.0 required=3.0 tests=BAYES_00,INCLUDES_CR_TRAILER, INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS 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 5D780C433E0 for ; Mon, 4 Jan 2021 19:03:36 +0000 (UTC) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [63.128.21.124]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id D1B6E206A4 for ; Mon, 4 Jan 2021 19:03:35 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org D1B6E206A4 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=kernel.org Authentication-Results: mail.kernel.org; spf=tempfail smtp.mailfrom=dm-devel-bounces@redhat.com Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-566-duUOXMduPVmsEzNHhienrA-1; Mon, 04 Jan 2021 14:03:33 -0500 X-MC-Unique: duUOXMduPVmsEzNHhienrA-1 Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 7E1211842140; Mon, 4 Jan 2021 19:03:28 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.20]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 5F5636F927; Mon, 4 Jan 2021 19:03:28 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id 31F451809CA2; Mon, 4 Jan 2021 19:03:28 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.rdu2.redhat.com [10.11.54.3]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id 0BNMlwtW014942 for ; Wed, 23 Dec 2020 17:47:58 -0500 Received: by smtp.corp.redhat.com (Postfix) id 6F5D91134CC8; Wed, 23 Dec 2020 22:47:58 +0000 (UTC) Received: from mimecast-mx02.redhat.com (mimecast05.extmail.prod.ext.rdu2.redhat.com [10.11.55.21]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 3471D1134CCB for ; Wed, 23 Dec 2020 22:47:57 +0000 (UTC) Received: from us-smtp-1.mimecast.com (us-smtp-2.mimecast.com [207.211.31.81]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id BC0508008A5 for ; Wed, 23 Dec 2020 22:47:57 +0000 (UTC) Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-63-YFXAbFmjPi6GLK5JKEFnEg-1; Wed, 23 Dec 2020 17:47:55 -0500 X-MC-Unique: YFXAbFmjPi6GLK5JKEFnEg-1 Received: by mail.kernel.org (Postfix) with ESMTPSA id A86EA224BE; Wed, 23 Dec 2020 22:39:08 +0000 (UTC) From: Ard Biesheuvel To: linux-crypto@vger.kernel.org Date: Wed, 23 Dec 2020 23:38:35 +0100 Message-Id: <20201223223841.11311-5-ardb@kernel.org> In-Reply-To: <20201223223841.11311-1-ardb@kernel.org> References: <20201223223841.11311-1-ardb@kernel.org> MIME-Version: 1.0 X-Mimecast-Impersonation-Protect: Policy=CLT - Impersonation Protection Definition; Similar Internal Domain=false; Similar Monitored External Domain=false; Custom External Domain=false; Mimecast External Domain=false; Newly Observed Domain=false; Internal User Name=false; Custom Display Name List=false; Reply-to Address Mismatch=false; Targeted Threat Dictionary=false; Mimecast Threat Dictionary=false; Custom Threat Dictionary=false X-Scanned-By: MIMEDefang 2.78 on 10.11.54.3 X-MIME-Autoconverted: from quoted-printable to 8bit by lists01.pubmisc.prod.ext.phx2.redhat.com id 0BNMlwtW014942 X-loop: dm-devel@redhat.com X-Mailman-Approved-At: Mon, 04 Jan 2021 14:03:11 -0500 Cc: Herbert Xu , Mike Snitzer , Ard Biesheuvel , Eric Biggers , dm-devel@redhat.com, Milan Broz , Megha Dey Subject: [dm-devel] [RFC PATCH 04/10] crypto: x86/twofish - switch to XTS template X-BeenThere: dm-devel@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: device-mapper development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: dm-devel-bounces@redhat.com Errors-To: dm-devel-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.11 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=dm-devel-bounces@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Tm93IHRoYXQgdGhlIFhUUyB0ZW1wbGF0ZSBjYW4gd3JhcCBhY2NlbGVyYXRlZCBFQ0IgbW9kZXMs IGl0IGNhbiBiZQp1c2VkIHRvIGltcGxlbWVudCBUd29maXNoIGluIFhUUyBtb2RlIGFzIHdlbGws IHdoaWNoIHR1cm5zIG91dCB0bwpiZSBhdCBsZWFzdCBhcyBmYXN0LCBhbmQgc29tZXRpbWVzIGV2 ZW4gZmFzdGVyCgpTaWduZWQtb2ZmLWJ5OiBBcmQgQmllc2hldXZlbCA8YXJkYkBrZXJuZWwub3Jn PgotLS0KIGFyY2gveDg2L2NyeXB0by90d29maXNoLWF2eC14ODZfNjQtYXNtXzY0LlMgfCA1MyAt LS0tLS0tLS0tLQogYXJjaC94ODYvY3J5cHRvL3R3b2Zpc2hfYXZ4X2dsdWUuYyAgICAgICAgICB8 IDk4IC0tLS0tLS0tLS0tLS0tLS0tLS0tCiAyIGZpbGVzIGNoYW5nZWQsIDE1MSBkZWxldGlvbnMo LSkKCmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9jcnlwdG8vdHdvZmlzaC1hdngteDg2XzY0LWFzbV82 NC5TIGIvYXJjaC94ODYvY3J5cHRvL3R3b2Zpc2gtYXZ4LXg4Nl82NC1hc21fNjQuUwppbmRleCBh NTE1MTM5M2JiMmYuLjg0ZTYxZWYwMzYzOCAxMDA2NDQKLS0tIGEvYXJjaC94ODYvY3J5cHRvL3R3 b2Zpc2gtYXZ4LXg4Nl82NC1hc21fNjQuUworKysgYi9hcmNoL3g4Ni9jcnlwdG8vdHdvZmlzaC1h dngteDg2XzY0LWFzbV82NC5TCkBAIC0xOSwxMSArMTksNiBAQAogLkxic3dhcDEyOF9tYXNrOgog CS5ieXRlIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEs IDAKIAotLnNlY3Rpb24JLnJvZGF0YS5jc3QxNi54dHNfZ2YxMjhtdWxfYW5kX3NobDFfbWFzaywg ImFNIiwgQHByb2diaXRzLCAxNgotLmFsaWduIDE2Ci0uTHh0c19nZjEyOG11bF9hbmRfc2hsMV9t YXNrOgotCS5ieXRlIDB4ODcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEsIDAsIDAsIDAsIDAsIDAs IDAsIDAKLQogLnRleHQKIAogLyogc3RydWN0dXJlIG9mIGNyeXB0byBjb250ZXh0ICovCkBAIC00 MDYsNTEgKzQwMSwzIEBAIFNZTV9GVU5DX1NUQVJUKHR3b2Zpc2hfY3RyXzh3YXkpCiAJRlJBTUVf RU5ECiAJcmV0OwogU1lNX0ZVTkNfRU5EKHR3b2Zpc2hfY3RyXzh3YXkpCi0KLVNZTV9GVU5DX1NU QVJUKHR3b2Zpc2hfeHRzX2VuY184d2F5KQotCS8qIGlucHV0OgotCSAqCSVyZGk6IGN0eCwgQ1RY Ci0JICoJJXJzaTogZHN0Ci0JICoJJXJkeDogc3JjCi0JICoJJXJjeDogaXYgKHQg4oqVIM6x4oG/ IOKIiCBHRigywrnCsuKBuCkpCi0JICovCi0JRlJBTUVfQkVHSU4KLQotCW1vdnEgJXJzaSwgJXIx MTsKLQotCS8qIHJlZ3MgPD0gc3JjLCBkc3QgPD0gSVZzLCByZWdzIDw9IHJlZ3MgeG9yIElWcyAq LwotCWxvYWRfeHRzXzh3YXkoJXJjeCwgJXJkeCwgJXJzaSwgUkExLCBSQjEsIFJDMSwgUkQxLCBS QTIsIFJCMiwgUkMyLCBSRDIsCi0JCSAgICAgIFJYMCwgUlgxLCBSWTAsIC5MeHRzX2dmMTI4bXVs X2FuZF9zaGwxX21hc2spOwotCi0JY2FsbCBfX3R3b2Zpc2hfZW5jX2Jsazg7Ci0KLQkvKiBkc3Qg PD0gcmVncyB4b3IgSVZzKGluIGRzdCkgKi8KLQlzdG9yZV94dHNfOHdheSglcjExLCBSQzEsIFJE MSwgUkExLCBSQjEsIFJDMiwgUkQyLCBSQTIsIFJCMik7Ci0KLQlGUkFNRV9FTkQKLQlyZXQ7Ci1T WU1fRlVOQ19FTkQodHdvZmlzaF94dHNfZW5jXzh3YXkpCi0KLVNZTV9GVU5DX1NUQVJUKHR3b2Zp c2hfeHRzX2RlY184d2F5KQotCS8qIGlucHV0OgotCSAqCSVyZGk6IGN0eCwgQ1RYCi0JICoJJXJz aTogZHN0Ci0JICoJJXJkeDogc3JjCi0JICoJJXJjeDogaXYgKHQg4oqVIM6x4oG/IOKIiCBHRigy wrnCsuKBuCkpCi0JICovCi0JRlJBTUVfQkVHSU4KLQotCW1vdnEgJXJzaSwgJXIxMTsKLQotCS8q IHJlZ3MgPD0gc3JjLCBkc3QgPD0gSVZzLCByZWdzIDw9IHJlZ3MgeG9yIElWcyAqLwotCWxvYWRf eHRzXzh3YXkoJXJjeCwgJXJkeCwgJXJzaSwgUkMxLCBSRDEsIFJBMSwgUkIxLCBSQzIsIFJEMiwg UkEyLCBSQjIsCi0JCSAgICAgIFJYMCwgUlgxLCBSWTAsIC5MeHRzX2dmMTI4bXVsX2FuZF9zaGwx X21hc2spOwotCi0JY2FsbCBfX3R3b2Zpc2hfZGVjX2Jsazg7Ci0KLQkvKiBkc3QgPD0gcmVncyB4 b3IgSVZzKGluIGRzdCkgKi8KLQlzdG9yZV94dHNfOHdheSglcjExLCBSQTEsIFJCMSwgUkMxLCBS RDEsIFJBMiwgUkIyLCBSQzIsIFJEMik7Ci0KLQlGUkFNRV9FTkQKLQlyZXQ7Ci1TWU1fRlVOQ19F TkQodHdvZmlzaF94dHNfZGVjXzh3YXkpCmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9jcnlwdG8vdHdv ZmlzaF9hdnhfZ2x1ZS5jIGIvYXJjaC94ODYvY3J5cHRvL3R3b2Zpc2hfYXZ4X2dsdWUuYwppbmRl eCAyZGJjOGNlMzczMGUuLjdiNTM5YmJiMTA4ZiAxMDA2NDQKLS0tIGEvYXJjaC94ODYvY3J5cHRv L3R3b2Zpc2hfYXZ4X2dsdWUuYworKysgYi9hcmNoL3g4Ni9jcnlwdG8vdHdvZmlzaF9hdnhfZ2x1 ZS5jCkBAIC0xNSw3ICsxNSw2IEBACiAjaW5jbHVkZSA8Y3J5cHRvL2FsZ2FwaS5oPgogI2luY2x1 ZGUgPGNyeXB0by9pbnRlcm5hbC9zaW1kLmg+CiAjaW5jbHVkZSA8Y3J5cHRvL3R3b2Zpc2guaD4K LSNpbmNsdWRlIDxjcnlwdG8veHRzLmg+CiAjaW5jbHVkZSA8YXNtL2NyeXB0by9nbHVlX2hlbHBl ci5oPgogI2luY2x1ZGUgPGFzbS9jcnlwdG8vdHdvZmlzaC5oPgogCkBAIC0yOSwxMSArMjgsNiBA QCBhc21saW5rYWdlIHZvaWQgdHdvZmlzaF9jYmNfZGVjXzh3YXkoY29uc3Qgdm9pZCAqY3R4LCB1 OCAqZHN0LCBjb25zdCB1OCAqc3JjKTsKIGFzbWxpbmthZ2Ugdm9pZCB0d29maXNoX2N0cl84d2F5 KGNvbnN0IHZvaWQgKmN0eCwgdTggKmRzdCwgY29uc3QgdTggKnNyYywKIAkJCQkgbGUxMjggKml2 KTsKIAotYXNtbGlua2FnZSB2b2lkIHR3b2Zpc2hfeHRzX2VuY184d2F5KGNvbnN0IHZvaWQgKmN0 eCwgdTggKmRzdCwgY29uc3QgdTggKnNyYywKLQkJCQkgICAgIGxlMTI4ICppdik7Ci1hc21saW5r YWdlIHZvaWQgdHdvZmlzaF94dHNfZGVjXzh3YXkoY29uc3Qgdm9pZCAqY3R4LCB1OCAqZHN0LCBj b25zdCB1OCAqc3JjLAotCQkJCSAgICAgbGUxMjggKml2KTsKLQogc3RhdGljIGludCB0d29maXNo X3NldGtleV9za2NpcGhlcihzdHJ1Y3QgY3J5cHRvX3NrY2lwaGVyICp0Zm0sCiAJCQkJICAgY29u c3QgdTggKmtleSwgdW5zaWduZWQgaW50IGtleWxlbikKIHsKQEAgLTQ1LDQwICszOSw2IEBAIHN0 YXRpYyBpbmxpbmUgdm9pZCB0d29maXNoX2VuY19ibGtfM3dheShjb25zdCB2b2lkICpjdHgsIHU4 ICpkc3QsIGNvbnN0IHU4ICpzcmMpCiAJX190d29maXNoX2VuY19ibGtfM3dheShjdHgsIGRzdCwg c3JjLCBmYWxzZSk7CiB9CiAKLXN0YXRpYyB2b2lkIHR3b2Zpc2hfeHRzX2VuYyhjb25zdCB2b2lk ICpjdHgsIHU4ICpkc3QsIGNvbnN0IHU4ICpzcmMsIGxlMTI4ICppdikKLXsKLQlnbHVlX3h0c19j cnlwdF8xMjhiaXRfb25lKGN0eCwgZHN0LCBzcmMsIGl2LCB0d29maXNoX2VuY19ibGspOwotfQot Ci1zdGF0aWMgdm9pZCB0d29maXNoX3h0c19kZWMoY29uc3Qgdm9pZCAqY3R4LCB1OCAqZHN0LCBj b25zdCB1OCAqc3JjLCBsZTEyOCAqaXYpCi17Ci0JZ2x1ZV94dHNfY3J5cHRfMTI4Yml0X29uZShj dHgsIGRzdCwgc3JjLCBpdiwgdHdvZmlzaF9kZWNfYmxrKTsKLX0KLQotc3RydWN0IHR3b2Zpc2hf eHRzX2N0eCB7Ci0Jc3RydWN0IHR3b2Zpc2hfY3R4IHR3ZWFrX2N0eDsKLQlzdHJ1Y3QgdHdvZmlz aF9jdHggY3J5cHRfY3R4OwotfTsKLQotc3RhdGljIGludCB4dHNfdHdvZmlzaF9zZXRrZXkoc3Ry dWN0IGNyeXB0b19za2NpcGhlciAqdGZtLCBjb25zdCB1OCAqa2V5LAotCQkJICAgICAgdW5zaWdu ZWQgaW50IGtleWxlbikKLXsKLQlzdHJ1Y3QgdHdvZmlzaF94dHNfY3R4ICpjdHggPSBjcnlwdG9f c2tjaXBoZXJfY3R4KHRmbSk7Ci0JaW50IGVycjsKLQotCWVyciA9IHh0c192ZXJpZnlfa2V5KHRm bSwga2V5LCBrZXlsZW4pOwotCWlmIChlcnIpCi0JCXJldHVybiBlcnI7Ci0KLQkvKiBmaXJzdCBo YWxmIG9mIHh0cy1rZXkgaXMgZm9yIGNyeXB0ICovCi0JZXJyID0gX190d29maXNoX3NldGtleSgm Y3R4LT5jcnlwdF9jdHgsIGtleSwga2V5bGVuIC8gMik7Ci0JaWYgKGVycikKLQkJcmV0dXJuIGVy cjsKLQotCS8qIHNlY29uZCBoYWxmIG9mIHh0cy1rZXkgaXMgZm9yIHR3ZWFrICovCi0JcmV0dXJu IF9fdHdvZmlzaF9zZXRrZXkoJmN0eC0+dHdlYWtfY3R4LCBrZXkgKyBrZXlsZW4gLyAyLCBrZXls ZW4gLyAyKTsKLX0KLQogc3RhdGljIGNvbnN0IHN0cnVjdCBjb21tb25fZ2x1ZV9jdHggdHdvZmlz aF9lbmMgPSB7CiAJLm51bV9mdW5jcyA9IDMsCiAJLmZwdV9ibG9ja3NfbGltaXQgPSBUV09GSVNI X1BBUkFMTEVMX0JMT0NLUywKQEAgLTExMSwxOSArNzEsNiBAQCBzdGF0aWMgY29uc3Qgc3RydWN0 IGNvbW1vbl9nbHVlX2N0eCB0d29maXNoX2N0ciA9IHsKIAl9IH0KIH07CiAKLXN0YXRpYyBjb25z dCBzdHJ1Y3QgY29tbW9uX2dsdWVfY3R4IHR3b2Zpc2hfZW5jX3h0cyA9IHsKLQkubnVtX2Z1bmNz ID0gMiwKLQkuZnB1X2Jsb2Nrc19saW1pdCA9IFRXT0ZJU0hfUEFSQUxMRUxfQkxPQ0tTLAotCi0J LmZ1bmNzID0geyB7Ci0JCS5udW1fYmxvY2tzID0gVFdPRklTSF9QQVJBTExFTF9CTE9DS1MsCi0J CS5mbl91ID0geyAueHRzID0gdHdvZmlzaF94dHNfZW5jXzh3YXkgfQotCX0sIHsKLQkJLm51bV9i bG9ja3MgPSAxLAotCQkuZm5fdSA9IHsgLnh0cyA9IHR3b2Zpc2hfeHRzX2VuYyB9Ci0JfSB9Ci19 OwotCiBzdGF0aWMgY29uc3Qgc3RydWN0IGNvbW1vbl9nbHVlX2N0eCB0d29maXNoX2RlYyA9IHsK IAkubnVtX2Z1bmNzID0gMywKIAkuZnB1X2Jsb2Nrc19saW1pdCA9IFRXT0ZJU0hfUEFSQUxMRUxf QkxPQ0tTLApAQCAtMTU2LDE5ICsxMDMsNiBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGNvbW1vbl9n bHVlX2N0eCB0d29maXNoX2RlY19jYmMgPSB7CiAJfSB9CiB9OwogCi1zdGF0aWMgY29uc3Qgc3Ry dWN0IGNvbW1vbl9nbHVlX2N0eCB0d29maXNoX2RlY194dHMgPSB7Ci0JLm51bV9mdW5jcyA9IDIs Ci0JLmZwdV9ibG9ja3NfbGltaXQgPSBUV09GSVNIX1BBUkFMTEVMX0JMT0NLUywKLQotCS5mdW5j cyA9IHsgewotCQkubnVtX2Jsb2NrcyA9IFRXT0ZJU0hfUEFSQUxMRUxfQkxPQ0tTLAotCQkuZm5f dSA9IHsgLnh0cyA9IHR3b2Zpc2hfeHRzX2RlY184d2F5IH0KLQl9LCB7Ci0JCS5udW1fYmxvY2tz ID0gMSwKLQkJLmZuX3UgPSB7IC54dHMgPSB0d29maXNoX3h0c19kZWMgfQotCX0gfQotfTsKLQog c3RhdGljIGludCBlY2JfZW5jcnlwdChzdHJ1Y3Qgc2tjaXBoZXJfcmVxdWVzdCAqcmVxKQogewog CXJldHVybiBnbHVlX2VjYl9yZXFfMTI4Yml0KCZ0d29maXNoX2VuYywgcmVxKTsKQEAgLTE5NCwy NCArMTI4LDYgQEAgc3RhdGljIGludCBjdHJfY3J5cHQoc3RydWN0IHNrY2lwaGVyX3JlcXVlc3Qg KnJlcSkKIAlyZXR1cm4gZ2x1ZV9jdHJfcmVxXzEyOGJpdCgmdHdvZmlzaF9jdHIsIHJlcSk7CiB9 CiAKLXN0YXRpYyBpbnQgeHRzX2VuY3J5cHQoc3RydWN0IHNrY2lwaGVyX3JlcXVlc3QgKnJlcSkK LXsKLQlzdHJ1Y3QgY3J5cHRvX3NrY2lwaGVyICp0Zm0gPSBjcnlwdG9fc2tjaXBoZXJfcmVxdGZt KHJlcSk7Ci0Jc3RydWN0IHR3b2Zpc2hfeHRzX2N0eCAqY3R4ID0gY3J5cHRvX3NrY2lwaGVyX2N0 eCh0Zm0pOwotCi0JcmV0dXJuIGdsdWVfeHRzX3JlcV8xMjhiaXQoJnR3b2Zpc2hfZW5jX3h0cywg cmVxLCB0d29maXNoX2VuY19ibGssCi0JCQkJICAgJmN0eC0+dHdlYWtfY3R4LCAmY3R4LT5jcnlw dF9jdHgsIGZhbHNlKTsKLX0KLQotc3RhdGljIGludCB4dHNfZGVjcnlwdChzdHJ1Y3Qgc2tjaXBo ZXJfcmVxdWVzdCAqcmVxKQotewotCXN0cnVjdCBjcnlwdG9fc2tjaXBoZXIgKnRmbSA9IGNyeXB0 b19za2NpcGhlcl9yZXF0Zm0ocmVxKTsKLQlzdHJ1Y3QgdHdvZmlzaF94dHNfY3R4ICpjdHggPSBj cnlwdG9fc2tjaXBoZXJfY3R4KHRmbSk7Ci0KLQlyZXR1cm4gZ2x1ZV94dHNfcmVxXzEyOGJpdCgm dHdvZmlzaF9kZWNfeHRzLCByZXEsIHR3b2Zpc2hfZW5jX2JsaywKLQkJCQkgICAmY3R4LT50d2Vh a19jdHgsICZjdHgtPmNyeXB0X2N0eCwgdHJ1ZSk7Ci19Ci0KIHN0YXRpYyBzdHJ1Y3Qgc2tjaXBo ZXJfYWxnIHR3b2Zpc2hfYWxnc1tdID0gewogCXsKIAkJLmJhc2UuY3JhX25hbWUJCT0gIl9fZWNi KHR3b2Zpc2gpIiwKQEAgLTI1NSwyMCArMTcxLDYgQEAgc3RhdGljIHN0cnVjdCBza2NpcGhlcl9h bGcgdHdvZmlzaF9hbGdzW10gPSB7CiAJCS5zZXRrZXkJCQk9IHR3b2Zpc2hfc2V0a2V5X3NrY2lw aGVyLAogCQkuZW5jcnlwdAkJPSBjdHJfY3J5cHQsCiAJCS5kZWNyeXB0CQk9IGN0cl9jcnlwdCwK LQl9LCB7Ci0JCS5iYXNlLmNyYV9uYW1lCQk9ICJfX3h0cyh0d29maXNoKSIsCi0JCS5iYXNlLmNy YV9kcml2ZXJfbmFtZQk9ICJfX3h0cy10d29maXNoLWF2eCIsCi0JCS5iYXNlLmNyYV9wcmlvcml0 eQk9IDQwMCwKLQkJLmJhc2UuY3JhX2ZsYWdzCQk9IENSWVBUT19BTEdfSU5URVJOQUwsCi0JCS5i YXNlLmNyYV9ibG9ja3NpemUJPSBURl9CTE9DS19TSVpFLAotCQkuYmFzZS5jcmFfY3R4c2l6ZQk9 IHNpemVvZihzdHJ1Y3QgdHdvZmlzaF94dHNfY3R4KSwKLQkJLmJhc2UuY3JhX21vZHVsZQk9IFRI SVNfTU9EVUxFLAotCQkubWluX2tleXNpemUJCT0gMiAqIFRGX01JTl9LRVlfU0laRSwKLQkJLm1h eF9rZXlzaXplCQk9IDIgKiBURl9NQVhfS0VZX1NJWkUsCi0JCS5pdnNpemUJCQk9IFRGX0JMT0NL X1NJWkUsCi0JCS5zZXRrZXkJCQk9IHh0c190d29maXNoX3NldGtleSwKLQkJLmVuY3J5cHQJCT0g eHRzX2VuY3J5cHQsCi0JCS5kZWNyeXB0CQk9IHh0c19kZWNyeXB0LAogCX0sCiB9OwogCi0tIAoy LjE3LjEKCgotLQpkbS1kZXZlbCBtYWlsaW5nIGxpc3QKZG0tZGV2ZWxAcmVkaGF0LmNvbQpodHRw czovL3d3dy5yZWRoYXQuY29tL21haWxtYW4vbGlzdGluZm8vZG0tZGV2ZWw= 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=-19.0 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,USER_AGENT_GIT 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 68EB2C433E9 for ; Wed, 23 Dec 2020 22:39:58 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 49A60225AC for ; Wed, 23 Dec 2020 22:39:58 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726514AbgLWWjv (ORCPT ); Wed, 23 Dec 2020 17:39:51 -0500 Received: from mail.kernel.org ([198.145.29.99]:59286 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725811AbgLWWjv (ORCPT ); Wed, 23 Dec 2020 17:39:51 -0500 Received: by mail.kernel.org (Postfix) with ESMTPSA id A86EA224BE; Wed, 23 Dec 2020 22:39:08 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1608763150; bh=+p4avnU2FgBHzsQo2IyD2SGAaI01uI4O4EWZUHg7WG0=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=ssQcB/iBUm5jweKVi4F6yPDbIdg7bPi6YLQ9sOn5ahnAKxsyfHhGXXGznG5MXfrZk zRT6lvU9qi1d11tduCMVl4sx1Wxt3YJGWVx6v1PIJ2itM4ff72gu6QaBHk1ow4Izy+ 66htjA/RP3KjzT9vAtfR4tQzgkauFoFWovXhU24QjWeqIBorS63FfUHovdVRlAVWw6 lJ/syt2gpHbEvAQcOoJ28maFhZzdH1M+oqF2JgUJjRbOkqX7WkmFHRTrKMMz4PxZPj 21RE5vwo5NqjEPflmN3T/rLDmb2z8Uxy29bK4b7hQWl246dw3QMdbXLFD+w7hUmg5R pwj1xXTO+ysDQ== From: Ard Biesheuvel To: linux-crypto@vger.kernel.org Cc: dm-devel@redhat.com, Ard Biesheuvel , Megha Dey , Eric Biggers , Herbert Xu , Milan Broz , Mike Snitzer Subject: [RFC PATCH 04/10] crypto: x86/twofish - switch to XTS template Date: Wed, 23 Dec 2020 23:38:35 +0100 Message-Id: <20201223223841.11311-5-ardb@kernel.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20201223223841.11311-1-ardb@kernel.org> References: <20201223223841.11311-1-ardb@kernel.org> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-crypto@vger.kernel.org Now that the XTS template can wrap accelerated ECB modes, it can be used to implement Twofish in XTS mode as well, which turns out to be at least as fast, and sometimes even faster Signed-off-by: Ard Biesheuvel --- arch/x86/crypto/twofish-avx-x86_64-asm_64.S | 53 ----------- arch/x86/crypto/twofish_avx_glue.c | 98 -------------------- 2 files changed, 151 deletions(-) diff --git a/arch/x86/crypto/twofish-avx-x86_64-asm_64.S b/arch/x86/crypto/twofish-avx-x86_64-asm_64.S index a5151393bb2f..84e61ef03638 100644 --- a/arch/x86/crypto/twofish-avx-x86_64-asm_64.S +++ b/arch/x86/crypto/twofish-avx-x86_64-asm_64.S @@ -19,11 +19,6 @@ .Lbswap128_mask: .byte 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0 -.section .rodata.cst16.xts_gf128mul_and_shl1_mask, "aM", @progbits, 16 -.align 16 -.Lxts_gf128mul_and_shl1_mask: - .byte 0x87, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0 - .text /* structure of crypto context */ @@ -406,51 +401,3 @@ SYM_FUNC_START(twofish_ctr_8way) FRAME_END ret; SYM_FUNC_END(twofish_ctr_8way) - -SYM_FUNC_START(twofish_xts_enc_8way) - /* input: - * %rdi: ctx, CTX - * %rsi: dst - * %rdx: src - * %rcx: iv (t ⊕ αⁿ ∈ GF(2¹²⁸)) - */ - FRAME_BEGIN - - movq %rsi, %r11; - - /* regs <= src, dst <= IVs, regs <= regs xor IVs */ - load_xts_8way(%rcx, %rdx, %rsi, RA1, RB1, RC1, RD1, RA2, RB2, RC2, RD2, - RX0, RX1, RY0, .Lxts_gf128mul_and_shl1_mask); - - call __twofish_enc_blk8; - - /* dst <= regs xor IVs(in dst) */ - store_xts_8way(%r11, RC1, RD1, RA1, RB1, RC2, RD2, RA2, RB2); - - FRAME_END - ret; -SYM_FUNC_END(twofish_xts_enc_8way) - -SYM_FUNC_START(twofish_xts_dec_8way) - /* input: - * %rdi: ctx, CTX - * %rsi: dst - * %rdx: src - * %rcx: iv (t ⊕ αⁿ ∈ GF(2¹²⁸)) - */ - FRAME_BEGIN - - movq %rsi, %r11; - - /* regs <= src, dst <= IVs, regs <= regs xor IVs */ - load_xts_8way(%rcx, %rdx, %rsi, RC1, RD1, RA1, RB1, RC2, RD2, RA2, RB2, - RX0, RX1, RY0, .Lxts_gf128mul_and_shl1_mask); - - call __twofish_dec_blk8; - - /* dst <= regs xor IVs(in dst) */ - store_xts_8way(%r11, RA1, RB1, RC1, RD1, RA2, RB2, RC2, RD2); - - FRAME_END - ret; -SYM_FUNC_END(twofish_xts_dec_8way) diff --git a/arch/x86/crypto/twofish_avx_glue.c b/arch/x86/crypto/twofish_avx_glue.c index 2dbc8ce3730e..7b539bbb108f 100644 --- a/arch/x86/crypto/twofish_avx_glue.c +++ b/arch/x86/crypto/twofish_avx_glue.c @@ -15,7 +15,6 @@ #include #include #include -#include #include #include @@ -29,11 +28,6 @@ asmlinkage void twofish_cbc_dec_8way(const void *ctx, u8 *dst, const u8 *src); asmlinkage void twofish_ctr_8way(const void *ctx, u8 *dst, const u8 *src, le128 *iv); -asmlinkage void twofish_xts_enc_8way(const void *ctx, u8 *dst, const u8 *src, - le128 *iv); -asmlinkage void twofish_xts_dec_8way(const void *ctx, u8 *dst, const u8 *src, - le128 *iv); - static int twofish_setkey_skcipher(struct crypto_skcipher *tfm, const u8 *key, unsigned int keylen) { @@ -45,40 +39,6 @@ static inline void twofish_enc_blk_3way(const void *ctx, u8 *dst, const u8 *src) __twofish_enc_blk_3way(ctx, dst, src, false); } -static void twofish_xts_enc(const void *ctx, u8 *dst, const u8 *src, le128 *iv) -{ - glue_xts_crypt_128bit_one(ctx, dst, src, iv, twofish_enc_blk); -} - -static void twofish_xts_dec(const void *ctx, u8 *dst, const u8 *src, le128 *iv) -{ - glue_xts_crypt_128bit_one(ctx, dst, src, iv, twofish_dec_blk); -} - -struct twofish_xts_ctx { - struct twofish_ctx tweak_ctx; - struct twofish_ctx crypt_ctx; -}; - -static int xts_twofish_setkey(struct crypto_skcipher *tfm, const u8 *key, - unsigned int keylen) -{ - struct twofish_xts_ctx *ctx = crypto_skcipher_ctx(tfm); - int err; - - err = xts_verify_key(tfm, key, keylen); - if (err) - return err; - - /* first half of xts-key is for crypt */ - err = __twofish_setkey(&ctx->crypt_ctx, key, keylen / 2); - if (err) - return err; - - /* second half of xts-key is for tweak */ - return __twofish_setkey(&ctx->tweak_ctx, key + keylen / 2, keylen / 2); -} - static const struct common_glue_ctx twofish_enc = { .num_funcs = 3, .fpu_blocks_limit = TWOFISH_PARALLEL_BLOCKS, @@ -111,19 +71,6 @@ static const struct common_glue_ctx twofish_ctr = { } } }; -static const struct common_glue_ctx twofish_enc_xts = { - .num_funcs = 2, - .fpu_blocks_limit = TWOFISH_PARALLEL_BLOCKS, - - .funcs = { { - .num_blocks = TWOFISH_PARALLEL_BLOCKS, - .fn_u = { .xts = twofish_xts_enc_8way } - }, { - .num_blocks = 1, - .fn_u = { .xts = twofish_xts_enc } - } } -}; - static const struct common_glue_ctx twofish_dec = { .num_funcs = 3, .fpu_blocks_limit = TWOFISH_PARALLEL_BLOCKS, @@ -156,19 +103,6 @@ static const struct common_glue_ctx twofish_dec_cbc = { } } }; -static const struct common_glue_ctx twofish_dec_xts = { - .num_funcs = 2, - .fpu_blocks_limit = TWOFISH_PARALLEL_BLOCKS, - - .funcs = { { - .num_blocks = TWOFISH_PARALLEL_BLOCKS, - .fn_u = { .xts = twofish_xts_dec_8way } - }, { - .num_blocks = 1, - .fn_u = { .xts = twofish_xts_dec } - } } -}; - static int ecb_encrypt(struct skcipher_request *req) { return glue_ecb_req_128bit(&twofish_enc, req); @@ -194,24 +128,6 @@ static int ctr_crypt(struct skcipher_request *req) return glue_ctr_req_128bit(&twofish_ctr, req); } -static int xts_encrypt(struct skcipher_request *req) -{ - struct crypto_skcipher *tfm = crypto_skcipher_reqtfm(req); - struct twofish_xts_ctx *ctx = crypto_skcipher_ctx(tfm); - - return glue_xts_req_128bit(&twofish_enc_xts, req, twofish_enc_blk, - &ctx->tweak_ctx, &ctx->crypt_ctx, false); -} - -static int xts_decrypt(struct skcipher_request *req) -{ - struct crypto_skcipher *tfm = crypto_skcipher_reqtfm(req); - struct twofish_xts_ctx *ctx = crypto_skcipher_ctx(tfm); - - return glue_xts_req_128bit(&twofish_dec_xts, req, twofish_enc_blk, - &ctx->tweak_ctx, &ctx->crypt_ctx, true); -} - static struct skcipher_alg twofish_algs[] = { { .base.cra_name = "__ecb(twofish)", @@ -255,20 +171,6 @@ static struct skcipher_alg twofish_algs[] = { .setkey = twofish_setkey_skcipher, .encrypt = ctr_crypt, .decrypt = ctr_crypt, - }, { - .base.cra_name = "__xts(twofish)", - .base.cra_driver_name = "__xts-twofish-avx", - .base.cra_priority = 400, - .base.cra_flags = CRYPTO_ALG_INTERNAL, - .base.cra_blocksize = TF_BLOCK_SIZE, - .base.cra_ctxsize = sizeof(struct twofish_xts_ctx), - .base.cra_module = THIS_MODULE, - .min_keysize = 2 * TF_MIN_KEY_SIZE, - .max_keysize = 2 * TF_MAX_KEY_SIZE, - .ivsize = TF_BLOCK_SIZE, - .setkey = xts_twofish_setkey, - .encrypt = xts_encrypt, - .decrypt = xts_decrypt, }, }; -- 2.17.1