샘플
ring 0.17.14
검증된 샘플 — cargo ring 0.17.14. rust 1 · linux alpine/x64 · docker에서 contract를 실행해 통과했습니다: digest::digest computes SHA256 and SHA512 message digests
sha256:8d5d0aadd51aa11c10ddcc45426a404e46250f44199b4b93d52d8b4a9edbe515
이 네트워크가 제공하는 것은 하나입니다. 빌드되는 샘플. 샌드박스에서 돌리고 서명된 영수증을 보관합니다. 등급을 매기지 않고 무엇도 보증하지 않습니다 — 같은 코드가 당신 환경에서 빌드되는지는 측정한 적이 없습니다.
통과한 계약 영수증을 낸 서로 다른 서명 키의 수입니다. 하나면 작성자 혼자이고, 둘 이상이면 다른 사람도 빌드했다는 뜻입니다. 키는 스스로 만드는 것이고 뒤에 등록된 신원이 없으므로, 세는 것은 사람이 아니라 키입니다.
MIT-0
실행 증거
선언된 환경과 서명된 실행을 분리해 두었습니다. 이 샘플이 무엇을 어디서 실행했는지 그대로 볼 수 있습니다.
- 증거 기준
- 서명된 컨트랙트 통과
- 검증 영수증
- 1
- 빌드한 서명 키
- 1
선언된 환경
linux · alpine · musl x64 cargo
검증 실행 환경
| 환경 | 컨트랙트 | 단계 | 실행일 |
|---|---|---|---|
| rust 1 · linux alpine/x64 · docker ed25519:c1973797be207ac4 | PASS | compile:SKIPPED · contract:PASS · load:PASS · resolve:PASS CONTAINER_RUN · cargo@1rust:1-alpine@sha256:a10e64dd139b… |
2026-09-19 |
케이스
HOW- 목표
- verify pkg:cargo/ring@0.17.14
- 패키지
- 생성일
- 2026-09-18T10:45:49Z
컨트랙트
- digest::digest computes SHA256 and SHA512 message digests
- digest::Context incrementally hashes chunked message input
- hmac::sign generates HMAC-SHA256 tag and hmac::verify verifies it
- SecureRandom::fill generates non-zero cryptographically secure random bytes
- aead::LessSafeKey seals and opens data in place with AES-256-GCM
- pbkdf2::derive generates cryptographic key material using PBKDF2-HMAC-SHA256
- agreement::EphemeralPrivateKey generates X25519 key pair
파일
- Cargo.lock
- Cargo.toml
- PROMPT.md
- csx.json
- spec.json
- src/lib.rs
- test/contract.rs
소스
# This file is automatically @generated by Cargo.
# It is not intended for manual editing.
version = 4
[[package]]
name = "cc"
version = "1.4.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a3eb0f42d6c360dc3f8a821f6bf2fdea7f72bfd36b3076eb0e6d1e9e0752fff4"
dependencies = [
"find-msvc-tools",
"shlex",
]
[[package]]
name = "cfg-if"
version = "1.0.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4e7648175b45a9a48536d676f68d918270699102aa8dab5496df06904c914600"
[[package]]
name = "find-msvc-tools"
version = "0.1.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3e0f1c7c3a72c66fd80abe965175f7523475c0489a87d3ff9d6e8c87d87a9d2d"
[[package]]
name = "getrandom"
version = "0.2.17"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ff2abc00be7fca6ebc474524697ae276ad847ad0a6b3faa4bcb027e9a4614ad0"
dependencies = [
"cfg-if",
"libc",
"wasi",
]
[[package]]
name = "libc"
version = "0.2.189"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3eaf3ede3fee6db1a4c2ee091bf8a8b4dccdc6d17f656fb07896ee72867612f2"
[[package]]
name = "ring"
version = "0.17.14"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a4689e6c2294d81e88dc6261c768b63bc4fcdb852be6d1352498b114f61383b7"
dependencies = [
"cc",
"cfg-if",
"getrandom",
"libc",
"untrusted",
"windows-sys",
]
[[package]]
name = "sample-ring"
version = "1.0.0"
dependencies = [
"ring",
]
[[package]]
name = "shlex"
version = "2.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f8fadd59c855ef2080decdef8ff161eb6661b86933c9d82e5ba29dc602a55aba"
[[package]]
name = "untrusted"
version = "0.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1"
[[package]]
name = "wasi"
version = "0.11.1+wasi-snapshot-preview1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b"
[[package]]
name = "windows-sys"
version = "0.52.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d"
dependencies = [
"windows-targets",
]
[[package]]
name = "windows-targets"
version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973"
dependencies = [
"windows_aarch64_gnullvm",
"windows_aarch64_msvc",
"windows_i686_gnu",
"windows_i686_gnullvm",
"windows_i686_msvc",
"windows_x86_64_gnu",
"windows_x86_64_gnullvm",
"windows_x86_64_msvc",
]
[[package]]
name = "windows_aarch64_gnullvm"
version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3"
[[package]]
name = "windows_aarch64_msvc"
version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469"
[[package]]
name = "windows_i686_gnu"
version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b"
[[package]]
name = "windows_i686_gnullvm"
version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66"
[[package]]
name = "windows_i686_msvc"
version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66"
[[package]]
name = "windows_x86_64_gnu"
version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78"
[[package]]
name = "windows_x86_64_gnullvm"
version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d"
[[package]]
name = "windows_x86_64_msvc"
version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec"
[package]
name = "sample-ring"
version = "1.0.0"
edition = "2021"
publish = false
[dependencies]
ring = "=0.17.14"
[[bin]]
name = "contract"
path = "test/contract.rs"
Clean-room public code sample — generation instructions
Write a brand-new, minimal, self-contained code sample in this clean-room directory.
Do not copy, paraphrase, or reference any existing project source. Work only from this spec.
A csx.json manifest scaffold already exists. Do not recreate it from memory. Preserve its case.goal, packages and symbols; fill its empty case.contract with exact assertions and correct its environment, commands and verifierAdapter for the files you generate.
Goal: verify pkg:cargo/ring@0.17.14
Kind: HOW
Use EXACTLY these public packages and versions:
- pkg:cargo/ring@0.17.14
Rules:
- One focused purpose; the smallest project that proves the goal.
- Include a contract test (test/contract.*) that runs OFFLINE and exits 0 exactly when the goal behavior works.
- Pin every dependency with a lockfile so resolution is reproducible.
- No secrets, credentials, or tokens. No real URLs (only example.com or localhost). No absolute paths.
- No personal names, emails, company names, or project identifiers of any kind.
- No binaries and no generated output (node_modules, dist, target, venv, .git, .env).
- Keep it under 200 files and 256KB packed.
{"case":{"caseId":"case:sha256:90df70c43d14408e30dd4c99fcc41b89fa0687b043546423674e3b9d4d87a4fa","contract":["digest::digest computes SHA256 and SHA512 message digests","digest::Context incrementally hashes chunked message input","hmac::sign generates HMAC-SHA256 tag and hmac::verify verifies it","SecureRandom::fill generates non-zero cryptographically secure random bytes","aead::LessSafeKey seals and opens data in place with AES-256-GCM","pbkdf2::derive generates cryptographic key material using PBKDF2-HMAC-SHA256","agreement::EphemeralPrivateKey generates X25519 key pair"],"goal":"verify pkg:cargo/ring@0.17.14","kind":"HOW","packages":["pkg:cargo/ring@0.17.14"],"schemaVersion":1},"contractCommand":["cargo","run","--offline"],"environment":{"arch":"x64","distro":"alpine","ecosystem":"cargo","libc":"musl","os":"linux","packageManager":"cargo","schemaVersion":1},"license":"MIT-0","packages":["pkg:cargo/ring@0.17.14"],"schemaVersion":1,"subject":"pkg:cargo/ring@0.17.14","verifierAdapter":"cargo@1"}
{
"schemaVersion": 1,
"goal": "verify pkg:cargo/ring@0.17.14",
"kind": "HOW",
"packages": [
"pkg:cargo/ring@0.17.14"
]
}
//! Clean-room verification sample for ring.
pub use ring::*;
use ring::aead::{Aad, LessSafeKey, Nonce, UnboundKey, AES_256_GCM};
use ring::agreement::{EphemeralPrivateKey, X25519};
use ring::digest::{digest, Context, SHA256, SHA512};
use ring::hmac::{sign, verify, Key, HMAC_SHA256};
use ring::pbkdf2::{derive, PBKDF2_HMAC_SHA256};
use ring::rand::{SecureRandom, SystemRandom};
use std::num::NonZeroU32;
fn main() {
let rng = SystemRandom::new();
// 1. digest::digest computes SHA256 and SHA512 message digests
let data = b"hello world";
let sha256_digest = digest(&SHA256, data);
assert_eq!(sha256_digest.as_ref().len(), 32);
let expected_sha256 = [
0xb9, 0x4d, 0x27, 0xb9, 0x93, 0x4d, 0x3e, 0x08, 0xa5, 0x2e, 0x52, 0xd7, 0xda, 0x7d, 0xab,
0xfa, 0xc4, 0x84, 0xef, 0xe3, 0x7a, 0x53, 0x80, 0xee, 0x90, 0x88, 0xf7, 0xac, 0xe2, 0xef,
0xcd, 0xe9,
];
assert_eq!(sha256_digest.as_ref(), &expected_sha256[..]);
let sha512_digest = digest(&SHA512, data);
assert_eq!(sha512_digest.as_ref().len(), 64);
// 2. digest::Context incrementally hashes chunked message input
let mut ctx = Context::new(&SHA256);
ctx.update(b"hello ");
ctx.update(b"world");
let incremental_digest = ctx.finish();
assert_eq!(incremental_digest.as_ref(), sha256_digest.as_ref());
// 3. hmac::sign generates HMAC-SHA256 tag and hmac::verify verifies it
let key_bytes = b"super-secret-hmac-key";
let message = b"authenticated payload";
let hmac_key = Key::new(HMAC_SHA256, key_bytes);
let signature = sign(&hmac_key, message);
assert_eq!(signature.as_ref().len(), 32);
let verify_ok = verify(&hmac_key, message, signature.as_ref());
assert!(verify_ok.is_ok());
let verify_err = verify(&hmac_key, b"corrupted payload", signature.as_ref());
assert!(verify_err.is_err());
// 4. SecureRandom::fill generates non-zero cryptographically secure random bytes
let mut random_bytes = [0u8; 32];
rng.fill(&mut random_bytes)
.expect("SecureRandom::fill failed");
assert_ne!(random_bytes, [0u8; 32]);
// 5. aead::LessSafeKey seals and opens data in place with AES-256-GCM
let mut aes_key_bytes = [0u8; 32];
rng.fill(&mut aes_key_bytes)
.expect("key generation failed");
let unbound_key = UnboundKey::new(&AES_256_GCM, &aes_key_bytes).expect("unbound key error");
let less_safe_key = LessSafeKey::new(unbound_key);
let nonce_bytes = [7u8; 12];
let nonce = Nonce::assume_unique_for_key(nonce_bytes);
let plaintext = b"cryptographic sample message";
let mut in_out = plaintext.to_vec();
let tag = less_safe_key
.seal_in_place_separate_tag(nonce, Aad::empty(), &mut in_out)
.expect("seal failed");
let open_nonce = Nonce::assume_unique_for_key(nonce_bytes);
in_out.extend_from_slice(tag.as_ref());
let decrypted = less_safe_key
.open_in_place(open_nonce, Aad::empty(), &mut in_out)
.expect("open failed");
assert_eq!(decrypted, plaintext);
// 6. pbkdf2::derive generates cryptographic key material using PBKDF2-HMAC-SHA256
let salt = b"salt-for-kdf";
let password = b"user-password";
let mut derived_key = [0u8; 32];
derive(
PBKDF2_HMAC_SHA256,
NonZeroU32::new(1000).expect("non-zero iteration count"),
salt,
password,
&mut derived_key,
);
assert_ne!(derived_key, [0u8; 32]);
// 7. agreement::EphemeralPrivateKey generates X25519 key pair
let ephemeral_priv =
EphemeralPrivateKey::generate(&X25519, &rng).expect("EphemeralPrivateKey generation failed");
let public_key = ephemeral_priv
.compute_public_key()
.expect("compute_public_key failed");
assert_eq!(public_key.as_ref().len(), 32);
println!("All ring contract assertions passed successfully.");
}
오리진 시더
익명