summaryrefslogtreecommitdiff
path: root/src/include/daa/verifier.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/include/daa/verifier.h')
-rw-r--r--src/include/daa/verifier.h110
1 files changed, 110 insertions, 0 deletions
diff --git a/src/include/daa/verifier.h b/src/include/daa/verifier.h
new file mode 100644
index 0000000..f177948
--- /dev/null
+++ b/src/include/daa/verifier.h
@@ -0,0 +1,110 @@
+
+/*
+ * Licensed Materials - Property of IBM
+ *
+ * trousers - An open source TCG Software Stack
+ *
+ * (C) Copyright International Business Machines Corp. 2006
+ *
+ */
+
+#ifndef VERIFIER_H_
+#define VERIFIER_H_
+
+#include "bi.h"
+#include "daa_structs.h"
+#include "anonymity_revocation.h"
+#include "daa_parameter.h"
+#include "tsplog.h"
+
+/*
+ * Transaction of a DAA Verifier to verify a signature (VerifierTransaction.java)
+ */
+typedef struct {
+ BYTE *baseName;
+ int baseName_length;
+ EVP_MD *digest;
+ BYTE *nonce;
+ int nonce_length;
+ int is_anonymity_revocation_enabled; // boolean
+ BYTE *anonymity_revocation_condition;
+ int anonymity_revocation_condition_length;
+ CS_PUBLIC_KEY *anonymity_revocator_pk;
+ // private TssDaaSelectedAttrib[] selectedAttributes2Commit;
+ TSS_DAA_SELECTED_ATTRIB **selected_attributes2commit;
+ int selected_attributes2commitLength;
+} DAA_VERIFIER_TRANSACTION;
+
+/* the return (BYTE *) should be free after usage */
+BYTE *compute_bytes( int seedLength, BYTE *seed, int length, const EVP_MD *digest);
+
+bi_ptr compute_zeta( int nameLength, unsigned char *name, TSS_DAA_PK_internal *issuer_pk);
+
+bi_ptr project_into_group_gamma( bi_ptr base, TSS_DAA_PK_internal *issuer_pk);
+#if 0
+TSPICALL Tspi_DAA_VerifyInit_internal
+(
+ TSS_HDAA hDAA, // in
+ UINT32* nonceVerifierLength, // out
+ BYTE** nonceVerifier, // out
+ UINT32 baseNameLength, // out
+ BYTE ** baseName // out
+);
+
+TSPICALL Tspi_DAA_VerifySignature_internal
+( TSS_HDAA hDAA, // in
+ TSS_DAA_SIGNATURE signature, // in
+ TSS_HKEY hPubKeyIssuer, // in
+ TSS_DAA_SIGN_DATA sign_data, // in
+ UINT32 attributes_length, // in
+ BYTE **attributes, // in
+ UINT32 nonce_verifierLength, // out
+ BYTE *nonce_verifier, // out
+ UINT32 base_nameLength, // out
+ BYTE *base_name, // out
+ TSS_BOOL *isCorrect // out
+);
+#else
+TSS_RESULT
+Tspi_DAA_VerifySignature
+(
+ TSS_HDAA_CREDENTIAL hDAACredential, // in
+ TSS_HDAA_ISSUER_KEY hIssuerKey, // in
+ TSS_HDAA_ARA_KEY hARAKey, // in
+ TSS_HHASH hARACondition, // in
+ UINT32 attributesLength, // in
+ UINT32 attributesLength2, // in
+ BYTE** attributes, // in
+ UINT32 verifierNonceLength, // in
+ BYTE* verifierNonce, // in
+ UINT32 verifierBaseNameLength, // in
+ BYTE* verifierBaseName, // in
+ TSS_HOBJECT signData, // in
+ TSS_DAA_SIGNATURE* daaSignature, // in
+ TSS_BOOL* isCorrect // out
+);
+
+#endif
+
+BYTE *compute_sign_challenge_host(
+ int *result_length,
+ EVP_MD *digest,
+ TSS_DAA_PK_internal *issuer_pk,
+ int nonce_verifierLength,
+ BYTE *nonce_verifier,
+ int selected_attributes2commitLength,
+ TSS_DAA_SELECTED_ATTRIB **selected_attributes2commit,
+ int is_anonymity_revocation_enabled,
+ bi_ptr zeta,
+ bi_ptr capital_t,
+ bi_ptr capital_tilde,
+ int attribute_commitmentsLength,
+ TSS_DAA_ATTRIB_COMMIT_internal **attribute_commitments,
+ TSS_DAA_ATTRIB_COMMIT_internal **attribute_commitment_proofs,
+ bi_ptr capital_nv,
+ bi_ptr capital_tilde_v,
+ CS_PUBLIC_KEY *anonymity_revocator_pk,
+ CS_ENCRYPTION_RESULT *encryption_result_rand,
+ CS_ENCRYPTION_RESULT *encryption_result_proof);
+
+#endif /*VERIFIER_H_*/