| Algorithm 1: |
| // Params: identity of terminal member // Returns: public key and public parameters function GeneratePublicKeyAndParams(char[] ) → {, } 01: // Step (i): Select large prime numbers and corresponding groups 02: p = selectLargePrime () 03: q = selectLargePrime () 04: = selectBilinearGroupOfOrder (p) 05: = selectCyclicGroupOfOrder (q) 06: = .generator () // Generator of 07: = .generator () // Generator of 08: // Step (ii): Define bilinear map 09: e = defineBilinearMap (, , ) 10: // Step (iii): Select hash functions 11: = hashFunction (, ) 12: = hashFunction (, ) 13: // Compute public key for terminal member 14: 15: // Step (iv): Select random number and compute private key for terminal member 16: = selectRandomFromZpStar (p) 17: 18: // Step (v): Compute and set public parameters 19: 20: 21: // Return public key and parameters 22: return {, } endfunction |