Skip to content

Commit 782f8a2

Browse files
committed
chore: add a test to demonstrate a bug in RSA precompile
1 parent d0bf74c commit 782f8a2

File tree

5 files changed

+171
-0
lines changed

5 files changed

+171
-0
lines changed
Lines changed: 91 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,91 @@
1+
Delivered-To: [email protected]
2+
Received: by 2002:a05:6214:2d09:b0:6d4:dbb:92cf with SMTP id mz9csp1915278qvb;
3+
Thu, 12 Dec 2024 06:59:19 -0800 (PST)
4+
X-Received: by 2002:a05:600c:548a:b0:434:fddf:5bfa with SMTP id 5b1f17b1804b1-43622827721mr35174785e9.2.1734015559529;
5+
Thu, 12 Dec 2024 06:59:19 -0800 (PST)
6+
ARC-Seal: i=1; a=rsa-sha256; t=1734015559; cv=none;
7+
d=google.com; s=arc-20240605;
8+
b=KWPo00JyojZ5SoZqrXNYbjoiMN+zhth6SwTLDnxbs+st9c0w6fyICGAZ1KAiGQklN1
9+
DYE+r7DNyX7LSUU+SWrrniVusdyTHjKj5LKSKI0eUaGlGxd0tmqWrIFxHQg80uRmdQZp
10+
Y1TORbLZxY63p2zc6hmTE7P2w7Dh78iZ4ik703xXaLBEExZ4nGeL25AI5fWjqCT0XupP
11+
C5mEyPgQR9/bJYOuTWB0jnob+FzUyeLBNcwTH23a0v/5U4D04a9V9qVtzxI2t/+CzAlL
12+
B3vfg0bBQr383sBfTS0gZw4Yw2becvU+8TF2pmxTZKcGrTk/SVscHvmydQjPJPnQy6BS
13+
qZlA==
14+
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605;
15+
h=to:subject:message-id:date:from:mime-version:dkim-signature;
16+
bh=LQGIbyldyaEXkRjxP4juA1p6OWt0/mVaK304rMbruQY=;
17+
fh=3LUvcuUZaLqvahvUvchtCVlQobQXIXW53quuqPC6hCI=;
18+
b=DqPm3joccCXxFS0NRJPOk/dUrD+bhebK6kvj6wYNXmk67Pnmm5E0vbFV1GQNaV77CM
19+
iISioNjQ7WgtZUPTj893SNidmT9UgM5RW/6FzzTq67LzExuul56OcFEupJV6UNvGs3IG
20+
Q3Vwr71dGL5QVLl2OP5f84jcFZqd+m6Tbn65vHS1vYGGYHqkpxtAmtGmKXRCfuid+9QQ
21+
KE+acbks4KChrOcCzixqnZAMUJ6KooKiAANVFMFyN8G5FnOjwzNo2Mq2l15S8D3D16tK
22+
Wf2pwyF/ykEE92ojoS1KD7lZlu5JnB7uLIBDz+STbyEKFz/qIOWVr3w5d5/XyER+45bh
23+
ByJg==;
24+
dara=google.com
25+
ARC-Authentication-Results: i=1; mx.google.com;
26+
dkim=pass [email protected] header.s=google header.b=hIqUilaZ;
27+
spf=pass (google.com: domain of [email protected] designates 209.85.220.41 as permitted sender) smtp.mailfrom=[email protected];
28+
dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=vlayer.xyz;
29+
30+
Return-Path: <[email protected]>
31+
Received: from mail-sor-f41.google.com (mail-sor-f41.google.com. [209.85.220.41])
32+
by mx.google.com with SMTPS id 5b1f17b1804b1-434d9e4a3d6sor65113945e9.2.2024.12.12.06.59.19
33+
34+
(Google Transport Security);
35+
Thu, 12 Dec 2024 06:59:19 -0800 (PST)
36+
Received-SPF: pass (google.com: domain of [email protected] designates 209.85.220.41 as permitted sender) client-ip=209.85.220.41;
37+
Authentication-Results: mx.google.com;
38+
dkim=pass [email protected] header.s=google header.b=hIqUilaZ;
39+
spf=pass (google.com: domain of [email protected] designates 209.85.220.41 as permitted sender) smtp.mailfrom=[email protected];
40+
dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=vlayer.xyz;
41+
42+
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
43+
d=vlayer.xyz; s=google; t=1734015558; x=1734620358; dara=google.com;
44+
h=to:subject:message-id:date:from:mime-version:from:to:cc:subject
45+
:date:message-id:reply-to;
46+
bh=LQGIbyldyaEXkRjxP4juA1p6OWt0/mVaK304rMbruQY=;
47+
b=hIqUilaZaT7Cnb69SGufg0RsEJqnJEWP4FexFHd/NL7xzuv1KLyBW9Tz7GYKvK5CWn
48+
bJ99X8zGC0LMAzA+am7D2FCmE5Jsm6NfavwxAxTspVgk+BnA6IZipUJggQhT19KmW7Ze
49+
j66JmDQkgdd1OXTMLyujAPyZK4aIxgAbgT0+eKMN8c+fYyG8it4nEQxacy9IaEk1hX8j
50+
QL4Lv2ZaCVqjHz+5d/ryy2ZxCzGbL6kg5xiwcaZg6QKzjIuvN2WmcfPGKyNnE7M/cIlH
51+
T73IFDJ1FN2eaSVknr62k1rx/TdbOfwGaWNVUBpY0f2fxmfW582AODNvX9TNu5U0d6RJ
52+
m8ow==
53+
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
54+
d=1e100.net; s=20230601; t=1734015558; x=1734620358;
55+
h=to:subject:message-id:date:from:mime-version:x-gm-message-state
56+
:from:to:cc:subject:date:message-id:reply-to;
57+
bh=LQGIbyldyaEXkRjxP4juA1p6OWt0/mVaK304rMbruQY=;
58+
b=fFkK+aSuCiSvCiT130BeZvSfPYp0ZnRctMw0JEwsCI/r6a5aL7TMbn17/lkD+F2mAf
59+
JJOOUrbxw6yzWuBkhWdTpmRRjGv9M9s+P7ww0PT5bxg5rSZP9NCmHWmNYw0uXPEB5C6U
60+
K4MuoFPyESd/HZjxpLSv7qRJHvUpscpnLGXd3idkXp2vcmQHEtXeRXseDRPEJJydtHnp
61+
fqXslBey3okUcckOJnF/f5IGH001uIcLS79SYOLLCdcgwqwgQ+eOjhCrOf1G/SCfwVZA
62+
wwChSDKuyZyUznOqMi62QDvSe4wqueLtEZXJephky6EfxKjBOM15mkZ5y+P4ihhyuRDK
63+
IBbg==
64+
X-Gm-Message-State: AOJu0YxigaTqCodPl+s7mSOCec8OOm54wJ7vrrMcw9yKCEXr+5E5jaaB
65+
0PXpuZKikQjFGxAD4hwy4h26al6KCN2qJIugeM9fWR/i3rOxfdSFvFcwUj7bXHj+u+w75vmc6UK
66+
o5LgdcRg1eLfxfRqlE6fhfeEZT7PmFHnEeNyhWw6wROA0Vm4XTKH5LQ==
67+
X-Gm-Gg: ASbGnctKYoQ8xWAuHhqO/S0ZhtX47EgtY7pNpmdS63/HfwZef59+fYi6uqgOEmqRgn5
68+
ImSzmu2H0xdcW4lByIXMtSu9arjPsooDT/2x/yA==
69+
X-Google-Smtp-Source: AGHT+IGp3tJvotti3YsJZd97gPY5N08B7hLPlCz8DEjyIOKcnyhuk3+7AC0iwTvCrXhF1qNuJSC9LXZZjG/xgUQ36TQ=
70+
X-Received: by 2002:a05:6000:4706:b0:386:3825:2c3b with SMTP id
71+
ffacd0b85a97d-387876912f7mr3010625f8f.18.1734015558386; Thu, 12 Dec 2024
72+
06:59:18 -0800 (PST)
73+
MIME-Version: 1.0
74+
From: Ivan Rukhavets <[email protected]>
75+
Date: Thu, 12 Dec 2024 15:59:07 +0100
76+
Message-ID: <CAM-4p2UYUgouPwaP_aCddBiRr-ba4p_mJnORuGUHb5XULpe6TQ@mail.gmail.com>
77+
Subject: Is dinner ready?
78+
To: Ivan Rukhavets <[email protected]>
79+
Content-Type: multipart/alternative; boundary="00000000000064b16c062913f525"
80+
81+
--00000000000064b16c062913f525
82+
Content-Type: text/plain; charset="UTF-8"
83+
84+
Foo bar
85+
86+
--00000000000064b16c062913f525
87+
Content-Type: text/html; charset="UTF-8"
88+
89+
<div dir="ltr">Foo bar</div>
90+
91+
--00000000000064b16c062913f525--
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
-----BEGIN PRIVATE KEY-----
2+
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
39+
TnB8R96ix9dUZeXMzdOJP1o=
40+
-----END PRIVATE KEY-----

