示例#1
0
 def test_dunder_resolve_slot_gets_list_of_slots_the_slot_data(self, ):
     lib = unittest.mock.MagicMock()
     with unittest.mock.patch('PyKCS11.PyKCS11Lib', return_value=lib):
         try:
             out = mut.RSAPrivateToken(token=unittest.mock.sentinel.TOKEN2)
         except LookupError:
             pass
     lib.getSlotList.assert_called_once()
示例#2
0
 def setUp(self, ):
     self.slot = 0
     self.pin = unittest.mock.sentinel.PIN
     try:
         os.environ['PYKCS11LIB']
     except KeyError:
         os.environ['PYKCS11LIB'] = PyKCSS11_SOLIB
     self.out = mut.RSAPrivateToken(slot=self.slot)
示例#3
0
    def test_class_accepts_zero_as_valid_slot(self, ):
        with unittest.mock.patch('PyKCS11.PyKCS11Lib' ) as x,\
             unittest.mock.patch.object(mut.RSAPrivateToken,'_resolve_slot',
            return_value=unittest.mock.sentinel.SLOT ) as x:

            out = mut.RSAPrivateToken(slot=0)
        self.assertEqual(out.slot, 0)
        x.assert_not_called()
示例#4
0
    def test_dunder_resolve_slot_gets_token_info_from_all_slots_the_slot_data(
        self, ):
        avail_slots = list(range(10))

        lib = unittest.mock.MagicMock()
        lib.get_tokeninfo = unittest.mock.MagicMock(return_value={})
        lib.getSlotList = unittest.mock.MagicMock(return_value=avail_slots)
        with unittest.mock.patch('PyKCS11.PyKCS11Lib', return_value=lib):
            try:
                out = mut.RSAPrivateToken(
                    token={'x': unittest.mock.sentinel.TOKEN2})
            except LookupError:
                pass
        lib.get_tokeninfo.assert_has_calls(
            [unittest.mock.call(s) for s in avail_slots])
示例#5
0
    def test_dunder_resolve_slot_choses_slot_1_0_only_the_index_zero_an_obsuce_tag(
        self, ):

        slot_data = [{'xyzzy': 1}, {'serialnr': '123', 'manufacturer': 'acme'}]
        avail_slots = range(len(slot_data))

        lib = unittest.mock.MagicMock()
        lib.getSlotList = unittest.mock.MagicMock(return_value=avail_slots)
        lib.get_tokeninfo = unittest.mock.MagicMock(side_effect=slot_data)
        with unittest.mock.patch('PyKCS11.PyKCS11Lib', return_value=lib):
            out = mut.RSAPrivateToken(token={'xyzzy': 1})

        lib.get_tokeninfo.assert_has_calls(
            [unittest.mock.call(s) for s in avail_slots])
        self.assertEqual(out.slot, 0)
示例#6
0
    def test_dunder_resolve_slot_raises_if_there_are_No_matches(self, ):
        slot_data = [{
            'serialnr': '456',
            'manufacturer': 'acme'
        }, {
            'serialnr': '456',
            'manufacturer': 'acme'
        }]
        avail_slots = range(len(slot_data))

        lib = unittest.mock.MagicMock()
        lib.getSlotList = unittest.mock.MagicMock(return_value=avail_slots)
        lib.get_tokeninfo = unittest.mock.MagicMock(side_effect=slot_data)
        with unittest.mock.patch('PyKCS11.PyKCS11Lib', return_value=lib):
            with self.assertRaises(mut.NoMatchingTokens):
                out = mut.RSAPrivateToken(token={
                    'serialnr': '12',
                    'manufacturer': 'acme'
                }, )
示例#7
0
 def test_class_accepts_a_token_argument_to_match_info_against(self, ):
     with unittest.mock.patch('PyKCS11.PyKCS11Lib' ) as x,\
          unittest.mock.patch.object(mut.RSAPrivateToken, '_resolve_slot', return_value=unittest.mock.sentinel.SLOTX ):
         out = mut.RSAPrivateToken(token=unittest.mock.sentinel.TOKEN1)
     self.assertEqual(out.slot, unittest.mock.sentinel.SLOTX)
示例#8
0
    def test_class_creates_its_own_libary_handle(self, ):
        with unittest.mock.patch('PyKCS11.PyKCS11Lib') as x:
            out = mut.RSAPrivateToken(slot=0)

        x.assert_called_once()
示例#9
0
 def test_class_accepts_a_pin_for_unlocking_thekey(self, ):
     with unittest.mock.patch('PyKCS11.PyKCS11Lib'):
         out = mut.RSAPrivateToken(pin=unittest.mock.sentinel.PIN, slot=0)
     self.assertEqual(out.pin, unittest.mock.sentinel.PIN)
示例#10
0
 def test_class_accept_alternate_lokup_key_for_provkey(self, ):
     with unittest.mock.patch('PyKCS11.PyKCS11Lib'):
         out = mut.RSAPrivateToken(key=unittest.mock.sentinel.KEY, slot=0)
     self.assertEqual(out.key, unittest.mock.sentinel.KEY)
示例#11
0
 def test_class_default_key_index_is_zero(self, ):
     with unittest.mock.patch('PyKCS11.PyKCS11Lib'):
         out = mut.RSAPrivateToken(slot=unittest.mock.sentinel.SLOT)
     self.assertEqual(out.key, 0)
示例#12
0
 def test_class_accepts_a_slot(self, ):
     with unittest.mock.patch('PyKCS11.PyKCS11Lib'):
         out = mut.RSAPrivateToken(slot=unittest.mock.sentinel.SLOT)
     self.assertEqual(out.slot, unittest.mock.sentinel.SLOT)
示例#13
0
    def test_class_ctor_loads_the_wrapped_library(self, ):
        lib = unittest.mock.MagicMock()
        with unittest.mock.patch('PyKCS11.PyKCS11Lib', return_value=lib) as x:
            out = mut.RSAPrivateToken(slot=0)

        lib.load.assert_called_once()