La method did:pkh a l avantage d'utiliser une adresse blockchain lisible par ailleurs en utilisant la courbe secp256k on peut aller avec la meme cle sur les 3 blockchains.
en python ca donne ça avec la meme cle
key = {
"crv": "secp256k1",
"d": "WxNkSy38UZUxfAOBWbHQSynEi8pmu97fKehiojNv9mw",
"kty": "EC",
"x": "bjyWuKGoDtUXKD6RzbE4suxoNk0E6pKe0qZTHh1LMg4",
"y": "O1JNLN8bO3EP23WNIiqxfGY8OwOkrcw4hmXXHzwmsGg",
"alg": "ES256K-R"}
// key transformée en string
key = json.dumps(key)
// choix Bitcoin ou Ethereum ou Tezos
method = 'pkh:btc' #pour Bitcoin
// method = 'pkh:eth' #pour Ethereum
// method = 'pkh:tz' # pour Tezos
// calcul du DID
did = didkit.key_to_did(method, key)
// ############ PARTIE NOUVELLE ##################
// attention on doit extraire la vm du DID document
// calcul du DID Document
did_doc = json.loads(didkit.resolve_did(did, '{}'))
vm = did_doc['didDocument']['assertionMethod'][0]
// initit un credential de test
credential = json.load(open('./verifiable_credentials/EmailPass.jsonld', 'r'))
credential["issuer"] = did
credential['credentialSubject']['id'] = "did:tz:tz2E4kuaB9zHa1C3LqNeZncvZogYjQsXxvxz"
credential['issuanceDate'] = datetime.now().replace(microsecond=0).isoformat() + "Z"
credential['id'] = "urn:uuid:" + str(uuid.uuid4())
// setup des options
didkit_options = {
"proofPurpose": "assertionMethod",
"verificationMethod": vm,
}
// signature du credential
signed_credential = didkit.issue_credential(
json.dumps(credential),
didkit_options.str().replace("'", '"'),
key
)
// print('signed credentilal = ', signed_credential)
// verifiaction de la signature
result = didkit.verify_credential(signed_credential, '{}')
print(result)