A computing device comprising: one or more processors; and memory communicatively coupled to the one or more processors and storing instructions that, when executed, configure the one or more processors to perform operations comprising: obtaining a message containing information and a hash value corresponding to the message, wherein the message contains a credential, and wherein the computing device is in possession of the credential; committing to the message and the hash value by sending, to a verifier, a first commitment function corresponding to the message and a second commitment function corresponding to the hash value; receiving a garbled circuit from the verifier, the garbled circuit comprising logic to determine whether the hash value corresponds to the message and to output two or more message authentication codes (MACs) when the hash value corresponds to the message; inputting the message and hash value into the garbled circuit; evaluating the garbled circuit to cause generation of two or more MACs corresponding to the message and the hash value; outputting, from the garbled circuit, the two or more MACs corresponding to the message and the hash value, wherein the two or more MACs comprise a first MAC and a second MAC; sending, to the verifier, one or more commitment functions, wherein the one or more commitment functions comprise a third commitment function corresponding to the first MAC and a fourth commitment function corresponding to the second MAC; and receiving from the verifier in response to the sending of the one or more commitment functions, an indication of if the credential is valid. one or more processors; and memory communicatively coupled to the one or more processors and storing instructions that, when executed, configure the one or more processors to perform operations comprising: obtaining a message containing information and a hash value corresponding to the message, wherein the message contains a credential, and wherein the computing device is in possession of the credential; committing to the message and the hash value by sending, to a verifier, a first commitment function corresponding to the message and a second commitment function corresponding to the hash value; receiving a garbled circuit from the verifier, the garbled circuit comprising logic to determine whether the hash value corresponds to the message and to output two or more message authentication codes (MACs) when the hash value corresponds to the message; inputting the message and hash value into the garbled circuit; evaluating the garbled circuit to cause generation of two or more MACs corresponding to the message and the hash value; outputting, from the garbled circuit, the two or more MACs corresponding to the message and the hash value, wherein the two or more MACs comprise a first MAC and a second MAC; sending, to the verifier, one or more commitment functions, wherein the one or more commitment functions comprise a third commitment function corresponding to the first MAC and a fourth commitment function corresponding to the second MAC; and receiving from the verifier in response to the sending of the one or more commitment functions, an indication of if the credential is valid. obtaining a message containing information and a hash value corresponding to the message, wherein the message contains a credential, and wherein the computing device is in possession of the credential; committing to the message and the hash value by sending, to a verifier, a first commitment function corresponding to the message and a second commitment function corresponding to the hash value; receiving a garbled circuit from the verifier, the garbled circuit comprising logic to determine whether the hash value corresponds to the message and to output two or more message authentication codes (MACs) when the hash value corresponds to the message; inputting the message and hash value into the garbled circuit; evaluating the garbled circuit to cause generation of two or more MACs corresponding to the message and the hash value; outputting, from the garbled circuit, the two or more MACs corresponding to the message and the hash value, wherein the two or more MACs comprise a first MAC and a second MAC; sending, to the verifier, one or more commitment functions, wherein the one or more commitment functions comprise a third commitment function corresponding to the first MAC and a fourth commitment function corresponding to the second MAC; and receiving from the verifier in response to the sending of the one or more commitment functions, an indication of if the credential is valid.