Error: Computed hash does not match remote hash


#1

Hi Everyone at Blockcerts!
In the last few months, with a friend, we’ve been building a Cert-Tools for creating the certs Jsons, the Issuers Jsons, and the revocation list Jsons in Java languaje instead of python.
We followed the Openbadges specification to create the certificates (http://www.imsglobal.org/sites/default/files/Badges/OBv2p0Final/index.html)
Here are two unsigned and signed credentials, one created with Cert-tools and the other one with Java-tools. They are ziped in a drive folder because I couldnt share them otherwhise.
If you check the values from both tools, we have a slight diference in ordering them, but we built every field.
DRIVE
https://drive.google.com/open?id=1jcLCEedf1DqbDAZFX8clKoVsiFPYBDMT
I ran them through the Cert-Issuer and both passed and were pasted in the Bitcoin Testnet, but when I try to verify the Java cert in https://www.blockcerts.org/ I get an error when comparing the hashes. Ive looked at the Bitcoin transaction OP_Return and the hashes inside the Jsons and they are the same.


Does anyone know where the error is? A friend mentioned me that there are several ways to encode a Json, and maybe thats the issue?
Thanks in advanced to everyone for the help :slight_smile:
Julian
Ps: Ive ran the verification process in local mode through the cert-viewer and it ran fine in both credentials.


#2

Sorry for the delay on responding.

Yeah this is interesting. So our python cert-verifier thinks it’s okay, but our cert-verifier-js project (which is part of the verifier on blockcerts.org) is pulling a different local hash.

Expected: 673a2cb17e5c8b4786519a77eadaa1d60bf585e7f5fe9e06f532243390451143
Actual: 0b7eb59edfdad755e56871d2799a28ac7e5e2c1742ceab795a9a7f389d55e274

Not sure what the difference is between the python and javascript hashing, but your friend might be right on the json part. I haven’t inspected your certificate with a fine comb yet, but I’ll try to get to it at some point today. I wonder what the differences are.


#3

Hi @aronning!
We thought so too, we are still developing our tool, and we started investigating Cert-Verifier-JS also :slight_smile:
Ive built a JSON by hand that looks Exactly as the one by Cert-Tools-Python, I Paste it in the same drive that I shared. Im waiting to Issue it, but the Testnet is under some kind of attack because its only procesing Tx that have 5000 Sat/byte fee, and Cert-Issuer only emits 250 Sat/byte Fee.
By the way, do you know how to configure the fee so I can Issue some credentials???
Thanks in advanced for all the help


#4

Yeah, take a look at this file for some of the environment variables you can set in your config: https://github.com/blockchain-certificates/cert-issuer/blob/815e2aed87c28ce209136533621225a754be32ea/cert_issuer/config.py