| Algorithm 4: |
| // Params: Zero-knowledge proof // Returns: Authentication result and the data storage address Address() function Verify Access And Retrieve Data (proof ) → {Address_} 01: // Step (i) Generates a random parameter based on T from 02: = select Random From (T) 03: // Compute using 04: 05: // Step (ii) Generates a random sequence E and issues an identity challenge to the DV 06: . 07: sendChallenge (challenge) 08: // Step (iii) Computes the response parameters Res using their private key 09: 10: for j from 1 to r do: 11: 12: sendResponse (Res) // Send the response parameters Res to the DO 13: // Step (iv) Verifies the proof and the response parameter Res 14: 15: for j from 1 to r do: 16: 17: // Verify the equation 18: if : 19: authentication Result = true 20: sendAddress () // DO sends the data storage address to DV 21: // Step (v) Calculate attribute permission parameters based on the DV’s weight values 22: for j from 1 to do: 23: 24: 25: send Permission Parameters (, ) // Send attribute permission parameters and to DV 26: else: 27: authentication Result = false 28: // Terminate any further action if the equation does not hold 29: terminate () 30: // Return the authentication result 31: return {authentication Result} endfunction |