Skip to content

Commit 4f42ba9

Browse files
Rust wrapper: ed25519: add check for context buffers too long
Fix F-1063
1 parent 337dfc3 commit 4f42ba9

1 file changed

Lines changed: 27 additions & 0 deletions

File tree

wrapper/rust/wolfssl-wolfcrypt/src/ed25519.rs

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -716,6 +716,9 @@ impl Ed25519 {
716716
#[cfg(ed25519_sign)]
717717
pub fn sign_msg_ctx(&mut self, message: &[u8], context: &[u8], signature: &mut [u8]) -> Result<usize, i32> {
718718
let message_size = message.len() as u32;
719+
if context.len() > 255 {
720+
return Err(sys::wolfCrypt_ErrorCodes_BAD_FUNC_ARG);
721+
}
719722
let context_size = context.len() as u8;
720723
let mut signature_size = signature.len() as u32;
721724
let rc = unsafe {
@@ -777,6 +780,9 @@ impl Ed25519 {
777780
let mut context_size = 0u8;
778781
if let Some(context) = context {
779782
context_ptr = context.as_ptr();
783+
if context.len() > 255 {
784+
return Err(sys::wolfCrypt_ErrorCodes_BAD_FUNC_ARG);
785+
}
780786
context_size = context.len() as u8;
781787
}
782788
let mut signature_size = signature.len() as u32;
@@ -830,6 +836,9 @@ impl Ed25519 {
830836
let mut context_size = 0u8;
831837
if let Some(context) = context {
832838
context_ptr = context.as_ptr();
839+
if context.len() > 255 {
840+
return Err(sys::wolfCrypt_ErrorCodes_BAD_FUNC_ARG);
841+
}
833842
context_size = context.len() as u8;
834843
}
835844
let mut signature_size = signature.len() as u32;
@@ -883,6 +892,9 @@ impl Ed25519 {
883892
let mut context_size = 0u8;
884893
if let Some(context) = context {
885894
context_ptr = context.as_ptr();
895+
if context.len() > 255 {
896+
return Err(sys::wolfCrypt_ErrorCodes_BAD_FUNC_ARG);
897+
}
886898
context_size = context.len() as u8;
887899
}
888900
let mut signature_size = signature.len() as u32;
@@ -976,6 +988,9 @@ impl Ed25519 {
976988
pub fn verify_msg_ctx(&mut self, signature: &[u8], message: &[u8], context: &[u8]) -> Result<bool, i32> {
977989
let signature_size = signature.len() as u32;
978990
let message_size = message.len() as u32;
991+
if context.len() > 255 {
992+
return Err(sys::wolfCrypt_ErrorCodes_BAD_FUNC_ARG);
993+
}
979994
let context_size = context.len() as u8;
980995
let mut res = 0i32;
981996
let rc = unsafe {
@@ -1040,6 +1055,9 @@ impl Ed25519 {
10401055
let mut context_size = 0u8;
10411056
if let Some(context) = context {
10421057
context_ptr = context.as_ptr();
1058+
if context.len() > 255 {
1059+
return Err(sys::wolfCrypt_ErrorCodes_BAD_FUNC_ARG);
1060+
}
10431061
context_size = context.len() as u8;
10441062
}
10451063
let mut res = 0i32;
@@ -1095,6 +1113,9 @@ impl Ed25519 {
10951113
let mut context_size = 0u8;
10961114
if let Some(context) = context {
10971115
context_ptr = context.as_ptr();
1116+
if context.len() > 255 {
1117+
return Err(sys::wolfCrypt_ErrorCodes_BAD_FUNC_ARG);
1118+
}
10981119
context_size = context.len() as u8;
10991120
}
11001121
let mut res = 0i32;
@@ -1150,6 +1171,9 @@ impl Ed25519 {
11501171
let mut context_size = 0u8;
11511172
if let Some(context) = context {
11521173
context_ptr = context.as_ptr();
1174+
if context.len() > 255 {
1175+
return Err(sys::wolfCrypt_ErrorCodes_BAD_FUNC_ARG);
1176+
}
11531177
context_size = context.len() as u8;
11541178
}
11551179
let mut res = 0i32;
@@ -1203,6 +1227,9 @@ impl Ed25519 {
12031227
let mut context_size = 0u8;
12041228
if let Some(context) = context {
12051229
context_ptr = context.as_ptr();
1230+
if context.len() > 255 {
1231+
return Err(sys::wolfCrypt_ErrorCodes_BAD_FUNC_ARG);
1232+
}
12061233
context_size = context.len() as u8;
12071234
}
12081235
let rc = unsafe {

0 commit comments

Comments
 (0)