コード例 #1
0
    def _parse_7_string(cls, suffix):
        # XXX: annoyingly, official spec embeds salt *raw*, yet doesn't specify a hash encoding.
        #      so assuming only h64 chars are valid for salt, and are ASCII encoded.

        # split into params & digest
        parts = suffix.encode("ascii").split(b"$")
        if len(parts) == 2:
            params, digest = parts
        elif len(parts) == 1:
            params, = parts
            digest = None
        else:
            raise uh.exc.MalformedHashError()

        # parse params & return
        if len(params) < 11:
            raise uh.exc.MalformedHashError(cls, "params field too short")
        return dict(
            ident=IDENT_7,
            rounds=h64.decode_int6(params[:1]),
            block_size=h64.decode_int30(params[1:6]),
            parallelism=h64.decode_int30(params[6:11]),
            salt=params[11:],
            checksum=h64.decode_bytes(digest) if digest else None,
        )
コード例 #2
0
ファイル: test_utils.py プロジェクト: jiningeast/netcontrol
    def test_decode_bytes(self):
        for result, source in self.encoded_bytes:
            out = h64.decode_bytes(source)
            self.assertEqual(out, result)

        #wrong size (1 % 4)
        self.assertRaises(ValueError, h64.decode_bytes, b('abcde'))

        self.assertRaises(TypeError, h64.decode_bytes, u'abcd')
コード例 #3
0
    def test_decode_bytes(self):
        for result, source in self.encoded_bytes:
            out = h64.decode_bytes(source)
            self.assertEqual(out, result)

        #wrong size (1 % 4)
        self.assertRaises(ValueError, h64.decode_bytes, b('abcde'))

        self.assertRaises(TypeError, h64.decode_bytes, u'abcd')
コード例 #4
0
ファイル: test_utils.py プロジェクト: jiningeast/netcontrol
 def test_encode_transposed_bytes(self):
     for result, input, offsets in self.encode_transposed + self.encode_transposed_dups:
         tmp = h64.encode_transposed_bytes(input, offsets)
         out = h64.decode_bytes(tmp)
         self.assertEqual(out, result)
コード例 #5
0
ファイル: test_utils.py プロジェクト: jiningeast/netcontrol
 def test_decode_bytes_padding(self):
     for source, result in self.decode_padding_bytes:
         out = h64.decode_bytes(source)
         self.assertEqual(out, result)
     self.assertRaises(TypeError, h64.decode_bytes, u'..')
コード例 #6
0
 def test_encode_transposed_bytes(self):
     for result, input, offsets in self.encode_transposed + self.encode_transposed_dups:
         tmp = h64.encode_transposed_bytes(input, offsets)
         out = h64.decode_bytes(tmp)
         self.assertEqual(out, result)
コード例 #7
0
 def test_decode_bytes_padding(self):
     for source, result in self.decode_padding_bytes:
         out = h64.decode_bytes(source)
         self.assertEqual(out, result)
     self.assertRaises(TypeError, h64.decode_bytes, u'..')