Patient generates new pair of asymmetric keys

D.1 Patient USBPatient : DID

D.2 USBPatient 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 USBPatient : HAP, H(k0, Np)

D.6 USBPatient Patient : { H ( k 0 , N p ) } k 0 1

D.7 Patient USBPatient : 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