11 releases
Uses new Rust 2024
new 0.3.1 | May 5, 2025 |
---|---|
0.3.0 | May 4, 2025 |
0.2.6 | Apr 29, 2025 |
0.2.2 | Mar 24, 2025 |
0.1.1 | Mar 11, 2025 |
#429 in Magic Beans
493 downloads per month
Used in 4 crates
(2 directly)
76KB
1K
SLoC
ic_auth_verifier
IC-Auth is a web authentication system based on the Internet Computer.
ic_auth_verifier
is a Rust library for signing and verifying cryptographic signatures in the IC-Auth ecosystem.
Features
- Verify signatures using multiple cryptographic algorithms:
- Ed25519
- ECDSA with secp256k1 curve
- ECDSA with P-256 curve (secp256r1)
- Internet Computer Canister Signatures
- Parse and validate DER-encoded public keys
- Compute various hash functions (SHA-256, SHA3-256, Keccak-256)
- Optional envelope functionality (enabled with the
envelope
feature)
Installation
Add this to your Cargo.toml
:
[dependencies]
ic_auth_verifier = "0.3" # Replace with the latest version
To enable the envelope feature:
[dependencies]
ic_auth_verifier = { version = "0.3", features = ["envelope"] }
Usage
Basic Signing
use ic_auth_verifier::SignedEnvelope;
let identity = /* your ICP Identity */;
let message = b"message";
let envelope = SignedEnvelope::sign_message(identity, message)?;
// Adds the SignedEnvelope to the Authorization header to be sent to the service which will verify the signature.
envelope.to_authorization(&mut headers)?;
// Or adds the SignedEnvelope components to the IC-Auth-* HTTP headers.
// envelope.to_headers(&mut headers)?;
Basic Verification
use ic_auth_verifier::{SignedEnvelope, unix_ms};
let envelope = SignedEnvelope::from_authorization(&headers).unwrap();
// Verify the envelope
envelope.verify(unix_ms(), None, None)?;
License
Copyright © 2024-2025 LDC Labs.
ldclabs/ic-auth
is licensed under the MIT License. See LICENSE for the full license text.
Dependencies
~9–21MB
~311K SLoC