Your issuer profile should reference a public key listed in verificationMethod and available in say assertionMethod.
That same key should be used in the proof.verificationMethod.
That key should be presented in such format (JWK is fine) that the verifier can transform the public key into the issuing address used for the blockchain network of the transaction.
You should host your document somewhere accessible from the web (no CORS).
How to generate a one-time code for the certificates?
If you pull up JSON-LD Playground and paste your certificate in, then take a look at the canonized tab, you’ll see a safe mode error, which means that this property didn’t get properly hashed when issuing (last time I checked the pyld library safe mode wasn’t implemented so it’s not failing at issuance time).
You’ll need to define the key college as a jsonld object into your context and issue again.
The fact that it passes on blockcerts.org is more the bug than the other way around so I’m looking into that.
I addressed the issue you previously mentioned regarding the college and have issued a new certificate. The JSON file for the certificate has been validated in the JSON-LD Playground, and no errors were detected there. Additionally, I didn’t encounter any errors in Blockcerts.
However, when I try to verify the same certificate using cert-verifier-js, I’m still facing the following issue: “Merkle root does not match remote hash.”
Could you please help me understand why this discrepancy might be occurring? Let me know if you need any additional details or files to investigate further.
Have you re-issued the credential with the new context? The proof value can change because the normalization is different due to the new keys that were specified, so if you modify your context you will need to re-issue all credentials bound to that context.
I have printed the normalizedDocument in both cert-issuer and jsonld-signatures-merkleproof2019
and seems both texts are identical and i still face the Merkle root does not match remote hash error.