finished pub encrypt function
This commit is contained in:
		
							parent
							
								
									cb3015652a
								
							
						
					
					
						commit
						24540abe6b
					
				
					 3 changed files with 26 additions and 6 deletions
				
			
		|  | @ -154,6 +154,11 @@ class API: | |||
|                 if len(response) == 0: | ||||
|                     response = 'none' | ||||
|                 resp = Response(response) | ||||
|             elif action == 'kex': | ||||
|                 response = ','.join(self._core.listPeers()) | ||||
|                 if len(response) == 0: | ||||
|                     response = 'none' | ||||
|                 resp = Response(response) | ||||
|             else: | ||||
|                 resp = Response("") | ||||
| 
 | ||||
|  |  | |||
|  | @ -70,6 +70,7 @@ class OnionrCommunicate: | |||
|             pexCount += 1 | ||||
|             if pexTimer == pexCount: | ||||
|                 self.getNewPeers() | ||||
|                 pexCount = 0 | ||||
|             if heartBeatRate == heartBeatTimer: | ||||
|                 logger.debug('Communicator heartbeat') | ||||
|                 heartBeatTimer = 0 | ||||
|  | @ -92,15 +93,19 @@ class OnionrCommunicate: | |||
|         peersCheck = 5 # Amount of peers to ask for new peers + keys | ||||
|         peersChecked = 0 | ||||
|         peerList = list(self._core.listAdders()) # random ordered list of peers | ||||
|         logger.warn(len(peerList)) | ||||
|         newKeys = [] | ||||
|         newAdders = [] | ||||
|         if len(peerList) > 0: | ||||
|             maxN = len(peerList) - 1 | ||||
|         else: | ||||
|             peersCheck = 0 | ||||
|             maxN = 0 | ||||
| 
 | ||||
|         if len(peerList) > peersCheck: | ||||
|             peersCheck = len(peerList) | ||||
| 
 | ||||
|         while peersCheck > peersChecked: | ||||
|             i = random.randint(0, len(peerList)) | ||||
|             i = random.randint(0, maxN) | ||||
|             logger.info('Using ' + peerList[i] + ' to find new peers') | ||||
|             try: | ||||
|                 newAdders = self.performGet('pex', peerList[i]) | ||||
|  |  | |||
|  | @ -60,11 +60,21 @@ class OnionrCrypto: | |||
|             retData = key.sign(data.encode()) | ||||
|         return retData | ||||
| 
 | ||||
|     def pubKeyEncrypt(self, data, peer): | ||||
|         '''Encrypt to a peers public key (Curve25519, taken from Ed25519 pubkey)''' | ||||
|         return | ||||
|     def pubKeyEncrypt(self, data, pubkey, anonymous=False): | ||||
|         '''Encrypt to a public key (Curve25519, taken from base32 Ed25519 pubkey)''' | ||||
|         retVal = '' | ||||
|         if self.privKey != None and not anonymous: | ||||
|             ownKey = nacl.signing.SigningKey(seed=self.privKey, encoder=nacl.encoding.Base32Encoder()) | ||||
|             key = nacl.signing.VerifyKey(key=pubkey, encoder=nacl.encoding.Base32Encoder).to_curve25519_public_key() | ||||
|             ourBox = nacl.public.Box(ownKey, key) | ||||
|             retVal = ourBox.encrypt(data.encode(), encoder=nacl.encoding.RawEncoder) | ||||
|         elif anonymous: | ||||
|             key = nacl.signing.VerifyKey(key=pubkey, encoder=nacl.encoding.Base32Encoder).to_curve25519_public_key() | ||||
|             anonBox = nacl.public.SealedBox(key) | ||||
|             retVal = anonBox.encrypt(data.encode(), encoder=nacl.encoding.RawEncoder) | ||||
|         return retVal | ||||
| 
 | ||||
|     def pubKeyEncrypt(self, data, peer): | ||||
|     def pubKeyDecrypt(self, data, peer): | ||||
|         '''pubkey decrypt (Curve25519, taken from Ed25519 pubkey)''' | ||||
|         return | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue