Patient generates new pair of asymmetric keys

D.1 Patient → USB—Patient : DID

D.2 USB—Patient → Patient : kb

Patient requests attributes for patient identified by k0

D.3 Patient → HAP : k0, DID, kb, a 1 , ⋯ , a n

Patient proves his ownership of public keys k0 and kb via a challenge/response

D.4 HAP → Patient : k0, Np

D.5 Patient → USB—Patient : HAP, H(k0, Np)

D.6 USB—Patient → Patient : { H ( k 0 , N p ) } k 0 − 1

D.7 Patient → USB—Patient : D I D , H ( k b , N p )

D.8 USB—Patient → Patient : { H ( k b , N p ) } k b − 1

D.9 Patient → HAP : { H ( k 0 , N p ) } k 0 − 1 , { H ( k b , N p ) } k b − 1

HAP saves the link between DID and kb in Indy

D.10 HAP → Indy : DID, kb, { H ( D I D , k b ) } k p − 1

HAP sends the EMR to patient in a protected form

D.11 HAP → Patient : D I D , { E M R } k ︸ M , { H ( M ) } k p − 1 , { k } k 0

Patient saves the EMR in his wallet

D.12 Patient → Wallet : D I D , { E M R } k ︸ M , { H ( M ) } k p − 1 , { k } k 0