Skip to main content
. 2024 Feb 5;24(3):1035. doi: 10.3390/s24031035
Algorithm 4: IdentityEVDVAddressEδM
// Params: Zero-knowledge proof EVDV
// Returns: Authentication result and the data storage address Address(EδM)
function Verify Access And Retrieve Data (proof EVDV) → {Address_EδM}
01: // Step (i) Generates a random parameter σ based on T from EVDV
02: σ = select Random From (T)
03: // Compute a using σ
04: aσ2 mod T
05: // Step (ii) Generates a random sequence E and issues an identity challenge to the DV
06: E=e1,e2,,er,ej0,1.
07: sendChallenge (challenge)
08: // Step (iii) Computes the response parameters Res using their private key SU
09: Res=σ
10: for j from 1 to r do:
11:  Res=Resljejmod T
12: sendResponse (Res) // Send the response parameters Res to the DO
13: // Step (iv) Verifies the proof EVDV and the response parameter Res
14: γ=1
15: for j from 1 to r do:
16:  γ=γEVfjejmod T
17: // Verify the equation
18: if Res2aγ mod T:
19:  authentication Result = true
20:  sendAddress (AddressEδM) // DO sends the data storage address AddressEδM to DV
21: // Step (v) Calculate attribute permission parameters based on the DV’s weight values
22:  for j from 1 to r do:
23:    rj=μ mod bj
24:    Ri=r1,r2,,rj
25:    send Permission Parameters (Ri, AddressEδM) // Send attribute permission parameters Ri and AddressEδM 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