Increase VP character limits
Some fields of VPs are restricted to 255 characters. This is not enough, e.g., with regard to #199 (closed). Example VP with DIDs / IDs created by the the Gaia-X Lab Wizard:
{
"@context": [
"https://www.w3.org/2018/credentials/v1"
],
"type": [
"VerifiablePresentation"
],
"verifiableCredential": {
"@context": [
"https://www.w3.org/2018/credentials/v1",
"https://w3id.org/security/suites/jws-2020/v1",
"https://registry.lab.gaia-x.eu/development/api/trusted-shape-registry/v1/shapes/jsonld/trustframework#"
],
"type": [
"VerifiableCredential"
],
"id": "https://wizard.lab.gaia-x.eu/api/credentials/2d37wbGvQzbAQ84yRouh2m2vBKkN8s5AfH9Q75HZRCUQmJW7yAVSNKzjJj6gcjE2mDNDUHCichXWdMH3S2c8AaDLm3kXmf5R8ApamALPiFAGZ9WxiAUCfpnxtoV1wtMXWN6oypnez2QrSQ4LD6KYjNLYmBaJwoZ4iuGawPScwMRpVGxj54M9DdAVVHiEESxpMvuG5o51thHaLXCbwrPtwDA6WeGBjib7iwqpMNdNw9U3RAfspMbyDskTnwC6KbZ3Uz76uWP8QYdvZBLs24oiChcRyZ5tmfuoSsBQYNXjAbWZJ6Mwxk1zyP6cx7QZrubWkQM4dA36ZRYv5rdubjuLoCuHM4tYm4iitbnaGfKthw3Bjv8YzhqZEAt6rpDZNaTSBJdsYNBMkWWRYAgj2U4RnbyLNCPjL9ceucc9XrKdGgHa7x8nACkSoFpHmueTjynEBixA1v4wUExB2xDTaYmG2sKd1cBDUzZecjzrwk2VgWrtRUKQ2QNWnNMFa7vATRtjVsefWXMHRhRk1ATSdDq4r5XKD5d7euM77QfZYKAWpwfPNnzGgqyramsGyLLQJAiao1W1Qjzom9e5aK54PerJBogVVTyULT2z52iZRYQ?uid=0566ff0b-6486-4659-9dc2-3e0784c2bf20",
"issuer": "did:web:wizard.lab.gaia-x.eu:api:credentials:2d37wbGvQzbAQ84yRouh2m2vBKkN8s5AfH9Q75HZRCUQmJW7yAVSNKzjJj6gcjE2mDNDUHCichXWdMH3S2c8AaDLm3kXmf5R8ApamALPiFAGZ9WxiAUCfpnxtoV1wtMXWN6oypnez2QrSQ4LD6KYjNLYmBaJwoZ4iuGawPScwMRpVGxj54M9DdAVVHiEESxpMvuG5o51thHaLXCbwrPtwDA6WeGBjib7iwqpMNdNw9U3RAfspMbyDskTnwC6KbZ3Uz76uWP8QYdvZBLs24oiChcRyZ5tmfuoSsBQYNXjAbWZJ6Mwxk1zyP6cx7QZrubWkQM4dA36ZRYv5rdubjuLoCuHM4tYm4iitbnaGfKthw3Bjv8YzhqZEAt6rpDZNaTSBJdsYNBMkWWRYAgj2U4RnbyLNCPjL9ceucc9XrKdGgHa7x8nACkSoFpHmueTjynEBixA1v4wUExB2xDTaYmG2sKd1cBDUzZecjzrwk2VgWrtRUKQ2QNWnNMFa7vATRtjVsefWXMHRhRk1ATSdDq4r5XKD5d7euM77QfZYKAWpwfPNnzGgqyramsGyLLQJAiao1W1Qjzom9e5aK54PerJBogVVTyULT2z52iZRYQ",
"issuanceDate": "2023-12-18T12:27:24.016Z",
"credentialSubject": {
"@id": "https://lab.gaia-x.eu/cesDataResource.json",
"@type": "gx:DataResource",
"gx:name": "CES Data",
"gx:description": "Contains GX compliant credentials",
"gx:containsPII": false,
"gx:policy": "default: allow",
"gx:license": "EPL-2.0",
"gx:copyrightOwnedBy": "original owner",
"gx:producedBy": {
"@id": "did:web:wizard.lab.gaia-x.eu:api:credentials:2d37wbGvQzbAQ84yRouh2m2vBKkN8s5AfH9Q75HZRCUQmJW7yAVSNKzjJj6gcjE2mDNDUHCichXWdMH3S2c8AaDLm3kXmf5R8ApamALPiFAGZ9WxiAUCfpnxtoV1wtMXWN6oypnez2QrSQ4LD6KYjNLYmBaJwoZ4iuGawPScwMRpVGxj54M9DdAVVHiEESxpMvuG5o51thHaLXCbwrPtwDA6WeGBjib7iwqpMNdNw9U3RAfspMbyDskTnwC6KbZ3Uz76uWP8QYdvZBLs24oiChcRyZ5tmfuoSsBQYNXjAbWZJ6Mwxk1zyP6cx7QZrubWkQM4dA36ZRYv5rdubjuLoCuHM4tYm4iitbnaGfKthw3Bjv8YzhqZEAt6rpDZNaTSBJdsYNBMkWWRYAgj2U4RnbyLNCPjL9ceucc9XrKdGgHa7x8nACkSoFpHmueTjynEBixA1v4wUExB2xDTaYmG2sKd1cBDUzZecjzrwk2VgWrtRUKQ2QNWnNMFa7vATRtjVsefWXMHRhRk1ATSdDq4r5XKD5d7euM77QfZYKAWpwfPNnzGgqyramsGyLLQJAiao1W1Qjzom9e5aK54PerJBogVVTyULT2z52iZRYQ#61d378cc41e1e939fc915e4c9f007f14ac61c22f86f94e8e07669749cd495511"
},
"gx:exposedThrough": {
"@id": "https://wizard.lab.gaia-x.eu/api/credentials/2d37wbGvQzbAQ84yRouh2m2vBKkN8s5AfH9Q75HZRCUQmJW7yAVSNKzjJj6gcjE2mDNDUHCichXWdMH3S2c8AaDLm3kXmf5R8ApamALPiFAGZ9WxiAUCfpnxtoV1wtMXWN6oypnez2QrSQ4LD6KYjNLYmBaJwoZ4iuGawPScwMRpVGxj54M9DdAVVHiEESxpMvuG5o51thHaLXCbwrPtwDA6WeGBjib7iwqpMNdNw9U3RAfspMbyDskTnwC6KbZ3Uz76uWP8QYdvZBLs24oiChcRyZ5tmfuoSsBQYNXjAbWZJ6Mwxk1zyP6cx7QZrubWkQM4dA36ZRYv5rdubjuLoCuHM4tYm4iitbnaGfKthw3Bjv8YzhqZEAt6rpDZNaTSBJdsYNBMkWWRYAgj2U4RnbyLNCPjL9ceucc9XrKdGgHa7x8nACkSoFpHmueTjynEBixA1v4wUExB2xDTaYmG2sKd1cBDUzZecjzrwk2VgWrtRUKQ2QNWnNMFa7vATRtjVsefWXMHRhRk1ATSdDq4r5XKD5d7euM77QfZYKAWpwfPNnzGgqyramsGyLLQJAiao1W1Qjzom9e5aK54PerJBogVVTyULT2z52iZRYQ#d4b54de130b6a1efdc1422436db3f3f38676bf2c81e5300945f9d26995d3ed2e"
}
},
"proof": {
"type": "JsonWebSignature2020",
"created": "2024-01-29T11:35:37.065Z",
"proofPurpose": "assertionMethod",
"verificationMethod": "did:web:compliance.lab.gaia-x.eu",
"jws": "eyJiNjQiOmZhbHNlLCJjcml0IjpbImI2NCJdLCJhbGciOiJQUzI1NiJ9..CE9rsl69XDWr0aE2WkDVu9DtV22L8D-7HMF7y-Y1iHIc1UOZhGNhUXyfYYE7Uuxh6BXJqWDsVDWl0V7A6qXAhTcua34FEZUeBFIXL7FXcq8tX56hJO53Js4jrAE6l8h16qQwR_Mpnf-EEh8tDjWWO4fk_a0qBhsYxgiv9m5PulcHnzCC621LqK6TdSdpXUPZm8WeEPia7Rsrzs1fbzp4aHTi53qa5nY8537I9BXN8Ncjv2HlJIODWnlgenNbWZU-NHQtXzQ6sa34F8C30pt_bhSTy1b-vviCTxk9ZkS7DSLk6eMbjeRFPvs9m2lWviqT7voYX-aX0wn8akIdVLeCrco_OEYn2GXBoF65RPVyu6-NcoGY2a1jr5qkhONx4K1SuXOs21yRyljfnMntXxoRP9i0u6cQ8rpMivZYhglqrtP_W7D8lv6IK7BIF6ZEqFtkxxcpCH0quMmOvRjxXSOuIHaODmUcJfCEAaHEemwXSXVch8_3u6Tjb1M9_7wQVwjkYeZ-cz5oTCN6q7Lqf8zUmlj2FJfVOsYqRMW1ucWfdJ-FJnMAuq5cfdrhkEmtnim7IAoMQtSqkpheoiYR1LhimSTSMvMpAS1XuRfBuBxXuBHAbWCPDhi_d8swavyQGUQAD8AI9ylYaehAVj9e0tmBGXzKTrqBP8XiaUvos5-wv18"
}
},
"proof": {
"type": "JsonWebSignature2020",
"created": "2024-01-29T11:35:37.065Z",
"proofPurpose": "assertionMethod",
"verificationMethod": "did:web:compliance.lab.gaia-x.eu",
"jws": "eyJiNjQiOmZhbHNlLCJjcml0IjpbImI2NCJdLCJhbGciOiJQUzI1NiJ9..s8W1geIq4-CedbcQSBDIQ5oLqrXcyUqJGKVfI2wseZJib9naoE87ZekgGkcusBn5LBeQ1_NtydZotlDTBxjNHne2baXBhvJvGW3YyR4Bl7CQ7st23nQKMeDZ_oe7nU028cxmAyLOP4B1QzFYnqXG5DTGhpGZkHqJGbTUErDNYK3KUHGrOGEdmKHmJJ3Hr1IqB36P_UMBBV9hLIWwaxO1YWMIl2-vrjya7l0isAK71f9q3iurlw6Pf3WHslYTPTWyNZ78JcCheWBgWKgSNW--k7So6iepVCkvqlnM6OjmHHLfGAia9S_mchv5ddLeBtlF-xGiHSe5Q6HDBp82BWi-BPe1Eagxq-ZIiC9rupGRB4D2vAkiHP-WFZExk-bavvfDr4Sy-C9s-o_Ef9VmHiRFbgyD9FWms0-3VHTdoPWs3mEGEtDGEJEiZUvju-aQqj7vjZ21UVhY9aLqBennAhAprKzrcUQxsgiwcgqc7-JJ00Rzv_qw-43f61-ZP-i4ZLpdtadnvn0f-m0EwnehzJ6YwMDFDo-iRIGTbFwLbJdVrGzSeu_VZiNz6unsUtMiliY_cxaw3MQBZUQT07PI8z1fv-iIMYDai0e2ISTVwasM0vuxK8GD31mlhW0bJ2FVbYTmXAsCk5SgZgmQ5haas34sP5Thvdr5P0mVRKhbGGnx0Es"
}
}
Error when submitting the VP to the catalog (POST for /self-descriptions):
postgres | 2024-02-05 07:18:50.713 UTC [146] ERROR: value too long for type character varying(255)
postgres | 2024-02-05 07:18:50.713 UTC [146] STATEMENT: with u as (update sdfiles set status = $1, statustime = $2
postgres | where subjectid = $3 and status = 0 returning sdhash oldhash, $4 sdhash, subjectid),
postgres | i as (insert into sdfiles(sdhash, subjectid, issuer, uploadtime, statustime, expirationtime, status, content, validators)
postgres | values ($5, $6, $7, $8, $9, $10, $11, $12, $13)
postgres | returning sdhash)
postgres | select u.subjectid, u.oldhash from i full join u on u.sdhash = i.sdhash
fc-server | 2024-02-05T07:18:50.743Z ERROR 1 --- [federated-catalogue-service] [http-nio-8081-exec-2] [ ] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed: org.springframework.dao.DataIntegrityViolationException: PreparedStatementCallback; SQL [with u as (update sdfiles set status = ?, statustime = ?
fc-server | where subjectid = ? and status = 0 returning sdhash oldhash, ? sdhash, subjectid),
fc-server | i as (insert into sdfiles(sdhash, subjectid, issuer, uploadtime, statustime, expirationtime, status, content, validators)
fc-server | values (?, ?, ?, ?, ?, ?, ?, ?, ?)
fc-server | returning sdhash)
fc-server | select u.subjectid, u.oldhash from i full join u on u.sdhash = i.sdhash]; ERROR: value too long for type character varying(255)] with root cause
Solution: adjusting the database schema to allow longer strings. Running catalogs would need to migrate / update their database. The strings in the example have about 700 characters. The update contains a new limit for the diduri, the subjectid and the issuer of 2048 characters, which is around the max URL length different browsers and services support.