1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
//! # APx core primitives
//!
//! - URIs
//! - DIDs
//! - Keys and signatures (Ed25519 and RSA)
//! - HTTP signatures (Draft-Cavage and RFC-9421)
//! - Data integrity proofs (FEP-8b32)
//!
//! ## Examples
//!
//! Create an HTTP signature:
//!
//! ```rust
//! use apx_core::{
//! crypto::rsa::generate_rsa_key,
//! http_signatures::create::{create_http_signature_cavage, HttpSigner},
//! http_types::Method,
//! };
//! let request_uri = "https://verifier.example/inbox";
//! let request_body = r#"{"type":"Note"}"#;
//! let signer_key = generate_rsa_key().expect("should generate secret key");
//! let signer_key_id = "https://signer.example/actor#main-key";
//! let signer = HttpSigner::new_rsa(signer_key, signer_key_id.to_owned());
//! let signed_headers = create_http_signature_cavage(
//! Method::POST,
//! request_uri,
//! Some(request_body.as_bytes()),
//! &signer,
//! ).expect("should create signature");
//! assert_eq!(signed_headers.host, "verifier.example");
//! ```