docs: def encrypt(self,plaintext,n=''):
          """Encrypt some plaintext
  
              plaintext   = a string of binary data
              n           = the 'tweak' value when the chaining mode is XTS
  
          The encrypt function will encrypt the supplied plaintext.
          The behavior varies slightly depending on the chaining mode.
  
          ECB, CBC:
          ---------
          When the supplied plaintext is not a multiple of the blocksize
            of the cipher, then the remaining plaintext will be cached.
          The next time the encrypt function is called with some plaintext,
            the new plaintext will be concatenated to the cache and then
            cache+plaintext will be encrypted.
  
          CFB, OFB, CTR:
          --------------
          When the chaining mode allows the cipher to act as a stream cipher,
            the encrypt function will always encrypt all of the supplied
            plaintext immediately. No cache will be kept.
  
          XTS:
          ----
          Because the handling of the last two blocks is linked,
            it needs the whole block of plaintext to be supplied at once.
          Every encrypt function called on a XTS cipher will output
            an encrypted block based on the current supplied plaintext block.
  
          CMAC:
          -----
          Everytime the function is called, the hash from the input data is calculated.
          No finalizing needed.
          The hashlength is equal to block size of the used block cipher.
          """
          #self.ed = 'e' if chain is encrypting, 'd' if decrypting,
          # None if nothing happened with the chain yet
          #assert self.ed in ('e',None) 
          # makes sure you don't encrypt with a cipher that has started decrypting
          self.ed = 'e'
          if self.mode == MODE_XTS:
              # data sequence number (or 'tweak') has to be provided when in XTS mode
              return self.chain.update(plaintext,'e',n)
          else:
              return self.chain.update(plaintext,'e')