-
Notifications
You must be signed in to change notification settings - Fork 39
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
fix(dpp): panic when generating more than 12 identity keys #2195
base: v1.6-dev-ugly
Are you sure you want to change the base?
Changes from 3 commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change | ||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
@@ -583,6 +583,14 @@ impl IdentityPublicKey { | |||||||||||||||||||||||||||||||||||||||||||
"at least 2 keys must be created".to_string(), | ||||||||||||||||||||||||||||||||||||||||||||
)); | ||||||||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||
if key_count > 16 { | ||||||||||||||||||||||||||||||||||||||||||||
return Err(ProtocolError::PublicKeyGenerationError(format!( | ||||||||||||||||||||||||||||||||||||||||||||
"too many keys requested: {}, max is 16", | ||||||||||||||||||||||||||||||||||||||||||||
key_count | ||||||||||||||||||||||||||||||||||||||||||||
))); | ||||||||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||
//create a master and a high level key | ||||||||||||||||||||||||||||||||||||||||||||
let mut main_keys = if key_count == 2 { | ||||||||||||||||||||||||||||||||||||||||||||
vec![ | ||||||||||||||||||||||||||||||||||||||||||||
|
@@ -615,15 +623,15 @@ impl IdentityPublicKey { | |||||||||||||||||||||||||||||||||||||||||||
used_key_matrix[4] = true; //also a master key | ||||||||||||||||||||||||||||||||||||||||||||
used_key_matrix[8] = true; //also a master key | ||||||||||||||||||||||||||||||||||||||||||||
used_key_matrix[12] = true; //also a master key | ||||||||||||||||||||||||||||||||||||||||||||
main_keys.extend((3..key_count).map(|i| { | ||||||||||||||||||||||||||||||||||||||||||||
Self::random_authentication_key_with_private_key_with_rng( | ||||||||||||||||||||||||||||||||||||||||||||
for i in 6..key_count { | ||||||||||||||||||||||||||||||||||||||||||||
let privkey = Self::random_authentication_key_with_private_key_with_rng( | ||||||||||||||||||||||||||||||||||||||||||||
i, | ||||||||||||||||||||||||||||||||||||||||||||
rng, | ||||||||||||||||||||||||||||||||||||||||||||
Some((i, &mut used_key_matrix)), | ||||||||||||||||||||||||||||||||||||||||||||
platform_version, | ||||||||||||||||||||||||||||||||||||||||||||
) | ||||||||||||||||||||||||||||||||||||||||||||
.unwrap() | ||||||||||||||||||||||||||||||||||||||||||||
})); | ||||||||||||||||||||||||||||||||||||||||||||
)?; | ||||||||||||||||||||||||||||||||||||||||||||
main_keys.push(privkey); | ||||||||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Possible index out of bounds when The let mut used_key_matrix = [false; 16].to_vec(); If Consider initializing -let mut used_key_matrix = [false; 16].to_vec();
+let mut used_key_matrix = vec![false; key_count as usize]; Ensure that all indices set to Potential skipping of key IDs 3 to 5 due to loop starting at index 6 The for loop starts at To include all sequential keys, consider starting the loop at -for i in 6..key_count {
+for i in 3..key_count { 📝 Committable suggestion
Suggested change
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Fixed the loop There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. |
||||||||||||||||||||||||||||||||||||||||||||
Ok(main_keys) | ||||||||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🛠️ Refactor suggestion
Consider defining a constant for the maximum key count
Using the hardcoded value
16
directly can make future maintenance more challenging and reduce code readability. Consider defining a constantMAX_KEYS
and using it throughout the code to improve clarity and ease future updates.Apply this diff to introduce a constant:
At the appropriate scope, define:
Then modify the code:
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
done
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@lklimek, great! Thank you for making the change.
(^‿^)/
If you found this review helpful, would you consider giving us a shout-out on X?
Thank you for using CodeRabbit!