diff options
| author | Devendra | 2014-03-25 11:47:03 +0530 | 
|---|---|---|
| committer | Devendra | 2014-03-25 11:47:03 +0530 | 
| commit | 9ac3ccf6283772b404a0c80945e3cdf3406ac5bf (patch) | |
| tree | 11ff9dc1a4e585617a522bc9cb56172dfa4adda9 /common | |
| parent | b8d1dd86a0d8c4261d4f3765f3ca227d7b555c84 (diff) | |
| download | pubnub-python-9ac3ccf6283772b404a0c80945e3cdf3406ac5bf.tar.bz2 | |
making version 2 and version 3 work same timepython3
Diffstat (limited to 'common')
| -rw-r--r-- | common/PubnubBase.py | 13 | ||||
| -rw-r--r-- | common/PubnubCrypto.py | 79 | 
2 files changed, 89 insertions, 3 deletions
| diff --git a/common/PubnubBase.py b/common/PubnubBase.py index b8817c1..4c5b422 100644 --- a/common/PubnubBase.py +++ b/common/PubnubBase.py @@ -3,7 +3,8 @@ except ImportError: import simplejson as json  import time  import hashlib -import uuid  +import uuid +import sys  class PubnubBase(object):      def __init__( @@ -41,7 +42,7 @@ class PubnubBase(object):          self.secret_key    = secret_key          self.cipher_key    = cipher_key          self.ssl           = ssl_on -        self.pc            = PubnubCrypto() +          if self.ssl :              self.origin = 'https://' + self.origin @@ -49,6 +50,14 @@ class PubnubBase(object):              self.origin = 'http://'  + self.origin          self.uuid = UUID or str(uuid.uuid4()) + +        if type(sys.version_info) is tuple: +            self.python_version = 2 +            self.pc             = PubnubCrypto2() +        else: +            self.python_version = 3 +            self.pc             = PubnubCrypto3() +          if not isinstance(self.uuid, str):              raise AttributeError("pres_uuid must be a string") diff --git a/common/PubnubCrypto.py b/common/PubnubCrypto.py index 1f5fc8d..3489216 100644 --- a/common/PubnubCrypto.py +++ b/common/PubnubCrypto.py @@ -4,7 +4,84 @@ from base64 import encodestring, decodestring  import hashlib  import hmac -class PubnubCrypto() : +class PubnubCrypto2() : +    """ +    #** +    #* PubnubCrypto +    #* +    #** + +    ## Initiate Class +    pc = PubnubCrypto + +    """ +    +    def pad( self, msg, block_size=16 ): +        """ +        #** +        #* pad +        #* +        #* pad the text to be encrypted +        #* appends a padding character to the end of the String +        #* until the string has block_size length +        #* @return msg with padding. +        #** +        """ +        padding = block_size - (len(msg) % block_size) +        return msg + chr(padding)*padding +        +    def depad( self, msg ): +        """ +        #** +        #* depad +        #* +        #* depad the decryptet message" +        #* @return msg without padding. +        #** +        """ +        return msg[0:-ord(msg[-1])] + +    def getSecret( self, key ): +        """ +        #** +        #* getSecret +        #* +        #* hases the key to MD5 +        #* @return key in MD5 format +        #** +        """ +        return hashlib.sha256(key).hexdigest() + +    def encrypt( self, key, msg ): +        """ +        #** +        #* encrypt +        #* +        #* encrypts the message +        #* @return message in encrypted format +        #** +        """ +        secret = self.getSecret(key) +        Initial16bytes='0123456789012345' +        cipher = AES.new(secret[0:32],AES.MODE_CBC,Initial16bytes) +        enc = encodestring(cipher.encrypt(self.pad(msg))) +        return enc +    def decrypt( self, key, msg ): +        """ +        #** +        #* decrypt +        #* +        #* decrypts the message +        #* @return message in decryped format +        #** +        """ +        secret = self.getSecret(key) +        Initial16bytes='0123456789012345' +        cipher = AES.new(secret[0:32],AES.MODE_CBC,Initial16bytes) +        return self.depad((cipher.decrypt(decodestring(msg)))) + + +class PubnubCrypto3() :      """      #**      #* PubnubCrypto | 
