From b3444e0d3b3544816e0286dda3e861fd5debea65 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E7=91=9E=E4=B8=B0?= Date: Mon, 3 Oct 2022 12:07:25 +0800 Subject: fix(ext/crypto): fix importKey error when leading zeroes (#16009) Co-authored-by: Jason --- ext/crypto/import_key.rs | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) (limited to 'ext/crypto') diff --git a/ext/crypto/import_key.rs b/ext/crypto/import_key.rs index 015ee41d5..225950aa7 100644 --- a/ext/crypto/import_key.rs +++ b/ext/crypto/import_key.rs @@ -637,7 +637,15 @@ fn decode_b64url_to_field_bytes( jwt_b64_int_or_err!(val, b64, "invalid b64 coordinate"); let mut bytes = elliptic_curve::FieldBytes::::default(); - let val = val.as_bytes(); + let original_bytes = val.as_bytes(); + let mut new_bytes: Vec = vec![]; + if original_bytes.len() < bytes.len() { + new_bytes = vec![0; bytes.len() - original_bytes.len()]; + } + new_bytes.extend_from_slice(original_bytes); + + let val = new_bytes.as_slice(); + if val.len() != bytes.len() { return Err(data_error("invalid b64 coordinate")); } -- cgit v1.2.3