drive/verify/shielded/verify_shielded_encrypted_notes/
mod.rs1mod v0;
2
3use crate::drive::Drive;
4use crate::error::drive::DriveError;
5use crate::error::Error;
6use crate::verify::RootHash;
7use dpp::version::PlatformVersion;
8
9impl Drive {
10 #[allow(clippy::type_complexity)]
18 pub fn verify_shielded_encrypted_notes(
19 proof: &[u8],
20 start_index: u64,
21 count: u32,
22 max_elements: u32,
23 verify_subset_of_proof: bool,
24 platform_version: &PlatformVersion,
25 ) -> Result<(RootHash, Vec<(Vec<u8>, Vec<u8>, Vec<u8>)>, u64), Error> {
26 match platform_version
27 .drive
28 .methods
29 .verify
30 .shielded
31 .verify_shielded_encrypted_notes
32 {
33 0 => Self::verify_shielded_encrypted_notes_v0(
34 proof,
35 start_index,
36 count,
37 max_elements,
38 verify_subset_of_proof,
39 platform_version,
40 ),
41 version => Err(Error::Drive(DriveError::UnknownVersionMismatch {
42 method: "verify_shielded_encrypted_notes".to_string(),
43 known_versions: vec![0],
44 received: version,
45 })),
46 }
47 }
48}
49
50#[cfg(test)]
51mod tests {
52 use super::*;
53 use dpp::version::PlatformVersion;
54
55 #[test]
56 fn test_verify_shielded_encrypted_notes_unknown_version_mismatch() {
57 let mut platform_version = PlatformVersion::latest().clone();
58 platform_version
59 .drive
60 .methods
61 .verify
62 .shielded
63 .verify_shielded_encrypted_notes = 255;
64
65 let result = Drive::verify_shielded_encrypted_notes(&[], 0, 0, 0, false, &platform_version);
66
67 assert!(
68 matches!(
69 result,
70 Err(Error::Drive(DriveError::UnknownVersionMismatch { .. }))
71 ),
72 "expected UnknownVersionMismatch, got {:?}",
73 result,
74 );
75 }
76}