Skip to content

chore: add a test to demonstrate a bug in RSA precompile #2190

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 2 commits into
base: dev
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
91 changes: 91 additions & 0 deletions patch-testing/RustCrypto-rsa/assets/email.eml
Original file line number Diff line number Diff line change
@@ -0,0 +1,91 @@
Delivered-To: ivanruch@gmail.com
Received: by 2002:a05:6214:2d09:b0:6d4:dbb:92cf with SMTP id mz9csp1915278qvb;
Thu, 12 Dec 2024 06:59:19 -0800 (PST)
X-Received: by 2002:a05:600c:548a:b0:434:fddf:5bfa with SMTP id 5b1f17b1804b1-43622827721mr35174785e9.2.1734015559529;
Thu, 12 Dec 2024 06:59:19 -0800 (PST)
ARC-Seal: i=1; a=rsa-sha256; t=1734015559; cv=none;
d=google.com; s=arc-20240605;
b=KWPo00JyojZ5SoZqrXNYbjoiMN+zhth6SwTLDnxbs+st9c0w6fyICGAZ1KAiGQklN1
DYE+r7DNyX7LSUU+SWrrniVusdyTHjKj5LKSKI0eUaGlGxd0tmqWrIFxHQg80uRmdQZp
Y1TORbLZxY63p2zc6hmTE7P2w7Dh78iZ4ik703xXaLBEExZ4nGeL25AI5fWjqCT0XupP
C5mEyPgQR9/bJYOuTWB0jnob+FzUyeLBNcwTH23a0v/5U4D04a9V9qVtzxI2t/+CzAlL
B3vfg0bBQr383sBfTS0gZw4Yw2becvU+8TF2pmxTZKcGrTk/SVscHvmydQjPJPnQy6BS
qZlA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605;
h=to:subject:message-id:date:from:mime-version:dkim-signature;
bh=LQGIbyldyaEXkRjxP4juA1p6OWt0/mVaK304rMbruQY=;
fh=3LUvcuUZaLqvahvUvchtCVlQobQXIXW53quuqPC6hCI=;
b=DqPm3joccCXxFS0NRJPOk/dUrD+bhebK6kvj6wYNXmk67Pnmm5E0vbFV1GQNaV77CM
iISioNjQ7WgtZUPTj893SNidmT9UgM5RW/6FzzTq67LzExuul56OcFEupJV6UNvGs3IG
Q3Vwr71dGL5QVLl2OP5f84jcFZqd+m6Tbn65vHS1vYGGYHqkpxtAmtGmKXRCfuid+9QQ
KE+acbks4KChrOcCzixqnZAMUJ6KooKiAANVFMFyN8G5FnOjwzNo2Mq2l15S8D3D16tK
Wf2pwyF/ykEE92ojoS1KD7lZlu5JnB7uLIBDz+STbyEKFz/qIOWVr3w5d5/XyER+45bh
ByJg==;
dara=google.com
ARC-Authentication-Results: i=1; mx.google.com;
dkim=pass header.i=@vlayer.xyz header.s=google header.b=hIqUilaZ;
spf=pass (google.com: domain of ivan@vlayer.xyz designates 209.85.220.41 as permitted sender) smtp.mailfrom=ivan@vlayer.xyz;
dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=vlayer.xyz;
dara=pass header.i=@gmail.com
Return-Path: <ivan@vlayer.xyz>
Received: from mail-sor-f41.google.com (mail-sor-f41.google.com. [209.85.220.41])
by mx.google.com with SMTPS id 5b1f17b1804b1-434d9e4a3d6sor65113945e9.2.2024.12.12.06.59.19
for <ivanruch@gmail.com>
(Google Transport Security);
Thu, 12 Dec 2024 06:59:19 -0800 (PST)
Received-SPF: pass (google.com: domain of ivan@vlayer.xyz designates 209.85.220.41 as permitted sender) client-ip=209.85.220.41;
Authentication-Results: mx.google.com;
dkim=pass header.i=@vlayer.xyz header.s=google header.b=hIqUilaZ;
spf=pass (google.com: domain of ivan@vlayer.xyz designates 209.85.220.41 as permitted sender) smtp.mailfrom=ivan@vlayer.xyz;
dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=vlayer.xyz;
dara=pass header.i=@gmail.com
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=vlayer.xyz; s=google; t=1734015558; x=1734620358; dara=google.com;
h=to:subject:message-id:date:from:mime-version:from:to:cc:subject
:date:message-id:reply-to;
bh=LQGIbyldyaEXkRjxP4juA1p6OWt0/mVaK304rMbruQY=;
b=hIqUilaZaT7Cnb69SGufg0RsEJqnJEWP4FexFHd/NL7xzuv1KLyBW9Tz7GYKvK5CWn
bJ99X8zGC0LMAzA+am7D2FCmE5Jsm6NfavwxAxTspVgk+BnA6IZipUJggQhT19KmW7Ze
j66JmDQkgdd1OXTMLyujAPyZK4aIxgAbgT0+eKMN8c+fYyG8it4nEQxacy9IaEk1hX8j
QL4Lv2ZaCVqjHz+5d/ryy2ZxCzGbL6kg5xiwcaZg6QKzjIuvN2WmcfPGKyNnE7M/cIlH
T73IFDJ1FN2eaSVknr62k1rx/TdbOfwGaWNVUBpY0f2fxmfW582AODNvX9TNu5U0d6RJ
m8ow==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20230601; t=1734015558; x=1734620358;
h=to:subject:message-id:date:from:mime-version:x-gm-message-state
:from:to:cc:subject:date:message-id:reply-to;
bh=LQGIbyldyaEXkRjxP4juA1p6OWt0/mVaK304rMbruQY=;
b=fFkK+aSuCiSvCiT130BeZvSfPYp0ZnRctMw0JEwsCI/r6a5aL7TMbn17/lkD+F2mAf
JJOOUrbxw6yzWuBkhWdTpmRRjGv9M9s+P7ww0PT5bxg5rSZP9NCmHWmNYw0uXPEB5C6U
K4MuoFPyESd/HZjxpLSv7qRJHvUpscpnLGXd3idkXp2vcmQHEtXeRXseDRPEJJydtHnp
fqXslBey3okUcckOJnF/f5IGH001uIcLS79SYOLLCdcgwqwgQ+eOjhCrOf1G/SCfwVZA
wwChSDKuyZyUznOqMi62QDvSe4wqueLtEZXJephky6EfxKjBOM15mkZ5y+P4ihhyuRDK
IBbg==
X-Gm-Message-State: AOJu0YxigaTqCodPl+s7mSOCec8OOm54wJ7vrrMcw9yKCEXr+5E5jaaB
0PXpuZKikQjFGxAD4hwy4h26al6KCN2qJIugeM9fWR/i3rOxfdSFvFcwUj7bXHj+u+w75vmc6UK
o5LgdcRg1eLfxfRqlE6fhfeEZT7PmFHnEeNyhWw6wROA0Vm4XTKH5LQ==
X-Gm-Gg: ASbGnctKYoQ8xWAuHhqO/S0ZhtX47EgtY7pNpmdS63/HfwZef59+fYi6uqgOEmqRgn5
ImSzmu2H0xdcW4lByIXMtSu9arjPsooDT/2x/yA==
X-Google-Smtp-Source: AGHT+IGp3tJvotti3YsJZd97gPY5N08B7hLPlCz8DEjyIOKcnyhuk3+7AC0iwTvCrXhF1qNuJSC9LXZZjG/xgUQ36TQ=
X-Received: by 2002:a05:6000:4706:b0:386:3825:2c3b with SMTP id
ffacd0b85a97d-387876912f7mr3010625f8f.18.1734015558386; Thu, 12 Dec 2024
06:59:18 -0800 (PST)
MIME-Version: 1.0
From: Ivan Rukhavets <ivan@vlayer.xyz>
Date: Thu, 12 Dec 2024 15:59:07 +0100
Message-ID: <CAM-4p2UYUgouPwaP_aCddBiRr-ba4p_mJnORuGUHb5XULpe6TQ@mail.gmail.com>
Subject: Is dinner ready?
To: Ivan Rukhavets <ivanruch@gmail.com>
Content-Type: multipart/alternative; boundary="00000000000064b16c062913f525"

