provnai/provn-sdk
GitHub: provnai/provn-sdk
一个多语言客户端 SDK,提供基于 Ed25519 的本地隐私保护式密码学签名与离线验证能力,作为可验证 AI 的核心身份层。
Stars: 4 | Forks: 0
# Provncloud SDK
[](https://opensource.org/licenses/MIT)
[](https://crates.io/crates/provn-sdk)
[](https://www.npmjs.com/package/@provncloud/sdk)
[](https://pypi.org/project/provn-sdk/)
[](https://pkg.go.dev/github.com/provnai/provn-sdk/go)
[](https://github.com/provnai/provn-sdk/releases)
[](https://github.com/provnai/provn-sdk/tags)
Provncloud SDK 是一个多语言工具包,用于确定性的 claim 序列化、Ed25519 签名、SHA-256 哈希处理和离线验证。
本仓库基于共享的 wire format 构建:
- `Claim { data, metadata?, timestamp }`
- `SignedClaim { claim, public_key, signature }`
Rust crate 是参考实现。TypeScript 通过 WASM 使用 Rust,Python 通过 PyO3 使用 Rust,而 Go 和 Java 是匹配相同 canonical JSON 和签名行为的原生移植。
## 快速入门
### Python
```
pip install provn-sdk
```
```
from provn_sdk import ProvnSDK
import time
sdk = ProvnSDK()
keys = sdk.generate_keypair()
claim = sdk.create_claim("My Critical Data", int(time.time()), None)
signed = sdk.sign_claim(claim, keys["private_key"])
print(sdk.verify_claim(signed))
```
### TypeScript / Node.js
```
npm install @provncloud/sdk
```
```
import { ProvnSDK, initSDK } from "@provncloud/sdk";
async function main() {
await initSDK();
const sdk = new ProvnSDK();
const keys = sdk.generateKeypair();
sdk.setKeypair(keys);
const claim = sdk.createClaimNow("My Critical Data");
const signed = sdk.signClaim(claim);
console.log(sdk.verifyClaim(signed));
}
main();
```
### Rust
```
cargo add provn-sdk
```
```
use provn_sdk::{generate_keypair, sign_claim, verify_claim, Claim};
fn main() {
let key = generate_keypair();
let claim = Claim::new("My Critical Data".to_string(), None);
let signed = sign_claim(&claim, &key).unwrap();
println!("{}", verify_claim(&signed).unwrap());
}
```
### Go
```
go get github.com/provnai/provn-sdk/go
```
```
package main
import (
"fmt"
provnsdk "github.com/provnai/provn-sdk/go/pkg"
)
func main() {
keypair, _ := provnsdk.GenerateKeypair()
claim := provnsdk.CreateClaimWithoutMetadata("My Critical Data")
signed, _ := provnsdk.SignClaim(claim, keypair)
isValid, _ := provnsdk.VerifyClaim(signed)
fmt.Println(isValid)
}
```
## 安全说明
- SDK 对参与签名的 canonical JSON payload 强制执行 2 KB 的大小限制。
- 对于大型或敏感文档,请在本地进行哈希处理并对哈希值进行签名,而不是对原始内容进行签名。
- 在解析不受信任的 JSON 时,请优先使用严格的反序列化路径,例如 Go 的 `ParseSignedClaimStrict`。
- Python 会在遇到格式错误的验证输入时引发 `MalformedClaimError`,并且仅在出现纯粹的加密不匹配时返回 `False`。
## 开源规范
- `spec/test-vectors.json` 中提交的密钥仅供测试使用的公开向量,不提供任何生产环境安全性。
- 构建的原生扩展、wheels、`.wasm` 输出、`dist/`、`target/` 以及跨语言的临时生成文件被有意排除在版本控制之外。
- 绝不应将任何生产环境的 API key、机密信息或私有凭证提交到此仓库中。
## 开发
```
python scripts/build-all.py build
python scripts/build-all.py test
python scripts/build-all.py clean
```
有关贡献者指南,请参阅 [CONTRIBUTING.md](CONTRIBUTING.md)。
## 文档
- [协议规范](spec/SPEC.md)
- [用例](USE_CASES.md)
- [更新日志](CHANGELOG.md)
- [贡献](CONTRIBUTING.md)
- [行为准则](CODE_OF_CONDUCT.md)
## 许可证
MIT。请参阅 [LICENSE](LICENSE)。
标签:CVE, Ed25519, JS文件枚举, Rust, 可视化界面, 可验证AI, 多语言绑定, 客户端SDK, 密码学, 手动系统调用, 数字签名, 日志审计, 网络流量审计, 逆向工具, 通知系统