def _doConnectPubKey( self, words ) : if len(words) != 2 : self._writeError( 'Malformed request' ) return hexPubKey, service = words if not self.session.isOnline() : self._writeError( 'Not online' ) return try : pubKeyData = hexDecode( hexPubKey ) pubKey = RSAKey() pubKey.fromDER_PublicKey( pubKeyData ) except (HexDecodeError,RSAError) : self._writeError( 'Malformed publickey' ) return self._connectInternal( pubKey, service )
def loadProfile( entry, password, location='CSpaceProfiles') : ps = profileSettings(location) userName = ps.getData( entry+'/Name' ) keyId = ps.getData( entry+'/KeyID' ) encKey = ps.getData( entry+'/PrivateKey' ) rsaKey = RSAKey() try : rsaKey.fromPEM_PrivateKey( encKey, password ) except RSAError : return None profile = Profile( rsaKey, userName, keyId, entry ) contactsData = ps.getData( entry+'/ContactList', '' ) for line in contactsData.split('\n') : line = line.strip() if not line : continue name,hexKey = line.split(':') assert isValidUserName(name) pubKey = RSAKey() pubKey.fromDER_PublicKey( hexDecode(hexKey) ) contact = Contact( pubKey, name ) profile.addContact( contact ) return profile
def loadProfile(entry, password): ps = profileSettings() userName = ps.getData(entry + '/Name') keyId = ps.getData(entry + '/KeyID') encKey = ps.getData(entry + '/PrivateKey') rsaKey = RSAKey() try: rsaKey.fromPEM_PrivateKey(encKey, password) except RSAError: return None profile = Profile(rsaKey, userName, keyId, entry) contactsData = ps.getData(entry + '/ContactList', '') for line in contactsData.split('\n'): line = line.strip() if not line: continue name, hexKey = line.split(':') assert isValidUserName(name) pubKey = RSAKey() pubKey.fromDER_PublicKey(hexDecode(hexKey)) contact = Contact(pubKey, name) profile.addContact(contact) return profile