{"id":2231523,"url":"http://patchwork.ozlabs.org/api/patches/2231523/?format=json","web_url":"http://patchwork.ozlabs.org/project/ubuntu-kernel/patch/f52a25786368b9aafaec419c304a1f337e8e2cc9.1777576834.git.massimiliano.pellizzer@canonical.com/","project":{"id":15,"url":"http://patchwork.ozlabs.org/api/projects/15/?format=json","name":"Ubuntu Kernel","link_name":"ubuntu-kernel","list_id":"kernel-team.lists.ubuntu.com","list_email":"kernel-team@lists.ubuntu.com","web_url":null,"scm_url":null,"webscm_url":null,"list_archive_url":"","list_archive_url_format":"","commit_url_format":""},"msgid":"<f52a25786368b9aafaec419c304a1f337e8e2cc9.1777576834.git.massimiliano.pellizzer@canonical.com>","list_archive_url":null,"date":"2026-04-30T19:28:13","name":"[SRU,N,v2,2/9] crypto: algif_aead - use memcpy_sglist() instead of null skcipher","commit_ref":null,"pull_url":null,"state":"new","archived":false,"hash":"03d9b5a529f9e32fbdf56235bc330cfefa50b237","submitter":{"id":89057,"url":"http://patchwork.ozlabs.org/api/people/89057/?format=json","name":"Massimiliano Pellizzer","email":"massimiliano.pellizzer@canonical.com"},"delegate":null,"mbox":"http://patchwork.ozlabs.org/project/ubuntu-kernel/patch/f52a25786368b9aafaec419c304a1f337e8e2cc9.1777576834.git.massimiliano.pellizzer@canonical.com/mbox/","series":[{"id":502367,"url":"http://patchwork.ozlabs.org/api/series/502367/?format=json","web_url":"http://patchwork.ozlabs.org/project/ubuntu-kernel/list/?series=502367","date":"2026-04-30T19:28:11","name":"CVE-2026-31431","version":2,"mbox":"http://patchwork.ozlabs.org/series/502367/mbox/"}],"comments":"http://patchwork.ozlabs.org/api/patches/2231523/comments/","check":"pending","checks":"http://patchwork.ozlabs.org/api/patches/2231523/checks/","tags":{},"related":[],"headers":{"Return-Path":"<kernel-team-bounces@lists.ubuntu.com>","X-Original-To":"incoming@patchwork.ozlabs.org","Delivered-To":"patchwork-incoming@legolas.ozlabs.org","Authentication-Results":["legolas.ozlabs.org;\n\tdkim=fail reason=\"signature verification failed\" (4096-bit key;\n unprotected) header.d=canonical.com header.i=@canonical.com\n header.a=rsa-sha256 header.s=20251003 header.b=c0qhS4ON;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=lists.ubuntu.com\n (client-ip=185.125.189.65; helo=lists.ubuntu.com;\n envelope-from=kernel-team-bounces@lists.ubuntu.com;\n receiver=patchwork.ozlabs.org)"],"Received":["from lists.ubuntu.com (lists.ubuntu.com [185.125.189.65])\n\t(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4g644K3wC6z1yJr\n\tfor <incoming@patchwork.ozlabs.org>; Fri, 01 May 2026 05:29:37 +1000 (AEST)","from localhost ([127.0.0.1] helo=lists.ubuntu.com)\n\tby lists.ubuntu.com with esmtp (Exim 4.86_2)\n\t(envelope-from <kernel-team-bounces@lists.ubuntu.com>)\n\tid 1wIX4k-0002L2-5J; Thu, 30 Apr 2026 19:29:30 +0000","from smtp-relay-internal-1.internal ([10.131.114.114]\n helo=smtp-relay-internal-1.canonical.com)\n by lists.ubuntu.com with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)\n (Exim 4.86_2) (envelope-from <massimiliano.pellizzer@canonical.com>)\n id 1wIX4d-0001s4-Fx\n for kernel-team@lists.ubuntu.com; Thu, 30 Apr 2026 19:29:23 +0000","from mail-wm1-f70.google.com (mail-wm1-f70.google.com\n [209.85.128.70])\n (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest\n SHA256)\n (No client certificate requested)\n by smtp-relay-internal-1.canonical.com (Postfix) with ESMTPS id 5040E3F637\n for <kernel-team@lists.ubuntu.com>; Thu, 30 Apr 2026 19:29:23 +0000 (UTC)","by mail-wm1-f70.google.com with SMTP id\n 5b1f17b1804b1-48a548b585cso7968795e9.2\n for <kernel-team@lists.ubuntu.com>; Thu, 30 Apr 2026 12:29:23 -0700 (PDT)","from tuxedo-infinitybook (net-93-71-66-38.cust.vodafonedsl.it.\n [93.71.66.38]) by smtp.gmail.com with ESMTPSA id\n ffacd0b85a97d-448e74324a5sm8133217f8f.12.2026.04.30.12.29.21\n for <kernel-team@lists.ubuntu.com>\n (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n Thu, 30 Apr 2026 12:29:21 -0700 (PDT)"],"DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed; d=canonical.com;\n s=20251003; t=1777577363;\n bh=QQh8V0kUTqYOsqutcXq05MXKOgpNcdZwTCi9kE5s7Z0=;\n h=From:To:Subject:Date:Message-ID:In-Reply-To:References:\n MIME-Version;\n b=c0qhS4ON7XEB2VTG9VPrarWJZ/D2APiQT8KiwsFMm6TvqqXU/RAJuA6MfQV67NcTv\n 2qeZFTGJw2eGhYsqmta1HCOv6vMrJ3USdqU5dpjGMVkDPkav0ae7n9ZKsMMTM3pC6M\n DZckLWINdxfXcE6v8oSeEvdd2dtd1khhNNXRpzYGKk6d18SIRx5g5d+iAmHhmotHvD\n IVfVgAXItOnIjgXSWB9RH7o69MtFVO/4yBjlP38o1lryMtdGa4MDszFSgVo1x9T0Hw\n mbkwKPxftJ4UHuHFNSJDTNqHzF6DKeSYP+nujt7F6M6dyWeWZ563Rb74EojL1IdM+V\n Iwwl9kncpukZ251ZjCkRuif4060P9PZxA/js/vYZpN9c5SE5Ch0oohCSAHTFcvanr1\n S86KNVKecHZBkFykgcBDTAPRkBOz4onz5O+9xHDExF9zA1FDfSF8nHNJrc2YKDRjbm\n H0Nkx1Gy+AZOYacJ4Trm0zqhxcmZIeQknBqkE8DWCrFPz5G27oXryMUScFhlbmw/TF\n 2/DzP7XzsGQAcZVjhuSmCULNXW6Zdt0Vy6dfMGxsWTW+XdzrVcsT67Lhyp2KHPLA+1\n J7h5F0YCV7sugCRcdsrHKIttRC0lmuzPJHepoK5pf2FTq1FFnCOF7R3lYY++AjvWcG\n JhOutSEZ5AfRfmI6R90HAAB4=","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=1e100.net; s=20251104; t=1777577362; x=1778182162;\n h=content-transfer-encoding:mime-version:references:in-reply-to\n :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to\n :cc:subject:date:message-id:reply-to;\n bh=QQh8V0kUTqYOsqutcXq05MXKOgpNcdZwTCi9kE5s7Z0=;\n b=k9Ktq9UajZpHy6Okg/1cbJIp2ZgwaGAD8oQ4jNMRQlP69rEzOTElOQZkJ9UWNXzrYT\n xWSKl6DZWCJtyTzOdJZaE1Ymt1vvdorAjhscEChxboDfqQIFk5mL8ZsKHCRqD/R7qTiu\n kq2wYY1eShGoRH1dxnI3wJCzGJdGov/LJtjCUzeyln4hioKUqp/zsIclJcIYrcjXMSmR\n T4JPhyvPv1YnhU+CGq3YR7eHPgZnHHZTyUf80xqw5zf/FJ5ZcDNWT8IWkGLW5cXocFMa\n Hrn14x31nEFpwNsBUtTEvbAiiC/rCNyeQsQznCj+Y9sVlFKdrxK61pR0R7uSIPt4oyUW\n nzkg==","X-Gm-Message-State":"AOJu0YzY/oZ9/XZ8x77f96kHa5RwZxYj/X7R4/Bsfs9AIsfbqTIatOYw\n O7GAevck7raTxE4I2hFmpxKI1jkIBbb5ZfktuIGBHKlUB1HPihxb0rplpzmXgDjdo+6Pnun7YAm\n sXK2SBsheEjiPjCPPHyNo1+AdZJ1omKaczIQvO/pcbH3Flo4OANqI1pxnBpYg3JCds+4cB2ptnh\n 42PiR0gWj8zt6ljA==","X-Gm-Gg":"AeBDievj20VjuicwF2kLYKUjqn7OuJp1DmRXVEkNG34BaAzRisj12rmPAsFNuC8yABA\n yTuktjW7B3o/ypM/SWpw0t3XqfNn3wuBuNlXbBvaPuZWfS8Q+y586aomb+yKh4kKpoXgklWCQT1\n /gOwBUey6eAipjqxMlia264bm2AmtXs1Hj3gNP2tvHTE6Y7Enz/u1fA8mzEnRnPRtlB4qVrt3KW\n L6kQpLvkZS3wTVBQ4MnOWxFSFTF5z4HcHxmJTgAKC+mhvUotO+9ZCJb/2nd2f/ys58WLnvbo749\n 5iuEk309c3w2JMFsnNjLWQSmi5HKuGt2m160L+50Y3Zvy+TjWQ7yHoLG+a0Tb4Na69NPyJ+NDez\n NSHUAxWkrsqUBIYndjB/x51PcyejRj8qIvFjNByXpFRuhfgYnIAWDIMROToNcqNfB6p3ooLhoUL\n hzjrs4/YY7XFmmCa4N1H11IZNwGacD4O5UxKHiU8w2nMLXbMRou7iG4FL1jIRZrOrHUbwwRWs6P\n kQT+3EqR9jxVA==","X-Received":["by 2002:a05:600d:10:b0:489:1a65:dd6e with SMTP id\n 5b1f17b1804b1-48a8444a2damr52714755e9.8.1777577362615;\n Thu, 30 Apr 2026 12:29:22 -0700 (PDT)","by 2002:a05:600d:10:b0:489:1a65:dd6e with SMTP id\n 5b1f17b1804b1-48a8444a2damr52714585e9.8.1777577362143;\n Thu, 30 Apr 2026 12:29:22 -0700 (PDT)"],"From":"Massimiliano Pellizzer <massimiliano.pellizzer@canonical.com>","To":"kernel-team@lists.ubuntu.com","Subject":"[SRU][N][PATCH v2 2/9] crypto: algif_aead - use memcpy_sglist()\n instead of null skcipher","Date":"Thu, 30 Apr 2026 21:28:13 +0200","Message-ID":"\n <f52a25786368b9aafaec419c304a1f337e8e2cc9.1777576834.git.massimiliano.pellizzer@canonical.com>","X-Mailer":"git-send-email 2.53.0","In-Reply-To":"<cover.1777576834.git.massimiliano.pellizzer@canonical.com>","References":"\n <177757626672.818044.11792928639290212185@tuxedo-infinitybook.public>\n <cover.1777576834.git.massimiliano.pellizzer@canonical.com>","MIME-Version":"1.0","X-BeenThere":"kernel-team@lists.ubuntu.com","X-Mailman-Version":"2.1.20","Precedence":"list","List-Id":"Kernel team discussions <kernel-team.lists.ubuntu.com>","List-Unsubscribe":"<https://lists.ubuntu.com/mailman/options/kernel-team>,\n <mailto:kernel-team-request@lists.ubuntu.com?subject=unsubscribe>","List-Archive":"<https://lists.ubuntu.com/archives/kernel-team>","List-Post":"<mailto:kernel-team@lists.ubuntu.com>","List-Help":"<mailto:kernel-team-request@lists.ubuntu.com?subject=help>","List-Subscribe":"<https://lists.ubuntu.com/mailman/listinfo/kernel-team>,\n <mailto:kernel-team-request@lists.ubuntu.com?subject=subscribe>","Content-Type":"text/plain; charset=\"utf-8\"","Content-Transfer-Encoding":"base64","Errors-To":"kernel-team-bounces@lists.ubuntu.com","Sender":"\"kernel-team\" <kernel-team-bounces@lists.ubuntu.com>"},"content":"From: Eric Biggers <ebiggers@google.com>\n\ncommit f2804d0eee8ddd57aa79d0b82872b74c21e1b69b upstream.\n\nFor copying data between two scatterlists, just use memcpy_sglist()\ninstead of the so-called \"null skcipher\".  This is much simpler.\n\nSigned-off-by: Eric Biggers <ebiggers@google.com>\nSigned-off-by: Herbert Xu <herbert@gondor.apana.org.au>\nSigned-off-by: Eric Biggers <ebiggers@kernel.org>\nSigned-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>\n(cherry picked from commit 18313726440135c43cebeb267aef5ad21a2f43e7 linux-6.12.y)\nCVE-2026-31431\nSigned-off-by: Massimiliano Pellizzer <massimiliano.pellizzer@canonical.com>\n---\n crypto/Kconfig      |   1 -\n crypto/algif_aead.c | 101 ++++++++------------------------------------\n 2 files changed, 18 insertions(+), 84 deletions(-)","diff":"diff --git a/crypto/Kconfig b/crypto/Kconfig\nindex 44661c2e30ca..4b6362105499 100644\n--- a/crypto/Kconfig\n+++ b/crypto/Kconfig\n@@ -1439,7 +1439,6 @@ config CRYPTO_USER_API_AEAD\n \tdepends on NET\n \tselect CRYPTO_AEAD\n \tselect CRYPTO_SKCIPHER\n-\tselect CRYPTO_NULL\n \tselect CRYPTO_USER_API\n \thelp\n \t  Enable the userspace interface for AEAD cipher algorithms.\ndiff --git a/crypto/algif_aead.c b/crypto/algif_aead.c\nindex 7d58cbbce4af..79b016a899a1 100644\n--- a/crypto/algif_aead.c\n+++ b/crypto/algif_aead.c\n@@ -27,7 +27,6 @@\n #include <crypto/scatterwalk.h>\n #include <crypto/if_alg.h>\n #include <crypto/skcipher.h>\n-#include <crypto/null.h>\n #include <linux/init.h>\n #include <linux/list.h>\n #include <linux/kernel.h>\n@@ -36,19 +35,13 @@\n #include <linux/net.h>\n #include <net/sock.h>\n \n-struct aead_tfm {\n-\tstruct crypto_aead *aead;\n-\tstruct crypto_sync_skcipher *null_tfm;\n-};\n-\n static inline bool aead_sufficient_data(struct sock *sk)\n {\n \tstruct alg_sock *ask = alg_sk(sk);\n \tstruct sock *psk = ask->parent;\n \tstruct alg_sock *pask = alg_sk(psk);\n \tstruct af_alg_ctx *ctx = ask->private;\n-\tstruct aead_tfm *aeadc = pask->private;\n-\tstruct crypto_aead *tfm = aeadc->aead;\n+\tstruct crypto_aead *tfm = pask->private;\n \tunsigned int as = crypto_aead_authsize(tfm);\n \n \t/*\n@@ -64,27 +57,12 @@ static int aead_sendmsg(struct socket *sock, struct msghdr *msg, size_t size)\n \tstruct alg_sock *ask = alg_sk(sk);\n \tstruct sock *psk = ask->parent;\n \tstruct alg_sock *pask = alg_sk(psk);\n-\tstruct aead_tfm *aeadc = pask->private;\n-\tstruct crypto_aead *tfm = aeadc->aead;\n+\tstruct crypto_aead *tfm = pask->private;\n \tunsigned int ivsize = crypto_aead_ivsize(tfm);\n \n \treturn af_alg_sendmsg(sock, msg, size, ivsize);\n }\n \n-static int crypto_aead_copy_sgl(struct crypto_sync_skcipher *null_tfm,\n-\t\t\t\tstruct scatterlist *src,\n-\t\t\t\tstruct scatterlist *dst, unsigned int len)\n-{\n-\tSYNC_SKCIPHER_REQUEST_ON_STACK(skreq, null_tfm);\n-\n-\tskcipher_request_set_sync_tfm(skreq, null_tfm);\n-\tskcipher_request_set_callback(skreq, CRYPTO_TFM_REQ_MAY_SLEEP,\n-\t\t\t\t      NULL, NULL);\n-\tskcipher_request_set_crypt(skreq, src, dst, len, NULL);\n-\n-\treturn crypto_skcipher_encrypt(skreq);\n-}\n-\n static int _aead_recvmsg(struct socket *sock, struct msghdr *msg,\n \t\t\t size_t ignored, int flags)\n {\n@@ -93,9 +71,7 @@ static int _aead_recvmsg(struct socket *sock, struct msghdr *msg,\n \tstruct sock *psk = ask->parent;\n \tstruct alg_sock *pask = alg_sk(psk);\n \tstruct af_alg_ctx *ctx = ask->private;\n-\tstruct aead_tfm *aeadc = pask->private;\n-\tstruct crypto_aead *tfm = aeadc->aead;\n-\tstruct crypto_sync_skcipher *null_tfm = aeadc->null_tfm;\n+\tstruct crypto_aead *tfm = pask->private;\n \tunsigned int i, as = crypto_aead_authsize(tfm);\n \tstruct af_alg_async_req *areq;\n \tstruct af_alg_tsgl *tsgl, *tmp;\n@@ -223,11 +199,8 @@ static int _aead_recvmsg(struct socket *sock, struct msghdr *msg,\n \t\t *\t    v\t   v\n \t\t * RX SGL: AAD || PT || Tag\n \t\t */\n-\t\terr = crypto_aead_copy_sgl(null_tfm, tsgl_src,\n-\t\t\t\t\t   areq->first_rsgl.sgl.sgt.sgl,\n-\t\t\t\t\t   processed);\n-\t\tif (err)\n-\t\t\tgoto free;\n+\t\tmemcpy_sglist(areq->first_rsgl.sgl.sgt.sgl, tsgl_src,\n+\t\t\t      processed);\n \t\taf_alg_pull_tsgl(sk, processed, NULL, 0);\n \t} else {\n \t\t/*\n@@ -241,12 +214,8 @@ static int _aead_recvmsg(struct socket *sock, struct msghdr *msg,\n \t\t * RX SGL: AAD || CT ----+\n \t\t */\n \n-\t\t /* Copy AAD || CT to RX SGL buffer for in-place operation. */\n-\t\terr = crypto_aead_copy_sgl(null_tfm, tsgl_src,\n-\t\t\t\t\t   areq->first_rsgl.sgl.sgt.sgl,\n-\t\t\t\t\t   outlen);\n-\t\tif (err)\n-\t\t\tgoto free;\n+\t\t/* Copy AAD || CT to RX SGL buffer for in-place operation. */\n+\t\tmemcpy_sglist(areq->first_rsgl.sgl.sgt.sgl, tsgl_src, outlen);\n \n \t\t/* Create TX SGL for tag and chain it to RX SGL. */\n \t\tareq->tsgl_entries = af_alg_count_tsgl(sk, processed,\n@@ -379,7 +348,7 @@ static int aead_check_key(struct socket *sock)\n \tint err = 0;\n \tstruct sock *psk;\n \tstruct alg_sock *pask;\n-\tstruct aead_tfm *tfm;\n+\tstruct crypto_aead *tfm;\n \tstruct sock *sk = sock->sk;\n \tstruct alg_sock *ask = alg_sk(sk);\n \n@@ -393,7 +362,7 @@ static int aead_check_key(struct socket *sock)\n \n \terr = -ENOKEY;\n \tlock_sock_nested(psk, SINGLE_DEPTH_NESTING);\n-\tif (crypto_aead_get_flags(tfm->aead) & CRYPTO_TFM_NEED_KEY)\n+\tif (crypto_aead_get_flags(tfm) & CRYPTO_TFM_NEED_KEY)\n \t\tgoto unlock;\n \n \tatomic_dec(&pask->nokey_refcnt);\n@@ -454,54 +423,22 @@ static struct proto_ops algif_aead_ops_nokey = {\n \n static void *aead_bind(const char *name, u32 type, u32 mask)\n {\n-\tstruct aead_tfm *tfm;\n-\tstruct crypto_aead *aead;\n-\tstruct crypto_sync_skcipher *null_tfm;\n-\n-\ttfm = kzalloc(sizeof(*tfm), GFP_KERNEL);\n-\tif (!tfm)\n-\t\treturn ERR_PTR(-ENOMEM);\n-\n-\taead = crypto_alloc_aead(name, type, mask);\n-\tif (IS_ERR(aead)) {\n-\t\tkfree(tfm);\n-\t\treturn ERR_CAST(aead);\n-\t}\n-\n-\tnull_tfm = crypto_get_default_null_skcipher();\n-\tif (IS_ERR(null_tfm)) {\n-\t\tcrypto_free_aead(aead);\n-\t\tkfree(tfm);\n-\t\treturn ERR_CAST(null_tfm);\n-\t}\n-\n-\ttfm->aead = aead;\n-\ttfm->null_tfm = null_tfm;\n-\n-\treturn tfm;\n+\treturn crypto_alloc_aead(name, type, mask);\n }\n \n static void aead_release(void *private)\n {\n-\tstruct aead_tfm *tfm = private;\n-\n-\tcrypto_free_aead(tfm->aead);\n-\tcrypto_put_default_null_skcipher();\n-\tkfree(tfm);\n+\tcrypto_free_aead(private);\n }\n \n static int aead_setauthsize(void *private, unsigned int authsize)\n {\n-\tstruct aead_tfm *tfm = private;\n-\n-\treturn crypto_aead_setauthsize(tfm->aead, authsize);\n+\treturn crypto_aead_setauthsize(private, authsize);\n }\n \n static int aead_setkey(void *private, const u8 *key, unsigned int keylen)\n {\n-\tstruct aead_tfm *tfm = private;\n-\n-\treturn crypto_aead_setkey(tfm->aead, key, keylen);\n+\treturn crypto_aead_setkey(private, key, keylen);\n }\n \n static void aead_sock_destruct(struct sock *sk)\n@@ -510,8 +447,7 @@ static void aead_sock_destruct(struct sock *sk)\n \tstruct af_alg_ctx *ctx = ask->private;\n \tstruct sock *psk = ask->parent;\n \tstruct alg_sock *pask = alg_sk(psk);\n-\tstruct aead_tfm *aeadc = pask->private;\n-\tstruct crypto_aead *tfm = aeadc->aead;\n+\tstruct crypto_aead *tfm = pask->private;\n \tunsigned int ivlen = crypto_aead_ivsize(tfm);\n \n \taf_alg_pull_tsgl(sk, ctx->used, NULL, 0);\n@@ -524,10 +460,9 @@ static int aead_accept_parent_nokey(void *private, struct sock *sk)\n {\n \tstruct af_alg_ctx *ctx;\n \tstruct alg_sock *ask = alg_sk(sk);\n-\tstruct aead_tfm *tfm = private;\n-\tstruct crypto_aead *aead = tfm->aead;\n+\tstruct crypto_aead *tfm = private;\n \tunsigned int len = sizeof(*ctx);\n-\tunsigned int ivlen = crypto_aead_ivsize(aead);\n+\tunsigned int ivlen = crypto_aead_ivsize(tfm);\n \n \tctx = sock_kmalloc(sk, len, GFP_KERNEL);\n \tif (!ctx)\n@@ -554,9 +489,9 @@ static int aead_accept_parent_nokey(void *private, struct sock *sk)\n \n static int aead_accept_parent(void *private, struct sock *sk)\n {\n-\tstruct aead_tfm *tfm = private;\n+\tstruct crypto_aead *tfm = private;\n \n-\tif (crypto_aead_get_flags(tfm->aead) & CRYPTO_TFM_NEED_KEY)\n+\tif (crypto_aead_get_flags(tfm) & CRYPTO_TFM_NEED_KEY)\n \t\treturn -ENOKEY;\n \n \treturn aead_accept_parent_nokey(private, sk);\n","prefixes":["SRU","N","v2","2/9"]}