drive/verify/shielded/verify_nullifiers_branch_query/
mod.rs1mod v0;
4
5use crate::drive::Drive;
6use crate::error::drive::DriveError;
7use crate::error::Error;
8use grovedb::GroveBranchQueryResult;
9use platform_version::version::PlatformVersion;
10
11impl Drive {
12 pub fn verify_nullifiers_branch_query(
27 proof: &[u8],
28 pool_type: u32,
29 pool_identifier: Option<&[u8]>,
30 key: Vec<u8>,
31 depth: u8,
32 expected_root_hash: [u8; 32],
33 platform_version: &PlatformVersion,
34 ) -> Result<GroveBranchQueryResult, Error> {
35 match platform_version
36 .drive
37 .methods
38 .verify
39 .shielded
40 .verify_nullifiers_branch_query
41 {
42 0 => Self::verify_nullifiers_branch_query_v0(
43 proof,
44 pool_type,
45 pool_identifier,
46 key,
47 depth,
48 expected_root_hash,
49 platform_version,
50 ),
51 version => Err(Error::Drive(DriveError::UnknownVersionMismatch {
52 method: "verify_nullifiers_branch_query".to_string(),
53 known_versions: vec![0],
54 received: version,
55 })),
56 }
57 }
58}
59
60#[cfg(test)]
61mod tests {
62 use super::*;
63 use platform_version::version::PlatformVersion;
64
65 #[test]
66 fn test_verify_nullifiers_branch_query_unknown_version_mismatch() {
67 let mut platform_version = PlatformVersion::latest().clone();
68 platform_version
69 .drive
70 .methods
71 .verify
72 .shielded
73 .verify_nullifiers_branch_query = 255;
74
75 let result = Drive::verify_nullifiers_branch_query(
76 &[],
77 0,
78 None,
79 vec![],
80 0,
81 [0u8; 32],
82 &platform_version,
83 );
84
85 assert!(
86 matches!(
87 result,
88 Err(Error::Drive(DriveError::UnknownVersionMismatch { .. }))
89 ),
90 "expected UnknownVersionMismatch, got {:?}",
91 result,
92 );
93 }
94}