pythondjangoapipostlightning

Lightning LND Rest API in Django API Handling POST requests when encoding/decoding, getting Incorrect Padding


I am trying to make a Django API for handling lightning payments, and I need to implement some functionalities such as unlocking wallet, changing password etc. I am getting "Incorrect padding" and I don't know how to fix it. This is my view.py:

from rest_framework.views import APIView
from rest_framework.response import Response
from rest_framework import status
from rest_framework.parsers import JSONParser
import os
import base64, codecs, json, requests

class ChangePassword(APIView):
    def post(self, request):
        url = "https://localhost:8080/v1/changepassword"
        cert_path = "/Users/user1/Library/Application Support/Lnd/tls.cert"
        data = {
            "current_password": base64.b64decode(
                request.data["current_password"]
            ).decode("utf-8"),
            "new_password": base64.b64decode(request.data["new_password"]).decode(
                "utf-8"
            ),
        }
        r = requests.post(url, verify=cert_path, data=json.dumps(data))
        if r.status_code == 200:
            data = r.json()
            return Response(data, status=status.HTTP_200_OK)
        return Response({"error": "Request failed"}, status=r.status_code)

I am using the LND Rest documentation https://api.lightning.community/#v1-changepassword.

Thanks in advance for your help :)


Solution

  • The solution is to change the way we encoded/decoding by:

    ...
    
    data = {
                "wallet_password": base64.b64encode(
                    bytes(request.data["wallet_password"], "UTF-8")
                ).decode(),
    
    ...