docs: def encrypt(self, pkt, seq_num=None, iv=None):
          """
          Encrypt (and encapsulate) an IP(v6) packet with ESP or AH according
          to this SecurityAssociation.
  
          @param pkt:     the packet to encrypt
          @param seq_num: if specified, use this sequence number instead of the
                          generated one
          @param iv:      if specified, use this initialization vector for
                          encryption instead of a random one.
  
          @return: the encrypted/encapsulated packet
          """
          if not isinstance(pkt, self.SUPPORTED_PROTOS):
              raise TypeError('cannot encrypt %s, supported protos are %s'
                              % (pkt.__class__, self.SUPPORTED_PROTOS))
          if self.proto is ESP:
              return self._encrypt_esp(pkt, seq_num=seq_num, iv=iv)
          else:
              return self._encrypt_ah(pkt, seq_num=seq_num)