Skip to content

Commit 6eeef5f

Browse files
committed
feat: support rsassa-pkcs-v1.5-sha256 and rsassa-pss-sha512, braking api changes
1 parent 64d1077 commit 6eeef5f

14 files changed

Lines changed: 405 additions & 113 deletions

File tree

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ resolver = "2"
44

55
[workspace.package]
66
edition = "2021"
7-
version = "0.0.21"
7+
version = "0.0.22"
88
authors = ["Jun Kurihara"]
99
homepage = "https://github.com/junkurihara/httpsig-rs"
1010
repository = "https://github.com/junkurihara/httpsig-rs"

httpsig-hyper/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ blocking = ["futures/executor"]
1818

1919

2020
[dependencies]
21-
httpsig = { path = "../httpsig", version = "0.0.21" }
21+
httpsig = { path = "../httpsig", version = "0.0.22" }
2222

2323
thiserror = { version = "2.0.18" }
2424
tracing = { version = "0.1.44" }

httpsig-hyper/README.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,8 @@ If you need to verify the body of a given message when `content-digest` is cover
2727

2828
```rust
2929
// first verifies the signature according to `signature-input` header
30-
let public_key = PublicKey::from_pem(EDDSA_PUBLIC_KEY).unwrap();
30+
let alg = AlgorithmName::Ed25519;
31+
let public_key = PublicKey::from_pem(&alg, EDDSA_PUBLIC_KEY).unwrap();
3132
let signature_verification = req.verify_message_signature(&public_key, None).await;
3233
assert!(verification_res.is_ok());
3334

httpsig-hyper/examples/hyper-request.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ async fn sender_ed25519(req: &mut Request<BoxBody>) {
4343
let mut signature_params = HttpSignatureParams::try_new(&covered_components).unwrap();
4444

4545
// set signing/verifying key information, alg and keyid with ed25519
46-
let secret_key = SecretKey::from_pem(EDDSA_SECRET_KEY).unwrap();
46+
let secret_key = SecretKey::from_pem(&AlgorithmName::Ed25519, EDDSA_SECRET_KEY).unwrap();
4747
signature_params.set_key_info(&secret_key);
4848

4949
// set signature with custom signature name
@@ -65,7 +65,7 @@ async fn sender_hs256(req: &mut Request<BoxBody>) {
6565
let mut signature_params = HttpSignatureParams::try_new(&covered_components).unwrap();
6666

6767
// set signing/verifying key information, alg and keyid and random noce with hmac-sha256
68-
let shared_key = SharedKey::from_base64(HMACSHA256_SECRET_KEY).unwrap();
68+
let shared_key = SharedKey::from_base64(&AlgorithmName::HmacSha256, HMACSHA256_SECRET_KEY).unwrap();
6969
signature_params.set_key_info(&shared_key);
7070
signature_params.set_random_nonce();
7171

@@ -81,7 +81,7 @@ where
8181
B: http_body::Body + Send + Sync,
8282
{
8383
println!("Verifying ED25519 signature");
84-
let public_key = PublicKey::from_pem(EDDSA_PUBLIC_KEY).unwrap();
84+
let public_key = PublicKey::from_pem(&AlgorithmName::Ed25519, EDDSA_PUBLIC_KEY).unwrap();
8585
let key_id = public_key.key_id();
8686

8787
// verify signature with checking key_id
@@ -94,7 +94,7 @@ where
9494
B: http_body::Body + Send + Sync,
9595
{
9696
println!("Verifying HMAC-SHA256 signature");
97-
let shared_key = SharedKey::from_base64(HMACSHA256_SECRET_KEY).unwrap();
97+
let shared_key = SharedKey::from_base64(&AlgorithmName::HmacSha256, HMACSHA256_SECRET_KEY).unwrap();
9898
let key_id = VerifyingKey::key_id(&shared_key);
9999

100100
// verify signature with checking key_id

httpsig-hyper/examples/hyper-response.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ async fn sender_ed25519(res: &mut Response<BoxBody>, received_req: &Request<BoxB
5555
let mut signature_params = HttpSignatureParams::try_new(&covered_components).unwrap();
5656

5757
// set signing/verifying key information, alg and keyid with ed25519
58-
let secret_key = SecretKey::from_pem(EDDSA_SECRET_KEY).unwrap();
58+
let secret_key = SecretKey::from_pem(&AlgorithmName::Ed25519, EDDSA_SECRET_KEY).unwrap();
5959
signature_params.set_key_info(&secret_key);
6060

6161
// set signature with custom signature name
@@ -77,7 +77,7 @@ async fn sender_hs256(res: &mut Response<BoxBody>, received_req: &Request<BoxBod
7777
let mut signature_params = HttpSignatureParams::try_new(&covered_components).unwrap();
7878

7979
// set signing/verifying key information, alg and keyid and random noce with hmac-sha256
80-
let shared_key = SharedKey::from_base64(HMACSHA256_SECRET_KEY).unwrap();
80+
let shared_key = SharedKey::from_base64(&AlgorithmName::HmacSha256, HMACSHA256_SECRET_KEY).unwrap();
8181
signature_params.set_key_info(&shared_key);
8282
signature_params.set_random_nonce();
8383

@@ -93,7 +93,7 @@ where
9393
B: http_body::Body + Send + Sync,
9494
{
9595
println!("Verifying ED25519 signature");
96-
let public_key = PublicKey::from_pem(EDDSA_PUBLIC_KEY).unwrap();
96+
let public_key = PublicKey::from_pem(&AlgorithmName::Ed25519, EDDSA_PUBLIC_KEY).unwrap();
9797
let key_id = public_key.key_id();
9898

9999
// verify signature with checking key_id
@@ -106,7 +106,7 @@ where
106106
B: http_body::Body + Send + Sync,
107107
{
108108
println!("Verifying HMAC-SHA256 signature");
109-
let shared_key = SharedKey::from_base64(HMACSHA256_SECRET_KEY).unwrap();
109+
let shared_key = SharedKey::from_base64(&AlgorithmName::HmacSha256, HMACSHA256_SECRET_KEY).unwrap();
110110
let key_id = VerifyingKey::key_id(&shared_key);
111111

112112
// verify signature with checking key_id

httpsig-hyper/src/hyper_http.rs

Lines changed: 57 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,10 @@ use httpsig::prelude::{
55
message_component::{
66
DerivedComponentName, HttpMessageComponent, HttpMessageComponentId, HttpMessageComponentName, HttpMessageComponentParam,
77
},
8-
HttpSignatureBase, HttpSignatureHeaders, HttpSignatureHeadersMap, HttpSignatureParams, SigningKey, VerifyingKey,
8+
AlgorithmName, HttpSignatureBase, HttpSignatureHeaders, HttpSignatureHeadersMap, HttpSignatureParams, SigningKey, VerifyingKey,
99
};
1010
use indexmap::{IndexMap, IndexSet};
11-
use std::future::Future;
11+
use std::{future::Future, str::FromStr};
1212

1313
/// A type alias for the signature name
1414
type SignatureName = String;
@@ -24,7 +24,7 @@ pub trait MessageSignature {
2424
fn has_message_signature(&self) -> bool;
2525

2626
/// Extract all key ids for signature bases contained in the request headers
27-
fn get_key_ids(&self) -> Result<IndexMap<SignatureName, KeyId>, Self::Error>;
27+
fn get_alg_key_ids(&self) -> Result<IndexMap<SignatureName, (AlgorithmName, KeyId)>, Self::Error>;
2828

2929
/// Extract all signature params used to generate signature bases contained in the request headers
3030
fn get_signature_params(&self) -> Result<IndexMap<SignatureName, HttpSignatureParams>, Self::Error>;
@@ -243,9 +243,9 @@ where
243243
}
244244

245245
/// Extract all signature bases contained in the request headers
246-
fn get_key_ids(&self) -> HyperSigResult<IndexMap<SignatureName, KeyId>> {
246+
fn get_alg_key_ids(&self) -> HyperSigResult<IndexMap<SignatureName, (AlgorithmName, KeyId)>> {
247247
let req_or_res = RequestOrResponse::Request(self);
248-
get_key_ids_inner(&req_or_res)
248+
get_alg_key_ids_inner(&req_or_res)
249249
}
250250

251251
/// Extract all signature params used to generate signature bases contained in the request headers
@@ -358,9 +358,9 @@ where
358358
}
359359

360360
/// Extract all key ids for signature bases contained in the response headers
361-
fn get_key_ids(&self) -> Result<IndexMap<SignatureName, KeyId>, Self::Error> {
361+
fn get_alg_key_ids(&self) -> Result<IndexMap<SignatureName, (AlgorithmName, KeyId)>, Self::Error> {
362362
let req_or_res = RequestOrResponse::Response(self);
363-
get_key_ids_inner(&req_or_res)
363+
get_alg_key_ids_inner(&req_or_res)
364364
}
365365

366366
/// Extract all signature params used to generate signature bases contained in the response headers
@@ -594,11 +594,28 @@ fn has_message_signature_inner(headers: &HeaderMap) -> bool {
594594
}
595595

596596
/// get key ids inner function
597-
fn get_key_ids_inner<B>(req_or_res: &RequestOrResponse<B>) -> HyperSigResult<IndexMap<SignatureName, KeyId>> {
597+
fn get_alg_key_ids_inner<B>(
598+
req_or_res: &RequestOrResponse<B>,
599+
) -> HyperSigResult<IndexMap<SignatureName, (AlgorithmName, KeyId)>> {
598600
let signature_headers_map = extract_signature_headers_with_name(req_or_res)?;
599601
let res = signature_headers_map
600602
.iter()
601-
.filter_map(|(name, headers)| headers.signature_params().keyid.clone().map(|key_id| (name.clone(), key_id)))
603+
.filter_map(|(name, headers)| {
604+
let alg = headers
605+
.signature_params()
606+
.alg
607+
.clone()
608+
.map(|a| AlgorithmName::from_str(&a))
609+
.transpose()
610+
.ok()
611+
.flatten();
612+
let key_id = headers.signature_params().keyid.clone();
613+
if let (Some(alg), Some(key_id)) = (alg, key_id) {
614+
Some((name.clone(), (alg, key_id)))
615+
} else {
616+
None
617+
}
618+
})
602619
.collect();
603620
Ok(res)
604621
}
@@ -904,7 +921,7 @@ mod tests {
904921
*,
905922
};
906923
use http_body_util::Full;
907-
use httpsig::prelude::{PublicKey, SecretKey, SharedKey};
924+
use httpsig::prelude::{AlgorithmName, PublicKey, SecretKey, SharedKey};
908925

909926
type BoxBody = http_body_util::combinators::BoxBody<bytes::Bytes, HyperDigestError>;
910927

@@ -1053,7 +1070,7 @@ MCowBQYDK2VwAyEA1ixMQcxO46PLlgQfYS46ivFd+n0CcDHSKUnuhm3i1O0=
10531070
#[tokio::test]
10541071
async fn test_set_verify_message_signature_req() {
10551072
let mut req = build_request().await;
1056-
let secret_key = SecretKey::from_pem(EDDSA_SECRET_KEY).unwrap();
1073+
let secret_key = SecretKey::from_pem(&AlgorithmName::Ed25519, EDDSA_SECRET_KEY).unwrap();
10571074
let mut signature_params = HttpSignatureParams::try_new(&build_covered_components_req()).unwrap();
10581075
signature_params.set_key_info(&secret_key);
10591076

@@ -1062,7 +1079,7 @@ MCowBQYDK2VwAyEA1ixMQcxO46PLlgQfYS46ivFd+n0CcDHSKUnuhm3i1O0=
10621079
assert!(signature_input.starts_with(r##"sig=("@method" "date" "content-type" "content-digest")"##));
10631080
// let signature = req.headers().get("signature").unwrap().to_str().unwrap();
10641081

1065-
let public_key = PublicKey::from_pem(EDDSA_PUBLIC_KEY).unwrap();
1082+
let public_key = PublicKey::from_pem(&AlgorithmName::Ed25519, EDDSA_PUBLIC_KEY).unwrap();
10661083
let verification_res = req.verify_message_signature(&public_key, None).await;
10671084
assert!(verification_res.is_ok());
10681085
}
@@ -1072,7 +1089,7 @@ MCowBQYDK2VwAyEA1ixMQcxO46PLlgQfYS46ivFd+n0CcDHSKUnuhm3i1O0=
10721089
let req = build_request().await;
10731090
let mut res = build_response().await;
10741091

1075-
let secret_key = SecretKey::from_pem(EDDSA_SECRET_KEY).unwrap();
1092+
let secret_key = SecretKey::from_pem(&AlgorithmName::Ed25519, EDDSA_SECRET_KEY).unwrap();
10761093

10771094
let mut signature_params = HttpSignatureParams::try_new(&build_covered_components_res()).unwrap();
10781095
signature_params.set_key_info(&secret_key);
@@ -1090,15 +1107,15 @@ MCowBQYDK2VwAyEA1ixMQcxO46PLlgQfYS46ivFd+n0CcDHSKUnuhm3i1O0=
10901107
assert!(signature_input.starts_with(r##"sig=("@status" "@method";req "date" "content-type" "content-digest";req)"##));
10911108
// let signature = req.headers().get("signature").unwrap().to_str().unwrap();
10921109

1093-
let public_key = PublicKey::from_pem(EDDSA_PUBLIC_KEY).unwrap();
1110+
let public_key = PublicKey::from_pem(&AlgorithmName::Ed25519, EDDSA_PUBLIC_KEY).unwrap();
10941111
let verification_res = res.verify_message_signature(&public_key, None, Some(&req)).await;
10951112
assert!(verification_res.is_ok());
10961113
}
10971114

10981115
#[tokio::test]
10991116
async fn test_expired_signature() {
11001117
let mut req = build_request().await;
1101-
let secret_key = SecretKey::from_pem(EDDSA_SECRET_KEY).unwrap();
1118+
let secret_key = SecretKey::from_pem(&AlgorithmName::Ed25519, EDDSA_SECRET_KEY).unwrap();
11021119
let mut signature_params = HttpSignatureParams::try_new(&build_covered_components_req()).unwrap();
11031120
signature_params.set_key_info(&secret_key);
11041121
let created = signature_params.created.unwrap();
@@ -1107,15 +1124,15 @@ MCowBQYDK2VwAyEA1ixMQcxO46PLlgQfYS46ivFd+n0CcDHSKUnuhm3i1O0=
11071124

11081125
req.set_message_signature(&signature_params, &secret_key, None).await.unwrap();
11091126

1110-
let public_key = PublicKey::from_pem(EDDSA_PUBLIC_KEY).unwrap();
1127+
let public_key = PublicKey::from_pem(&AlgorithmName::Ed25519, EDDSA_PUBLIC_KEY).unwrap();
11111128
let verification_res = req.verify_message_signature(&public_key, None).await;
11121129
assert!(verification_res.is_err());
11131130
}
11141131

11151132
#[tokio::test]
11161133
async fn test_set_verify_with_signature_name() {
11171134
let mut req = build_request().await;
1118-
let secret_key = SecretKey::from_pem(EDDSA_SECRET_KEY).unwrap();
1135+
let secret_key = SecretKey::from_pem(&AlgorithmName::Ed25519, EDDSA_SECRET_KEY).unwrap();
11191136
let mut signature_params = HttpSignatureParams::try_new(&build_covered_components_req()).unwrap();
11201137
signature_params.set_key_info(&secret_key);
11211138

@@ -1129,21 +1146,21 @@ MCowBQYDK2VwAyEA1ixMQcxO46PLlgQfYS46ivFd+n0CcDHSKUnuhm3i1O0=
11291146
assert_eq!(signature_headers_map.len(), 1);
11301147
assert_eq!(signature_headers_map[0].signature_name(), "custom_sig_name");
11311148

1132-
let public_key = PublicKey::from_pem(EDDSA_PUBLIC_KEY).unwrap();
1149+
let public_key = PublicKey::from_pem(&AlgorithmName::Ed25519, EDDSA_PUBLIC_KEY).unwrap();
11331150
let verification_res = req.verify_message_signature(&public_key, None).await;
11341151
assert!(verification_res.is_ok());
11351152
}
11361153

11371154
#[tokio::test]
11381155
async fn test_set_verify_with_key_id() {
11391156
let mut req = build_request().await;
1140-
let secret_key = SecretKey::from_pem(EDDSA_SECRET_KEY).unwrap();
1157+
let secret_key = SecretKey::from_pem(&AlgorithmName::Ed25519, EDDSA_SECRET_KEY).unwrap();
11411158
let mut signature_params = HttpSignatureParams::try_new(&build_covered_components_req()).unwrap();
11421159
signature_params.set_key_info(&secret_key);
11431160

11441161
req.set_message_signature(&signature_params, &secret_key, None).await.unwrap();
11451162

1146-
let public_key = PublicKey::from_pem(EDDSA_PUBLIC_KEY).unwrap();
1163+
let public_key = PublicKey::from_pem(&AlgorithmName::Ed25519, EDDSA_PUBLIC_KEY).unwrap();
11471164
let key_id = public_key.key_id();
11481165
let verification_res = req.verify_message_signature(&public_key, Some(&key_id)).await;
11491166
assert!(verification_res.is_ok());
@@ -1158,33 +1175,37 @@ MCowBQYDK2VwAyEA1ixMQcxO46PLlgQfYS46ivFd+n0CcDHSKUnuhm3i1O0=
11581175
#[tokio::test]
11591176
async fn test_set_verify_with_key_id_hmac_sha256() {
11601177
let mut req = build_request().await;
1161-
let secret_key = SharedKey::from_base64(HMACSHA256_SECRET_KEY).unwrap();
1178+
let secret_key = SharedKey::from_base64(&AlgorithmName::HmacSha256, HMACSHA256_SECRET_KEY).unwrap();
11621179
let mut signature_params = HttpSignatureParams::try_new(&build_covered_components_req()).unwrap();
11631180
signature_params.set_key_info(&secret_key);
11641181
// Random nonce is highly recommended for HMAC
11651182
signature_params.set_random_nonce();
11661183

11671184
req.set_message_signature(&signature_params, &secret_key, None).await.unwrap();
11681185

1169-
let key_id = VerifyingKey::key_id(&secret_key);
1170-
let verification_res = req.verify_message_signature(&secret_key, Some(&key_id)).await;
1186+
let org_key_id = VerifyingKey::key_id(&secret_key);
1187+
let (alg, key_id) = req.get_alg_key_ids().unwrap().into_iter().next().unwrap().1;
1188+
assert_eq!(org_key_id, *key_id);
1189+
let verification_key = SharedKey::from_base64(&alg, HMACSHA256_SECRET_KEY).unwrap();
1190+
let verification_res = req.verify_message_signature(&verification_key, Some(&key_id)).await;
11711191
assert!(verification_res.is_ok());
11721192

1173-
let verification_res = req.verify_message_signature(&secret_key, Some("NotFoundKeyId")).await;
1193+
let verification_res = req.verify_message_signature(&verification_key, Some("NotFoundKeyId")).await;
11741194
assert!(verification_res.is_err());
11751195
}
11761196

11771197
#[tokio::test]
1178-
async fn test_get_key_ids() {
1198+
async fn test_get_alg_key_ids() {
11791199
let mut req = build_request().await;
1180-
let secret_key = SecretKey::from_pem(EDDSA_SECRET_KEY).unwrap();
1200+
let secret_key = SecretKey::from_pem(&AlgorithmName::Ed25519, EDDSA_SECRET_KEY).unwrap();
11811201
let mut signature_params = HttpSignatureParams::try_new(&build_covered_components_req()).unwrap();
11821202
signature_params.set_key_info(&secret_key);
11831203

11841204
req.set_message_signature(&signature_params, &secret_key, None).await.unwrap();
1185-
let key_ids = req.get_key_ids().unwrap();
1205+
let key_ids = req.get_alg_key_ids().unwrap();
11861206
assert_eq!(key_ids.len(), 1);
1187-
assert_eq!(key_ids[0], "gjrE7ACMxgzYfFHgabgf4kLTg1eKIdsJ94AiFTFj1is=");
1207+
assert_eq!(key_ids[0].0, AlgorithmName::Ed25519);
1208+
assert_eq!(key_ids[0].1, "gjrE7ACMxgzYfFHgabgf4kLTg1eKIdsJ94AiFTFj1is=");
11881209
}
11891210

11901211
const P256_SECERT_KEY: &str = r##"-----BEGIN PRIVATE KEY-----
@@ -1202,11 +1223,11 @@ ii+31DW+YulmysZKQKDvuk96TARuWMO/vDbhk777a2QF3bgNoIj8UPMwnw==
12021223
async fn test_set_verify_multiple_signatures() {
12031224
let mut req = build_request().await;
12041225

1205-
let secret_key_eddsa = SecretKey::from_pem(EDDSA_SECRET_KEY).unwrap();
1226+
let secret_key_eddsa = SecretKey::from_pem(&AlgorithmName::Ed25519, EDDSA_SECRET_KEY).unwrap();
12061227
let mut signature_params_eddsa = HttpSignatureParams::try_new(&build_covered_components_req()).unwrap();
12071228
signature_params_eddsa.set_key_info(&secret_key_eddsa);
12081229

1209-
let secret_key_p256 = SecretKey::from_pem(P256_SECERT_KEY).unwrap();
1230+
let secret_key_p256 = SecretKey::from_pem(&AlgorithmName::EcdsaP256Sha256, P256_SECERT_KEY).unwrap();
12101231
let mut signature_params_hmac = HttpSignatureParams::try_new(&build_covered_components_req()).unwrap();
12111232
signature_params_hmac.set_key_info(&secret_key_p256);
12121233

@@ -1217,8 +1238,8 @@ ii+31DW+YulmysZKQKDvuk96TARuWMO/vDbhk777a2QF3bgNoIj8UPMwnw==
12171238

12181239
req.set_message_signatures(params_key_name).await.unwrap();
12191240

1220-
let public_key_eddsa = PublicKey::from_pem(EDDSA_PUBLIC_KEY).unwrap();
1221-
let public_key_p256 = PublicKey::from_pem(P256_PUBLIC_KEY).unwrap();
1241+
let public_key_eddsa = PublicKey::from_pem(&AlgorithmName::Ed25519, EDDSA_PUBLIC_KEY).unwrap();
1242+
let public_key_p256 = PublicKey::from_pem(&AlgorithmName::EcdsaP256Sha256, P256_PUBLIC_KEY).unwrap();
12221243
let key_id_eddsa = public_key_eddsa.key_id();
12231244
let key_id_p256 = public_key_p256.key_id();
12241245

@@ -1239,13 +1260,13 @@ ii+31DW+YulmysZKQKDvuk96TARuWMO/vDbhk777a2QF3bgNoIj8UPMwnw==
12391260
#[test]
12401261
fn test_blocking_set_verify_message_signature_req() {
12411262
let mut req = futures::executor::block_on(build_request());
1242-
let secret_key = SecretKey::from_pem(EDDSA_SECRET_KEY).unwrap();
1263+
let secret_key = SecretKey::from_pem(&AlgorithmName::Ed25519, EDDSA_SECRET_KEY).unwrap();
12431264
let mut signature_params = HttpSignatureParams::try_new(&build_covered_components_req()).unwrap();
12441265
signature_params.set_key_info(&secret_key);
12451266

12461267
req.set_message_signature_sync(&signature_params, &secret_key, None).unwrap();
12471268

1248-
let public_key = PublicKey::from_pem(EDDSA_PUBLIC_KEY).unwrap();
1269+
let public_key = PublicKey::from_pem(&AlgorithmName::Ed25519, EDDSA_PUBLIC_KEY).unwrap();
12491270
let verification_res = req.verify_message_signature_sync(&public_key, None);
12501271
assert!(verification_res.is_ok());
12511272
}
@@ -1255,14 +1276,14 @@ ii+31DW+YulmysZKQKDvuk96TARuWMO/vDbhk777a2QF3bgNoIj8UPMwnw==
12551276
fn test_blocking_set_verify_message_signature_res() {
12561277
let req = futures::executor::block_on(build_request());
12571278
let mut res = futures::executor::block_on(build_response());
1258-
let secret_key = SecretKey::from_pem(EDDSA_SECRET_KEY).unwrap();
1279+
let secret_key = SecretKey::from_pem(&AlgorithmName::Ed25519, EDDSA_SECRET_KEY).unwrap();
12591280
let mut signature_params = HttpSignatureParams::try_new(&build_covered_components_res()).unwrap();
12601281
signature_params.set_key_info(&secret_key);
12611282
res
12621283
.set_message_signature_sync(&signature_params, &secret_key, None, Some(&req))
12631284
.unwrap();
12641285

1265-
let public_key = PublicKey::from_pem(EDDSA_PUBLIC_KEY).unwrap();
1286+
let public_key = PublicKey::from_pem(&AlgorithmName::Ed25519, EDDSA_PUBLIC_KEY).unwrap();
12661287
let verification_res = res.verify_message_signature_sync(&public_key, None, Some(&req));
12671288
assert!(verification_res.is_ok());
12681289
}

0 commit comments

Comments
 (0)