--00000000000064b16c062913f525
Content-Type: text/plain; charset="UTF-8"
Foo bar
--00000000000064b16c062913f525
Content-Type: text/html; charset="UTF-8"

<div dir="ltr">Foo bar</div>

--00000000000064b16c062913f525--
40 changes: 40 additions & 0 deletions patch-testing/RustCrypto-rsa/assets/rsa3072-priv.pem
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
-----BEGIN PRIVATE KEY-----
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
TnB8R96ix9dUZeXMzdOJP1o=
-----END PRIVATE KEY-----
5 changes: 5 additions & 0 deletions patch-testing/RustCrypto-rsa/program/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,11 @@ edition = "2021"
name = "rsa_test_verify_pkcs"
path = "bin/verify_pkcs.rs"

[[bin]]
name = "rsa_test_email"
path = "bin/email.rs"


[dependencies]
sp1-zkvm = { path = "../../../crates/zkvm/entrypoint" }
num-bigint = "0.4.0"
Expand Down
22 changes: 22 additions & 0 deletions patch-testing/RustCrypto-rsa/program/bin/email.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
#![no_main]
sp1_zkvm::entrypoint!(main);

use rsa::{
pkcs1v15,
pkcs8::DecodePrivateKey,
sha2::Sha256,
signature::{Keypair, Signer, Verifier},
RsaPrivateKey,
};

pub fn main() {
let private_key_string: String = sp1_zkvm::io::read();
let email_string: String = sp1_zkvm::io::read();

let private_key = RsaPrivateKey::from_pkcs8_pem(&private_key_string).unwrap();
let signing_key = pkcs1v15::SigningKey::<Sha256>::new(private_key);
let signature = signing_key.sign(email_string.as_bytes());
let verifying_key = signing_key.verifying_key();

verifying_key.verify(email_string.as_bytes(), &signature).unwrap()
}
13 changes: 13 additions & 0 deletions patch-testing/RustCrypto-rsa/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,19 @@ pub fn test_pkcs_verify_100(
|_| {}
}

#[sp1_test::sp1_test("rsa_test_email", gpu, prove)]
pub fn test_pkcs_verify_email(
stdin: &mut sp1_sdk::SP1Stdin,
) -> impl FnOnce(sp1_sdk::SP1PublicValues) {
const RSA_3072_PRIV_PEM: &str = include_str!("../assets/rsa3072-priv.pem");
const EMAIL: &str = include_str!("../assets/email.eml");

stdin.write(&RSA_3072_PRIV_PEM.to_string());
stdin.write(&EMAIL.to_string());

|_| {}
}

#[cfg(test)]
fn sign_inner() -> (Signature, VerifyingKey<Sha256>, Vec<u8>) {
use rsa::pkcs1v15::SigningKey;
Expand Down
Loading