Received: by 2002:a05:6358:3188:b0:123:57c1:9b43 with SMTP id q8csp338708rwd; Tue, 16 May 2023 01:35:37 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ4NvlAuQzgP1sg3k/Olby7zlSk/OWjGqL1TVZ8Ld+VY4J0kbWL8mbKrR8dDzqe/pLK4fgOS X-Received: by 2002:a05:6a20:8f22:b0:ff:c184:7c6b with SMTP id b34-20020a056a208f2200b000ffc1847c6bmr41163240pzk.10.1684226136953; Tue, 16 May 2023 01:35:36 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1684226136; cv=none; d=google.com; s=arc-20160816; b=W/AEOTOtEUYnSh5Fnyc2t0c/rBx5y9FU/5rUkMBHuVvzCkA0TPU2ZxMTqH3LyiODRe iEBPCVfdcb8nJOGGkpxcOCzi9GtjudJfyEHXR9Son/Ak7Wzufdo6GTXnP80BsOCLYtZw b9ZsoT+45jkg+dKeKwVWAvvlprrxkFzWJRg+VSgnMZCaM23yDk1kwS4CfauzYGtA9jWn R9FlWqcIGOsRdFaIjN9px/kARVKjOdsCbl4O6NqQKHwl1Paa9+Ncr6bUjgsIUwl7MqO2 WVIhDJ0ST7wILwnvEGhV7HAoQsHiuMul9bn2JJQMFya50dOTlOhtEwEhVpK+LJp3YXhJ 5uXQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:feedback-id:content-transfer-encoding :mime-version:references:in-reply-to:from:subject:cc:to:message-id :date:dkim-signature:dkim-signature; bh=SyFc5MYx4kAdkA77ywoxvbQKcoUjA0gNRoB3rR0I0Fw=; b=eYPAn4Da9Ym0Eq2Ell4H9/ygS94kdrvYbAVS1kk8jETwSX8zMYGVtytglJALvrDpDK oa2uOL2OqWTWx13tXIoPOM1LakjvClA4u5K9UQgFs7cUSV2PVr4uoKJAosFPTsoeRg53 7CEL3+vbdStyRPSluSBWrCBQ9oYh5S13XvMbPiw2S4Ef2MiT5VKS+ElTKG7+aOcitA0Y HPZ6giku7eDY15P6MjZVmoUnr66aDRYNppBS9qq8Wj6zBAXaFVx5GI7sRS0c8cjOJaAk n5ZvHgnz2p5MJ6qshU0iKt7/RSxaZQ91cJ95w5mHpM0qTAu0GkUy4NdWlhU2xqVJwgfn hNHQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@exabit.dev header.s=s25kmyuhzvo7troimxqpmtptpemzlc6l header.b=Y8G2vfQC; dkim=pass header.i=@amazonses.com header.s=hsbnp7p3ensaochzwyq5wwmceodymuwv header.b=QF1W1RKb; spf=pass (google.com: domain of linux-crypto-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-crypto-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=exabit.dev Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id b5-20020a621b05000000b0063b6ae02400si18633279pfb.293.2023.05.16.01.35.20; Tue, 16 May 2023 01:35:36 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-crypto-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@exabit.dev header.s=s25kmyuhzvo7troimxqpmtptpemzlc6l header.b=Y8G2vfQC; dkim=pass header.i=@amazonses.com header.s=hsbnp7p3ensaochzwyq5wwmceodymuwv header.b=QF1W1RKb; spf=pass (google.com: domain of linux-crypto-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-crypto-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=exabit.dev Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231490AbjEPIbS (ORCPT + 99 others); Tue, 16 May 2023 04:31:18 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:49924 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231400AbjEPIbR (ORCPT ); Tue, 16 May 2023 04:31:17 -0400 X-Greylist: delayed 355 seconds by postgrey-1.37 at lindbergh.monkeyblade.net; Tue, 16 May 2023 01:31:15 PDT Received: from a27-22.smtp-out.us-west-2.amazonses.com (a27-22.smtp-out.us-west-2.amazonses.com [54.240.27.22]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 82A5B188; Tue, 16 May 2023 01:31:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/simple; s=s25kmyuhzvo7troimxqpmtptpemzlc6l; d=exabit.dev; t=1684225520; h=Date:Message-Id:To:Cc:Subject:From:In-Reply-To:References:Mime-Version:Content-Type:Content-Transfer-Encoding; bh=GScpAXv+J3eSM6qFgW9uds9TDleKdfcZkU54I1b2MRI=; b=Y8G2vfQC3vwxxj6j4GwDb2AvnBwuAhbIXYMXBUinIRvi7RDzmhp6LNLO6fKYRJkD lvnoSRy++FdjiK7WmboaZz3KIsmmtHCcFkWQMb6gR81gguLjzvEDRPh3Rd/QWJ3oryD vqffG4sn6O0C6WCw4NTLqVMeUx7b/yAZKYsz7Jel9MHxCLB7IJfxZDJt849xpt3O+xR lnZQ/Kp9wVfLkhqgV529PZunpOf9qjaZCKZ+CAgvOQ2giF0uxsIHHxzlWOQxzwA068N uLfRH4mFBP6AX9AczUeYTIddfcTIgiezZoB6DDAFFiDSN3SO7j6NNOCIhDVZaYkVMpR 4O6peZXobA== DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/simple; s=hsbnp7p3ensaochzwyq5wwmceodymuwv; d=amazonses.com; t=1684225520; h=Date:Message-Id:To:Cc:Subject:From:In-Reply-To:References:Mime-Version:Content-Type:Content-Transfer-Encoding:Feedback-ID; bh=GScpAXv+J3eSM6qFgW9uds9TDleKdfcZkU54I1b2MRI=; b=QF1W1RKbg7VbNHjsIPVKDaZMjOrcbd3oJrHgEXH9XligsGLyX3vbv0MOgV9r9TWa vqFQqnM9GxCrLUobdPlSNl58NYltNrjnktWYlOUxHNGb7f63IGABFnRtFC0K1eKwtIU OCqiiGYtzeMH8NkHxfFNiqFHaDIC8XK+Ieqt3NAc= Date: Tue, 16 May 2023 08:25:19 +0000 Message-ID: <0101018823a9f0f2-a4620a25-6974-4464-a7ed-c997e9579243-000000@us-west-2.amazonses.com> To: ebiggers@kernel.org Cc: tomo@exabit.dev, rust-for-linux@vger.kernel.org, netdev@vger.kernel.org, linux-crypto@vger.kernel.org, fujita.tomonori@gmail.com Subject: Re: [PATCH 1/2] rust: add synchronous message digest support From: FUJITA Tomonori In-Reply-To: <20230516055219.GC2704@sol.localdomain> References: <20230515043353.2324288-1-tomo@exabit.dev> <010101881db037b4-c8c941a9-c482-4759-9c07-b8bf645d96ed-000000@us-west-2.amazonses.com> <20230516055219.GC2704@sol.localdomain> Mime-Version: 1.0 Content-Type: Text/Plain; charset=us-ascii Content-Transfer-Encoding: 7bit Feedback-ID: 1.us-west-2.j0GTvY5MHQQ5Spu+i4ZGzzYI1gDE7m7iuMEacWMZbe8=:AmazonSES X-SES-Outgoing: 2023.05.16-54.240.27.22 X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2,SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE, URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-crypto@vger.kernel.org Hi, On Mon, 15 May 2023 22:52:19 -0700 Eric Biggers wrote: >> +#include >> #include >> #include >> #include >> @@ -27,6 +28,29 @@ >> #include >> #include >> >> +void rust_helper_crypto_free_shash(struct crypto_shash *tfm) >> +{ >> + crypto_free_shash(tfm); >> +} >> +EXPORT_SYMBOL_GPL(rust_helper_crypto_free_shash); > > Shouldn't this code be compiled only when the crypto API is available? Oops, I'll add #ifdef CONFIG_CRYPTO >> +impl<'a> ShashDesc<'a> { >> + /// Creates a [`ShashDesc`] object for a request data structure for message digest. >> + pub fn new(tfm: &'a Shash) -> Result { >> + // SAFETY: The type invariant guarantees that the pointer is valid. >> + let size = core::mem::size_of::() >> + + unsafe { bindings::crypto_shash_descsize(tfm.0) } as usize; >> + let layout = Layout::from_size_align(size, 2)?; >> + let ptr = unsafe { alloc(layout) } as *mut bindings::shash_desc; >> + let mut desc = ShashDesc { ptr, tfm, size }; >> + // SAFETY: The `desc.tfm` is non-null and valid for the lifetime of this object. >> + unsafe { (*desc.ptr).tfm = desc.tfm.0 }; >> + Ok(desc) >> + } >> + >> + /// (Re)initializes message digest. >> + pub fn init(&mut self) -> Result { >> + // SAFETY: The type invariant guarantees that the pointer is valid. >> + to_result(unsafe { bindings::crypto_shash_init(self.ptr) }) >> + } >> + >> + /// Adds data to message digest for processing. >> + pub fn update(&mut self, data: &[u8]) -> Result { >> + // SAFETY: The type invariant guarantees that the pointer is valid. >> + to_result(unsafe { >> + bindings::crypto_shash_update(self.ptr, data.as_ptr(), data.len() as u32) >> + }) >> + } >> + >> + /// Calculates message digest. >> + pub fn finalize(&mut self, output: &mut [u8]) -> Result { >> + // SAFETY: The type invariant guarantees that the pointer is valid. >> + to_result(unsafe { bindings::crypto_shash_final(self.ptr, output.as_mut_ptr()) }) >> + } > > This doesn't enforce that init() is called before update() or finalize(). I > think that needs to be checked in the Rust code, since the C code doesn't have > defined behavior in that case. Surely, Rust side should handle the case. If the new() function internally calls init() before returning, it works? The new() returns an initialized ShaDesc object. Thanks for reviewing!