10个版本

0.2.9 2023年11月6日
0.2.8 2023年7月26日
0.2.7 2022年5月10日
0.2.6 2022年1月30日
0.2.1 2018年12月30日

#587 in 加密学

Download history 19/week @ 2024-04-08 123/week @ 2024-04-15 23/week @ 2024-04-22 7/week @ 2024-04-29 49/week @ 2024-05-06 128/week @ 2024-05-13 56/week @ 2024-05-20 137/week @ 2024-05-27 65/week @ 2024-06-03 70/week @ 2024-06-10 41/week @ 2024-06-17 93/week @ 2024-06-24 118/week @ 2024-07-01 118/week @ 2024-07-08 76/week @ 2024-07-15 35/week @ 2024-07-22

每月下载量:353
用于 passport_azure_ad

BSD-2-Clause许可

文件大小:47KB
代码行数:682行(不含注释)

Documentation crates.io tests

jws

本库提供了JSON Web Signature的编码、解码、签名和验证,具体描述见RFC 7515

目前,编码和解码仅适用于compact模块中的JWS Compact Serialization方案。

签名和验证通过SignerVerifier特质来完成。模块hmac包含了对HMAC-SHA2算法族的这些特质的支持实现。

示例

use jws::{JsonObject, JsonValue};
use jws::compact::{decode_verify, encode_sign};
use jws::hmac::{Hs512Signer, HmacVerifier};

fn encode_decode() -> jws::Result<()> {
  // Add custom header parameters.
  let mut header = JsonObject::new();
  header.insert(String::from("typ"), JsonValue::from("text/plain"));

  // Encode and sign the message.
  let encoded = encode_sign(header, b"payload", &Hs512Signer::new(b"secretkey"))?;

  // Decode and verify the message.
  let decoded = decode_verify(encoded.data().as_bytes(), &HmacVerifier::new(b"secretkey"))?;

  assert_eq!(decoded.payload, b"payload");
  assert_eq!(decoded.header.get("typ").and_then(|x| x.as_str()), Some("text/plain"));

  Ok(())
}

依赖项

~1.4–2.4MB
~51K SLoC