docs: def aes_encrypt(key: bytes, plain_text: bytes) -> bytes:
      """
      AES-GCM encryption
  
      Parameters
      ----------
      key: bytes
          AES session key, which derived from two secp256k1 keys
      plain_text: bytes
          Plain text to encrypt
  
      Returns
      -------
      bytes
          nonce(16 bytes) + tag(16 bytes) + encrypted data
      """
      aes_cipher = AES.new(key, AES_CIPHER_MODE)
  
      encrypted, tag = aes_cipher.encrypt_and_digest(plain_text)
      cipher_text = bytearray()
      cipher_text.extend(aes_cipher.nonce)
      cipher_text.extend(tag)
      cipher_text.extend(encrypted)
      return bytes(cipher_text)