From patchwork Wed Sep 11 10:38:18 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Pascal van Leeuwen X-Patchwork-Id: 11140941 X-Patchwork-Delegate: herbert@gondor.apana.org.au Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 9DC4976 for ; Wed, 11 Sep 2019 11:41:15 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 71D5B2084D for ; Wed, 11 Sep 2019 11:41:15 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="tCapUBxf" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727774AbfIKLlO (ORCPT ); Wed, 11 Sep 2019 07:41:14 -0400 Received: from mail-ed1-f67.google.com ([209.85.208.67]:33525 "EHLO mail-ed1-f67.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726696AbfIKLlO (ORCPT ); Wed, 11 Sep 2019 07:41:14 -0400 Received: by mail-ed1-f67.google.com with SMTP id o9so20374723edq.0 for ; Wed, 11 Sep 2019 04:41:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=AYNFu8fdMLNug/H3N/upkSvOZWVoaglxXWaKcdOIFac=; b=tCapUBxfI0hoVJtSzz+LZ+ZSIhGkvRbdkEVGWU764kl9zvnk6ZgdnWSwsyprpdXHgX KJMYnQRjO4CHC1owJoD2JsdrVM7C+vX6+6B2r2vkjA1JfAh0DaTWuLjBWFNoJpxCMBIn iAJF1YXLSC6wPZ1ELTbXMyjhH1ZDOiQlFqVfdd0p3hT/AM/pkHsQTLsgifH7mHIolmG3 cg7o3gxiGpnwbN3HX8OcdJiZpwAfBOu6lcFaOmW841VPpUp9uXXXzcwOa+iHRbduiOc5 qBUhgxI79IH3gnFTVdeRzwqfkZ26NYSZyA+wdLyTuyqmqSFj+eklQfxGVUuQpQBntfHL 2NPw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=AYNFu8fdMLNug/H3N/upkSvOZWVoaglxXWaKcdOIFac=; b=bWRjAD9vIkVjPAvE3QL/zXzZu4oiVdtGEeUxfRIisUcAYyBwnbPRpN1ZIz0ZCYZYxO gfeiuDZv5GvbSAjo2WzYv9eKZhU+QFHFUpHGPvvEmKskEB9B28HC3OW8Jbwoux35aVut y8NJaf/G+VuSd7T6Rc4Lgx/aE4WIgE0A6tGfdMcZTvWXuACRmlT8TJJ6qQgTS18yVgjC cPhBtGn/9LKzo7OLhl7V/xKomMimYi9GaZKCcn4p9+DMI2WS1TMjjCKimovmeWPFQhD3 Qwudn/7BMn66JEkDMToKj3kIdtt0R6DtORfNMdsUroWS+2ekotgD7+v+sAf4l3B7q7Z2 Cpgw== X-Gm-Message-State: APjAAAUPC5LFVUeEw+JA1cbq+tvyHorP/8KONszWmvhC2M8g6IAHSUNQ NMIWdMiSmfA7RlUIrr5+j81f7RYx X-Google-Smtp-Source: APXvYqwAC2+RQOEqd+byL4we/0gLff6zrJA5GVrpkg2p5VyQZ4jN6R8uKMaOVuI/TeyJXK7jRDtOsA== X-Received: by 2002:a17:906:2f92:: with SMTP id w18mr11620761eji.33.1568202071890; Wed, 11 Sep 2019 04:41:11 -0700 (PDT) Received: from localhost.localdomain.com ([188.204.2.113]) by smtp.gmail.com with ESMTPSA id z6sm2448022ejo.26.2019.09.11.04.41.11 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 11 Sep 2019 04:41:11 -0700 (PDT) From: Pascal van Leeuwen X-Google-Original-From: Pascal van Leeuwen To: linux-crypto@vger.kernel.org Cc: antoine.tenart@bootlin.com, herbert@gondor.apana.org.au, davem@davemloft.net, Pascal van Leeuwen Subject: [PATCH 1/7] crypto: inside-secure - Add support for the ecb(sm4) skcipher Date: Wed, 11 Sep 2019 12:38:18 +0200 Message-Id: <1568198304-8101-2-git-send-email-pvanleeuwen@verimatrix.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1568198304-8101-1-git-send-email-pvanleeuwen@verimatrix.com> References: <1568198304-8101-1-git-send-email-pvanleeuwen@verimatrix.com> Sender: linux-crypto-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-crypto@vger.kernel.org This patch adds support for SM4 in ECB mode, i.e. skcipher ecb(sm4). Signed-off-by: Pascal van Leeuwen --- drivers/crypto/inside-secure/safexcel.c | 1 + drivers/crypto/inside-secure/safexcel.h | 2 + drivers/crypto/inside-secure/safexcel_cipher.c | 90 ++++++++++++++++++++++++++ 3 files changed, 93 insertions(+) diff --git a/drivers/crypto/inside-secure/safexcel.c b/drivers/crypto/inside-secure/safexcel.c index 7d907d5..fe785e8 100644 --- a/drivers/crypto/inside-secure/safexcel.c +++ b/drivers/crypto/inside-secure/safexcel.c @@ -1178,6 +1178,7 @@ static int safexcel_request_ring_irq(void *pdev, int irqid, &safexcel_alg_chachapoly_esp, &safexcel_alg_sm3, &safexcel_alg_hmac_sm3, + &safexcel_alg_ecb_sm4, }; static int safexcel_register_algorithms(struct safexcel_crypto_priv *priv) diff --git a/drivers/crypto/inside-secure/safexcel.h b/drivers/crypto/inside-secure/safexcel.h index 7ee09fe..970b5cd 100644 --- a/drivers/crypto/inside-secure/safexcel.h +++ b/drivers/crypto/inside-secure/safexcel.h @@ -359,6 +359,7 @@ struct safexcel_context_record { #define CONTEXT_CONTROL_CRYPTO_ALG_AES192 (0x6 << 17) #define CONTEXT_CONTROL_CRYPTO_ALG_AES256 (0x7 << 17) #define CONTEXT_CONTROL_CRYPTO_ALG_CHACHA20 (0x8 << 17) +#define CONTEXT_CONTROL_CRYPTO_ALG_SM4 (0xd << 17) #define CONTEXT_CONTROL_DIGEST_PRECOMPUTED (0x1 << 21) #define CONTEXT_CONTROL_DIGEST_XCM (0x2 << 21) #define CONTEXT_CONTROL_DIGEST_HMAC (0x3 << 21) @@ -872,5 +873,6 @@ int safexcel_hmac_setkey(const char *alg, const u8 *key, unsigned int keylen, extern struct safexcel_alg_template safexcel_alg_chachapoly_esp; extern struct safexcel_alg_template safexcel_alg_sm3; extern struct safexcel_alg_template safexcel_alg_hmac_sm3; +extern struct safexcel_alg_template safexcel_alg_ecb_sm4; #endif diff --git a/drivers/crypto/inside-secure/safexcel_cipher.c b/drivers/crypto/inside-secure/safexcel_cipher.c index 00bf220..fc75f2f 100644 --- a/drivers/crypto/inside-secure/safexcel_cipher.c +++ b/drivers/crypto/inside-secure/safexcel_cipher.c @@ -19,6 +19,7 @@ #include #include #include +#include #include #include #include @@ -36,6 +37,7 @@ enum safexcel_cipher_alg { SAFEXCEL_3DES, SAFEXCEL_AES, SAFEXCEL_CHACHA20, + SAFEXCEL_SM4, }; struct safexcel_cipher_ctx { @@ -530,6 +532,9 @@ static int safexcel_context_control(struct safexcel_cipher_ctx *ctx, } else if (ctx->alg == SAFEXCEL_CHACHA20) { cdesc->control_data.control0 |= CONTEXT_CONTROL_CRYPTO_ALG_CHACHA20; + } else if (ctx->alg == SAFEXCEL_SM4) { + cdesc->control_data.control0 |= + CONTEXT_CONTROL_CRYPTO_ALG_SM4; } return 0; @@ -2620,3 +2625,88 @@ struct safexcel_alg_template safexcel_alg_chachapoly_esp = { }, }, }; + +static int safexcel_skcipher_sm4_setkey(struct crypto_skcipher *ctfm, + const u8 *key, unsigned int len) +{ + struct crypto_tfm *tfm = crypto_skcipher_tfm(ctfm); + struct safexcel_cipher_ctx *ctx = crypto_tfm_ctx(tfm); + struct safexcel_crypto_priv *priv = ctx->priv; + int i; + + if (len != SM4_KEY_SIZE) { + crypto_skcipher_set_flags(ctfm, CRYPTO_TFM_RES_BAD_KEY_LEN); + return -EINVAL; + } + + if (priv->flags & EIP197_TRC_CACHE && ctx->base.ctxr_dma) { + for (i = 0; i < SM4_KEY_SIZE / sizeof(u32); i++) { + if (ctx->key[i] != + get_unaligned_le32(key + i * sizeof(u32))) { + ctx->base.needs_inv = true; + break; + } + } + } + + for (i = 0; i < SM4_KEY_SIZE / sizeof(u32); i++) + ctx->key[i] = get_unaligned_le32(key + i * sizeof(u32)); + ctx->key_len = SM4_KEY_SIZE; + + return 0; +} + +static int safexcel_sm4_blk_encrypt(struct skcipher_request *req) +{ + /* Workaround for HW bug: EIP96 4.3 does not report blocksize error */ + if (req->cryptlen & (SM4_BLOCK_SIZE - 1)) + return -EINVAL; + else + return safexcel_queue_req(&req->base, skcipher_request_ctx(req), + SAFEXCEL_ENCRYPT); +} + +static int safexcel_sm4_blk_decrypt(struct skcipher_request *req) +{ + /* Workaround for HW bug: EIP96 4.3 does not report blocksize error */ + if (req->cryptlen & (SM4_BLOCK_SIZE - 1)) + return -EINVAL; + else + return safexcel_queue_req(&req->base, skcipher_request_ctx(req), + SAFEXCEL_DECRYPT); +} + +static int safexcel_skcipher_sm4_ecb_cra_init(struct crypto_tfm *tfm) +{ + struct safexcel_cipher_ctx *ctx = crypto_tfm_ctx(tfm); + + safexcel_skcipher_cra_init(tfm); + ctx->alg = SAFEXCEL_SM4; + ctx->mode = CONTEXT_CONTROL_CRYPTO_MODE_ECB; + return 0; +} + +struct safexcel_alg_template safexcel_alg_ecb_sm4 = { + .type = SAFEXCEL_ALG_TYPE_SKCIPHER, + .algo_mask = SAFEXCEL_ALG_SM4, + .alg.skcipher = { + .setkey = safexcel_skcipher_sm4_setkey, + .encrypt = safexcel_sm4_blk_encrypt, + .decrypt = safexcel_sm4_blk_decrypt, + .min_keysize = SM4_KEY_SIZE, + .max_keysize = SM4_KEY_SIZE, + .base = { + .cra_name = "ecb(sm4)", + .cra_driver_name = "safexcel-ecb-sm4", + .cra_priority = SAFEXCEL_CRA_PRIORITY, + .cra_flags = CRYPTO_ALG_ASYNC | + CRYPTO_ALG_KERN_DRIVER_ONLY, + .cra_blocksize = SM4_BLOCK_SIZE, + .cra_ctxsize = sizeof(struct safexcel_cipher_ctx), + .cra_alignmask = 0, + .cra_init = safexcel_skcipher_sm4_ecb_cra_init, + .cra_exit = safexcel_skcipher_cra_exit, + .cra_module = THIS_MODULE, + }, + }, +}; From patchwork Wed Sep 11 10:38:19 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Pascal van Leeuwen X-Patchwork-Id: 11140945 X-Patchwork-Delegate: herbert@gondor.apana.org.au Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 0417C14E5 for ; Wed, 11 Sep 2019 11:41:16 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id D6AC52084D for ; Wed, 11 Sep 2019 11:41:15 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="S+w/yNpp" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727740AbfIKLlO (ORCPT ); Wed, 11 Sep 2019 07:41:14 -0400 Received: from mail-ed1-f51.google.com ([209.85.208.51]:33799 "EHLO mail-ed1-f51.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727745AbfIKLlO (ORCPT ); Wed, 11 Sep 2019 07:41:14 -0400 Received: by mail-ed1-f51.google.com with SMTP id c20so11316080eds.1 for ; Wed, 11 Sep 2019 04:41:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=ulbi2R+ZAw3wpW+xEZ5EPih00BeH2OA8SyaWTPW8uyk=; b=S+w/yNppjRaNnV1OdcxsgYoGKtfGLWET9DFblphXF6mFdiRrXqGXJKfVp9PWdLQFu0 ClCm0VjqjnGcuRqpuf430u5GmRCt7H7PAQw/CpMWMjMqz64HIjzTQywz0+wZiu/8Q3Kv NydFtVFdp6TDIz/0rcexLhoNS1JjrCKQPvrvxg5f5Nn0Wj1d6rmjbNtiBrXmonXpmtAR FD6Q/k01o8ZZvwwNdZBl/ZoOAJqRc96gRiJq5/DcuSJd8qbiV9SiN+68YCwAAlINcv/z gENLfIU5sUmac6Oe68CGmbwJicugy9ii+8bqCiqmd1foqWXmf/TCJbpWDFwdDv6wGhEL zkuw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=ulbi2R+ZAw3wpW+xEZ5EPih00BeH2OA8SyaWTPW8uyk=; b=Yjc/wlTwmRPUpeUp82Pz+YgVi7t26w6WYZIiuGZnXNB36bIHcEjdW0DZ/QAkD0EwKb K5DOq+yvbXUKfpxvAapaBwMEqimuqsMpk5FKdEMO70mXSSzut+0McIHuGgua/0rVLe8I qq+UEqItyHcPFacsdhx13jgu04ONeWTLVR5OLv3t0HfNpQSnxYJUVQD6BRNLHltxzvgf DGmm1+IwvNLcvRdZUByD4UqPa5DyvBKLa5MlmoQm1oDpiVVP9Jd7JWdrBBfThm7oUJze qygmbeNUMoif0t+x3Vu2lKxYuApl45YvnfImeqHk/dUcsG7G6IX3smEaqDkWpQAIAM6o noZg== X-Gm-Message-State: APjAAAVwUZJmgC7lRy4/S+3X0n23IA9jt60ObQ5c+LWoGaSRFVZKo8ee HZ7GrQsDt2BES8WsdF4Qk7dznpFF X-Google-Smtp-Source: APXvYqyURXlrggL4x3kaTYS8E80PlpxSl0Ipll5u9DolM34U8ZcYKV37z247J8Vn32L58698TmGPeg== X-Received: by 2002:a17:906:308a:: with SMTP id 10mr25880532ejv.277.1568202072682; Wed, 11 Sep 2019 04:41:12 -0700 (PDT) Received: from localhost.localdomain.com ([188.204.2.113]) by smtp.gmail.com with ESMTPSA id z6sm2448022ejo.26.2019.09.11.04.41.11 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 11 Sep 2019 04:41:12 -0700 (PDT) From: Pascal van Leeuwen X-Google-Original-From: Pascal van Leeuwen To: linux-crypto@vger.kernel.org Cc: antoine.tenart@bootlin.com, herbert@gondor.apana.org.au, davem@davemloft.net, Pascal van Leeuwen Subject: [PATCH 2/7] crypto: inside-secure - Add support for the cbc(sm4) skcipher Date: Wed, 11 Sep 2019 12:38:19 +0200 Message-Id: <1568198304-8101-3-git-send-email-pvanleeuwen@verimatrix.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1568198304-8101-1-git-send-email-pvanleeuwen@verimatrix.com> References: <1568198304-8101-1-git-send-email-pvanleeuwen@verimatrix.com> Sender: linux-crypto-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-crypto@vger.kernel.org This patch adds support for SM4 in CBC mode, i.e. skcipher cbc(sm4). Signed-off-by: Pascal van Leeuwen --- drivers/crypto/inside-secure/safexcel.c | 1 + drivers/crypto/inside-secure/safexcel.h | 1 + drivers/crypto/inside-secure/safexcel_cipher.c | 36 ++++++++++++++++++++++++++ 3 files changed, 38 insertions(+) diff --git a/drivers/crypto/inside-secure/safexcel.c b/drivers/crypto/inside-secure/safexcel.c index fe785e8..4320992 100644 --- a/drivers/crypto/inside-secure/safexcel.c +++ b/drivers/crypto/inside-secure/safexcel.c @@ -1179,6 +1179,7 @@ static int safexcel_request_ring_irq(void *pdev, int irqid, &safexcel_alg_sm3, &safexcel_alg_hmac_sm3, &safexcel_alg_ecb_sm4, + &safexcel_alg_cbc_sm4, }; static int safexcel_register_algorithms(struct safexcel_crypto_priv *priv) diff --git a/drivers/crypto/inside-secure/safexcel.h b/drivers/crypto/inside-secure/safexcel.h index 970b5cd..1339f0e 100644 --- a/drivers/crypto/inside-secure/safexcel.h +++ b/drivers/crypto/inside-secure/safexcel.h @@ -874,5 +874,6 @@ int safexcel_hmac_setkey(const char *alg, const u8 *key, unsigned int keylen, extern struct safexcel_alg_template safexcel_alg_sm3; extern struct safexcel_alg_template safexcel_alg_hmac_sm3; extern struct safexcel_alg_template safexcel_alg_ecb_sm4; +extern struct safexcel_alg_template safexcel_alg_cbc_sm4; #endif diff --git a/drivers/crypto/inside-secure/safexcel_cipher.c b/drivers/crypto/inside-secure/safexcel_cipher.c index fc75f2f..a2e65fd 100644 --- a/drivers/crypto/inside-secure/safexcel_cipher.c +++ b/drivers/crypto/inside-secure/safexcel_cipher.c @@ -2710,3 +2710,39 @@ struct safexcel_alg_template safexcel_alg_ecb_sm4 = { }, }, }; + +static int safexcel_skcipher_sm4_cbc_cra_init(struct crypto_tfm *tfm) +{ + struct safexcel_cipher_ctx *ctx = crypto_tfm_ctx(tfm); + + safexcel_skcipher_cra_init(tfm); + ctx->alg = SAFEXCEL_SM4; + ctx->mode = CONTEXT_CONTROL_CRYPTO_MODE_CBC; + return 0; +} + +struct safexcel_alg_template safexcel_alg_cbc_sm4 = { + .type = SAFEXCEL_ALG_TYPE_SKCIPHER, + .algo_mask = SAFEXCEL_ALG_SM4, + .alg.skcipher = { + .setkey = safexcel_skcipher_sm4_setkey, + .encrypt = safexcel_sm4_blk_encrypt, + .decrypt = safexcel_sm4_blk_decrypt, + .min_keysize = SM4_KEY_SIZE, + .max_keysize = SM4_KEY_SIZE, + .ivsize = SM4_BLOCK_SIZE, + .base = { + .cra_name = "cbc(sm4)", + .cra_driver_name = "safexcel-cbc-sm4", + .cra_priority = SAFEXCEL_CRA_PRIORITY, + .cra_flags = CRYPTO_ALG_ASYNC | + CRYPTO_ALG_KERN_DRIVER_ONLY, + .cra_blocksize = SM4_BLOCK_SIZE, + .cra_ctxsize = sizeof(struct safexcel_cipher_ctx), + .cra_alignmask = 0, + .cra_init = safexcel_skcipher_sm4_cbc_cra_init, + .cra_exit = safexcel_skcipher_cra_exit, + .cra_module = THIS_MODULE, + }, + }, +}; From patchwork Wed Sep 11 10:38:20 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Pascal van Leeuwen X-Patchwork-Id: 11140947 X-Patchwork-Delegate: herbert@gondor.apana.org.au Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 3864D18B6 for ; Wed, 11 Sep 2019 11:41:16 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 0D18A2084D for ; Wed, 11 Sep 2019 11:41:16 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="AyjeTdfM" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727779AbfIKLlP (ORCPT ); Wed, 11 Sep 2019 07:41:15 -0400 Received: from mail-ed1-f67.google.com ([209.85.208.67]:46818 "EHLO mail-ed1-f67.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727749AbfIKLlO (ORCPT ); Wed, 11 Sep 2019 07:41:14 -0400 Received: by mail-ed1-f67.google.com with SMTP id i8so20272644edn.13 for ; Wed, 11 Sep 2019 04:41:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=oDWh0PfuOEYRj5yeDVqEmYIGYXhJ8f9PajvmcjVvmoI=; b=AyjeTdfMNQsymhlEkE3ZTIpxFrT2YzbcXe2uGvI1iVHm9c1uEHnGRiXWkjjfgHiP5G k4yFpV4/Lk1o3hSvsUizINRe4yH7Kutl7wMkjl1Q9SrOVcNh4Wz1YnE8KV6lR7sEbjDS T7GcYbXWIdsf4/ciW9ASxB93bHILHlwwvAwqTZ4Mp5q5+n83WeYb6nKqvLjha87mFaJE ZB1PSjyTdKbcw4EA8hBv5JFoGvdB/f7YSVkWbwwz11zszVFoz9ASOYT+IQAH6gs/4fs2 iJm/cxJwUwZ25NOovsB3Ai/KLzKdeHeve/+OMwam91wwcieitKu7mLjDtOWjEChcsT4s 4Lpw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=oDWh0PfuOEYRj5yeDVqEmYIGYXhJ8f9PajvmcjVvmoI=; b=MOOrvsSlZUlC9GkV2EuiKERF3QlcdJ+9WAVfziZarrzLX/atzvdbBX40XdeFVd3rsA TbWsk325kfNZgrzbsDtlyjdocVHYAHKz4cAIm/F0HsOXyzQZIimeMsY9gb5XWNWdDRfE CPUqhYBBkmSnxCaXLOHWgSngS+9TzzdVqOlUCLt2KKYDOfj2O0hwfNiFmqZ7LT42IrxP OwZdWJJqCrHBKsgAlBV8G6fzfVwbRRPznaSCQ1c9BmHNZTt93DJJRNc/o+GUYNjgXG2N tEYmn0ltGH1KVGdlU4+/g1vwioY329lYMYPvWHifrDsWT1UmU2+mp/EN1kQJ7cVWED9e E4vw== X-Gm-Message-State: APjAAAXhrnPG2qTkE1FiH4WcHQqlwhr7GeJZJWqpolu58gfajrId2S7n VxwFhb9Aa/j93gCcfIAq50mfJYEK X-Google-Smtp-Source: APXvYqzYcgB+558aqm1KuztjrFBEWuKxhc8WjWG7ZJ0uqevg7/UseGB29akfqkVXO/bl9wynI81rzQ== X-Received: by 2002:a50:8a9a:: with SMTP id j26mr36070987edj.251.1568202073408; Wed, 11 Sep 2019 04:41:13 -0700 (PDT) Received: from localhost.localdomain.com ([188.204.2.113]) by smtp.gmail.com with ESMTPSA id z6sm2448022ejo.26.2019.09.11.04.41.12 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 11 Sep 2019 04:41:12 -0700 (PDT) From: Pascal van Leeuwen X-Google-Original-From: Pascal van Leeuwen To: linux-crypto@vger.kernel.org Cc: antoine.tenart@bootlin.com, herbert@gondor.apana.org.au, davem@davemloft.net, Pascal van Leeuwen Subject: [PATCH 3/7] crypto: inside-secure - Add support for the ofb(sm4) skcipher Date: Wed, 11 Sep 2019 12:38:20 +0200 Message-Id: <1568198304-8101-4-git-send-email-pvanleeuwen@verimatrix.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1568198304-8101-1-git-send-email-pvanleeuwen@verimatrix.com> References: <1568198304-8101-1-git-send-email-pvanleeuwen@verimatrix.com> Sender: linux-crypto-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-crypto@vger.kernel.org This patch adds support for SM4 in OFB mode, i.e. skcipher ofb(sm4). Signed-off-by: Pascal van Leeuwen --- drivers/crypto/inside-secure/safexcel.c | 1 + drivers/crypto/inside-secure/safexcel.h | 1 + drivers/crypto/inside-secure/safexcel_cipher.c | 36 ++++++++++++++++++++++++++ 3 files changed, 38 insertions(+) diff --git a/drivers/crypto/inside-secure/safexcel.c b/drivers/crypto/inside-secure/safexcel.c index 4320992..fbfda68 100644 --- a/drivers/crypto/inside-secure/safexcel.c +++ b/drivers/crypto/inside-secure/safexcel.c @@ -1180,6 +1180,7 @@ static int safexcel_request_ring_irq(void *pdev, int irqid, &safexcel_alg_hmac_sm3, &safexcel_alg_ecb_sm4, &safexcel_alg_cbc_sm4, + &safexcel_alg_ofb_sm4, }; static int safexcel_register_algorithms(struct safexcel_crypto_priv *priv) diff --git a/drivers/crypto/inside-secure/safexcel.h b/drivers/crypto/inside-secure/safexcel.h index 1339f0e..448db38 100644 --- a/drivers/crypto/inside-secure/safexcel.h +++ b/drivers/crypto/inside-secure/safexcel.h @@ -875,5 +875,6 @@ int safexcel_hmac_setkey(const char *alg, const u8 *key, unsigned int keylen, extern struct safexcel_alg_template safexcel_alg_hmac_sm3; extern struct safexcel_alg_template safexcel_alg_ecb_sm4; extern struct safexcel_alg_template safexcel_alg_cbc_sm4; +extern struct safexcel_alg_template safexcel_alg_ofb_sm4; #endif diff --git a/drivers/crypto/inside-secure/safexcel_cipher.c b/drivers/crypto/inside-secure/safexcel_cipher.c index a2e65fd..0a30e7a 100644 --- a/drivers/crypto/inside-secure/safexcel_cipher.c +++ b/drivers/crypto/inside-secure/safexcel_cipher.c @@ -2746,3 +2746,39 @@ struct safexcel_alg_template safexcel_alg_cbc_sm4 = { }, }, }; + +static int safexcel_skcipher_sm4_ofb_cra_init(struct crypto_tfm *tfm) +{ + struct safexcel_cipher_ctx *ctx = crypto_tfm_ctx(tfm); + + safexcel_skcipher_cra_init(tfm); + ctx->alg = SAFEXCEL_SM4; + ctx->mode = CONTEXT_CONTROL_CRYPTO_MODE_OFB; + return 0; +} + +struct safexcel_alg_template safexcel_alg_ofb_sm4 = { + .type = SAFEXCEL_ALG_TYPE_SKCIPHER, + .algo_mask = SAFEXCEL_ALG_SM4 | SAFEXCEL_ALG_AES_XFB, + .alg.skcipher = { + .setkey = safexcel_skcipher_sm4_setkey, + .encrypt = safexcel_encrypt, + .decrypt = safexcel_decrypt, + .min_keysize = SM4_KEY_SIZE, + .max_keysize = SM4_KEY_SIZE, + .ivsize = SM4_BLOCK_SIZE, + .base = { + .cra_name = "ofb(sm4)", + .cra_driver_name = "safexcel-ofb-sm4", + .cra_priority = SAFEXCEL_CRA_PRIORITY, + .cra_flags = CRYPTO_ALG_ASYNC | + CRYPTO_ALG_KERN_DRIVER_ONLY, + .cra_blocksize = 1, + .cra_ctxsize = sizeof(struct safexcel_cipher_ctx), + .cra_alignmask = 0, + .cra_init = safexcel_skcipher_sm4_ofb_cra_init, + .cra_exit = safexcel_skcipher_cra_exit, + .cra_module = THIS_MODULE, + }, + }, +}; From patchwork Wed Sep 11 10:38:21 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Pascal van Leeuwen X-Patchwork-Id: 11140949 X-Patchwork-Delegate: herbert@gondor.apana.org.au Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 2F7A514E5 for ; Wed, 11 Sep 2019 11:41:17 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 0460F2084D for ; Wed, 11 Sep 2019 11:41:17 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="veYtyhD+" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727782AbfIKLlQ (ORCPT ); Wed, 11 Sep 2019 07:41:16 -0400 Received: from mail-ed1-f65.google.com ([209.85.208.65]:44326 "EHLO mail-ed1-f65.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727745AbfIKLlQ (ORCPT ); Wed, 11 Sep 2019 07:41:16 -0400 Received: by mail-ed1-f65.google.com with SMTP id p2so19130013edx.11 for ; Wed, 11 Sep 2019 04:41:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=ZJeyWJm87FGLCmW8I2F0yiDBqsBddN799oLnwAT+yzM=; b=veYtyhD+KwJva6PEvoFrHz5QMaHqNnsHkpy3buJMzdxdGKqNmumFGP31Ex0pCt+ely eo9gVW05kepCOQMOloR4tu97s4POY+tutl+pHXrjYzDd7OURegwbrvhDYHLSEn0NZsQS 4rfRqpvJTmEi/+8CLL6Hm8GC93sw6IauW39+p/5l9rS5jfQAhaQxE1Jn5R1GqGCLC9Hv JxfEcl2NSyzAGQDLjfGhEASoK2NjpwbCtO87ikqqboYyodnjcz9Bux/N4un5e8gcLGdI hfpjZbi+FJftRCsmCrg0+fiNlmWMfx33Jw6L/nDAbhmBQEy45RKSnCqC6fS4s75ZtFYi 1K1g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=ZJeyWJm87FGLCmW8I2F0yiDBqsBddN799oLnwAT+yzM=; b=KPmdhq54N614MatReptMSBfKY6LnyTnHBqcSJqGdbps1twiiT2cssJOCSV/rgdI5Qq csU5l6VGBL1We9WDFyZwJaPy3svGdLJDrBFmtgeO0piZPjWNXThBfB/nEPbS+6wUmVmE 2kW/RUOT9aVaCDEk0kDT7IYVcAUY7zdMukJZlLgzfufd4JvOEamkRTlEJlIy/G8Cou9D r3WmlrkALghc5W4etPhrEuwsexEEvSdTL6OwWFOZqa8CPgsIw9y9xZh1OPo84W9zqqH6 1oeh4+NuKStWUQOAZ/pdYOjZk1hiDpATrGaeLjTFitpw/EJZCtlPQgxfJMAxd1CHTgcP ThEA== X-Gm-Message-State: APjAAAWrGEpPQscVPrya7zBZ32eqKjJKh0PuwAffRiTZ4z/0ma1F2GA+ Fp+PgFLXgRtWcqugdHdmJ3sctSmJ X-Google-Smtp-Source: APXvYqwiwV5wjwn6jhvP3FCqhK6xoJLGUDBEB7U/o6N2QOfo3Y9Fw9gQDIhQ5HAYnNd8ZrUDbYQ7tg== X-Received: by 2002:a17:907:2065:: with SMTP id qp5mr28767115ejb.151.1568202074300; Wed, 11 Sep 2019 04:41:14 -0700 (PDT) Received: from localhost.localdomain.com ([188.204.2.113]) by smtp.gmail.com with ESMTPSA id z6sm2448022ejo.26.2019.09.11.04.41.13 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 11 Sep 2019 04:41:13 -0700 (PDT) From: Pascal van Leeuwen X-Google-Original-From: Pascal van Leeuwen To: linux-crypto@vger.kernel.org Cc: antoine.tenart@bootlin.com, herbert@gondor.apana.org.au, davem@davemloft.net, Pascal van Leeuwen Subject: [PATCH 4/7] crypto: testmgr - Added testvectors for the ofb(sm4) & cfb(sm4) skciphers Date: Wed, 11 Sep 2019 12:38:21 +0200 Message-Id: <1568198304-8101-5-git-send-email-pvanleeuwen@verimatrix.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1568198304-8101-1-git-send-email-pvanleeuwen@verimatrix.com> References: <1568198304-8101-1-git-send-email-pvanleeuwen@verimatrix.com> Sender: linux-crypto-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-crypto@vger.kernel.org Added testvectors for the ofb(sm4) and cfb(sm4) skcipher algorithms Signed-off-by: Pascal van Leeuwen --- crypto/testmgr.c | 12 +++++++ crypto/testmgr.h | 98 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 110 insertions(+) diff --git a/crypto/testmgr.c b/crypto/testmgr.c index 3604c9d..fbc19bc 100644 --- a/crypto/testmgr.c +++ b/crypto/testmgr.c @@ -4406,6 +4406,12 @@ static int alg_test_null(const struct alg_test_desc *desc, .cipher = __VECS(aes_cfb_tv_template) }, }, { + .alg = "cfb(sm4)", + .test = alg_test_skcipher, + .suite = { + .cipher = __VECS(sm4_cfb_tv_template) + } + }, { .alg = "chacha20", .test = alg_test_skcipher, .suite = { @@ -5063,6 +5069,12 @@ static int alg_test_null(const struct alg_test_desc *desc, .test = alg_test_null, .fips_allowed = 1, }, { + .alg = "ofb(sm4)", + .test = alg_test_skcipher, + .suite = { + .cipher = __VECS(sm4_ofb_tv_template) + } + }, { .alg = "pcbc(fcrypt)", .test = alg_test_skcipher, .suite = { diff --git a/crypto/testmgr.h b/crypto/testmgr.h index 1f56293..4e74f65 100644 --- a/crypto/testmgr.h +++ b/crypto/testmgr.h @@ -12209,6 +12209,104 @@ struct len_range_sel { } }; +static const struct cipher_testvec sm4_ofb_tv_template[] = { + { /* From: draft-ribose-cfrg-sm4-02, paragraph 12.2.3 */ + .key = "\x01\x23\x45\x67\x89\xab\xcd\xef" + "\xfe\xdc\xba\x98\x76\x54\x32\x10", + .klen = 16, + .iv = "\x01\x23\x45\x67\x89\xab\xcd\xef" + "\xfe\xdc\xba\x98\x76\x54\x32\x10", + .ptext = "\x01\x23\x45\x67\x89\xab\xcd\xef" + "\xfe\xdc\xba\x98\x76\x54\x32\x10" + "\x01\x23\x45\x67\x89\xab\xcd\xef" + "\xfe\xdc\xba\x98\x76\x54\x32\x10", + .ctext = "\x69\x3d\x9a\x53\x5b\xad\x5b\xb1" + "\x78\x6f\x53\xd7\x25\x3a\x70\x56" + "\xf2\x07\x5d\x28\xb5\x23\x5f\x58" + "\xd5\x00\x27\xe4\x17\x7d\x2b\xce", + .len = 32, + }, { /* From: draft-ribose-cfrg-sm4-09, appendix A.2.3, Example 1 */ + .key = "\x01\x23\x45\x67\x89\xab\xcd\xef" + "\xfe\xdc\xba\x98\x76\x54\x32\x10", + .klen = 16, + .iv = "\x00\x01\x02\x03\x04\x05\x06\x07" + "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f", + .ptext = "\xaa\xaa\xaa\xaa\xbb\xbb\xbb\xbb" + "\xcc\xcc\xcc\xcc\xdd\xdd\xdd\xdd" + "\xee\xee\xee\xee\xff\xff\xff\xff" + "\xaa\xaa\xaa\xaa\xbb\xbb\xbb\xbb", + .ctext = "\xac\x32\x36\xcb\x86\x1d\xd3\x16" + "\xe6\x41\x3b\x4e\x3c\x75\x24\xb7" + "\x1d\x01\xac\xa2\x48\x7c\xa5\x82" + "\xcb\xf5\x46\x3e\x66\x98\x53\x9b", + .len = 32, + }, { /* From: draft-ribose-cfrg-sm4-09, appendix A.2.3, Example 2 */ + .key = "\xfe\xdc\xba\x98\x76\x54\x32\x10" + "\x01\x23\x45\x67\x89\xab\xcd\xef", + .klen = 16, + .iv = "\x00\x01\x02\x03\x04\x05\x06\x07" + "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f", + .ptext = "\xaa\xaa\xaa\xaa\xbb\xbb\xbb\xbb" + "\xcc\xcc\xcc\xcc\xdd\xdd\xdd\xdd" + "\xee\xee\xee\xee\xff\xff\xff\xff" + "\xaa\xaa\xaa\xaa\xbb\xbb\xbb\xbb", + .ctext = "\x5d\xcc\xcd\x25\xa8\x4b\xa1\x65" + "\x60\xd7\xf2\x65\x88\x70\x68\x49" + "\x33\xfa\x16\xbd\x5c\xd9\xc8\x56" + "\xca\xca\xa1\xe1\x01\x89\x7a\x97", + .len = 32, + } +}; + +static const struct cipher_testvec sm4_cfb_tv_template[] = { + { /* From: draft-ribose-cfrg-sm4-02, paragraph 12.2.4 */ + .key = "\x01\x23\x45\x67\x89\xab\xcd\xef" + "\xfe\xdc\xba\x98\x76\x54\x32\x10", + .klen = 16, + .iv = "\x01\x23\x45\x67\x89\xab\xcd\xef" + "\xfe\xdc\xba\x98\x76\x54\x32\x10", + .ptext = "\x01\x23\x45\x67\x89\xab\xcd\xef" + "\xfe\xdc\xba\x98\x76\x54\x32\x10" + "\x01\x23\x45\x67\x89\xab\xcd\xef" + "\xfe\xdc\xba\x98\x76\x54\x32\x10", + .ctext = "\x69\x3d\x9a\x53\x5b\xad\x5b\xb1" + "\x78\x6f\x53\xd7\x25\x3a\x70\x56" + "\x9e\xd2\x58\xa8\x5a\x04\x67\xcc" + "\x92\xaa\xb3\x93\xdd\x97\x89\x95", + .len = 32, + }, { /* From: draft-ribose-cfrg-sm4-09, appendix A.2.4, Example 1 */ + .key = "\x01\x23\x45\x67\x89\xab\xcd\xef" + "\xfe\xdc\xba\x98\x76\x54\x32\x10", + .klen = 16, + .iv = "\x00\x01\x02\x03\x04\x05\x06\x07" + "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f", + .ptext = "\xaa\xaa\xaa\xaa\xbb\xbb\xbb\xbb" + "\xcc\xcc\xcc\xcc\xdd\xdd\xdd\xdd" + "\xee\xee\xee\xee\xff\xff\xff\xff" + "\xaa\xaa\xaa\xaa\xbb\xbb\xbb\xbb", + .ctext = "\xac\x32\x36\xcb\x86\x1d\xd3\x16" + "\xe6\x41\x3b\x4e\x3c\x75\x24\xb7" + "\x69\xd4\xc5\x4e\xd4\x33\xb9\xa0" + "\x34\x60\x09\xbe\xb3\x7b\x2b\x3f", + .len = 32, + }, { /* From: draft-ribose-cfrg-sm4-09, appendix A.2.4, Example 2 */ + .key = "\xfe\xdc\xba\x98\x76\x54\x32\x10" + "\x01\x23\x45\x67\x89\xab\xcd\xef", + .klen = 16, + .iv = "\x00\x01\x02\x03\x04\x05\x06\x07" + "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f", + .ptext = "\xaa\xaa\xaa\xaa\xbb\xbb\xbb\xbb" + "\xcc\xcc\xcc\xcc\xdd\xdd\xdd\xdd" + "\xee\xee\xee\xee\xff\xff\xff\xff" + "\xaa\xaa\xaa\xaa\xbb\xbb\xbb\xbb", + .ctext = "\x5d\xcc\xcd\x25\xa8\x4b\xa1\x65" + "\x60\xd7\xf2\x65\x88\x70\x68\x49" + "\x0d\x9b\x86\xff\x20\xc3\xbf\xe1" + "\x15\xff\xa0\x2c\xa6\x19\x2c\xc5", + .len = 32, + } +}; + /* Cast6 test vectors from RFC 2612 */ static const struct cipher_testvec cast6_tv_template[] = { { From patchwork Wed Sep 11 10:38:22 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Pascal van Leeuwen X-Patchwork-Id: 11140951 X-Patchwork-Delegate: herbert@gondor.apana.org.au Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id B0F6114ED for ; Wed, 11 Sep 2019 11:41:17 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 8FDC02081B for ; Wed, 11 Sep 2019 11:41:17 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="VrhOiXqM" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727745AbfIKLlR (ORCPT ); Wed, 11 Sep 2019 07:41:17 -0400 Received: from mail-ed1-f68.google.com ([209.85.208.68]:34611 "EHLO mail-ed1-f68.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727749AbfIKLlQ (ORCPT ); Wed, 11 Sep 2019 07:41:16 -0400 Received: by mail-ed1-f68.google.com with SMTP id c20so11316175eds.1 for ; Wed, 11 Sep 2019 04:41:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=Y0Lk4o11XplOQxZQof1l1napulxeDQKiKC8CZ4zYa5c=; b=VrhOiXqMwxtSl1F9nCnDGAleKXI6qHJaqVVBMGr+7mPoC6zOSoljyZib8XjG49EP2e QYTuLTUWXIO82yQyo+hKC4nSoUobjvtz9KY6FVUZWdBeWmbPUs82G4dxJX8tkTV/N8xG d4t7PpMtyi3Lx+MrouNjP7NeaH9iCuzw2LIv2KxmhntPgMk6lCUoWA5CMiQ1L8BMJtvK o3czjZtJWblPQBmuCjH7qGODS74Mtw881VLnbLutt3iGs1ou12KqQvaYajFDnsiW1qxF Js84SoMfdyBW8ccURhLNU98Y3IpP/2JcRDQNbgKKLgWcooWuUS0de0pwlBHK7Rxw8TIA ArWg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=Y0Lk4o11XplOQxZQof1l1napulxeDQKiKC8CZ4zYa5c=; b=Wu/ZX0BAZOks38UHrHRQWVoRk4YcxXqZRJgGDgntPZlRd2R4nbmH/s0Z8dqMs0x33L LO0JZMSfd7lrTv9QL3POyRUAUmbwQYn27et3AeyAvjWMxKzD9yZfV+BFLsHj/hIyw0Or N9T7wJ5EIJ82kgq8xW2DWJTYpHOl6SpHjQdN9AoXNrDjhFrRkUlksiU1WayxMmfXhc+6 9cqdQ589zFYKYBtb4s1755SXE5fhtWnraltoJezL5HYMhg0/lOkxc7V/pV3K1GB7b9ha +do78NGJUhe22V/668m9a/c6ab69KNITtMk6BsE3KX/JISp6UKxobyVgnaK/HdkQBpVS GR2A== X-Gm-Message-State: APjAAAWX9RsTfCTmtiwyxsJIe05yzdNSWy4n4jXs5AEjo5rTEinYqaty aevQtOObwh4FuFtZRHiE/ie0PxD7 X-Google-Smtp-Source: APXvYqyYaT0CDQ1Ea61RMNU/dhZspzaZfFsSh5DLRXxJ0K4Sb3PL27mp+LZSRDdrZ7ZVm0MGgloBCg== X-Received: by 2002:a50:ab58:: with SMTP id t24mr35845049edc.131.1568202074879; Wed, 11 Sep 2019 04:41:14 -0700 (PDT) Received: from localhost.localdomain.com ([188.204.2.113]) by smtp.gmail.com with ESMTPSA id z6sm2448022ejo.26.2019.09.11.04.41.14 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 11 Sep 2019 04:41:14 -0700 (PDT) From: Pascal van Leeuwen X-Google-Original-From: Pascal van Leeuwen To: linux-crypto@vger.kernel.org Cc: antoine.tenart@bootlin.com, herbert@gondor.apana.org.au, davem@davemloft.net, Pascal van Leeuwen Subject: [PATCH 5/7] crypto: inside-secure - Add support for the cfb(sm4) skcipher Date: Wed, 11 Sep 2019 12:38:22 +0200 Message-Id: <1568198304-8101-6-git-send-email-pvanleeuwen@verimatrix.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1568198304-8101-1-git-send-email-pvanleeuwen@verimatrix.com> References: <1568198304-8101-1-git-send-email-pvanleeuwen@verimatrix.com> Sender: linux-crypto-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-crypto@vger.kernel.org This patch adds support for SM4 in CFB mode, i.e. skcipher cfb(sm4). Signed-off-by: Pascal van Leeuwen --- drivers/crypto/inside-secure/safexcel.c | 1 + drivers/crypto/inside-secure/safexcel.h | 1 + drivers/crypto/inside-secure/safexcel_cipher.c | 36 ++++++++++++++++++++++++++ 3 files changed, 38 insertions(+) diff --git a/drivers/crypto/inside-secure/safexcel.c b/drivers/crypto/inside-secure/safexcel.c index fbfda68..1679b41 100644 --- a/drivers/crypto/inside-secure/safexcel.c +++ b/drivers/crypto/inside-secure/safexcel.c @@ -1181,6 +1181,7 @@ static int safexcel_request_ring_irq(void *pdev, int irqid, &safexcel_alg_ecb_sm4, &safexcel_alg_cbc_sm4, &safexcel_alg_ofb_sm4, + &safexcel_alg_cfb_sm4, }; static int safexcel_register_algorithms(struct safexcel_crypto_priv *priv) diff --git a/drivers/crypto/inside-secure/safexcel.h b/drivers/crypto/inside-secure/safexcel.h index 448db38..07aa46b 100644 --- a/drivers/crypto/inside-secure/safexcel.h +++ b/drivers/crypto/inside-secure/safexcel.h @@ -876,5 +876,6 @@ int safexcel_hmac_setkey(const char *alg, const u8 *key, unsigned int keylen, extern struct safexcel_alg_template safexcel_alg_ecb_sm4; extern struct safexcel_alg_template safexcel_alg_cbc_sm4; extern struct safexcel_alg_template safexcel_alg_ofb_sm4; +extern struct safexcel_alg_template safexcel_alg_cfb_sm4; #endif diff --git a/drivers/crypto/inside-secure/safexcel_cipher.c b/drivers/crypto/inside-secure/safexcel_cipher.c index 0a30e7a..89cef28 100644 --- a/drivers/crypto/inside-secure/safexcel_cipher.c +++ b/drivers/crypto/inside-secure/safexcel_cipher.c @@ -2782,3 +2782,39 @@ struct safexcel_alg_template safexcel_alg_ofb_sm4 = { }, }, }; + +static int safexcel_skcipher_sm4_cfb_cra_init(struct crypto_tfm *tfm) +{ + struct safexcel_cipher_ctx *ctx = crypto_tfm_ctx(tfm); + + safexcel_skcipher_cra_init(tfm); + ctx->alg = SAFEXCEL_SM4; + ctx->mode = CONTEXT_CONTROL_CRYPTO_MODE_CFB; + return 0; +} + +struct safexcel_alg_template safexcel_alg_cfb_sm4 = { + .type = SAFEXCEL_ALG_TYPE_SKCIPHER, + .algo_mask = SAFEXCEL_ALG_SM4 | SAFEXCEL_ALG_AES_XFB, + .alg.skcipher = { + .setkey = safexcel_skcipher_sm4_setkey, + .encrypt = safexcel_encrypt, + .decrypt = safexcel_decrypt, + .min_keysize = SM4_KEY_SIZE, + .max_keysize = SM4_KEY_SIZE, + .ivsize = SM4_BLOCK_SIZE, + .base = { + .cra_name = "cfb(sm4)", + .cra_driver_name = "safexcel-cfb-sm4", + .cra_priority = SAFEXCEL_CRA_PRIORITY, + .cra_flags = CRYPTO_ALG_ASYNC | + CRYPTO_ALG_KERN_DRIVER_ONLY, + .cra_blocksize = 1, + .cra_ctxsize = sizeof(struct safexcel_cipher_ctx), + .cra_alignmask = 0, + .cra_init = safexcel_skcipher_sm4_cfb_cra_init, + .cra_exit = safexcel_skcipher_cra_exit, + .cra_module = THIS_MODULE, + }, + }, +}; From patchwork Wed Sep 11 10:38:23 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Pascal van Leeuwen X-Patchwork-Id: 11140953 X-Patchwork-Delegate: herbert@gondor.apana.org.au Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 807AD76 for ; Wed, 11 Sep 2019 11:41:18 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 5E98B2084D for ; Wed, 11 Sep 2019 11:41:18 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="lCjj3WnR" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727749AbfIKLlR (ORCPT ); Wed, 11 Sep 2019 07:41:17 -0400 Received: from mail-ed1-f65.google.com ([209.85.208.65]:43833 "EHLO mail-ed1-f65.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726952AbfIKLlR (ORCPT ); Wed, 11 Sep 2019 07:41:17 -0400 Received: by mail-ed1-f65.google.com with SMTP id c19so20285277edy.10 for ; Wed, 11 Sep 2019 04:41:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=E/mqsgC4LeD6CjDeKpjvPAL1o99XNe6FkErpCzvZtP8=; b=lCjj3WnRhbmZ/9NyDO7ObnYc/spVBBPonGsVw+rK7+bLahTPMxvTJsF0bpwwFeJGjB TYuzVg8QR1h4EFJANJGCEcGhC9LbHY8cN1EyuFFGXwhbmIyyY21Sbtnb5GZ1GB2NpfaV WsTJmHzY95mTTIDZxJhH4cV6UTH+OlGdk4QIMYptonWbCg8DzRDtx2Ix/A3L4A7DAhVH TFCcLQIjbOZcoTY8OHcgmyV4RzSoYHTvg30lEfHkEWazvw3AC/FYPlRrmFYl3GPGMPPP DVPCles2kL8/jBFkqp/rE5Z5dLC9kA0Zn4nTZ/y8Tkzt86rKjsSdXCN2QbKkSDvsRayl JHcA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=E/mqsgC4LeD6CjDeKpjvPAL1o99XNe6FkErpCzvZtP8=; b=OYb0vBNQfihCWupzBtLjmES5P2R3k2iuFDjy2lN7kpxFBTnRhYe6siPyX+YjkKb/3J kRMmRNhdovfisENtCmVmOCP46SCGLp6l9bPweb70NRQT5TP+8x9ekugSTkLwtnqJnPth QdPXUnXsCDKsTh4jszDx4oMan2jegsVLeuKxTGHLn55I7hRpgnvCkeSBQ5WXqV4DIcjI O7czbBQX/gxOqzd9zG9NSOZdKOwVgK/ZUnNBdvH0WApzOylrGyu8U1dfsyBJOWX2aWPp RHFEx9zfLqhHq6hvkD2e1sE3FmY4F4KiBNhq8x8VvicaDX/UMbUoKWy3S4TyWARwc7wS lB9g== X-Gm-Message-State: APjAAAW5ZioAziAWDgQnDwKOC/l2Xnx1/o7/mGzaDb+D2b5mDJlUEUnm waYpWUgxMU9V0VC/bltUG85QL6qH X-Google-Smtp-Source: APXvYqxiTgDu82HL0uxdYYeZAydxG4LGC+PpZpipg4/nclLX+buuiHnJ/GZW8D3AAdMKdHe/Umzcrw== X-Received: by 2002:a17:906:4ac1:: with SMTP id u1mr28987277ejt.293.1568202075544; Wed, 11 Sep 2019 04:41:15 -0700 (PDT) Received: from localhost.localdomain.com ([188.204.2.113]) by smtp.gmail.com with ESMTPSA id z6sm2448022ejo.26.2019.09.11.04.41.14 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 11 Sep 2019 04:41:15 -0700 (PDT) From: Pascal van Leeuwen X-Google-Original-From: Pascal van Leeuwen To: linux-crypto@vger.kernel.org Cc: antoine.tenart@bootlin.com, herbert@gondor.apana.org.au, davem@davemloft.net, Pascal van Leeuwen Subject: [PATCH 6/7] crypto: inside-secure - Add support for the rfc3685(ctr(sm4)) skcipher Date: Wed, 11 Sep 2019 12:38:23 +0200 Message-Id: <1568198304-8101-7-git-send-email-pvanleeuwen@verimatrix.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1568198304-8101-1-git-send-email-pvanleeuwen@verimatrix.com> References: <1568198304-8101-1-git-send-email-pvanleeuwen@verimatrix.com> Sender: linux-crypto-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-crypto@vger.kernel.org This patch adds support for SM4 in (32 bit) CTR mode, i.e. skcipher rfc3686(ctr(sm4)). Signed-off-by: Pascal van Leeuwen --- drivers/crypto/inside-secure/safexcel.c | 1 + drivers/crypto/inside-secure/safexcel.h | 1 + drivers/crypto/inside-secure/safexcel_cipher.c | 51 ++++++++++++++++++++++++++ 3 files changed, 53 insertions(+) diff --git a/drivers/crypto/inside-secure/safexcel.c b/drivers/crypto/inside-secure/safexcel.c index 1679b41..7da4801 100644 --- a/drivers/crypto/inside-secure/safexcel.c +++ b/drivers/crypto/inside-secure/safexcel.c @@ -1182,6 +1182,7 @@ static int safexcel_request_ring_irq(void *pdev, int irqid, &safexcel_alg_cbc_sm4, &safexcel_alg_ofb_sm4, &safexcel_alg_cfb_sm4, + &safexcel_alg_ctr_sm4, }; static int safexcel_register_algorithms(struct safexcel_crypto_priv *priv) diff --git a/drivers/crypto/inside-secure/safexcel.h b/drivers/crypto/inside-secure/safexcel.h index 07aa46b..d45ecf3 100644 --- a/drivers/crypto/inside-secure/safexcel.h +++ b/drivers/crypto/inside-secure/safexcel.h @@ -877,5 +877,6 @@ int safexcel_hmac_setkey(const char *alg, const u8 *key, unsigned int keylen, extern struct safexcel_alg_template safexcel_alg_cbc_sm4; extern struct safexcel_alg_template safexcel_alg_ofb_sm4; extern struct safexcel_alg_template safexcel_alg_cfb_sm4; +extern struct safexcel_alg_template safexcel_alg_ctr_sm4; #endif diff --git a/drivers/crypto/inside-secure/safexcel_cipher.c b/drivers/crypto/inside-secure/safexcel_cipher.c index 89cef28..5f65748 100644 --- a/drivers/crypto/inside-secure/safexcel_cipher.c +++ b/drivers/crypto/inside-secure/safexcel_cipher.c @@ -2818,3 +2818,54 @@ struct safexcel_alg_template safexcel_alg_cfb_sm4 = { }, }, }; + +static int safexcel_skcipher_sm4ctr_setkey(struct crypto_skcipher *ctfm, + const u8 *key, unsigned int len) +{ + struct crypto_tfm *tfm = crypto_skcipher_tfm(ctfm); + struct safexcel_cipher_ctx *ctx = crypto_tfm_ctx(tfm); + + /* last 4 bytes of key are the nonce! */ + ctx->nonce = *(u32 *)(key + len - CTR_RFC3686_NONCE_SIZE); + /* exclude the nonce here */ + len -= CTR_RFC3686_NONCE_SIZE; + + return safexcel_skcipher_sm4_setkey(ctfm, key, len); +} + +static int safexcel_skcipher_sm4_ctr_cra_init(struct crypto_tfm *tfm) +{ + struct safexcel_cipher_ctx *ctx = crypto_tfm_ctx(tfm); + + safexcel_skcipher_cra_init(tfm); + ctx->alg = SAFEXCEL_SM4; + ctx->mode = CONTEXT_CONTROL_CRYPTO_MODE_CTR_LOAD; + return 0; +} + +struct safexcel_alg_template safexcel_alg_ctr_sm4 = { + .type = SAFEXCEL_ALG_TYPE_SKCIPHER, + .algo_mask = SAFEXCEL_ALG_SM4, + .alg.skcipher = { + .setkey = safexcel_skcipher_sm4ctr_setkey, + .encrypt = safexcel_encrypt, + .decrypt = safexcel_decrypt, + /* Add nonce size */ + .min_keysize = SM4_KEY_SIZE + CTR_RFC3686_NONCE_SIZE, + .max_keysize = SM4_KEY_SIZE + CTR_RFC3686_NONCE_SIZE, + .ivsize = CTR_RFC3686_IV_SIZE, + .base = { + .cra_name = "rfc3686(ctr(sm4))", + .cra_driver_name = "safexcel-ctr-sm4", + .cra_priority = SAFEXCEL_CRA_PRIORITY, + .cra_flags = CRYPTO_ALG_ASYNC | + CRYPTO_ALG_KERN_DRIVER_ONLY, + .cra_blocksize = 1, + .cra_ctxsize = sizeof(struct safexcel_cipher_ctx), + .cra_alignmask = 0, + .cra_init = safexcel_skcipher_sm4_ctr_cra_init, + .cra_exit = safexcel_skcipher_cra_exit, + .cra_module = THIS_MODULE, + }, + }, +}; From patchwork Wed Sep 11 10:38:24 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Pascal van Leeuwen X-Patchwork-Id: 11140955 X-Patchwork-Delegate: herbert@gondor.apana.org.au Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 8BAEB14E5 for ; Wed, 11 Sep 2019 11:41:20 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 6A4ED2081B for ; Wed, 11 Sep 2019 11:41:20 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="hhz8prZ7" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726341AbfIKLlU (ORCPT ); Wed, 11 Sep 2019 07:41:20 -0400 Received: from mail-ed1-f66.google.com ([209.85.208.66]:42285 "EHLO mail-ed1-f66.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726952AbfIKLlT (ORCPT ); Wed, 11 Sep 2019 07:41:19 -0400 Received: by mail-ed1-f66.google.com with SMTP id y91so20312652ede.9 for ; Wed, 11 Sep 2019 04:41:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=ukf+OSUzP8N1TVcFNeRCeAfhchGbzedXKuqObB/X8Kw=; b=hhz8prZ7YaEA6WAVCs+X7TzTYDXeqTqhRrZmZGMi9NTkfu9gG3aJgnoU9mTmd/VRcb UywBluP8ySqBmNOfXzCJI+Hqhrwgpuv1mBOFjAlWq65GjM29RkbA9DLcN0TFaq+CNnXc eYrUhFDgqSdi5kjiQn9+Y+dqzm3p7nA8wcw9GPpCN34ZWq+LrXq+NlX3dEu+Cp0XiIk1 oGCxRbqbNI6Yi+zzrnOu99oCTRfsWRDU6th3Xhu7QAdFy9vbK9iQYbYGgXdA411X4V/f GUcWoBx/i9Wph1srLQaPj7aisUOe6LWm0s2ZrMM8ipqRjsCK8eC5UIR0IobOwMSeAWTg 4WMQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=ukf+OSUzP8N1TVcFNeRCeAfhchGbzedXKuqObB/X8Kw=; b=f90QzwH4phEppddzy3axfdqdaHuOxDxgUUGjNMYYozEywEXV8qeCNSYOOpLtnm6YOC glxbGNuU4CzvrFDLbCwnF4rvnjj+hQkGypgDcoyxbJcCMZIuAFdaloxFjx/exTvqdZZV hdIJlMeYajDZ+NcZuneyN3fbXjEprTS24oZz0je9mXKfJ7bo7GGu05UzZ5hP695a2JkV YTRUUPPBy2m7dBpcluzkl5A6cwW2JVrNMC6P4cMSZSsNbIqfjbtf3FGETa9pqyYweFq5 Mmr4zs2o7DfogP+c9pLpePmMughUiClJ2cKMJUT1wLAncLLtFXBfXzauxXopXixECyqW IlaA== X-Gm-Message-State: APjAAAXQniU7gWxfWlm6nmmFJG6hk2VXzMM6RpGL7iV1pc7sq89m/SDy 2R6LP6pXBTKsBXr9X5I9y4TH7N0r X-Google-Smtp-Source: APXvYqy+KmVZrrTn0seH9nttE57d9P0bTG7+4lzE2NBYD0Ij+YzLvoiA15MrazOSD+F2DoB5zPcRaQ== X-Received: by 2002:a17:906:1196:: with SMTP id n22mr1153052eja.60.1568202076326; Wed, 11 Sep 2019 04:41:16 -0700 (PDT) Received: from localhost.localdomain.com ([188.204.2.113]) by smtp.gmail.com with ESMTPSA id z6sm2448022ejo.26.2019.09.11.04.41.15 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 11 Sep 2019 04:41:15 -0700 (PDT) From: Pascal van Leeuwen X-Google-Original-From: Pascal van Leeuwen To: linux-crypto@vger.kernel.org Cc: antoine.tenart@bootlin.com, herbert@gondor.apana.org.au, davem@davemloft.net, Pascal van Leeuwen Subject: [PATCH 7/7] crypto: testmgr - Added testvectors for the rfc3686(ctr(sm4)) skcipher Date: Wed, 11 Sep 2019 12:38:24 +0200 Message-Id: <1568198304-8101-8-git-send-email-pvanleeuwen@verimatrix.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1568198304-8101-1-git-send-email-pvanleeuwen@verimatrix.com> References: <1568198304-8101-1-git-send-email-pvanleeuwen@verimatrix.com> Sender: linux-crypto-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-crypto@vger.kernel.org Added testvectors for the rfc3686(ctr(sm4)) skcipher algorithm Signed-off-by: Pascal van Leeuwen --- crypto/testmgr.c | 6 ++++++ crypto/testmgr.h | 29 +++++++++++++++++++++++++++++ 2 files changed, 35 insertions(+) diff --git a/crypto/testmgr.c b/crypto/testmgr.c index fbc19bc..90a9f08 100644 --- a/crypto/testmgr.c +++ b/crypto/testmgr.c @@ -5113,6 +5113,12 @@ static int alg_test_null(const struct alg_test_desc *desc, .cipher = __VECS(aes_ctr_rfc3686_tv_template) } }, { + .alg = "rfc3686(ctr(sm4))", + .test = alg_test_skcipher, + .suite = { + .cipher = __VECS(sm4_ctr_rfc3686_tv_template) + } + }, { .alg = "rfc4106(gcm(aes))", .generic_driver = "rfc4106(gcm_base(ctr(aes-generic),ghash-generic))", .test = alg_test_aead, diff --git a/crypto/testmgr.h b/crypto/testmgr.h index 4e74f65..871d9db 100644 --- a/crypto/testmgr.h +++ b/crypto/testmgr.h @@ -12209,6 +12209,35 @@ struct len_range_sel { } }; +static const struct cipher_testvec sm4_ctr_rfc3686_tv_template[] = { + { + .key = "\xae\x68\x52\xf8\x12\x10\x67\xcc" + "\x4b\xf7\xa5\x76\x55\x77\xf3\x9e" + "\x00\x00\x00\x30", + .klen = 20, + .iv = "\x00\x00\x00\x00\x00\x00\x00\x00", + .ptext = "Single block msg", + .ctext = "\x20\x9b\x77\x31\xd3\x65\xdb\xab" + "\x9e\x48\x74\x7e\xbd\x13\x83\xeb", + .len = 16, + }, { + .key = "\x7e\x24\x06\x78\x17\xfa\xe0\xd7" + "\x43\xd6\xce\x1f\x32\x53\x91\x63" + "\x00\x6c\xb6\xdb", + .klen = 20, + .iv = "\xc0\x54\x3b\x59\xda\x48\xd9\x0b", + .ptext = "\x00\x01\x02\x03\x04\x05\x06\x07" + "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f" + "\x10\x11\x12\x13\x14\x15\x16\x17" + "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f", + .ctext = "\x33\xe0\x28\x01\x92\xed\xc9\x1e" + "\x97\x35\xd9\x4a\xec\xd4\xbc\x23" + "\x4f\x35\x9f\x1c\x55\x1f\xe0\x27" + "\xe0\xdf\xc5\x43\xbc\xb0\x23\x94", + .len = 32, + } +}; + static const struct cipher_testvec sm4_ofb_tv_template[] = { { /* From: draft-ribose-cfrg-sm4-02, paragraph 12.2.3 */ .key = "\x01\x23\x45\x67\x89\xab\xcd\xef"