Exemplo n.º 1
0
 def test_no_spi(self):
     transform1 = Transform(Transform.Type.INTEG,
                            Transform.IntegId.AUTH_HMAC_SHA1_96)
     transform2 = Transform(Transform.Type.PRF,
                            Transform.PrfId.PRF_HMAC_SHA1)
     proposal = Proposal(20, Proposal.Protocol.IKE, b'',
                         [transform1, transform2])
     data = proposal.to_bytes()
     proposal = Proposal.parse(data)
     self.assertEqual(proposal.spi, b'')
Exemplo n.º 2
0
class TestProposal(TestPayloadMixin, unittest.TestCase):
    def setUp(self):
        super(TestProposal, self).setUp()
        transform1 = Transform(Transform.Type.INTEG,
                               Transform.IntegId.AUTH_HMAC_SHA1_96)
        transform2 = Transform(Transform.Type.PRF,
                               Transform.PrfId.PRF_HMAC_SHA1)
        self.object = Proposal(20, Proposal.Protocol.IKE, b'aspiwhatever',
                               [transform1, transform2])

    def test_parse_random(self):
        with self.assertRaises(InvalidSyntax):
            super(TestProposal, self).test_parse_random()

    def test_no_transforms(self):
        with self.assertRaises(InvalidSyntax):
            Proposal(20, Proposal.Protocol.IKE, b'aspiwhatever', [])

    def test_no_spi(self):
        transform1 = Transform(Transform.Type.INTEG,
                               Transform.IntegId.AUTH_HMAC_SHA1_96)
        transform2 = Transform(Transform.Type.PRF,
                               Transform.PrfId.PRF_HMAC_SHA1)
        proposal = Proposal(20, Proposal.Protocol.IKE, b'',
                            [transform1, transform2])
        data = proposal.to_bytes()
        proposal = Proposal.parse(data)
        self.assertEqual(proposal.spi, b'')

    def test_invalid_transform_header(self):
        data = self.object.to_bytes()
        with self.assertRaises(InvalidSyntax):
            Proposal.parse(data[:-5])

    def test_get_transform(self):
        self.object.get_transform(Transform.Type.INTEG)
        self.object.get_transforms(Transform.Type.PRF)

    def test_intersection(self):
        proposal = Proposal(20, Proposal.Protocol.IKE, b'aspiwhatever', [
            Transform(Transform.Type.INTEG,
                      Transform.IntegId.AUTH_HMAC_SHA1_96),
            Transform(Transform.Type.ENCR, Transform.EncrId.ENCR_AES_CBC, 128),
            Transform(Transform.Type.PRF, Transform.PrfId.PRF_HMAC_SHA1)
        ])
        intersection = self.object.intersection(proposal)
        self.assertEqual(intersection, self.object)
        self.assertIsNone(proposal.intersection(self.object))

    def test_is_subset(self):
        proposal = Proposal(20, Proposal.Protocol.IKE, b'aspiwhatever', [
            Transform(Transform.Type.INTEG,
                      Transform.IntegId.AUTH_HMAC_SHA1_96),
            Transform(Transform.Type.ENCR, Transform.EncrId.ENCR_AES_CBC, 128),
            Transform(Transform.Type.PRF, Transform.PrfId.PRF_HMAC_SHA1)
        ])
        self.assertTrue(self.object.is_subset(proposal))

    def test_eq(self):
        transform1 = Transform(Transform.Type.INTEG,
                               Transform.IntegId.AUTH_HMAC_SHA1_96)
        transform2 = Transform(Transform.Type.PRF,
                               Transform.PrfId.PRF_HMAC_SHA1)
        transform3 = Transform(Transform.Type.PRF,
                               Transform.PrfId.PRF_HMAC_MD5)
        proposal = Proposal(20, Proposal.Protocol.IKE, b'aspiwhatever',
                            [transform2, transform1])
        proposal2 = Proposal(20, Proposal.Protocol.IKE, b'aspiwhatever',
                             [transform2])
        proposal3 = Proposal(20, Proposal.Protocol.IKE, b'aspiwhatever',
                             [transform1, transform2, transform3])
        self.assertEqual(self.object, proposal)
        self.assertNotEqual(self.object, proposal2)
        self.assertNotEqual(self.object, proposal3)