Skip to content
This repository has been archived by the owner on Mar 8, 2024. It is now read-only.

Addresses array cannot contain corresponding entries in verified addresses array. #690

Open
mayurbhandary opened this issue Sep 10, 2020 · 0 comments
Assignees

Comments

@mayurbhandary
Copy link
Collaborator

Expected Behavior

The CLI tool outputs this after signing with an identity key:

{
  "payId": "test$payid.mayurbhandary.com",
  "addresses": [
    {
      "paymentNetwork": "XRPL",
      "environment": "TESTNET",
      "addressDetailsType": "CryptoAddressDetails",
      "addressDetails": {
        "address": "rU3mTFnefto99VcEECBAbQseRMEKTCLGxr"
      }
    }
  ],
  "verifiedAddresses": [
    {
      "payload": "{\"payId\":\"test$payid.mayurbhandary.com\",\"payIdAddress\":{\"paymentNetwork\":\"XRPL\",\"environment\":\"TESTNET\",\"addressDetailsType\":\"CryptoAddressDetails\",\"addressDetails\":{\"address\":\"rU3mTFnefto99VcEECBAbQseRMEKTCLGxr\"}}}",
      "signatures": [
        {
          "protected": "eyJuYW1lIjoiaWRlbnRpdHlLZXkiLCJhbGciOiJFUzI1NiIsInR5cCI6IkpPU0UrSlNPTiIsImI2NCI6ZmFsc2UsImNyaXQiOlsiYjY0IiwibmFtZSJdLCJqd2siOnsiY3J2IjoiUC0yNTYiLCJ4IjoiSzhNeFFRdTdrdjc4RWUxcHBOMllabWUzVkhFTnR1c2oyako4a0huclBpUSIsInkiOiJXWDMwZkJGTGhPSXJOaV9tQXhLeXlDd2EteWtYRVVtWUluSjN3SGw5ZUZnIiwia3R5IjoiRUMiLCJraWQiOiJFNVd3TWdPTlBvdXYtZWRkbFhlVUp1dmVkR0l1TFpjZV9oOEs4RVhieVY4In19",
          "signature": "lGajpmG4_JNA4XDsVVEFMHyB6ay1hw6ovr27-GVNuPmgB_9GkKZEn3uGLOEyTqyrkTQq3OXMA118rs2Hd-FLdQ"
        }
      ]
    }
  ]
}

So the corresponding Admin API request to create the PayID should be:

curl --location --request POST 'http://127.0.0.1:8081/users' \
--header 'PayID-API-Version: 2020-09-01' \
--header 'Content-Type: application/json' \
--data-raw  '{
  "payId": "test$payid.mayurbhandary.com",
  "addresses": [
    {
      "paymentNetwork": "XRPL",
      "environment": "TESTNET",
      "addressDetailsType": "CryptoAddressDetails",
      "addressDetails": {
        "address": "rU3mTFnefto99VcEECBAbQseRMEKTCLGxr"
      }
    }
  ],
  "verifiedAddresses": [
    {
      "payload": "{\"payId\":\"test$payid.mayurbhandary.com\",\"payIdAddress\":{\"paymentNetwork\":\"XRPL\",\"environment\":\"TESTNET\",\"addressDetailsType\":\"CryptoAddressDetails\",\"addressDetails\":{\"address\":\"rU3mTFnefto99VcEECBAbQseRMEKTCLGxr\"}}}",
      "signatures": [
        {
          "protected": "eyJuYW1lIjoiaWRlbnRpdHlLZXkiLCJhbGciOiJFUzI1NiIsInR5cCI6IkpPU0UrSlNPTiIsImI2NCI6ZmFsc2UsImNyaXQiOlsiYjY0IiwibmFtZSJdLCJqd2siOnsiY3J2IjoiUC0yNTYiLCJ4IjoiSzhNeFFRdTdrdjc4RWUxcHBOMllabWUzVkhFTnR1c2oyako4a0huclBpUSIsInkiOiJXWDMwZkJGTGhPSXJOaV9tQXhLeXlDd2EteWtYRVVtWUluSjN3SGw5ZUZnIiwia3R5IjoiRUMiLCJraWQiOiJFNVd3TWdPTlBvdXYtZWRkbFhlVUp1dmVkR0l1TFpjZV9oOEs4RVhieVY4In19",
          "signature": "lGajpmG4_JNA4XDsVVEFMHyB6ay1hw6ovr27-GVNuPmgB_9GkKZEn3uGLOEyTqyrkTQq3OXMA118rs2Hd-FLdQ"
        }
      ]
    }
  ]
}'

Actual Behavior

The above curl command gives this error:
{"statusCode":409,"error":"Conflict","message":"More than one address for the same (payment_network, environment) tuple was provided"}

In order to create the verified PayID, the PaymentInformation must be removed from the addresses array.

Context

This might not be an issue if the intended behavior is to make sure a verified address isn't also in addresses, but there should be consistency between the CLI tool and the reference implementation.

Potential Solution

We should have a discussion about whether this behavior is intended and whether the CLI tool or the reference implementation needs to be changed so that they match.

Steps to Reproduce

See above

Environment

  • Node version:
  • NPM version:
  • Operating System and version:
  • PayID server version:
  • PayID Version header (if applicable):

Screenshots

If applicable, add screenshots to help explain your problem.

Bonus

Are you willing to submit a pull request to fix this bug?
Yes

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants