Пример #1
0
 def test_named_constructors(self):
     self.assertEqual(multihash.sha1().known_hash,
                      multihash.new('sha1').known_hash)
     self.assertEqual(multihash.sha3().known_hash,
                      multihash.new('sha3').known_hash)
     self.assertEqual(multihash.blake2s().known_hash,
                      multihash.new('blake2s').known_hash)
Пример #2
0
 def test_named_constructors(self):
     self.assertEqual(multihash.sha1().known_hash,
                      multihash.new('sha1').known_hash)
     self.assertEqual(multihash.sha3().known_hash,
                      multihash.new('sha3').known_hash)
     self.assertEqual(multihash.blake2s().known_hash,
                      multihash.new('blake2s').known_hash)
Пример #3
0
    def post(self):
        parser = reqparse.RequestParser()
        parser.add_argument('hash', action="append")
        args = parser.parse_args()
        if len(request.files) < 1:
            return {"message": "No file(s) detected."}
        if len(request.files) > 1:
            return {"message": "Too many files"}
        if len(args['hash']) < 1:
            return {"message": "No hashes detected"}

        hashers = []
        for n in args['hash']:
            if n in BLUEPRINT.config['DISALLOWED_ALGOS']:
                return {
                    "message": "Disallowed algorithm included. ({})".format(n)
                }
            try:
                hashers.append(multihash.new(n))
            except:
                return {
                    "message": "Unsupported algorithm included ({})".format(n)
                }

        file_key = list(request.files.keys())[0]
        h = multihash.MultiHash.from_flo(
            request.files[file_key],
            hashers=hashers,
            chunksize=int(BLUEPRINT.config.get("BUFF", 1024)))
        return h.hexdigest()
Пример #4
0
 def test_copy(self):
     mh1 = multihash.new('sha3')
     mh1.update(b'foo')
     mh2 = mh1.copy()
     self.assertEqual(mh1.hexdigest(), mh2.hexdigest())
     mh2.update(b'bar')
     self.assertNotEqual(mh1.hexdigest(), mh2.hexdigest())
Пример #5
0
 def test_copy(self):
     mh1 = multihash.new('sha3')
     mh1.update(b'foo')
     mh2 = mh1.copy()
     self.assertEqual(mh1.hexdigest(), mh2.hexdigest())
     mh2.update(b'bar')
     self.assertNotEqual(mh1.hexdigest(), mh2.hexdigest())
Пример #6
0
 def encode(self, hash_name, payload, expected_code):
     multihasher = multihash.new(hash_name)
     if hash_name == "blake2s":
         reference_hasher = pyblake2.blake2s()
     elif hash_name == "blake2b":
         reference_hasher = pyblake2.blake2b()
     elif hash_name == "sha3":
         reference_hasher = hashlib.new("sha3_256")
     else:
         reference_hasher = hashlib.new(hash_name)
     multihasher.update(payload.encode("utf8"))
     reference_hasher.update(payload.encode("utf8"))
     self.assertTrue(multihasher.hexdigest().endswith(reference_hasher.hexdigest()))
     self.assertEqual(multihasher.digest()[0], expected_code)
     self.assertEqual(multihasher.digest()[1], len(reference_hasher.digest()))
Пример #7
0
 def encode(self, hash_name, payload, expected_code):
     multihasher = multihash.new(hash_name)
     if hash_name == 'blake2s':
         reference_hasher = pyblake2.blake2s()
     elif hash_name == 'blake2b':
         reference_hasher = pyblake2.blake2b()
     elif hash_name == 'sha3':
         reference_hasher = hashlib.new('sha3_256')
     else:
         reference_hasher = hashlib.new(hash_name)
     multihasher.update(payload.encode('utf8'))
     reference_hasher.update(payload.encode('utf8'))
     self.assertTrue(multihasher.hexdigest().endswith(
         reference_hasher.hexdigest()))
     self.assertEqual(multihasher.digest()[0], expected_code)
     self.assertEqual(multihasher.digest()[1],
                      len(reference_hasher.digest()))
Пример #8
0
    def post(self):
        parser = reqparse.RequestParser()
        parser.add_argument('hash', action="append")
        parser.add_argument('text')
        args = parser.parse_args()
        if len(args['hash']) < 1:
            return {"message": "No hashes detected"}

        hashers = []
        for n in args['hash']:
            if n in BLUEPRINT.config['DISALLOWED_ALGOS']:
                return {
                    "message": "Disallowed algorithm included. ({})".format(n)
                }
            try:
                hashers.append(multihash.new(n))
            except:
                return {
                    "message": "Unsupported algorithm included ({}".format(n)
                }

        h = multihash.MultiHash(args['text'].encode(), hashers=hashers)
        return h.hexdigest()
Пример #9
0
 def testNew(self):
     x = MultiHash(hashers=['md5', 'sha256'])
     y = new(x.name)
     self.assertEqual(set(n.name for n in x.hashers),
                      set(m.name for m in y.hashers))
Пример #10
0
 def test_unexisting(self):
     with self.assertRaises(ValueError):
         multihash.new('foo').encode('42')
Пример #11
0
 def test_unexisting(self):
     with self.assertRaises(ValueError):
         multihash.new('foo').encode('42')
Пример #12
0
 def test_named_constructors(self):
     self.assertEqual(multihash.sha1().known_hash, multihash.new("sha1").known_hash)
     self.assertEqual(multihash.sha3().known_hash, multihash.new("sha3").known_hash)
     self.assertEqual(multihash.blake2s().known_hash, multihash.new("blake2s").known_hash)
Пример #13
0
 def test_unexisting(self):
     with self.assertRaises(ValueError):
         multihash.new("foo").encode("42")