コード例 #1
0
 def test_signature( self ):
     identity = Identity.generate(fast=True)
     message = b'test message'
     signature = identity.sign(message)
     public_key = identity.get_public_key()
     self.assertEqual(True, public_key.verify(message, signature))
     self.assertEqual(False, public_key.verify(message, signature + b'x'))
     self.assertEqual(False, public_key.verify(message + b'x', signature))
コード例 #2
0
    def test_proof_of_possession( self ):
        transport_id = 'encrypted_tcp'
        transport_request = self.make_tcp_transport_request(self.session_list, transport_id, obj_id='1', command_id='echo', test_param='hi')
        response_transport_packets = self.remoting.process_packet(self.iface_registry, self.server, self.session_list, transport_request)
        challenge = self.pick_pop_channelge_from_responses(transport_id, response_transport_packets)

        identity_1 = Identity.generate(fast=True)
        identity_2 = Identity.generate(fast=True)

        pop_record_1 = tPopRecord(
            identity_1.get_public_key().to_der(),
            identity_1.sign(challenge))
        pop_record_2 = tPopRecord(
            identity_2.get_public_key().to_der(),
            identity_2.sign(challenge + b'x'))  # make invlid signature; verification must fail
        transport_request = self.encode_pop_transport_request(transport_id, challenge, [pop_record_1, pop_record_2])

        response_transport_packets = self.remoting.process_packet(self.iface_registry, self.server, self.session_list, transport_request)

        session = self.session_list.get_transport_session(transport_id)
        self.assertIn(identity_1.get_public_key(), session.peer_public_keys)
        self.assertNotIn(identity_2.get_public_key(), session.peer_public_keys)
コード例 #3
0
def create_identity( fpath, overwrite ):
    private_fpath = fpath + '.identity.pem'
    public_fpath = fpath + '.public.pem'
    if os.path.exists(private_fpath) and not overwrite:
        log.info('identity file %r is already exists', private_fpath)
        return
    if os.path.exists(public_fpath) and not overwrite:
        log.info('identity file %r is already exists', public_fpath)
        return

    log.info('generating rsa key of size %d...', RSA_KEY_SIZE_SAFE)
    sys.stdout.flush()
    identity = Identity.generate()
    log.info('generating rsa key ... done')

    public_key = identity.private_key.public_key()
    identity.save_to_file(private_fpath)
    log.info('identity is written to %r', private_fpath)
    identity.get_public_key().save_to_file(public_fpath)
    log.info('public key is written to %r', public_fpath)
コード例 #4
0
TYPE_MODULE_EXT = '.types'
DYN_MODULE_EXT = '.dyn.py'


logging.basicConfig(level=logging.DEBUG, format='%(asctime)-15s  %(message)s')


test_iface = Interface('test_iface', commands=[
    RequestCmd('echo', [Field('test_param', tString)], [Field('test_result', tString)]),
    RequestCmd('required_auth', result_fields=[Field('test_result', tString)]),
    RequestCmd('broadcast', [Field('message', tString)]),
    ],
    diff_type=tString)


authorized_peer_identity = Identity.generate(fast=True)


class TestObject(Object):

    class_name = 'test_object'
    iface = test_iface

    def __init__( self, module, id ):
        Object.__init__(self)
        self.module = module
        self.id = id

    def get_path( self ):
        return self.module.make_path(self.class_name, self.id)