drive/verify/shielded/verify_shielded_encrypted_notes/
mod.rs

1mod 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    /// Verifies a proof for shielded encrypted notes.
11    #[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}