Exemplo n.º 1
0
 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 )
Exemplo n.º 2
0
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
Exemplo n.º 3
0
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