| Algorithm 2: |
| // Params: attribute values ; private key // Returns: proof function GenerateSignature(attribute_values [], publicKey ) → function GenerateProof(attribute values [], private key ) → proof 01: // Step (i): Compute T based on the public parameters p and q 02: 03: // Step (ii): Input attribute values and private key 04: // Compute the formula for F 05: F = empty set // Initialize F as an empty set 06: for each attribute value in : 07: // Compute 08: 09: // Square each to get 10: 11: // Add to the set F 12: 13: // Construct the proof 14: 15: return endfunction |