|  | @@ -928,4 +928,43 @@ mod tests {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          assert!(invalid_proof.verify_p2pk().is_err());
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    #[test]
 | 
	
		
			
				|  |  | +    fn test_duplicate_signatures_counting() {
 | 
	
		
			
				|  |  | +        let key_one = SecretKey::generate();
 | 
	
		
			
				|  |  | +        let key_two = SecretKey::generate();
 | 
	
		
			
				|  |  | +        let key_three = SecretKey::generate();
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        let conditions = Conditions::new(
 | 
	
		
			
				|  |  | +            Some(unix_time() + 100),
 | 
	
		
			
				|  |  | +            Some(vec![key_two.public_key(), key_three.public_key()]),
 | 
	
		
			
				|  |  | +            None,
 | 
	
		
			
				|  |  | +            Some(2),
 | 
	
		
			
				|  |  | +            None,
 | 
	
		
			
				|  |  | +        )
 | 
	
		
			
				|  |  | +        .unwrap();
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        let spend_conditions = SpendingConditions::new_p2pk(key_one.public_key(), Some(conditions));
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        let nut_10: Nut10Secret = spend_conditions.into();
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        // Create a proof with the secret
 | 
	
		
			
				|  |  | +        let mut proof = Proof {
 | 
	
		
			
				|  |  | +            amount: Amount::ONE,
 | 
	
		
			
				|  |  | +            keyset_id: Id::from_str("009a1f293253e41e").unwrap(),
 | 
	
		
			
				|  |  | +            secret: nut_10.try_into().unwrap(),
 | 
	
		
			
				|  |  | +            c: PublicKey::from_str(
 | 
	
		
			
				|  |  | +                "02698c4e2b5f9534cd0687d87513c759790cf829aa5739184a3e3735471fbda904",
 | 
	
		
			
				|  |  | +            )
 | 
	
		
			
				|  |  | +            .unwrap(),
 | 
	
		
			
				|  |  | +            witness: Some(Witness::P2PKWitness(P2PKWitness { signatures: vec![] })),
 | 
	
		
			
				|  |  | +            dleq: None,
 | 
	
		
			
				|  |  | +        };
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        // Sign the proof twice with the same key
 | 
	
		
			
				|  |  | +        proof.sign_p2pk(key_one.clone()).unwrap();
 | 
	
		
			
				|  |  | +        proof.sign_p2pk(key_one.clone()).unwrap();
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        assert!(proof.verify_p2pk().is_err());
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  |  }
 |