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)]
12 pub fn verify_shielded_encrypted_notes(
13 proof: &[u8],
14 start_index: u64,
15 count: u32,
16 max_elements: u32,
17 verify_subset_of_proof: bool,
18 platform_version: &PlatformVersion,
19 ) -> Result<(RootHash, Vec<(Vec<u8>, Vec<u8>, Vec<u8>)>), Error> {
20 match platform_version
21 .drive
22 .methods
23 .verify
24 .shielded
25 .verify_shielded_encrypted_notes
26 {
27 0 => Self::verify_shielded_encrypted_notes_v0(
28 proof,
29 start_index,
30 count,
31 max_elements,
32 verify_subset_of_proof,
33 platform_version,
34 ),
35 version => Err(Error::Drive(DriveError::UnknownVersionMismatch {
36 method: "verify_shielded_encrypted_notes".to_string(),
37 known_versions: vec![0],
38 received: version,
39 })),
40 }
41 }
42}
43
44#[cfg(test)]
45mod tests {
46 use super::*;
47 use dpp::version::PlatformVersion;
48
49 #[test]
50 fn test_verify_shielded_encrypted_notes_unknown_version_mismatch() {
51 let mut platform_version = PlatformVersion::latest().clone();
52 platform_version
53 .drive
54 .methods
55 .verify
56 .shielded
57 .verify_shielded_encrypted_notes = 255;
58
59 let result = Drive::verify_shielded_encrypted_notes(&[], 0, 0, 0, false, &platform_version);
60
61 assert!(
62 matches!(
63 result,
64 Err(Error::Drive(DriveError::UnknownVersionMismatch { .. }))
65 ),
66 "expected UnknownVersionMismatch, got {:?}",
67 result,
68 );
69 }
70}