Esempio n. 1
0
  def test_verify_signature(self):
    global public
    global private
    data = b'The quick brown fox jumps over the lazy dog'
    signature, method = ed25519_keys.create_signature(public, private, data)

    valid_signature = ed25519_keys.verify_signature(public, method, signature, data)
    self.assertEqual(True, valid_signature)
    
    # Test with 'pynacl'.
    valid_signature = ed25519_keys.verify_signature(public, method, signature, data,
                                               use_pynacl=True)
    self.assertEqual(True, valid_signature)
   
    # Test with 'pynacl', but a bad signature is provided.
    bad_signature = os.urandom(64)
    valid_signature = ed25519_keys.verify_signature(public, method, bad_signature,
                                               data, use_pynacl=True)
    self.assertEqual(False, valid_signature)
    


    # Check for improperly formatted arguments.
    self.assertRaises(tuf.FormatError, ed25519_keys.verify_signature, 123, method,
                                       signature, data)
    
    # Signature method improperly formatted.
    self.assertRaises(tuf.FormatError, ed25519_keys.verify_signature, public, 123,
                                       signature, data)
   
    # Invalid signature method.
    self.assertRaises(tuf.UnknownMethodError, ed25519_keys.verify_signature, public,
                                       'unsupported_method', signature, data)
   
    # Signature not a string.
    self.assertRaises(tuf.FormatError, ed25519_keys.verify_signature, public, method,
                                       123, data)
   
    # Invalid signature length, which must be exactly 64 bytes..
    self.assertRaises(tuf.FormatError, ed25519_keys.verify_signature, public, method,
                                       'bad_signature', data)
    
    # Check for invalid signature and data.
    # Mismatched data.
    self.assertEqual(False, ed25519_keys.verify_signature(public, method,
                                                     signature, '123'))
   
    # Mismatched signature.
    bad_signature = b'a'*64 
    self.assertEqual(False, ed25519_keys.verify_signature(public, method,
                                                     bad_signature, data))
    
    # Generated signature created with different data.
    new_signature, method = ed25519_keys.create_signature(public, private, 
                                                     b'mismatched data')
    
    self.assertEqual(False, ed25519_keys.verify_signature(public, method,
                                                     new_signature, data))
Esempio n. 2
0
  def test_create_signature(self):
    global public
    global private
    data = b'The quick brown fox jumps over the lazy dog'
    signature, method = ed25519_keys.create_signature(public, private, data)

    # Verify format of returned values.
    self.assertEqual(True,
                     tuf.formats.ED25519SIGNATURE_SCHEMA.matches(signature))
    
    self.assertEqual(True, tuf.formats.NAME_SCHEMA.matches(method))
    self.assertEqual('ed25519', method)

    # Check for improperly formatted argument.
    self.assertRaises(tuf.FormatError,
                      ed25519_keys.create_signature, 123, private, data)
    
    self.assertRaises(tuf.FormatError,
                      ed25519_keys.create_signature, public, 123, data)
   
    # Check for invalid 'data'.
    self.assertRaises(tuf.CryptoError,
                      ed25519_keys.create_signature, public, private, 123)