Пример #1
0
    def test_pse_v2_lps_off_pbes1_3des_sha1_decrypt(self):
        """Test decryption of a v2 PBES1 encrypted PSE with LPS off"""

        with open(data_filename("pse_v2_lps_off_pbes1_3des_sha1.pse"), "rb") as fd:
            s = fd.read()

        pse = SAPPSEFile(s)
        self.assertRaisesRegexp(ValueError, "Invalid PIN supplied", pse.decrypt, "Some Invalid PIN")
        pse.decrypt(self.decrypt_pin)
Пример #2
0
    def test_pse_v2_lps_off_pbes1_3des_sha1_decrypt(self):
        """Test decryption of a v2 PBES1 encrypted PSE with LPS off"""

        with open(data_filename("pse_v2_lps_off_pbes1_3des_sha1.pse"), "rb") as fd:
            s = fd.read()

        pse = SAPPSEFile(s)
        self.assertRaisesRegexp(ValueError, "Invalid PIN supplied", pse.decrypt, "Some Invalid PIN")
        pse.decrypt(self.decrypt_pin)
Пример #3
0
def parse_pse(filename):
    """Parses a PSE file and produces """
    with open(filename, "rb") as f:
        data = f.read()

    pse_file = SAPPSEFile(data)

    if pse_file.enc_cont.algorithm_identifier.alg_id == PKCS12_ALGORITHM_PBE1_SHA_3DES_CBC:
        pbe_algo = 1
        salt = hexlify(
            pse_file.enc_cont.algorithm_identifier.parameters.salt.val)
        salt_size = len(
            pse_file.enc_cont.algorithm_identifier.parameters.salt.val)
        iterations = pse_file.enc_cont.algorithm_identifier.parameters.iterations.val
        iv = ""
        iv_size = len(iv)
    else:
        raise Exception("Unsupported encryption algorithm")

    encrypted_pin = hexlify(pse_file.enc_cont.encrypted_pin.val)
    encrypted_pin_length = len(pse_file.enc_cont.encrypted_pin.val)

    return "{}:$pse${}${}${}${}${}${}${}${}:::::\n".format(
        filename,
        pbe_algo,
        iterations,
        salt_size,
        salt,
        iv_size,
        iv,
        encrypted_pin_length,
        encrypted_pin,
    )
Пример #4
0
    def test_pse_v4_lps_off_pbes1_3des_sha1(self):
        """Test parsing of a v4 PBES1 encrypted PSE with LPS off"""

        with open(data_filename("pse_v4_lps_off_pbes1_3des_sha1.pse"), "rb") as fd:
            s = fd.read()

        pse = SAPPSEFile(s)
        self.assertEqual(pse.version, 4)
        self.assertEqual(pse.enc_cont.algorithm_identifier.alg_id.val, PKCS12_ALGORITHM_PBE1_SHA_3DES_CBC)
        self.assertEqual(pse.enc_cont.algorithm_identifier.parameters.iterations, self.iterations)
        self.assertEqual(len(pse.enc_cont.algorithm_identifier.parameters.salt.val), 8)