patch-testing/RustCrypto-rsa/program/Cargo.toml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,11 @@ edition = "2021"
88
name = "rsa_test_verify_pkcs"
99
path = "bin/verify_pkcs.rs"
1010

11+
[[bin]]
12+
name = "rsa_test_email"
13+
path = "bin/email.rs"
14+
15+
1116
[dependencies]
1217
sp1-zkvm = { path = "../../../crates/zkvm/entrypoint" }
1318
num-bigint = "0.4.0"
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
#![no_main]
2+
sp1_zkvm::entrypoint!(main);
3+
4+
use rsa::{
5+
pkcs1v15,
6+
pkcs8::DecodePrivateKey,
7+
sha2::Sha256,
8+
signature::{Keypair, Signer, Verifier},
9+
RsaPrivateKey,
10+
};
11+
12+
pub fn main() {
13+
let private_key_string: String = sp1_zkvm::io::read();
14+
let email_string: String = sp1_zkvm::io::read();
15+
16+
let private_key = RsaPrivateKey::from_pkcs8_pem(&private_key_string).unwrap();
17+
let signing_key = pkcs1v15::SigningKey::<Sha256>::new(private_key);
18+
let signature = signing_key.sign(email_string.as_bytes());
19+
let verifying_key = signing_key.verifying_key();
20+
21+
verifying_key.verify(email_string.as_bytes(), &signature).unwrap()
22+
}

patch-testing/RustCrypto-rsa/src/lib.rs

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,19 @@ pub fn test_pkcs_verify_100(
2828
|_| {}
2929
}
3030

31+
#[sp1_test::sp1_test("rsa_test_email", syscalls = [U256XU2048_MUL], gpu, prove)]
32+
pub fn test_pkcs_verify_email(
33+
stdin: &mut sp1_sdk::SP1Stdin,
34+
) -> impl FnOnce(sp1_sdk::SP1PublicValues) {
35+
const RSA_3072_PRIV_PEM: &str = include_str!("../assets/rsa3072-priv.pem");
36+
const EMAIL: &str = include_str!("../assets/email.eml");
37+
38+
stdin.write(&RSA_3072_PRIV_PEM.to_string());
39+
stdin.write(&EMAIL.to_string());
40+
41+
|_| {}
42+
}
43+
3144
#[cfg(test)]
3245
fn sign_inner() -> (Signature, VerifyingKey<Sha256>, Vec<u8>) {
3346
use rsa::pkcs1v15::SigningKey;

0 commit comments

Comments
 (0)