From 1115c195cd60d5ab2b80c12d07e21663e5aa8030 Mon Sep 17 00:00:00 2001 From: "Li, Xun" Date: Thu, 16 Mar 2017 15:30:38 +0900 Subject: [PATCH] Linux 1.8 Open Source Gold release Signed-off-by: Li, Xun --- License.txt | 49 +- .../com.intel.sgx.feature/feature.xml | 4 +- .../com.intel.sgx.userguide/html/content.html | 2 +- .../build_directory/sites/site.xml | 4 +- Linux_SGXEclipsePlugin/readme.txt | 2 +- Makefile | 2 +- README.md | 132 +- SampleCode/LocalAttestation/App/App.cpp | 2 +- .../Enclave1/Enclave1.config.xml | 23 +- .../LocalAttestation/Enclave1/Enclave1.cpp | 2 +- .../LocalAttestation/Enclave1/Enclave1.edl | 2 +- .../LocalAttestation/Enclave1/Enclave1.lds | 10 + .../LocalAttestation/Enclave1/Utility_E1.cpp | 2 +- .../LocalAttestation/Enclave1/Utility_E1.h | 2 +- .../Enclave2/Enclave2.config.xml | 23 +- .../LocalAttestation/Enclave2/Enclave2.cpp | 2 +- .../LocalAttestation/Enclave2/Enclave2.edl | 2 +- .../LocalAttestation/Enclave2/Enclave2.lds | 10 + .../LocalAttestation/Enclave2/Utility_E2.cpp | 2 +- .../LocalAttestation/Enclave2/Utility_E2.h | 2 +- .../Enclave3/Enclave3.config.xml | 23 +- .../LocalAttestation/Enclave3/Enclave3.cpp | 2 +- .../LocalAttestation/Enclave3/Enclave3.edl | 2 +- .../LocalAttestation/Enclave3/Enclave3.lds | 10 + .../LocalAttestation/Enclave3/Utility_E3.cpp | 2 +- .../LocalAttestation/Enclave3/Utility_E3.h | 2 +- .../Include/dh_session_protocol.h | 2 +- .../EnclaveMessageExchange.cpp | 2 +- .../EnclaveMessageExchange.h | 2 +- .../LocalAttestationCode.edl | 2 +- .../LocalAttestationCode/datatypes.h | 2 +- .../LocalAttestationCode/error_codes.h | 2 +- SampleCode/LocalAttestation/Makefile | 27 +- .../UntrustedEnclaveMessageExchange.cpp | 2 +- .../UntrustedEnclaveMessageExchange.h | 2 +- SampleCode/PowerTransition/App/App.cpp | 2 +- .../PowerTransition/App/ErrorSupport.cpp | 2 +- SampleCode/PowerTransition/App/ErrorSupport.h | 2 +- SampleCode/PowerTransition/App/rwlock.cpp | 2 +- SampleCode/PowerTransition/App/rwlock.h | 2 +- SampleCode/PowerTransition/Common/types.h | 2 +- .../Enclave/Enclave.config.xml | 23 +- .../PowerTransition/Enclave/Enclave.cpp | 2 +- .../PowerTransition/Enclave/Enclave.edl | 2 +- .../PowerTransition/Enclave/Enclave.lds | 1 + SampleCode/PowerTransition/Makefile | 12 +- SampleCode/RemoteAttestation/Makefile | 13 +- .../RemoteAttestation/isv_app/isv_app.cpp | 2 +- .../isv_app/sample_messages.h | 2 +- .../isv_enclave/isv_enclave.config.xml | 23 +- .../isv_enclave/isv_enclave.cpp | 2 +- .../isv_enclave/isv_enclave.edl | 2 +- .../isv_enclave/isv_enclave.lds | 1 + .../service_provider/ecp.cpp | 2 +- .../RemoteAttestation/service_provider/ecp.h | 2 +- .../service_provider/ias_ra.cpp | 2 +- .../service_provider/ias_ra.h | 2 +- .../service_provider/network_ra.cpp | 2 +- .../service_provider/network_ra.h | 2 +- .../remote_attestation_result.h | 2 +- .../service_provider/service_provider.cpp | 2 +- .../service_provider/service_provider.h | 2 +- SampleCode/SampleEnclave/App/App.cpp | 2 +- SampleCode/SampleEnclave/App/App.h | 2 +- .../App/Edger8rSyntax/Arrays.cpp | 2 +- .../App/Edger8rSyntax/Functions.cpp | 2 +- .../App/Edger8rSyntax/Pointers.cpp | 2 +- .../SampleEnclave/App/Edger8rSyntax/Types.cpp | 2 +- .../SampleEnclave/App/TrustedLibrary/Libc.cpp | 2 +- .../App/TrustedLibrary/Libcxx.cpp | 2 +- .../App/TrustedLibrary/Thread.cpp | 2 +- .../Enclave/Edger8rSyntax/Arrays.cpp | 2 +- .../Enclave/Edger8rSyntax/Arrays.edl | 2 +- .../Enclave/Edger8rSyntax/Functions.cpp | 2 +- .../Enclave/Edger8rSyntax/Functions.edl | 2 +- .../Enclave/Edger8rSyntax/Pointers.cpp | 2 +- .../Enclave/Edger8rSyntax/Pointers.edl | 2 +- .../Enclave/Edger8rSyntax/Types.cpp | 2 +- .../Enclave/Edger8rSyntax/Types.edl | 2 +- .../SampleEnclave/Enclave/Enclave.config.xml | 1 + SampleCode/SampleEnclave/Enclave/Enclave.cpp | 2 +- SampleCode/SampleEnclave/Enclave/Enclave.edl | 2 +- SampleCode/SampleEnclave/Enclave/Enclave.h | 2 +- SampleCode/SampleEnclave/Enclave/Enclave.lds | 1 + .../Enclave/TrustedLibrary/Libc.cpp | 2 +- .../Enclave/TrustedLibrary/Libc.edl | 2 +- .../Enclave/TrustedLibrary/Libcxx.cpp | 2 +- .../Enclave/TrustedLibrary/Libcxx.edl | 2 +- .../Enclave/TrustedLibrary/Thread.cpp | 2 +- .../Enclave/TrustedLibrary/Thread.edl | 2 +- SampleCode/SampleEnclave/Include/user_types.h | 2 +- SampleCode/SampleEnclave/Makefile | 11 +- SampleCode/SealedData/.cproject | 219 + SampleCode/SealedData/.project | 28 + SampleCode/SealedData/DRM_app/DRM_app.cpp | 307 + .../SealedData/DRM_app/ReplayProtectedDRM.cpp | 188 + .../SealedData/DRM_app/ReplayProtectedDRM.h | 67 + .../SealedData/DRM_app/TimeBasedDRM.cpp | 129 + SampleCode/SealedData/DRM_app/TimeBasedDRM.h | 59 + .../DRM_enclave/DRM_enclave.config.xml | 11 + .../SealedData/DRM_enclave/DRM_enclave.cpp | 598 + .../SealedData/DRM_enclave/DRM_enclave.edl | 49 + .../SealedData/DRM_enclave/DRM_enclave.lds | 9 + .../DRM_enclave/DRM_enclave_private.pem | 39 + SampleCode/SealedData/Makefile | 242 + SampleCode/SealedData/README.txt | 29 + .../SealedData/include/sealed_data_defines.h | 57 + buildenv.mk | 3 +- common/inc/internal/ae_ipp.h | 2 +- common/inc/internal/arch.h | 9 +- common/inc/internal/cpprt_internal.h | 2 +- common/inc/internal/cpputil.h | 2 +- common/inc/internal/cpuid.h | 2 +- common/inc/internal/dh.h | 2 +- common/inc/internal/driver_api.h | 2 +- common/inc/internal/ecp_interface.h | 2 +- common/inc/internal/elf_util.h | 2 +- common/inc/internal/enclave_creator.h | 2 +- common/inc/internal/global_data.h | 2 +- common/inc/internal/global_init.h | 2 +- common/inc/internal/inst.h | 2 +- common/inc/internal/ipp_wrapper.h | 2 +- common/inc/internal/linux/cpuid_gnu.h | 2 +- common/inc/internal/linux/linux-regs.h | 2 +- common/inc/internal/linux/xsave_gnu.h | 2 +- common/inc/internal/metadata.h | 2 +- common/inc/internal/oal/uae_oal_api.h | 2 +- common/inc/internal/routine.h | 2 +- common/inc/internal/rts.h | 2 +- common/inc/internal/rts_cmd.h | 2 +- common/inc/internal/se_atomic.h | 32 +- common/inc/internal/se_cdefs.h | 2 +- common/inc/internal/se_cpu_feature.h | 2 +- common/inc/internal/se_cpu_feature_defs.h | 2 +- common/inc/internal/se_debugger_lib.h | 2 +- common/inc/internal/se_enclave_type.h | 2 +- common/inc/internal/se_error_internal.h | 2 +- common/inc/internal/se_event.h | 2 +- common/inc/internal/se_lock.hpp | 2 +- common/inc/internal/se_macro.h | 2 +- common/inc/internal/se_map.h | 2 +- common/inc/internal/se_memcpy.h | 2 +- common/inc/internal/se_memory.h | 2 +- common/inc/internal/se_page_attr.h | 2 +- common/inc/internal/se_quote_internal.h | 2 +- common/inc/internal/se_rwlock.h | 2 +- common/inc/internal/se_stdio.h | 2 +- common/inc/internal/se_string.h | 2 +- common/inc/internal/se_thread.h | 2 +- common/inc/internal/se_time.h | 2 +- common/inc/internal/se_trace.h | 2 +- common/inc/internal/se_types.h | 2 +- common/inc/internal/se_vendor.h | 2 +- common/inc/internal/se_version.h | 4 +- common/inc/internal/se_wrapper.h | 2 +- common/inc/internal/sgx_memset_s.h | 2 +- common/inc/internal/sgx_profile.h | 2 +- common/inc/internal/sgx_read_rand.h | 2 +- common/inc/internal/sgx_sha256_128.h | 2 +- common/inc/internal/sgx_tcrypto_internal.h | 7 +- common/inc/internal/tae_service_internal.h | 2 +- common/inc/internal/thread_data.h | 2 +- common/inc/internal/trts_inst.h | 2 +- common/inc/internal/uae_service_internal.h | 2 +- common/inc/internal/uncopyable.h | 2 +- common/inc/internal/util.h | 2 +- common/inc/internal/xsave.h | 2 +- common/inc/sgx.h | 2 +- common/inc/sgx_attributes.h | 6 +- common/inc/sgx_cpuid.h | 2 +- common/inc/sgx_defs.h | 2 +- common/inc/sgx_dh.h | 2 +- common/inc/sgx_ecp_types.h | 2 +- common/inc/sgx_edger8r.h | 2 +- common/inc/sgx_eid.h | 2 +- common/inc/sgx_error.h | 14 +- common/inc/sgx_intrin.h | 2 +- common/inc/sgx_key.h | 4 +- common/inc/sgx_key_exchange.h | 2 +- common/inc/sgx_quote.h | 2 +- common/inc/sgx_report.h | 2 +- common/inc/sgx_spinlock.h | 2 +- common/inc/sgx_tae_service.edl | 2 +- common/inc/sgx_tae_service.h | 13 +- common/inc/sgx_tcrypto.h | 21 +- common/inc/sgx_thread.h | 2 +- common/inc/sgx_tkey_exchange.edl | 2 +- common/inc/sgx_tkey_exchange.h | 2 +- common/inc/sgx_trts.h | 2 +- common/inc/sgx_trts_exception.h | 2 +- common/inc/sgx_tseal.h | 2 +- common/inc/sgx_tstdc.edl | 2 +- common/inc/sgx_uae_service.h | 2 +- common/inc/sgx_ukey_exchange.h | 2 +- common/inc/sgx_urts.h | 2 +- common/inc/sgx_utils.h | 2 +- common/inc/stdc++/exception | 2 +- common/inc/stdc++/new | 2 +- common/inc/stdc++/typeinfo | 2 +- common/se_wrapper/Makefile | 2 +- common/src/dh.cpp | 2 +- common/src/ecp.cpp | 2 +- common/src/ipp_bn.cpp | 2 +- common/src/ipp_rsa_key.cpp | 2 +- common/src/ipp_rsa_pub_key.cpp | 2 +- common/src/se_event.c | 2 +- common/src/se_map.c | 2 +- common/src/se_memory.c | 2 +- common/src/se_rwlock.c | 2 +- common/src/se_thread.c | 2 +- common/src/se_time.c | 2 +- common/src/se_trace.c | 2 +- common/src/sgx_profile.cpp | 2 +- common/src/sgx_read_rand.cpp | 2 +- common/src/sgx_sha256_128.cpp | 2 +- download_prebuilt.sh | 15 +- external/DALSdk/JHI/linux/jhi.h | 521 + external/DALSdk/JHI/linux/typedefs.h | 101 + external/crypto_px/Makefile | 6 +- external/epid-sdk-3.0.0/CHANGELOG.md | 87 + external/epid-sdk-3.0.0/LICENSE.txt | 249 + external/epid-sdk-3.0.0/Makefile.in | 130 + external/epid-sdk-3.0.0/NOTICE.txt | 22 + external/epid-sdk-3.0.0/README.md | 57 + external/epid-sdk-3.0.0/SConstruct | 237 + external/epid-sdk-3.0.0/configure | 3799 + external/epid-sdk-3.0.0/configure.ac | 20 + .../doc/html/1_81_2file__parser_8h.html | 104 + .../doc/html/1_81_2types_8h.html | 151 + .../epid-sdk-3.0.0/doc/html/Basenames.html | 93 + .../doc/html/BuildToolsInstallation.html | 128 + .../epid-sdk-3.0.0/doc/html/BuildingSdk.html | 179 + .../epid-sdk-3.0.0/doc/html/ChangeLog.html | 134 + .../epid-sdk-3.0.0/doc/html/ChoosingiKGF.html | 231 + .../epid-sdk-3.0.0/doc/html/EpidOverview.html | 173 + .../epid-sdk-3.0.0/doc/html/Examples.html | 85 + external/epid-sdk-3.0.0/doc/html/Examples.js | 5 + .../epid-sdk-3.0.0/doc/html/Glossary.html | 174 + .../doc/html/ImplementationNotes.html | 110 + .../doc/html/IssuerMaterial.html | 293 + .../doc/html/LegalInformation.html | 84 + .../epid-sdk-3.0.0/doc/html/Revocation.html | 142 + .../epid-sdk-3.0.0/doc/html/SdkOverview.html | 203 + .../doc/html/SignVerifyTutorial.html | 239 + .../doc/html/SignmsgWalkthru.html | 170 + .../doc/html/VerifysigWalkthru.html | 190 + .../epid-sdk-3.0.0/doc/html/annotated.html | 136 + .../epid-sdk-3.0.0/doc/html/arrowdown.png | Bin 0 -> 246 bytes .../epid-sdk-3.0.0/doc/html/arrowright.png | Bin 0 -> 229 bytes .../doc/html/basenames_8dox.html | 82 + external/epid-sdk-3.0.0/doc/html/basicdoc.png | Bin 0 -> 19922 bytes external/epid-sdk-3.0.0/doc/html/bc_s.png | Bin 0 -> 676 bytes external/epid-sdk-3.0.0/doc/html/bdwn.png | Bin 0 -> 147 bytes .../epid-sdk-3.0.0/doc/html/bignum_8h.html | 137 + .../doc/html/bitsupplier_8h.html | 92 + .../html/build__tools__installation_8dox.html | 82 + .../doc/html/building__sdk_8dox.html | 82 + .../doc/html/choosing__ikgf_8dox.html | 82 + external/epid-sdk-3.0.0/doc/html/classes.html | 113 + external/epid-sdk-3.0.0/doc/html/closed.png | Bin 0 -> 132 bytes .../dir_02c945662023679b89476bd7126bc985.html | 93 + .../dir_12b90d9c027aaf878a834df729679a56.html | 96 + .../dir_512d3e62841a8535b716ec4cf8b9e950.html | 90 + .../dir_a32be19bc88f3d7aac6b7249da379f26.html | 87 + .../dir_ef364879bae02db2684040178ed9b186.html | 84 + .../dir_f169ebf8da29290a918fa4b3f7151050.html | 111 + .../dir_f6bef457d5f671b6e774bfccc16651f6.html | 108 + external/epid-sdk-3.0.0/doc/html/doc.png | Bin 0 -> 746 bytes external/epid-sdk-3.0.0/doc/html/doxygen.css | 1475 + external/epid-sdk-3.0.0/doc/html/doxygen.png | Bin 0 -> 3779 bytes .../epid-sdk-3.0.0/doc/html/dynsections.js | 97 + .../epid-sdk-3.0.0/doc/html/ecdsa_8h.html | 98 + .../epid-sdk-3.0.0/doc/html/ecgroup_8h.html | 165 + .../doc/html/epid__overview_8dox.html | 82 + .../epid_diagram_high_level_interaction.png | Bin 0 -> 25513 bytes .../html/epid_diagram_high_level_use_case.png | Bin 0 -> 16041 bytes .../html/epid_diagram_issuer_high_level.png | Bin 0 -> 4857 bytes .../html/epid_diagram_member_high_level.png | Bin 0 -> 8319 bytes .../html/epid_diagram_verifier_high_level.png | Bin 0 -> 8897 bytes .../epid-sdk-3.0.0/doc/html/epidstyle.css | 325 + .../epid-sdk-3.0.0/doc/html/errors_8h.html | 124 + .../doc/html/examples_8dox.html | 82 + .../doc/html/file__parser_8h.html | 154 + external/epid-sdk-3.0.0/doc/html/files.html | 105 + .../doc/html/finitefield_8h.html | 174 + .../epid-sdk-3.0.0/doc/html/folderclosed.png | Bin 0 -> 616 bytes .../epid-sdk-3.0.0/doc/html/folderopen.png | Bin 0 -> 597 bytes .../epid-sdk-3.0.0/doc/html/functions.html | 510 + .../doc/html/functions_vars.html | 510 + external/epid-sdk-3.0.0/doc/html/globals.html | 79 + .../epid-sdk-3.0.0/doc/html/globals_b.html | 109 + .../epid-sdk-3.0.0/doc/html/globals_d.html | 97 + .../epid-sdk-3.0.0/doc/html/globals_defs.html | 83 + .../epid-sdk-3.0.0/doc/html/globals_e.html | 319 + .../epid-sdk-3.0.0/doc/html/globals_enum.html | 89 + .../epid-sdk-3.0.0/doc/html/globals_eval.html | 205 + .../epid-sdk-3.0.0/doc/html/globals_f.html | 127 + .../epid-sdk-3.0.0/doc/html/globals_func.html | 502 + .../epid-sdk-3.0.0/doc/html/globals_g.html | 79 + .../epid-sdk-3.0.0/doc/html/globals_h.html | 79 + .../epid-sdk-3.0.0/doc/html/globals_i.html | 82 + .../epid-sdk-3.0.0/doc/html/globals_k.html | 211 + .../epid-sdk-3.0.0/doc/html/globals_m.html | 79 + .../epid-sdk-3.0.0/doc/html/globals_n.html | 103 + .../epid-sdk-3.0.0/doc/html/globals_p.html | 121 + .../epid-sdk-3.0.0/doc/html/globals_r.html | 88 + .../epid-sdk-3.0.0/doc/html/globals_s.html | 82 + .../epid-sdk-3.0.0/doc/html/globals_t.html | 79 + .../epid-sdk-3.0.0/doc/html/globals_type.html | 131 + .../epid-sdk-3.0.0/doc/html/globals_v.html | 79 + .../epid-sdk-3.0.0/doc/html/globals_vars.html | 80 + .../epid-sdk-3.0.0/doc/html/globals_w.html | 85 + .../doc/html/glossary_8dox.html | 82 + .../doc/html/group___big_num_primitives.html | 616 + .../doc/html/group___big_num_primitives.js | 16 + .../doc/html/group___ec_group_primitives.html | 1198 + .../doc/html/group___ec_group_primitives.js | 25 + .../doc/html/group___ecdsa_primitives.html | 229 + .../doc/html/group___ecdsa_primitives.js | 5 + .../group___epid11_file_parser_module.html | 362 + .../html/group___epid11_file_parser_module.js | 7 + .../group___epid11_pairing_primitives.html | 245 + .../html/group___epid11_pairing_primitives.js | 7 + .../doc/html/group___epid11_types.html | 150 + .../doc/html/group___epid11_types.js | 97 + .../html/group___epid11_verifier_module.html | 780 + .../html/group___epid11_verifier_module.js | 22 + .../doc/html/group___epid_common.html | 135 + .../doc/html/group___epid_common.js | 9 + .../doc/html/group___epid_math.html | 106 + .../doc/html/group___epid_math.js | 9 + .../doc/html/group___epid_member_module.html | 933 + .../doc/html/group___epid_member_module.js | 38 + .../doc/html/group___epid_module.html | 97 + .../doc/html/group___epid_module.js | 6 + .../doc/html/group___epid_print.html | 664 + .../doc/html/group___epid_print.js | 20 + .../doc/html/group___epid_types.html | 277 + .../doc/html/group___epid_types.js | 171 + .../html/group___epid_verifier_module.html | 1019 + .../doc/html/group___epid_verifier_module.js | 29 + .../doc/html/group___error_codes.html | 232 + .../doc/html/group___error_codes.js | 26 + .../doc/html/group___file_parser.html | 534 + .../doc/html/group___file_parser.js | 42 + .../html/group___finite_field_primitives.html | 1328 + .../html/group___finite_field_primitives.js | 28 + .../doc/html/group___hash_primitives.html | 142 + .../doc/html/group___hash_primitives.js | 7 + .../doc/html/group___pairing_primitives.html | 256 + .../doc/html/group___pairing_primitives.js | 8 + external/epid-sdk-3.0.0/doc/html/hash_8h.html | 102 + .../doc/html/implementation__notes_8dox.html | 82 + external/epid-sdk-3.0.0/doc/html/index.html | 78 + .../doc/html/issuer__material_8dox.html | 82 + external/epid-sdk-3.0.0/doc/html/jquery.js | 68 + .../doc/html/legal__information_8dox.html | 82 + .../doc/html/mainpage_8dox.html | 82 + .../doc/html/member_2api_8h.html | 156 + external/epid-sdk-3.0.0/doc/html/modules.html | 99 + external/epid-sdk-3.0.0/doc/html/modules.js | 4 + external/epid-sdk-3.0.0/doc/html/nav_f.png | Bin 0 -> 153 bytes external/epid-sdk-3.0.0/doc/html/nav_g.png | Bin 0 -> 95 bytes external/epid-sdk-3.0.0/doc/html/nav_h.png | Bin 0 -> 98 bytes external/epid-sdk-3.0.0/doc/html/navtree.css | 143 + external/epid-sdk-3.0.0/doc/html/navtree.js | 523 + .../epid-sdk-3.0.0/doc/html/navtreedata.js | 137 + .../epid-sdk-3.0.0/doc/html/navtreeindex0.js | 253 + .../epid-sdk-3.0.0/doc/html/navtreeindex1.js | 253 + .../epid-sdk-3.0.0/doc/html/navtreeindex2.js | 61 + external/epid-sdk-3.0.0/doc/html/open.png | Bin 0 -> 123 bytes .../doc/html/organization_8dox.html | 82 + .../doc/html/pageorder_8dox.html | 84 + external/epid-sdk-3.0.0/doc/html/pages.html | 96 + .../epid-sdk-3.0.0/doc/html/pairing_8h.html | 109 + .../doc/html/printutils_8h.html | 138 + external/epid-sdk-3.0.0/doc/html/resize.js | 97 + .../doc/html/revocation_8dox.html | 82 + .../doc/html/sdk__overview_8dox.html | 82 + .../doc/html/sdk_block_diagram.png | Bin 0 -> 12425 bytes .../doc/html/sign__verify__tutorial_8dox.html | 82 + .../doc/html/signmsg__walkthrough_8dox.html | 82 + external/epid-sdk-3.0.0/doc/html/splitbar.png | Bin 0 -> 314 bytes .../epid-sdk-3.0.0/doc/html/stdtypes_8h.html | 109 + .../doc/html/struct_basic_signature.html | 126 + .../doc/html/struct_big_num_str.html | 97 + .../doc/html/struct_compressed_priv_key.html | 106 + .../doc/html/struct_ecdsa_private_key.html | 97 + .../doc/html/struct_ecdsa_public_key.html | 101 + .../doc/html/struct_ecdsa_signature.html | 101 + .../html/struct_epid11_basic_signature.html | 146 + .../doc/html/struct_epid11_g2_elem_str.html | 101 + .../doc/html/struct_epid11_group_pub_key.html | 110 + .../doc/html/struct_epid11_group_rl.html | 106 + .../doc/html/struct_epid11_gt_elem_str.html | 97 + .../doc/html/struct_epid11_nr_proof.html | 110 + .../doc/html/struct_epid11_params.html | 170 + .../doc/html/struct_epid11_priv_rl.html | 110 + .../doc/html/struct_epid11_sig_rl.html | 110 + .../doc/html/struct_epid11_sig_rl_entry.html | 101 + .../doc/html/struct_epid11_signature.html | 110 + .../html/struct_epid11_verifier_precomp.html | 113 + .../doc/html/struct_epid2_params.html | 130 + .../doc/html/struct_epid_ca_certificate.html | 129 + .../doc/html/struct_epid_file_header.html | 101 + .../doc/html/struct_epid_signature.html | 110 + .../doc/html/struct_fp_elem_str.html | 97 + .../doc/html/struct_fq12_elem_str.html | 97 + .../doc/html/struct_fq2_elem_str.html | 97 + .../doc/html/struct_fq3_elem_str.html | 97 + .../doc/html/struct_fq6_elem_str.html | 97 + .../doc/html/struct_fq_elem_str.html | 97 + .../doc/html/struct_g1_elem_str.html | 101 + .../doc/html/struct_g2_elem_str.html | 101 + .../doc/html/struct_group_pub_key.html | 110 + .../doc/html/struct_group_rl.html | 106 + .../doc/html/struct_gt_elem_str.html | 97 + .../doc/html/struct_i_priv_key.html | 102 + .../doc/html/struct_join_request.html | 106 + .../doc/html/struct_member_precomp.html | 111 + .../html/struct_membership_credential.html | 106 + .../doc/html/struct_nr_proof.html | 110 + .../doc/html/struct_oct_str128.html | 97 + .../doc/html/struct_oct_str16.html | 97 + .../doc/html/struct_oct_str256.html | 97 + .../doc/html/struct_oct_str32.html | 97 + .../doc/html/struct_oct_str512.html | 97 + .../doc/html/struct_oct_str600.html | 97 + .../doc/html/struct_oct_str64.html | 97 + .../doc/html/struct_oct_str768.html | 97 + .../doc/html/struct_oct_str8.html | 97 + .../doc/html/struct_oct_str80.html | 97 + .../html/struct_pre_computed_signature.html | 138 + .../doc/html/struct_priv_key.html | 110 + .../doc/html/struct_priv_rl.html | 110 + .../doc/html/struct_sha256_digest.html | 97 + .../doc/html/struct_sig_rl.html | 110 + .../doc/html/struct_sig_rl_entry.html | 101 + .../doc/html/struct_verifier_precomp.html | 115 + .../doc/html/struct_verifier_rl.html | 110 + external/epid-sdk-3.0.0/doc/html/sync_off.png | Bin 0 -> 853 bytes external/epid-sdk-3.0.0/doc/html/sync_on.png | Bin 0 -> 845 bytes external/epid-sdk-3.0.0/doc/html/tab_a.png | Bin 0 -> 142 bytes external/epid-sdk-3.0.0/doc/html/tab_b.png | Bin 0 -> 169 bytes external/epid-sdk-3.0.0/doc/html/tab_h.png | Bin 0 -> 177 bytes external/epid-sdk-3.0.0/doc/html/tab_s.png | Bin 0 -> 184 bytes external/epid-sdk-3.0.0/doc/html/tabs.css | 60 + .../doc/html/tatepairing_8h.html | 109 + .../epid-sdk-3.0.0/doc/html/types_8h.html | 228 + .../doc/html/verifier_21_81_2api_8h.html | 144 + .../doc/html/verifier_2api_8h.html | 158 + .../doc/html/verifysig__walkthrough_8dox.html | 82 + external/epid-sdk-3.0.0/doc/index.html | 15 + .../1.1/epid_params-testhelper.cc | 216 + .../1.1/epid_params-testhelper.h | 78 + .../1.1/testdata/grp_x/epid_grpcrt.inc | 52 + .../grp_x/member0/sig_sha256_bsn0_msg0.inc | 79 + .../sig_sha256_bsn0_msg0_single_entry.inc | 97 + .../sig_sha256_bsn0_msg0_three_entry.inc | 127 + .../grp_x/member0/sig_sha256_bsn0_msg1.inc | 79 + .../grp_x/member0/sig_sha256_bsn1_msg0.inc | 79 + .../grp_x/member0/sig_sha256_rndbase_msg0.inc | 79 + .../grp_x/member0/sig_sha256_rndbase_msg1.inc | 79 + .../grp_x/member1/sig_sha256_bsn0_msg0.inc | 79 + .../sig_sha256_bsn0_msg0_revkey000.inc | 79 + .../sig_sha256_bsn0_msg0_revkey001.inc | 79 + .../sig_sha256_bsn0_msg0_revkey002.inc | 79 + .../1.1/testdata/grp_x/privrl.inc | 43 + .../testdata/grp_x/privrl_single_entry.inc | 35 + .../testdata/grp_x/sig_sha256_bsnrnd_msg0.inc | 78 + ...ber0_sig_bsn0_msg0_revoked_first_entry.inc | 68 + ...mber0_sig_bsn0_msg0_revoked_last_entry.inc | 68 + ...er0_sig_bsn0_msg0_revoked_middle_entry.inc | 68 + ...er0_sig_bsn0_msg0_revoked_single_entry.inc | 44 + .../grprl_revoked_grp_x_first_entry.inc | 38 + .../grprl_revoked_grp_x_last_entry.inc | 38 + .../grprl_revoked_grp_x_middle_entry.inc | 38 + .../grprl_revoked_grp_x_single_entry.inc | 32 + .../1.1/verifier_wrapper-testhelper.cc | 54 + .../1.1/verifier_wrapper-testhelper.h | 56 + .../epid/common-testhelper/Makefile | 63 + .../bignum_wrapper-testhelper.cc | 123 + .../bignum_wrapper-testhelper.h | 69 + .../common-testhelper/common-testhelper.parts | 91 + .../ecgroup_wrapper-testhelper.cc | 126 + .../ecgroup_wrapper-testhelper.h | 68 + .../ecpoint_wrapper-testhelper.cc | 128 + .../ecpoint_wrapper-testhelper.h | 78 + .../epid_params-testhelper.cc | 164 + .../epid_params-testhelper.h | 72 + .../common-testhelper/errors-testhelper.h | 41 + .../ffelement_wrapper-testhelper.cc | 146 + .../ffelement_wrapper-testhelper.h | 84 + .../finite_field_wrapper-testhelper.cc | 177 + .../finite_field_wrapper-testhelper.h | 71 + .../common-testhelper/octstr-testhelper.cc | 126 + .../common-testhelper/octstr-testhelper.h | 47 + .../epid/common-testhelper/prng-testhelper.h | 90 + .../testdata/grp01/gpubkey.inc | 53 + .../grp01/member0/sig_test0_sha256_sigrl.inc | 1222 + .../grp01/member0/sig_test0_sha384_sigrl.inc | 1222 + .../grp01/member0/sig_test0_sha512_sigrl.inc | 1222 + .../testdata/grp01/member0/sig_test1.inc | 74 + .../member0/sig_test1_basename1_sha256.inc | 85 + .../grp01/member0/sig_test1_sha256.inc | 85 + .../grp01/member0/sig_test1_sha384.inc | 85 + .../grp01/member0/sig_test1_sha512.inc | 85 + .../testdata/grp01/privrl.inc | 277 + .../testdata/grp01/sigrl.inc | 878 + .../testdata/grp01/verrl.inc | 151 + .../testdata/grp_x/cmember9/cmpprivkey.inc | 36 + .../testdata/grp_x/cmember9/mprivkey.inc | 44 + .../testdata/grp_x/iprivkey.inc | 31 + .../testdata/grp_x/member0/mprivkey.inc | 44 + .../grp_x/member0/sig_sha256_bsn0_msg0.inc | 135 + .../sig_sha256_bsn0_msg0_rl_singleentry.inc | 95 + .../grp_x/member0/sig_sha256_bsn0_msg1.inc | 135 + .../grp_x/member0/sig_sha256_bsn1_msg0.inc | 135 + .../grp_x/member0/sig_sha256_rndbase_msg0.inc | 135 + .../grp_x/member0/sig_sha256_rndbase_msg1.inc | 135 + .../grp_x/member0/sig_sha384_bsn0_msg0.inc | 135 + .../grp_x/member0/sig_sha384_rndbase_msg0.inc | 135 + .../grp_x/member0/sig_sha512_bsn0_msg0.inc | 135 + .../grp_x/member0/sig_sha512_rndbase_msg0.inc | 135 + .../testdata/grp_x/member1/mprivkey.inc | 44 + .../grp_x/member1/sig_sha256_bsn0_msg0.inc | 136 + .../grp_x/privrevoked/mprivatekey000.inc | 45 + .../grp_x/privrevoked/mprivatekey001.inc | 45 + .../grp_x/privrevoked/mprivatekey002.inc | 45 + .../sig_sha256_bsn0_msg0_revkey000.inc | 135 + .../sig_sha256_bsn0_msg0_revkey001.inc | 135 + .../sig_sha256_bsn0_msg0_revkey002.inc | 135 + .../testdata/grp_x/privrl.inc | 40 + .../privrl_single_entry_revoked_key000.inc | 33 + .../testdata/grp_x/pubkey.inc | 59 + .../grp_x/sigrevoked/mprivatekey000.inc | 45 + .../grp_x/sigrevoked/mprivatekey001.inc | 45 + .../grp_x/sigrevoked/mprivatekey002.inc | 45 + .../testdata/grp_x/sigrl.inc | 76 + ...g_sha256_bsn0_msg0_revoked_first_entry.inc | 77 + ...ig_sha256_bsn0_msg0_revoked_last_entry.inc | 77 + ..._sha256_bsn0_msg0_revoked_middle_entry.inc | 77 + .../testdata/grp_x/sigrl_single_entry.inc | 45 + .../testdata/grp_x/sigrl_ver_2.inc | 76 + .../grp_x/verrevoked/bsn0/mprivkey000.inc | 45 + .../grp_x/verrevoked/bsn0/mprivkey001.inc | 45 + .../grp_x/verrevoked/bsn0/mprivkey002.inc | 45 + .../bsn0/sig_revoked0sha256bsn0msg0.inc | 136 + .../bsn0/sig_revoked0sha384bsn0msg0.inc | 60 + .../bsn0/sig_revoked0sha512bsn0msg0.inc | 60 + .../bsn0/sig_revoked1sha256bsn0msg0.inc | 135 + .../bsn0/sig_revoked1sha384bsn0msg0.inc | 60 + .../bsn0/sig_revoked1sha512bsn0msg0.inc | 60 + .../bsn0/sig_revoked2sha256bsn0msg0.inc | 135 + .../bsn0/sig_revoked2sha384bsn0msg0.inc | 60 + .../bsn0/sig_revoked2sha512bsn0msg0.inc | 60 + .../testdata/grp_x/verrevoked/bsn0/verrl.inc | 69 + .../grp_x/verrevoked/bsn0/verrl_1entry.inc | 51 + .../grp_x/verrevoked/bsn0/verrl_sha384.inc | 69 + .../grp_x/verrevoked/bsn0/verrl_sha512.inc | 69 + .../grp_x/verrevoked/bsn1/mprivkey003.inc | 45 + .../grp_x/verrevoked/bsn1/mprivkey004.inc | 45 + .../grp_x/verrevoked/bsn1/mprivkey005.inc | 45 + .../bsn1/sig_revoked3sha256bsn1msg0.inc | 135 + .../testdata/grp_x/verrevoked/bsn1/verrl.inc | 70 + .../verrevoked/bsn1/verrl_012revoked.inc | 69 + .../testdata/grp_y/cmember9/cmpprivkey.dat | Bin 0 -> 80 bytes .../testdata/grp_y/cmember9/cmpprivkey.inc | 36 + .../testdata/grp_y/iprivkey.inc | 32 + .../testdata/grp_y/pubkey.inc | 59 + .../epid/common-testhelper/testdata/grprl.inc | 26 + .../grprl_revoked_grp_x_first_entry.inc | 31 + .../grprl_revoked_grp_x_last_entry.inc | 31 + .../grprl_revoked_grp_x_middle_entry.inc | 31 + .../grprl_single_entry_revoked_grp_x.inc | 27 + .../testdata/ikgf/groupa/member0/mprecomp.inc | 106 + .../testdata/ikgf/groupa/member0/mprivkey.inc | 36 + .../testdata/ikgf/groupa/privrl.inc | 38 + .../testdata/ikgf/groupa/privrl_empty.inc | 27 + .../testdata/ikgf/groupa/pubkey.inc | 46 + .../ikgf/groupa/sig_msg0_sha256_sigrl.inc | 98 + .../ikgf/groupa/sig_sha256_bsn0_msg0.inc | 58 + .../sig_sha256_bsn0_msg0_empty_sigrl.inc | 58 + .../groupa/sig_sha256_bsn0_msg0_nosigrl.inc | 58 + .../groupa/sig_sha256_bsn0_msg0_revkey.inc | 61 + .../ikgf/groupa/sig_sha256_rndbase_msg0.inc | 98 + .../sig_sigrevoked_sha256_bsn0_msg0.inc | 98 + .../groupa/sig_test1_basename1_sha256.inc | 59 + .../groupa/sigrevokedmember0/mprivkey.inc | 36 + .../testdata/ikgf/groupa/sigrl.inc | 57 + .../testdata/ikgf/groupa/sigrl_empty.inc | 30 + .../testdata/ikgf/groupb/member0/mprivkey.inc | 36 + .../sig_grouprevoked_sha256_bsn0_msg0.inc | 98 + .../common-testhelper/testdata/ikgf/grprl.inc | 124 + .../unittests/bignum_wrapper-test.cc | 173 + .../unittests/ecgroup_wrapper-test.cc | 153 + .../unittests/ecpoint_wrapper-test.cc | 133 + .../unittests/ffelement_wrapper-test.cc | 155 + .../unittests/finite_field_wrapper-test.cc | 134 + .../common-testhelper/unittests/main-test.cc | 26 + .../verifier_wrapper-testhelper.cc | 53 + .../verifier_wrapper-testhelper.h | 55 + .../epid/common/1.1/file_parser.h | 219 + .../epid/common/1.1/src/commitment.c | 135 + .../epid/common/1.1/src/commitment.h | 137 + .../epid/common/1.1/src/epid11params.c | 469 + .../epid/common/1.1/src/epid11params.h | 75 + .../epid/common/1.1/src/epid11params_tate.inc | 160 + .../epid/common/1.1/src/file_parser.c | 187 + .../epid/common/1.1/src/grouppubkey.c | 82 + .../epid/common/1.1/src/grouppubkey.h | 69 + .../epid-sdk-3.0.0/epid/common/1.1/types.h | 208 + .../common/1.1/unittests/file_parser-test.cc | 1426 + external/epid-sdk-3.0.0/epid/common/Makefile | 80 + .../epid-sdk-3.0.0/epid/common/bitsupplier.h | 46 + .../epid-sdk-3.0.0/epid/common/common.parts | 118 + external/epid-sdk-3.0.0/epid/common/errors.h | 73 + .../epid-sdk-3.0.0/epid/common/file_parser.h | 274 + .../epid-sdk-3.0.0/epid/common/math/bignum.h | 207 + .../epid-sdk-3.0.0/epid/common/math/ecdsa.h | 114 + .../epid-sdk-3.0.0/epid/common/math/ecgroup.h | 482 + .../epid/common/math/finitefield.h | 508 + .../epid-sdk-3.0.0/epid/common/math/hash.h | 63 + .../epid-sdk-3.0.0/epid/common/math/pairing.h | 102 + .../epid/common/math/printutils.h | 288 + .../epid/common/math/src/bignum-internal.h | 83 + .../epid/common/math/src/bignum.c | 435 + .../epid/common/math/src/ecdsa_sign.c | 205 + .../epid/common/math/src/ecdsa_verify.c | 351 + .../epid/common/math/src/ecgroup-internal.h | 44 + .../epid/common/math/src/ecgroup.c | 1274 + .../common/math/src/finitefield-internal.h | 48 + .../epid/common/math/src/finitefield.c | 1583 + .../epid/common/math/src/pairing-internal.h | 39 + .../epid/common/math/src/pairing.c | 2373 + .../epid/common/math/src/printutils.c | 604 + .../epid/common/math/src/sha256.c | 43 + .../common/math/src/tatepairing-internal.h | 41 + .../epid/common/math/src/tatepairing.c | 936 + .../epid/common/math/tatepairing.h | 120 + .../epid/common/math/unittests/bignum-test.cc | 533 + .../common/math/unittests/ecdsa_sign-test.cc | 228 + .../math/unittests/ecdsa_verify-test.cc | 278 + .../common/math/unittests/ecgroup-test.cc | 2130 + .../common/math/unittests/ffelement-test.cc | 2989 + .../common/math/unittests/finitefield-test.cc | 251 + .../epid/common/math/unittests/hash-test.cc | 87 + .../epid/common/math/unittests/main-test.cc | 26 + .../math/unittests/octstrconvert-test.cc | 75 + .../common/math/unittests/pairing-test.cc | 225 + .../common/math/unittests/printutils-test.cc | 379 + .../common/math/unittests/tatepairing-test.cc | 231 + .../epid/common/src/commitment.c | 122 + .../epid/common/src/commitment.h | 120 + .../epid/common/src/endian_convert.h | 47 + .../epid/common/src/epid2params.c | 575 + .../epid/common/src/epid2params.h | 75 + .../epid/common/src/epid2params_ate.inc | 111 + .../epid-sdk-3.0.0/epid/common/src/errors.c | 66 + .../epid/common/src/file_parser-internal.h | 47 + .../epid/common/src/file_parser.c | 335 + .../epid/common/src/grouppubkey.c | 86 + .../epid/common/src/grouppubkey.h | 67 + .../epid-sdk-3.0.0/epid/common/src/memory.c | 123 + .../epid-sdk-3.0.0/epid/common/src/memory.h | 123 + .../epid/common/src/sigrlvalid.c | 46 + .../epid/common/src/sigrlvalid.h | 46 + .../epid-sdk-3.0.0/epid/common/src/stack.c | 93 + .../epid-sdk-3.0.0/epid/common/src/stack.h | 95 + .../epid-sdk-3.0.0/epid/common/stdtypes.h | 39 + external/epid-sdk-3.0.0/epid/common/types.h | 345 + .../epid/common/unittests/file_parser-test.cc | 1358 + external/epid-sdk-3.0.0/epid/member/Makefile | 76 + external/epid-sdk-3.0.0/epid/member/api.h | 482 + .../epid-sdk-3.0.0/epid/member/member.parts | 84 + .../epid-sdk-3.0.0/epid/member/src/context.c | 423 + .../epid-sdk-3.0.0/epid/member/src/context.h | 85 + .../epid/member/src/decompress_privkey.c | 295 + .../epid/member/src/get_sigsize.c | 35 + .../epid-sdk-3.0.0/epid/member/src/nr_prove.c | 277 + .../epid-sdk-3.0.0/epid/member/src/presig.c | 229 + .../epid-sdk-3.0.0/epid/member/src/privkey.c | 84 + .../epid-sdk-3.0.0/epid/member/src/privkey.h | 67 + .../epid/member/src/request_join.c | 418 + .../epid-sdk-3.0.0/epid/member/src/sign.c | 106 + .../epid/member/src/signbasic.c | 272 + .../member/unittests/compute_presig-test.cc | 93 + .../epid/member/unittests/context-test.cc | 264 + .../unittests/decompress_privkey-test.cc | 97 + .../epid/member/unittests/get_sigsize-test.cc | 96 + .../epid/member/unittests/main-test.cc | 26 + .../member/unittests/member-testhelper.cc | 522 + .../epid/member/unittests/member-testhelper.h | 116 + .../epid/member/unittests/nr_prove-test.cc | 290 + .../epid/member/unittests/presig-test.cc | 246 + .../member/unittests/request_join-test.cc | 320 + .../epid/member/unittests/sign-test.cc | 1079 + .../epid/member/unittests/signbasic-test.cc | 401 + .../epid-sdk-3.0.0/epid/verifier/1.1/api.h | 501 + .../verifier/1.1/src/check_privrl_entry.c | 90 + .../epid/verifier/1.1/src/context.c | 450 + .../epid/verifier/1.1/src/context.h | 47 + .../epid/verifier/1.1/src/nrverify.c | 253 + .../epid/verifier/1.1/src/sigs_linked.c | 29 + .../epid/verifier/1.1/src/verify.c | 240 + .../epid/verifier/1.1/src/verifybasic.c | 412 + .../1.1/unittests/check_privrl_entry-test.cc | 83 + .../verifier/1.1/unittests/context-test.cc | 477 + .../verifier/1.1/unittests/nrverify-test.cc | 219 + .../1.1/unittests/sigs_linked-test.cc | 71 + .../unittests/testdata/verifier_precmp.inc | 73 + .../1.1/unittests/verifier-testhelper.cc | 214 + .../1.1/unittests/verifier-testhelper.h | 117 + .../verifier/1.1/unittests/verify-test.cc | 720 + .../1.1/unittests/verifybasic-test.cc | 99 + .../epid-sdk-3.0.0/epid/verifier/Makefile | 85 + external/epid-sdk-3.0.0/epid/verifier/api.h | 547 + .../epid/verifier/src/check_privrl_entry.c | 82 + .../epid/verifier/src/context.c | 682 + .../epid/verifier/src/context.h | 47 + .../epid/verifier/src/nrverify.c | 244 + .../epid/verifier/src/sigs_linked.c | 31 + .../epid-sdk-3.0.0/epid/verifier/src/verify.c | 198 + .../epid/verifier/src/verifybasic.c | 316 + .../unittests/check_privrl_entry-test.cc | 116 + .../epid/verifier/unittests/context-test.cc | 1074 + .../epid/verifier/unittests/main-test.cc | 26 + .../epid/verifier/unittests/nrverify-test.cc | 273 + .../verifier/unittests/sigs_linked-test.cc | 68 + .../testdata/sigrl/pub_key_sigrl_verify.inc | 39 + .../testdata/sigrl/signature_sigrl_first.inc | 54 + .../testdata/sigrl/signature_sigrl_last.inc | 54 + .../testdata/sigrl/signature_sigrl_middle.inc | 54 + .../testdata/sigrl/sigrl_five_entries.inc | 113 + .../testdata/sigrl/sigrl_single_entry.inc | 29 + .../verifier/unittests/verifier-testhelper.cc | 728 + .../verifier/unittests/verifier-testhelper.h | 269 + .../epid/verifier/unittests/verify-test.cc | 1196 + .../verifier/unittests/verifybasic-test.cc | 152 + .../epid/verifier/verifier.parts | 117 + external/epid-sdk-3.0.0/example/Makefile | 84 + .../example/compressed_data/README.md | 179 + .../example/compressed_data/cacert.bin | Bin 0 -> 324 bytes .../compressed_data/compressed_data.parts | 72 + .../groupa/member0/mprivkey.dat | Bin 0 -> 80 bytes .../groupa/member1/mprivkey.dat | Bin 0 -> 80 bytes .../groupa/privrevokedmember0/mprivkey.dat | Bin 0 -> 80 bytes .../groupa/privrevokedmember1/mprivkey.dat | Bin 0 -> 80 bytes .../groupa/privrevokedmember2/mprivkey.dat | Bin 0 -> 80 bytes .../example/compressed_data/groupa/privrl.bin | Bin 0 -> 188 bytes .../compressed_data/groupa/privrl_empty.bin | Bin 0 -> 92 bytes .../example/compressed_data/groupa/pubkey.bin | Bin 0 -> 340 bytes .../groupa/sigrevokedmember0/mprivkey.dat | Bin 0 -> 80 bytes .../groupa/sigrevokedmember1/mprivkey.dat | Bin 0 -> 80 bytes .../groupa/sigrevokedmember2/mprivkey.dat | Bin 0 -> 80 bytes .../example/compressed_data/groupa/sigrl.bin | Bin 0 -> 476 bytes .../compressed_data/groupa/sigrl_empty.bin | Bin 0 -> 92 bytes .../groupb/member0/mprivkey.dat | Bin 0 -> 80 bytes .../groupb/privrevokedmember0/mprivkey.dat | Bin 0 -> 80 bytes .../example/compressed_data/groupb/privrl.bin | Bin 0 -> 124 bytes .../compressed_data/groupb/privrl_empty.bin | Bin 0 -> 92 bytes .../example/compressed_data/groupb/pubkey.bin | Bin 0 -> 340 bytes .../groupb/sigrevokedmember0/mprivkey.dat | Bin 0 -> 80 bytes .../example/compressed_data/groupb/sigrl.bin | Bin 0 -> 476 bytes .../compressed_data/groupb/sigrl_empty.bin | Bin 0 -> 92 bytes .../example/compressed_data/grprl.bin | Bin 0 -> 1660 bytes .../example/compressed_data/grprl_empty.bin | Bin 0 -> 76 bytes .../example/compressed_data/mprivkey.dat | Bin 0 -> 80 bytes .../example/compressed_data/privrl.bin | Bin 0 -> 188 bytes .../example/compressed_data/pubkey.bin | Bin 0 -> 340 bytes .../example/compressed_data/sigrl.bin | Bin 0 -> 476 bytes .../epid-sdk-3.0.0/example/data/README.md | 179 + .../epid-sdk-3.0.0/example/data/cacert.bin | Bin 0 -> 324 bytes .../epid-sdk-3.0.0/example/data/data.parts | 72 + .../example/data/groupa/member0/mprivkey.dat | Bin 0 -> 144 bytes .../example/data/groupa/member1/mprivkey.dat | Bin 0 -> 144 bytes .../groupa/privrevokedmember0/mprivkey.dat | Bin 0 -> 144 bytes .../groupa/privrevokedmember1/mprivkey.dat | Bin 0 -> 144 bytes .../groupa/privrevokedmember2/mprivkey.dat | Bin 0 -> 144 bytes .../example/data/groupa/privrl.bin | Bin 0 -> 188 bytes .../example/data/groupa/privrl_empty.bin | Bin 0 -> 92 bytes .../example/data/groupa/pubkey.bin | Bin 0 -> 340 bytes .../groupa/sigrevokedmember0/mprivkey.dat | Bin 0 -> 144 bytes .../groupa/sigrevokedmember1/mprivkey.dat | Bin 0 -> 144 bytes .../groupa/sigrevokedmember2/mprivkey.dat | Bin 0 -> 144 bytes .../example/data/groupa/sigrl.bin | Bin 0 -> 476 bytes .../example/data/groupa/sigrl_empty.bin | Bin 0 -> 92 bytes .../example/data/groupb/member0/mprivkey.dat | Bin 0 -> 144 bytes .../groupb/privrevokedmember0/mprivkey.dat | Bin 0 -> 144 bytes .../example/data/groupb/privrl.bin | Bin 0 -> 188 bytes .../example/data/groupb/privrl_empty.bin | Bin 0 -> 92 bytes .../example/data/groupb/pubkey.bin | Bin 0 -> 340 bytes .../groupb/sigrevokedmember0/mprivkey.dat | Bin 0 -> 144 bytes .../example/data/groupb/sigrl.bin | Bin 0 -> 476 bytes .../example/data/groupb/sigrl_empty.bin | Bin 0 -> 92 bytes .../epid-sdk-3.0.0/example/data/grprl.bin | Bin 0 -> 876 bytes .../example/data/grprl_empty.bin | Bin 0 -> 76 bytes .../epid-sdk-3.0.0/example/data/mprivkey.dat | Bin 0 -> 144 bytes .../epid-sdk-3.0.0/example/data/privrl.bin | Bin 0 -> 92 bytes .../epid-sdk-3.0.0/example/data/pubkey.bin | Bin 0 -> 340 bytes .../epid-sdk-3.0.0/example/data/sigrl.bin | Bin 0 -> 92 bytes .../example/signmsg/signmsg.parts | 52 + .../epid-sdk-3.0.0/example/signmsg/src/main.c | 410 + .../epid-sdk-3.0.0/example/signmsg/src/prng.c | 98 + .../epid-sdk-3.0.0/example/signmsg/src/prng.h | 36 + .../example/signmsg/src/signmsg.c | 176 + .../example/signmsg/src/signmsg.h | 42 + external/epid-sdk-3.0.0/example/util/Makefile | 32 + .../epid-sdk-3.0.0/example/util/buffutil.h | 159 + .../epid-sdk-3.0.0/example/util/convutil.h | 77 + .../epid-sdk-3.0.0/example/util/envutil.h | 54 + .../epid-sdk-3.0.0/example/util/src/bufutil.c | 364 + .../example/util/src/convutil.c | 95 + .../epid-sdk-3.0.0/example/util/src/envutil.c | 91 + .../epid-sdk-3.0.0/example/util/src/strutil.c | 53 + .../epid-sdk-3.0.0/example/util/stdtypes.h | 39 + .../epid-sdk-3.0.0/example/util/strutil.h | 33 + .../epid-sdk-3.0.0/example/util/util.parts | 61 + .../example/verifysig/src/main.c | 501 + .../example/verifysig/src/verifysig.c | 211 + .../example/verifysig/src/verifysig.h | 42 + .../example/verifysig/src/verifysig11.c | 187 + .../example/verifysig/src/verifysig11.h | 38 + .../example/verifysig/verifysig.parts | 53 + external/epid-sdk-3.0.0/ext/dropt/LICENSE | 22 + external/epid-sdk-3.0.0/ext/dropt/Makefile | 23 + external/epid-sdk-3.0.0/ext/dropt/dropt.parts | 53 + .../epid-sdk-3.0.0/ext/dropt/include/dropt.h | 249 + .../ext/dropt/include/dropt_string.h | 94 + external/epid-sdk-3.0.0/ext/dropt/src/dropt.c | 1562 + .../ext/dropt/src/dropt_handlers.c | 438 + .../ext/dropt/src/dropt_string.c | 686 + external/epid-sdk-3.0.0/ext/gtest/LICENSE | 28 + external/epid-sdk-3.0.0/ext/gtest/Makefile | 25 + .../epid-sdk-3.0.0/ext/gtest/gtest-all.cc | 9599 + external/epid-sdk-3.0.0/ext/gtest/gtest.h | 20061 +++ external/epid-sdk-3.0.0/ext/gtest/gtest.parts | 52 + .../epid-sdk-3.0.0/ext/ipp/include/ippbase.h | 188 + .../epid-sdk-3.0.0/ext/ipp/include/ippcp.h | 860 + .../ext/ipp/include/ippcpdefs.h | 371 + .../ext/ipp/include/ippcpepid.h | 218 + .../epid-sdk-3.0.0/ext/ipp/include/ippdefs.h | 126 + .../epid-sdk-3.0.0/ext/ipp/include/ipptypes.h | 1100 + .../epid-sdk-3.0.0/ext/ipp/ippcommon.parts | 56 + external/epid-sdk-3.0.0/ext/ipp/ippcp.parts | 115 + .../epid-sdk-3.0.0/ext/ipp/ippcpepid.parts | 105 + .../ext/ipp/sources/include/owndefs.h | 934 + .../ext/ipp/sources/ippcp/Makefile | 31 + .../ext/ipp/sources/ippcp/src/owncp.h | 171 + .../ext/ipp/sources/ippcp/src/pcpbn.h | 203 + .../ext/ipp/sources/ippcp/src/pcpbnca.c | 1286 + .../ext/ipp/sources/ippcp/src/pcpbnresource.h | 48 + .../ipp/sources/ippcp/src/pcpbnresourceca.c | 87 + .../ext/ipp/sources/ippcp/src/pcpbnsetca.c | 117 + .../ext/ipp/sources/ippcp/src/pcpbnu32arith.c | 366 + .../ext/ipp/sources/ippcp/src/pcpbnu32arith.h | 50 + .../ext/ipp/sources/ippcp/src/pcpbnu32misc.c | 229 + .../ext/ipp/sources/ippcp/src/pcpbnu32misc.h | 71 + .../ext/ipp/sources/ippcp/src/pcpbnuarith.c | 537 + .../ext/ipp/sources/ippcp/src/pcpbnuarith.h | 169 + .../ext/ipp/sources/ippcp/src/pcpbnuimpl.h | 136 + .../ext/ipp/sources/ippcp/src/pcpbnumisc.c | 294 + .../ext/ipp/sources/ippcp/src/pcpbnumisc.h | 160 + .../ext/ipp/sources/ippcp/src/pcpeccp.h | 260 + .../ext/ipp/sources/ippcp/src/pcpeccpdpca.c | 801 + .../ipp/sources/ippcp/src/pcpeccpgenkeyca.c | 105 + .../ext/ipp/sources/ippcp/src/pcpeccpinitca.c | 454 + .../ext/ipp/sources/ippcp/src/pcpeccpmethod.h | 98 + .../ipp/sources/ippcp/src/pcpeccpmethod128.h | 118 + .../sources/ippcp/src/pcpeccpmethod128ca.c | 879 + .../ipp/sources/ippcp/src/pcpeccpmethod192.h | 117 + .../sources/ippcp/src/pcpeccpmethod192ca.c | 880 + .../ipp/sources/ippcp/src/pcpeccpmethod224.h | 118 + .../sources/ippcp/src/pcpeccpmethod224ca.c | 877 + .../ipp/sources/ippcp/src/pcpeccpmethod256.h | 118 + .../sources/ippcp/src/pcpeccpmethod256ca.c | 879 + .../ipp/sources/ippcp/src/pcpeccpmethod384.h | 118 + .../sources/ippcp/src/pcpeccpmethod384ca.c | 879 + .../ipp/sources/ippcp/src/pcpeccpmethod521.h | 118 + .../sources/ippcp/src/pcpeccpmethod521ca.c | 879 + .../ipp/sources/ippcp/src/pcpeccpmethodcom.h | 133 + .../sources/ippcp/src/pcpeccpmethodcomca.c | 1025 + .../ipp/sources/ippcp/src/pcpeccpmethodsm2.h | 120 + .../sources/ippcp/src/pcpeccpmethodsm2ca.c | 879 + .../ext/ipp/sources/ippcp/src/pcpeccppoint.h | 54 + .../ipp/sources/ippcp/src/pcpeccppointca.c | 126 + .../ipp/sources/ippcp/src/pcpeccppointopca.c | 482 + .../sources/ippcp/src/pcpeccppublickeyca.c | 87 + .../ipp/sources/ippcp/src/pcpeccpsetkeyca.c | 102 + .../ipp/sources/ippcp/src/pcpeccpsigndsaca.c | 146 + .../ext/ipp/sources/ippcp/src/pcpeccpsscm.c | 160 + .../ext/ipp/sources/ippcp/src/pcpeccpsscm.h | 45 + .../ext/ipp/sources/ippcp/src/pcpeccpstdca.c | 465 + .../sources/ippcp/src/pcpeccpverifydsaca.c | 173 + .../ext/ipp/sources/ippcp/src/pcphash.h | 239 + .../ext/ipp/sources/ippcp/src/pcphashcnt.c | 434 + .../ext/ipp/sources/ippcp/src/pcphashmd5px.c | 211 + .../ext/ipp/sources/ippcp/src/pcphashsha1px.c | 189 + .../ipp/sources/ippcp/src/pcphashsha256px.c | 214 + .../ipp/sources/ippcp/src/pcphashsha512px.c | 221 + .../ext/ipp/sources/ippcp/src/pcpmd5ca.c | 485 + .../ipp/sources/ippcp/src/pcpmontexpbinca.c | 562 + .../ext/ipp/sources/ippcp/src/pcpmontgomery.h | 282 + .../ipp/sources/ippcp/src/pcpmontgomeryca.c | 479 + .../ext/ipp/sources/ippcp/src/pcpmontred.c | 75 + .../ext/ipp/sources/ippcp/src/pcpmulbnukara.h | 84 + .../ext/ipp/sources/ippcp/src/pcppma.h | 106 + .../ext/ipp/sources/ippcp/src/pcppma128.c | 169 + .../ext/ipp/sources/ippcp/src/pcppma128.h | 79 + .../ext/ipp/sources/ippcp/src/pcppma192.c | 153 + .../ext/ipp/sources/ippcp/src/pcppma192.h | 84 + .../ext/ipp/sources/ippcp/src/pcppma224.c | 169 + .../ext/ipp/sources/ippcp/src/pcppma224.h | 81 + .../ext/ipp/sources/ippcp/src/pcppma256.c | 181 + .../ext/ipp/sources/ippcp/src/pcppma256.h | 82 + .../ext/ipp/sources/ippcp/src/pcppma384.c | 191 + .../ext/ipp/sources/ippcp/src/pcppma384.h | 82 + .../ext/ipp/sources/ippcp/src/pcppma521.c | 124 + .../ext/ipp/sources/ippcp/src/pcppma521.h | 80 + .../ext/ipp/sources/ippcp/src/pcppmasm2.c | 311 + .../ext/ipp/sources/ippcp/src/pcppmasm2.h | 121 + .../ext/ipp/sources/ippcp/src/pcpprimeg.h | 72 + .../ipp/sources/ippcp/src/pcpprimeginitca.c | 158 + .../ext/ipp/sources/ippcp/src/pcpprng.h | 59 + .../ext/ipp/sources/ippcp/src/pcpprngenca.c | 251 + .../ext/ipp/sources/ippcp/src/pcpprnginitca.c | 111 + .../ext/ipp/sources/ippcp/src/pcpprngsetca.c | 239 + .../ext/ipp/sources/ippcp/src/pcpsha1ca.c | 551 + .../ext/ipp/sources/ippcp/src/pcpsha256ca.c | 728 + .../ext/ipp/sources/ippcp/src/pcpsha512ca.c | 674 + .../ext/ipp/sources/ippcp/src/pcptool.h | 631 + .../ext/ipp/sources/ippcp/src/pcpvariant.h | 326 + .../ext/ipp/sources/ippcp/src/precomp.h | 22 + .../ext/ipp/sources/ippcpepid/Makefile | 37 + .../ipp/sources/ippcpepid/src/ippcpepid_y8.h | 44 + .../ext/ipp/sources/ippcpepid/src/owncpepid.h | 58 + .../ext/ipp/sources/ippcpepid/src/pcpgfp.c | 846 + .../ext/ipp/sources/ippcpepid/src/pcpgfpec.c | 322 + .../ipp/sources/ippcpepid/src/pcpgfpecpoint.c | 426 + .../ippcpepid/src/pcpgfpecpointstuff.c | 1227 + .../ipp/sources/ippcpepid/src/pcpgfpecstuff.h | 320 + .../sources/ippcpepid/src/pcpgfphashstuff.h | 117 + .../ipp/sources/ippcpepid/src/pcpgfpstuff.c | 486 + .../ipp/sources/ippcpepid/src/pcpgfpstuff.h | 212 + .../ext/ipp/sources/ippcpepid/src/pcpgfpx.c | 202 + .../ipp/sources/ippcpepid/src/pcpgfpxstuff.c | 1307 + .../ipp/sources/ippcpepid/src/pcpgfpxstuff.h | 174 + .../parts-site/configurations/__init__.py | 27 + .../configurations/debug/__init__.py | 20 + .../parts-site/configurations/debug/g++.py | 47 + .../parts-site/configurations/debug/gcc.py | 52 + .../configurations/debug/intelc_posix-any.py | 48 + .../debug/intelc_win32-any_win32-x86.py | 49 + .../debug/intelc_win32-any_win32-x86_64.py | 48 + .../debug/msvc_win32-any_win32-x86.py | 54 + .../debug/msvc_win32-any_win32-x86_64.py | 53 + .../configurations/release/__init__.py | 20 + .../parts-site/configurations/release/g++.py | 47 + .../parts-site/configurations/release/gcc.py | 54 + .../release/intelc_posix-any.py | 49 + .../release/intelc_win32-any_win32-x86.py | 53 + .../release/intelc_win32-any_win32-x86_64.py | 52 + .../release/msvc_win32-any_win32-x86.py | 58 + .../release/msvc_win32-any_win32-x86_64.py | 57 + external/epid-sdk-3.0.0/tools/Makefile | 107 + .../tools/extractgrps/extractgrps.parts | 47 + .../tools/extractgrps/src/main.c | 227 + .../tools/extractkeys/extractkeys.parts | 47 + .../tools/extractkeys/src/main.c | 252 + .../tools/revokegrp/revokegrp.parts | 46 + .../epid-sdk-3.0.0/tools/revokegrp/src/main.c | 382 + .../tools/revokekey/revokekey.parts | 47 + .../epid-sdk-3.0.0/tools/revokekey/src/main.c | 356 + .../tools/revokesig/revokesig.parts | 46 + .../epid-sdk-3.0.0/tools/revokesig/src/main.c | 455 + external/sgx_libm/makefile | 25 +- external/sqlite/src/sqlite3.c | 137414 +++++++++++++++ external/sqlite/src/sqlite3.h | 7160 + .../vtune/linux/sdk/src/ittnotify/Makefile | 2 +- linux/installer/bin/build-installpkg.sh | 2 +- linux/installer/bin/install-sgx-psw.bin.tmpl | 2 +- linux/installer/bin/install-sgx-sdk.bin.tmpl | 2 +- .../installer/common/gen_source/gen_source.py | 16 +- linux/installer/common/psw/BOMs/psw_base.txt | 5 + linux/installer/common/psw/Makefile | 2 +- linux/installer/common/psw/createTarball.sh | 2 +- linux/installer/common/psw/install.sh | 9 +- linux/installer/common/sdk/BOMs/sdk_base.txt | 18 + linux/installer/common/sdk/BOMs/sdk_x64.txt | 1 + linux/installer/common/sdk/BOMs/sdk_x86.txt | 1 + linux/installer/common/sdk/Makefile | 2 +- linux/installer/common/sdk/createTarball.sh | 2 +- linux/installer/common/sdk/install.sh | 6 +- psw/Makefile | 2 +- psw/ae/Makefile | 18 +- psw/ae/aesm_service/Makefile | 79 +- .../config/aesmd_service/aesmd.service | 2 + .../aesm_service/include/oal/aesm_network.h | 2 +- .../include/oal/aesm_persistent_storage.h | 2 +- psw/ae/aesm_service/include/oal/aesm_thread.h | 2 +- .../aesm_service/include/oal/error_report.h | 8 +- .../aesm_service/include/oal/internal_log.h | 11 +- psw/ae/aesm_service/include/oal/oal.h | 2 +- psw/ae/aesm_service/include/oal/power.h | 2 +- .../source/aesm/application/AEClass.h | 3 +- .../source/aesm/application/aesm_config.cpp | 2 +- .../source/aesm/application/aesm_config.h | 2 +- .../source/aesm/application/aesm_logic.cpp | 277 +- .../source/aesm/application/aesm_logic.h | 2 +- .../source/aesm/application/aesm_proxy_type.h | 2 +- .../source/aesm/application/aesm_rand.cpp | 2 +- .../source/aesm/application/aesm_rand.h | 2 +- .../source/aesm/application/event_strings.cpp | 45 +- .../source/aesm/application/event_strings.h | 40 +- .../source/aesm/application/main.cpp | 4 +- .../source/aesm/application/prof_fun.h | 2 +- .../source/aesm/extension/aesm_ecdsa.cpp | 2 +- .../source/aesm/extension/aesm_encode.cpp | 105 +- .../source/aesm/extension/aesm_encode.h | 3 +- .../source/aesm/extension/aesm_epid_blob.cpp | 2 +- .../source/aesm/extension/aesm_epid_blob.h | 2 +- .../source/aesm/extension/aesm_http_msg.cpp | 17 +- .../aesm/extension/aesm_long_lived_thread.cpp | 114 +- .../aesm/extension/aesm_long_lived_thread.h | 6 +- .../source/aesm/extension/aesm_xegd_blob.cpp | 2 +- .../source/aesm/extension/aesm_xegd_blob.h | 2 +- .../aesm/extension/endpoint_select_info.cpp | 13 +- .../aesm/extension/endpoint_select_info.h | 7 +- .../aesm/extension/platform_info_facility.cpp | 484 +- .../aesm/extension/platform_info_logic.cpp | 684 +- .../aesm/extension/platform_info_logic.h | 19 +- .../aesm/extension/type_length_value.cpp | 2 +- .../source/aesm/extension/type_length_value.h | 2 +- .../aesm_wrapper/inc/AESMLogicWrapper.h | 62 +- .../source/aesm_wrapper/inc/AESMQueue.h | 2 +- .../aesm_wrapper/inc/AESMQueueManager.h | 2 +- .../aesm_wrapper/inc/AESMWorkerThread.h | 2 +- .../source/aesm_wrapper/inc/CAESMServer.h | 2 +- .../source/aesm_wrapper/inc/CSelector.h | 2 +- .../source/aesm_wrapper/inc/IAESMQueue.h | 2 +- .../source/aesm_wrapper/inc/IServerSocket.h | 2 +- .../source/aesm_wrapper/inc/RequestData.h | 2 +- .../source/aesm_wrapper/inc/Thread.h | 2 +- .../aesm_wrapper/inc/UnixServerSocket.h | 2 +- .../source/aesm_wrapper/inc/aesm_exception.h | 2 +- .../aesm_wrapper/src/AESMLogicWrapper.cpp | 168 +- .../aesm_wrapper/src/AESMQueueManager.cpp | 2 +- .../aesm_wrapper/src/AESMWorkerThread.cpp | 3 +- .../source/aesm_wrapper/src/CAESMServer.cpp | 2 +- .../source/aesm_wrapper/src/CSelector.cpp | 4 +- .../source/aesm_wrapper/src/Thread.cpp | 3 +- .../aesm_wrapper/src/UnixServerSocket.cpp | 2 +- .../epid_endpoint_selection.cpp | 2 +- .../epid_provision/epid_provision_msg1.cpp | 2 +- .../epid_provision/epid_provision_msg2.cpp | 10 +- .../epid_provision/epid_provision_msg4.cpp | 4 +- .../source/epid_provision/epid_utility.cpp | 6 +- .../source/epid_provision/epid_utility.h | 2 +- psw/ae/aesm_service/source/le/LEClass.cpp | 5 +- psw/ae/aesm_service/source/le/LEClass.h | 2 +- .../network/network_encoding_wrapper.cpp | 2 +- .../source/network/network_encoding_wrapper.h | 2 +- .../aesm_service/source/oal/aesm_thread.cpp | 2 +- psw/ae/aesm_service/source/oal/aesm_util.cpp | 3 +- .../aesm_service/source/oal/error_report.cpp | 5 +- .../aesm_service/source/oal/internal_log.cpp | 7 +- psw/ae/aesm_service/source/oal/oal_power.cpp | 2 +- psw/ae/aesm_service/source/pce/PCEClass.cpp | 2 +- psw/ae/aesm_service/source/pce/PCEClass.h | 2 +- psw/ae/aesm_service/source/protobuf/Makefile | 2 +- .../source/pse_op/PSDAService.cpp | 386 + .../aesm_service/source/pse_op/PSDAService.h | 79 + .../aesm_service/source/pse_op/PSEClass.cpp | 709 + psw/ae/aesm_service/source/pse_op/PSEClass.h | 129 + .../source/pse_op/aesm_pse_status.cpp | 44 + .../source/pse_op/aesm_pse_status.h} | 45 +- .../aesm_service/source/pse_op/jhi_proxy.cpp | 322 + psw/ae/aesm_service/source/pse_op/jhi_proxy.h | 53 + .../source/pse_op/pse_op_logic.cpp | 481 + .../aesm_service/source/pse_op/pse_op_logic.h | 68 + .../source/pse_op/pse_op_psda_ocall.cpp | 46 + .../source/pse_op/pse_op_vmc_sqlite_ocall.cpp | 971 + .../aesm_service/source/pse_pr/PSEPRClass.cpp | 82 + .../aesm_service/source/pse_pr/PSEPRClass.h | 65 + psw/ae/aesm_service/source/pve/PVEClass.cpp | 5 +- psw/ae/aesm_service/source/pve/PVEClass.h | 2 +- .../aesm_service/source/pve/prov_msg_size.h | 2 +- psw/ae/aesm_service/source/pve/pve_logic.cpp | 58 +- psw/ae/aesm_service/source/pve/pve_logic.h | 2 +- psw/ae/aesm_service/source/qe/QEClass.cpp | 2 +- psw/ae/aesm_service/source/qe/QEClass.h | 2 +- psw/ae/aesm_service/source/qe/qe_logic.cpp | 22 +- psw/ae/aesm_service/source/qe/qe_logic.h | 2 +- .../source/storage/persistent_storage_info.h | 2 +- .../storage/persistent_storage_table.cpp | 2 +- .../CertificateProvisioningProtocol.cpp | 242 + .../CertificateProvisioningProtocol.h | 164 + .../BackendInterface/pse_crypto_helper.cpp | 319 + .../pse_provisioning_msg1.cpp | 295 + .../pse_provisioning_msg2.cpp | 304 + .../pse_provisioning_msg3.cpp | 313 + .../pse_provisioning_msg4.cpp | 261 + psw/ae/aesm_service/source/upse/Buffer.h | 310 + psw/ae/aesm_service/source/upse/helper.cpp | 551 + psw/ae/aesm_service/source/upse/helper.h | 109 + .../source/upse/interface_ocsp.cpp | 419 + .../aesm_service/source/upse/interface_ocsp.h | 49 + .../source/upse/interface_psda.cpp | 307 + .../aesm_service/source/upse/interface_psda.h | 72 + .../source/upse/platform_info_blob.h | 2 +- .../source/upse/pse_pr_inc.h} | 13 +- .../aesm_service/source/upse/sigma_helper.cpp | 361 + .../aesm_service/source/upse/sigma_helper.h | 84 + .../upse/u_certificate_provisioning.cpp | 747 + .../source/upse/u_certificate_provisioning.h | 42 + .../source/upse/u_long_term_pairing.cpp | 431 + .../source/upse/u_long_term_pairing.h} | 14 +- .../source/upse/uecall_bridge.cpp | 376 + .../aesm_service/source/upse/uecall_bridge.h | 91 + psw/ae/aesm_service/source/upse/upse.cpp | 87 + .../aesm_service/source/upse/upse.h} | 21 +- .../source/upse/upse_iclsInit.cpp | 79 + psw/ae/buildenv.mk | 2 +- psw/ae/common/inc/AECloseSessionRequest.h | 30 +- psw/ae/common/inc/AECloseSessionResponse.h | 24 +- psw/ae/common/inc/AECreateSessionRequest.h | 31 +- psw/ae/common/inc/AECreateSessionResponse.h | 32 +- psw/ae/common/inc/AEExchangeReportRequest.h | 34 +- psw/ae/common/inc/AEExchangeReportResponse.h | 32 +- psw/ae/common/inc/AEGetLaunchTokenRequest.h | 46 +- psw/ae/common/inc/AEGetLaunchTokenResponse.h | 27 +- psw/ae/common/inc/AEGetPsCapRequest.h | 31 +- psw/ae/common/inc/AEGetPsCapResponse.h | 30 +- psw/ae/common/inc/AEGetQuoteRequest.h | 68 +- psw/ae/common/inc/AEGetQuoteResponse.h | 35 +- psw/ae/common/inc/AEGetWhiteListRequest.h | 26 +- psw/ae/common/inc/AEGetWhiteListResponse.h | 34 +- psw/ae/common/inc/AEGetWhiteListSizeRequest.h | 32 +- .../common/inc/AEGetWhiteListSizeResponse.h | 30 +- psw/ae/common/inc/AEInitQuoteRequest.h | 34 +- psw/ae/common/inc/AEInitQuoteResponse.h | 38 +- psw/ae/common/inc/AEInvokeServiceRequest.h | 32 +- psw/ae/common/inc/AEInvokeServiceResponse.h | 32 +- .../common/inc/AEReportAttestationRequest.h | 37 +- .../common/inc/AEReportAttestationResponse.h | 30 +- .../inc/AESGXGetExtendedEpidGroupIdRequest.h | 30 +- .../inc/AESGXGetExtendedEpidGroupIdResponse.h | 28 +- .../inc/AESGXSwitchExtendedEpidGroupRequest.h | 25 +- .../AESGXSwitchExtendedEpidGroupResponse.h | 24 +- psw/ae/common/inc/IAEMessage.h | 97 + psw/ae/common/inc/IAERequest.h | 124 +- psw/ae/common/inc/IAEResponse.h | 75 +- psw/ae/common/inc/IAESMLogic.h | 33 +- psw/ae/common/inc/ICommunicationSocket.h | 2 +- psw/ae/common/inc/ISerializer.h | 86 +- psw/ae/common/inc/ISocketFactory.h | 2 +- psw/ae/common/inc/ITransporter.h | 4 +- .../inc/NonBlockingUnixCommunicationSocket.h | 2 +- .../common/inc/NonBlockingUnixSocketFactory.h | 2 +- psw/ae/common/inc/ProtobufSerializer.h | 73 +- .../common/inc/{Config.h => SocketConfig.h} | 11 +- psw/ae/common/inc/SocketTransporter.h | 5 +- psw/ae/common/inc/UnixCommunicationSocket.h | 2 +- psw/ae/common/inc/UnixSocketFactory.h | 2 +- psw/ae/common/inc/debug_log.h | 2 +- psw/ae/common/pek_pub_key.cpp | 2 +- psw/ae/common/proto/Makefile | 35 +- psw/ae/common/proto/messages.proto | 2 +- psw/ae/common/pse_pr_common.cpp | 82 + psw/ae/common/pve_pub_key.cpp | 2 +- psw/ae/common/pve_qe_common.cpp | 2 +- psw/ae/common/se_ecdsa_verify_internal.cpp | 2 +- psw/ae/common/se_sig_rl.cpp | 2 +- psw/ae/common/src/AECloseSessionRequest.cpp | 102 +- psw/ae/common/src/AECloseSessionResponse.cpp | 97 +- psw/ae/common/src/AECreateSessionRequest.cpp | 119 +- psw/ae/common/src/AECreateSessionResponse.cpp | 141 +- psw/ae/common/src/AEExchangeReportRequest.cpp | 169 +- .../common/src/AEExchangeReportResponse.cpp | 140 +- psw/ae/common/src/AEGetLaunchTokenRequest.cpp | 250 +- .../common/src/AEGetLaunchTokenResponse.cpp | 147 +- psw/ae/common/src/AEGetPsCapRequest.cpp | 97 +- psw/ae/common/src/AEGetPsCapResponse.cpp | 114 +- psw/ae/common/src/AEGetQuoteRequest.cpp | 339 +- psw/ae/common/src/AEGetQuoteResponse.cpp | 164 +- psw/ae/common/src/AEGetWhiteListRequest.cpp | 111 +- psw/ae/common/src/AEGetWhiteListResponse.cpp | 142 +- .../common/src/AEGetWhiteListSizeRequest.cpp | 99 +- .../common/src/AEGetWhiteListSizeResponse.cpp | 111 +- psw/ae/common/src/AEInitQuoteRequest.cpp | 120 +- psw/ae/common/src/AEInitQuoteResponse.cpp | 185 +- psw/ae/common/src/AEInvokeServiceRequest.cpp | 166 +- psw/ae/common/src/AEInvokeServiceResponse.cpp | 136 +- .../common/src/AEReportAttestationRequest.cpp | 186 +- .../src/AEReportAttestationResponse.cpp | 137 +- .../AESGXGetExtendedEpidGroupIdRequest.cpp | 103 +- .../AESGXGetExtendedEpidGroupIdResponse.cpp | 113 +- .../AESGXSwitchExtendedEpidGroupRequest.cpp | 102 +- .../AESGXSwitchExtendedEpidGroupResponse.cpp | 98 +- .../NonBlockingUnixCommunicationSocket.cpp | 2 +- .../src/NonBlockingUnixSocketFactory.cpp | 2 +- psw/ae/common/src/ProtobufSerializer.cpp | 1642 +- psw/ae/common/src/SocketTransporter.cpp | 15 +- psw/ae/common/src/UnixCommunicationSocket.cpp | 8 +- psw/ae/common/src/UnixSocketFactory.cpp | 2 +- psw/ae/common/t_pairing_blob.cpp | 127 + psw/ae/common/version.cpp | 2 +- psw/ae/cse_provision_tool/Makefile | 44 + .../cse_provision_tool/cse_provision_tool.cpp | 125 + psw/ae/data/constants/linux/ae_debug_flag.hh | 2 +- .../data/constants/linux/default_url_info.hh | 2 +- .../data/constants/linux/epid_verify_pub.hh | 61 + psw/ae/data/constants/linux/isk_pub.hh | 2 +- .../data/constants/linux/ivk_ca_root_der.hh | 74 + .../linux/launch_enclave_mrsigner.hh | 2 +- psw/ae/data/constants/linux/peksk_pub.hh | 2 +- psw/ae/data/constants/linux/pibsk_pub.hh | 2 +- psw/ae/data/constants/linux/pse_pr_padding.hh | 31 + .../data/constants/linux/pse_product_type.hh | 31 + psw/ae/data/constants/linux/qsdk_pub.hh | 2 +- .../linux/service_enclave_mrsigner.hh | 2 +- psw/ae/data/constants/linux/wl_pub.hh | 2 +- psw/ae/data/constants/linux/xegdsk_pub.hh | 2 +- psw/ae/inc/aeerror.h | 151 +- psw/ae/inc/byte_order.h | 2 +- psw/ae/inc/internal/Epid11_rl.h | 71 + psw/ae/inc/internal/aesm_error.h | 6 +- psw/ae/inc/internal/epid_pve_type.h | 2 +- psw/ae/inc/internal/le2be_macros.h | 2 +- psw/ae/inc/internal/pairing_blob.h | 114 + psw/ae/inc/internal/pce_cert.h | 2 +- psw/ae/inc/internal/pek_pub_key.h | 2 +- psw/ae/inc/internal/pse_inc.h | 2 +- psw/ae/inc/internal/pse_pr_common.h | 53 + psw/ae/inc/internal/pse_pr_sigma_1_1_defs.h | 176 + .../inc/internal/pse_pr_sigma_common_defs.h | 206 + psw/ae/inc/internal/pse_pr_types.h | 151 + psw/ae/inc/internal/pse_types.h | 6 +- psw/ae/inc/internal/pve_qe_common.h | 2 +- .../inc/internal/se_ecdsa_verify_internal.h | 2 +- psw/ae/inc/internal/t_pairing_blob.h | 53 + psw/ae/inc/internal/tlv_common.h | 2 +- psw/ae/inc/internal/utility.h | 2 +- psw/ae/inc/se_sig_rl.h | 2 +- psw/ae/le/Makefile | 2 +- psw/ae/le/config_linux.xml | 26 +- psw/ae/le/launch_enclave.cpp | 6 +- psw/ae/le/launch_enclave.edl | 2 +- psw/ae/le/launch_enclave.h | 2 +- psw/ae/pce/Makefile | 5 +- psw/ae/pce/pce.cpp | 2 +- psw/ae/pce/pce.edl | 2 +- psw/ae/pce/pce_helper.cpp | 5 +- psw/ae/pse/pse_op/Makefile | 76 + psw/ae/pse/pse_op/config.xml | 12 + psw/ae/pse/pse_op/createhash.pl | 59 + psw/ae/pse/pse_op/hashtable.txt | 23 + psw/ae/pse/pse_op/monotonic_counter.cpp | 201 + psw/ae/pse/pse_op/monotonic_counter.h | 60 + ...c_counter_database_sqlite_access_hw_mc.cpp | 149 + ...nic_counter_database_sqlite_access_hw_mc.h | 43 + ..._database_sqlite_bin_hash_tree_utility.cpp | 461 + ...er_database_sqlite_bin_hash_tree_utility.h | 59 + ...onotonic_counter_database_sqlite_cache.cpp | 427 + .../monotonic_counter_database_sqlite_cache.h | 68 + ...ic_counter_database_sqlite_check_error.cpp | 149 + ...onic_counter_database_sqlite_check_error.h | 41 + ...monotonic_counter_database_sqlite_rpdb.cpp | 583 + .../monotonic_counter_database_sqlite_rpdb.h | 67 + .../pse_op/monotonic_counter_database_types.h | 167 + psw/ae/pse/pse_op/psda_service.cpp | 545 + psw/ae/pse/pse_op/psda_service.h | 94 + psw/ae/pse/pse_op/pse_op.cpp | 382 + psw/ae/pse/pse_op/pse_op.edl | 87 + psw/ae/pse/pse_op/session_mgr.cpp | 717 + psw/ae/pse/pse_op/session_mgr.h | 128 + psw/ae/pse/pse_op/trusted_time.cpp | 83 + psw/ae/pse/pse_op/trusted_time.h | 45 + psw/ae/pse/pse_op/utility.cpp | 94 + psw/ae/pse/pse_op/vmc_db_generator/Makefile | 97 + psw/ae/pse/pse_op/vmc_db_generator/main.cpp | 288 + .../vmc_db_generator/prebuild_pse_vmc.db | Bin 0 -> 1082368 bytes psw/ae/pse/pse_pr/Keys.cpp | 39 + psw/ae/pse/pse_pr/Keys.h | 56 + psw/ae/pse/pse_pr/Makefile | 93 + psw/ae/pse/pse_pr/X509Parser.cpp | 151 + psw/ae/pse/pse_pr/X509_Parser/X509AlgoType.h | 112 + psw/ae/pse/pse_pr/X509_Parser/X509Cert.h | 542 + .../pse/pse_pr/X509_Parser/X509_Interface.h | 53 + psw/ae/pse/pse_pr/X509_Parser/X509_Parser.cpp | 3715 + psw/ae/pse/pse_pr/X509_Parser/X509_Parser.h | 47 + .../pse/pse_pr/X509_Parser/pse_pr_support.h | 124 + psw/ae/pse/pse_pr/X509_Parser/typedef.h | 66 + psw/ae/pse/pse_pr/config.xml | 12 + psw/ae/pse/pse_pr/include/X509Parser.h | 67 + psw/ae/pse/pse_pr/include/csr_template_data.h | 82 + .../pse/pse_pr/include/prepare_hash_sha256.h | 69 + .../pse/pse_pr/include/prepare_hmac_sha256.h | 67 + .../include/protected_output_certificates.h | 221 + psw/ae/pse/pse_pr/include/pse_pr_inc.h | 49 + psw/ae/pse/pse_pr/include/safe_id.h | 65 + .../pse/pse_pr/include/sigma_crypto_layer.h | 96 + psw/ae/pse/pse_pr/include/sign_csr.h | 62 + psw/ae/pse/pse_pr/include/sign_template.h | 79 + .../pse_pr/include/signing_template_info.h | 55 + .../include/t_certificate_provisioning.h | 54 + .../pse/pse_pr/include/t_long_term_pairing.h | 129 + psw/ae/pse/pse_pr/prepare_hash_sha1.cpp | 122 + psw/ae/pse/pse_pr/prepare_hash_sha1.h | 72 + psw/ae/pse/pse_pr/prepare_hash_sha256.cpp | 112 + psw/ae/pse/pse_pr/prepare_hmac_sha256.cpp | 142 + psw/ae/pse/pse_pr/pse_pr.cpp | 218 + psw/ae/pse/pse_pr/pse_pr.edl | 81 + psw/ae/pse/pse_pr/sigma_crypto_layer.cpp | 353 + psw/ae/pse/pse_pr/sign_csr.cpp | 350 + .../pse/pse_pr/t_certificate_provisioning.cpp | 220 + psw/ae/pse/pse_pr/t_long_term_pairing.cpp | 1045 + psw/ae/pse/pse_pr/x509_parser_status.h | 62 + psw/ae/pve/Makefile | 4 +- psw/ae/pve/cipher.cpp | 6 +- psw/ae/pve/cipher.h | 2 +- psw/ae/pve/config.xml | 24 +- psw/ae/pve/endpoint_selection.cpp | 2 +- psw/ae/pve/helper.cpp | 12 +- psw/ae/pve/helper.h | 2 +- psw/ae/pve/msg3_parm.h | 2 +- psw/ae/pve/protocol.h | 2 +- psw/ae/pve/provision_enclave.cpp | 2 +- psw/ae/pve/provision_enclave.edl | 2 +- psw/ae/pve/provision_msg.h | 2 +- psw/ae/pve/provision_msg1.cpp | 4 +- psw/ae/pve/provision_msg2.cpp | 3 +- psw/ae/pve/provision_msg3.cpp | 25 +- psw/ae/pve/provision_msg4.cpp | 11 +- psw/ae/pve/pve_hardcoded_tlv_data.h | 2 +- psw/ae/pve/pve_rng.cpp | 2 +- psw/ae/pve/pve_verify_signature.cpp | 5 +- psw/ae/qe/Makefile | 4 +- psw/ae/qe/config.xml | 26 +- psw/ae/qe/quoting_enclave.cpp | 14 +- psw/ae/qe/quoting_enclave.edl | 2 +- psw/uae_service/config.h | 2 +- psw/uae_service/linux/Makefile | 54 +- psw/uae_service/sgx_uae_service.cpp | 7 +- psw/uae_service/uae_service_assert.cpp | 5 +- psw/uae_service/uae_service_version.cpp | 2 +- .../uae_wrapper/inc/AEInternalServices.h | 62 - psw/uae_service/uae_wrapper/inc/AEServices.h | 256 +- .../uae_wrapper/inc/AEServicesImpl.h | 36 +- .../uae_wrapper/inc/AEServicesProvider.h | 2 +- .../uae_wrapper/src/AEServicesImpl.cpp | 464 +- .../uae_wrapper/src/AEServicesProvider.cpp | 4 +- .../uae_wrapper/src/tae_ocall_api.cpp | 146 +- psw/uae_service/uae_wrapper/src/uae_api.cpp | 299 +- psw/urts/cpu_features.cpp | 2 +- psw/urts/cpu_features.h | 2 +- psw/urts/create_param.h | 2 +- psw/urts/enclave.cpp | 2 +- psw/urts/enclave.h | 2 +- psw/urts/enclave_creator_hw.h | 2 +- psw/urts/enclave_creator_hw_com.cpp | 2 +- psw/urts/enclave_mutex.cpp | 2 +- psw/urts/file.h | 2 +- psw/urts/launch_checker.cpp | 2 +- psw/urts/launch_checker.h | 2 +- psw/urts/linux/Makefile | 6 +- psw/urts/linux/debugger_support.cpp | 2 +- psw/urts/linux/debugger_support.h | 2 +- psw/urts/linux/enclave_creator_hw.cpp | 11 +- psw/urts/linux/enter_enclave.S | 2 +- psw/urts/linux/enter_enclave.h | 2 +- psw/urts/linux/get_thread_id.cpp | 2 +- psw/urts/linux/isgx_user.h | 2 +- psw/urts/linux/misc.cpp | 2 +- psw/urts/linux/read_xcr0.h | 2 +- psw/urts/linux/sig_handler.cpp | 2 +- psw/urts/linux/sig_handler.h | 2 +- psw/urts/linux/urts.cpp | 2 +- psw/urts/linux/urts_internal.cpp | 2 +- psw/urts/loader.cpp | 2 +- psw/urts/loader.h | 2 +- psw/urts/node.cpp | 5 +- psw/urts/node.h | 6 +- psw/urts/parser/Makefile | 2 +- psw/urts/parser/binparser.h | 2 +- psw/urts/parser/clearvars.h | 2 +- psw/urts/parser/elf32parser.cpp | 2 +- psw/urts/parser/elf32parser.h | 2 +- psw/urts/parser/elf64parser.cpp | 2 +- psw/urts/parser/elf64parser.h | 2 +- psw/urts/parser/elfparser.cpp | 2 +- psw/urts/parser/elfparser.h | 2 +- psw/urts/parser/parserfactory.cpp | 2 +- psw/urts/parser/parserfactory.h | 2 +- psw/urts/parser/section.cpp | 2 +- psw/urts/parser/section.h | 2 +- psw/urts/parser/update_global_data.hxx | 2 +- psw/urts/prd_css_util.cpp | 2 +- psw/urts/prd_css_util.h | 2 +- psw/urts/routine.cpp | 2 +- psw/urts/se_detect.cpp | 2 +- psw/urts/se_detect.h | 2 +- psw/urts/se_ocalls.cpp | 2 +- psw/urts/section_info.h | 2 +- psw/urts/tcs.cpp | 11 +- psw/urts/tcs.h | 2 +- psw/urts/urts_com.h | 2 +- psw/urts/urts_version.cpp | 2 +- psw/urts/urts_xsave.cpp | 2 +- sdk/Makefile | 2 +- sdk/Makefile.opt_lib | 13 +- sdk/Makefile.source | 11 +- sdk/compiler-rt/Makefile | 2 +- sdk/compiler-rt/stack_chk.c | 2 +- sdk/cpprt/Makefile | 2 +- sdk/cpprt/linux/guard.cc | 3 +- sdk/cpprt/linux/libunwind/autogen-linux.sh | 2 +- .../linux/libunwind/src/se-iterate-phdr.c | 2 +- sdk/cpprt/linux/libunwind/src/se-libc-stubs.c | 2 +- sdk/cpprt/linux/pthread_compat.h | 2 +- sdk/cpprt/memory_manage/delete1.cpp | 2 +- sdk/cpprt/memory_manage/delete2.cpp | 2 +- sdk/cpprt/memory_manage/delete3.cpp | 2 +- sdk/cpprt/memory_manage/delete4.cpp | 2 +- sdk/cpprt/memory_manage/delete5.cpp | 2 +- sdk/cpprt/memory_manage/delete6.cpp | 2 +- sdk/cpprt/memory_manage/new1.cpp | 2 +- sdk/cpprt/memory_manage/new2.cpp | 2 +- sdk/cpprt/memory_manage/new3.cpp | 2 +- sdk/cpprt/memory_manage/new4.cpp | 2 +- sdk/cpprt/memory_manage/new5.cpp | 2 +- sdk/cpprt/memory_manage/new6.cpp | 2 +- sdk/cpprt/memory_manage/new_handler.cpp | 2 +- sdk/cpprt/tstdcxx_version.cpp | 2 +- sdk/debugger_interface/linux/Makefile | 2 +- .../linux/gdb-sgx-plugin/gdb_sgx_cmd | 2 +- .../linux/gdb-sgx-plugin/gdb_sgx_plugin.py | 15 +- .../linux/gdb-sgx-plugin/load_symbol_cmd.py | 2 +- .../linux/gdb-sgx-plugin/readelf.py | 2 +- .../linux/gdb-sgx-plugin/sgx_emmt.py | 2 +- sdk/debugger_interface/linux/ptrace_version.c | 2 +- sdk/debugger_interface/linux/se_ptrace.c | 159 +- sdk/ec_dh_lib/Makefile | 2 +- sdk/ec_dh_lib/ec_dh.cpp | 2 +- sdk/ec_dh_lib/sgx_dh_internal.h | 7 +- sdk/edger8r/linux/Ast.ml | 2 +- sdk/edger8r/linux/CodeGen.ml | 2 +- sdk/edger8r/linux/Edger8r.ml | 2 +- sdk/edger8r/linux/Lexer.mll | 2 +- sdk/edger8r/linux/Makefile | 2 +- sdk/edger8r/linux/Parser.mly | 2 +- sdk/edger8r/linux/Preprocessor.ml | 2 +- sdk/edger8r/linux/SimpleStack.ml | 2 +- sdk/edger8r/linux/Util.ml | 2 +- sdk/gperftools/Makefile | 59 + sdk/gperftools/README | 21 + sdk/gperftools/gperftools-2.5/Makefile.am | 1473 + sdk/gperftools/gperftools-2.5/Makefile.in | 6817 + sdk/gperftools/gperftools-2.5/README | 283 + .../gperftools-2.5/autogen-linux.sh | 78 + .../gperftools-2.5/benchmark/binary_trees.cc | 106 + .../gperftools-2.5/benchmark/malloc_bench.cc | 184 + .../gperftools-2.5/benchmark/run_benchmark.c | 112 + .../gperftools-2.5/benchmark/run_benchmark.h | 43 + sdk/gperftools/gperftools-2.5/config.guess | 1441 + sdk/gperftools/gperftools-2.5/config.sub | 1813 + sdk/gperftools/gperftools-2.5/configure | 22570 +++ sdk/gperftools/gperftools-2.5/depcomp | 791 + sdk/gperftools/gperftools-2.5/install-sh | 508 + sdk/gperftools/gperftools-2.5/ltmain.sh | 11156 ++ .../gperftools-2.5/src/addressmap-inl.h | 422 + .../src/base/arm_instruction_set_select.h | 84 + .../base/atomicops-internals-arm-generic.h | 228 + .../src/base/atomicops-internals-arm-v6plus.h | 330 + .../src/base/atomicops-internals-gcc.h | 203 + .../src/base/atomicops-internals-linuxppc.h | 437 + .../src/base/atomicops-internals-macosx.h | 370 + .../src/base/atomicops-internals-mips.h | 323 + .../src/base/atomicops-internals-windows.h | 457 + .../src/base/atomicops-internals-x86.cc | 112 + .../src/base/atomicops-internals-x86.h | 391 + .../gperftools-2.5/src/base/atomicops.h | 391 + .../gperftools-2.5/src/base/basictypes.h | 392 + .../src/base/commandlineflags.h | 166 + .../src/base/dynamic_annotations.c | 179 + .../src/base/dynamic_annotations.h | 627 + .../gperftools-2.5/src/base/elf_mem_image.cc | 434 + .../gperftools-2.5/src/base/elf_mem_image.h | 135 + .../gperftools-2.5/src/base/elfcore.h | 401 + .../gperftools-2.5/src/base/googleinit.h | 74 + .../src/base/linux_syscall_support.h | 2755 + .../gperftools-2.5/src/base/linuxthreads.cc | 707 + .../gperftools-2.5/src/base/linuxthreads.h | 54 + .../gperftools-2.5/src/base/logging.cc | 108 + .../gperftools-2.5/src/base/logging.h | 261 + .../src/base/low_level_alloc.cc | 582 + .../gperftools-2.5/src/base/low_level_alloc.h | 120 + .../gperftools-2.5/src/base/sgx_utils.cc | 66 + .../gperftools-2.5/src/base/simple_mutex.h | 332 + .../gperftools-2.5/src/base/spinlock.cc | 137 + .../gperftools-2.5/src/base/spinlock.h | 143 + .../src/base/spinlock_internal.cc | 102 + .../src/base/spinlock_internal.h | 51 + .../src/base/spinlock_linux-inl.h | 101 + .../src/base/spinlock_posix-inl.h | 63 + .../src/base/spinlock_win32-inl.h | 54 + .../gperftools-2.5/src/base/stl_allocator.h | 98 + .../gperftools-2.5/src/base/sysinfo.cc | 860 + .../gperftools-2.5/src/base/sysinfo.h | 232 + .../src/base/thread_annotations.h | 134 + .../gperftools-2.5/src/base/thread_lister.c | 83 + .../gperftools-2.5/src/base/thread_lister.h | 83 + .../gperftools-2.5/src/base/vdso_support.cc | 143 + .../gperftools-2.5/src/base/vdso_support.h | 132 + .../gperftools-2.5/src/central_freelist.cc | 387 + .../gperftools-2.5/src/central_freelist.h | 211 + sdk/gperftools/gperftools-2.5/src/common.cc | 275 + sdk/gperftools/gperftools-2.5/src/common.h | 295 + sdk/gperftools/gperftools-2.5/src/config.h.in | 326 + .../gperftools-2.5/src/config_for_unittests.h | 65 + .../gperftools-2.5/src/debugallocation.cc | 1490 + .../gperftools-2.5/src/emergency_malloc.cc | 169 + .../gperftools-2.5/src/emergency_malloc.h | 60 + .../src/emergency_malloc_for_stacktrace.cc | 48 + .../gperftools-2.5/src/getenv_safe.h | 63 + sdk/gperftools/gperftools-2.5/src/getpc.h | 187 + .../gperftools-2.5/src/google/heap-checker.h | 36 + .../gperftools-2.5/src/google/heap-profiler.h | 37 + .../src/google/malloc_extension.h | 36 + .../src/google/malloc_extension_c.h | 37 + .../gperftools-2.5/src/google/malloc_hook.h | 36 + .../gperftools-2.5/src/google/malloc_hook_c.h | 37 + .../gperftools-2.5/src/google/profiler.h | 37 + .../gperftools-2.5/src/google/stacktrace.h | 36 + .../gperftools-2.5/src/google/tcmalloc.h | 37 + .../src/gperftools/heap-checker.h | 422 + .../src/gperftools/heap-profiler.h | 105 + .../src/gperftools/malloc_extension.h | 434 + .../src/gperftools/malloc_extension_c.h | 101 + .../src/gperftools/malloc_hook.h | 359 + .../src/gperftools/malloc_hook_c.h | 173 + .../gperftools-2.5/src/gperftools/profiler.h | 169 + .../src/gperftools/stacktrace.h | 117 + .../src/gperftools/tcmalloc.h.in | 147 + .../gperftools-2.5/src/heap-checker-bcad.cc | 93 + .../gperftools-2.5/src/heap-checker.cc | 2388 + .../gperftools-2.5/src/heap-profile-stats.h | 78 + .../gperftools-2.5/src/heap-profile-table.cc | 631 + .../gperftools-2.5/src/heap-profile-table.h | 399 + .../gperftools-2.5/src/heap-profiler.cc | 620 + .../gperftools-2.5/src/internal_logging.cc | 207 + .../gperftools-2.5/src/internal_logging.h | 149 + .../gperftools-2.5/src/libc_override.h | 91 + .../src/libc_override_gcc_and_weak.h | 178 + .../gperftools-2.5/src/libc_override_glibc.h | 146 + .../src/libc_override_redefine.h | 92 + .../gperftools-2.5/src/linked_list.h | 103 + .../gperftools-2.5/src/malloc_extension.cc | 398 + .../gperftools-2.5/src/malloc_hook-inl.h | 249 + .../gperftools-2.5/src/malloc_hook.cc | 705 + .../src/malloc_hook_mmap_freebsd.h | 135 + .../src/malloc_hook_mmap_linux.h | 252 + .../src/maybe_emergency_malloc.h | 55 + .../gperftools-2.5/src/maybe_threads.cc | 203 + .../gperftools-2.5/src/maybe_threads.h | 61 + .../gperftools-2.5/src/memfs_malloc.cc | 272 + .../gperftools-2.5/src/memory_region_map.cc | 831 + .../gperftools-2.5/src/memory_region_map.h | 413 + .../gperftools-2.5/src/packed-cache-inl.h | 239 + .../gperftools-2.5/src/page_heap.cc | 682 + sdk/gperftools/gperftools-2.5/src/page_heap.h | 316 + .../gperftools-2.5/src/page_heap_allocator.h | 114 + sdk/gperftools/gperftools-2.5/src/pagemap.h | 324 + sdk/gperftools/gperftools-2.5/src/pprof | 5590 + .../gperftools-2.5/src/profile-handler.cc | 584 + .../gperftools-2.5/src/profile-handler.h | 142 + .../gperftools-2.5/src/profiledata.cc | 332 + .../gperftools-2.5/src/profiledata.h | 184 + sdk/gperftools/gperftools-2.5/src/profiler.cc | 431 + .../gperftools-2.5/src/raw_printer.cc | 72 + .../gperftools-2.5/src/raw_printer.h | 90 + sdk/gperftools/gperftools-2.5/src/sampler.cc | 131 + sdk/gperftools/gperftools-2.5/src/sampler.h | 180 + sdk/gperftools/gperftools-2.5/src/span.cc | 102 + sdk/gperftools/gperftools-2.5/src/span.h | 102 + .../gperftools-2.5/src/stack_trace_table.cc | 160 + .../gperftools-2.5/src/stack_trace_table.h | 92 + .../gperftools-2.5/src/stacktrace.cc | 339 + .../gperftools-2.5/src/stacktrace_arm-inl.h | 148 + .../src/stacktrace_generic-inl.h | 84 + .../src/stacktrace_impl_setup-inl.h | 94 + .../src/stacktrace_instrument-inl.h | 155 + .../src/stacktrace_libgcc-inl.h | 111 + .../src/stacktrace_libunwind-inl.h | 150 + .../src/stacktrace_powerpc-darwin-inl.h | 158 + .../src/stacktrace_powerpc-inl.h | 176 + .../src/stacktrace_powerpc-linux-inl.h | 231 + .../gperftools-2.5/src/stacktrace_win32-inl.h | 107 + .../gperftools-2.5/src/stacktrace_x86-inl.h | 354 + .../gperftools-2.5/src/static_vars.cc | 125 + .../gperftools-2.5/src/static_vars.h | 115 + .../gperftools-2.5/src/symbolize.cc | 289 + sdk/gperftools/gperftools-2.5/src/symbolize.h | 89 + .../gperftools-2.5/src/system-alloc.cc | 564 + .../gperftools-2.5/src/system-alloc.h | 92 + sdk/gperftools/gperftools-2.5/src/tcmalloc.cc | 1837 + sdk/gperftools/gperftools-2.5/src/tcmalloc.h | 70 + .../gperftools-2.5/src/tcmalloc_guard.h | 49 + .../src/tests/addressmap_unittest.cc | 171 + .../src/tests/atomicops_unittest.cc | 162 + .../src/tests/current_allocated_bytes_test.cc | 64 + .../src/tests/debugallocation_test.cc | 332 + .../src/tests/debugallocation_test.sh | 98 + .../gperftools-2.5/src/tests/frag_unittest.cc | 133 + .../gperftools-2.5/src/tests/getpc_test.cc | 123 + .../src/tests/heap-checker-death_unittest.sh | 176 + .../src/tests/heap-checker_unittest.cc | 1538 + .../src/tests/heap-checker_unittest.sh | 89 + .../src/tests/heap-profiler_unittest.cc | 168 + .../src/tests/heap-profiler_unittest.sh | 147 + .../large_heap_fragmentation_unittest.cc | 62 + .../src/tests/low_level_alloc_unittest.cc | 197 + .../src/tests/malloc_extension_c_test.c | 182 + .../src/tests/malloc_extension_test.cc | 98 + .../src/tests/malloc_hook_test.cc | 367 + .../src/tests/markidle_unittest.cc | 127 + .../src/tests/maybe_threads_unittest.sh | 79 + .../src/tests/memalign_unittest.cc | 221 + .../src/tests/packed-cache_test.cc | 63 + .../src/tests/page_heap_test.cc | 169 + .../src/tests/pagemap_unittest.cc | 178 + .../src/tests/profile-handler_unittest.cc | 398 + .../src/tests/profiledata_unittest.cc | 611 + .../src/tests/profiler_unittest.cc | 147 + .../src/tests/profiler_unittest.sh | 269 + .../src/tests/raw_printer_test.cc | 64 + .../src/tests/realloc_unittest.cc | 125 + .../gperftools-2.5/src/tests/sampler_test.cc | 658 + .../gperftools-2.5/src/tests/sampling_test.cc | 83 + .../gperftools-2.5/src/tests/sampling_test.sh | 94 + .../src/tests/simple_compat_test.cc | 68 + .../src/tests/stack_trace_table_test.cc | 102 + .../src/tests/stacktrace_unittest.cc | 194 + .../src/tests/system-alloc_unittest.cc | 155 + .../src/tests/tcmalloc_large_unittest.cc | 138 + .../src/tests/tcmalloc_unittest.cc | 1432 + .../src/tests/tcmalloc_unittest.sh | 84 + .../gperftools-2.5/src/tests/testutil.cc | 224 + .../gperftools-2.5/src/tests/testutil.h | 62 + .../src/tests/thread_dealloc_unittest.cc | 84 + .../gperftools-2.5/src/thread_cache.cc | 479 + .../gperftools-2.5/src/thread_cache.h | 480 + .../gperftools-2.5/src/windows/TODO | 86 + .../src/windows/addr2line-pdb.c | 163 + .../src/windows/auto_testing_hook.h | 156 + .../gperftools-2.5/src/windows/config.h | 320 + .../src/windows/get_mangled_names.cc | 65 + .../src/windows/gperftools/tcmalloc.h | 139 + .../src/windows/gperftools/tcmalloc.h.in | 139 + .../src/windows/ia32_modrm_map.cc | 121 + .../src/windows/ia32_opcode_map.cc | 1219 + .../gperftools-2.5/src/windows/mingw.h | 72 + .../src/windows/mini_disassembler.cc | 432 + .../src/windows/mini_disassembler.h | 198 + .../src/windows/mini_disassembler_types.h | 237 + .../gperftools-2.5/src/windows/nm-pdb.c | 273 + .../src/windows/override_functions.cc | 123 + .../src/windows/patch_functions.cc | 1088 + .../gperftools-2.5/src/windows/port.cc | 235 + .../gperftools-2.5/src/windows/port.h | 497 + .../src/windows/preamble_patcher.cc | 736 + .../src/windows/preamble_patcher.h | 620 + .../src/windows/preamble_patcher_test.cc | 368 + .../src/windows/preamble_patcher_with_stub.cc | 302 + .../gperftools-2.5/src/windows/shortproc.asm | 169 + .../src/windows/system-alloc.cc | 204 + sdk/sample_libcrypto/Makefile | 2 +- sdk/sample_libcrypto/sample_libcrypto.cpp | 2 +- sdk/sample_libcrypto/sample_libcrypto.h | 2 +- sdk/selib/linux/Makefile | 2 +- sdk/selib/sgx_create_report.cpp | 2 +- sdk/selib/sgx_get_key.cpp | 2 +- sdk/selib/sgx_verify_report.cpp | 2 +- sdk/selib/tservice_version.cpp | 2 +- sdk/sign_tool/SignTool/Makefile | 24 +- sdk/sign_tool/SignTool/elf_helper.h | 2 +- .../SignTool/enclave_creator_sign.cpp | 8 +- sdk/sign_tool/SignTool/enclave_creator_sign.h | 5 +- sdk/sign_tool/SignTool/manage_metadata.cpp | 2 +- sdk/sign_tool/SignTool/manage_metadata.h | 2 +- sdk/sign_tool/SignTool/parse_key_file.cpp | 2 +- sdk/sign_tool/SignTool/parse_key_file.h | 2 +- sdk/sign_tool/SignTool/sign_tool.cpp | 25 +- sdk/sign_tool/SignTool/util_st.cpp | 2 +- sdk/sign_tool/SignTool/util_st.h | 4 +- sdk/simulation/Makefile | 2 +- .../SEConfigureCPUSVN/linux/Makefile | 2 +- .../SEConfigureCPUSVN/linux/config_cpusvn.cpp | 2 +- .../SEConfigureCPUSVN/linux/cpusvn_helper.h | 2 +- sdk/simulation/assembly/Makefile | 2 +- sdk/simulation/assembly/linux/Makefile | 2 +- sdk/simulation/assembly/linux/gnu_tls.h | 2 +- sdk/simulation/assembly/linux/lowlib.S | 2 +- sdk/simulation/assembly/linux/sgxsim.S | 2 +- sdk/simulation/assembly/linux/sw_emu.h | 2 +- sdk/simulation/assembly/lowlib.h | 2 +- sdk/simulation/assembly/sgxsim.h | 2 +- sdk/simulation/driver_api/Makefile | 2 +- sdk/simulation/driver_api/driver_api.cpp | 2 +- sdk/simulation/tae_service_sim/Makefile | 2 +- .../tae_service_sim/tae_service_sim.cpp | 21 +- sdk/simulation/tinst/Makefile | 2 +- sdk/simulation/tinst/deriv.cpp | 8 +- sdk/simulation/tinst/deriv.h | 4 +- sdk/simulation/tinst/rts_sim.h | 2 +- sdk/simulation/tinst/t_instructions.cpp | 6 +- sdk/simulation/tinst/t_instructions.h | 2 +- sdk/simulation/trtssim/Makefile | 2 +- sdk/simulation/trtssim/linux/Makefile | 2 +- .../uae_service_sim/licensing_sim.cpp | 2 +- sdk/simulation/uae_service_sim/linux/Makefile | 6 +- .../linux/platform_service_sim.cpp | 2 +- .../platform_service_sim_com.cpp | 2 +- .../uae_service_sim/quoting_sim.cpp | 5 +- .../uae_service_sim/uae_service_deploy.c | 2 +- .../uae_service_sim/uae_service_sim.h | 2 +- sdk/simulation/uinst/Makefile | 4 +- sdk/simulation/uinst/enclave_mngr.cpp | 2 +- sdk/simulation/uinst/enclave_mngr.h | 2 +- sdk/simulation/uinst/linux/Makefile | 2 +- sdk/simulation/uinst/linux/get_tcs.c | 2 +- sdk/simulation/uinst/linux/restore_tls.c | 2 +- sdk/simulation/uinst/linux/set_tls.c | 2 +- sdk/simulation/uinst/td_mngr.h | 2 +- sdk/simulation/uinst/u_instructions.cpp | 2 +- sdk/simulation/uinst/u_instructions.h | 2 +- sdk/simulation/urtssim/Makefile | 2 +- sdk/simulation/urtssim/cpusvn_util.cpp | 2 +- sdk/simulation/urtssim/cpusvn_util.h | 2 +- .../urtssim/enclave_creator_sim.cpp | 2 +- sdk/simulation/urtssim/enclave_creator_sim.h | 2 +- sdk/simulation/urtssim/linux/Makefile | 6 +- sdk/simulation/urtssim/urts_deploy.c | 2 +- sdk/simulation/urtssim/urts_sim.h | 2 +- sdk/tae_service/Makefile | 2 +- sdk/tae_service/tae_config.h | 7 +- sdk/tae_service/tae_service.cpp | 39 +- sdk/tkey_exchange/Makefile | 2 +- sdk/tkey_exchange/simple_vector.cpp | 2 +- sdk/tkey_exchange/simple_vector.h | 2 +- sdk/tkey_exchange/tkey_exchange.cpp | 3 +- sdk/tkey_exchange/tkey_exchange_version.cpp | 2 +- sdk/tlibc/Makefile | 2 +- sdk/tlibc/gen/errno.c | 2 +- sdk/tlibc/gen/sbrk.c | 2 +- sdk/tlibc/gen/se_cpuid.c | 2 +- sdk/tlibc/gen/spinlock.c | 2 +- sdk/tlibc/math/w_dreml.c | 2 +- sdk/tlibc/math/w_pow10.c | 2 +- sdk/tlibc/math/w_pow10f.c | 2 +- sdk/tlibc/math/w_pow10l.c | 2 +- sdk/tlibc/stdlib/malloc.c | 7 +- sdk/tlibc/string/ffs.c | 2 +- sdk/tlibc/string/ffsl.c | 2 +- sdk/tlibc/string/ffsll.c | 2 +- sdk/tlibc/string/se_string_init.c | 2 +- sdk/tlibc/tstdc_version.cpp | 2 +- sdk/tlibcrypto/Makefile | 4 +- sdk/tlibcrypto/init_tcrypto_lib.cpp | 2 +- sdk/tlibcrypto/sgx_aes_ctr.cpp | 2 +- sdk/tlibcrypto/sgx_aes_gcm.cpp | 2 +- sdk/tlibcrypto/sgx_cmac128.cpp | 2 +- sdk/tlibcrypto/sgx_ecc256.cpp | 2 +- sdk/tlibcrypto/sgx_ecc256_common.cpp | 2 +- sdk/tlibcrypto/sgx_ecc256_common.h | 2 +- sdk/tlibcrypto/sgx_ecc256_ecdsa.cpp | 2 +- sdk/tlibcrypto/sgx_ecc512.cpp | 170 + sdk/tlibcrypto/sgx_sha256.cpp | 2 +- sdk/tlibcrypto/sgx_sha256_msg.cpp | 2 +- sdk/tlibcrypto/tcrypto_version.cpp | 2 +- sdk/tlibstdcxx/Makefile | 2 +- sdk/tlibstdcxx/stlport/stl/config/_sgx.h | 2 +- sdk/tlibthread/Makefile | 2 +- sdk/tlibthread/sethread_cond.cpp | 2 +- sdk/tlibthread/sethread_internal.h | 2 +- sdk/tlibthread/sethread_mutex.cpp | 2 +- sdk/tlibthread/sethread_utils.cpp | 2 +- sdk/trts/Makefile | 4 +- sdk/trts/init_enclave.cpp | 2 +- sdk/trts/init_optimized_lib.cpp | 2 +- sdk/trts/init_optimized_lib.h | 2 +- sdk/trts/linux/Makefile | 2 +- sdk/trts/linux/elf_parser.c | 2 +- sdk/trts/linux/elf_parser.h | 2 +- sdk/trts/linux/global_init.c | 10 +- sdk/trts/linux/metadata_sec.S | 2 +- sdk/trts/linux/tls_support.c | 2 +- sdk/trts/linux/trts_pic.S | 2 +- sdk/trts/linux/trts_pic.h | 2 +- sdk/trts/linux/x86/Makefile | 2 +- sdk/trts/linux/x86/setcontext.S | 2 +- sdk/trts/linux/x86_64/Makefile | 2 +- sdk/trts/trts.cpp | 2 +- sdk/trts/trts_ecall.cpp | 2 +- sdk/trts/trts_internal.h | 2 +- sdk/trts/trts_ocall.cpp | 2 +- sdk/trts/trts_util.cpp | 2 +- sdk/trts/trts_util.h | 2 +- sdk/trts/trts_veh.cpp | 2 +- sdk/trts/trts_version.cpp | 2 +- sdk/trts/trts_xsave.cpp | 8 +- sdk/tseal/linux/Makefile | 2 +- sdk/tseal/tSeal.cpp | 4 +- sdk/tseal/tSeal_aad.cpp | 2 +- sdk/tseal/tSeal_internal.cpp | 8 +- sdk/tseal/tSeal_internal.h | 18 +- sdk/tseal/tSeal_util.cpp | 2 +- sdk/tsetjmp/Makefile | 2 +- sdk/tsetjmp/tlongjmp_version.cpp | 2 +- sdk/ukey_exchange/Makefile | 2 +- sdk/ukey_exchange/ukey_exchange.cpp | 2 +- sdk/ukey_exchange/ukey_exchange_version.cpp | 2 +- 1822 files changed, 456035 insertions(+), 6987 deletions(-) create mode 100644 SampleCode/LocalAttestation/Enclave1/Enclave1.lds create mode 100644 SampleCode/LocalAttestation/Enclave2/Enclave2.lds create mode 100644 SampleCode/LocalAttestation/Enclave3/Enclave3.lds create mode 100644 SampleCode/SealedData/.cproject create mode 100644 SampleCode/SealedData/.project create mode 100644 SampleCode/SealedData/DRM_app/DRM_app.cpp create mode 100644 SampleCode/SealedData/DRM_app/ReplayProtectedDRM.cpp create mode 100644 SampleCode/SealedData/DRM_app/ReplayProtectedDRM.h create mode 100644 SampleCode/SealedData/DRM_app/TimeBasedDRM.cpp create mode 100644 SampleCode/SealedData/DRM_app/TimeBasedDRM.h create mode 100644 SampleCode/SealedData/DRM_enclave/DRM_enclave.config.xml create mode 100644 SampleCode/SealedData/DRM_enclave/DRM_enclave.cpp create mode 100644 SampleCode/SealedData/DRM_enclave/DRM_enclave.edl create mode 100644 SampleCode/SealedData/DRM_enclave/DRM_enclave.lds create mode 100644 SampleCode/SealedData/DRM_enclave/DRM_enclave_private.pem create mode 100644 SampleCode/SealedData/Makefile create mode 100644 SampleCode/SealedData/README.txt create mode 100644 SampleCode/SealedData/include/sealed_data_defines.h create mode 100644 external/DALSdk/JHI/linux/jhi.h create mode 100644 external/DALSdk/JHI/linux/typedefs.h create mode 100644 external/epid-sdk-3.0.0/CHANGELOG.md create mode 100644 external/epid-sdk-3.0.0/LICENSE.txt create mode 100644 external/epid-sdk-3.0.0/Makefile.in create mode 100644 external/epid-sdk-3.0.0/NOTICE.txt create mode 100644 external/epid-sdk-3.0.0/README.md create mode 100644 external/epid-sdk-3.0.0/SConstruct create mode 100755 external/epid-sdk-3.0.0/configure create mode 100644 external/epid-sdk-3.0.0/configure.ac create mode 100644 external/epid-sdk-3.0.0/doc/html/1_81_2file__parser_8h.html create mode 100644 external/epid-sdk-3.0.0/doc/html/1_81_2types_8h.html create mode 100644 external/epid-sdk-3.0.0/doc/html/Basenames.html create mode 100644 external/epid-sdk-3.0.0/doc/html/BuildToolsInstallation.html create mode 100644 external/epid-sdk-3.0.0/doc/html/BuildingSdk.html create mode 100644 external/epid-sdk-3.0.0/doc/html/ChangeLog.html create mode 100644 external/epid-sdk-3.0.0/doc/html/ChoosingiKGF.html create mode 100644 external/epid-sdk-3.0.0/doc/html/EpidOverview.html create mode 100644 external/epid-sdk-3.0.0/doc/html/Examples.html create mode 100644 external/epid-sdk-3.0.0/doc/html/Examples.js create mode 100644 external/epid-sdk-3.0.0/doc/html/Glossary.html create mode 100644 external/epid-sdk-3.0.0/doc/html/ImplementationNotes.html create mode 100644 external/epid-sdk-3.0.0/doc/html/IssuerMaterial.html create mode 100644 external/epid-sdk-3.0.0/doc/html/LegalInformation.html create mode 100644 external/epid-sdk-3.0.0/doc/html/Revocation.html create mode 100644 external/epid-sdk-3.0.0/doc/html/SdkOverview.html create mode 100644 external/epid-sdk-3.0.0/doc/html/SignVerifyTutorial.html create mode 100644 external/epid-sdk-3.0.0/doc/html/SignmsgWalkthru.html create mode 100644 external/epid-sdk-3.0.0/doc/html/VerifysigWalkthru.html create mode 100644 external/epid-sdk-3.0.0/doc/html/annotated.html create mode 100644 external/epid-sdk-3.0.0/doc/html/arrowdown.png create mode 100644 external/epid-sdk-3.0.0/doc/html/arrowright.png create mode 100644 external/epid-sdk-3.0.0/doc/html/basenames_8dox.html create mode 100644 external/epid-sdk-3.0.0/doc/html/basicdoc.png create mode 100644 external/epid-sdk-3.0.0/doc/html/bc_s.png create mode 100644 external/epid-sdk-3.0.0/doc/html/bdwn.png create mode 100644 external/epid-sdk-3.0.0/doc/html/bignum_8h.html create mode 100644 external/epid-sdk-3.0.0/doc/html/bitsupplier_8h.html create mode 100644 external/epid-sdk-3.0.0/doc/html/build__tools__installation_8dox.html create mode 100644 external/epid-sdk-3.0.0/doc/html/building__sdk_8dox.html create mode 100644 external/epid-sdk-3.0.0/doc/html/choosing__ikgf_8dox.html create mode 100644 external/epid-sdk-3.0.0/doc/html/classes.html create mode 100644 external/epid-sdk-3.0.0/doc/html/closed.png create mode 100644 external/epid-sdk-3.0.0/doc/html/dir_02c945662023679b89476bd7126bc985.html create mode 100644 external/epid-sdk-3.0.0/doc/html/dir_12b90d9c027aaf878a834df729679a56.html create mode 100644 external/epid-sdk-3.0.0/doc/html/dir_512d3e62841a8535b716ec4cf8b9e950.html create mode 100644 external/epid-sdk-3.0.0/doc/html/dir_a32be19bc88f3d7aac6b7249da379f26.html create mode 100644 external/epid-sdk-3.0.0/doc/html/dir_ef364879bae02db2684040178ed9b186.html create mode 100644 external/epid-sdk-3.0.0/doc/html/dir_f169ebf8da29290a918fa4b3f7151050.html create mode 100644 external/epid-sdk-3.0.0/doc/html/dir_f6bef457d5f671b6e774bfccc16651f6.html create mode 100644 external/epid-sdk-3.0.0/doc/html/doc.png create mode 100644 external/epid-sdk-3.0.0/doc/html/doxygen.css create mode 100644 external/epid-sdk-3.0.0/doc/html/doxygen.png create mode 100644 external/epid-sdk-3.0.0/doc/html/dynsections.js create mode 100644 external/epid-sdk-3.0.0/doc/html/ecdsa_8h.html create mode 100644 external/epid-sdk-3.0.0/doc/html/ecgroup_8h.html create mode 100644 external/epid-sdk-3.0.0/doc/html/epid__overview_8dox.html create mode 100644 external/epid-sdk-3.0.0/doc/html/epid_diagram_high_level_interaction.png create mode 100644 external/epid-sdk-3.0.0/doc/html/epid_diagram_high_level_use_case.png create mode 100644 external/epid-sdk-3.0.0/doc/html/epid_diagram_issuer_high_level.png create mode 100644 external/epid-sdk-3.0.0/doc/html/epid_diagram_member_high_level.png create mode 100644 external/epid-sdk-3.0.0/doc/html/epid_diagram_verifier_high_level.png create mode 100644 external/epid-sdk-3.0.0/doc/html/epidstyle.css create mode 100644 external/epid-sdk-3.0.0/doc/html/errors_8h.html create mode 100644 external/epid-sdk-3.0.0/doc/html/examples_8dox.html create mode 100644 external/epid-sdk-3.0.0/doc/html/file__parser_8h.html create mode 100644 external/epid-sdk-3.0.0/doc/html/files.html create mode 100644 external/epid-sdk-3.0.0/doc/html/finitefield_8h.html create mode 100644 external/epid-sdk-3.0.0/doc/html/folderclosed.png create mode 100644 external/epid-sdk-3.0.0/doc/html/folderopen.png create mode 100644 external/epid-sdk-3.0.0/doc/html/functions.html create mode 100644 external/epid-sdk-3.0.0/doc/html/functions_vars.html create mode 100644 external/epid-sdk-3.0.0/doc/html/globals.html create mode 100644 external/epid-sdk-3.0.0/doc/html/globals_b.html create mode 100644 external/epid-sdk-3.0.0/doc/html/globals_d.html create mode 100644 external/epid-sdk-3.0.0/doc/html/globals_defs.html create mode 100644 external/epid-sdk-3.0.0/doc/html/globals_e.html create mode 100644 external/epid-sdk-3.0.0/doc/html/globals_enum.html create mode 100644 external/epid-sdk-3.0.0/doc/html/globals_eval.html create mode 100644 external/epid-sdk-3.0.0/doc/html/globals_f.html create mode 100644 external/epid-sdk-3.0.0/doc/html/globals_func.html create mode 100644 external/epid-sdk-3.0.0/doc/html/globals_g.html create mode 100644 external/epid-sdk-3.0.0/doc/html/globals_h.html create mode 100644 external/epid-sdk-3.0.0/doc/html/globals_i.html create mode 100644 external/epid-sdk-3.0.0/doc/html/globals_k.html create mode 100644 external/epid-sdk-3.0.0/doc/html/globals_m.html create mode 100644 external/epid-sdk-3.0.0/doc/html/globals_n.html create mode 100644 external/epid-sdk-3.0.0/doc/html/globals_p.html create mode 100644 external/epid-sdk-3.0.0/doc/html/globals_r.html create mode 100644 external/epid-sdk-3.0.0/doc/html/globals_s.html create mode 100644 external/epid-sdk-3.0.0/doc/html/globals_t.html create mode 100644 external/epid-sdk-3.0.0/doc/html/globals_type.html create mode 100644 external/epid-sdk-3.0.0/doc/html/globals_v.html create mode 100644 external/epid-sdk-3.0.0/doc/html/globals_vars.html create mode 100644 external/epid-sdk-3.0.0/doc/html/globals_w.html create mode 100644 external/epid-sdk-3.0.0/doc/html/glossary_8dox.html create mode 100644 external/epid-sdk-3.0.0/doc/html/group___big_num_primitives.html create mode 100644 external/epid-sdk-3.0.0/doc/html/group___big_num_primitives.js create mode 100644 external/epid-sdk-3.0.0/doc/html/group___ec_group_primitives.html create mode 100644 external/epid-sdk-3.0.0/doc/html/group___ec_group_primitives.js create mode 100644 external/epid-sdk-3.0.0/doc/html/group___ecdsa_primitives.html create mode 100644 external/epid-sdk-3.0.0/doc/html/group___ecdsa_primitives.js create mode 100644 external/epid-sdk-3.0.0/doc/html/group___epid11_file_parser_module.html create mode 100644 external/epid-sdk-3.0.0/doc/html/group___epid11_file_parser_module.js create mode 100644 external/epid-sdk-3.0.0/doc/html/group___epid11_pairing_primitives.html create mode 100644 external/epid-sdk-3.0.0/doc/html/group___epid11_pairing_primitives.js create mode 100644 external/epid-sdk-3.0.0/doc/html/group___epid11_types.html create mode 100644 external/epid-sdk-3.0.0/doc/html/group___epid11_types.js create mode 100644 external/epid-sdk-3.0.0/doc/html/group___epid11_verifier_module.html create mode 100644 external/epid-sdk-3.0.0/doc/html/group___epid11_verifier_module.js create mode 100644 external/epid-sdk-3.0.0/doc/html/group___epid_common.html create mode 100644 external/epid-sdk-3.0.0/doc/html/group___epid_common.js create mode 100644 external/epid-sdk-3.0.0/doc/html/group___epid_math.html create mode 100644 external/epid-sdk-3.0.0/doc/html/group___epid_math.js create mode 100644 external/epid-sdk-3.0.0/doc/html/group___epid_member_module.html create mode 100644 external/epid-sdk-3.0.0/doc/html/group___epid_member_module.js create mode 100644 external/epid-sdk-3.0.0/doc/html/group___epid_module.html create mode 100644 external/epid-sdk-3.0.0/doc/html/group___epid_module.js create mode 100644 external/epid-sdk-3.0.0/doc/html/group___epid_print.html create mode 100644 external/epid-sdk-3.0.0/doc/html/group___epid_print.js create mode 100644 external/epid-sdk-3.0.0/doc/html/group___epid_types.html create mode 100644 external/epid-sdk-3.0.0/doc/html/group___epid_types.js create mode 100644 external/epid-sdk-3.0.0/doc/html/group___epid_verifier_module.html create mode 100644 external/epid-sdk-3.0.0/doc/html/group___epid_verifier_module.js create mode 100644 external/epid-sdk-3.0.0/doc/html/group___error_codes.html create mode 100644 external/epid-sdk-3.0.0/doc/html/group___error_codes.js create mode 100644 external/epid-sdk-3.0.0/doc/html/group___file_parser.html create mode 100644 external/epid-sdk-3.0.0/doc/html/group___file_parser.js create mode 100644 external/epid-sdk-3.0.0/doc/html/group___finite_field_primitives.html create mode 100644 external/epid-sdk-3.0.0/doc/html/group___finite_field_primitives.js create mode 100644 external/epid-sdk-3.0.0/doc/html/group___hash_primitives.html create mode 100644 external/epid-sdk-3.0.0/doc/html/group___hash_primitives.js create mode 100644 external/epid-sdk-3.0.0/doc/html/group___pairing_primitives.html create mode 100644 external/epid-sdk-3.0.0/doc/html/group___pairing_primitives.js create mode 100644 external/epid-sdk-3.0.0/doc/html/hash_8h.html create mode 100644 external/epid-sdk-3.0.0/doc/html/implementation__notes_8dox.html create mode 100644 external/epid-sdk-3.0.0/doc/html/index.html create mode 100644 external/epid-sdk-3.0.0/doc/html/issuer__material_8dox.html create mode 100644 external/epid-sdk-3.0.0/doc/html/jquery.js create mode 100644 external/epid-sdk-3.0.0/doc/html/legal__information_8dox.html create mode 100644 external/epid-sdk-3.0.0/doc/html/mainpage_8dox.html create mode 100644 external/epid-sdk-3.0.0/doc/html/member_2api_8h.html create mode 100644 external/epid-sdk-3.0.0/doc/html/modules.html create mode 100644 external/epid-sdk-3.0.0/doc/html/modules.js create mode 100644 external/epid-sdk-3.0.0/doc/html/nav_f.png create mode 100644 external/epid-sdk-3.0.0/doc/html/nav_g.png create mode 100644 external/epid-sdk-3.0.0/doc/html/nav_h.png create mode 100644 external/epid-sdk-3.0.0/doc/html/navtree.css create mode 100644 external/epid-sdk-3.0.0/doc/html/navtree.js create mode 100644 external/epid-sdk-3.0.0/doc/html/navtreedata.js create mode 100644 external/epid-sdk-3.0.0/doc/html/navtreeindex0.js create mode 100644 external/epid-sdk-3.0.0/doc/html/navtreeindex1.js create mode 100644 external/epid-sdk-3.0.0/doc/html/navtreeindex2.js create mode 100644 external/epid-sdk-3.0.0/doc/html/open.png create mode 100644 external/epid-sdk-3.0.0/doc/html/organization_8dox.html create mode 100644 external/epid-sdk-3.0.0/doc/html/pageorder_8dox.html create mode 100644 external/epid-sdk-3.0.0/doc/html/pages.html create mode 100644 external/epid-sdk-3.0.0/doc/html/pairing_8h.html create mode 100644 external/epid-sdk-3.0.0/doc/html/printutils_8h.html create mode 100644 external/epid-sdk-3.0.0/doc/html/resize.js create mode 100644 external/epid-sdk-3.0.0/doc/html/revocation_8dox.html create mode 100644 external/epid-sdk-3.0.0/doc/html/sdk__overview_8dox.html create mode 100644 external/epid-sdk-3.0.0/doc/html/sdk_block_diagram.png create mode 100644 external/epid-sdk-3.0.0/doc/html/sign__verify__tutorial_8dox.html create mode 100644 external/epid-sdk-3.0.0/doc/html/signmsg__walkthrough_8dox.html create mode 100644 external/epid-sdk-3.0.0/doc/html/splitbar.png create mode 100644 external/epid-sdk-3.0.0/doc/html/stdtypes_8h.html create mode 100644 external/epid-sdk-3.0.0/doc/html/struct_basic_signature.html create mode 100644 external/epid-sdk-3.0.0/doc/html/struct_big_num_str.html create mode 100644 external/epid-sdk-3.0.0/doc/html/struct_compressed_priv_key.html create mode 100644 external/epid-sdk-3.0.0/doc/html/struct_ecdsa_private_key.html create mode 100644 external/epid-sdk-3.0.0/doc/html/struct_ecdsa_public_key.html create mode 100644 external/epid-sdk-3.0.0/doc/html/struct_ecdsa_signature.html create mode 100644 external/epid-sdk-3.0.0/doc/html/struct_epid11_basic_signature.html create mode 100644 external/epid-sdk-3.0.0/doc/html/struct_epid11_g2_elem_str.html create mode 100644 external/epid-sdk-3.0.0/doc/html/struct_epid11_group_pub_key.html create mode 100644 external/epid-sdk-3.0.0/doc/html/struct_epid11_group_rl.html create mode 100644 external/epid-sdk-3.0.0/doc/html/struct_epid11_gt_elem_str.html create mode 100644 external/epid-sdk-3.0.0/doc/html/struct_epid11_nr_proof.html create mode 100644 external/epid-sdk-3.0.0/doc/html/struct_epid11_params.html create mode 100644 external/epid-sdk-3.0.0/doc/html/struct_epid11_priv_rl.html create mode 100644 external/epid-sdk-3.0.0/doc/html/struct_epid11_sig_rl.html create mode 100644 external/epid-sdk-3.0.0/doc/html/struct_epid11_sig_rl_entry.html create mode 100644 external/epid-sdk-3.0.0/doc/html/struct_epid11_signature.html create mode 100644 external/epid-sdk-3.0.0/doc/html/struct_epid11_verifier_precomp.html create mode 100644 external/epid-sdk-3.0.0/doc/html/struct_epid2_params.html create mode 100644 external/epid-sdk-3.0.0/doc/html/struct_epid_ca_certificate.html create mode 100644 external/epid-sdk-3.0.0/doc/html/struct_epid_file_header.html create mode 100644 external/epid-sdk-3.0.0/doc/html/struct_epid_signature.html create mode 100644 external/epid-sdk-3.0.0/doc/html/struct_fp_elem_str.html create mode 100644 external/epid-sdk-3.0.0/doc/html/struct_fq12_elem_str.html create mode 100644 external/epid-sdk-3.0.0/doc/html/struct_fq2_elem_str.html create mode 100644 external/epid-sdk-3.0.0/doc/html/struct_fq3_elem_str.html create mode 100644 external/epid-sdk-3.0.0/doc/html/struct_fq6_elem_str.html create mode 100644 external/epid-sdk-3.0.0/doc/html/struct_fq_elem_str.html create mode 100644 external/epid-sdk-3.0.0/doc/html/struct_g1_elem_str.html create mode 100644 external/epid-sdk-3.0.0/doc/html/struct_g2_elem_str.html create mode 100644 external/epid-sdk-3.0.0/doc/html/struct_group_pub_key.html create mode 100644 external/epid-sdk-3.0.0/doc/html/struct_group_rl.html create mode 100644 external/epid-sdk-3.0.0/doc/html/struct_gt_elem_str.html create mode 100644 external/epid-sdk-3.0.0/doc/html/struct_i_priv_key.html create mode 100644 external/epid-sdk-3.0.0/doc/html/struct_join_request.html create mode 100644 external/epid-sdk-3.0.0/doc/html/struct_member_precomp.html create mode 100644 external/epid-sdk-3.0.0/doc/html/struct_membership_credential.html create mode 100644 external/epid-sdk-3.0.0/doc/html/struct_nr_proof.html create mode 100644 external/epid-sdk-3.0.0/doc/html/struct_oct_str128.html create mode 100644 external/epid-sdk-3.0.0/doc/html/struct_oct_str16.html create mode 100644 external/epid-sdk-3.0.0/doc/html/struct_oct_str256.html create mode 100644 external/epid-sdk-3.0.0/doc/html/struct_oct_str32.html create mode 100644 external/epid-sdk-3.0.0/doc/html/struct_oct_str512.html create mode 100644 external/epid-sdk-3.0.0/doc/html/struct_oct_str600.html create mode 100644 external/epid-sdk-3.0.0/doc/html/struct_oct_str64.html create mode 100644 external/epid-sdk-3.0.0/doc/html/struct_oct_str768.html create mode 100644 external/epid-sdk-3.0.0/doc/html/struct_oct_str8.html create mode 100644 external/epid-sdk-3.0.0/doc/html/struct_oct_str80.html create mode 100644 external/epid-sdk-3.0.0/doc/html/struct_pre_computed_signature.html create mode 100644 external/epid-sdk-3.0.0/doc/html/struct_priv_key.html create mode 100644 external/epid-sdk-3.0.0/doc/html/struct_priv_rl.html create mode 100644 external/epid-sdk-3.0.0/doc/html/struct_sha256_digest.html create mode 100644 external/epid-sdk-3.0.0/doc/html/struct_sig_rl.html create mode 100644 external/epid-sdk-3.0.0/doc/html/struct_sig_rl_entry.html create mode 100644 external/epid-sdk-3.0.0/doc/html/struct_verifier_precomp.html create mode 100644 external/epid-sdk-3.0.0/doc/html/struct_verifier_rl.html create mode 100644 external/epid-sdk-3.0.0/doc/html/sync_off.png create mode 100644 external/epid-sdk-3.0.0/doc/html/sync_on.png create mode 100644 external/epid-sdk-3.0.0/doc/html/tab_a.png create mode 100644 external/epid-sdk-3.0.0/doc/html/tab_b.png create mode 100644 external/epid-sdk-3.0.0/doc/html/tab_h.png create mode 100644 external/epid-sdk-3.0.0/doc/html/tab_s.png create mode 100644 external/epid-sdk-3.0.0/doc/html/tabs.css create mode 100644 external/epid-sdk-3.0.0/doc/html/tatepairing_8h.html create mode 100644 external/epid-sdk-3.0.0/doc/html/types_8h.html create mode 100644 external/epid-sdk-3.0.0/doc/html/verifier_21_81_2api_8h.html create mode 100644 external/epid-sdk-3.0.0/doc/html/verifier_2api_8h.html create mode 100644 external/epid-sdk-3.0.0/doc/html/verifysig__walkthrough_8dox.html create mode 100644 external/epid-sdk-3.0.0/doc/index.html create mode 100644 external/epid-sdk-3.0.0/epid/common-testhelper/1.1/epid_params-testhelper.cc create mode 100644 external/epid-sdk-3.0.0/epid/common-testhelper/1.1/epid_params-testhelper.h create mode 100644 external/epid-sdk-3.0.0/epid/common-testhelper/1.1/testdata/grp_x/epid_grpcrt.inc create mode 100644 external/epid-sdk-3.0.0/epid/common-testhelper/1.1/testdata/grp_x/member0/sig_sha256_bsn0_msg0.inc create mode 100644 external/epid-sdk-3.0.0/epid/common-testhelper/1.1/testdata/grp_x/member0/sig_sha256_bsn0_msg0_single_entry.inc create mode 100644 external/epid-sdk-3.0.0/epid/common-testhelper/1.1/testdata/grp_x/member0/sig_sha256_bsn0_msg0_three_entry.inc create mode 100644 external/epid-sdk-3.0.0/epid/common-testhelper/1.1/testdata/grp_x/member0/sig_sha256_bsn0_msg1.inc create mode 100644 external/epid-sdk-3.0.0/epid/common-testhelper/1.1/testdata/grp_x/member0/sig_sha256_bsn1_msg0.inc create mode 100644 external/epid-sdk-3.0.0/epid/common-testhelper/1.1/testdata/grp_x/member0/sig_sha256_rndbase_msg0.inc create mode 100644 external/epid-sdk-3.0.0/epid/common-testhelper/1.1/testdata/grp_x/member0/sig_sha256_rndbase_msg1.inc create mode 100644 external/epid-sdk-3.0.0/epid/common-testhelper/1.1/testdata/grp_x/member1/sig_sha256_bsn0_msg0.inc create mode 100644 external/epid-sdk-3.0.0/epid/common-testhelper/1.1/testdata/grp_x/privrevoked/signatures/sig_sha256_bsn0_msg0_revkey000.inc create mode 100644 external/epid-sdk-3.0.0/epid/common-testhelper/1.1/testdata/grp_x/privrevoked/signatures/sig_sha256_bsn0_msg0_revkey001.inc create mode 100644 external/epid-sdk-3.0.0/epid/common-testhelper/1.1/testdata/grp_x/privrevoked/signatures/sig_sha256_bsn0_msg0_revkey002.inc create mode 100644 external/epid-sdk-3.0.0/epid/common-testhelper/1.1/testdata/grp_x/privrl.inc create mode 100644 external/epid-sdk-3.0.0/epid/common-testhelper/1.1/testdata/grp_x/privrl_single_entry.inc create mode 100644 external/epid-sdk-3.0.0/epid/common-testhelper/1.1/testdata/grp_x/sig_sha256_bsnrnd_msg0.inc create mode 100644 external/epid-sdk-3.0.0/epid/common-testhelper/1.1/testdata/grp_x/sigrl_member0_sig_bsn0_msg0_revoked_first_entry.inc create mode 100644 external/epid-sdk-3.0.0/epid/common-testhelper/1.1/testdata/grp_x/sigrl_member0_sig_bsn0_msg0_revoked_last_entry.inc create mode 100644 external/epid-sdk-3.0.0/epid/common-testhelper/1.1/testdata/grp_x/sigrl_member0_sig_bsn0_msg0_revoked_middle_entry.inc create mode 100644 external/epid-sdk-3.0.0/epid/common-testhelper/1.1/testdata/grp_x/sigrl_member0_sig_bsn0_msg0_revoked_single_entry.inc create mode 100644 external/epid-sdk-3.0.0/epid/common-testhelper/1.1/testdata/grprl_revoked_grp_x_first_entry.inc create mode 100644 external/epid-sdk-3.0.0/epid/common-testhelper/1.1/testdata/grprl_revoked_grp_x_last_entry.inc create mode 100644 external/epid-sdk-3.0.0/epid/common-testhelper/1.1/testdata/grprl_revoked_grp_x_middle_entry.inc create mode 100644 external/epid-sdk-3.0.0/epid/common-testhelper/1.1/testdata/grprl_revoked_grp_x_single_entry.inc create mode 100644 external/epid-sdk-3.0.0/epid/common-testhelper/1.1/verifier_wrapper-testhelper.cc create mode 100644 external/epid-sdk-3.0.0/epid/common-testhelper/1.1/verifier_wrapper-testhelper.h create mode 100644 external/epid-sdk-3.0.0/epid/common-testhelper/Makefile create mode 100644 external/epid-sdk-3.0.0/epid/common-testhelper/bignum_wrapper-testhelper.cc create mode 100644 external/epid-sdk-3.0.0/epid/common-testhelper/bignum_wrapper-testhelper.h create mode 100644 external/epid-sdk-3.0.0/epid/common-testhelper/common-testhelper.parts create mode 100644 external/epid-sdk-3.0.0/epid/common-testhelper/ecgroup_wrapper-testhelper.cc create mode 100644 external/epid-sdk-3.0.0/epid/common-testhelper/ecgroup_wrapper-testhelper.h create mode 100644 external/epid-sdk-3.0.0/epid/common-testhelper/ecpoint_wrapper-testhelper.cc create mode 100644 external/epid-sdk-3.0.0/epid/common-testhelper/ecpoint_wrapper-testhelper.h create mode 100644 external/epid-sdk-3.0.0/epid/common-testhelper/epid_params-testhelper.cc create mode 100644 external/epid-sdk-3.0.0/epid/common-testhelper/epid_params-testhelper.h create mode 100644 external/epid-sdk-3.0.0/epid/common-testhelper/errors-testhelper.h create mode 100644 external/epid-sdk-3.0.0/epid/common-testhelper/ffelement_wrapper-testhelper.cc create mode 100644 external/epid-sdk-3.0.0/epid/common-testhelper/ffelement_wrapper-testhelper.h create mode 100644 external/epid-sdk-3.0.0/epid/common-testhelper/finite_field_wrapper-testhelper.cc create mode 100644 external/epid-sdk-3.0.0/epid/common-testhelper/finite_field_wrapper-testhelper.h create mode 100644 external/epid-sdk-3.0.0/epid/common-testhelper/octstr-testhelper.cc create mode 100644 external/epid-sdk-3.0.0/epid/common-testhelper/octstr-testhelper.h create mode 100644 external/epid-sdk-3.0.0/epid/common-testhelper/prng-testhelper.h create mode 100644 external/epid-sdk-3.0.0/epid/common-testhelper/testdata/grp01/gpubkey.inc create mode 100644 external/epid-sdk-3.0.0/epid/common-testhelper/testdata/grp01/member0/sig_test0_sha256_sigrl.inc create mode 100644 external/epid-sdk-3.0.0/epid/common-testhelper/testdata/grp01/member0/sig_test0_sha384_sigrl.inc create mode 100644 external/epid-sdk-3.0.0/epid/common-testhelper/testdata/grp01/member0/sig_test0_sha512_sigrl.inc create mode 100644 external/epid-sdk-3.0.0/epid/common-testhelper/testdata/grp01/member0/sig_test1.inc create mode 100644 external/epid-sdk-3.0.0/epid/common-testhelper/testdata/grp01/member0/sig_test1_basename1_sha256.inc create mode 100644 external/epid-sdk-3.0.0/epid/common-testhelper/testdata/grp01/member0/sig_test1_sha256.inc create mode 100644 external/epid-sdk-3.0.0/epid/common-testhelper/testdata/grp01/member0/sig_test1_sha384.inc create mode 100644 external/epid-sdk-3.0.0/epid/common-testhelper/testdata/grp01/member0/sig_test1_sha512.inc create mode 100644 external/epid-sdk-3.0.0/epid/common-testhelper/testdata/grp01/privrl.inc create mode 100644 external/epid-sdk-3.0.0/epid/common-testhelper/testdata/grp01/sigrl.inc create mode 100644 external/epid-sdk-3.0.0/epid/common-testhelper/testdata/grp01/verrl.inc create mode 100644 external/epid-sdk-3.0.0/epid/common-testhelper/testdata/grp_x/cmember9/cmpprivkey.inc create mode 100644 external/epid-sdk-3.0.0/epid/common-testhelper/testdata/grp_x/cmember9/mprivkey.inc create mode 100644 external/epid-sdk-3.0.0/epid/common-testhelper/testdata/grp_x/iprivkey.inc create mode 100644 external/epid-sdk-3.0.0/epid/common-testhelper/testdata/grp_x/member0/mprivkey.inc create mode 100644 external/epid-sdk-3.0.0/epid/common-testhelper/testdata/grp_x/member0/sig_sha256_bsn0_msg0.inc create mode 100644 external/epid-sdk-3.0.0/epid/common-testhelper/testdata/grp_x/member0/sig_sha256_bsn0_msg0_rl_singleentry.inc create mode 100644 external/epid-sdk-3.0.0/epid/common-testhelper/testdata/grp_x/member0/sig_sha256_bsn0_msg1.inc create mode 100644 external/epid-sdk-3.0.0/epid/common-testhelper/testdata/grp_x/member0/sig_sha256_bsn1_msg0.inc create mode 100644 external/epid-sdk-3.0.0/epid/common-testhelper/testdata/grp_x/member0/sig_sha256_rndbase_msg0.inc create mode 100644 external/epid-sdk-3.0.0/epid/common-testhelper/testdata/grp_x/member0/sig_sha256_rndbase_msg1.inc create mode 100644 external/epid-sdk-3.0.0/epid/common-testhelper/testdata/grp_x/member0/sig_sha384_bsn0_msg0.inc create mode 100644 external/epid-sdk-3.0.0/epid/common-testhelper/testdata/grp_x/member0/sig_sha384_rndbase_msg0.inc create mode 100644 external/epid-sdk-3.0.0/epid/common-testhelper/testdata/grp_x/member0/sig_sha512_bsn0_msg0.inc create mode 100644 external/epid-sdk-3.0.0/epid/common-testhelper/testdata/grp_x/member0/sig_sha512_rndbase_msg0.inc create mode 100644 external/epid-sdk-3.0.0/epid/common-testhelper/testdata/grp_x/member1/mprivkey.inc create mode 100644 external/epid-sdk-3.0.0/epid/common-testhelper/testdata/grp_x/member1/sig_sha256_bsn0_msg0.inc create mode 100644 external/epid-sdk-3.0.0/epid/common-testhelper/testdata/grp_x/privrevoked/mprivatekey000.inc create mode 100644 external/epid-sdk-3.0.0/epid/common-testhelper/testdata/grp_x/privrevoked/mprivatekey001.inc create mode 100644 external/epid-sdk-3.0.0/epid/common-testhelper/testdata/grp_x/privrevoked/mprivatekey002.inc create mode 100644 external/epid-sdk-3.0.0/epid/common-testhelper/testdata/grp_x/privrevoked/signatures/sig_sha256_bsn0_msg0_revkey000.inc create mode 100644 external/epid-sdk-3.0.0/epid/common-testhelper/testdata/grp_x/privrevoked/signatures/sig_sha256_bsn0_msg0_revkey001.inc create mode 100644 external/epid-sdk-3.0.0/epid/common-testhelper/testdata/grp_x/privrevoked/signatures/sig_sha256_bsn0_msg0_revkey002.inc create mode 100644 external/epid-sdk-3.0.0/epid/common-testhelper/testdata/grp_x/privrl.inc create mode 100644 external/epid-sdk-3.0.0/epid/common-testhelper/testdata/grp_x/privrl_single_entry_revoked_key000.inc create mode 100644 external/epid-sdk-3.0.0/epid/common-testhelper/testdata/grp_x/pubkey.inc create mode 100644 external/epid-sdk-3.0.0/epid/common-testhelper/testdata/grp_x/sigrevoked/mprivatekey000.inc create mode 100644 external/epid-sdk-3.0.0/epid/common-testhelper/testdata/grp_x/sigrevoked/mprivatekey001.inc create mode 100644 external/epid-sdk-3.0.0/epid/common-testhelper/testdata/grp_x/sigrevoked/mprivatekey002.inc create mode 100644 external/epid-sdk-3.0.0/epid/common-testhelper/testdata/grp_x/sigrl.inc create mode 100644 external/epid-sdk-3.0.0/epid/common-testhelper/testdata/grp_x/sigrl_member0_sig_sha256_bsn0_msg0_revoked_first_entry.inc create mode 100644 external/epid-sdk-3.0.0/epid/common-testhelper/testdata/grp_x/sigrl_member0_sig_sha256_bsn0_msg0_revoked_last_entry.inc create mode 100644 external/epid-sdk-3.0.0/epid/common-testhelper/testdata/grp_x/sigrl_member0_sig_sha256_bsn0_msg0_revoked_middle_entry.inc create mode 100644 external/epid-sdk-3.0.0/epid/common-testhelper/testdata/grp_x/sigrl_single_entry.inc create mode 100644 external/epid-sdk-3.0.0/epid/common-testhelper/testdata/grp_x/sigrl_ver_2.inc create mode 100644 external/epid-sdk-3.0.0/epid/common-testhelper/testdata/grp_x/verrevoked/bsn0/mprivkey000.inc create mode 100644 external/epid-sdk-3.0.0/epid/common-testhelper/testdata/grp_x/verrevoked/bsn0/mprivkey001.inc create mode 100644 external/epid-sdk-3.0.0/epid/common-testhelper/testdata/grp_x/verrevoked/bsn0/mprivkey002.inc create mode 100644 external/epid-sdk-3.0.0/epid/common-testhelper/testdata/grp_x/verrevoked/bsn0/sig_revoked0sha256bsn0msg0.inc create mode 100644 external/epid-sdk-3.0.0/epid/common-testhelper/testdata/grp_x/verrevoked/bsn0/sig_revoked0sha384bsn0msg0.inc create mode 100644 external/epid-sdk-3.0.0/epid/common-testhelper/testdata/grp_x/verrevoked/bsn0/sig_revoked0sha512bsn0msg0.inc create mode 100644 external/epid-sdk-3.0.0/epid/common-testhelper/testdata/grp_x/verrevoked/bsn0/sig_revoked1sha256bsn0msg0.inc create mode 100644 external/epid-sdk-3.0.0/epid/common-testhelper/testdata/grp_x/verrevoked/bsn0/sig_revoked1sha384bsn0msg0.inc create mode 100644 external/epid-sdk-3.0.0/epid/common-testhelper/testdata/grp_x/verrevoked/bsn0/sig_revoked1sha512bsn0msg0.inc create mode 100644 external/epid-sdk-3.0.0/epid/common-testhelper/testdata/grp_x/verrevoked/bsn0/sig_revoked2sha256bsn0msg0.inc create mode 100644 external/epid-sdk-3.0.0/epid/common-testhelper/testdata/grp_x/verrevoked/bsn0/sig_revoked2sha384bsn0msg0.inc create mode 100644 external/epid-sdk-3.0.0/epid/common-testhelper/testdata/grp_x/verrevoked/bsn0/sig_revoked2sha512bsn0msg0.inc create mode 100644 external/epid-sdk-3.0.0/epid/common-testhelper/testdata/grp_x/verrevoked/bsn0/verrl.inc create mode 100644 external/epid-sdk-3.0.0/epid/common-testhelper/testdata/grp_x/verrevoked/bsn0/verrl_1entry.inc create mode 100644 external/epid-sdk-3.0.0/epid/common-testhelper/testdata/grp_x/verrevoked/bsn0/verrl_sha384.inc create mode 100644 external/epid-sdk-3.0.0/epid/common-testhelper/testdata/grp_x/verrevoked/bsn0/verrl_sha512.inc create mode 100644 external/epid-sdk-3.0.0/epid/common-testhelper/testdata/grp_x/verrevoked/bsn1/mprivkey003.inc create mode 100644 external/epid-sdk-3.0.0/epid/common-testhelper/testdata/grp_x/verrevoked/bsn1/mprivkey004.inc create mode 100644 external/epid-sdk-3.0.0/epid/common-testhelper/testdata/grp_x/verrevoked/bsn1/mprivkey005.inc create mode 100644 external/epid-sdk-3.0.0/epid/common-testhelper/testdata/grp_x/verrevoked/bsn1/sig_revoked3sha256bsn1msg0.inc create mode 100644 external/epid-sdk-3.0.0/epid/common-testhelper/testdata/grp_x/verrevoked/bsn1/verrl.inc create mode 100644 external/epid-sdk-3.0.0/epid/common-testhelper/testdata/grp_x/verrevoked/bsn1/verrl_012revoked.inc create mode 100644 external/epid-sdk-3.0.0/epid/common-testhelper/testdata/grp_y/cmember9/cmpprivkey.dat create mode 100644 external/epid-sdk-3.0.0/epid/common-testhelper/testdata/grp_y/cmember9/cmpprivkey.inc create mode 100644 external/epid-sdk-3.0.0/epid/common-testhelper/testdata/grp_y/iprivkey.inc create mode 100644 external/epid-sdk-3.0.0/epid/common-testhelper/testdata/grp_y/pubkey.inc create mode 100644 external/epid-sdk-3.0.0/epid/common-testhelper/testdata/grprl.inc create mode 100644 external/epid-sdk-3.0.0/epid/common-testhelper/testdata/grprl_revoked_grp_x_first_entry.inc create mode 100644 external/epid-sdk-3.0.0/epid/common-testhelper/testdata/grprl_revoked_grp_x_last_entry.inc create mode 100644 external/epid-sdk-3.0.0/epid/common-testhelper/testdata/grprl_revoked_grp_x_middle_entry.inc create mode 100644 external/epid-sdk-3.0.0/epid/common-testhelper/testdata/grprl_single_entry_revoked_grp_x.inc create mode 100644 external/epid-sdk-3.0.0/epid/common-testhelper/testdata/ikgf/groupa/member0/mprecomp.inc create mode 100644 external/epid-sdk-3.0.0/epid/common-testhelper/testdata/ikgf/groupa/member0/mprivkey.inc create mode 100644 external/epid-sdk-3.0.0/epid/common-testhelper/testdata/ikgf/groupa/privrl.inc create mode 100644 external/epid-sdk-3.0.0/epid/common-testhelper/testdata/ikgf/groupa/privrl_empty.inc create mode 100644 external/epid-sdk-3.0.0/epid/common-testhelper/testdata/ikgf/groupa/pubkey.inc create mode 100644 external/epid-sdk-3.0.0/epid/common-testhelper/testdata/ikgf/groupa/sig_msg0_sha256_sigrl.inc create mode 100644 external/epid-sdk-3.0.0/epid/common-testhelper/testdata/ikgf/groupa/sig_sha256_bsn0_msg0.inc create mode 100644 external/epid-sdk-3.0.0/epid/common-testhelper/testdata/ikgf/groupa/sig_sha256_bsn0_msg0_empty_sigrl.inc create mode 100644 external/epid-sdk-3.0.0/epid/common-testhelper/testdata/ikgf/groupa/sig_sha256_bsn0_msg0_nosigrl.inc create mode 100644 external/epid-sdk-3.0.0/epid/common-testhelper/testdata/ikgf/groupa/sig_sha256_bsn0_msg0_revkey.inc create mode 100644 external/epid-sdk-3.0.0/epid/common-testhelper/testdata/ikgf/groupa/sig_sha256_rndbase_msg0.inc create mode 100644 external/epid-sdk-3.0.0/epid/common-testhelper/testdata/ikgf/groupa/sig_sigrevoked_sha256_bsn0_msg0.inc create mode 100644 external/epid-sdk-3.0.0/epid/common-testhelper/testdata/ikgf/groupa/sig_test1_basename1_sha256.inc create mode 100644 external/epid-sdk-3.0.0/epid/common-testhelper/testdata/ikgf/groupa/sigrevokedmember0/mprivkey.inc create mode 100644 external/epid-sdk-3.0.0/epid/common-testhelper/testdata/ikgf/groupa/sigrl.inc create mode 100644 external/epid-sdk-3.0.0/epid/common-testhelper/testdata/ikgf/groupa/sigrl_empty.inc create mode 100644 external/epid-sdk-3.0.0/epid/common-testhelper/testdata/ikgf/groupb/member0/mprivkey.inc create mode 100644 external/epid-sdk-3.0.0/epid/common-testhelper/testdata/ikgf/groupb/sig_grouprevoked_sha256_bsn0_msg0.inc create mode 100644 external/epid-sdk-3.0.0/epid/common-testhelper/testdata/ikgf/grprl.inc create mode 100644 external/epid-sdk-3.0.0/epid/common-testhelper/unittests/bignum_wrapper-test.cc create mode 100644 external/epid-sdk-3.0.0/epid/common-testhelper/unittests/ecgroup_wrapper-test.cc create mode 100644 external/epid-sdk-3.0.0/epid/common-testhelper/unittests/ecpoint_wrapper-test.cc create mode 100644 external/epid-sdk-3.0.0/epid/common-testhelper/unittests/ffelement_wrapper-test.cc create mode 100644 external/epid-sdk-3.0.0/epid/common-testhelper/unittests/finite_field_wrapper-test.cc create mode 100644 external/epid-sdk-3.0.0/epid/common-testhelper/unittests/main-test.cc create mode 100644 external/epid-sdk-3.0.0/epid/common-testhelper/verifier_wrapper-testhelper.cc create mode 100644 external/epid-sdk-3.0.0/epid/common-testhelper/verifier_wrapper-testhelper.h create mode 100644 external/epid-sdk-3.0.0/epid/common/1.1/file_parser.h create mode 100644 external/epid-sdk-3.0.0/epid/common/1.1/src/commitment.c create mode 100644 external/epid-sdk-3.0.0/epid/common/1.1/src/commitment.h create mode 100644 external/epid-sdk-3.0.0/epid/common/1.1/src/epid11params.c create mode 100644 external/epid-sdk-3.0.0/epid/common/1.1/src/epid11params.h create mode 100644 external/epid-sdk-3.0.0/epid/common/1.1/src/epid11params_tate.inc create mode 100644 external/epid-sdk-3.0.0/epid/common/1.1/src/file_parser.c create mode 100644 external/epid-sdk-3.0.0/epid/common/1.1/src/grouppubkey.c create mode 100644 external/epid-sdk-3.0.0/epid/common/1.1/src/grouppubkey.h create mode 100644 external/epid-sdk-3.0.0/epid/common/1.1/types.h create mode 100644 external/epid-sdk-3.0.0/epid/common/1.1/unittests/file_parser-test.cc create mode 100644 external/epid-sdk-3.0.0/epid/common/Makefile create mode 100644 external/epid-sdk-3.0.0/epid/common/bitsupplier.h create mode 100644 external/epid-sdk-3.0.0/epid/common/common.parts create mode 100644 external/epid-sdk-3.0.0/epid/common/errors.h create mode 100644 external/epid-sdk-3.0.0/epid/common/file_parser.h create mode 100644 external/epid-sdk-3.0.0/epid/common/math/bignum.h create mode 100644 external/epid-sdk-3.0.0/epid/common/math/ecdsa.h create mode 100644 external/epid-sdk-3.0.0/epid/common/math/ecgroup.h create mode 100644 external/epid-sdk-3.0.0/epid/common/math/finitefield.h create mode 100644 external/epid-sdk-3.0.0/epid/common/math/hash.h create mode 100644 external/epid-sdk-3.0.0/epid/common/math/pairing.h create mode 100644 external/epid-sdk-3.0.0/epid/common/math/printutils.h create mode 100644 external/epid-sdk-3.0.0/epid/common/math/src/bignum-internal.h create mode 100644 external/epid-sdk-3.0.0/epid/common/math/src/bignum.c create mode 100644 external/epid-sdk-3.0.0/epid/common/math/src/ecdsa_sign.c create mode 100644 external/epid-sdk-3.0.0/epid/common/math/src/ecdsa_verify.c create mode 100644 external/epid-sdk-3.0.0/epid/common/math/src/ecgroup-internal.h create mode 100644 external/epid-sdk-3.0.0/epid/common/math/src/ecgroup.c create mode 100644 external/epid-sdk-3.0.0/epid/common/math/src/finitefield-internal.h create mode 100644 external/epid-sdk-3.0.0/epid/common/math/src/finitefield.c create mode 100644 external/epid-sdk-3.0.0/epid/common/math/src/pairing-internal.h create mode 100644 external/epid-sdk-3.0.0/epid/common/math/src/pairing.c create mode 100644 external/epid-sdk-3.0.0/epid/common/math/src/printutils.c create mode 100644 external/epid-sdk-3.0.0/epid/common/math/src/sha256.c create mode 100644 external/epid-sdk-3.0.0/epid/common/math/src/tatepairing-internal.h create mode 100644 external/epid-sdk-3.0.0/epid/common/math/src/tatepairing.c create mode 100644 external/epid-sdk-3.0.0/epid/common/math/tatepairing.h create mode 100644 external/epid-sdk-3.0.0/epid/common/math/unittests/bignum-test.cc create mode 100644 external/epid-sdk-3.0.0/epid/common/math/unittests/ecdsa_sign-test.cc create mode 100644 external/epid-sdk-3.0.0/epid/common/math/unittests/ecdsa_verify-test.cc create mode 100644 external/epid-sdk-3.0.0/epid/common/math/unittests/ecgroup-test.cc create mode 100644 external/epid-sdk-3.0.0/epid/common/math/unittests/ffelement-test.cc create mode 100644 external/epid-sdk-3.0.0/epid/common/math/unittests/finitefield-test.cc create mode 100644 external/epid-sdk-3.0.0/epid/common/math/unittests/hash-test.cc create mode 100644 external/epid-sdk-3.0.0/epid/common/math/unittests/main-test.cc create mode 100644 external/epid-sdk-3.0.0/epid/common/math/unittests/octstrconvert-test.cc create mode 100644 external/epid-sdk-3.0.0/epid/common/math/unittests/pairing-test.cc create mode 100644 external/epid-sdk-3.0.0/epid/common/math/unittests/printutils-test.cc create mode 100644 external/epid-sdk-3.0.0/epid/common/math/unittests/tatepairing-test.cc create mode 100644 external/epid-sdk-3.0.0/epid/common/src/commitment.c create mode 100644 external/epid-sdk-3.0.0/epid/common/src/commitment.h create mode 100644 external/epid-sdk-3.0.0/epid/common/src/endian_convert.h create mode 100644 external/epid-sdk-3.0.0/epid/common/src/epid2params.c create mode 100644 external/epid-sdk-3.0.0/epid/common/src/epid2params.h create mode 100644 external/epid-sdk-3.0.0/epid/common/src/epid2params_ate.inc create mode 100644 external/epid-sdk-3.0.0/epid/common/src/errors.c create mode 100644 external/epid-sdk-3.0.0/epid/common/src/file_parser-internal.h create mode 100644 external/epid-sdk-3.0.0/epid/common/src/file_parser.c create mode 100644 external/epid-sdk-3.0.0/epid/common/src/grouppubkey.c create mode 100644 external/epid-sdk-3.0.0/epid/common/src/grouppubkey.h create mode 100644 external/epid-sdk-3.0.0/epid/common/src/memory.c create mode 100644 external/epid-sdk-3.0.0/epid/common/src/memory.h create mode 100644 external/epid-sdk-3.0.0/epid/common/src/sigrlvalid.c create mode 100644 external/epid-sdk-3.0.0/epid/common/src/sigrlvalid.h create mode 100644 external/epid-sdk-3.0.0/epid/common/src/stack.c create mode 100644 external/epid-sdk-3.0.0/epid/common/src/stack.h create mode 100644 external/epid-sdk-3.0.0/epid/common/stdtypes.h create mode 100644 external/epid-sdk-3.0.0/epid/common/types.h create mode 100644 external/epid-sdk-3.0.0/epid/common/unittests/file_parser-test.cc create mode 100644 external/epid-sdk-3.0.0/epid/member/Makefile create mode 100644 external/epid-sdk-3.0.0/epid/member/api.h create mode 100644 external/epid-sdk-3.0.0/epid/member/member.parts create mode 100644 external/epid-sdk-3.0.0/epid/member/src/context.c create mode 100644 external/epid-sdk-3.0.0/epid/member/src/context.h create mode 100644 external/epid-sdk-3.0.0/epid/member/src/decompress_privkey.c create mode 100644 external/epid-sdk-3.0.0/epid/member/src/get_sigsize.c create mode 100644 external/epid-sdk-3.0.0/epid/member/src/nr_prove.c create mode 100644 external/epid-sdk-3.0.0/epid/member/src/presig.c create mode 100644 external/epid-sdk-3.0.0/epid/member/src/privkey.c create mode 100644 external/epid-sdk-3.0.0/epid/member/src/privkey.h create mode 100644 external/epid-sdk-3.0.0/epid/member/src/request_join.c create mode 100644 external/epid-sdk-3.0.0/epid/member/src/sign.c create mode 100644 external/epid-sdk-3.0.0/epid/member/src/signbasic.c create mode 100644 external/epid-sdk-3.0.0/epid/member/unittests/compute_presig-test.cc create mode 100644 external/epid-sdk-3.0.0/epid/member/unittests/context-test.cc create mode 100644 external/epid-sdk-3.0.0/epid/member/unittests/decompress_privkey-test.cc create mode 100644 external/epid-sdk-3.0.0/epid/member/unittests/get_sigsize-test.cc create mode 100644 external/epid-sdk-3.0.0/epid/member/unittests/main-test.cc create mode 100644 external/epid-sdk-3.0.0/epid/member/unittests/member-testhelper.cc create mode 100644 external/epid-sdk-3.0.0/epid/member/unittests/member-testhelper.h create mode 100644 external/epid-sdk-3.0.0/epid/member/unittests/nr_prove-test.cc create mode 100644 external/epid-sdk-3.0.0/epid/member/unittests/presig-test.cc create mode 100644 external/epid-sdk-3.0.0/epid/member/unittests/request_join-test.cc create mode 100644 external/epid-sdk-3.0.0/epid/member/unittests/sign-test.cc create mode 100644 external/epid-sdk-3.0.0/epid/member/unittests/signbasic-test.cc create mode 100644 external/epid-sdk-3.0.0/epid/verifier/1.1/api.h create mode 100644 external/epid-sdk-3.0.0/epid/verifier/1.1/src/check_privrl_entry.c create mode 100644 external/epid-sdk-3.0.0/epid/verifier/1.1/src/context.c create mode 100644 external/epid-sdk-3.0.0/epid/verifier/1.1/src/context.h create mode 100644 external/epid-sdk-3.0.0/epid/verifier/1.1/src/nrverify.c create mode 100644 external/epid-sdk-3.0.0/epid/verifier/1.1/src/sigs_linked.c create mode 100644 external/epid-sdk-3.0.0/epid/verifier/1.1/src/verify.c create mode 100644 external/epid-sdk-3.0.0/epid/verifier/1.1/src/verifybasic.c create mode 100644 external/epid-sdk-3.0.0/epid/verifier/1.1/unittests/check_privrl_entry-test.cc create mode 100644 external/epid-sdk-3.0.0/epid/verifier/1.1/unittests/context-test.cc create mode 100644 external/epid-sdk-3.0.0/epid/verifier/1.1/unittests/nrverify-test.cc create mode 100644 external/epid-sdk-3.0.0/epid/verifier/1.1/unittests/sigs_linked-test.cc create mode 100644 external/epid-sdk-3.0.0/epid/verifier/1.1/unittests/testdata/verifier_precmp.inc create mode 100644 external/epid-sdk-3.0.0/epid/verifier/1.1/unittests/verifier-testhelper.cc create mode 100644 external/epid-sdk-3.0.0/epid/verifier/1.1/unittests/verifier-testhelper.h create mode 100644 external/epid-sdk-3.0.0/epid/verifier/1.1/unittests/verify-test.cc create mode 100644 external/epid-sdk-3.0.0/epid/verifier/1.1/unittests/verifybasic-test.cc create mode 100644 external/epid-sdk-3.0.0/epid/verifier/Makefile create mode 100644 external/epid-sdk-3.0.0/epid/verifier/api.h create mode 100644 external/epid-sdk-3.0.0/epid/verifier/src/check_privrl_entry.c create mode 100644 external/epid-sdk-3.0.0/epid/verifier/src/context.c create mode 100644 external/epid-sdk-3.0.0/epid/verifier/src/context.h create mode 100644 external/epid-sdk-3.0.0/epid/verifier/src/nrverify.c create mode 100644 external/epid-sdk-3.0.0/epid/verifier/src/sigs_linked.c create mode 100644 external/epid-sdk-3.0.0/epid/verifier/src/verify.c create mode 100644 external/epid-sdk-3.0.0/epid/verifier/src/verifybasic.c create mode 100644 external/epid-sdk-3.0.0/epid/verifier/unittests/check_privrl_entry-test.cc create mode 100644 external/epid-sdk-3.0.0/epid/verifier/unittests/context-test.cc create mode 100644 external/epid-sdk-3.0.0/epid/verifier/unittests/main-test.cc create mode 100644 external/epid-sdk-3.0.0/epid/verifier/unittests/nrverify-test.cc create mode 100644 external/epid-sdk-3.0.0/epid/verifier/unittests/sigs_linked-test.cc create mode 100644 external/epid-sdk-3.0.0/epid/verifier/unittests/testdata/sigrl/pub_key_sigrl_verify.inc create mode 100644 external/epid-sdk-3.0.0/epid/verifier/unittests/testdata/sigrl/signature_sigrl_first.inc create mode 100644 external/epid-sdk-3.0.0/epid/verifier/unittests/testdata/sigrl/signature_sigrl_last.inc create mode 100644 external/epid-sdk-3.0.0/epid/verifier/unittests/testdata/sigrl/signature_sigrl_middle.inc create mode 100644 external/epid-sdk-3.0.0/epid/verifier/unittests/testdata/sigrl/sigrl_five_entries.inc create mode 100644 external/epid-sdk-3.0.0/epid/verifier/unittests/testdata/sigrl/sigrl_single_entry.inc create mode 100644 external/epid-sdk-3.0.0/epid/verifier/unittests/verifier-testhelper.cc create mode 100644 external/epid-sdk-3.0.0/epid/verifier/unittests/verifier-testhelper.h create mode 100644 external/epid-sdk-3.0.0/epid/verifier/unittests/verify-test.cc create mode 100644 external/epid-sdk-3.0.0/epid/verifier/unittests/verifybasic-test.cc create mode 100644 external/epid-sdk-3.0.0/epid/verifier/verifier.parts create mode 100644 external/epid-sdk-3.0.0/example/Makefile create mode 100644 external/epid-sdk-3.0.0/example/compressed_data/README.md create mode 100644 external/epid-sdk-3.0.0/example/compressed_data/cacert.bin create mode 100644 external/epid-sdk-3.0.0/example/compressed_data/compressed_data.parts create mode 100644 external/epid-sdk-3.0.0/example/compressed_data/groupa/member0/mprivkey.dat create mode 100644 external/epid-sdk-3.0.0/example/compressed_data/groupa/member1/mprivkey.dat create mode 100644 external/epid-sdk-3.0.0/example/compressed_data/groupa/privrevokedmember0/mprivkey.dat create mode 100644 external/epid-sdk-3.0.0/example/compressed_data/groupa/privrevokedmember1/mprivkey.dat create mode 100644 external/epid-sdk-3.0.0/example/compressed_data/groupa/privrevokedmember2/mprivkey.dat create mode 100644 external/epid-sdk-3.0.0/example/compressed_data/groupa/privrl.bin create mode 100644 external/epid-sdk-3.0.0/example/compressed_data/groupa/privrl_empty.bin create mode 100644 external/epid-sdk-3.0.0/example/compressed_data/groupa/pubkey.bin create mode 100644 external/epid-sdk-3.0.0/example/compressed_data/groupa/sigrevokedmember0/mprivkey.dat create mode 100644 external/epid-sdk-3.0.0/example/compressed_data/groupa/sigrevokedmember1/mprivkey.dat create mode 100644 external/epid-sdk-3.0.0/example/compressed_data/groupa/sigrevokedmember2/mprivkey.dat create mode 100644 external/epid-sdk-3.0.0/example/compressed_data/groupa/sigrl.bin create mode 100644 external/epid-sdk-3.0.0/example/compressed_data/groupa/sigrl_empty.bin create mode 100644 external/epid-sdk-3.0.0/example/compressed_data/groupb/member0/mprivkey.dat create mode 100644 external/epid-sdk-3.0.0/example/compressed_data/groupb/privrevokedmember0/mprivkey.dat create mode 100644 external/epid-sdk-3.0.0/example/compressed_data/groupb/privrl.bin create mode 100644 external/epid-sdk-3.0.0/example/compressed_data/groupb/privrl_empty.bin create mode 100644 external/epid-sdk-3.0.0/example/compressed_data/groupb/pubkey.bin create mode 100644 external/epid-sdk-3.0.0/example/compressed_data/groupb/sigrevokedmember0/mprivkey.dat create mode 100644 external/epid-sdk-3.0.0/example/compressed_data/groupb/sigrl.bin create mode 100644 external/epid-sdk-3.0.0/example/compressed_data/groupb/sigrl_empty.bin create mode 100644 external/epid-sdk-3.0.0/example/compressed_data/grprl.bin create mode 100644 external/epid-sdk-3.0.0/example/compressed_data/grprl_empty.bin create mode 100644 external/epid-sdk-3.0.0/example/compressed_data/mprivkey.dat create mode 100644 external/epid-sdk-3.0.0/example/compressed_data/privrl.bin create mode 100644 external/epid-sdk-3.0.0/example/compressed_data/pubkey.bin create mode 100644 external/epid-sdk-3.0.0/example/compressed_data/sigrl.bin create mode 100644 external/epid-sdk-3.0.0/example/data/README.md create mode 100644 external/epid-sdk-3.0.0/example/data/cacert.bin create mode 100644 external/epid-sdk-3.0.0/example/data/data.parts create mode 100644 external/epid-sdk-3.0.0/example/data/groupa/member0/mprivkey.dat create mode 100644 external/epid-sdk-3.0.0/example/data/groupa/member1/mprivkey.dat create mode 100644 external/epid-sdk-3.0.0/example/data/groupa/privrevokedmember0/mprivkey.dat create mode 100644 external/epid-sdk-3.0.0/example/data/groupa/privrevokedmember1/mprivkey.dat create mode 100644 external/epid-sdk-3.0.0/example/data/groupa/privrevokedmember2/mprivkey.dat create mode 100644 external/epid-sdk-3.0.0/example/data/groupa/privrl.bin create mode 100644 external/epid-sdk-3.0.0/example/data/groupa/privrl_empty.bin create mode 100644 external/epid-sdk-3.0.0/example/data/groupa/pubkey.bin create mode 100644 external/epid-sdk-3.0.0/example/data/groupa/sigrevokedmember0/mprivkey.dat create mode 100644 external/epid-sdk-3.0.0/example/data/groupa/sigrevokedmember1/mprivkey.dat create mode 100644 external/epid-sdk-3.0.0/example/data/groupa/sigrevokedmember2/mprivkey.dat create mode 100644 external/epid-sdk-3.0.0/example/data/groupa/sigrl.bin create mode 100644 external/epid-sdk-3.0.0/example/data/groupa/sigrl_empty.bin create mode 100644 external/epid-sdk-3.0.0/example/data/groupb/member0/mprivkey.dat create mode 100644 external/epid-sdk-3.0.0/example/data/groupb/privrevokedmember0/mprivkey.dat create mode 100644 external/epid-sdk-3.0.0/example/data/groupb/privrl.bin create mode 100644 external/epid-sdk-3.0.0/example/data/groupb/privrl_empty.bin create mode 100644 external/epid-sdk-3.0.0/example/data/groupb/pubkey.bin create mode 100644 external/epid-sdk-3.0.0/example/data/groupb/sigrevokedmember0/mprivkey.dat create mode 100644 external/epid-sdk-3.0.0/example/data/groupb/sigrl.bin create mode 100644 external/epid-sdk-3.0.0/example/data/groupb/sigrl_empty.bin create mode 100644 external/epid-sdk-3.0.0/example/data/grprl.bin create mode 100644 external/epid-sdk-3.0.0/example/data/grprl_empty.bin create mode 100644 external/epid-sdk-3.0.0/example/data/mprivkey.dat create mode 100644 external/epid-sdk-3.0.0/example/data/privrl.bin create mode 100644 external/epid-sdk-3.0.0/example/data/pubkey.bin create mode 100644 external/epid-sdk-3.0.0/example/data/sigrl.bin create mode 100644 external/epid-sdk-3.0.0/example/signmsg/signmsg.parts create mode 100644 external/epid-sdk-3.0.0/example/signmsg/src/main.c create mode 100644 external/epid-sdk-3.0.0/example/signmsg/src/prng.c create mode 100644 external/epid-sdk-3.0.0/example/signmsg/src/prng.h create mode 100644 external/epid-sdk-3.0.0/example/signmsg/src/signmsg.c create mode 100644 external/epid-sdk-3.0.0/example/signmsg/src/signmsg.h create mode 100644 external/epid-sdk-3.0.0/example/util/Makefile create mode 100644 external/epid-sdk-3.0.0/example/util/buffutil.h create mode 100644 external/epid-sdk-3.0.0/example/util/convutil.h create mode 100644 external/epid-sdk-3.0.0/example/util/envutil.h create mode 100644 external/epid-sdk-3.0.0/example/util/src/bufutil.c create mode 100644 external/epid-sdk-3.0.0/example/util/src/convutil.c create mode 100644 external/epid-sdk-3.0.0/example/util/src/envutil.c create mode 100644 external/epid-sdk-3.0.0/example/util/src/strutil.c create mode 100644 external/epid-sdk-3.0.0/example/util/stdtypes.h create mode 100644 external/epid-sdk-3.0.0/example/util/strutil.h create mode 100644 external/epid-sdk-3.0.0/example/util/util.parts create mode 100644 external/epid-sdk-3.0.0/example/verifysig/src/main.c create mode 100644 external/epid-sdk-3.0.0/example/verifysig/src/verifysig.c create mode 100644 external/epid-sdk-3.0.0/example/verifysig/src/verifysig.h create mode 100644 external/epid-sdk-3.0.0/example/verifysig/src/verifysig11.c create mode 100644 external/epid-sdk-3.0.0/example/verifysig/src/verifysig11.h create mode 100644 external/epid-sdk-3.0.0/example/verifysig/verifysig.parts create mode 100644 external/epid-sdk-3.0.0/ext/dropt/LICENSE create mode 100644 external/epid-sdk-3.0.0/ext/dropt/Makefile create mode 100644 external/epid-sdk-3.0.0/ext/dropt/dropt.parts create mode 100644 external/epid-sdk-3.0.0/ext/dropt/include/dropt.h create mode 100644 external/epid-sdk-3.0.0/ext/dropt/include/dropt_string.h create mode 100644 external/epid-sdk-3.0.0/ext/dropt/src/dropt.c create mode 100644 external/epid-sdk-3.0.0/ext/dropt/src/dropt_handlers.c create mode 100644 external/epid-sdk-3.0.0/ext/dropt/src/dropt_string.c create mode 100644 external/epid-sdk-3.0.0/ext/gtest/LICENSE create mode 100644 external/epid-sdk-3.0.0/ext/gtest/Makefile create mode 100644 external/epid-sdk-3.0.0/ext/gtest/gtest-all.cc create mode 100644 external/epid-sdk-3.0.0/ext/gtest/gtest.h create mode 100644 external/epid-sdk-3.0.0/ext/gtest/gtest.parts create mode 100644 external/epid-sdk-3.0.0/ext/ipp/include/ippbase.h create mode 100644 external/epid-sdk-3.0.0/ext/ipp/include/ippcp.h create mode 100644 external/epid-sdk-3.0.0/ext/ipp/include/ippcpdefs.h create mode 100644 external/epid-sdk-3.0.0/ext/ipp/include/ippcpepid.h create mode 100644 external/epid-sdk-3.0.0/ext/ipp/include/ippdefs.h create mode 100644 external/epid-sdk-3.0.0/ext/ipp/include/ipptypes.h create mode 100644 external/epid-sdk-3.0.0/ext/ipp/ippcommon.parts create mode 100644 external/epid-sdk-3.0.0/ext/ipp/ippcp.parts create mode 100644 external/epid-sdk-3.0.0/ext/ipp/ippcpepid.parts create mode 100644 external/epid-sdk-3.0.0/ext/ipp/sources/include/owndefs.h create mode 100644 external/epid-sdk-3.0.0/ext/ipp/sources/ippcp/Makefile create mode 100644 external/epid-sdk-3.0.0/ext/ipp/sources/ippcp/src/owncp.h create mode 100644 external/epid-sdk-3.0.0/ext/ipp/sources/ippcp/src/pcpbn.h create mode 100644 external/epid-sdk-3.0.0/ext/ipp/sources/ippcp/src/pcpbnca.c create mode 100644 external/epid-sdk-3.0.0/ext/ipp/sources/ippcp/src/pcpbnresource.h create mode 100644 external/epid-sdk-3.0.0/ext/ipp/sources/ippcp/src/pcpbnresourceca.c create mode 100644 external/epid-sdk-3.0.0/ext/ipp/sources/ippcp/src/pcpbnsetca.c create mode 100644 external/epid-sdk-3.0.0/ext/ipp/sources/ippcp/src/pcpbnu32arith.c create mode 100644 external/epid-sdk-3.0.0/ext/ipp/sources/ippcp/src/pcpbnu32arith.h create mode 100644 external/epid-sdk-3.0.0/ext/ipp/sources/ippcp/src/pcpbnu32misc.c create mode 100644 external/epid-sdk-3.0.0/ext/ipp/sources/ippcp/src/pcpbnu32misc.h create mode 100644 external/epid-sdk-3.0.0/ext/ipp/sources/ippcp/src/pcpbnuarith.c create mode 100644 external/epid-sdk-3.0.0/ext/ipp/sources/ippcp/src/pcpbnuarith.h create mode 100644 external/epid-sdk-3.0.0/ext/ipp/sources/ippcp/src/pcpbnuimpl.h create mode 100644 external/epid-sdk-3.0.0/ext/ipp/sources/ippcp/src/pcpbnumisc.c create mode 100644 external/epid-sdk-3.0.0/ext/ipp/sources/ippcp/src/pcpbnumisc.h create mode 100644 external/epid-sdk-3.0.0/ext/ipp/sources/ippcp/src/pcpeccp.h create mode 100644 external/epid-sdk-3.0.0/ext/ipp/sources/ippcp/src/pcpeccpdpca.c create mode 100644 external/epid-sdk-3.0.0/ext/ipp/sources/ippcp/src/pcpeccpgenkeyca.c create mode 100644 external/epid-sdk-3.0.0/ext/ipp/sources/ippcp/src/pcpeccpinitca.c create mode 100644 external/epid-sdk-3.0.0/ext/ipp/sources/ippcp/src/pcpeccpmethod.h create mode 100644 external/epid-sdk-3.0.0/ext/ipp/sources/ippcp/src/pcpeccpmethod128.h create mode 100644 external/epid-sdk-3.0.0/ext/ipp/sources/ippcp/src/pcpeccpmethod128ca.c create mode 100644 external/epid-sdk-3.0.0/ext/ipp/sources/ippcp/src/pcpeccpmethod192.h create mode 100644 external/epid-sdk-3.0.0/ext/ipp/sources/ippcp/src/pcpeccpmethod192ca.c create mode 100644 external/epid-sdk-3.0.0/ext/ipp/sources/ippcp/src/pcpeccpmethod224.h create mode 100644 external/epid-sdk-3.0.0/ext/ipp/sources/ippcp/src/pcpeccpmethod224ca.c create mode 100644 external/epid-sdk-3.0.0/ext/ipp/sources/ippcp/src/pcpeccpmethod256.h create mode 100644 external/epid-sdk-3.0.0/ext/ipp/sources/ippcp/src/pcpeccpmethod256ca.c create mode 100644 external/epid-sdk-3.0.0/ext/ipp/sources/ippcp/src/pcpeccpmethod384.h create mode 100644 external/epid-sdk-3.0.0/ext/ipp/sources/ippcp/src/pcpeccpmethod384ca.c create mode 100644 external/epid-sdk-3.0.0/ext/ipp/sources/ippcp/src/pcpeccpmethod521.h create mode 100644 external/epid-sdk-3.0.0/ext/ipp/sources/ippcp/src/pcpeccpmethod521ca.c create mode 100644 external/epid-sdk-3.0.0/ext/ipp/sources/ippcp/src/pcpeccpmethodcom.h create mode 100644 external/epid-sdk-3.0.0/ext/ipp/sources/ippcp/src/pcpeccpmethodcomca.c create mode 100644 external/epid-sdk-3.0.0/ext/ipp/sources/ippcp/src/pcpeccpmethodsm2.h create mode 100644 external/epid-sdk-3.0.0/ext/ipp/sources/ippcp/src/pcpeccpmethodsm2ca.c create mode 100644 external/epid-sdk-3.0.0/ext/ipp/sources/ippcp/src/pcpeccppoint.h create mode 100644 external/epid-sdk-3.0.0/ext/ipp/sources/ippcp/src/pcpeccppointca.c create mode 100644 external/epid-sdk-3.0.0/ext/ipp/sources/ippcp/src/pcpeccppointopca.c create mode 100644 external/epid-sdk-3.0.0/ext/ipp/sources/ippcp/src/pcpeccppublickeyca.c create mode 100644 external/epid-sdk-3.0.0/ext/ipp/sources/ippcp/src/pcpeccpsetkeyca.c create mode 100644 external/epid-sdk-3.0.0/ext/ipp/sources/ippcp/src/pcpeccpsigndsaca.c create mode 100644 external/epid-sdk-3.0.0/ext/ipp/sources/ippcp/src/pcpeccpsscm.c create mode 100644 external/epid-sdk-3.0.0/ext/ipp/sources/ippcp/src/pcpeccpsscm.h create mode 100644 external/epid-sdk-3.0.0/ext/ipp/sources/ippcp/src/pcpeccpstdca.c create mode 100644 external/epid-sdk-3.0.0/ext/ipp/sources/ippcp/src/pcpeccpverifydsaca.c create mode 100644 external/epid-sdk-3.0.0/ext/ipp/sources/ippcp/src/pcphash.h create mode 100644 external/epid-sdk-3.0.0/ext/ipp/sources/ippcp/src/pcphashcnt.c create mode 100644 external/epid-sdk-3.0.0/ext/ipp/sources/ippcp/src/pcphashmd5px.c create mode 100644 external/epid-sdk-3.0.0/ext/ipp/sources/ippcp/src/pcphashsha1px.c create mode 100644 external/epid-sdk-3.0.0/ext/ipp/sources/ippcp/src/pcphashsha256px.c create mode 100644 external/epid-sdk-3.0.0/ext/ipp/sources/ippcp/src/pcphashsha512px.c create mode 100644 external/epid-sdk-3.0.0/ext/ipp/sources/ippcp/src/pcpmd5ca.c create mode 100644 external/epid-sdk-3.0.0/ext/ipp/sources/ippcp/src/pcpmontexpbinca.c create mode 100644 external/epid-sdk-3.0.0/ext/ipp/sources/ippcp/src/pcpmontgomery.h create mode 100644 external/epid-sdk-3.0.0/ext/ipp/sources/ippcp/src/pcpmontgomeryca.c create mode 100644 external/epid-sdk-3.0.0/ext/ipp/sources/ippcp/src/pcpmontred.c create mode 100644 external/epid-sdk-3.0.0/ext/ipp/sources/ippcp/src/pcpmulbnukara.h create mode 100644 external/epid-sdk-3.0.0/ext/ipp/sources/ippcp/src/pcppma.h create mode 100644 external/epid-sdk-3.0.0/ext/ipp/sources/ippcp/src/pcppma128.c create mode 100644 external/epid-sdk-3.0.0/ext/ipp/sources/ippcp/src/pcppma128.h create mode 100644 external/epid-sdk-3.0.0/ext/ipp/sources/ippcp/src/pcppma192.c create mode 100644 external/epid-sdk-3.0.0/ext/ipp/sources/ippcp/src/pcppma192.h create mode 100644 external/epid-sdk-3.0.0/ext/ipp/sources/ippcp/src/pcppma224.c create mode 100644 external/epid-sdk-3.0.0/ext/ipp/sources/ippcp/src/pcppma224.h create mode 100644 external/epid-sdk-3.0.0/ext/ipp/sources/ippcp/src/pcppma256.c create mode 100644 external/epid-sdk-3.0.0/ext/ipp/sources/ippcp/src/pcppma256.h create mode 100644 external/epid-sdk-3.0.0/ext/ipp/sources/ippcp/src/pcppma384.c create mode 100644 external/epid-sdk-3.0.0/ext/ipp/sources/ippcp/src/pcppma384.h create mode 100644 external/epid-sdk-3.0.0/ext/ipp/sources/ippcp/src/pcppma521.c create mode 100644 external/epid-sdk-3.0.0/ext/ipp/sources/ippcp/src/pcppma521.h create mode 100644 external/epid-sdk-3.0.0/ext/ipp/sources/ippcp/src/pcppmasm2.c create mode 100644 external/epid-sdk-3.0.0/ext/ipp/sources/ippcp/src/pcppmasm2.h create mode 100644 external/epid-sdk-3.0.0/ext/ipp/sources/ippcp/src/pcpprimeg.h create mode 100644 external/epid-sdk-3.0.0/ext/ipp/sources/ippcp/src/pcpprimeginitca.c create mode 100644 external/epid-sdk-3.0.0/ext/ipp/sources/ippcp/src/pcpprng.h create mode 100644 external/epid-sdk-3.0.0/ext/ipp/sources/ippcp/src/pcpprngenca.c create mode 100644 external/epid-sdk-3.0.0/ext/ipp/sources/ippcp/src/pcpprnginitca.c create mode 100644 external/epid-sdk-3.0.0/ext/ipp/sources/ippcp/src/pcpprngsetca.c create mode 100644 external/epid-sdk-3.0.0/ext/ipp/sources/ippcp/src/pcpsha1ca.c create mode 100644 external/epid-sdk-3.0.0/ext/ipp/sources/ippcp/src/pcpsha256ca.c create mode 100644 external/epid-sdk-3.0.0/ext/ipp/sources/ippcp/src/pcpsha512ca.c create mode 100644 external/epid-sdk-3.0.0/ext/ipp/sources/ippcp/src/pcptool.h create mode 100644 external/epid-sdk-3.0.0/ext/ipp/sources/ippcp/src/pcpvariant.h create mode 100644 external/epid-sdk-3.0.0/ext/ipp/sources/ippcp/src/precomp.h create mode 100644 external/epid-sdk-3.0.0/ext/ipp/sources/ippcpepid/Makefile create mode 100644 external/epid-sdk-3.0.0/ext/ipp/sources/ippcpepid/src/ippcpepid_y8.h create mode 100644 external/epid-sdk-3.0.0/ext/ipp/sources/ippcpepid/src/owncpepid.h create mode 100644 external/epid-sdk-3.0.0/ext/ipp/sources/ippcpepid/src/pcpgfp.c create mode 100644 external/epid-sdk-3.0.0/ext/ipp/sources/ippcpepid/src/pcpgfpec.c create mode 100644 external/epid-sdk-3.0.0/ext/ipp/sources/ippcpepid/src/pcpgfpecpoint.c create mode 100644 external/epid-sdk-3.0.0/ext/ipp/sources/ippcpepid/src/pcpgfpecpointstuff.c create mode 100644 external/epid-sdk-3.0.0/ext/ipp/sources/ippcpepid/src/pcpgfpecstuff.h create mode 100644 external/epid-sdk-3.0.0/ext/ipp/sources/ippcpepid/src/pcpgfphashstuff.h create mode 100644 external/epid-sdk-3.0.0/ext/ipp/sources/ippcpepid/src/pcpgfpstuff.c create mode 100644 external/epid-sdk-3.0.0/ext/ipp/sources/ippcpepid/src/pcpgfpstuff.h create mode 100644 external/epid-sdk-3.0.0/ext/ipp/sources/ippcpepid/src/pcpgfpx.c create mode 100644 external/epid-sdk-3.0.0/ext/ipp/sources/ippcpepid/src/pcpgfpxstuff.c create mode 100644 external/epid-sdk-3.0.0/ext/ipp/sources/ippcpepid/src/pcpgfpxstuff.h create mode 100644 external/epid-sdk-3.0.0/parts-site/configurations/__init__.py create mode 100644 external/epid-sdk-3.0.0/parts-site/configurations/debug/__init__.py create mode 100644 external/epid-sdk-3.0.0/parts-site/configurations/debug/g++.py create mode 100644 external/epid-sdk-3.0.0/parts-site/configurations/debug/gcc.py create mode 100644 external/epid-sdk-3.0.0/parts-site/configurations/debug/intelc_posix-any.py create mode 100644 external/epid-sdk-3.0.0/parts-site/configurations/debug/intelc_win32-any_win32-x86.py create mode 100644 external/epid-sdk-3.0.0/parts-site/configurations/debug/intelc_win32-any_win32-x86_64.py create mode 100644 external/epid-sdk-3.0.0/parts-site/configurations/debug/msvc_win32-any_win32-x86.py create mode 100644 external/epid-sdk-3.0.0/parts-site/configurations/debug/msvc_win32-any_win32-x86_64.py create mode 100644 external/epid-sdk-3.0.0/parts-site/configurations/release/__init__.py create mode 100644 external/epid-sdk-3.0.0/parts-site/configurations/release/g++.py create mode 100644 external/epid-sdk-3.0.0/parts-site/configurations/release/gcc.py create mode 100644 external/epid-sdk-3.0.0/parts-site/configurations/release/intelc_posix-any.py create mode 100644 external/epid-sdk-3.0.0/parts-site/configurations/release/intelc_win32-any_win32-x86.py create mode 100644 external/epid-sdk-3.0.0/parts-site/configurations/release/intelc_win32-any_win32-x86_64.py create mode 100644 external/epid-sdk-3.0.0/parts-site/configurations/release/msvc_win32-any_win32-x86.py create mode 100644 external/epid-sdk-3.0.0/parts-site/configurations/release/msvc_win32-any_win32-x86_64.py create mode 100644 external/epid-sdk-3.0.0/tools/Makefile create mode 100644 external/epid-sdk-3.0.0/tools/extractgrps/extractgrps.parts create mode 100644 external/epid-sdk-3.0.0/tools/extractgrps/src/main.c create mode 100644 external/epid-sdk-3.0.0/tools/extractkeys/extractkeys.parts create mode 100644 external/epid-sdk-3.0.0/tools/extractkeys/src/main.c create mode 100644 external/epid-sdk-3.0.0/tools/revokegrp/revokegrp.parts create mode 100644 external/epid-sdk-3.0.0/tools/revokegrp/src/main.c create mode 100644 external/epid-sdk-3.0.0/tools/revokekey/revokekey.parts create mode 100644 external/epid-sdk-3.0.0/tools/revokekey/src/main.c create mode 100644 external/epid-sdk-3.0.0/tools/revokesig/revokesig.parts create mode 100644 external/epid-sdk-3.0.0/tools/revokesig/src/main.c create mode 100644 external/sqlite/src/sqlite3.c create mode 100644 external/sqlite/src/sqlite3.h create mode 100644 psw/ae/aesm_service/source/pse_op/PSDAService.cpp create mode 100644 psw/ae/aesm_service/source/pse_op/PSDAService.h create mode 100644 psw/ae/aesm_service/source/pse_op/PSEClass.cpp create mode 100644 psw/ae/aesm_service/source/pse_op/PSEClass.h create mode 100644 psw/ae/aesm_service/source/pse_op/aesm_pse_status.cpp rename psw/{uae_service/uae_wrapper/src/AEInternalServicesProvider.cpp => ae/aesm_service/source/pse_op/aesm_pse_status.h} (68%) create mode 100644 psw/ae/aesm_service/source/pse_op/jhi_proxy.cpp create mode 100644 psw/ae/aesm_service/source/pse_op/jhi_proxy.h create mode 100644 psw/ae/aesm_service/source/pse_op/pse_op_logic.cpp create mode 100644 psw/ae/aesm_service/source/pse_op/pse_op_logic.h create mode 100644 psw/ae/aesm_service/source/pse_op/pse_op_psda_ocall.cpp create mode 100644 psw/ae/aesm_service/source/pse_op/pse_op_vmc_sqlite_ocall.cpp create mode 100644 psw/ae/aesm_service/source/pse_pr/PSEPRClass.cpp create mode 100644 psw/ae/aesm_service/source/pse_pr/PSEPRClass.h create mode 100644 psw/ae/aesm_service/source/upse/BackendInterface/CertificateProvisioningProtocol.cpp create mode 100644 psw/ae/aesm_service/source/upse/BackendInterface/CertificateProvisioningProtocol.h create mode 100644 psw/ae/aesm_service/source/upse/BackendInterface/pse_crypto_helper.cpp create mode 100644 psw/ae/aesm_service/source/upse/BackendInterface/pse_provisioning_msg1.cpp create mode 100644 psw/ae/aesm_service/source/upse/BackendInterface/pse_provisioning_msg2.cpp create mode 100644 psw/ae/aesm_service/source/upse/BackendInterface/pse_provisioning_msg3.cpp create mode 100644 psw/ae/aesm_service/source/upse/BackendInterface/pse_provisioning_msg4.cpp create mode 100644 psw/ae/aesm_service/source/upse/Buffer.h create mode 100644 psw/ae/aesm_service/source/upse/helper.cpp create mode 100644 psw/ae/aesm_service/source/upse/helper.h create mode 100644 psw/ae/aesm_service/source/upse/interface_ocsp.cpp create mode 100644 psw/ae/aesm_service/source/upse/interface_ocsp.h create mode 100644 psw/ae/aesm_service/source/upse/interface_psda.cpp create mode 100644 psw/ae/aesm_service/source/upse/interface_psda.h rename psw/ae/{data/constants/linux/pse_op_prod_id.hh => aesm_service/source/upse/pse_pr_inc.h} (87%) create mode 100644 psw/ae/aesm_service/source/upse/sigma_helper.cpp create mode 100644 psw/ae/aesm_service/source/upse/sigma_helper.h create mode 100644 psw/ae/aesm_service/source/upse/u_certificate_provisioning.cpp create mode 100644 psw/ae/aesm_service/source/upse/u_certificate_provisioning.h create mode 100644 psw/ae/aesm_service/source/upse/u_long_term_pairing.cpp rename psw/ae/{data/constants/linux/pse_op_isv_svn_min.hh => aesm_service/source/upse/u_long_term_pairing.h} (85%) create mode 100644 psw/ae/aesm_service/source/upse/uecall_bridge.cpp create mode 100644 psw/ae/aesm_service/source/upse/uecall_bridge.h create mode 100644 psw/ae/aesm_service/source/upse/upse.cpp rename psw/{uae_service/uae_wrapper/inc/AEInternalServicesProvider.h => ae/aesm_service/source/upse/upse.h} (79%) create mode 100644 psw/ae/aesm_service/source/upse/upse_iclsInit.cpp create mode 100644 psw/ae/common/inc/IAEMessage.h rename psw/ae/common/inc/{Config.h => SocketConfig.h} (79%) create mode 100644 psw/ae/common/pse_pr_common.cpp create mode 100644 psw/ae/common/t_pairing_blob.cpp create mode 100644 psw/ae/cse_provision_tool/Makefile create mode 100644 psw/ae/cse_provision_tool/cse_provision_tool.cpp create mode 100644 psw/ae/data/constants/linux/epid_verify_pub.hh create mode 100644 psw/ae/data/constants/linux/ivk_ca_root_der.hh create mode 100644 psw/ae/data/constants/linux/pse_pr_padding.hh create mode 100644 psw/ae/data/constants/linux/pse_product_type.hh create mode 100644 psw/ae/inc/internal/Epid11_rl.h create mode 100644 psw/ae/inc/internal/pairing_blob.h create mode 100644 psw/ae/inc/internal/pse_pr_common.h create mode 100644 psw/ae/inc/internal/pse_pr_sigma_1_1_defs.h create mode 100644 psw/ae/inc/internal/pse_pr_sigma_common_defs.h create mode 100644 psw/ae/inc/internal/pse_pr_types.h create mode 100644 psw/ae/inc/internal/t_pairing_blob.h create mode 100644 psw/ae/pse/pse_op/Makefile create mode 100644 psw/ae/pse/pse_op/config.xml create mode 100755 psw/ae/pse/pse_op/createhash.pl create mode 100644 psw/ae/pse/pse_op/hashtable.txt create mode 100644 psw/ae/pse/pse_op/monotonic_counter.cpp create mode 100644 psw/ae/pse/pse_op/monotonic_counter.h create mode 100644 psw/ae/pse/pse_op/monotonic_counter_database_sqlite_access_hw_mc.cpp create mode 100644 psw/ae/pse/pse_op/monotonic_counter_database_sqlite_access_hw_mc.h create mode 100644 psw/ae/pse/pse_op/monotonic_counter_database_sqlite_bin_hash_tree_utility.cpp create mode 100644 psw/ae/pse/pse_op/monotonic_counter_database_sqlite_bin_hash_tree_utility.h create mode 100644 psw/ae/pse/pse_op/monotonic_counter_database_sqlite_cache.cpp create mode 100644 psw/ae/pse/pse_op/monotonic_counter_database_sqlite_cache.h create mode 100644 psw/ae/pse/pse_op/monotonic_counter_database_sqlite_check_error.cpp create mode 100644 psw/ae/pse/pse_op/monotonic_counter_database_sqlite_check_error.h create mode 100644 psw/ae/pse/pse_op/monotonic_counter_database_sqlite_rpdb.cpp create mode 100644 psw/ae/pse/pse_op/monotonic_counter_database_sqlite_rpdb.h create mode 100644 psw/ae/pse/pse_op/monotonic_counter_database_types.h create mode 100644 psw/ae/pse/pse_op/psda_service.cpp create mode 100644 psw/ae/pse/pse_op/psda_service.h create mode 100644 psw/ae/pse/pse_op/pse_op.cpp create mode 100644 psw/ae/pse/pse_op/pse_op.edl create mode 100644 psw/ae/pse/pse_op/session_mgr.cpp create mode 100644 psw/ae/pse/pse_op/session_mgr.h create mode 100644 psw/ae/pse/pse_op/trusted_time.cpp create mode 100644 psw/ae/pse/pse_op/trusted_time.h create mode 100644 psw/ae/pse/pse_op/utility.cpp create mode 100644 psw/ae/pse/pse_op/vmc_db_generator/Makefile create mode 100644 psw/ae/pse/pse_op/vmc_db_generator/main.cpp create mode 100644 psw/ae/pse/pse_op/vmc_db_generator/prebuild_pse_vmc.db create mode 100644 psw/ae/pse/pse_pr/Keys.cpp create mode 100644 psw/ae/pse/pse_pr/Keys.h create mode 100644 psw/ae/pse/pse_pr/Makefile create mode 100644 psw/ae/pse/pse_pr/X509Parser.cpp create mode 100644 psw/ae/pse/pse_pr/X509_Parser/X509AlgoType.h create mode 100644 psw/ae/pse/pse_pr/X509_Parser/X509Cert.h create mode 100644 psw/ae/pse/pse_pr/X509_Parser/X509_Interface.h create mode 100644 psw/ae/pse/pse_pr/X509_Parser/X509_Parser.cpp create mode 100644 psw/ae/pse/pse_pr/X509_Parser/X509_Parser.h create mode 100644 psw/ae/pse/pse_pr/X509_Parser/pse_pr_support.h create mode 100644 psw/ae/pse/pse_pr/X509_Parser/typedef.h create mode 100644 psw/ae/pse/pse_pr/config.xml create mode 100644 psw/ae/pse/pse_pr/include/X509Parser.h create mode 100644 psw/ae/pse/pse_pr/include/csr_template_data.h create mode 100644 psw/ae/pse/pse_pr/include/prepare_hash_sha256.h create mode 100644 psw/ae/pse/pse_pr/include/prepare_hmac_sha256.h create mode 100644 psw/ae/pse/pse_pr/include/protected_output_certificates.h create mode 100644 psw/ae/pse/pse_pr/include/pse_pr_inc.h create mode 100644 psw/ae/pse/pse_pr/include/safe_id.h create mode 100644 psw/ae/pse/pse_pr/include/sigma_crypto_layer.h create mode 100644 psw/ae/pse/pse_pr/include/sign_csr.h create mode 100644 psw/ae/pse/pse_pr/include/sign_template.h create mode 100644 psw/ae/pse/pse_pr/include/signing_template_info.h create mode 100644 psw/ae/pse/pse_pr/include/t_certificate_provisioning.h create mode 100644 psw/ae/pse/pse_pr/include/t_long_term_pairing.h create mode 100644 psw/ae/pse/pse_pr/prepare_hash_sha1.cpp create mode 100644 psw/ae/pse/pse_pr/prepare_hash_sha1.h create mode 100644 psw/ae/pse/pse_pr/prepare_hash_sha256.cpp create mode 100644 psw/ae/pse/pse_pr/prepare_hmac_sha256.cpp create mode 100644 psw/ae/pse/pse_pr/pse_pr.cpp create mode 100644 psw/ae/pse/pse_pr/pse_pr.edl create mode 100644 psw/ae/pse/pse_pr/sigma_crypto_layer.cpp create mode 100644 psw/ae/pse/pse_pr/sign_csr.cpp create mode 100644 psw/ae/pse/pse_pr/t_certificate_provisioning.cpp create mode 100644 psw/ae/pse/pse_pr/t_long_term_pairing.cpp create mode 100644 psw/ae/pse/pse_pr/x509_parser_status.h delete mode 100644 psw/uae_service/uae_wrapper/inc/AEInternalServices.h create mode 100644 sdk/gperftools/Makefile create mode 100644 sdk/gperftools/README create mode 100755 sdk/gperftools/gperftools-2.5/Makefile.am create mode 100644 sdk/gperftools/gperftools-2.5/Makefile.in create mode 100644 sdk/gperftools/gperftools-2.5/README create mode 100755 sdk/gperftools/gperftools-2.5/autogen-linux.sh create mode 100644 sdk/gperftools/gperftools-2.5/benchmark/binary_trees.cc create mode 100644 sdk/gperftools/gperftools-2.5/benchmark/malloc_bench.cc create mode 100644 sdk/gperftools/gperftools-2.5/benchmark/run_benchmark.c create mode 100644 sdk/gperftools/gperftools-2.5/benchmark/run_benchmark.h create mode 100755 sdk/gperftools/gperftools-2.5/config.guess create mode 100755 sdk/gperftools/gperftools-2.5/config.sub create mode 100755 sdk/gperftools/gperftools-2.5/configure create mode 100755 sdk/gperftools/gperftools-2.5/depcomp create mode 100755 sdk/gperftools/gperftools-2.5/install-sh create mode 100644 sdk/gperftools/gperftools-2.5/ltmain.sh create mode 100644 sdk/gperftools/gperftools-2.5/src/addressmap-inl.h create mode 100644 sdk/gperftools/gperftools-2.5/src/base/arm_instruction_set_select.h create mode 100644 sdk/gperftools/gperftools-2.5/src/base/atomicops-internals-arm-generic.h create mode 100644 sdk/gperftools/gperftools-2.5/src/base/atomicops-internals-arm-v6plus.h create mode 100644 sdk/gperftools/gperftools-2.5/src/base/atomicops-internals-gcc.h create mode 100644 sdk/gperftools/gperftools-2.5/src/base/atomicops-internals-linuxppc.h create mode 100644 sdk/gperftools/gperftools-2.5/src/base/atomicops-internals-macosx.h create mode 100644 sdk/gperftools/gperftools-2.5/src/base/atomicops-internals-mips.h create mode 100644 sdk/gperftools/gperftools-2.5/src/base/atomicops-internals-windows.h create mode 100644 sdk/gperftools/gperftools-2.5/src/base/atomicops-internals-x86.cc create mode 100644 sdk/gperftools/gperftools-2.5/src/base/atomicops-internals-x86.h create mode 100644 sdk/gperftools/gperftools-2.5/src/base/atomicops.h create mode 100644 sdk/gperftools/gperftools-2.5/src/base/basictypes.h create mode 100644 sdk/gperftools/gperftools-2.5/src/base/commandlineflags.h create mode 100644 sdk/gperftools/gperftools-2.5/src/base/dynamic_annotations.c create mode 100644 sdk/gperftools/gperftools-2.5/src/base/dynamic_annotations.h create mode 100644 sdk/gperftools/gperftools-2.5/src/base/elf_mem_image.cc create mode 100644 sdk/gperftools/gperftools-2.5/src/base/elf_mem_image.h create mode 100644 sdk/gperftools/gperftools-2.5/src/base/elfcore.h create mode 100644 sdk/gperftools/gperftools-2.5/src/base/googleinit.h create mode 100644 sdk/gperftools/gperftools-2.5/src/base/linux_syscall_support.h create mode 100644 sdk/gperftools/gperftools-2.5/src/base/linuxthreads.cc create mode 100644 sdk/gperftools/gperftools-2.5/src/base/linuxthreads.h create mode 100644 sdk/gperftools/gperftools-2.5/src/base/logging.cc create mode 100644 sdk/gperftools/gperftools-2.5/src/base/logging.h create mode 100644 sdk/gperftools/gperftools-2.5/src/base/low_level_alloc.cc create mode 100644 sdk/gperftools/gperftools-2.5/src/base/low_level_alloc.h create mode 100644 sdk/gperftools/gperftools-2.5/src/base/sgx_utils.cc create mode 100644 sdk/gperftools/gperftools-2.5/src/base/simple_mutex.h create mode 100644 sdk/gperftools/gperftools-2.5/src/base/spinlock.cc create mode 100644 sdk/gperftools/gperftools-2.5/src/base/spinlock.h create mode 100644 sdk/gperftools/gperftools-2.5/src/base/spinlock_internal.cc create mode 100644 sdk/gperftools/gperftools-2.5/src/base/spinlock_internal.h create mode 100644 sdk/gperftools/gperftools-2.5/src/base/spinlock_linux-inl.h create mode 100644 sdk/gperftools/gperftools-2.5/src/base/spinlock_posix-inl.h create mode 100644 sdk/gperftools/gperftools-2.5/src/base/spinlock_win32-inl.h create mode 100644 sdk/gperftools/gperftools-2.5/src/base/stl_allocator.h create mode 100644 sdk/gperftools/gperftools-2.5/src/base/sysinfo.cc create mode 100644 sdk/gperftools/gperftools-2.5/src/base/sysinfo.h create mode 100644 sdk/gperftools/gperftools-2.5/src/base/thread_annotations.h create mode 100644 sdk/gperftools/gperftools-2.5/src/base/thread_lister.c create mode 100644 sdk/gperftools/gperftools-2.5/src/base/thread_lister.h create mode 100644 sdk/gperftools/gperftools-2.5/src/base/vdso_support.cc create mode 100644 sdk/gperftools/gperftools-2.5/src/base/vdso_support.h create mode 100644 sdk/gperftools/gperftools-2.5/src/central_freelist.cc create mode 100644 sdk/gperftools/gperftools-2.5/src/central_freelist.h create mode 100644 sdk/gperftools/gperftools-2.5/src/common.cc create mode 100644 sdk/gperftools/gperftools-2.5/src/common.h create mode 100644 sdk/gperftools/gperftools-2.5/src/config.h.in create mode 100644 sdk/gperftools/gperftools-2.5/src/config_for_unittests.h create mode 100644 sdk/gperftools/gperftools-2.5/src/debugallocation.cc create mode 100644 sdk/gperftools/gperftools-2.5/src/emergency_malloc.cc create mode 100644 sdk/gperftools/gperftools-2.5/src/emergency_malloc.h create mode 100644 sdk/gperftools/gperftools-2.5/src/emergency_malloc_for_stacktrace.cc create mode 100644 sdk/gperftools/gperftools-2.5/src/getenv_safe.h create mode 100644 sdk/gperftools/gperftools-2.5/src/getpc.h create mode 100644 sdk/gperftools/gperftools-2.5/src/google/heap-checker.h create mode 100644 sdk/gperftools/gperftools-2.5/src/google/heap-profiler.h create mode 100644 sdk/gperftools/gperftools-2.5/src/google/malloc_extension.h create mode 100644 sdk/gperftools/gperftools-2.5/src/google/malloc_extension_c.h create mode 100644 sdk/gperftools/gperftools-2.5/src/google/malloc_hook.h create mode 100644 sdk/gperftools/gperftools-2.5/src/google/malloc_hook_c.h create mode 100644 sdk/gperftools/gperftools-2.5/src/google/profiler.h create mode 100644 sdk/gperftools/gperftools-2.5/src/google/stacktrace.h create mode 100644 sdk/gperftools/gperftools-2.5/src/google/tcmalloc.h create mode 100644 sdk/gperftools/gperftools-2.5/src/gperftools/heap-checker.h create mode 100644 sdk/gperftools/gperftools-2.5/src/gperftools/heap-profiler.h create mode 100644 sdk/gperftools/gperftools-2.5/src/gperftools/malloc_extension.h create mode 100644 sdk/gperftools/gperftools-2.5/src/gperftools/malloc_extension_c.h create mode 100644 sdk/gperftools/gperftools-2.5/src/gperftools/malloc_hook.h create mode 100644 sdk/gperftools/gperftools-2.5/src/gperftools/malloc_hook_c.h create mode 100644 sdk/gperftools/gperftools-2.5/src/gperftools/profiler.h create mode 100644 sdk/gperftools/gperftools-2.5/src/gperftools/stacktrace.h create mode 100644 sdk/gperftools/gperftools-2.5/src/gperftools/tcmalloc.h.in create mode 100644 sdk/gperftools/gperftools-2.5/src/heap-checker-bcad.cc create mode 100755 sdk/gperftools/gperftools-2.5/src/heap-checker.cc create mode 100644 sdk/gperftools/gperftools-2.5/src/heap-profile-stats.h create mode 100644 sdk/gperftools/gperftools-2.5/src/heap-profile-table.cc create mode 100644 sdk/gperftools/gperftools-2.5/src/heap-profile-table.h create mode 100755 sdk/gperftools/gperftools-2.5/src/heap-profiler.cc create mode 100644 sdk/gperftools/gperftools-2.5/src/internal_logging.cc create mode 100644 sdk/gperftools/gperftools-2.5/src/internal_logging.h create mode 100644 sdk/gperftools/gperftools-2.5/src/libc_override.h create mode 100644 sdk/gperftools/gperftools-2.5/src/libc_override_gcc_and_weak.h create mode 100644 sdk/gperftools/gperftools-2.5/src/libc_override_glibc.h create mode 100644 sdk/gperftools/gperftools-2.5/src/libc_override_redefine.h create mode 100644 sdk/gperftools/gperftools-2.5/src/linked_list.h create mode 100644 sdk/gperftools/gperftools-2.5/src/malloc_extension.cc create mode 100644 sdk/gperftools/gperftools-2.5/src/malloc_hook-inl.h create mode 100644 sdk/gperftools/gperftools-2.5/src/malloc_hook.cc create mode 100644 sdk/gperftools/gperftools-2.5/src/malloc_hook_mmap_freebsd.h create mode 100755 sdk/gperftools/gperftools-2.5/src/malloc_hook_mmap_linux.h create mode 100644 sdk/gperftools/gperftools-2.5/src/maybe_emergency_malloc.h create mode 100644 sdk/gperftools/gperftools-2.5/src/maybe_threads.cc create mode 100644 sdk/gperftools/gperftools-2.5/src/maybe_threads.h create mode 100644 sdk/gperftools/gperftools-2.5/src/memfs_malloc.cc create mode 100755 sdk/gperftools/gperftools-2.5/src/memory_region_map.cc create mode 100644 sdk/gperftools/gperftools-2.5/src/memory_region_map.h create mode 100644 sdk/gperftools/gperftools-2.5/src/packed-cache-inl.h create mode 100644 sdk/gperftools/gperftools-2.5/src/page_heap.cc create mode 100644 sdk/gperftools/gperftools-2.5/src/page_heap.h create mode 100644 sdk/gperftools/gperftools-2.5/src/page_heap_allocator.h create mode 100644 sdk/gperftools/gperftools-2.5/src/pagemap.h create mode 100755 sdk/gperftools/gperftools-2.5/src/pprof create mode 100644 sdk/gperftools/gperftools-2.5/src/profile-handler.cc create mode 100644 sdk/gperftools/gperftools-2.5/src/profile-handler.h create mode 100644 sdk/gperftools/gperftools-2.5/src/profiledata.cc create mode 100644 sdk/gperftools/gperftools-2.5/src/profiledata.h create mode 100644 sdk/gperftools/gperftools-2.5/src/profiler.cc create mode 100644 sdk/gperftools/gperftools-2.5/src/raw_printer.cc create mode 100644 sdk/gperftools/gperftools-2.5/src/raw_printer.h create mode 100755 sdk/gperftools/gperftools-2.5/src/sampler.cc create mode 100755 sdk/gperftools/gperftools-2.5/src/sampler.h create mode 100644 sdk/gperftools/gperftools-2.5/src/span.cc create mode 100644 sdk/gperftools/gperftools-2.5/src/span.h create mode 100644 sdk/gperftools/gperftools-2.5/src/stack_trace_table.cc create mode 100644 sdk/gperftools/gperftools-2.5/src/stack_trace_table.h create mode 100644 sdk/gperftools/gperftools-2.5/src/stacktrace.cc create mode 100644 sdk/gperftools/gperftools-2.5/src/stacktrace_arm-inl.h create mode 100644 sdk/gperftools/gperftools-2.5/src/stacktrace_generic-inl.h create mode 100644 sdk/gperftools/gperftools-2.5/src/stacktrace_impl_setup-inl.h create mode 100755 sdk/gperftools/gperftools-2.5/src/stacktrace_instrument-inl.h create mode 100644 sdk/gperftools/gperftools-2.5/src/stacktrace_libgcc-inl.h create mode 100644 sdk/gperftools/gperftools-2.5/src/stacktrace_libunwind-inl.h create mode 100644 sdk/gperftools/gperftools-2.5/src/stacktrace_powerpc-darwin-inl.h create mode 100644 sdk/gperftools/gperftools-2.5/src/stacktrace_powerpc-inl.h create mode 100644 sdk/gperftools/gperftools-2.5/src/stacktrace_powerpc-linux-inl.h create mode 100644 sdk/gperftools/gperftools-2.5/src/stacktrace_win32-inl.h create mode 100644 sdk/gperftools/gperftools-2.5/src/stacktrace_x86-inl.h create mode 100644 sdk/gperftools/gperftools-2.5/src/static_vars.cc create mode 100644 sdk/gperftools/gperftools-2.5/src/static_vars.h create mode 100755 sdk/gperftools/gperftools-2.5/src/symbolize.cc create mode 100644 sdk/gperftools/gperftools-2.5/src/symbolize.h create mode 100755 sdk/gperftools/gperftools-2.5/src/system-alloc.cc create mode 100644 sdk/gperftools/gperftools-2.5/src/system-alloc.h create mode 100644 sdk/gperftools/gperftools-2.5/src/tcmalloc.cc create mode 100644 sdk/gperftools/gperftools-2.5/src/tcmalloc.h create mode 100644 sdk/gperftools/gperftools-2.5/src/tcmalloc_guard.h create mode 100644 sdk/gperftools/gperftools-2.5/src/tests/addressmap_unittest.cc create mode 100644 sdk/gperftools/gperftools-2.5/src/tests/atomicops_unittest.cc create mode 100644 sdk/gperftools/gperftools-2.5/src/tests/current_allocated_bytes_test.cc create mode 100644 sdk/gperftools/gperftools-2.5/src/tests/debugallocation_test.cc create mode 100755 sdk/gperftools/gperftools-2.5/src/tests/debugallocation_test.sh create mode 100644 sdk/gperftools/gperftools-2.5/src/tests/frag_unittest.cc create mode 100644 sdk/gperftools/gperftools-2.5/src/tests/getpc_test.cc create mode 100755 sdk/gperftools/gperftools-2.5/src/tests/heap-checker-death_unittest.sh create mode 100644 sdk/gperftools/gperftools-2.5/src/tests/heap-checker_unittest.cc create mode 100755 sdk/gperftools/gperftools-2.5/src/tests/heap-checker_unittest.sh create mode 100644 sdk/gperftools/gperftools-2.5/src/tests/heap-profiler_unittest.cc create mode 100755 sdk/gperftools/gperftools-2.5/src/tests/heap-profiler_unittest.sh create mode 100644 sdk/gperftools/gperftools-2.5/src/tests/large_heap_fragmentation_unittest.cc create mode 100644 sdk/gperftools/gperftools-2.5/src/tests/low_level_alloc_unittest.cc create mode 100644 sdk/gperftools/gperftools-2.5/src/tests/malloc_extension_c_test.c create mode 100644 sdk/gperftools/gperftools-2.5/src/tests/malloc_extension_test.cc create mode 100644 sdk/gperftools/gperftools-2.5/src/tests/malloc_hook_test.cc create mode 100644 sdk/gperftools/gperftools-2.5/src/tests/markidle_unittest.cc create mode 100755 sdk/gperftools/gperftools-2.5/src/tests/maybe_threads_unittest.sh create mode 100644 sdk/gperftools/gperftools-2.5/src/tests/memalign_unittest.cc create mode 100644 sdk/gperftools/gperftools-2.5/src/tests/packed-cache_test.cc create mode 100644 sdk/gperftools/gperftools-2.5/src/tests/page_heap_test.cc create mode 100644 sdk/gperftools/gperftools-2.5/src/tests/pagemap_unittest.cc create mode 100644 sdk/gperftools/gperftools-2.5/src/tests/profile-handler_unittest.cc create mode 100644 sdk/gperftools/gperftools-2.5/src/tests/profiledata_unittest.cc create mode 100644 sdk/gperftools/gperftools-2.5/src/tests/profiler_unittest.cc create mode 100755 sdk/gperftools/gperftools-2.5/src/tests/profiler_unittest.sh create mode 100644 sdk/gperftools/gperftools-2.5/src/tests/raw_printer_test.cc create mode 100644 sdk/gperftools/gperftools-2.5/src/tests/realloc_unittest.cc create mode 100755 sdk/gperftools/gperftools-2.5/src/tests/sampler_test.cc create mode 100644 sdk/gperftools/gperftools-2.5/src/tests/sampling_test.cc create mode 100755 sdk/gperftools/gperftools-2.5/src/tests/sampling_test.sh create mode 100644 sdk/gperftools/gperftools-2.5/src/tests/simple_compat_test.cc create mode 100644 sdk/gperftools/gperftools-2.5/src/tests/stack_trace_table_test.cc create mode 100644 sdk/gperftools/gperftools-2.5/src/tests/stacktrace_unittest.cc create mode 100644 sdk/gperftools/gperftools-2.5/src/tests/system-alloc_unittest.cc create mode 100644 sdk/gperftools/gperftools-2.5/src/tests/tcmalloc_large_unittest.cc create mode 100644 sdk/gperftools/gperftools-2.5/src/tests/tcmalloc_unittest.cc create mode 100755 sdk/gperftools/gperftools-2.5/src/tests/tcmalloc_unittest.sh create mode 100644 sdk/gperftools/gperftools-2.5/src/tests/testutil.cc create mode 100644 sdk/gperftools/gperftools-2.5/src/tests/testutil.h create mode 100644 sdk/gperftools/gperftools-2.5/src/tests/thread_dealloc_unittest.cc create mode 100644 sdk/gperftools/gperftools-2.5/src/thread_cache.cc create mode 100644 sdk/gperftools/gperftools-2.5/src/thread_cache.h create mode 100644 sdk/gperftools/gperftools-2.5/src/windows/TODO create mode 100644 sdk/gperftools/gperftools-2.5/src/windows/addr2line-pdb.c create mode 100644 sdk/gperftools/gperftools-2.5/src/windows/auto_testing_hook.h create mode 100644 sdk/gperftools/gperftools-2.5/src/windows/config.h create mode 100644 sdk/gperftools/gperftools-2.5/src/windows/get_mangled_names.cc create mode 100644 sdk/gperftools/gperftools-2.5/src/windows/gperftools/tcmalloc.h create mode 100644 sdk/gperftools/gperftools-2.5/src/windows/gperftools/tcmalloc.h.in create mode 100644 sdk/gperftools/gperftools-2.5/src/windows/ia32_modrm_map.cc create mode 100644 sdk/gperftools/gperftools-2.5/src/windows/ia32_opcode_map.cc create mode 100644 sdk/gperftools/gperftools-2.5/src/windows/mingw.h create mode 100644 sdk/gperftools/gperftools-2.5/src/windows/mini_disassembler.cc create mode 100644 sdk/gperftools/gperftools-2.5/src/windows/mini_disassembler.h create mode 100644 sdk/gperftools/gperftools-2.5/src/windows/mini_disassembler_types.h create mode 100644 sdk/gperftools/gperftools-2.5/src/windows/nm-pdb.c create mode 100644 sdk/gperftools/gperftools-2.5/src/windows/override_functions.cc create mode 100644 sdk/gperftools/gperftools-2.5/src/windows/patch_functions.cc create mode 100644 sdk/gperftools/gperftools-2.5/src/windows/port.cc create mode 100644 sdk/gperftools/gperftools-2.5/src/windows/port.h create mode 100644 sdk/gperftools/gperftools-2.5/src/windows/preamble_patcher.cc create mode 100644 sdk/gperftools/gperftools-2.5/src/windows/preamble_patcher.h create mode 100644 sdk/gperftools/gperftools-2.5/src/windows/preamble_patcher_test.cc create mode 100644 sdk/gperftools/gperftools-2.5/src/windows/preamble_patcher_with_stub.cc create mode 100644 sdk/gperftools/gperftools-2.5/src/windows/shortproc.asm create mode 100644 sdk/gperftools/gperftools-2.5/src/windows/system-alloc.cc create mode 100644 sdk/tlibcrypto/sgx_ecc512.cpp diff --git a/License.txt b/License.txt index ea9d7675..4c551de9 100644 --- a/License.txt +++ b/License.txt @@ -1,6 +1,6 @@ BSD License -Copyright (C) 2011-2016 Intel Corporation. All rights reserved. +Copyright (C) 2011-2017 Intel Corporation. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions @@ -30,14 +30,14 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ================================================================= -SGX Eclipse plug-in is licensed under Eclipse Public License-v1.0 +Intel(R) Software Guard Extensions (Intel(R) SGX) Eclipse plug-in is licensed under Eclipse Public License-v1.0 http://www.eclipse.org/legal/epl-v10.html ============================================================== -libsgx_le.signed.so, libsgx_pce.signed.so, libsgx_pve.signed.so and libsgx_qe.signed.so are licensed as Intel redistributable binary firmware and other blobs. +libsgx_le.signed.so, libsgx_pce.signed.so, libsgx_pve.signed.so, libsgx_qe.signed.so, libsgx_pse_pr.signed.so and libsgx_pse_op.signed.so are licensed as Intel redistributable binary firmware and other blobs. Copyright (c) Intel Corporation. @@ -83,7 +83,7 @@ DAMAGE. =========================================================================================================================================================== -SGX software for Linux also uses third-party projects that may be distributed under different licenses. Please see below for details. +Intel(R) SGX software for Linux also uses third-party projects that may be distributed under different licenses. Please see below for details. 1. Android Open Source Project @@ -1394,3 +1394,44 @@ All Recipient's rights under this Agreement shall terminate if it fails to compl Everyone is permitted to copy and distribute copies of this Agreement, but in order to avoid inconsistency the Agreement is copyrighted and may only be modified in the following manner. The Agreement Steward reserves the right to publish new versions (including revisions) of this Agreement from time to time. No one other than the Agreement Steward has the right to modify this Agreement. The Eclipse Foundation is the initial Agreement Steward. The Eclipse Foundation may assign the responsibility to serve as the Agreement Steward to a suitable separate entity. Each new version of the Agreement will be given a distinguishing version number. The Program (including Contributions) may always be distributed subject to the version of the Agreement under which it was received. In addition, after a new version of the Agreement is published, Contributor may elect to distribute the Program (including its Contributions) under the new version. Except as expressly stated in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to the intellectual property of any Contributor under this Agreement, whether expressly, by implication, estoppel or otherwise. All rights in the Program not expressly granted under this Agreement are reserved. This Agreement is governed by the laws of the State of New York and the intellectual property laws of the United States of America. No party to this Agreement will bring a legal action under this Agreement more than one year after the cause of action arose. Each party waives its rights to a jury trial in any resulting litigation. + + + + +18. TCMALLOC + +TCMALLOC is part of Google Perf Tools, which is distributed under the terms of the BSD license. + + http://goog-perftools.sourceforge.net/ + + +Copyright (c) 2005, Google Inc. +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + diff --git a/Linux_SGXEclipsePlugin/build_directory/features/com.intel.sgx.feature/feature.xml b/Linux_SGXEclipsePlugin/build_directory/features/com.intel.sgx.feature/feature.xml index f9047a71..d2728058 100644 --- a/Linux_SGXEclipsePlugin/build_directory/features/com.intel.sgx.feature/feature.xml +++ b/Linux_SGXEclipsePlugin/build_directory/features/com.intel.sgx.feature/feature.xml @@ -24,11 +24,11 @@ tools Plug-in to allow ISVs develop secure extensions in C or C++. The Plug-in also allows conversion of an Linux Application project into an Linux Application project with Software Guard Extensions. -Using the Plug-in features and SGX Plug-in Menu options, a developer +Using the Plug-in features and Intel(R) SGX Plug-in Menu options, a developer can modify the Signing keys and Enclave Configuration for an Enclave project and can add enclaves inside a project with SGX Nature. Once development is complete, the developer can build the Enclave -and the Linux project using the SGX SDK for Linux with Release/Debug Configurations in Simulation/Hardware +and the Linux project using the Intel(R) SGX SDK for Linux with Release/Debug Configurations in Simulation/Hardware mode and Hardware Prerelease mode. diff --git a/Linux_SGXEclipsePlugin/build_directory/plugins/com.intel.sgx.userguide/html/content.html b/Linux_SGXEclipsePlugin/build_directory/plugins/com.intel.sgx.userguide/html/content.html index c934419a..4f9e1737 100644 --- a/Linux_SGXEclipsePlugin/build_directory/plugins/com.intel.sgx.userguide/html/content.html +++ b/Linux_SGXEclipsePlugin/build_directory/plugins/com.intel.sgx.userguide/html/content.html @@ -214,7 +214,7 @@ developers by the Intel(R) SGX SDK.

Intel(R) SGX Tools

  • -

    New configurations specific to SGX technology. You may see the configurations for the project by clicking to the down arrow of button usually found at the top of the Eclipse window:

    +

    New configurations specific to Intel(R) SGX technology. You may see the configurations for the project by clicking to the down arrow of button usually found at the top of the Eclipse window:

    diff --git a/Linux_SGXEclipsePlugin/build_directory/sites/site.xml b/Linux_SGXEclipsePlugin/build_directory/sites/site.xml index 3c3d422d..d89f86db 100644 --- a/Linux_SGXEclipsePlugin/build_directory/sites/site.xml +++ b/Linux_SGXEclipsePlugin/build_directory/sites/site.xml @@ -17,7 +17,7 @@ - - SGX Eclipse Plugin 1.0.1.qualifier + + Intel(R) SGX Eclipse Plugin 1.0.1.qualifier diff --git a/Linux_SGXEclipsePlugin/readme.txt b/Linux_SGXEclipsePlugin/readme.txt index 1430d357..244c4a5a 100644 --- a/Linux_SGXEclipsePlugin/readme.txt +++ b/Linux_SGXEclipsePlugin/readme.txt @@ -12,7 +12,7 @@ The following plugins are pre-requisites to be installed in Eclipse before tryin run ./build.sh from command line under current directory. Once the build script is run, the folder build_directory/updatesite/sgx-eclipse-plugin contains the update site. This is the path that needs to be provided to the eclipse while doing installation. -If the sgx eclipse plugin is already installed to eclipse and to build and install a newer version, uninstall the old version and start eclipse with the -clean option. +If the Intel(R) Software Guard Extensions (Intel(R) SGX) eclipse plugin is already installed to eclipse and to build and install a newer version, uninstall the old version and start eclipse with the -clean option. Then try to build the new version of the plugin and install it in eclipse. http://wiki.eclipse.org/FAQ_How_do_I_remove_a_plug-in%3F diff --git a/Makefile b/Makefile index 9cd3ab3a..a2ec9c97 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,5 @@ # -# Copyright (C) 2011-2016 Intel Corporation. All rights reserved. +# Copyright (C) 2011-2017 Intel Corporation. All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions diff --git a/README.md b/README.md index 3ccea521..692584e8 100644 --- a/README.md +++ b/README.md @@ -7,11 +7,11 @@ Introduction ------------ Intel(R) Software Guard Extensions (Intel(R) SGX) is an Intel technology for application developers seeking to protect select code and data from disclosure or modification. -The Linux SGX software stack is comprised of the SGX driver, the SGX SDK, and the SGX Platform Software. The SGX SDK and SGX PSW are hosted in the [linux-sgx](https://github.com/01org/linux-sgx) project. +The Linux Intel SGX software stack is comprised of the Intel SGX driver, the Intel SGX SDK, and the Intel SGX Platform Software. The Intel SGX SDK and Intel SGX PSW are hosted in the [linux-sgx](https://github.com/01org/linux-sgx) project. -The [linux-sgx-driver](https://github.com/01org/linux-sgx-driver) project hosts the out-of-tree driver for the Linux SGX software stack, which will be used until the driver upstreaming process is complete. +The [linux-sgx-driver](https://github.com/01org/linux-sgx-driver) project hosts the out-of-tree driver for the Linux Intel SGX software stack, which will be used until the driver upstreaming process is complete. -**Note** This repository includes a subset of the Intel(R) IPP Cryptography library under [external/crypto_px](https://github.com/01org/linux-sgx/external/crypto_px). It is provided as reference implementation for the cryptographic primitives used in SDK and PSW. They are written in pure C and are not optimized for performance. Instructions are provided below for building the SDK and PSW with both precompiled optimized IPP binaries and the non-optimized source code version. +**Note** This repository includes a subset of the Intel(R) IPP Cryptography library under [external/crypto_px](https://github.com/01org/linux-sgx/external/crypto_px). It is provided as reference implementation for the cryptographic primitives used in SDK and PSW. They are written in pure C and are not optimized for performance. Instructions are provided below for building the SDK and PSW with both precompiled optimized IPP binaries and the non-optimized source code version. License ------- @@ -30,21 +30,35 @@ Documentation Build and Install the Intel(R) SGX Driver ----------------------------------------- -Follow the instructions in the [linux-sgx-driver](https://github.com/01org/linux-sgx-driver) project to build and install the SGX driver. +Follow the instructions in the [linux-sgx-driver](https://github.com/01org/linux-sgx-driver) project to build and install the Intel SGX driver. Build the Intel(R) SGX SDK and Intel(R) SGX PSW Package ------------------------------------------------------- ###Prerequisites: - Ensure that you have the following required operating systems: - Ubuntu\* Desktop-14.04-LTS 64bits -- Use the following command to install the required tools to build Intel(R) SGX SDK: -``` - $ sudo apt-get install build-essential ocaml automake autoconf libtool wget python -``` + * Ubuntu\* Desktop-16.04-LTS 64bits + * Red Hat Enterprise Linux Server release 7.2 64bits + * CentOS 7.3.1611 64bits + +- Use the following command(s) to install the required tools to build Intel(R) SGX SDK: + * On Ubuntu 16.04: + ``` + $ sudo apt-get install build-essential ocaml automake autoconf libtool wget python + ``` + * On Red Hat Enterprise Linux 7.2 and CentOS 7.3: + ``` + $ sudo yum groupinstall 'Development Tools' + $ sudo yum install ocaml wget python + ``` - Use the following command to install additional required tools to build Intel(R) SGX PSW: -``` - $ sudo apt-get install libcurl4-openssl-dev protobuf-compiler protobuf-c-compiler libprotobuf-dev libprotobuf-c0-dev -``` + * On Ubuntu 16.04: + ``` + $ sudo apt-get install libssl-dev libcurl4-openssl-dev protobuf-compiler libprotobuf-dev + ``` + * On Red Hat Enterprise Linux 7.2 and CentOS 7.3: + ``` + $ sudo yum install openssl-devel libcurl-devel protobuf-compiler protobuf-devel + ``` - Use the script ``download_prebuilt.sh`` inside source code package to download prebuilt binaries to prebuilt folder You may need set https proxy for wget tool used by the script (such as ``export https_proxy=http://test-proxy:test-port``) ``` @@ -74,8 +88,8 @@ The following steps describe how to build the Intel SGX SDK and PSW. You can bui $ make clean ``` -- The build above uses prebuilt Intel(R) Architecture Enclaves(LE/PvE/QE/PCE) - the files ``psw/ae/data/prebuilt/libsgx_*.signed.so``, which have been signed by Intel in advance. - To build those binaries by yourself (without a signature), first you need to build both Intel SGX SDK and PSW with the default configuration. After that, you can build each Architecture Enclave by using the `make` command from the corresponding folder: +- The build above uses prebuilt Intel(R) Architecture Enclaves(LE/PvE/QE/PCE/PSE-OP/PSE-PR) and applet(PSDA) - the files ``psw/ae/data/prebuilt/libsgx_*.signed.so`` and ``psw/ae/data/prebuilt/PSDA.dalp``, which have been signed by Intel in advance. + To build those enclaves by yourself (without a signature), first you need to build both Intel SGX SDK and PSW with the default configuration. After that, you can build each Architecture Enclave by using the `make` command from the corresponding folder: ``` $ cd psw/ae/le $ make @@ -87,10 +101,6 @@ To build Intel(R) SGX SDK installer, enter the following command: $ make sdk_install_pkg ``` You can find the generated Intel SGX SDK installer ``sgx_linux_x64_sdk_${version}.bin`` located under `linux/installer/bin/`, where `${version}` refers to the version number. -You could also make an SGX SDK installer with non-optimized source code for crypto library by -``` -$ make sdk_install_pkg USE_OPT_LIBS=0 -``` ###Build Intel(R) SGX PSW Installer To build Intel(R) SGX PSW installer, enter the following command: @@ -98,19 +108,24 @@ To build Intel(R) SGX PSW installer, enter the following command: $ make psw_install_pkg ``` You can find the generated Intel SGX PSW installer ``sgx_linux_x64_psw_${version}.bin`` located under `linux/installer/bin/`, where `${version}` refers to the version number. -You could also make an SGX PSW intaller with non-optimized source code for crypto library by -``` -$ make psw_install_pkg USE_OPT_LIBS=0 -``` + Install Intel(R) SGX SDK ------------------------ ###Prerequisites - Ensure that you have the following required operating systems: - Ubuntu\* Desktop-14.04-LTS 64bits + * Ubuntu\* Desktop-16.04-LTS 64bits + * Red Hat Enterprise Linux Server release 7.2 64bits + * CentOS 7.3.1611 64bits - Use the following command to install the required tool to use Intel(R) SGX SDK: -``` - $ sudo apt-get install build-essential -``` + * On Ubuntu 16.04: + ``` + $ sudo apt-get install build-essential python + ``` + * On Red Hat Enterprise Linux 7.2 and CentOS 7.3: + ``` + $ sudo yum groupinstall 'Development Tools' + $ sudo yum install python + ``` ###Install Intel(R) SGX SDK To install Intel(R) SGX SDK, execute the installer with root privilege: @@ -119,46 +134,65 @@ $ cd linux/installer/bin $ sudo ./sgx_linux_x64_sdk_${version}.bin ``` ###Test Intel(R) SGX SDK Package with the Sample Codes -- Copy the sample codes installed by Intel(R) SGX SDK package into your work folder, such as +- Copy the sample codes installed by Intel(R) SGX SDK package into your work folder, such as: ``` $ cp -r /opt/intel/sgxsdk/SampleCode ~ ``` -- Compile and run each sample codes in the simulation mode to make sure the package works well. +- Compile and run each sample codes in the simulation mode to make sure the package works well: +``` + $ cd SampleCode/LocalAttestation + $ make SGX_MODE=SIM + $ ./app +``` + Use similar commands for other sample codes. +###Compile and Run the Sample Codes in the Hardware Mode +If you use an Intel SGX hardware enabled machine, you can run the sample codes in the hardware mode. +Ensure that you install Intel(R) SGX driver and Intel(R) SGX PSW installer on the machine. +See the topic, Build and Install the Intel(R) SGX Driver, on how to install the Intel(R) SGX driver. +See the topic, Install Intel(R) SGX PSW, on how to install the PSW package. +- Copy the sample codes installed by the Intel(R) SGX SDK package into your work folder, such as: +``` + $ cp -r /opt/intel/sgxsdk/SampleCode ~ +``` +- Compile and run each sample codes in the hardware mode, debug build: ``` $ cd SampleCode/LocalAttestation $ make $ ./app ``` Use similar commands for other sample codes. - -###Compile and Run the Sample Codes in the Hardware Mode -If you use an SGX hardware enabled machine, you need to run the sample codes in the hardware mode. -Ensure that you install SGX driver and Intel(R) SGX PSW installer on the machine. -See the topic, Install Intel(R) SGX PSW, on how to install the PSW package. -- Copy the sample codes installed by the Intel(R) SGX SDK package into your work folder, such as -``` - $ cp -r /opt/intel/sgxsdk/SampleCode ~ -``` -- Compile and run each sample codes in the debug mode. -``` - $ cd SampleCode/LocalAttestation - $ make SGX_MODE=HW SGX_DEBUG=1 - $ ./app -``` - Use similar commands for other sample codes. - Install Intel(R) SGX PSW ------------------------ ###Prerequisites - Ensure that you have the following required operating systems: - Ubuntu\* Desktop-14.04-LTS 64bits + * Ubuntu\* Desktop-16.04-LTS 64bits + * Red Hat Enterprise Linux Server release 7.2 64bits + * CentOS 7.3.1611 64bits - Ensure that you have the following required hardware: 6th Generation Intel(R) Core(TM) Processor (code named Skylake) -- Configure the system with the **SGX hardware enabled** option and install SGX driver in advance. - See the topic, Build and Install the Intel(R) SGX Driver, on how to install the SGX driver. +- Configure the system with the **Intel SGX hardware enabled** option and install Intel SGX driver in advance. + See the topic, Build and Install the Intel(R) SGX Driver, on how to install the Intel SGX driver. - Install the library using the following command: + * On Ubuntu 16.04: + ``` + $ sudo apt-get install libssl-dev libcurl4-openssl-dev libprotobuf-dev + ``` + * On Red Hat Enterprise Linux 7.2 and CentOS 7.3: + ``` + $ sudo yum install openssl-devel libcurl-devel protobuf-devel + ``` +- To use trusted platform service on Ubuntu 16.04 + Ensure mei_me driver is enabled and /dev/mei0 exists. + [Download iclsClient](https://software.intel.com/en-us/sgx-sdk/download) and install it using the following commands: ``` - $ sudo apt-get install libcurl4-openssl-dev libprotobuf-dev libprotobuf-c0-dev +$ sudo apt-get install alien +$ sudo alien --scripts iclsClient-1.45.449.12-1.x86_64.rpm +$ sudo dpkg -i iclsclient_1.45.449.12-2_amd64.deb +``` + Download source code from [dynamic-application-loader-host-interface](https://github.com/01org/dynamic-application-loader-host-interface) project. In the source code folder build and install JHI service using the following commands: +``` +$ sudo apt-get install uuid-dev libxml2-dev +$ cmake .;make;sudo make install;sudo systemclt enable jhi ``` ###Install Intel(R) SGX PSW diff --git a/SampleCode/LocalAttestation/App/App.cpp b/SampleCode/LocalAttestation/App/App.cpp index 92b5ec0b..329e9c16 100644 --- a/SampleCode/LocalAttestation/App/App.cpp +++ b/SampleCode/LocalAttestation/App/App.cpp @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2016 Intel Corporation. All rights reserved. + * Copyright (C) 2011-2017 Intel Corporation. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/SampleCode/LocalAttestation/Enclave1/Enclave1.config.xml b/SampleCode/LocalAttestation/Enclave1/Enclave1.config.xml index 436860dd..95549474 100644 --- a/SampleCode/LocalAttestation/Enclave1/Enclave1.config.xml +++ b/SampleCode/LocalAttestation/Enclave1/Enclave1.config.xml @@ -1,11 +1,12 @@ - - 0 - 0 - 0x40000 - 0x100000 - 1 - 1 - 0 - 0 - 0xFFFFFFFF - + + 0 + 0 + 0x40000 + 0x100000 + 1 + 1 + + 0 + 0 + 0xFFFFFFFF + diff --git a/SampleCode/LocalAttestation/Enclave1/Enclave1.cpp b/SampleCode/LocalAttestation/Enclave1/Enclave1.cpp index c662516d..d0623627 100644 --- a/SampleCode/LocalAttestation/Enclave1/Enclave1.cpp +++ b/SampleCode/LocalAttestation/Enclave1/Enclave1.cpp @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2016 Intel Corporation. All rights reserved. + * Copyright (C) 2011-2017 Intel Corporation. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/SampleCode/LocalAttestation/Enclave1/Enclave1.edl b/SampleCode/LocalAttestation/Enclave1/Enclave1.edl index 378965cd..e1e2b256 100644 --- a/SampleCode/LocalAttestation/Enclave1/Enclave1.edl +++ b/SampleCode/LocalAttestation/Enclave1/Enclave1.edl @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2016 Intel Corporation. All rights reserved. + * Copyright (C) 2011-2017 Intel Corporation. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/SampleCode/LocalAttestation/Enclave1/Enclave1.lds b/SampleCode/LocalAttestation/Enclave1/Enclave1.lds new file mode 100644 index 00000000..f2ee453e --- /dev/null +++ b/SampleCode/LocalAttestation/Enclave1/Enclave1.lds @@ -0,0 +1,10 @@ +Enclave1.so +{ + global: + g_global_data_sim; + g_global_data; + enclave_entry; + g_peak_heap_used; + local: + *; +}; diff --git a/SampleCode/LocalAttestation/Enclave1/Utility_E1.cpp b/SampleCode/LocalAttestation/Enclave1/Utility_E1.cpp index 9c2247b7..7787de30 100644 --- a/SampleCode/LocalAttestation/Enclave1/Utility_E1.cpp +++ b/SampleCode/LocalAttestation/Enclave1/Utility_E1.cpp @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2016 Intel Corporation. All rights reserved. + * Copyright (C) 2011-2017 Intel Corporation. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/SampleCode/LocalAttestation/Enclave1/Utility_E1.h b/SampleCode/LocalAttestation/Enclave1/Utility_E1.h index 7af49b68..a0f14eac 100644 --- a/SampleCode/LocalAttestation/Enclave1/Utility_E1.h +++ b/SampleCode/LocalAttestation/Enclave1/Utility_E1.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2016 Intel Corporation. All rights reserved. + * Copyright (C) 2011-2017 Intel Corporation. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/SampleCode/LocalAttestation/Enclave2/Enclave2.config.xml b/SampleCode/LocalAttestation/Enclave2/Enclave2.config.xml index 3317e37a..3ca2c12a 100644 --- a/SampleCode/LocalAttestation/Enclave2/Enclave2.config.xml +++ b/SampleCode/LocalAttestation/Enclave2/Enclave2.config.xml @@ -1,11 +1,12 @@ - - 0 - 0 - 0x40000 - 0x100000 - 1 - 1 - 0 - 0 - 0xFFFFFFFF - + + 0 + 0 + 0x40000 + 0x100000 + 1 + 1 + + 0 + 0 + 0xFFFFFFFF + diff --git a/SampleCode/LocalAttestation/Enclave2/Enclave2.cpp b/SampleCode/LocalAttestation/Enclave2/Enclave2.cpp index 537957f6..b6a88ea6 100644 --- a/SampleCode/LocalAttestation/Enclave2/Enclave2.cpp +++ b/SampleCode/LocalAttestation/Enclave2/Enclave2.cpp @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2016 Intel Corporation. All rights reserved. + * Copyright (C) 2011-2017 Intel Corporation. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/SampleCode/LocalAttestation/Enclave2/Enclave2.edl b/SampleCode/LocalAttestation/Enclave2/Enclave2.edl index 9ef5c33e..c2b91291 100644 --- a/SampleCode/LocalAttestation/Enclave2/Enclave2.edl +++ b/SampleCode/LocalAttestation/Enclave2/Enclave2.edl @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2016 Intel Corporation. All rights reserved. + * Copyright (C) 2011-2017 Intel Corporation. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/SampleCode/LocalAttestation/Enclave2/Enclave2.lds b/SampleCode/LocalAttestation/Enclave2/Enclave2.lds new file mode 100644 index 00000000..15073682 --- /dev/null +++ b/SampleCode/LocalAttestation/Enclave2/Enclave2.lds @@ -0,0 +1,10 @@ +Enclave2.so +{ + global: + g_global_data_sim; + g_global_data; + enclave_entry; + g_peak_heap_used; + local: + *; +}; diff --git a/SampleCode/LocalAttestation/Enclave2/Utility_E2.cpp b/SampleCode/LocalAttestation/Enclave2/Utility_E2.cpp index 962c68f9..27230848 100644 --- a/SampleCode/LocalAttestation/Enclave2/Utility_E2.cpp +++ b/SampleCode/LocalAttestation/Enclave2/Utility_E2.cpp @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2016 Intel Corporation. All rights reserved. + * Copyright (C) 2011-2017 Intel Corporation. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/SampleCode/LocalAttestation/Enclave2/Utility_E2.h b/SampleCode/LocalAttestation/Enclave2/Utility_E2.h index 17b88cde..7cdd206a 100644 --- a/SampleCode/LocalAttestation/Enclave2/Utility_E2.h +++ b/SampleCode/LocalAttestation/Enclave2/Utility_E2.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2016 Intel Corporation. All rights reserved. + * Copyright (C) 2011-2017 Intel Corporation. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/SampleCode/LocalAttestation/Enclave3/Enclave3.config.xml b/SampleCode/LocalAttestation/Enclave3/Enclave3.config.xml index 436860dd..d5fcaa4e 100644 --- a/SampleCode/LocalAttestation/Enclave3/Enclave3.config.xml +++ b/SampleCode/LocalAttestation/Enclave3/Enclave3.config.xml @@ -1,11 +1,12 @@ - - 0 - 0 - 0x40000 - 0x100000 - 1 - 1 - 0 - 0 - 0xFFFFFFFF - + + 0 + 0 + 0x40000 + 0x100000 + 1 + 1 + + 0 + 0 + 0xFFFFFFFF + diff --git a/SampleCode/LocalAttestation/Enclave3/Enclave3.cpp b/SampleCode/LocalAttestation/Enclave3/Enclave3.cpp index cc15bc4a..19b45642 100644 --- a/SampleCode/LocalAttestation/Enclave3/Enclave3.cpp +++ b/SampleCode/LocalAttestation/Enclave3/Enclave3.cpp @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2016 Intel Corporation. All rights reserved. + * Copyright (C) 2011-2017 Intel Corporation. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/SampleCode/LocalAttestation/Enclave3/Enclave3.edl b/SampleCode/LocalAttestation/Enclave3/Enclave3.edl index 7584ee79..375fbf65 100644 --- a/SampleCode/LocalAttestation/Enclave3/Enclave3.edl +++ b/SampleCode/LocalAttestation/Enclave3/Enclave3.edl @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2016 Intel Corporation. All rights reserved. + * Copyright (C) 2011-2017 Intel Corporation. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/SampleCode/LocalAttestation/Enclave3/Enclave3.lds b/SampleCode/LocalAttestation/Enclave3/Enclave3.lds new file mode 100644 index 00000000..5dc1d0aa --- /dev/null +++ b/SampleCode/LocalAttestation/Enclave3/Enclave3.lds @@ -0,0 +1,10 @@ +Enclave3.so +{ + global: + g_global_data_sim; + g_global_data; + enclave_entry; + g_peak_heap_used; + local: + *; +}; diff --git a/SampleCode/LocalAttestation/Enclave3/Utility_E3.cpp b/SampleCode/LocalAttestation/Enclave3/Utility_E3.cpp index 97cf9b0c..45fed38d 100644 --- a/SampleCode/LocalAttestation/Enclave3/Utility_E3.cpp +++ b/SampleCode/LocalAttestation/Enclave3/Utility_E3.cpp @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2016 Intel Corporation. All rights reserved. + * Copyright (C) 2011-2017 Intel Corporation. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/SampleCode/LocalAttestation/Enclave3/Utility_E3.h b/SampleCode/LocalAttestation/Enclave3/Utility_E3.h index 83ba2d6f..2c690bc8 100644 --- a/SampleCode/LocalAttestation/Enclave3/Utility_E3.h +++ b/SampleCode/LocalAttestation/Enclave3/Utility_E3.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2016 Intel Corporation. All rights reserved. + * Copyright (C) 2011-2017 Intel Corporation. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/SampleCode/LocalAttestation/Include/dh_session_protocol.h b/SampleCode/LocalAttestation/Include/dh_session_protocol.h index bc92ee4d..a7b2f75b 100644 --- a/SampleCode/LocalAttestation/Include/dh_session_protocol.h +++ b/SampleCode/LocalAttestation/Include/dh_session_protocol.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2016 Intel Corporation. All rights reserved. + * Copyright (C) 2011-2017 Intel Corporation. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/SampleCode/LocalAttestation/LocalAttestationCode/EnclaveMessageExchange.cpp b/SampleCode/LocalAttestation/LocalAttestationCode/EnclaveMessageExchange.cpp index a32e3e21..67fe17ac 100644 --- a/SampleCode/LocalAttestation/LocalAttestationCode/EnclaveMessageExchange.cpp +++ b/SampleCode/LocalAttestation/LocalAttestationCode/EnclaveMessageExchange.cpp @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2016 Intel Corporation. All rights reserved. + * Copyright (C) 2011-2017 Intel Corporation. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/SampleCode/LocalAttestation/LocalAttestationCode/EnclaveMessageExchange.h b/SampleCode/LocalAttestation/LocalAttestationCode/EnclaveMessageExchange.h index c16a2465..e89fd088 100644 --- a/SampleCode/LocalAttestation/LocalAttestationCode/EnclaveMessageExchange.h +++ b/SampleCode/LocalAttestation/LocalAttestationCode/EnclaveMessageExchange.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2016 Intel Corporation. All rights reserved. + * Copyright (C) 2011-2017 Intel Corporation. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/SampleCode/LocalAttestation/LocalAttestationCode/LocalAttestationCode.edl b/SampleCode/LocalAttestation/LocalAttestationCode/LocalAttestationCode.edl index 8e401ee8..e4518c0c 100644 --- a/SampleCode/LocalAttestation/LocalAttestationCode/LocalAttestationCode.edl +++ b/SampleCode/LocalAttestation/LocalAttestationCode/LocalAttestationCode.edl @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2016 Intel Corporation. All rights reserved. + * Copyright (C) 2011-2017 Intel Corporation. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/SampleCode/LocalAttestation/LocalAttestationCode/datatypes.h b/SampleCode/LocalAttestation/LocalAttestationCode/datatypes.h index 1c198aa1..bf51c30a 100644 --- a/SampleCode/LocalAttestation/LocalAttestationCode/datatypes.h +++ b/SampleCode/LocalAttestation/LocalAttestationCode/datatypes.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2016 Intel Corporation. All rights reserved. + * Copyright (C) 2011-2017 Intel Corporation. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/SampleCode/LocalAttestation/LocalAttestationCode/error_codes.h b/SampleCode/LocalAttestation/LocalAttestationCode/error_codes.h index 0bb2a25c..8f1e26b5 100644 --- a/SampleCode/LocalAttestation/LocalAttestationCode/error_codes.h +++ b/SampleCode/LocalAttestation/LocalAttestationCode/error_codes.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2016 Intel Corporation. All rights reserved. + * Copyright (C) 2011-2017 Intel Corporation. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/SampleCode/LocalAttestation/Makefile b/SampleCode/LocalAttestation/Makefile index 4fb31a0b..b40405d6 100644 --- a/SampleCode/LocalAttestation/Makefile +++ b/SampleCode/LocalAttestation/Makefile @@ -1,5 +1,5 @@ # -# Copyright (C) 2011-2016 Intel Corporation. All rights reserved. +# Copyright (C) 2011-2017 Intel Corporation. All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions @@ -118,6 +118,10 @@ App_Name := app ######## Enclave Settings ######## +Enclave1_Version_Script := Enclave1/Enclave1.lds +Enclave2_Version_Script := Enclave2/Enclave2.lds +Enclave3_Version_Script := Enclave3/Enclave3.lds + ifneq ($(SGX_MODE), HW) Trts_Library_Name := sgx_trts_sim Service_Library_Name := sgx_tservice_sim @@ -141,12 +145,15 @@ Enclave_Compile_Flags := $(SGX_COMMON_CFLAGS) -nostdinc -fvisibility=hidden -fpi # Use `--start-group' and `--end-group' to link these libraries. # Do NOT move the libraries linked with `--start-group' and `--end-group' within `--whole-archive' and `--no-whole-archive' options. # Otherwise, you may get some undesirable errors. -Enclave_Link_Flags := $(SGX_COMMON_CFLAGS) -Wl,--no-undefined -nostdlib -nodefaultlibs -nostartfiles -L$(SGX_LIBRARY_PATH) \ +Common_Enclave_Link_Flags := $(SGX_COMMON_CFLAGS) -Wl,--no-undefined -nostdlib -nodefaultlibs -nostartfiles -L$(SGX_LIBRARY_PATH) \ -Wl,--whole-archive -l$(Trts_Library_Name) -Wl,--no-whole-archive \ -Wl,--start-group -lsgx_tstdc -lsgx_tstdcxx -l$(Crypto_Library_Name) -L. -lLocalAttestation_Trusted -l$(Service_Library_Name) -Wl,--end-group \ -Wl,-Bstatic -Wl,-Bsymbolic -Wl,--no-undefined \ -Wl,-pie,-eenclave_entry -Wl,--export-dynamic \ -Wl,--defsym,__ImageBase=0 +Enclave1_Link_Flags := $(Common_Enclave_Link_Flags) -Wl,--version-script=$(Enclave1_Version_Script) +Enclave2_Link_Flags := $(Common_Enclave_Link_Flags) -Wl,--version-script=$(Enclave2_Version_Script) +Enclave3_Link_Flags := $(Common_Enclave_Link_Flags) -Wl,--version-script=$(Enclave3_Version_Script) Enclave_Cpp_Objects_1 := $(Enclave_Cpp_Files_1:.cpp=.o) Enclave_Cpp_Objects_2 := $(Enclave_Cpp_Files_2:.cpp=.o) @@ -175,7 +182,7 @@ endif endif ifeq ($(Build_Mode), HW_RELEASE) -all: $(Trust_Lib_Name) $(UnTrustLib_Name) Enclave1.so Enclave2.so Enclave3.so $(App_Name) +all: .config_$(Build_Mode)_$(SGX_ARCH) $(Trust_Lib_Name) $(UnTrustLib_Name) Enclave1.so Enclave2.so Enclave3.so $(App_Name) @echo "The project has been built in release hardware mode." @echo "Please sign the enclaves (Enclave1.so, Enclave2.so, Enclave3.so) first with your signing keys before you run the $(App_Name) to launch and access the enclave." @echo "To sign the enclaves use the following commands:" @@ -185,7 +192,7 @@ all: $(Trust_Lib_Name) $(UnTrustLib_Name) Enclave1.so Enclave2.so Enclave3.so $( @echo "You can also sign the enclaves using an external signing tool." @echo "To build the project in simulation mode set SGX_MODE=SIM. To build the project in prerelease mode set SGX_PRERELEASE=1 and SGX_MODE=HW." else -all: $(Trust_Lib_Name) $(UnTrustLib_Name) $(Enclave_Name_1) $(Enclave_Name_2) $(Enclave_Name_3) $(App_Name) +all: .config_$(Build_Mode)_$(SGX_ARCH) $(Trust_Lib_Name) $(UnTrustLib_Name) $(Enclave_Name_1) $(Enclave_Name_2) $(Enclave_Name_3) $(App_Name) ifeq ($(Build_Mode), HW_DEBUG) @echo "The project has been built in debug hardware mode." else ifeq ($(Build_Mode), SIM_DEBUG) @@ -199,6 +206,10 @@ else endif endif +.config_$(Build_Mode)_$(SGX_ARCH): + @rm -rf .config_* $(App_Name) *.so *.a App/*.o Enclave1/*.o Enclave1/*_t.* Enclave1/*_u.* Enclave2/*.o Enclave2/*_t.* Enclave2/*_u.* Enclave3/*.o Enclave3/*_t.* Enclave3/*_u.* LocalAttestationCode/*.o Untrusted_LocalAttestation/*.o LocalAttestationCode/*_t.* + @touch .config_$(Build_Mode)_$(SGX_ARCH) + ######## Library Objects ######## LocalAttestationCode/LocalAttestationCode_t.c LocalAttestationCode/LocalAttestationCode_t.h : $(SGX_EDGER8R) LocalAttestationCode/LocalAttestationCode.edl @@ -274,7 +285,7 @@ Enclave1/%.o: Enclave1/%.cpp Enclave1/Enclave1_t.h @echo "CXX <= $<" Enclave1.so: Enclave1/Enclave1_t.o $(Enclave_Cpp_Objects_1) $(Trust_Lib_Name) - @$(CXX) Enclave1/Enclave1_t.o $(Enclave_Cpp_Objects_1) -o $@ $(Enclave_Link_Flags) + @$(CXX) Enclave1/Enclave1_t.o $(Enclave_Cpp_Objects_1) -o $@ $(Enclave1_Link_Flags) @echo "LINK => $@" $(Enclave_Name_1): Enclave1.so @@ -294,7 +305,7 @@ Enclave2/%.o: Enclave2/%.cpp @echo "CXX <= $<" Enclave2.so: Enclave2/Enclave2_t.o $(Enclave_Cpp_Objects_2) $(Trust_Lib_Name) - @$(CXX) Enclave2/Enclave2_t.o $(Enclave_Cpp_Objects_2) -o $@ $(Enclave_Link_Flags) + @$(CXX) Enclave2/Enclave2_t.o $(Enclave_Cpp_Objects_2) -o $@ $(Enclave2_Link_Flags) @echo "LINK => $@" $(Enclave_Name_2): Enclave2.so @@ -314,7 +325,7 @@ Enclave3/%.o: Enclave3/%.cpp @echo "CXX <= $<" Enclave3.so: Enclave3/Enclave3_t.o $(Enclave_Cpp_Objects_3) $(Trust_Lib_Name) - @$(CXX) Enclave3/Enclave3_t.o $(Enclave_Cpp_Objects_3) -o $@ $(Enclave_Link_Flags) + @$(CXX) Enclave3/Enclave3_t.o $(Enclave_Cpp_Objects_3) -o $@ $(Enclave3_Link_Flags) @echo "LINK => $@" $(Enclave_Name_3): Enclave3.so @@ -325,4 +336,4 @@ $(Enclave_Name_3): Enclave3.so .PHONY: clean clean: - @rm -rf $(App_Name) *.so *.a App/*.o Enclave1/*.o Enclave1/*_t.* Enclave1/*_u.* Enclave2/*.o Enclave2/*_t.* Enclave2/*_u.* Enclave3/*.o Enclave3/*_t.* Enclave3/*_u.* LocalAttestationCode/*.o Untrusted_LocalAttestation/*.o LocalAttestationCode/*_t.* + @rm -rf .config_* $(App_Name) *.so *.a App/*.o Enclave1/*.o Enclave1/*_t.* Enclave1/*_u.* Enclave2/*.o Enclave2/*_t.* Enclave2/*_u.* Enclave3/*.o Enclave3/*_t.* Enclave3/*_u.* LocalAttestationCode/*.o Untrusted_LocalAttestation/*.o LocalAttestationCode/*_t.* diff --git a/SampleCode/LocalAttestation/Untrusted_LocalAttestation/UntrustedEnclaveMessageExchange.cpp b/SampleCode/LocalAttestation/Untrusted_LocalAttestation/UntrustedEnclaveMessageExchange.cpp index 805c14ab..bc87f59d 100644 --- a/SampleCode/LocalAttestation/Untrusted_LocalAttestation/UntrustedEnclaveMessageExchange.cpp +++ b/SampleCode/LocalAttestation/Untrusted_LocalAttestation/UntrustedEnclaveMessageExchange.cpp @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2016 Intel Corporation. All rights reserved. + * Copyright (C) 2011-2017 Intel Corporation. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/SampleCode/LocalAttestation/Untrusted_LocalAttestation/UntrustedEnclaveMessageExchange.h b/SampleCode/LocalAttestation/Untrusted_LocalAttestation/UntrustedEnclaveMessageExchange.h index 684b33cb..9c6dcfa8 100644 --- a/SampleCode/LocalAttestation/Untrusted_LocalAttestation/UntrustedEnclaveMessageExchange.h +++ b/SampleCode/LocalAttestation/Untrusted_LocalAttestation/UntrustedEnclaveMessageExchange.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2016 Intel Corporation. All rights reserved. + * Copyright (C) 2011-2017 Intel Corporation. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/SampleCode/PowerTransition/App/App.cpp b/SampleCode/PowerTransition/App/App.cpp index 63841167..c70f8d1a 100644 --- a/SampleCode/PowerTransition/App/App.cpp +++ b/SampleCode/PowerTransition/App/App.cpp @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2016 Intel Corporation. All rights reserved. + * Copyright (C) 2011-2017 Intel Corporation. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/SampleCode/PowerTransition/App/ErrorSupport.cpp b/SampleCode/PowerTransition/App/ErrorSupport.cpp index 9665fb6b..e6c82f77 100644 --- a/SampleCode/PowerTransition/App/ErrorSupport.cpp +++ b/SampleCode/PowerTransition/App/ErrorSupport.cpp @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2016 Intel Corporation. All rights reserved. + * Copyright (C) 2011-2017 Intel Corporation. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/SampleCode/PowerTransition/App/ErrorSupport.h b/SampleCode/PowerTransition/App/ErrorSupport.h index 4ab4ed2f..611d17fa 100644 --- a/SampleCode/PowerTransition/App/ErrorSupport.h +++ b/SampleCode/PowerTransition/App/ErrorSupport.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2016 Intel Corporation. All rights reserved. + * Copyright (C) 2011-2017 Intel Corporation. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/SampleCode/PowerTransition/App/rwlock.cpp b/SampleCode/PowerTransition/App/rwlock.cpp index 59b05228..19b85610 100644 --- a/SampleCode/PowerTransition/App/rwlock.cpp +++ b/SampleCode/PowerTransition/App/rwlock.cpp @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2016 Intel Corporation. All rights reserved. + * Copyright (C) 2011-2017 Intel Corporation. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/SampleCode/PowerTransition/App/rwlock.h b/SampleCode/PowerTransition/App/rwlock.h index 19161f28..f25031c9 100644 --- a/SampleCode/PowerTransition/App/rwlock.h +++ b/SampleCode/PowerTransition/App/rwlock.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2016 Intel Corporation. All rights reserved. + * Copyright (C) 2011-2017 Intel Corporation. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/SampleCode/PowerTransition/Common/types.h b/SampleCode/PowerTransition/Common/types.h index a4dc4eaa..cb40720f 100644 --- a/SampleCode/PowerTransition/Common/types.h +++ b/SampleCode/PowerTransition/Common/types.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2016 Intel Corporation. All rights reserved. + * Copyright (C) 2011-2017 Intel Corporation. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/SampleCode/PowerTransition/Enclave/Enclave.config.xml b/SampleCode/PowerTransition/Enclave/Enclave.config.xml index 23f57484..6187e8ba 100644 --- a/SampleCode/PowerTransition/Enclave/Enclave.config.xml +++ b/SampleCode/PowerTransition/Enclave/Enclave.config.xml @@ -1,11 +1,12 @@ - - 0 - 0 - 0x40000 - 0x100000 - 3 - 1 - 0 - 0 - 0xFFFFFFFF - + + 0 + 0 + 0x40000 + 0x100000 + 3 + 1 + + 0 + 0 + 0xFFFFFFFF + diff --git a/SampleCode/PowerTransition/Enclave/Enclave.cpp b/SampleCode/PowerTransition/Enclave/Enclave.cpp index 3918abf4..5f95011b 100644 --- a/SampleCode/PowerTransition/Enclave/Enclave.cpp +++ b/SampleCode/PowerTransition/Enclave/Enclave.cpp @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2016 Intel Corporation. All rights reserved. + * Copyright (C) 2011-2017 Intel Corporation. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/SampleCode/PowerTransition/Enclave/Enclave.edl b/SampleCode/PowerTransition/Enclave/Enclave.edl index 54aa25a7..6b687f4b 100644 --- a/SampleCode/PowerTransition/Enclave/Enclave.edl +++ b/SampleCode/PowerTransition/Enclave/Enclave.edl @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2016 Intel Corporation. All rights reserved. + * Copyright (C) 2011-2017 Intel Corporation. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/SampleCode/PowerTransition/Enclave/Enclave.lds b/SampleCode/PowerTransition/Enclave/Enclave.lds index b1c6b6fd..20fa0d09 100644 --- a/SampleCode/PowerTransition/Enclave/Enclave.lds +++ b/SampleCode/PowerTransition/Enclave/Enclave.lds @@ -4,6 +4,7 @@ libenclave.so g_global_data_sim; g_global_data; enclave_entry; + g_peak_heap_used; local: *; }; diff --git a/SampleCode/PowerTransition/Makefile b/SampleCode/PowerTransition/Makefile index 6bccdb76..76a6bb00 100644 --- a/SampleCode/PowerTransition/Makefile +++ b/SampleCode/PowerTransition/Makefile @@ -1,5 +1,5 @@ # -# Copyright (C) 2011-2016 Intel Corporation. All rights reserved. +# Copyright (C) 2011-2017 Intel Corporation. All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions @@ -168,7 +168,7 @@ endif endif ifeq ($(Build_Mode), HW_RELEASE) -all: $(App_Name) $(Enclave_Name) +all: .config_$(Build_Mode)_$(SGX_ARCH) $(App_Name) $(Enclave_Name) @echo "The project has been built in release hardware mode." @echo "Please sign the $(Enclave_Name) first with your signing key before you run the $(App_Name) to launch and access the enclave." @echo "To sign the enclave use the command:" @@ -176,7 +176,7 @@ all: $(App_Name) $(Enclave_Name) @echo "You can also sign the enclave using an external signing tool." @echo "To build the project in simulation mode set SGX_MODE=SIM. To build the project in prerelease mode set SGX_PRERELEASE=1 and SGX_MODE=HW." else -all: $(App_Name) $(Signed_Enclave_Name) +all: .config_$(Build_Mode)_$(SGX_ARCH) $(App_Name) $(Signed_Enclave_Name) ifeq ($(Build_Mode), HW_DEBUG) @echo "The project has been built in debug hardware mode." else ifeq ($(Build_Mode), SIM_DEBUG) @@ -190,6 +190,10 @@ else endif endif +.config_$(Build_Mode)_$(SGX_ARCH): + @rm -f .config_* $(App_Name) $(App_Objects) $(Enclave_Name) $(Enclave_Objects) App/Enclave_u.* Enclave/Enclave_t.* $(Signed_Enclave_Name) + @touch .config_$(Build_Mode)_$(SGX_ARCH) + ######## App Objects ######## $(Gen_Untrusted_Source): $(SGX_EDGER8R) Enclave/Enclave.edl @@ -236,4 +240,4 @@ $(Signed_Enclave_Name): $(Enclave_Name) clean: - @rm -f $(App_Name) $(App_Objects) $(Enclave_Name) $(Enclave_Objects) App/Enclave_u.* Enclave/Enclave_t.* $(Signed_Enclave_Name) + @rm -f .config_* $(App_Name) $(App_Objects) $(Enclave_Name) $(Enclave_Objects) App/Enclave_u.* Enclave/Enclave_t.* $(Signed_Enclave_Name) diff --git a/SampleCode/RemoteAttestation/Makefile b/SampleCode/RemoteAttestation/Makefile index 1f6e5af6..69f82338 100644 --- a/SampleCode/RemoteAttestation/Makefile +++ b/SampleCode/RemoteAttestation/Makefile @@ -1,5 +1,5 @@ # -# Copyright (C) 2011-2016 Intel Corporation. All rights reserved. +# Copyright (C) 2011-2017 Intel Corporation. All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions @@ -178,7 +178,7 @@ endif .PHONY: all run ifeq ($(Build_Mode), HW_RELEASE) -all: libservice_provider.so $(App_Name) $(Enclave_Name) +all: .config_$(Build_Mode)_$(SGX_ARCH) libservice_provider.so $(App_Name) $(Enclave_Name) @echo "The project has been built in release hardware mode." @echo "Please sign the $(Enclave_Name) first with your signing key before you run the $(App_Name) to launch and access the enclave." @echo "To sign the enclave use the command:" @@ -186,7 +186,7 @@ all: libservice_provider.so $(App_Name) $(Enclave_Name) @echo "You can also sign the enclave using an external signing tool." @echo "To build the project in simulation mode set SGX_MODE=SIM. To build the project in prerelease mode set SGX_PRERELEASE=1 and SGX_MODE=HW." else -all: libservice_provider.so $(App_Name) $(Signed_Enclave_Name) +all: .config_$(Build_Mode)_$(SGX_ARCH) libservice_provider.so $(App_Name) $(Signed_Enclave_Name) ifeq ($(Build_Mode), HW_DEBUG) @echo "The project has been built in debug hardware mode." else ifeq ($(Build_Mode), SIM_DEBUG) @@ -206,6 +206,11 @@ ifneq ($(Build_Mode), HW_RELEASE) @echo "RUN => $(App_Name) [$(SGX_MODE)|$(SGX_ARCH), OK]" endif +.config_$(Build_Mode)_$(SGX_ARCH): + @rm -f .config_* $(App_Name) $(App_Name) $(Enclave_Name) $(Signed_Enclave_Name) $(App_Cpp_Objects) isv_app/isv_enclave_u.* $(Enclave_Cpp_Objects) isv_enclave/isv_enclave_t.* libservice_provider.* $(ServiceProvider_Cpp_Objects) + @touch .config_$(Build_Mode)_$(SGX_ARCH) + + ######## App Objects ######## isv_app/isv_enclave_u.c: $(SGX_EDGER8R) isv_enclave/isv_enclave.edl @@ -260,4 +265,4 @@ $(Signed_Enclave_Name): $(Enclave_Name) .PHONY: clean clean: - @rm -f $(App_Name) $(Enclave_Name) $(Signed_Enclave_Name) $(App_Cpp_Objects) isv_app/isv_enclave_u.* $(Enclave_Cpp_Objects) isv_enclave/isv_enclave_t.* libservice_provider.* $(ServiceProvider_Cpp_Objects) + @rm -f .config_* $(App_Name) $(App_Name) $(Enclave_Name) $(Signed_Enclave_Name) $(App_Cpp_Objects) isv_app/isv_enclave_u.* $(Enclave_Cpp_Objects) isv_enclave/isv_enclave_t.* libservice_provider.* $(ServiceProvider_Cpp_Objects) diff --git a/SampleCode/RemoteAttestation/isv_app/isv_app.cpp b/SampleCode/RemoteAttestation/isv_app/isv_app.cpp index 0fb3590a..82a2d2a5 100644 --- a/SampleCode/RemoteAttestation/isv_app/isv_app.cpp +++ b/SampleCode/RemoteAttestation/isv_app/isv_app.cpp @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2016 Intel Corporation. All rights reserved. + * Copyright (C) 2011-2017 Intel Corporation. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/SampleCode/RemoteAttestation/isv_app/sample_messages.h b/SampleCode/RemoteAttestation/isv_app/sample_messages.h index 92281777..460bf980 100644 --- a/SampleCode/RemoteAttestation/isv_app/sample_messages.h +++ b/SampleCode/RemoteAttestation/isv_app/sample_messages.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2016 Intel Corporation. All rights reserved. + * Copyright (C) 2011-2017 Intel Corporation. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/SampleCode/RemoteAttestation/isv_enclave/isv_enclave.config.xml b/SampleCode/RemoteAttestation/isv_enclave/isv_enclave.config.xml index 0b95a3ed..5e7af474 100644 --- a/SampleCode/RemoteAttestation/isv_enclave/isv_enclave.config.xml +++ b/SampleCode/RemoteAttestation/isv_enclave/isv_enclave.config.xml @@ -1,11 +1,12 @@ - - 0 - 0 - 0x40000 - 0x100000 - 1 - 1 - 0 - 0 - 0xFFFFFFFF - \ No newline at end of file + + 0 + 0 + 0x40000 + 0x100000 + 1 + 1 + + 0 + 0 + 0xFFFFFFFF + diff --git a/SampleCode/RemoteAttestation/isv_enclave/isv_enclave.cpp b/SampleCode/RemoteAttestation/isv_enclave/isv_enclave.cpp index 980de0c8..07c1e0f5 100644 --- a/SampleCode/RemoteAttestation/isv_enclave/isv_enclave.cpp +++ b/SampleCode/RemoteAttestation/isv_enclave/isv_enclave.cpp @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2016 Intel Corporation. All rights reserved. + * Copyright (C) 2011-2017 Intel Corporation. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/SampleCode/RemoteAttestation/isv_enclave/isv_enclave.edl b/SampleCode/RemoteAttestation/isv_enclave/isv_enclave.edl index 83d97351..9c157a39 100644 --- a/SampleCode/RemoteAttestation/isv_enclave/isv_enclave.edl +++ b/SampleCode/RemoteAttestation/isv_enclave/isv_enclave.edl @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2016 Intel Corporation. All rights reserved. + * Copyright (C) 2011-2017 Intel Corporation. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/SampleCode/RemoteAttestation/isv_enclave/isv_enclave.lds b/SampleCode/RemoteAttestation/isv_enclave/isv_enclave.lds index e3d9d0ee..f5f35d5b 100644 --- a/SampleCode/RemoteAttestation/isv_enclave/isv_enclave.lds +++ b/SampleCode/RemoteAttestation/isv_enclave/isv_enclave.lds @@ -4,6 +4,7 @@ enclave.so g_global_data_sim; g_global_data; enclave_entry; + g_peak_heap_used; local: *; }; diff --git a/SampleCode/RemoteAttestation/service_provider/ecp.cpp b/SampleCode/RemoteAttestation/service_provider/ecp.cpp index 192d20fb..aca7ec4f 100644 --- a/SampleCode/RemoteAttestation/service_provider/ecp.cpp +++ b/SampleCode/RemoteAttestation/service_provider/ecp.cpp @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2016 Intel Corporation. All rights reserved. + * Copyright (C) 2011-2017 Intel Corporation. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/SampleCode/RemoteAttestation/service_provider/ecp.h b/SampleCode/RemoteAttestation/service_provider/ecp.h index 0a562b05..6a18bd44 100644 --- a/SampleCode/RemoteAttestation/service_provider/ecp.h +++ b/SampleCode/RemoteAttestation/service_provider/ecp.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2016 Intel Corporation. All rights reserved. + * Copyright (C) 2011-2017 Intel Corporation. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/SampleCode/RemoteAttestation/service_provider/ias_ra.cpp b/SampleCode/RemoteAttestation/service_provider/ias_ra.cpp index ec6f52f7..91b1a369 100644 --- a/SampleCode/RemoteAttestation/service_provider/ias_ra.cpp +++ b/SampleCode/RemoteAttestation/service_provider/ias_ra.cpp @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2016 Intel Corporation. All rights reserved. + * Copyright (C) 2011-2017 Intel Corporation. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/SampleCode/RemoteAttestation/service_provider/ias_ra.h b/SampleCode/RemoteAttestation/service_provider/ias_ra.h index a984d0f0..8dbde08d 100644 --- a/SampleCode/RemoteAttestation/service_provider/ias_ra.h +++ b/SampleCode/RemoteAttestation/service_provider/ias_ra.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2016 Intel Corporation. All rights reserved. + * Copyright (C) 2011-2017 Intel Corporation. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/SampleCode/RemoteAttestation/service_provider/network_ra.cpp b/SampleCode/RemoteAttestation/service_provider/network_ra.cpp index f8ab8637..a5277382 100644 --- a/SampleCode/RemoteAttestation/service_provider/network_ra.cpp +++ b/SampleCode/RemoteAttestation/service_provider/network_ra.cpp @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2016 Intel Corporation. All rights reserved. + * Copyright (C) 2011-2017 Intel Corporation. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/SampleCode/RemoteAttestation/service_provider/network_ra.h b/SampleCode/RemoteAttestation/service_provider/network_ra.h index 9091bfb6..8b23d7ef 100644 --- a/SampleCode/RemoteAttestation/service_provider/network_ra.h +++ b/SampleCode/RemoteAttestation/service_provider/network_ra.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2016 Intel Corporation. All rights reserved. + * Copyright (C) 2011-2017 Intel Corporation. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/SampleCode/RemoteAttestation/service_provider/remote_attestation_result.h b/SampleCode/RemoteAttestation/service_provider/remote_attestation_result.h index 86d1532b..a84d8074 100644 --- a/SampleCode/RemoteAttestation/service_provider/remote_attestation_result.h +++ b/SampleCode/RemoteAttestation/service_provider/remote_attestation_result.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2016 Intel Corporation. All rights reserved. + * Copyright (C) 2011-2017 Intel Corporation. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/SampleCode/RemoteAttestation/service_provider/service_provider.cpp b/SampleCode/RemoteAttestation/service_provider/service_provider.cpp index 1db44c0a..ac391dac 100644 --- a/SampleCode/RemoteAttestation/service_provider/service_provider.cpp +++ b/SampleCode/RemoteAttestation/service_provider/service_provider.cpp @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2016 Intel Corporation. All rights reserved. + * Copyright (C) 2011-2017 Intel Corporation. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/SampleCode/RemoteAttestation/service_provider/service_provider.h b/SampleCode/RemoteAttestation/service_provider/service_provider.h index 83a7522e..fa1d03ea 100644 --- a/SampleCode/RemoteAttestation/service_provider/service_provider.h +++ b/SampleCode/RemoteAttestation/service_provider/service_provider.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2016 Intel Corporation. All rights reserved. + * Copyright (C) 2011-2017 Intel Corporation. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/SampleCode/SampleEnclave/App/App.cpp b/SampleCode/SampleEnclave/App/App.cpp index 0538d2d8..b0ecd615 100644 --- a/SampleCode/SampleEnclave/App/App.cpp +++ b/SampleCode/SampleEnclave/App/App.cpp @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2016 Intel Corporation. All rights reserved. + * Copyright (C) 2011-2017 Intel Corporation. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/SampleCode/SampleEnclave/App/App.h b/SampleCode/SampleEnclave/App/App.h index bc86ff85..f44fdc6a 100644 --- a/SampleCode/SampleEnclave/App/App.h +++ b/SampleCode/SampleEnclave/App/App.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2016 Intel Corporation. All rights reserved. + * Copyright (C) 2011-2017 Intel Corporation. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/SampleCode/SampleEnclave/App/Edger8rSyntax/Arrays.cpp b/SampleCode/SampleEnclave/App/Edger8rSyntax/Arrays.cpp index 01552eef..81e7d72b 100644 --- a/SampleCode/SampleEnclave/App/Edger8rSyntax/Arrays.cpp +++ b/SampleCode/SampleEnclave/App/Edger8rSyntax/Arrays.cpp @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2016 Intel Corporation. All rights reserved. + * Copyright (C) 2011-2017 Intel Corporation. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/SampleCode/SampleEnclave/App/Edger8rSyntax/Functions.cpp b/SampleCode/SampleEnclave/App/Edger8rSyntax/Functions.cpp index acc2ad27..25fcf703 100644 --- a/SampleCode/SampleEnclave/App/Edger8rSyntax/Functions.cpp +++ b/SampleCode/SampleEnclave/App/Edger8rSyntax/Functions.cpp @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2016 Intel Corporation. All rights reserved. + * Copyright (C) 2011-2017 Intel Corporation. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/SampleCode/SampleEnclave/App/Edger8rSyntax/Pointers.cpp b/SampleCode/SampleEnclave/App/Edger8rSyntax/Pointers.cpp index 2187a40d..18f31459 100644 --- a/SampleCode/SampleEnclave/App/Edger8rSyntax/Pointers.cpp +++ b/SampleCode/SampleEnclave/App/Edger8rSyntax/Pointers.cpp @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2016 Intel Corporation. All rights reserved. + * Copyright (C) 2011-2017 Intel Corporation. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/SampleCode/SampleEnclave/App/Edger8rSyntax/Types.cpp b/SampleCode/SampleEnclave/App/Edger8rSyntax/Types.cpp index 19702263..19bdd302 100644 --- a/SampleCode/SampleEnclave/App/Edger8rSyntax/Types.cpp +++ b/SampleCode/SampleEnclave/App/Edger8rSyntax/Types.cpp @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2016 Intel Corporation. All rights reserved. + * Copyright (C) 2011-2017 Intel Corporation. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/SampleCode/SampleEnclave/App/TrustedLibrary/Libc.cpp b/SampleCode/SampleEnclave/App/TrustedLibrary/Libc.cpp index 29f00746..749e8d4a 100644 --- a/SampleCode/SampleEnclave/App/TrustedLibrary/Libc.cpp +++ b/SampleCode/SampleEnclave/App/TrustedLibrary/Libc.cpp @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2016 Intel Corporation. All rights reserved. + * Copyright (C) 2011-2017 Intel Corporation. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/SampleCode/SampleEnclave/App/TrustedLibrary/Libcxx.cpp b/SampleCode/SampleEnclave/App/TrustedLibrary/Libcxx.cpp index f6d567b9..238d3b05 100644 --- a/SampleCode/SampleEnclave/App/TrustedLibrary/Libcxx.cpp +++ b/SampleCode/SampleEnclave/App/TrustedLibrary/Libcxx.cpp @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2016 Intel Corporation. All rights reserved. + * Copyright (C) 2011-2017 Intel Corporation. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/SampleCode/SampleEnclave/App/TrustedLibrary/Thread.cpp b/SampleCode/SampleEnclave/App/TrustedLibrary/Thread.cpp index ca28fe5e..d4b8626f 100644 --- a/SampleCode/SampleEnclave/App/TrustedLibrary/Thread.cpp +++ b/SampleCode/SampleEnclave/App/TrustedLibrary/Thread.cpp @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2016 Intel Corporation. All rights reserved. + * Copyright (C) 2011-2017 Intel Corporation. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/SampleCode/SampleEnclave/Enclave/Edger8rSyntax/Arrays.cpp b/SampleCode/SampleEnclave/Enclave/Edger8rSyntax/Arrays.cpp index cd0718b5..85236d57 100644 --- a/SampleCode/SampleEnclave/Enclave/Edger8rSyntax/Arrays.cpp +++ b/SampleCode/SampleEnclave/Enclave/Edger8rSyntax/Arrays.cpp @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2016 Intel Corporation. All rights reserved. + * Copyright (C) 2011-2017 Intel Corporation. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/SampleCode/SampleEnclave/Enclave/Edger8rSyntax/Arrays.edl b/SampleCode/SampleEnclave/Enclave/Edger8rSyntax/Arrays.edl index 4d481fa1..9ef6b49a 100644 --- a/SampleCode/SampleEnclave/Enclave/Edger8rSyntax/Arrays.edl +++ b/SampleCode/SampleEnclave/Enclave/Edger8rSyntax/Arrays.edl @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2016 Intel Corporation. All rights reserved. + * Copyright (C) 2011-2017 Intel Corporation. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/SampleCode/SampleEnclave/Enclave/Edger8rSyntax/Functions.cpp b/SampleCode/SampleEnclave/Enclave/Edger8rSyntax/Functions.cpp index e29739a2..2d53dcf0 100644 --- a/SampleCode/SampleEnclave/Enclave/Edger8rSyntax/Functions.cpp +++ b/SampleCode/SampleEnclave/Enclave/Edger8rSyntax/Functions.cpp @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2016 Intel Corporation. All rights reserved. + * Copyright (C) 2011-2017 Intel Corporation. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/SampleCode/SampleEnclave/Enclave/Edger8rSyntax/Functions.edl b/SampleCode/SampleEnclave/Enclave/Edger8rSyntax/Functions.edl index ad9e1d99..bdb21ce3 100644 --- a/SampleCode/SampleEnclave/Enclave/Edger8rSyntax/Functions.edl +++ b/SampleCode/SampleEnclave/Enclave/Edger8rSyntax/Functions.edl @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2016 Intel Corporation. All rights reserved. + * Copyright (C) 2011-2017 Intel Corporation. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/SampleCode/SampleEnclave/Enclave/Edger8rSyntax/Pointers.cpp b/SampleCode/SampleEnclave/Enclave/Edger8rSyntax/Pointers.cpp index 6e027e9c..788cbf06 100644 --- a/SampleCode/SampleEnclave/Enclave/Edger8rSyntax/Pointers.cpp +++ b/SampleCode/SampleEnclave/Enclave/Edger8rSyntax/Pointers.cpp @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2016 Intel Corporation. All rights reserved. + * Copyright (C) 2011-2017 Intel Corporation. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/SampleCode/SampleEnclave/Enclave/Edger8rSyntax/Pointers.edl b/SampleCode/SampleEnclave/Enclave/Edger8rSyntax/Pointers.edl index cbbc960f..3719f445 100644 --- a/SampleCode/SampleEnclave/Enclave/Edger8rSyntax/Pointers.edl +++ b/SampleCode/SampleEnclave/Enclave/Edger8rSyntax/Pointers.edl @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2016 Intel Corporation. All rights reserved. + * Copyright (C) 2011-2017 Intel Corporation. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/SampleCode/SampleEnclave/Enclave/Edger8rSyntax/Types.cpp b/SampleCode/SampleEnclave/Enclave/Edger8rSyntax/Types.cpp index aba016a6..ea4cca39 100644 --- a/SampleCode/SampleEnclave/Enclave/Edger8rSyntax/Types.cpp +++ b/SampleCode/SampleEnclave/Enclave/Edger8rSyntax/Types.cpp @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2016 Intel Corporation. All rights reserved. + * Copyright (C) 2011-2017 Intel Corporation. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/SampleCode/SampleEnclave/Enclave/Edger8rSyntax/Types.edl b/SampleCode/SampleEnclave/Enclave/Edger8rSyntax/Types.edl index a23aed85..736dd197 100644 --- a/SampleCode/SampleEnclave/Enclave/Edger8rSyntax/Types.edl +++ b/SampleCode/SampleEnclave/Enclave/Edger8rSyntax/Types.edl @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2016 Intel Corporation. All rights reserved. + * Copyright (C) 2011-2017 Intel Corporation. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/SampleCode/SampleEnclave/Enclave/Enclave.config.xml b/SampleCode/SampleEnclave/Enclave/Enclave.config.xml index c9533851..e94c9bc5 100644 --- a/SampleCode/SampleEnclave/Enclave/Enclave.config.xml +++ b/SampleCode/SampleEnclave/Enclave/Enclave.config.xml @@ -5,6 +5,7 @@ 0x100000 10 1 + 0 0 0xFFFFFFFF diff --git a/SampleCode/SampleEnclave/Enclave/Enclave.cpp b/SampleCode/SampleEnclave/Enclave/Enclave.cpp index 94a3108c..e1df4dc2 100644 --- a/SampleCode/SampleEnclave/Enclave/Enclave.cpp +++ b/SampleCode/SampleEnclave/Enclave/Enclave.cpp @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2016 Intel Corporation. All rights reserved. + * Copyright (C) 2011-2017 Intel Corporation. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/SampleCode/SampleEnclave/Enclave/Enclave.edl b/SampleCode/SampleEnclave/Enclave/Enclave.edl index 9e31bd2c..6318f661 100644 --- a/SampleCode/SampleEnclave/Enclave/Enclave.edl +++ b/SampleCode/SampleEnclave/Enclave/Enclave.edl @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2016 Intel Corporation. All rights reserved. + * Copyright (C) 2011-2017 Intel Corporation. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/SampleCode/SampleEnclave/Enclave/Enclave.h b/SampleCode/SampleEnclave/Enclave/Enclave.h index 6e4c09ee..b38a5c1d 100644 --- a/SampleCode/SampleEnclave/Enclave/Enclave.h +++ b/SampleCode/SampleEnclave/Enclave/Enclave.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2016 Intel Corporation. All rights reserved. + * Copyright (C) 2011-2017 Intel Corporation. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/SampleCode/SampleEnclave/Enclave/Enclave.lds b/SampleCode/SampleEnclave/Enclave/Enclave.lds index e3d9d0ee..f5f35d5b 100644 --- a/SampleCode/SampleEnclave/Enclave/Enclave.lds +++ b/SampleCode/SampleEnclave/Enclave/Enclave.lds @@ -4,6 +4,7 @@ enclave.so g_global_data_sim; g_global_data; enclave_entry; + g_peak_heap_used; local: *; }; diff --git a/SampleCode/SampleEnclave/Enclave/TrustedLibrary/Libc.cpp b/SampleCode/SampleEnclave/Enclave/TrustedLibrary/Libc.cpp index b0e566ce..aefd2606 100644 --- a/SampleCode/SampleEnclave/Enclave/TrustedLibrary/Libc.cpp +++ b/SampleCode/SampleEnclave/Enclave/TrustedLibrary/Libc.cpp @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2016 Intel Corporation. All rights reserved. + * Copyright (C) 2011-2017 Intel Corporation. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/SampleCode/SampleEnclave/Enclave/TrustedLibrary/Libc.edl b/SampleCode/SampleEnclave/Enclave/TrustedLibrary/Libc.edl index 9efe3219..6b5aa3e6 100644 --- a/SampleCode/SampleEnclave/Enclave/TrustedLibrary/Libc.edl +++ b/SampleCode/SampleEnclave/Enclave/TrustedLibrary/Libc.edl @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2016 Intel Corporation. All rights reserved. + * Copyright (C) 2011-2017 Intel Corporation. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/SampleCode/SampleEnclave/Enclave/TrustedLibrary/Libcxx.cpp b/SampleCode/SampleEnclave/Enclave/TrustedLibrary/Libcxx.cpp index 6f766464..223e9453 100644 --- a/SampleCode/SampleEnclave/Enclave/TrustedLibrary/Libcxx.cpp +++ b/SampleCode/SampleEnclave/Enclave/TrustedLibrary/Libcxx.cpp @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2016 Intel Corporation. All rights reserved. + * Copyright (C) 2011-2017 Intel Corporation. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/SampleCode/SampleEnclave/Enclave/TrustedLibrary/Libcxx.edl b/SampleCode/SampleEnclave/Enclave/TrustedLibrary/Libcxx.edl index 49a8b8d9..f6eb7ee7 100644 --- a/SampleCode/SampleEnclave/Enclave/TrustedLibrary/Libcxx.edl +++ b/SampleCode/SampleEnclave/Enclave/TrustedLibrary/Libcxx.edl @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2016 Intel Corporation. All rights reserved. + * Copyright (C) 2011-2017 Intel Corporation. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/SampleCode/SampleEnclave/Enclave/TrustedLibrary/Thread.cpp b/SampleCode/SampleEnclave/Enclave/TrustedLibrary/Thread.cpp index d360d716..251d5e8a 100644 --- a/SampleCode/SampleEnclave/Enclave/TrustedLibrary/Thread.cpp +++ b/SampleCode/SampleEnclave/Enclave/TrustedLibrary/Thread.cpp @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2016 Intel Corporation. All rights reserved. + * Copyright (C) 2011-2017 Intel Corporation. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/SampleCode/SampleEnclave/Enclave/TrustedLibrary/Thread.edl b/SampleCode/SampleEnclave/Enclave/TrustedLibrary/Thread.edl index 77ce461d..f9ec4d29 100644 --- a/SampleCode/SampleEnclave/Enclave/TrustedLibrary/Thread.edl +++ b/SampleCode/SampleEnclave/Enclave/TrustedLibrary/Thread.edl @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2016 Intel Corporation. All rights reserved. + * Copyright (C) 2011-2017 Intel Corporation. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/SampleCode/SampleEnclave/Include/user_types.h b/SampleCode/SampleEnclave/Include/user_types.h index 00a9bed8..4d3a4a99 100644 --- a/SampleCode/SampleEnclave/Include/user_types.h +++ b/SampleCode/SampleEnclave/Include/user_types.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2016 Intel Corporation. All rights reserved. + * Copyright (C) 2011-2017 Intel Corporation. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/SampleCode/SampleEnclave/Makefile b/SampleCode/SampleEnclave/Makefile index aaa22052..e2524b9e 100644 --- a/SampleCode/SampleEnclave/Makefile +++ b/SampleCode/SampleEnclave/Makefile @@ -1,5 +1,5 @@ # -# Copyright (C) 2011-2016 Intel Corporation. All rights reserved. +# Copyright (C) 2011-2017 Intel Corporation. All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions @@ -164,7 +164,7 @@ endif .PHONY: all run ifeq ($(Build_Mode), HW_RELEASE) -all: $(App_Name) $(Enclave_Name) +all: .config_$(Build_Mode)_$(SGX_ARCH) $(App_Name) $(Enclave_Name) @echo "The project has been built in release hardware mode." @echo "Please sign the $(Enclave_Name) first with your signing key before you run the $(App_Name) to launch and access the enclave." @echo "To sign the enclave use the command:" @@ -172,7 +172,7 @@ all: $(App_Name) $(Enclave_Name) @echo "You can also sign the enclave using an external signing tool." @echo "To build the project in simulation mode set SGX_MODE=SIM. To build the project in prerelease mode set SGX_PRERELEASE=1 and SGX_MODE=HW." else -all: $(App_Name) $(Signed_Enclave_Name) +all: .config_$(Build_Mode)_$(SGX_ARCH) $(App_Name) $(Signed_Enclave_Name) ifeq ($(Build_Mode), HW_DEBUG) @echo "The project has been built in debug hardware mode." else ifeq ($(Build_Mode), SIM_DEBUG) @@ -210,6 +210,9 @@ $(App_Name): App/Enclave_u.o $(App_Cpp_Objects) @$(CXX) $^ -o $@ $(App_Link_Flags) @echo "LINK => $@" +.config_$(Build_Mode)_$(SGX_ARCH): + @rm -f .config_* $(App_Name) $(Enclave_Name) $(Signed_Enclave_Name) $(App_Cpp_Objects) App/Enclave_u.* $(Enclave_Cpp_Objects) Enclave/Enclave_t.* + @touch .config_$(Build_Mode)_$(SGX_ARCH) ######## Enclave Objects ######## @@ -236,4 +239,4 @@ $(Signed_Enclave_Name): $(Enclave_Name) .PHONY: clean clean: - @rm -f $(App_Name) $(Enclave_Name) $(Signed_Enclave_Name) $(App_Cpp_Objects) App/Enclave_u.* $(Enclave_Cpp_Objects) Enclave/Enclave_t.* + @rm -f .config_* $(App_Name) $(Enclave_Name) $(Signed_Enclave_Name) $(App_Cpp_Objects) App/Enclave_u.* $(Enclave_Cpp_Objects) Enclave/Enclave_t.* diff --git a/SampleCode/SealedData/.cproject b/SampleCode/SealedData/.cproject new file mode 100644 index 00000000..b5462bc9 --- /dev/null +++ b/SampleCode/SealedData/.cproject @@ -0,0 +1,219 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/SampleCode/SealedData/.project b/SampleCode/SealedData/.project new file mode 100644 index 00000000..b04a0ddc --- /dev/null +++ b/SampleCode/SealedData/.project @@ -0,0 +1,28 @@ + + + SealedData + + + + + + org.eclipse.cdt.managedbuilder.core.genmakebuilder + clean,full,incremental, + + + + + org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder + full,incremental, + + + + + + org.eclipse.cdt.core.cnature + org.eclipse.cdt.managedbuilder.core.managedBuildNature + org.eclipse.cdt.managedbuilder.core.ScannerConfigNature + org.eclipse.cdt.core.ccnature + com.intel.sgx.sgxnature + + diff --git a/SampleCode/SealedData/DRM_app/DRM_app.cpp b/SampleCode/SealedData/DRM_app/DRM_app.cpp new file mode 100644 index 00000000..6065e6ff --- /dev/null +++ b/SampleCode/SealedData/DRM_app/DRM_app.cpp @@ -0,0 +1,307 @@ +/* + * Copyright (C) 2011-2017 Intel Corporation. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * * Neither the name of Intel Corporation nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + + + +#include "ReplayProtectedDRM.h" +#include "TimeBasedDRM.h" +#include +using namespace std; + + +#include +#include +#define memcpy_s(dst,dst_size,src,max_count) memcpy(dst,src,max_count) +#define Sleep(n) usleep((n)*1000) + +uint32_t test_replay_protected_drm_operation() +{ + cout<=REPLAY_PROTECTED_PAY_LOAD_MAX_RELEASE_VERSION) + { + cout<<"\tExpected failure."< +#include "sgx.h" +#include "sgx_urts.h" +#include "sgx_uae_service.h" +#include "DRM_enclave_u.h" +#include "ReplayProtectedDRM.h" +#include "sgx_tseal.h" + +using namespace std; + +#define ENCLAVE_NAME "DRM_enclave.signed.so" + + +ReplayProtectedDRM::ReplayProtectedDRM(): enclave_id(0) +{ + int updated = 0; + sgx_status_t sgx_ret = SGX_ERROR_UNEXPECTED; + sgx_ret = sgx_create_enclave(ENCLAVE_NAME, SGX_DEBUG_FLAG, + &launch_token, &updated, &enclave_id, NULL); + if (sgx_ret) + { + cerr<<"cannot create enclave, error code = 0x"<< hex<< sgx_ret < +using namespace std; + +#define ENCLAVE_NAME "DRM_enclave.signed.so" + +TimeBasedDRM::TimeBasedDRM(void): enclave_id(0) +{ + int updated = 0; + sgx_status_t sgx_ret = SGX_ERROR_UNEXPECTED; + sgx_ret = sgx_create_enclave(ENCLAVE_NAME, SGX_DEBUG_FLAG, + &launch_token, &updated, &enclave_id, NULL); + if (sgx_ret) + { + cerr<<"cannot create enclave, error code = 0x"<< hex<< sgx_ret < + 0 + 0 + 0x4000 + 0x10000 + 1 + 1 + 0 + 0 + 0xFFFFFFFF + diff --git a/SampleCode/SealedData/DRM_enclave/DRM_enclave.cpp b/SampleCode/SealedData/DRM_enclave/DRM_enclave.cpp new file mode 100644 index 00000000..8b7158e5 --- /dev/null +++ b/SampleCode/SealedData/DRM_enclave/DRM_enclave.cpp @@ -0,0 +1,598 @@ +/* + * Copyright (C) 2011-2017 Intel Corporation. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * * Neither the name of Intel Corporation nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + + + +#include "DRM_enclave_t.h" + +#include "sgx_trts.h" +#include "sgx_tseal.h" +#include "sgx_tae_service.h" +#include "string.h" +#include "../include/sealed_data_defines.h" + +#define REPLAY_PROTECTED_SECRET_SIZE 32 +typedef struct _activity_log +{ + uint32_t release_version; + uint32_t max_release_version; +}activity_log; + +typedef struct _replay_protected_pay_load +{ + sgx_mc_uuid_t mc; + uint32_t mc_value; + uint8_t secret[REPLAY_PROTECTED_SECRET_SIZE]; + activity_log log; +}replay_protected_pay_load; + + + + +static uint32_t verify_mc(replay_protected_pay_load* data2verify) +{ + uint32_t ret = 0; + uint32_t mc_value; + ret = sgx_read_monotonic_counter(&data2verify->mc,&mc_value); + if(ret != SGX_SUCCESS) + { + switch(ret) + { + case SGX_ERROR_SERVICE_UNAVAILABLE: + /* Architecture Enclave Service Manager is not installed or not + working properly.*/ + break; + case SGX_ERROR_SERVICE_TIMEOUT: + /* retry the operation later*/ + break; + case SGX_ERROR_BUSY: + /* retry the operation later*/ + break; + case SGX_ERROR_MC_NOT_FOUND: + /* the the Monotonic Counter ID is invalid.*/ + break; + default: + /*other errors*/ + break; + } + } + else if(mc_value!=data2verify->mc_value) + { + ret = REPLAY_DETECTED; + } + return ret; +} + +static uint32_t verify_sealed_data( + const sgx_sealed_data_t* data2unseal, + replay_protected_pay_load* data_unsealed) +{ + uint32_t ret = 0; + replay_protected_pay_load temp_unseal; + uint32_t unseal_length = sizeof(replay_protected_pay_load); + + ret = sgx_unseal_data(data2unseal, NULL, 0, + (uint8_t*)&temp_unseal, &unseal_length); + if(ret != SGX_SUCCESS) + { + switch(ret) + { + case SGX_ERROR_MAC_MISMATCH: + /* MAC of the sealed data is incorrect. + The sealed data has been tampered.*/ + break; + case SGX_ERROR_INVALID_ATTRIBUTE: + /*Indicates attribute field of the sealed data is incorrect.*/ + break; + case SGX_ERROR_INVALID_ISVSVN: + /* Indicates isv_svn field of the sealed data is greater than + the enclave’s ISVSVN. This is a downgraded enclave.*/ + break; + case SGX_ERROR_INVALID_CPUSVN: + /* Indicates cpu_svn field of the sealed data is greater than + the platform’s cpu_svn. enclave is on a downgraded platform.*/ + break; + case SGX_ERROR_INVALID_KEYNAME: + /*Indicates key_name field of the sealed data is incorrect.*/ + break; + default: + /*other errors*/ + break; + } + return ret; + } + ret = verify_mc(&temp_unseal); + if (ret == SGX_SUCCESS) + memcpy(data_unsealed,&temp_unseal,sizeof(replay_protected_pay_load)); + /* remember to clear secret data after been used by memset_s */ + memset_s(&temp_unseal, sizeof(replay_protected_pay_load), 0, + sizeof(replay_protected_pay_load)); + return ret; +} + + + + + +uint32_t create_sealed_policy(uint8_t* sealed_log, uint32_t sealed_log_size ) +{ + uint32_t ret = 0; + int busy_retry_times = 2; + replay_protected_pay_load data2seal; + memset(&data2seal, 0, sizeof(data2seal)); + uint32_t size = sgx_calc_sealed_data_size(0, + sizeof(replay_protected_pay_load)); + if(sealed_log_size != size) + return SGX_ERROR_INVALID_PARAMETER; + do{ + ret = sgx_create_pse_session(); + }while (ret == SGX_ERROR_BUSY && busy_retry_times--); + if (ret != SGX_SUCCESS) + return ret; + do + { + ret = sgx_create_monotonic_counter(&data2seal.mc,&data2seal.mc_value); + if(ret != SGX_SUCCESS) + { + switch(ret) + { + case SGX_ERROR_SERVICE_UNAVAILABLE: + /* Architecture Enclave Service Manager is not installed or not + working properly.*/ + break; + case SGX_ERROR_SERVICE_TIMEOUT: + /* retry the operation later*/ + break; + case SGX_ERROR_BUSY: + /* retry the operation later*/ + break; + case SGX_ERROR_MC_OVER_QUOTA: + /* SGX Platform Service enforces a quota scheme on the Monotonic + Counters a SGX app can maintain. the enclave has reached the + quota.*/ + break; + case SGX_ERROR_MC_USED_UP: + /* the Monotonic Counter has been used up and cannot create + Monotonic Counter anymore.*/ + break; + default: + /*other errors*/ + break; + } + break; + } + + /* secret should be provisioned into enclave after the enclave attests to + the secret owner. + For example, the server that delivers the encrypted DRM content. + In this sample code, a random number is used to represent the secret */ + ret = sgx_read_rand(data2seal.secret, REPLAY_PROTECTED_SECRET_SIZE); + if(ret != SGX_SUCCESS) + break; + data2seal.log.release_version = 0; + /* the secret can be updated for 5 times */ + data2seal.log.max_release_version = + REPLAY_PROTECTED_PAY_LOAD_MAX_RELEASE_VERSION; + + /*sealing the plaintext to ciphertext. The ciphertext can be delivered + outside of enclave.*/ + ret = sgx_seal_data(0, NULL,sizeof(data2seal),(uint8_t*)&data2seal, + sealed_log_size, (sgx_sealed_data_t*)sealed_log); + } while (0); + + /* remember to clear secret data after been used by memset_s */ + memset_s(&data2seal, sizeof(replay_protected_pay_load), 0, + sizeof(replay_protected_pay_load)); + sgx_close_pse_session(); + return ret; +} +uint32_t perform_sealed_policy(const uint8_t* sealed_log, + uint32_t sealed_log_size) +{ + uint32_t ret = 0; + int busy_retry_times = 2; + replay_protected_pay_load data_unsealed; + if(sealed_log_size != sgx_calc_sealed_data_size(0, + sizeof(replay_protected_pay_load))) + return SGX_ERROR_INVALID_PARAMETER; + do{ + ret = sgx_create_pse_session(); + }while (ret == SGX_ERROR_BUSY && busy_retry_times--); + if (ret != SGX_SUCCESS) + return ret; + ret = verify_sealed_data((const sgx_sealed_data_t*) sealed_log, + &data_unsealed); + if (SGX_SUCCESS == ret) + { + /* release the secret to perform the requested functions, + for example, decrypt the DRM content*/ + } + else + { + /* activity log update fail to verify activity log, + refuse to release the secret */ + } + sgx_close_pse_session(); + + /* remember to clear secret data after been used by memset_s */ + memset_s(&data_unsealed, sizeof(data_unsealed), + 0, sizeof(replay_protected_pay_load) ); + return ret; + +} + + +uint32_t update_sealed_policy(uint8_t* sealed_log, uint32_t sealed_log_size) +{ + uint32_t ret = 0; + int busy_retry_times = 2; + replay_protected_pay_load data_unsealed; + replay_protected_pay_load data2seal; + if(sealed_log_size != sgx_calc_sealed_data_size(0, + sizeof(replay_protected_pay_load))) + return SGX_ERROR_INVALID_PARAMETER; + do{ + ret = sgx_create_pse_session(); + }while (ret == SGX_ERROR_BUSY && busy_retry_times--); + if (ret != SGX_SUCCESS) + return ret; + do + { + ret = verify_sealed_data((sgx_sealed_data_t*) sealed_log, + &data_unsealed); + if(ret != SGX_SUCCESS) + break; + + memcpy(&data2seal,&data_unsealed, sizeof(replay_protected_pay_load)); + + ret = sgx_increment_monotonic_counter(&data2seal.mc, + &data2seal.mc_value); + if(ret != SGX_SUCCESS) + { + switch(ret) + { + case SGX_ERROR_SERVICE_UNAVAILABLE: + /* Architecture Enclave Service Manager is not installed or not + working properly.*/ + break; + case SGX_ERROR_SERVICE_TIMEOUT: + /* retry the operation*/ + break; + case SGX_ERROR_BUSY: + /* retry the operation later*/ + break; + case SGX_ERROR_MC_NOT_FOUND: + /* The Monotonic Counter was deleted or invalidated. + This might happen under certain conditions. + For example, the Monotonic Counter has been deleted, the SGX + Platform Service lost its data or the system is under attack. */ + break; + case SGX_ERROR_MC_NO_ACCESS_RIGHT: + /* The Monotonic Counter is not accessible by this enclave. + This might happen under certain conditions. + For example, the SGX Platform Service lost its data or the + system is under attack. */ + break; + default: + /*other errors*/ + break; + } + break; + } + + /* If the counter value returns doesn't match the expected value, + someother entity has updated the counter, for example, another instance + of this enclave. The system might be under attack */ + if(data2seal.mc_value!= data_unsealed.mc_value+1) + { + ret = REPLAY_DETECTED; + break; + } + + if(data2seal.log.release_version >= data2seal.log.max_release_version) + { + /* the max release version has reached, cannot update. Delete the + monotonic_counter, whether the deleting is successful or not. */ + (void)sgx_destroy_monotonic_counter(&data2seal.mc); + ret= MAX_RELEASE_REACHED; + break; + } + + /* next release versiona */ + data2seal.log.release_version++; + /* release next data2seal.secret, here is a sample */ + for(int i = 0; i< REPLAY_PROTECTED_SECRET_SIZE; i++) + data2seal.secret[i]++; + + /* seal the new log */ + ret = sgx_seal_data(0, NULL, sizeof(data2seal), (uint8_t*)&data2seal, + sealed_log_size, (sgx_sealed_data_t*)sealed_log); + } while (0); + + /* remember to clear secret data after been used by memset_s */ + memset_s(&data_unsealed, sizeof(replay_protected_pay_load), 0, + sizeof(replay_protected_pay_load)); + + /* remember to clear secret data after been used by memset_s */ + memset_s(&data2seal, sizeof(replay_protected_pay_load), 0, + sizeof(replay_protected_pay_load)); + sgx_close_pse_session(); + return ret; +} +uint32_t delete_sealed_policy(const uint8_t* sealed_log, + uint32_t sealed_log_size) +{ + uint32_t ret = 0; + int busy_retry_times = 2; + replay_protected_pay_load data_unsealed; + if(sealed_log_size != sgx_calc_sealed_data_size(0, + sizeof(replay_protected_pay_load))) + return SGX_ERROR_INVALID_PARAMETER; + do{ + ret = sgx_create_pse_session(); + }while (ret == SGX_ERROR_BUSY && busy_retry_times--); + if (ret != SGX_SUCCESS) + return ret; + do + { + ret = verify_sealed_data((const sgx_sealed_data_t*) sealed_log, + &data_unsealed); + if(ret != SGX_SUCCESS) + break; + ret = sgx_destroy_monotonic_counter(&data_unsealed.mc); + if(ret != SGX_SUCCESS) + { + switch(ret) + { + case SGX_ERROR_SERVICE_UNAVAILABLE: + /* Architecture Enclave Service Manager is not installed or not + working properly.*/ + break; + case SGX_ERROR_SERVICE_TIMEOUT: + /* retry the operation later*/ + break; + case SGX_ERROR_BUSY: + /* retry the operation later*/ + break; + case SGX_ERROR_MC_NOT_FOUND: + /* the the Monotonic Counter ID is invalid.*/ + break; + case SGX_ERROR_MC_NO_ACCESS_RIGHT: + /* the Monotonic Counter is not accessible by this enclave. + This might happen under certain conditions. + For example, the SGX Platform Service lost its data or + the system is under attack. */ + break; + default: + /*other errors*/ + break; + } + } + } while (0); + /* remember to clear secret data after been used by memset_s */ + memset_s(&data_unsealed, sizeof(replay_protected_pay_load), 0, + sizeof(replay_protected_pay_load)); + sgx_close_pse_session(); + return ret; +} + +/* The secret required to render service is stored together with the time based +policy.If an attack tampered with or destroyed the time based policy data, the +service won't be rendered */ +#define TIME_BASED_SECRET_SIZE 16 +typedef struct _time_based_pay_load +{ + sgx_time_source_nonce_t nonce; + sgx_time_t timestamp_base; + uint8_t secret[TIME_BASED_SECRET_SIZE]; + sgx_time_t lease_duration; +}time_based_pay_load; + + +uint32_t create_time_based_policy(uint8_t* sealed_log, + uint32_t sealed_log_size ) +{ + uint32_t ret = 0; + int busy_retry_times = 2; + time_based_pay_load payload2seal; + memset(&payload2seal, 0, sizeof(time_based_pay_load)); + uint32_t size = sgx_calc_sealed_data_size(0,sizeof(payload2seal)); + if(sealed_log_size != size) + return SGX_ERROR_INVALID_PARAMETER; + do{ + ret = sgx_create_pse_session(); + }while (ret == SGX_ERROR_BUSY && busy_retry_times--); + if (ret != SGX_SUCCESS) + return ret; + do + { + ret = sgx_get_trusted_time(&payload2seal.timestamp_base, + &payload2seal.nonce); + if(ret != SGX_SUCCESS) + { + switch(ret) + { + case SGX_ERROR_SERVICE_UNAVAILABLE: + /* Architecture Enclave Service Manager is not installed or not + working properly.*/ + break; + case SGX_ERROR_SERVICE_TIMEOUT: + /* retry the operation*/ + break; + case SGX_ERROR_BUSY: + /* retry the operation later*/ + break; + default: + /*other errors*/ + break; + } + break; + } + /*secret should be provisioned into enclave after the enclave attests to + the secret owner, for example, the server that delivers the encrypted + DRM content. + In this sample code, a random number is used to represent the secret*/ + ret = sgx_read_rand(payload2seal.secret, TIME_BASED_SECRET_SIZE); + if(ret != SGX_SUCCESS) + break; + payload2seal.lease_duration = TIME_BASED_LEASE_DURATION_SECOND; + /* sead the pay load */ + ret = sgx_seal_data(0, NULL, + sizeof(payload2seal), (uint8_t*)&payload2seal, + sealed_log_size, (sgx_sealed_data_t*)sealed_log); + }while(0); + /* clear the plaintext secret after used */ + memset_s(&payload2seal, sizeof(payload2seal), 0, + sizeof(time_based_pay_load)); + sgx_close_pse_session(); + return ret; +} + +uint32_t perform_time_based_policy(const uint8_t* sealed_log, + uint32_t sealed_log_size ) +{ + uint32_t ret = 0; + int busy_retry_times = 2; + time_based_pay_load unsealed_data; + uint32_t data2seal_length = sizeof(time_based_pay_load); + + uint32_t size = sgx_calc_sealed_data_size(0,sizeof(time_based_pay_load)); + if(sealed_log_size != size) + return SGX_ERROR_INVALID_PARAMETER; + + + ret = sgx_unseal_data((const sgx_sealed_data_t*)sealed_log, NULL, 0, + (uint8_t*)&unsealed_data, &data2seal_length); + if(ret != SGX_SUCCESS) + { + switch(ret) + { + case SGX_ERROR_MAC_MISMATCH: + /* MAC of the sealed data is incorrect. the sealed data has been + tampered.*/ + break; + case SGX_ERROR_INVALID_ATTRIBUTE: + /*Indicates attribute field of the sealed data is incorrect.*/ + break; + case SGX_ERROR_INVALID_ISVSVN: + /* Indicates isv_svn field of the sealed data is greater than the + enclave’s ISVSVN. This is a downgraded enclave.*/ + break; + case SGX_ERROR_INVALID_CPUSVN: + /* Indicates cpu_svn field of the sealed data is greater than the + platform’s cpu_svn. enclave is on a downgraded platform.*/ + break; + case SGX_ERROR_INVALID_KEYNAME: + /*Indicates key_name field of the sealed data is incorrect.*/ + break; + default: + /*other errors*/ + break; + } + return ret; + } + do{ + ret = sgx_create_pse_session(); + }while (ret == SGX_ERROR_BUSY && busy_retry_times--); + if (ret != SGX_SUCCESS) + { + memset_s(&unsealed_data, sizeof(unsealed_data), 0, + sizeof(time_based_pay_load)); + return ret; + } + do + { + sgx_time_source_nonce_t nonce = {0}; + sgx_time_t current_timestamp; + ret = sgx_get_trusted_time(¤t_timestamp, &nonce); + if(ret != SGX_SUCCESS) + { + switch(ret) + { + case SGX_ERROR_SERVICE_UNAVAILABLE: + /* Architecture Enclave Service Manager is not installed or not + working properly.*/ + break; + case SGX_ERROR_SERVICE_TIMEOUT: + /* retry the operation*/ + break; + case SGX_ERROR_BUSY: + /* retry the operation later*/ + break; + default: + /*other errors*/ + break; + } + break; + } + /*source nonce must be the same, otherwise time source is changed and + the two timestamps are not comparable.*/ + if (memcmp(&nonce,&unsealed_data.nonce, + sizeof(sgx_time_source_nonce_t))) + { + ret = TIMESOURCE_CHANGED; + break; + } + + /* This should not happen. + SGX Platform service guarantees that the time stamp reading moves + forward, unless the time source is changed.*/ + if(current_timestamp < unsealed_data.timestamp_base) + { + ret = TIMESTAMP_UNEXPECTED; + break; + } + /*compare lease_duration and timestamp_diff + if lease_duration is less than difference of current time and base time, + lease tern has expired.*/ + if(current_timestamp - unsealed_data.timestamp_base > + unsealed_data.lease_duration) + { + ret = LEASE_EXPIRED; + break; + } + }while(0); + if (SGX_SUCCESS == ret) + { + /* release the secret to render service, for example, decrypt the DRM + content*/ + } + else + { + /* The secret is not released. the service won't be rendered and the DRM + content can be deleted.*/ + } + /* clear the plaintext secret after used */ + memset_s(&unsealed_data, sizeof(unsealed_data), 0, + sizeof(time_based_pay_load)); + sgx_close_pse_session(); + return ret; +} diff --git a/SampleCode/SealedData/DRM_enclave/DRM_enclave.edl b/SampleCode/SealedData/DRM_enclave/DRM_enclave.edl new file mode 100644 index 00000000..734c0694 --- /dev/null +++ b/SampleCode/SealedData/DRM_enclave/DRM_enclave.edl @@ -0,0 +1,49 @@ +/* + * Copyright (C) 2011-2017 Intel Corporation. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * * Neither the name of Intel Corporation nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +enclave { + from "sgx_tae_service.edl" import *; + trusted { + /* define ECALLs here. */ + public uint32_t create_sealed_policy([out, size=sealed_log_size] + uint8_t* sealed_log, uint32_t sealed_log_size ); + public uint32_t perform_sealed_policy([in, size=sealed_log_size] + const uint8_t* sealed_log, uint32_t sealed_log_size); + public uint32_t update_sealed_policy([in,out, size=sealed_log_size] + uint8_t* sealed_log, uint32_t sealed_log_size); + public uint32_t delete_sealed_policy([in, size=sealed_log_size] + const uint8_t* sealed_log, uint32_t sealed_log_size); + public uint32_t create_time_based_policy([out, size=sealed_log_size] + uint8_t* sealed_log, uint32_t sealed_log_size ); + public uint32_t perform_time_based_policy([in, size=sealed_log_size] + const uint8_t* sealed_log, uint32_t sealed_log_size ); + }; +}; diff --git a/SampleCode/SealedData/DRM_enclave/DRM_enclave.lds b/SampleCode/SealedData/DRM_enclave/DRM_enclave.lds new file mode 100644 index 00000000..59398b53 --- /dev/null +++ b/SampleCode/SealedData/DRM_enclave/DRM_enclave.lds @@ -0,0 +1,9 @@ +DRM_enclave.so +{ + global: + g_global_data_sim; + g_global_data; + enclave_entry; + local: + *; +}; diff --git a/SampleCode/SealedData/DRM_enclave/DRM_enclave_private.pem b/SampleCode/SealedData/DRM_enclave/DRM_enclave_private.pem new file mode 100644 index 00000000..0213c3b2 --- /dev/null +++ b/SampleCode/SealedData/DRM_enclave/DRM_enclave_private.pem @@ -0,0 +1,39 @@ +-----BEGIN RSA PRIVATE KEY----- +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 +-----END RSA PRIVATE KEY----- diff --git a/SampleCode/SealedData/Makefile b/SampleCode/SealedData/Makefile new file mode 100644 index 00000000..1d7d7f03 --- /dev/null +++ b/SampleCode/SealedData/Makefile @@ -0,0 +1,242 @@ +# +# Copyright (C) 2011-2017 Intel Corporation. All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in +# the documentation and/or other materials provided with the +# distribution. +# * Neither the name of Intel Corporation nor the names of its +# contributors may be used to endorse or promote products derived +# from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# +# + +######## SGX SDK Settings ######## + +SGX_SDK ?= /opt/intel/sgxsdk +SGX_MODE ?= HW +SGX_ARCH ?= x64 +SGX_DEBUG ?= 1 + +ifeq ($(shell getconf LONG_BIT), 32) + SGX_ARCH := x86 +else ifeq ($(findstring -m32, $(CXXFLAGS)), -m32) + SGX_ARCH := x86 +endif + +ifeq ($(SGX_ARCH), x86) + SGX_COMMON_CFLAGS := -m32 + SGX_LIBRARY_PATH := $(SGX_SDK)/lib + SGX_ENCLAVE_SIGNER := $(SGX_SDK)/bin/x86/sgx_sign + SGX_EDGER8R := $(SGX_SDK)/bin/x86/sgx_edger8r +else + SGX_COMMON_CFLAGS := -m64 + SGX_LIBRARY_PATH := $(SGX_SDK)/lib64 + SGX_ENCLAVE_SIGNER := $(SGX_SDK)/bin/x64/sgx_sign + SGX_EDGER8R := $(SGX_SDK)/bin/x64/sgx_edger8r +endif + +ifeq ($(SGX_DEBUG), 1) +ifeq ($(SGX_PRERELEASE), 1) +$(error Cannot set SGX_DEBUG and SGX_PRERELEASE at the same time!!) +endif +endif + +ifeq ($(SGX_DEBUG), 1) + SGX_COMMON_CFLAGS += -O0 -g +else + SGX_COMMON_CFLAGS += -O2 +endif + +######## App Settings ######## + +ifneq ($(SGX_MODE), HW) + Urts_Library_Name := sgx_urts_sim +else + Urts_Library_Name := sgx_urts +endif + +App_Cpp_Files := $(wildcard DRM_app/*.cpp) +App_Include_Paths := -I$(SGX_SDK)/include + +App_C_Flags := $(SGX_COMMON_CFLAGS) -fPIC -Wno-attributes $(App_Include_Paths) + +# Three configuration modes - Debug, prerelease, release +# Debug - Macro DEBUG enabled. +# Prerelease - Macro NDEBUG and EDEBUG enabled. +# Release - Macro NDEBUG enabled. +ifeq ($(SGX_DEBUG), 1) + App_C_Flags += -DDEBUG -UNDEBUG -UEDEBUG +else ifeq ($(SGX_PRERELEASE), 1) + App_C_Flags += -DNDEBUG -DEDEBUG -UDEBUG +else + App_C_Flags += -DNDEBUG -UEDEBUG -UDEBUG +endif + +App_Cpp_Flags := $(App_C_Flags) -std=c++11 +App_Link_Flags := $(SGX_COMMON_CFLAGS) -L$(SGX_LIBRARY_PATH) -l$(Urts_Library_Name) -L. -lpthread -Wl,-rpath=$(CURDIR)/sample_libcrypto -Wl,-rpath=$(CURDIR) + +ifneq ($(SGX_MODE), HW) + App_Link_Flags += -lsgx_uae_service_sim +else + App_Link_Flags += -lsgx_uae_service +endif + +App_Cpp_Objects := $(App_Cpp_Files:.cpp=.o) + +App_Name := app + +######## Enclave Settings ######## + +ifneq ($(SGX_MODE), HW) + Trts_Library_Name := sgx_trts_sim + Service_Library_Name := sgx_tservice_sim +else + Trts_Library_Name := sgx_trts + Service_Library_Name := sgx_tservice +endif +Crypto_Library_Name := sgx_tcrypto + +Enclave_Cpp_Files := DRM_enclave/DRM_enclave.cpp +Enclave_Include_Paths := -I$(SGX_SDK)/include -I$(SGX_SDK)/include/tlibc -I$(SGX_SDK)/include/stlport + +Enclave_C_Flags := $(SGX_COMMON_CFLAGS) -nostdinc -fvisibility=hidden -fpie -fstack-protector $(Enclave_Include_Paths) +Enclave_Cpp_Flags := $(Enclave_C_Flags) -std=c++03 -nostdinc++ + +# To generate a proper enclave, it is recommended to follow below guideline to link the trusted libraries: +# 1. Link sgx_trts with the `--whole-archive' and `--no-whole-archive' options, +# so that the whole content of trts is included in the enclave. +# 2. For other libraries, you just need to pull the required symbols. +# Use `--start-group' and `--end-group' to link these libraries. +# Do NOT move the libraries linked with `--start-group' and `--end-group' within `--whole-archive' and `--no-whole-archive' options. +# Otherwise, you may get some undesirable errors. +Enclave_Link_Flags := $(SGX_COMMON_CFLAGS) -Wl,--no-undefined -nostdlib -nodefaultlibs -nostartfiles -L$(SGX_LIBRARY_PATH) \ + -Wl,--whole-archive -l$(Trts_Library_Name) -Wl,--no-whole-archive \ + -Wl,--start-group -lsgx_tstdc -lsgx_tstdcxx -l$(Crypto_Library_Name) -l$(Service_Library_Name) -Wl,--end-group \ + -Wl,-Bstatic -Wl,-Bsymbolic -Wl,--no-undefined \ + -Wl,-pie,-eenclave_entry -Wl,--export-dynamic \ + -Wl,--defsym,__ImageBase=0 \ + -Wl,--version-script=DRM_enclave/DRM_enclave.lds + +Enclave_Cpp_Objects := $(Enclave_Cpp_Files:.cpp=.o) + +Enclave_Name := DRM_enclave.so +Signed_Enclave_Name := DRM_enclave.signed.so +Enclave_Config_File := DRM_enclave/DRM_enclave.config.xml + +ifeq ($(SGX_MODE), HW) +ifeq ($(SGX_DEBUG), 1) + Build_Mode = HW_DEBUG +else ifeq ($(SGX_PRERELEASE), 1) + Build_Mode = HW_PRERELEASE +else + Build_Mode = HW_RELEASE +endif +else +ifeq ($(SGX_DEBUG), 1) + Build_Mode = SIM_DEBUG +else ifeq ($(SGX_PRERELEASE), 1) + Build_Mode = SIM_PRERELEASE +else + Build_Mode = SIM_RELEASE +endif +endif + + +.PHONY: all run + +ifeq ($(Build_Mode), HW_RELEASE) +all: .config_$(Build_Mode)_$(SGX_ARCH) $(App_Name) $(Enclave_Name) + @echo "The project has been built in release hardware mode." + @echo "Please sign the $(Enclave_Name) first with your signing key before you run the $(App_Name) to launch and access the enclave." + @echo "To sign the enclave use the command:" + @echo " $(SGX_ENCLAVE_SIGNER) sign -key -enclave $(Enclave_Name) -out <$(Signed_Enclave_Name)> -config $(Enclave_Config_File)" + @echo "You can also sign the enclave using an external signing tool." + @echo "To build the project in simulation mode set SGX_MODE=SIM. To build the project in prerelease mode set SGX_PRERELEASE=1 and SGX_MODE=HW." +else +all: .config_$(Build_Mode)_$(SGX_ARCH) $(App_Name) $(Signed_Enclave_Name) +ifeq ($(Build_Mode), HW_DEBUG) + @echo "The project has been built in debug hardware mode." +else ifeq ($(Build_Mode), SIM_DEBUG) + @echo "The project has been built in debug simulation mode." +else ifeq ($(Build_Mode), HW_PRERELEASE) + @echo "The project has been built in pre-release hardware mode." +else ifeq ($(Build_Mode), SIM_PRERELEASE) + @echo "The project has been built in pre-release simulation mode." +else + @echo "The project has been built in release simulation mode." +endif +endif + +run: all +ifneq ($(Build_Mode), HW_RELEASE) + @$(CURDIR)/$(App_Name) + @echo "RUN => $(App_Name) [$(SGX_MODE)|$(SGX_ARCH), OK]" +endif + +.config_$(Build_Mode)_$(SGX_ARCH): + @rm -f .config_* $(App_Name) $(Enclave_Name) $(Signed_Enclave_Name) $(App_Cpp_Objects) DRM_app/DRM_enclave_u.* $(Enclave_Cpp_Objects) DRM_enclave/DRM_enclave_t.* + @touch .config_$(Build_Mode)_$(SGX_ARCH) + +######## App Objects ######## + +DRM_app/DRM_enclave_u.c: $(SGX_EDGER8R) DRM_enclave/DRM_enclave.edl + @cd DRM_app && $(SGX_EDGER8R) --untrusted ../DRM_enclave/DRM_enclave.edl --search-path ../DRM_enclave --search-path $(SGX_SDK)/include + @echo "GEN => $@" + +DRM_app/DRM_enclave_u.o: DRM_app/DRM_enclave_u.c + @$(CC) $(App_C_Flags) -c $< -o $@ + @echo "CC <= $<" + +DRM_app/%.o: DRM_app/%.cpp + @$(CXX) $(App_Cpp_Flags) -c $< -o $@ + @echo "CXX <= $<" + +$(App_Name): DRM_app/DRM_enclave_u.o $(App_Cpp_Objects) + @$(CXX) $^ -o $@ $(App_Link_Flags) + @echo "LINK => $@" + +######## Enclave Objects ######## + +DRM_enclave/DRM_enclave_t.c: $(SGX_EDGER8R) DRM_enclave/DRM_enclave.edl + @cd DRM_enclave && $(SGX_EDGER8R) --trusted ../DRM_enclave/DRM_enclave.edl --search-path ../DRM_enclave --search-path $(SGX_SDK)/include + @echo "GEN => $@" + +DRM_enclave/DRM_enclave_t.o: DRM_enclave/DRM_enclave_t.c + @$(CC) $(Enclave_C_Flags) -c $< -o $@ + @echo "CC <= $<" + +DRM_enclave/%.o: DRM_enclave/%.cpp + @$(CXX) $(Enclave_Cpp_Flags) -c $< -o $@ + @echo "CXX <= $<" + +$(Enclave_Name): DRM_enclave/DRM_enclave_t.o $(Enclave_Cpp_Objects) + @$(CXX) $^ -o $@ $(Enclave_Link_Flags) + @echo "LINK => $@" + +$(Signed_Enclave_Name): $(Enclave_Name) + @$(SGX_ENCLAVE_SIGNER) sign -key DRM_enclave/DRM_enclave_private.pem -enclave $(Enclave_Name) -out $@ -config $(Enclave_Config_File) + @echo "SIGN => $@" + +.PHONY: clean + +clean: + @rm -f .config_* $(App_Name) $(Enclave_Name) $(Signed_Enclave_Name) $(App_Cpp_Objects) DRM_app/DRM_enclave_u.* $(Enclave_Cpp_Objects) DRM_enclave/DRM_enclave_t.* diff --git a/SampleCode/SealedData/README.txt b/SampleCode/SealedData/README.txt new file mode 100644 index 00000000..2ca93a9c --- /dev/null +++ b/SampleCode/SealedData/README.txt @@ -0,0 +1,29 @@ +---------------------------- +Purpose of SealedData +---------------------------- +The project demonstrates: +- How an application enclave can encrypt and integrity-protect enclave secrets +to store them outside the enclave +- How an application enclave can use Monotonic Counter to implement +replay-protected policy, and Trusted Time to enforce time based policy + +------------------------------------ +How to Build/Execute the Sample Code +------------------------------------ +1. Install Intel(R) SGX SDK for Linux* OS +2. Build the project with the prepared Makefile: + a. Hardware Mode, Debug build: + $ make + b. Hardware Mode, Pre-release build: + $ make SGX_PRERELEASE=1 SGX_DEBUG=0 + c. Hardware Mode, Release build: + $ make SGX_DEBUG=0 + d. Simulation Mode, Debug build: + $ make SGX_MODE=SIM + e. Simulation Mode, Pre-release build: + $ make SGX_MODE=SIM SGX_PRERELEASE=1 SGX_DEBUG=0 + f. Simulation Mode, Release build: + $ make SGX_MODE=SIM SGX_DEBUG=0 +3. Execute the binary directly: + $ ./app +4. Remember to "make clean" before switching build mode diff --git a/SampleCode/SealedData/include/sealed_data_defines.h b/SampleCode/SealedData/include/sealed_data_defines.h new file mode 100644 index 00000000..dcf569cb --- /dev/null +++ b/SampleCode/SealedData/include/sealed_data_defines.h @@ -0,0 +1,57 @@ +/* + * Copyright (C) 2011-2017 Intel Corporation. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * * Neither the name of Intel Corporation nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + + + +#pragma once +#ifndef _SEALED_DATA_DEFINES_H_ +#define _SEALED_DATA_DEFINES_H_ + +#include "sgx_error.h" + +#define PLATFORM_SERVICE_DOWNGRADED 0xF001 + +#define REPLAY_DETECTED 0xF002 +#define MAX_RELEASE_REACHED 0xF003 + +/* equal to sgx_calc_sealed_data_size(0,sizeof(replay_protected_pay_load))) */ +#define SEALED_REPLAY_PROTECTED_PAY_LOAD_SIZE 620 +#define REPLAY_PROTECTED_PAY_LOAD_MAX_RELEASE_VERSION 5 + +#define TIMESOURCE_CHANGED 0xF004 +#define TIMESTAMP_UNEXPECTED 0xF005 +#define LEASE_EXPIRED 0xF006 + +/* equal tosgx_calc_sealed_data_size(0,sizeof(time_based_pay_load))) */ +#define TIME_BASED_PAY_LOAD_SIZE 624 +#define TIME_BASED_LEASE_DURATION_SECOND 3 + +#endif diff --git a/buildenv.mk b/buildenv.mk index a337f982..5d083475 100644 --- a/buildenv.mk +++ b/buildenv.mk @@ -1,5 +1,5 @@ # -# Copyright (C) 2011-2016 Intel Corporation. All rights reserved. +# Copyright (C) 2011-2017 Intel Corporation. All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions @@ -29,6 +29,7 @@ # # + # ----------------------------------------------------------------------------- # Function : parent-dir # Arguments: 1: path diff --git a/common/inc/internal/ae_ipp.h b/common/inc/internal/ae_ipp.h index 3fad09cd..dc652a5a 100644 --- a/common/inc/internal/ae_ipp.h +++ b/common/inc/internal/ae_ipp.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2016 Intel Corporation. All rights reserved. + * Copyright (C) 2011-2017 Intel Corporation. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/common/inc/internal/arch.h b/common/inc/internal/arch.h index 2486e017..40389f5a 100644 --- a/common/inc/internal/arch.h +++ b/common/inc/internal/arch.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2016 Intel Corporation. All rights reserved. + * Copyright (C) 2011-2017 Intel Corporation. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -44,13 +44,10 @@ #pragma pack(push, 1) -#if !defined(__cplusplus) || defined(__INTEL_COMPILER) || (defined(SE_GNU) && !defined(__GXX_EXPERIMENTAL_CXX0X__)) +#define STATIC_ASSERT_UNUSED_ATTRIBUTE __attribute__((unused)) #define _ASSERT_CONCAT(a, b) a##b #define ASSERT_CONCAT(a, b) _ASSERT_CONCAT(a, b) -#define se_static_assert(e) typedef char ASSERT_CONCAT(assert_line, __LINE__)[(e)?1:-1] -#else -#define se_static_assert(e) static_assert(e,#e) -#endif +#define se_static_assert(e) typedef char ASSERT_CONCAT(assert_line, __LINE__)[(e)?1:-1] STATIC_ASSERT_UNUSED_ATTRIBUTE se_static_assert(sizeof(sgx_key_request_t) == 512); se_static_assert(sizeof(sgx_target_info_t) == 512); diff --git a/common/inc/internal/cpprt_internal.h b/common/inc/internal/cpprt_internal.h index 7916930f..8bbda201 100644 --- a/common/inc/internal/cpprt_internal.h +++ b/common/inc/internal/cpprt_internal.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2016 Intel Corporation. All rights reserved. + * Copyright (C) 2011-2017 Intel Corporation. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/common/inc/internal/cpputil.h b/common/inc/internal/cpputil.h index 9a0cec13..e3375522 100644 --- a/common/inc/internal/cpputil.h +++ b/common/inc/internal/cpputil.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2016 Intel Corporation. All rights reserved. + * Copyright (C) 2011-2017 Intel Corporation. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/common/inc/internal/cpuid.h b/common/inc/internal/cpuid.h index b3ee8f5d..a16c45db 100644 --- a/common/inc/internal/cpuid.h +++ b/common/inc/internal/cpuid.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2016 Intel Corporation. All rights reserved. + * Copyright (C) 2011-2017 Intel Corporation. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/common/inc/internal/dh.h b/common/inc/internal/dh.h index 76c347f5..a3fff26a 100644 --- a/common/inc/internal/dh.h +++ b/common/inc/internal/dh.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2016 Intel Corporation. All rights reserved. + * Copyright (C) 2011-2017 Intel Corporation. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/common/inc/internal/driver_api.h b/common/inc/internal/driver_api.h index c0e20232..ba02aa4f 100644 --- a/common/inc/internal/driver_api.h +++ b/common/inc/internal/driver_api.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2016 Intel Corporation. All rights reserved. + * Copyright (C) 2011-2017 Intel Corporation. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/common/inc/internal/ecp_interface.h b/common/inc/internal/ecp_interface.h index d3b7515c..d3e11507 100644 --- a/common/inc/internal/ecp_interface.h +++ b/common/inc/internal/ecp_interface.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2016 Intel Corporation. All rights reserved. + * Copyright (C) 2011-2017 Intel Corporation. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/common/inc/internal/elf_util.h b/common/inc/internal/elf_util.h index 408c42f6..40296309 100644 --- a/common/inc/internal/elf_util.h +++ b/common/inc/internal/elf_util.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2016 Intel Corporation. All rights reserved. + * Copyright (C) 2011-2017 Intel Corporation. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/common/inc/internal/enclave_creator.h b/common/inc/internal/enclave_creator.h index c7f25088..3cc5c637 100644 --- a/common/inc/internal/enclave_creator.h +++ b/common/inc/internal/enclave_creator.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2016 Intel Corporation. All rights reserved. + * Copyright (C) 2011-2017 Intel Corporation. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/common/inc/internal/global_data.h b/common/inc/internal/global_data.h index be1e97ee..cdebf487 100644 --- a/common/inc/internal/global_data.h +++ b/common/inc/internal/global_data.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2016 Intel Corporation. All rights reserved. + * Copyright (C) 2011-2017 Intel Corporation. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/common/inc/internal/global_init.h b/common/inc/internal/global_init.h index d7a36530..5bee7de5 100644 --- a/common/inc/internal/global_init.h +++ b/common/inc/internal/global_init.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2016 Intel Corporation. All rights reserved. + * Copyright (C) 2011-2017 Intel Corporation. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/common/inc/internal/inst.h b/common/inc/internal/inst.h index cd09c5a9..d5af1200 100644 --- a/common/inc/internal/inst.h +++ b/common/inc/internal/inst.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2016 Intel Corporation. All rights reserved. + * Copyright (C) 2011-2017 Intel Corporation. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/common/inc/internal/ipp_wrapper.h b/common/inc/internal/ipp_wrapper.h index 242a041c..da6cb384 100644 --- a/common/inc/internal/ipp_wrapper.h +++ b/common/inc/internal/ipp_wrapper.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2016 Intel Corporation. All rights reserved. + * Copyright (C) 2011-2017 Intel Corporation. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/common/inc/internal/linux/cpuid_gnu.h b/common/inc/internal/linux/cpuid_gnu.h index 5fd90716..06473f92 100644 --- a/common/inc/internal/linux/cpuid_gnu.h +++ b/common/inc/internal/linux/cpuid_gnu.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2016 Intel Corporation. All rights reserved. + * Copyright (C) 2011-2017 Intel Corporation. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/common/inc/internal/linux/linux-regs.h b/common/inc/internal/linux/linux-regs.h index 1ebed387..b7396f38 100644 --- a/common/inc/internal/linux/linux-regs.h +++ b/common/inc/internal/linux/linux-regs.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2016 Intel Corporation. All rights reserved. + * Copyright (C) 2011-2017 Intel Corporation. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/common/inc/internal/linux/xsave_gnu.h b/common/inc/internal/linux/xsave_gnu.h index 5466ba5d..c653f0c8 100644 --- a/common/inc/internal/linux/xsave_gnu.h +++ b/common/inc/internal/linux/xsave_gnu.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2016 Intel Corporation. All rights reserved. + * Copyright (C) 2011-2017 Intel Corporation. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/common/inc/internal/metadata.h b/common/inc/internal/metadata.h index 031af632..1c7b1192 100644 --- a/common/inc/internal/metadata.h +++ b/common/inc/internal/metadata.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2016 Intel Corporation. All rights reserved. + * Copyright (C) 2011-2017 Intel Corporation. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/common/inc/internal/oal/uae_oal_api.h b/common/inc/internal/oal/uae_oal_api.h index 42c917dd..8d305d00 100644 --- a/common/inc/internal/oal/uae_oal_api.h +++ b/common/inc/internal/oal/uae_oal_api.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2016 Intel Corporation. All rights reserved. + * Copyright (C) 2011-2017 Intel Corporation. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/common/inc/internal/routine.h b/common/inc/internal/routine.h index c753b2e2..dd0e6b7c 100644 --- a/common/inc/internal/routine.h +++ b/common/inc/internal/routine.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2016 Intel Corporation. All rights reserved. + * Copyright (C) 2011-2017 Intel Corporation. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/common/inc/internal/rts.h b/common/inc/internal/rts.h index 61a77115..2d62d92d 100644 --- a/common/inc/internal/rts.h +++ b/common/inc/internal/rts.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2016 Intel Corporation. All rights reserved. + * Copyright (C) 2011-2017 Intel Corporation. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/common/inc/internal/rts_cmd.h b/common/inc/internal/rts_cmd.h index 671c2c90..8eaea8c6 100644 --- a/common/inc/internal/rts_cmd.h +++ b/common/inc/internal/rts_cmd.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2016 Intel Corporation. All rights reserved. + * Copyright (C) 2011-2017 Intel Corporation. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/common/inc/internal/se_atomic.h b/common/inc/internal/se_atomic.h index f4de235e..c471ea26 100644 --- a/common/inc/internal/se_atomic.h +++ b/common/inc/internal/se_atomic.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2016 Intel Corporation. All rights reserved. + * Copyright (C) 2011-2017 Intel Corporation. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -35,26 +35,24 @@ inline uint32_t se_atomic_inc(volatile uint32_t *mem) { - int ret; - - __asm__ __volatile__ ("lock; xaddl %0, %1" - : "=r" (ret), "=m" (*mem) - : "0" (1), "m" (*mem) - ); - - return ret + 1; + return __sync_add_and_fetch(mem, 1); } inline uint32_t se_atomic_dec(uint32_t volatile *mem) { - int ret; - - __asm__ __volatile__ ("lock; xaddl %0, %1" - : "=r" (ret), "=m" (*mem) - : "0" (-1), "m" (*mem) - ); - - return ret - 1; + return __sync_sub_and_fetch(mem, 1); } +inline uint64_t se_atomic_inc64(volatile uint64_t *mem) +{ + return __sync_add_and_fetch(mem, 1); +} + +inline uint64_t se_atomic_dec64(uint64_t volatile *mem) +{ + return __sync_sub_and_fetch(mem, 1); +} + + + #endif diff --git a/common/inc/internal/se_cdefs.h b/common/inc/internal/se_cdefs.h index 12be8081..2eb2cdf0 100644 --- a/common/inc/internal/se_cdefs.h +++ b/common/inc/internal/se_cdefs.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2016 Intel Corporation. All rights reserved. + * Copyright (C) 2011-2017 Intel Corporation. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/common/inc/internal/se_cpu_feature.h b/common/inc/internal/se_cpu_feature.h index 8b3edbfa..48e281a6 100644 --- a/common/inc/internal/se_cpu_feature.h +++ b/common/inc/internal/se_cpu_feature.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2016 Intel Corporation. All rights reserved. + * Copyright (C) 2011-2017 Intel Corporation. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/common/inc/internal/se_cpu_feature_defs.h b/common/inc/internal/se_cpu_feature_defs.h index 20983b96..581168f2 100644 --- a/common/inc/internal/se_cpu_feature_defs.h +++ b/common/inc/internal/se_cpu_feature_defs.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2016 Intel Corporation. All rights reserved. + * Copyright (C) 2011-2017 Intel Corporation. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/common/inc/internal/se_debugger_lib.h b/common/inc/internal/se_debugger_lib.h index 97e4e365..c9eb6c40 100644 --- a/common/inc/internal/se_debugger_lib.h +++ b/common/inc/internal/se_debugger_lib.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2016 Intel Corporation. All rights reserved. + * Copyright (C) 2011-2017 Intel Corporation. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/common/inc/internal/se_enclave_type.h b/common/inc/internal/se_enclave_type.h index bd450e39..f3c24f75 100644 --- a/common/inc/internal/se_enclave_type.h +++ b/common/inc/internal/se_enclave_type.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2016 Intel Corporation. All rights reserved. + * Copyright (C) 2011-2017 Intel Corporation. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/common/inc/internal/se_error_internal.h b/common/inc/internal/se_error_internal.h index b98aed81..4f4e493e 100644 --- a/common/inc/internal/se_error_internal.h +++ b/common/inc/internal/se_error_internal.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2016 Intel Corporation. All rights reserved. + * Copyright (C) 2011-2017 Intel Corporation. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/common/inc/internal/se_event.h b/common/inc/internal/se_event.h index 3672fd32..354f78c5 100644 --- a/common/inc/internal/se_event.h +++ b/common/inc/internal/se_event.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2016 Intel Corporation. All rights reserved. + * Copyright (C) 2011-2017 Intel Corporation. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/common/inc/internal/se_lock.hpp b/common/inc/internal/se_lock.hpp index 68aedf2c..c7bd1d16 100644 --- a/common/inc/internal/se_lock.hpp +++ b/common/inc/internal/se_lock.hpp @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2016 Intel Corporation. All rights reserved. + * Copyright (C) 2011-2017 Intel Corporation. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/common/inc/internal/se_macro.h b/common/inc/internal/se_macro.h index 4b465ac7..fbf353b1 100644 --- a/common/inc/internal/se_macro.h +++ b/common/inc/internal/se_macro.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2016 Intel Corporation. All rights reserved. + * Copyright (C) 2011-2017 Intel Corporation. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/common/inc/internal/se_map.h b/common/inc/internal/se_map.h index 2b1889a8..69234f12 100644 --- a/common/inc/internal/se_map.h +++ b/common/inc/internal/se_map.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2016 Intel Corporation. All rights reserved. + * Copyright (C) 2011-2017 Intel Corporation. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/common/inc/internal/se_memcpy.h b/common/inc/internal/se_memcpy.h index f7cd2599..ce2984b6 100644 --- a/common/inc/internal/se_memcpy.h +++ b/common/inc/internal/se_memcpy.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2016 Intel Corporation. All rights reserved. + * Copyright (C) 2011-2017 Intel Corporation. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/common/inc/internal/se_memory.h b/common/inc/internal/se_memory.h index 9b707e00..25737d35 100644 --- a/common/inc/internal/se_memory.h +++ b/common/inc/internal/se_memory.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2016 Intel Corporation. All rights reserved. + * Copyright (C) 2011-2017 Intel Corporation. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/common/inc/internal/se_page_attr.h b/common/inc/internal/se_page_attr.h index 9bafac8a..1a27b54e 100644 --- a/common/inc/internal/se_page_attr.h +++ b/common/inc/internal/se_page_attr.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2016 Intel Corporation. All rights reserved. + * Copyright (C) 2011-2017 Intel Corporation. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/common/inc/internal/se_quote_internal.h b/common/inc/internal/se_quote_internal.h index ab2ea160..73d2368f 100644 --- a/common/inc/internal/se_quote_internal.h +++ b/common/inc/internal/se_quote_internal.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2016 Intel Corporation. All rights reserved. + * Copyright (C) 2011-2017 Intel Corporation. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/common/inc/internal/se_rwlock.h b/common/inc/internal/se_rwlock.h index 62e15b60..6f4b5c54 100644 --- a/common/inc/internal/se_rwlock.h +++ b/common/inc/internal/se_rwlock.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2016 Intel Corporation. All rights reserved. + * Copyright (C) 2011-2017 Intel Corporation. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/common/inc/internal/se_stdio.h b/common/inc/internal/se_stdio.h index 9f5dc3ad..d516142d 100644 --- a/common/inc/internal/se_stdio.h +++ b/common/inc/internal/se_stdio.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2016 Intel Corporation. All rights reserved. + * Copyright (C) 2011-2017 Intel Corporation. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/common/inc/internal/se_string.h b/common/inc/internal/se_string.h index e5185617..b36c2925 100644 --- a/common/inc/internal/se_string.h +++ b/common/inc/internal/se_string.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2016 Intel Corporation. All rights reserved. + * Copyright (C) 2011-2017 Intel Corporation. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/common/inc/internal/se_thread.h b/common/inc/internal/se_thread.h index d6432b80..bac13d94 100644 --- a/common/inc/internal/se_thread.h +++ b/common/inc/internal/se_thread.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2016 Intel Corporation. All rights reserved. + * Copyright (C) 2011-2017 Intel Corporation. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/common/inc/internal/se_time.h b/common/inc/internal/se_time.h index d1492021..d623ee2c 100644 --- a/common/inc/internal/se_time.h +++ b/common/inc/internal/se_time.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2016 Intel Corporation. All rights reserved. + * Copyright (C) 2011-2017 Intel Corporation. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/common/inc/internal/se_trace.h b/common/inc/internal/se_trace.h index 68967939..bae26309 100644 --- a/common/inc/internal/se_trace.h +++ b/common/inc/internal/se_trace.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2016 Intel Corporation. All rights reserved. + * Copyright (C) 2011-2017 Intel Corporation. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/common/inc/internal/se_types.h b/common/inc/internal/se_types.h index c3b29e04..f5e41469 100644 --- a/common/inc/internal/se_types.h +++ b/common/inc/internal/se_types.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2016 Intel Corporation. All rights reserved. + * Copyright (C) 2011-2017 Intel Corporation. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/common/inc/internal/se_vendor.h b/common/inc/internal/se_vendor.h index ce2f1674..2896f6be 100644 --- a/common/inc/internal/se_vendor.h +++ b/common/inc/internal/se_vendor.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2016 Intel Corporation. All rights reserved. + * Copyright (C) 2011-2017 Intel Corporation. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/common/inc/internal/se_version.h b/common/inc/internal/se_version.h index 84814cfc..7b69f591 100644 --- a/common/inc/internal/se_version.h +++ b/common/inc/internal/se_version.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2016 Intel Corporation. All rights reserved. + * Copyright (C) 2011-2017 Intel Corporation. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -28,5 +28,5 @@ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * */ -#define STRFILEVER "1.7.100.36470" +#define STRFILEVER "1.8.100.37689" diff --git a/common/inc/internal/se_wrapper.h b/common/inc/internal/se_wrapper.h index 0edf25d8..c2cb3a89 100644 --- a/common/inc/internal/se_wrapper.h +++ b/common/inc/internal/se_wrapper.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2016 Intel Corporation. All rights reserved. + * Copyright (C) 2011-2017 Intel Corporation. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/common/inc/internal/sgx_memset_s.h b/common/inc/internal/sgx_memset_s.h index 64956b38..2324513a 100644 --- a/common/inc/internal/sgx_memset_s.h +++ b/common/inc/internal/sgx_memset_s.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2016 Intel Corporation. All rights reserved. + * Copyright (C) 2011-2017 Intel Corporation. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/common/inc/internal/sgx_profile.h b/common/inc/internal/sgx_profile.h index 3c83d1a3..07c3e086 100644 --- a/common/inc/internal/sgx_profile.h +++ b/common/inc/internal/sgx_profile.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2016 Intel Corporation. All rights reserved. + * Copyright (C) 2011-2017 Intel Corporation. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/common/inc/internal/sgx_read_rand.h b/common/inc/internal/sgx_read_rand.h index 05d79861..6aa17801 100644 --- a/common/inc/internal/sgx_read_rand.h +++ b/common/inc/internal/sgx_read_rand.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2016 Intel Corporation. All rights reserved. + * Copyright (C) 2011-2017 Intel Corporation. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/common/inc/internal/sgx_sha256_128.h b/common/inc/internal/sgx_sha256_128.h index 52602d0e..03882b51 100644 --- a/common/inc/internal/sgx_sha256_128.h +++ b/common/inc/internal/sgx_sha256_128.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2016 Intel Corporation. All rights reserved. + * Copyright (C) 2011-2017 Intel Corporation. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/common/inc/internal/sgx_tcrypto_internal.h b/common/inc/internal/sgx_tcrypto_internal.h index 666b3612..4924041c 100644 --- a/common/inc/internal/sgx_tcrypto_internal.h +++ b/common/inc/internal/sgx_tcrypto_internal.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2016 Intel Corporation. All rights reserved. + * Copyright (C) 2011-2017 Intel Corporation. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -34,11 +34,6 @@ #include "sgx_tcrypto.h" -typedef struct _sgx_ec256_dh_shared512_t -{ - uint8_t x[SGX_ECP256_KEY_SIZE]; - uint8_t y[SGX_ECP256_KEY_SIZE]; -} sgx_ec256_dh_shared512_t; #ifdef __cplusplus extern "C" { diff --git a/common/inc/internal/tae_service_internal.h b/common/inc/internal/tae_service_internal.h index 948402c2..f707574f 100644 --- a/common/inc/internal/tae_service_internal.h +++ b/common/inc/internal/tae_service_internal.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2016 Intel Corporation. All rights reserved. + * Copyright (C) 2011-2017 Intel Corporation. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/common/inc/internal/thread_data.h b/common/inc/internal/thread_data.h index da2bfe7a..aee91226 100644 --- a/common/inc/internal/thread_data.h +++ b/common/inc/internal/thread_data.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2016 Intel Corporation. All rights reserved. + * Copyright (C) 2011-2017 Intel Corporation. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/common/inc/internal/trts_inst.h b/common/inc/internal/trts_inst.h index 09ed8ae9..c7a30bd9 100644 --- a/common/inc/internal/trts_inst.h +++ b/common/inc/internal/trts_inst.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2016 Intel Corporation. All rights reserved. + * Copyright (C) 2011-2017 Intel Corporation. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/common/inc/internal/uae_service_internal.h b/common/inc/internal/uae_service_internal.h index 75428cad..ab929f55 100644 --- a/common/inc/internal/uae_service_internal.h +++ b/common/inc/internal/uae_service_internal.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2016 Intel Corporation. All rights reserved. + * Copyright (C) 2011-2017 Intel Corporation. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/common/inc/internal/uncopyable.h b/common/inc/internal/uncopyable.h index b271953f..a34f8b6f 100644 --- a/common/inc/internal/uncopyable.h +++ b/common/inc/internal/uncopyable.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2016 Intel Corporation. All rights reserved. + * Copyright (C) 2011-2017 Intel Corporation. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/common/inc/internal/util.h b/common/inc/internal/util.h index ce066ec3..2920cfcc 100644 --- a/common/inc/internal/util.h +++ b/common/inc/internal/util.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2016 Intel Corporation. All rights reserved. + * Copyright (C) 2011-2017 Intel Corporation. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/common/inc/internal/xsave.h b/common/inc/internal/xsave.h index 431d4535..53adb63e 100644 --- a/common/inc/internal/xsave.h +++ b/common/inc/internal/xsave.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2016 Intel Corporation. All rights reserved. + * Copyright (C) 2011-2017 Intel Corporation. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/common/inc/sgx.h b/common/inc/sgx.h index 7695c65d..47fc9f16 100644 --- a/common/inc/sgx.h +++ b/common/inc/sgx.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2016 Intel Corporation. All rights reserved. + * Copyright (C) 2011-2017 Intel Corporation. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/common/inc/sgx_attributes.h b/common/inc/sgx_attributes.h index 665ce885..8d2597e2 100644 --- a/common/inc/sgx_attributes.h +++ b/common/inc/sgx_attributes.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2016 Intel Corporation. All rights reserved. + * Copyright (C) 2011-2017 Intel Corporation. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -39,8 +39,8 @@ #define SGX_FLAGS_DEBUG 0x0000000000000002ULL /* If set, then the enclave is debug */ #define SGX_FLAGS_MODE64BIT 0x0000000000000004ULL /* If set, then the enclave is 64 bit */ #define SGX_FLAGS_PROVISION_KEY 0x0000000000000010ULL /* If set, then the enclave has access to provision key */ -#define SGX_FLAGS_EINITOKEN_KEY 0x0000000000000020ULL /* If set, then the enclave has access to EINITOKEN key */ -#define SGX_FLAGS_RESERVED (~(SGX_FLAGS_INITTED | SGX_FLAGS_DEBUG | SGX_FLAGS_MODE64BIT | SGX_FLAGS_PROVISION_KEY | SGX_FLAGS_EINITOKEN_KEY)) +#define SGX_FLAGS_EINITTOKEN_KEY 0x0000000000000020ULL /* If set, then the enclave has access to EINITTOKEN key */ +#define SGX_FLAGS_RESERVED (~(SGX_FLAGS_INITTED | SGX_FLAGS_DEBUG | SGX_FLAGS_MODE64BIT | SGX_FLAGS_PROVISION_KEY | SGX_FLAGS_EINITTOKEN_KEY)) /* XSAVE Feature Request Mask */ #define SGX_XFRM_LEGACY 0x0000000000000003ULL /* Legacy XFRM */ diff --git a/common/inc/sgx_cpuid.h b/common/inc/sgx_cpuid.h index 2d422128..d0bb8f03 100644 --- a/common/inc/sgx_cpuid.h +++ b/common/inc/sgx_cpuid.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2016 Intel Corporation. All rights reserved. + * Copyright (C) 2011-2017 Intel Corporation. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/common/inc/sgx_defs.h b/common/inc/sgx_defs.h index 4b0a6582..6a3a6d28 100644 --- a/common/inc/sgx_defs.h +++ b/common/inc/sgx_defs.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2016 Intel Corporation. All rights reserved. + * Copyright (C) 2011-2017 Intel Corporation. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/common/inc/sgx_dh.h b/common/inc/sgx_dh.h index 9860271a..f7f14de1 100644 --- a/common/inc/sgx_dh.h +++ b/common/inc/sgx_dh.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2016 Intel Corporation. All rights reserved. + * Copyright (C) 2011-2017 Intel Corporation. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/common/inc/sgx_ecp_types.h b/common/inc/sgx_ecp_types.h index ef935d10..833440a1 100644 --- a/common/inc/sgx_ecp_types.h +++ b/common/inc/sgx_ecp_types.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2016 Intel Corporation. All rights reserved. + * Copyright (C) 2011-2017 Intel Corporation. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/common/inc/sgx_edger8r.h b/common/inc/sgx_edger8r.h index f3da7873..5d159a7b 100644 --- a/common/inc/sgx_edger8r.h +++ b/common/inc/sgx_edger8r.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2016 Intel Corporation. All rights reserved. + * Copyright (C) 2011-2017 Intel Corporation. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/common/inc/sgx_eid.h b/common/inc/sgx_eid.h index ea2dfc6e..b47273c7 100644 --- a/common/inc/sgx_eid.h +++ b/common/inc/sgx_eid.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2016 Intel Corporation. All rights reserved. + * Copyright (C) 2011-2017 Intel Corporation. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/common/inc/sgx_error.h b/common/inc/sgx_error.h index d093fd8a..1b86deca 100644 --- a/common/inc/sgx_error.h +++ b/common/inc/sgx_error.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2016 Intel Corporation. All rights reserved. + * Copyright (C) 2011-2017 Intel Corporation. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -86,6 +86,18 @@ typedef enum _status_t SGX_ERROR_MC_USED_UP = SGX_MK_ERROR(0x400e), /* Monotonic counters are used out */ SGX_ERROR_MC_OVER_QUOTA = SGX_MK_ERROR(0x400f), /* Monotonic counters exceeds quota limitation */ SGX_ERROR_KDF_MISMATCH = SGX_MK_ERROR(0x4011), /* Key derivation function doesn't match during key exchange */ + SGX_ERROR_UNRECOGNIZED_PLATFORM = SGX_MK_ERROR(0x4012), /* EPID Provisioning failed due to platform not recognized by backend server*/ + + /* SGX errors are only used in the file API when there is no appropriate EXXX (EINVAL, EIO etc.) error code */ + SGX_ERROR_FILE_BAD_STATUS = SGX_MK_ERROR(0x7001), /* The file is in bad status, run sgx_clearerr to try and fix it */ + SGX_ERROR_FILE_NO_KEY_ID = SGX_MK_ERROR(0x7002), /* The Key ID field is all zeros, can't re-generate the encryption key */ + SGX_ERROR_FILE_NAME_MISMATCH = SGX_MK_ERROR(0x7003), /* The current file name is different then the original file name (not allowed, substitution attack) */ + SGX_ERROR_FILE_NOT_SGX_FILE = SGX_MK_ERROR(0x7004), /* The file is not an SGX file */ + SGX_ERROR_FILE_CANT_OPEN_RECOVERY_FILE = SGX_MK_ERROR(0x7005), /* A recovery file can't be opened, so flush operation can't continue (only used when no EXXX is returned) */ + SGX_ERROR_FILE_CANT_WRITE_RECOVERY_FILE = SGX_MK_ERROR(0x7006), /* A recovery file can't be written, so flush operation can't continue (only used when no EXXX is returned) */ + SGX_ERROR_FILE_RECOVERY_NEEDED = SGX_MK_ERROR(0x7007), /* When openeing the file, recovery is needed, but the recovery process failed */ + SGX_ERROR_FILE_FLUSH_FAILED = SGX_MK_ERROR(0x7008), /* fflush operation (to disk) failed (only used when no EXXX is returned) */ + SGX_ERROR_FILE_CLOSE_FAILED = SGX_MK_ERROR(0x7009), /* fclose operation (to disk) failed (only used when no EXXX is returned) */ } sgx_status_t; diff --git a/common/inc/sgx_intrin.h b/common/inc/sgx_intrin.h index 237a1cd6..253a68e8 100644 --- a/common/inc/sgx_intrin.h +++ b/common/inc/sgx_intrin.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2016 Intel Corporation. All rights reserved. + * Copyright (C) 2011-2017 Intel Corporation. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/common/inc/sgx_key.h b/common/inc/sgx_key.h index b6077478..113b7203 100644 --- a/common/inc/sgx_key.h +++ b/common/inc/sgx_key.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2016 Intel Corporation. All rights reserved. + * Copyright (C) 2011-2017 Intel Corporation. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -43,7 +43,7 @@ #include "sgx_attributes.h" /* Key Name */ -#define SGX_KEYSELECT_EINITOKEN 0x0000 +#define SGX_KEYSELECT_EINITTOKEN 0x0000 #define SGX_KEYSELECT_PROVISION 0x0001 #define SGX_KEYSELECT_PROVISION_SEAL 0x0002 #define SGX_KEYSELECT_REPORT 0x0003 diff --git a/common/inc/sgx_key_exchange.h b/common/inc/sgx_key_exchange.h index 570945f0..be065b56 100644 --- a/common/inc/sgx_key_exchange.h +++ b/common/inc/sgx_key_exchange.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2016 Intel Corporation. All rights reserved. + * Copyright (C) 2011-2017 Intel Corporation. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/common/inc/sgx_quote.h b/common/inc/sgx_quote.h index aec125e8..8c85b54c 100644 --- a/common/inc/sgx_quote.h +++ b/common/inc/sgx_quote.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2016 Intel Corporation. All rights reserved. + * Copyright (C) 2011-2017 Intel Corporation. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/common/inc/sgx_report.h b/common/inc/sgx_report.h index 8d260873..9be21651 100644 --- a/common/inc/sgx_report.h +++ b/common/inc/sgx_report.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2016 Intel Corporation. All rights reserved. + * Copyright (C) 2011-2017 Intel Corporation. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/common/inc/sgx_spinlock.h b/common/inc/sgx_spinlock.h index 77d80848..87562c95 100644 --- a/common/inc/sgx_spinlock.h +++ b/common/inc/sgx_spinlock.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2016 Intel Corporation. All rights reserved. + * Copyright (C) 2011-2017 Intel Corporation. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/common/inc/sgx_tae_service.edl b/common/inc/sgx_tae_service.edl index 9b19a802..46fcf33b 100644 --- a/common/inc/sgx_tae_service.edl +++ b/common/inc/sgx_tae_service.edl @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2016 Intel Corporation. All rights reserved. + * Copyright (C) 2011-2017 Intel Corporation. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/common/inc/sgx_tae_service.h b/common/inc/sgx_tae_service.h index 687f2306..7887b9cd 100644 --- a/common/inc/sgx_tae_service.h +++ b/common/inc/sgx_tae_service.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2016 Intel Corporation. All rights reserved. + * Copyright (C) 2011-2017 Intel Corporation. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -68,6 +68,14 @@ typedef struct _ps_sec_prop_desc uint8_t sgx_ps_sec_prop_desc[256]; } sgx_ps_sec_prop_desc_t; +typedef struct _ps_sec_prop_desc_ex +{ + sgx_ps_sec_prop_desc_t ps_sec_prop_desc; + sgx_measurement_t pse_mrsigner; + sgx_prod_id_t pse_prod_id; + sgx_isv_svn_t pse_isv_svn; +} sgx_ps_sec_prop_desc_ex_t; + #pragma pack(pop) /* create a session, call it before using Platform Service */ @@ -79,6 +87,9 @@ sgx_status_t SGXAPI sgx_close_pse_session(void); /* get a data structure describing the Security Property of the Platform Service */ sgx_status_t SGXAPI sgx_get_ps_sec_prop(sgx_ps_sec_prop_desc_t* security_property); +/* get a data structure describing the Security Property of the Platform Service */ +sgx_status_t SGXAPI sgx_get_ps_sec_prop_ex(sgx_ps_sec_prop_desc_ex_t* security_property); + /* provides the trusted platform current time */ sgx_status_t SGXAPI sgx_get_trusted_time( sgx_time_t* current_time, diff --git a/common/inc/sgx_tcrypto.h b/common/inc/sgx_tcrypto.h index 8ecf0b32..3d581fd1 100644 --- a/common/inc/sgx_tcrypto.h +++ b/common/inc/sgx_tcrypto.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2016 Intel Corporation. All rights reserved. + * Copyright (C) 2011-2017 Intel Corporation. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -58,6 +58,12 @@ typedef struct _sgx_ec256_dh_shared_t uint8_t s[SGX_ECP256_KEY_SIZE]; } sgx_ec256_dh_shared_t; +typedef struct _sgx_ec256_dh_shared512_t +{ + uint8_t x[SGX_ECP256_KEY_SIZE]; + uint8_t y[SGX_ECP256_KEY_SIZE]; +} sgx_ec256_dh_shared512_t; + typedef struct _sgx_ec256_private_t { uint8_t r[SGX_ECP256_KEY_SIZE]; @@ -514,6 +520,19 @@ extern "C" { sgx_ec256_dh_shared_t *p_shared_key, sgx_ecc_state_handle_t ecc_handle); + /* Computes 512-bit DH shared key based on private B key (local) and remote public Ga Key + * Parameters: + * Return: sgx_status_t - SGX_SUCCESS or failure as defined in sgx_error.h + * Inputs: sgx_ecc_state_handle_t ecc_handle - Handle to the ECC crypto system + * sgx_ec256_private_t *p_private_b - Pointer to the local private key + * sgx_ec256_public_t *p_public_ga - Pointer to the remote public key + * Output: sgx_ec256_dh_shared512_t *p_shared_key - Pointer to the 512-bit shared DH key + */ + sgx_status_t SGXAPI sgx_ecc256_compute_shared_dhkey512(sgx_ec256_private_t *p_private_b, + sgx_ec256_public_t *p_public_ga, + sgx_ec256_dh_shared512_t *p_shared_key, + sgx_ecc_state_handle_t ecc_handle); + /** Computes signature for data based on private key. * * A message digest is a fixed size number derived from the original message with diff --git a/common/inc/sgx_thread.h b/common/inc/sgx_thread.h index ee0274c9..f29856d3 100644 --- a/common/inc/sgx_thread.h +++ b/common/inc/sgx_thread.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2016 Intel Corporation. All rights reserved. + * Copyright (C) 2011-2017 Intel Corporation. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/common/inc/sgx_tkey_exchange.edl b/common/inc/sgx_tkey_exchange.edl index 179418d0..fa231e94 100644 --- a/common/inc/sgx_tkey_exchange.edl +++ b/common/inc/sgx_tkey_exchange.edl @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2016 Intel Corporation. All rights reserved. + * Copyright (C) 2011-2017 Intel Corporation. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/common/inc/sgx_tkey_exchange.h b/common/inc/sgx_tkey_exchange.h index eb8e27f6..c0ace5f7 100644 --- a/common/inc/sgx_tkey_exchange.h +++ b/common/inc/sgx_tkey_exchange.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2016 Intel Corporation. All rights reserved. + * Copyright (C) 2011-2017 Intel Corporation. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/common/inc/sgx_trts.h b/common/inc/sgx_trts.h index 1a669f78..de559214 100644 --- a/common/inc/sgx_trts.h +++ b/common/inc/sgx_trts.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2016 Intel Corporation. All rights reserved. + * Copyright (C) 2011-2017 Intel Corporation. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/common/inc/sgx_trts_exception.h b/common/inc/sgx_trts_exception.h index 41280aff..f0dc5459 100644 --- a/common/inc/sgx_trts_exception.h +++ b/common/inc/sgx_trts_exception.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2016 Intel Corporation. All rights reserved. + * Copyright (C) 2011-2017 Intel Corporation. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/common/inc/sgx_tseal.h b/common/inc/sgx_tseal.h index fa932278..7cee008f 100644 --- a/common/inc/sgx_tseal.h +++ b/common/inc/sgx_tseal.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2016 Intel Corporation. All rights reserved. + * Copyright (C) 2011-2017 Intel Corporation. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/common/inc/sgx_tstdc.edl b/common/inc/sgx_tstdc.edl index e92e2218..e5cd26f0 100644 --- a/common/inc/sgx_tstdc.edl +++ b/common/inc/sgx_tstdc.edl @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2016 Intel Corporation. All rights reserved. + * Copyright (C) 2011-2017 Intel Corporation. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/common/inc/sgx_uae_service.h b/common/inc/sgx_uae_service.h index ff668b13..2bfead8b 100644 --- a/common/inc/sgx_uae_service.h +++ b/common/inc/sgx_uae_service.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2016 Intel Corporation. All rights reserved. + * Copyright (C) 2011-2017 Intel Corporation. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/common/inc/sgx_ukey_exchange.h b/common/inc/sgx_ukey_exchange.h index 0f1e79f5..331a484e 100644 --- a/common/inc/sgx_ukey_exchange.h +++ b/common/inc/sgx_ukey_exchange.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2016 Intel Corporation. All rights reserved. + * Copyright (C) 2011-2017 Intel Corporation. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/common/inc/sgx_urts.h b/common/inc/sgx_urts.h index c1bfa651..f90a2d08 100644 --- a/common/inc/sgx_urts.h +++ b/common/inc/sgx_urts.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2016 Intel Corporation. All rights reserved. + * Copyright (C) 2011-2017 Intel Corporation. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/common/inc/sgx_utils.h b/common/inc/sgx_utils.h index 0d8420b7..37b600b3 100644 --- a/common/inc/sgx_utils.h +++ b/common/inc/sgx_utils.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2016 Intel Corporation. All rights reserved. + * Copyright (C) 2011-2017 Intel Corporation. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/common/inc/stdc++/exception b/common/inc/stdc++/exception index 0389bfd1..5a0118c4 100644 --- a/common/inc/stdc++/exception +++ b/common/inc/stdc++/exception @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2016 Intel Corporation. All rights reserved. + * Copyright (C) 2011-2017 Intel Corporation. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/common/inc/stdc++/new b/common/inc/stdc++/new index fbf11fb6..b120435f 100644 --- a/common/inc/stdc++/new +++ b/common/inc/stdc++/new @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2016 Intel Corporation. All rights reserved. + * Copyright (C) 2011-2017 Intel Corporation. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/common/inc/stdc++/typeinfo b/common/inc/stdc++/typeinfo index fa9c05e7..0496dec6 100644 --- a/common/inc/stdc++/typeinfo +++ b/common/inc/stdc++/typeinfo @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2016 Intel Corporation. All rights reserved. + * Copyright (C) 2011-2017 Intel Corporation. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/common/se_wrapper/Makefile b/common/se_wrapper/Makefile index 0cf6f20e..d1481ebd 100644 --- a/common/se_wrapper/Makefile +++ b/common/se_wrapper/Makefile @@ -1,5 +1,5 @@ # -# Copyright (C) 2011-2016 Intel Corporation. All rights reserved. +# Copyright (C) 2011-2017 Intel Corporation. All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions diff --git a/common/src/dh.cpp b/common/src/dh.cpp index 6b01601b..72079de9 100644 --- a/common/src/dh.cpp +++ b/common/src/dh.cpp @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2016 Intel Corporation. All rights reserved. + * Copyright (C) 2011-2017 Intel Corporation. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/common/src/ecp.cpp b/common/src/ecp.cpp index ea632f94..c542106b 100644 --- a/common/src/ecp.cpp +++ b/common/src/ecp.cpp @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2016 Intel Corporation. All rights reserved. + * Copyright (C) 2011-2017 Intel Corporation. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/common/src/ipp_bn.cpp b/common/src/ipp_bn.cpp index 03b7cb68..853b23c7 100644 --- a/common/src/ipp_bn.cpp +++ b/common/src/ipp_bn.cpp @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2016 Intel Corporation. All rights reserved. + * Copyright (C) 2011-2017 Intel Corporation. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/common/src/ipp_rsa_key.cpp b/common/src/ipp_rsa_key.cpp index e1ccd551..acf0ecee 100644 --- a/common/src/ipp_rsa_key.cpp +++ b/common/src/ipp_rsa_key.cpp @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2016 Intel Corporation. All rights reserved. + * Copyright (C) 2011-2017 Intel Corporation. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/common/src/ipp_rsa_pub_key.cpp b/common/src/ipp_rsa_pub_key.cpp index dfc3fc34..a7cc4ae6 100644 --- a/common/src/ipp_rsa_pub_key.cpp +++ b/common/src/ipp_rsa_pub_key.cpp @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2016 Intel Corporation. All rights reserved. + * Copyright (C) 2011-2017 Intel Corporation. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/common/src/se_event.c b/common/src/se_event.c index 132e48b2..290c06b5 100644 --- a/common/src/se_event.c +++ b/common/src/se_event.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2016 Intel Corporation. All rights reserved. + * Copyright (C) 2011-2017 Intel Corporation. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/common/src/se_map.c b/common/src/se_map.c index 687d0350..4041bd11 100644 --- a/common/src/se_map.c +++ b/common/src/se_map.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2016 Intel Corporation. All rights reserved. + * Copyright (C) 2011-2017 Intel Corporation. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/common/src/se_memory.c b/common/src/se_memory.c index d860b6bc..afc447c0 100644 --- a/common/src/se_memory.c +++ b/common/src/se_memory.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2016 Intel Corporation. All rights reserved. + * Copyright (C) 2011-2017 Intel Corporation. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/common/src/se_rwlock.c b/common/src/se_rwlock.c index 9164a123..204ea7a1 100644 --- a/common/src/se_rwlock.c +++ b/common/src/se_rwlock.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2016 Intel Corporation. All rights reserved. + * Copyright (C) 2011-2017 Intel Corporation. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/common/src/se_thread.c b/common/src/se_thread.c index b188a049..d35400b0 100644 --- a/common/src/se_thread.c +++ b/common/src/se_thread.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2016 Intel Corporation. All rights reserved. + * Copyright (C) 2011-2017 Intel Corporation. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/common/src/se_time.c b/common/src/se_time.c index 20bc84fc..413a9e3a 100644 --- a/common/src/se_time.c +++ b/common/src/se_time.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2016 Intel Corporation. All rights reserved. + * Copyright (C) 2011-2017 Intel Corporation. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/common/src/se_trace.c b/common/src/se_trace.c index ff81de82..77fb09d8 100644 --- a/common/src/se_trace.c +++ b/common/src/se_trace.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2016 Intel Corporation. All rights reserved. + * Copyright (C) 2011-2017 Intel Corporation. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/common/src/sgx_profile.cpp b/common/src/sgx_profile.cpp index 17244cd0..59d2ede7 100644 --- a/common/src/sgx_profile.cpp +++ b/common/src/sgx_profile.cpp @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2016 Intel Corporation. All rights reserved. + * Copyright (C) 2011-2017 Intel Corporation. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/common/src/sgx_read_rand.cpp b/common/src/sgx_read_rand.cpp index 410ea697..5268d246 100644 --- a/common/src/sgx_read_rand.cpp +++ b/common/src/sgx_read_rand.cpp @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2016 Intel Corporation. All rights reserved. + * Copyright (C) 2011-2017 Intel Corporation. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/common/src/sgx_sha256_128.cpp b/common/src/sgx_sha256_128.cpp index a12618b7..352d5c28 100644 --- a/common/src/sgx_sha256_128.cpp +++ b/common/src/sgx_sha256_128.cpp @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011-2016 Intel Corporation. All rights reserved. + * Copyright (C) 2011-2017 Intel Corporation. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/download_prebuilt.sh b/download_prebuilt.sh index 2d821478..4d3009a2 100755 --- a/download_prebuilt.sh +++ b/download_prebuilt.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash # -# Copyright (C) 2011-2016 Intel Corporation. All rights reserved. +# Copyright (C) 2011-2017 Intel Corporation. All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions @@ -32,15 +32,14 @@ top_dir=`dirname $0` -#out_dir=$top_dir/psw/ae/data/prebuilt out_dir=$top_dir -optlib_name=optimized_libs-1.7.100.35958.tar -ae_file_name=prebuilt-ae-1.7.100.35958.tar -server_url_path=https://download.01.org/intel-sgx/linux-1.7/ +optlib_name=optimized_libs-1.8.100.37641.tar +ae_file_name=prebuilt-ae-1.8.100.37641.tar +server_url_path=https://download.01.org/intel-sgx/linux-1.8/ server_optlib_url=$server_url_path/$optlib_name server_ae_url=$server_url_path/$ae_file_name optlib_md5=d873e20155fceb870c2e14771cc2258a -ae_md5=ca7cf31f1e9fee06feea44732cfbc908 +ae_md5=96b496bbc083397f41de624c0eda66ba rm -rf $out_dir/$optlib_name wget $server_optlib_url -P $out_dir if [ $? -ne 0 ]; then @@ -54,7 +53,7 @@ if [ $? -ne 0 ]; then exit -1 fi rm -rf $out_dir/$ae_file_name -wget $server_ae_url -P $out_dir +wget $server_ae_url -P $out_dir if [ $? -ne 0 ]; then echo "Fail to download file $server_ae_url" exit -1 @@ -62,7 +61,7 @@ fi md5sum $out_dir/$ae_file_name > check_sum.txt grep $ae_md5 check_sum.txt if [ $? -ne 0 ]; then - echo "File $server_optlib_url checksum failure" + echo "File $server_ae_url checksum failure" exit -1 fi diff --git a/external/DALSdk/JHI/linux/jhi.h b/external/DALSdk/JHI/linux/jhi.h new file mode 100644 index 00000000..846d28a5 --- /dev/null +++ b/external/DALSdk/JHI/linux/jhi.h @@ -0,0 +1,521 @@ +/* + Copyright 2010-2016 Intel Corporation + + This software is licensed to you in accordance + with the agreement between you and Intel Corporation. + + Alternatively, you can use this file in compliance + with the Apache license, Version 2. + + + Apache License, Version 2.0 + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +/** +******************************************************************************** +** +** @file jhi.h +** +** @brief Defines exported interfaces for JHI.DLL +** +** @author Elad Dabool +** +******************************************************************************** +*/ + +#ifndef __JHI_H__ +#define __JHI_H__ + +#ifdef __cplusplus +extern "C" { +#endif + +#include "typedefs.h" + +// Format: Major.Minor.ReverseDate +#define JHI_VERSION "1.13.20161115" + +//------------------------------------------------------------ +// Common & External Interfaces +//------------------------------------------------------------ + +typedef PVOID JHI_HANDLE ; +typedef UINT32 JHI_RET ; +typedef PVOID JHI_SESSION_HANDLE; + +//------------------------------------------------------------ +// Define Linkage for the functions +//------------------------------------------------------------ + +#define JHI_EXPORT __declspec(dllexport) JHI_RET + + +//---------------------------------------------------------------------------------------------------------------- +// JHI 7.1 return codes - not used in 8.0 and above (backward compatibility only), JHI 8.0 return codes are listed below +//---------------------------------------------------------------------------------------------------------------- +#define JHI_FILE_MISSING_SRC 0x101 // Source File not found in install/uninstall or unable to load + // file in SendAndRecv +#define JHI_FILE_ERROR_AUTH 0x102 // Attempted to load the file, but FW returned back + // a manifest failure check and rejected it +#define JHI_FILE_ERROR_DELETE 0x104 // Unable to remove file corresponding to the UUID in uninstall + // Maybe permission issues +#define JHI_FILE_INVALID 0x105 // Invalid file - bad characters or larger than 64K +#define JHI_FILE_ERROR_OPEN 0x106 // Unable to open file. Maybe permission issues +#define JHI_FILE_UUID_MISMATCH 0x107 // UUIDs dont match between applet file and function input +#define JHI_FILE_IDENTICAL 0x108 // downloaded applet matches existing one in Jom + +#define JHI_INVALID_COMMAND 0x202 // invalid JHI interface command +#define JHI_ILLEGAL_VALUE 0x204 // validation failed on input parameters + +#define JHI_COMMS_ERROR 0x300 // Communications error due to HECI timeouts + // or ME auto resets or any other COMMS error +#define JHI_SERVICE_INVALID_GUID 0x302 // Invalid COM guid (from DLL) + +#define JHI_APPLET_TIMEOUT 0x401 // This may be a result of a Java code in VM in an infinite loop. + // TL will kill applet in JOM and return error code +#define JHI_APPID_NOT_EXIST 0x402 // If appid is not present in app table +#define JHI_JOM_FATAL 0x403 //JOM fatal error +#define JHI_JOM_OVERFLOW 0x404 //exceeds max installed applets or active sessions in JOM +#define JHI_JOM_ERROR_DOWNLOAD 0x405 //JOM download error +#define JHI_JOM_ERROR_UNLOAD 0x406 //JOM unload error + +#define JHI_ERROR_LOGGING 0x500 // Error in logging + +#define JHI_UNKNOWN_ERROR 0x600 // Any other error + +//---------------------------------------------------------------------------------------------------------------- +// JHI 8.0 return codes +//---------------------------------------------------------------------------------------------------------------- + +// General JHI Return Code +#define JHI_SUCCESS 0x00 // general success response +#define JHI_INVALID_HANDLE 0x201 // invalid JHI handle +#define JHI_INVALID_PARAMS 0x203 // passed a null pointer to a required argument / illegal arguments passed to API function +#define JHI_INVALID_APPLET_GUID JHI_ILLEGAL_VALUE // the applet UUID is invalid +#define JHI_SERVICE_UNAVAILABLE 0x301 // there is no connection to JHI service +#define JHI_ERROR_REGISTRY 0x501 // error for any registry based access or registry corruption +#define JHI_ERROR_REPOSITORY_NOT_FOUND 0x1000 // when cannot find applets repository directory +#define JHI_INTERNAL_ERROR 0x601 // an unexpected internal error happened. +#define JHI_INVALID_BUFFER_SIZE 0x1001 // used a buffer that is larger than JHI_BUFFER_MAX +#define JHI_INVALID_COMM_BUFFER 0x1002 // JVM_COMM_BUFFER passed to function is invalid + +// Install errors +#define JHI_INVALID_INSTALL_FILE 0x1003 // the dalp file path is invalid +#define JHI_READ_FROM_FILE_FAILED 0x1004 // failed to read DALP file +#define JHI_INVALID_PACKAGE_FORMAT 0x1005 // dalp file format is not a valid +#define JHI_FILE_ERROR_COPY 0x103 // applet file could not be copied to repository +#define JHI_INVALID_INIT_BUFFER 0x1006 // passed an invalid init buffer to the function +#define JHI_FILE_NOT_FOUND JHI_FILE_MISSING_SRC // could not find the specified dalp file +#define JHI_INVALID_FILE_EXTENSION 0x1007 // applets package file must end with .dalp extension. +#define JHI_MAX_INSTALLED_APPLETS_REACHED JHI_JOM_OVERFLOW // exceeds max applets allowed, need to uninstall an applet. +#define JHI_INSTALL_FAILURE_SESSIONS_EXISTS 0x1008 // could not install because there are open sessions. +#define JHI_INSTALL_FAILED 0x1009 // no compatible applet was found in the DALP file +#define JHI_SVL_CHECK_FAIL 0x1040 // install failed due to an svl check +#define JHI_ILLEGAL_PLATFORM_ID 0x1041 // install failed due to an illegal platform id + +// Uninstall errors +#define JHI_DELETE_FROM_REPOSITORY_FAILURE JHI_FILE_ERROR_DELETE // unable to delete applet DALP file from repository +#define JHI_UNINSTALL_FAILURE_SESSIONS_EXISTS 0x100A // for app uninstallation errors + +// Create Session errors +#define JHI_APPLET_NOT_INSTALLED JHI_APPID_NOT_EXIST // trying to create a session of uninstalled applet +#define JHI_MAX_SESSIONS_REACHED 0x100C // exceeds max sessions allowed, need to close a session. +#define JHI_SHARED_SESSION_NOT_SUPPORTED 0x100D // the applet does not support shared sessions. +#define JHI_MAX_SHARED_SESSION_REACHED 0x100E // failed to get session handle due to maximun handles limit. +#define JHI_FIRMWARE_OUT_OF_RESOURCES 0x1018 // request causes the VM to exceed its memory quota +#define JHI_ONLY_SINGLE_INSTANCE_ALLOWED 0x1019 // trying to create more than a single instance of an applet +#define JHI_OPERATION_NOT_PERMITTED 0x101A // userspace tried to perform a kernel space operation + +// Close Session errors +#define JHI_INVALID_SESSION_HANDLE 0x100F // the session handle is not of an active session. + +// Send And Recieve errors +#define JHI_INSUFFICIENT_BUFFER 0x200 // buffer overflow - response greater than supplied Rx buffer +#define JHI_APPLET_FATAL 0x400 // This may be a result of uncaught exception or unusual applet + // error that results in applet being terminated by TL VM. +#define JHI_APPLET_BAD_STATE 0x407 // Applet in bad state, need to reopen the session + +// Register/Unregister session events +#define JHI_SESSION_NOT_REGISTERED 0x1010 // trying to unregister a session that is not registered for events. +#define JHI_SESSION_ALREADY_REGSITERED 0x1011 // Registration to an event is done only once. +#define JHI_EVENTS_NOT_SUPPORTED 0x1012 // events are not supported for this type of session + +// Get Applet Property errors: +#define JHI_APPLET_PROPERTY_NOT_SUPPORTED 0x1013 // Returned when calling GetAppletProperty with invalid property + +// Init errors +#define JHI_SPOOLER_NOT_FOUND 0x1014 // cannot find the spooler file +#define JHI_INVALID_SPOOLER 0x1015 // cannot download spooler / create an instance of the spooler +#define JHI_NO_CONNECTION_TO_FIRMWARE JHI_COMMS_ERROR // JHI has no connection to the VM + +// DLL errors +#define JHI_VM_DLL_FILE_NOT_FOUND 0x1016 // VM DLL is missing from the exe path +#define JHI_VM_DLL_VERIFY_FAILED 0x1017 // DLL Signature or Publisher name are not valid. + +// IAC errors +#define JHI_IAC_SERVER_SESSION_EXIST 0x1020 // May occur when trying to create two sessions on an IAC server applet +#define JHI_IAC_SERVER_INTERNAL_SESSIONS_EXIST 0x1021 // May occur when trying to close an IAC server applet session that has internal sessions + +// Access control errors +#define JHI_MISSING_ACCESS_CONTROL 0x1030 // Will return from install when trying to install an applet which uses an API that it is not permitted to. + +// SD session errors +#define JHI_ERROR_OEM_SIGNING_DISABLED 0x1050 // May occur if DAL OEAM signing is disabled +#define JHI_ERROR_SD_PUBLICKEY_HASH_FAILED 0x1051 // May occur if there is a mismatch in the public key hash of an SD +#define JHI_ERROR_SD_DB_NO_FREE_SLOT 0x1052 // In case reached max installed SDs in DB +#define JHI_ERROR_SD_TA_INSTALLATION_UNALLOWED 0x1053 // TA installation is not allowed for SD + +// ----------------------------------------------------------- +// Buffer size limitation is 2MB +// JHI will not accept any buffer with greater size. +// +// Note that this size limitiation does not mark the maximum buffer size an applet can recieve, +// applet max buffer size changes from one applet to another. +// +// This applies for all JHI API function that use buffers such as: +// SendAndRecieve, CreateSession, GetAppletProperty. +// ----------------------------------------------------------- +#define JHI_BUFFER_MAX 2097152 + + +//------------------------------------------------------------ +// Applet version macros +//------------------------------------------------------------ +// While applet version is represented in a Major.Minor format (i.e. 1.0) +// the VM repersntation of an applet version (that can be obtained using JHI_GetAppletProperty) is as an integer that combine both major and minor version. +// in order to perform the transition between to two representation we offer the following macros: + +/* + Make VM Applet Version (32bit) from a Major.Minor format + + Bits: + 00-07 - Major + 08-15 - Minor + 15-31 - Reserved (All Zero) +*/ +#define MK_APPLET_VER(maj, min) ( (UINT32) \ + (maj & 0x000000FFUL) | \ + ((min << 8) & 0x0000FF00UL) & \ + (0x0000FFFFUL) ) + +/* Extract Applet Major Version from a VM integer representation (num) */ +#define MAJOR_APPLET_VER(num) ((UINT8) (num & 0x000000FFUL)) + +/* Extract Applet Minor Version from a VM integer representation (num) */ +#define MINOR_APPLET_VER(num) ((UINT8) ((num & 0x0000FF00UL) >> 8)) + + +//------------------------------------------------------------ +// JHI Events +//------------------------------------------------------------ + +// this enum lists the types of data received by JHI event +typedef enum _JHI_EVENT_DATA_TYPE +{ + JHI_DATA_FROM_APPLET = 0, // the event raised by an applet session + JHI_DATA_FROM_SERVICE = 1 // the event raised by JHI service +}JHI_EVENT_DATA_TYPE; + +//this struct repersents the data received upon a JHI event +typedef struct { + UINT32 datalen; // byte length of the event data + UINT8* data; // the buffer that contains the event data + JHI_EVENT_DATA_TYPE dataType; // the event type +}JHI_EVENT_DATA; + +// This is the format for a callback function that is used in order to +// receive session events. +typedef void (*JHI_EventFunc)(JHI_SESSION_HANDLE SessionHandle, JHI_EVENT_DATA EventData); + + +//------------------------------------------------------------ +// JHI Version info. +//------------------------------------------------------------ + +// this enum lists the communication types that are used +// by JHI in order to communicate with the firmware +typedef enum _JHI_COMMUNICATION_TYPE +{ + JHI_SOCKETS = 0, // communication by sockets + JHI_HECI = 1 // communication by HECI +} JHI_COMMUNICATION_TYPE; + +#define VERSION_BUFFER_SIZE 50 + +// this enum lists the platfom types that are supported by JHI +typedef enum _JHI_PLATFROM_ID +{ + ME = 0, // Intel(R) Management Engine (Intel(R) ME) + SEC = 1, + CSE = 2, + INVALID_PLATFORM_ID = -1 +} JHI_PLATFROM_ID; + +// This enum lists the VM types that are supported by JHI +typedef enum _JHI_VM_TYPE +{ + JHI_VM_TYPE_INVALID = -1, + JHI_VM_TYPE_TL = 0, + JHI_VM_TYPE_BEIHAI = 1, // Alias of BHv1 for backward compatibility + JHI_VM_TYPE_BEIHAI_V1 = 1, + JHI_VM_TYPE_BEIHAI_V2 = 2 +} JHI_VM_TYPE; + +// Different VM plugin types used by JHI +typedef enum _JHI_PLUGIN_TYPE +{ + JHI_PLUGIN_TYPE_INVALID = 0, + JHI_PLUGIN_TYPE_TL = 1, + JHI_PLUGIN_TYPE_BEIHAI_V1 = 2, + JHI_PLUGIN_TYPE_BEIHAI_V2 = 3 +} JHI_PLUGIN_TYPE; + + +// this struct contains information about the JHI service and the +// firmware versions, and additional info +typedef struct +{ + char jhi_version[VERSION_BUFFER_SIZE]; // the version of the JHI service + char fw_version[VERSION_BUFFER_SIZE]; // the version of the firmware + JHI_COMMUNICATION_TYPE comm_type; // the communication type between JHI and the firmware + JHI_PLATFROM_ID platform_id; // the platform supported by the JHI service + JHI_VM_TYPE vm_type; // the VM type supported by the JHI service + UINT32 reserved[19]; // reserved bits +} JHI_VERSION_INFO; + + +//------------------------------------------------------------ +// Session info +//------------------------------------------------------------ + +// this enum lists the states of a session +typedef enum _JHI_SESSION_STATE +{ + JHI_SESSION_STATE_ACTIVE = 0, // the session is active + JHI_SESSION_STATE_NOT_EXISTS = 1 // the session does not exists +} JHI_SESSION_STATE; + +// this struct contains information for a given session +typedef struct +{ + JHI_SESSION_STATE state; // the session state + UINT32 flags; // the flags used when this session created + UINT32 reserved[20]; // reserved bits +} JHI_SESSION_INFO; + +//------------------------------------------------------------ +// Create Session flags +//------------------------------------------------------------ +// this enum lists the flags that used when creating a session +// +#define JHI_NO_FLAGS 0 // no flags to be used +#define JHI_SHARED_SESSION 1 // create a shared session, or receive a handle for an existing shared session + +//------------------------------------------------------------ +// Data Buffer +//------------------------------------------------------------ +typedef struct +{ + PVOID buffer; + UINT32 length ; +} DATA_BUFFER ; + + +//------------------------------------------------------------ +// For Tx and Rx downto the MEI routine +// DON'T ADD MEMBERS IN +//------------------------------------------------------------ +typedef struct +{ + DATA_BUFFER TxBuf [1] ; + + //--------------------!!!!!!!!!!!--------------------// + // Dont add members in between TxBuf[1] & RxBuf[1] // + // The code that uses this depends on it // + //--------------------!!!!!!!!!!!--------------------// + + DATA_BUFFER RxBuf [1] ; + + // You may add anything here +} JVM_COMM_BUFFER ; + + + + +//------------------------------------------------------------ +// Function Prototypes + + +//------------------------------------------------------------ +// Function: JHI_Initialize +//------------------------------------------------------------ +JHI_EXPORT +JHI_Initialize ( + OUT JHI_HANDLE* ppHandle, + IN PVOID context, + IN UINT32 flags +) ; + +//------------------------------------------------------------ +// Function: JHI_Deinit +//------------------------------------------------------------ +JHI_EXPORT JHI_Deinit(IN JHI_HANDLE handle) ; + + +//------------------------------------------------------------ +// Function: JHI_SendAndRecv +//------------------------------------------------------------ +JHI_EXPORT +JHI_SendAndRecv2( + IN JHI_HANDLE handle, + IN JHI_SESSION_HANDLE SessionHandle, + IN INT32 nCommandId, + INOUT JVM_COMM_BUFFER* pComm, + OUT INT32* responseCode); + +//------------------------------------------------------------ +// Function: JHI_Install +//------------------------------------------------------------ +JHI_EXPORT +JHI_Install2 ( + IN const JHI_HANDLE handle, + IN const char* AppId, + IN const FILECHAR* srcFile +); + +//------------------------------------------------------------ +// Function: JHI_Uninstall +//------------------------------------------------------------ +JHI_EXPORT +JHI_Uninstall( + IN JHI_HANDLE handle, + IN const char* AppId +); + +//------------------------------------------------------------ +// Function: JHI_GetAppletProperty +//------------------------------------------------------------ +JHI_EXPORT +JHI_GetAppletProperty( + IN JHI_HANDLE handle, + IN const char* AppId, + INOUT JVM_COMM_BUFFER* pComm +); + +//------------------------------------------------------------ +// Function: JHI_CreateSession +//------------------------------------------------------------ +JHI_EXPORT +JHI_CreateSession ( + IN const JHI_HANDLE handle, + IN const char* AppId, + IN UINT32 flags, + IN DATA_BUFFER* initBuffer, + OUT JHI_SESSION_HANDLE* pSessionHandle +); + +//------------------------------------------------------------ +// Function: JHI_GetSessionsCount +//------------------------------------------------------------ +JHI_EXPORT +JHI_GetSessionsCount( + IN const JHI_HANDLE handle, + IN const char* AppId, + OUT UINT32* SessionsCount +); + +//------------------------------------------------------------ +// Function: JHI_CloseSession +//------------------------------------------------------------ +JHI_EXPORT +JHI_CloseSession( + IN const JHI_HANDLE handle, + IN JHI_SESSION_HANDLE* pSessionHandle +); + +//------------------------------------------------------------ +// Function: JHI_ForceCloseSession +//------------------------------------------------------------ +JHI_EXPORT +JHI_ForceCloseSession( +IN const JHI_HANDLE handle, +IN JHI_SESSION_HANDLE* pSessionHandle +); + +//------------------------------------------------------------ +// Function: JHI_GetSessionInfo +//------------------------------------------------------------ +JHI_EXPORT +JHI_GetSessionInfo( + IN const JHI_HANDLE handle, + IN JHI_SESSION_HANDLE SessionHandle, + OUT JHI_SESSION_INFO* SessionInfo +); + +#ifdef __ANDROID__ +//------------------------------------------------------------ +// Function: JHI_ClearSessions +// +JHI_RET +JHI_ClearSessions( + IN const JHI_HANDLE handle, + IN int ApplicationPid +); + +//------------------------------------------------------------ +// Function: JHI_GetSessionsCount +//------------------------------------------------------------ +JHI_EXPORT +JHI_CreateSessionProcess ( + IN const JHI_HANDLE handle, + IN const char* AppId, + IN int SessionPid, + IN UINT32 flags, + IN DATA_BUFFER* initBuffer, + OUT JHI_SESSION_HANDLE* pSessionHandle +); +#endif //__ANDROID__ + +//------------------------------------------------------------ +// Function: JHI_RegisterEvent +//------------------------------------------------------------ +JHI_EXPORT +JHI_RegisterEvents( + IN const JHI_HANDLE handle, + IN JHI_SESSION_HANDLE SessionHandle, + IN JHI_EventFunc pEventFunction); + +//------------------------------------------------------------ +// Function: JHI_UnRegisterEvent +//------------------------------------------------------------ +JHI_EXPORT +JHI_UnRegisterEvents( + IN const JHI_HANDLE handle, + IN JHI_SESSION_HANDLE SessionHandle); + +//------------------------------------------------------------ +// Function: JHI_GetVersionInfo +//------------------------------------------------------------ +JHI_EXPORT +JHI_GetVersionInfo ( + IN const JHI_HANDLE handle, + OUT JHI_VERSION_INFO* pVersionInfo); + +#ifdef __cplusplus +}; +#endif + + +#endif \ No newline at end of file diff --git a/external/DALSdk/JHI/linux/typedefs.h b/external/DALSdk/JHI/linux/typedefs.h new file mode 100644 index 00000000..5e4b02fb --- /dev/null +++ b/external/DALSdk/JHI/linux/typedefs.h @@ -0,0 +1,101 @@ +/* + Copyright 2010-2016 Intel Corporation + + This software is licensed to you in accordance + with the agreement between you and Intel Corporation. + + Alternatively, you can use this file in compliance + with the Apache license, Version 2. + + + Apache License, Version 2.0 + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +/** +******************************************************************************** +** +** @file typedefs.h +** +** @brief Contains common type declarations used throughout the code +** +** @author Ranjit Narjala +** +******************************************************************************** +*/ + +#ifndef _TYPEDEFS_H_ +#define _TYPEDEFS_H_ + +#include +#include + +#ifdef _WIN32 +#include +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +typedef uint8_t UINT8; +typedef uint16_t UINT16; +typedef uint32_t UINT32; +typedef int8_t INT8; +typedef int16_t INT16; +typedef int32_t INT32; +typedef void * PVOID; + +#ifdef _WIN32 +typedef wchar_t FILECHAR; +#else +typedef char TCHAR; +typedef char FILECHAR; +#define __declspec(x) +#endif /* _WIN32 */ + +#ifndef IN +#define IN // Defines an input parameter +#endif + +#ifndef OUT +#define OUT // Defines an output parameter +#endif + +#ifndef INOUT +#define INOUT // Defines an input/output parameter +#endif + +#ifndef TRUE +#define TRUE 1 // True value for a BOOLEAN +#endif +#ifndef FALSE +#define FALSE 0 // False value for a BOOLEAN +#endif + +#ifdef __cplusplus +} // extern "C" +#endif + +#ifndef NULL +#ifdef __cplusplus +// Define NULL pointer value under C++ +#define NULL 0 +#else +// Define NULL pointer value non-C++ +#define NULL ((void *)0) +#endif +#endif + +#endif // _TYPEDEFS_H \ No newline at end of file diff --git a/external/crypto_px/Makefile b/external/crypto_px/Makefile index 6739cdaf..f57acc01 100644 --- a/external/crypto_px/Makefile +++ b/external/crypto_px/Makefile @@ -1,5 +1,5 @@ # -# Copyright (C) 2011-2016 Intel Corporation. All rights reserved. +# Copyright (C) 2011-2017 Intel Corporation. All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions @@ -59,4 +59,6 @@ clean: @$(RM) $(OBJS) libcrypto_px.a .PHONY: rebuild -rebuild: clean all +rebuild: + $(MAKE) clean + $(MAKE) all diff --git a/external/epid-sdk-3.0.0/CHANGELOG.md b/external/epid-sdk-3.0.0/CHANGELOG.md new file mode 100644 index 00000000..36657a30 --- /dev/null +++ b/external/epid-sdk-3.0.0/CHANGELOG.md @@ -0,0 +1,87 @@ +# Intel(R) EPID SDK ChangeLog {#ChangeLog} + +## [3.0.0] + +### New in This Release + +* Support for verification of EPID 1.1 members. + +* Make-based build system support. + +* Sample material includes compressed keys. + +* Enhanced documentation, including step-by-step walkthroughs of + example applications. + +* Validated on additional IoT platforms. + + - Ostro Linux + + - Snappy Ubuntu Core + + +### Changes + +* A new verifier API has been added to set the basename to be used for + verification. Verifier APIs that used to accept basenames now use + the basename set via EpidVerifierSetBasename. + +* The verifier pre-computation structure has been changed to include + the group ID to allow detection of errors that result from providing + a pre-computation blob from a different group to EpidVerifierCreate. + + +### Fixes + +* The kEpidxxxRevoked enums have been renamed to be consistent with + other result return values. + + +### Known Issues + +* SHA-512/256 hash algorithm is not supported. + + +## [2.0.0] - 2016-07-20 + +### New in This Release + +* Signed binary issuer material support. + + - Binary issuer material validation APIs. + + - Updated sample issuer material. + + - Updated samples that parse signed binary issuer material. + +* Compressed member private key support. + +* Validated on additional IoT platforms. + + - Windows 10 IoT Core + + - WindRiver IDP + + +### Changes + +* The default hash algorithm has changed. It is now SHA-512. + +* Functions that returned `EpidNullPtrErr` now return `EpidBadArgErr` + instead. + + +### Fixes + +* Updated build flags to work around GCC 4.8.5 defect. + + +## [1.0.0] - 2016-03-03 + +### New in This Release + +* Basic sign and verify functionality + +* Dynamic join support for member + +* Apache 2.0 License diff --git a/external/epid-sdk-3.0.0/LICENSE.txt b/external/epid-sdk-3.0.0/LICENSE.txt new file mode 100644 index 00000000..38f89e4a --- /dev/null +++ b/external/epid-sdk-3.0.0/LICENSE.txt @@ -0,0 +1,249 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright {yyyy} {name of copyright owner} + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + +======================================================================= + +EPID SDK Subcomponents: + +The EPID SDK contains subcomponents with separate copyright notices +and license terms. Your use of the source code for these subcomponents +is subject to the terms and conditions of the following licenses. + + +----------------------------------------------------------------------- +The BSD 3-Clause License +----------------------------------------------------------------------- + +The EPID SDK bundles portions of the following under the BSD 3-Clause +License: + + - Google Test (https://github.com/google/googletest) + Copyright 2008, Google Inc. + +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/external/epid-sdk-3.0.0/Makefile.in b/external/epid-sdk-3.0.0/Makefile.in new file mode 100644 index 00000000..449d978b --- /dev/null +++ b/external/epid-sdk-3.0.0/Makefile.in @@ -0,0 +1,130 @@ +#!/usr/bin/make -f +include ../../buildenv.mk + +#variables are set by configure +prefix = @prefix@ +installdir = $(prefix)/ +epidinstalldir = $(installdir)/epid-sdk +CFLAGS = @CFLAGS@ + +#g++ flags +CXX_FLAGS := $(CFLAGS) -O2 -Werror -Wall -Wextra -Wno-missing-braces \ + -Wno-missing-field-initializers -Wno-unknown-pragmas -Wno-unused-function \ + -fno-strict-aliasing -Wno-unused-but-set-variable -Wno-comment -DNDEBUG -fPIC +#gcc flags +CC_FLAGS := $(CXX_FLAGS) -D_IPP_v50_ -D_IPP_DEBUG + +#intel c++ compiler flags +ICPC_FLAGS := $(CFLAGS) -O2 -Werror -Wall -Wextra -DNDEBUG +#intel c compiler flags +ICC_FLAGS := $(ICPC_FLAGS) -D_IPP_v50_ -D_IPP_DEBUG + +#check if architecture was specified +#or take it by shell command +ifeq ($(findstring -m32,$(CFLAGS)),-m32) + ARCH = x86 + CXXFLAGS += -m32 +else ifeq ($(findstring -m64,$(CFLAGS)),-m64) + ARCH = x86_64 + CXXFLAGS += -m64 +else + ARCH := $(shell uname -m) +endif + +#set tools and flags depending on specified compiler +ifeq ($(CC),icc) + CFLAGS := $(ICC_FLAGS) + CXXFLAGS := $(ICPC_FLAGS) + AR = xiar +else ifeq ($(CC),cc) + CFLAGS := $(CC_FLAGS) +ifeq ($(ARCH),x86) + CFLAGS += -m32 +endif +else + CFLAGS := $(CC_FLAGS) + CXXFLAGS := $(CXX_FLAGS) + ARCH = x86 +endif + +#set c++11 for all c++ compilers +CXXFLAGS += -std=c++0x + +#set flags for unit tests executables +GTEST_FLAGS = --gtest_color=yes \ + --gtest_print_time=1 \ + --gtest_output=xml + +export CC AR LDFLAGS ARCH CFLAGS +export CXX CXXFLAGS +export epidinstalldir +export GTEST_FLAGS + +#just output +$(info $$ccompiler is [${CC}]) +$(info $$cxxcompiler is [${CXX}]) +$(info $$architecture is [${ARCH}]) + +#targets part +all: ipp common member verifier dropt + +clean: + $(MAKE) -C ./ext/ipp/sources/ippcp clean + $(MAKE) -C ./ext/ipp/sources/ippcpepid clean + $(MAKE) -C ./epid/common/ clean + $(MAKE) -C ./epid/member/ clean + $(MAKE) -C ./epid/verifier/ clean + $(MAKE) -C ./example/util/ clean + $(MAKE) -C ./example/ clean + $(MAKE) -C ./tools/ clean + $(MAKE) -C ./ext/gtest/ clean + $(MAKE) -C ./epid/common-testhelper/ clean + $(MAKE) -C ./ext/dropt/ clean + +install: + $(MAKE) -C ./ext/ipp/sources/ippcp install + $(MAKE) -C ./ext/ipp/sources/ippcpepid install + $(MAKE) -C ./epid/common/ install + $(MAKE) -C ./epid/member/ install + $(MAKE) -C ./epid/verifier/ install + $(MAKE) -C ./example/ install + $(MAKE) -C ./tools/ install + $(MAKE) -C ./epid/common-testhelper/ install + +uninstall: + rm -rf $(epidinstalldir) + +ipp: + $(MAKE) -C ./ext/ipp/sources/ippcp all + $(MAKE) -C ./ext/ipp/sources/ippcpepid all ARCH=$(ARCH) + +common: + $(MAKE) -C ./epid/common/ all + +member: + $(MAKE) -C ./epid/member/ all + +verifier: + $(MAKE) -C ./epid/verifier/ all + +dropt: + $(MAKE) -C ./ext/dropt/ all + +examples_util: + $(MAKE) -C ./example/util/ all + +check: + $(MAKE) -C ./ext/gtest/ all + $(MAKE) -C ./epid/common-testhelper/ all + $(MAKE) -C ./epid/common-testhelper/ check + $(MAKE) -C ./epid/common/ check + $(MAKE) -C ./epid/member/ check + $(MAKE) -C ./epid/verifier/ check + +examples: + $(MAKE) -C ./example/ all + +epid_tools: + $(MAKE) -C ./tools/ all + +build: all check install diff --git a/external/epid-sdk-3.0.0/NOTICE.txt b/external/epid-sdk-3.0.0/NOTICE.txt new file mode 100644 index 00000000..fc0c4208 --- /dev/null +++ b/external/epid-sdk-3.0.0/NOTICE.txt @@ -0,0 +1,22 @@ +Intel(R) EPID SDK +Copyright 2016 Intel Corporation + +========== + +The Intel(R) EPID SDK contains subcomponents with separate copyright notices +and license terms. + +Your use of the source code for the these subcomponents is subject to +the terms and conditions of their respective licenses. + +See the LICENSE.txt file for a list of subcomponents and dependencies and +their respective licenses. + +---------- + +The source code used for math primitives in the Intel(R) EPID SDK is a +subset of the Intel(R) IPP Cryptography library (v9.0.3) written in +C. For higher performance, you can use the commercial version of the +IPP Cryptography libraries, which are available at +https://software.intel.com/articles/download-ipp-cryptography-libraries. + diff --git a/external/epid-sdk-3.0.0/README.md b/external/epid-sdk-3.0.0/README.md new file mode 100644 index 00000000..5cb5c5f4 --- /dev/null +++ b/external/epid-sdk-3.0.0/README.md @@ -0,0 +1,57 @@ +# Intel(R) EPID SDK + +The Intel(R) Enhanced Privacy ID Software Development Kit + +Intel(R) EPID SDK enables adding Intel(R) EPID support to applications +and platforms. + +Intel(R) EPID is a cryptographic protocol which enables the remote +authentication of a trusted platform whilst preserving the user's +privacy. + +* For a given public key there are many (e.g., millions) of private + keys. The key holders form a group. + +* Any key holder may sign against the one public key. + +* No one can tell which private key signed the data. This is the + privacy property. + +You can use Intel(R) EPID as a foundational building block for a +multitude of security solutions. + + +## Prerequisites + +* [Python](http://www.python.org) + +* [SCons](http://www.scons.org/) + +* [Parts](https://bitbucket.org/sconsparts/parts) + +* A C/C++ compiler supported by Parts + + +## What's New in This Release + +See [CHANGELOG.md](CHANGELOG.md). + + +## Documentation + +See [doc/index.html](doc/index.html) to browse the html +documentation. + + +## License + +See [LICENSE.txt](LICENSE.txt). + + +## Math Primitives + +The source code used for math primitives in the Intel(R) EPID SDK is a +subset of the Intel(R) IPP Cryptography library (v9.0.3) written in +C. For higher performance, you can use the commercial version of the +IPP Cryptography libraries, which are available at +https://software.intel.com/articles/download-ipp-cryptography-libraries. diff --git a/external/epid-sdk-3.0.0/SConstruct b/external/epid-sdk-3.0.0/SConstruct new file mode 100644 index 00000000..195222d8 --- /dev/null +++ b/external/epid-sdk-3.0.0/SConstruct @@ -0,0 +1,237 @@ +############################################################################ +# Copyright 2016 Intel Corporation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +############################################################################ + +"""use scons -k to invoke all builds regardless of unit test failures +""" +import string +import sys +import SCons.Script +import os.path +from parts import * + +print "**************** TOOLS ****************" +print '* Python Version:', string.split(sys.version, " ", 1)[0] +print '* SCons Version:', SCons.__version__ +print '* Parts Version:', PartsExtensionVersion() +print "***************************************" + +def PrintCompilerVersion(env): + """ + Function to print version of compilers used for build + Args: + env: Environment to get compilers version + """ + res = '' + if 'INTELC_VERSION' in env: + res += 'ICC ' + env['INTELC_VERSION'] + ';' + if 'MSVC_VERSION' in env: + res += 'MS ' + env['MSVC_VERSION'] + ';' + if 'GXX_VERSION' in env: + res += 'GXX ' + env['GXX_VERSION'] + ';' + if 'GCC_VERSION' in env: + res += 'GCC ' + env['GCC_VERSION'] + ';' + print 'Compiler Version: ', res + +def include_parts(part_list, **kwargs): + for parts_file in part_list: + if os.path.isfile(DefaultEnvironment().subst(parts_file)): + Part(parts_file=parts_file, **kwargs) + +######## Part groups #################################################### +ipp_parts = ['ext/ipp/ippcp.parts', + 'ext/ipp/ippcpepid.parts', + 'ext/ipp/ippcommon.parts'] +utest_parts = ['ext/gtest/gtest.parts', + 'epid/common-testhelper/common-testhelper.parts'] +common_parts = ['epid/common/common.parts'] +member_parts = ['epid/member/member.parts'] +verifier_parts = ['epid/verifier/verifier.parts'] +util_parts = ['example/util/util.parts'] +example_parts = ['ext/dropt/dropt.parts', + 'example/verifysig/verifysig.parts', + 'example/signmsg/signmsg.parts', + 'example/data/data.parts', + 'example/compressed_data/compressed_data.parts'] +tools_parts = ['tools/revokegrp/revokegrp.parts', + 'tools/revokekey/revokekey.parts', + 'tools/revokesig/revokesig.parts', + 'tools/extractkeys/extractkeys.parts', + 'tools/extractgrps/extractgrps.parts'] +testbot_test_parts = ['test/testbot/testbot.parts', + 'test/testbot/signmsg/signmsg_testbot.parts', + 'test/testbot/verifysig/verifysig_testbot.parts', + 'test/testbot/integration/integration_testbot.parts', + 'test/testbot/ssh_remote/ssh_remote_testbot.parts', + 'test/testbot/revokegrp/revokegrp_testbot.parts', + 'test/testbot/revokekey/revokekey_testbot.parts', + 'test/testbot/revokesig/revokesig_testbot.parts', + 'test/testbot/extractkeys/extractkeys_testbot.parts', + 'test/testbot/extractgrps/extractgrps_testbot.parts'] +package_parts = ['ext/gtest/gtest.parts', + 'ext/ipp/ippcommon.parts', + 'ext/ipp/ippcp.parts', + 'ext/ipp/ippcpepid.parts', + 'package.parts'] +internal_tools_parts = ['ext/dropt/dropt.parts', + 'tools/ikgfwrapper/ikgfwrapper.parts'] +######## End Part groups ############################################### +######## Commandline option setup ####################################### +product_variants = [ + 'production', + 'internal-test', + 'package-epid-sdk', + 'internal-tools' +] + +default_variant = 'production' + +def is_production(): + return GetOption("product-variant") == 'production' + +def is_internal_test(): + return GetOption("product-variant") == 'internal-test' + +def is_internal_tools(): + return GetOption("product-variant") == 'internal-tools' + +def is_package(): + return GetOption("product-variant") == 'package-epid-sdk' + +def use_commercial_ipp(): + return GetOption("use-commercial-ipp") + +def variant_dirname(): + s = GetOption("product-variant") + if s == 'production': + return 'epid-sdk' + elif s == 'package-epid-sdk': + return 'epid-sdk' + else: + return s + +AddOption("--product-variant", "--prod-var", nargs=1, + help=("Select product variant to build. Possible " + "options are: {0}. The default is {1} if no option " + "is specified").format(", ".join(product_variants), + default_variant), + action='store', dest='product-variant', type='choice', + choices=product_variants, default=default_variant) + +AddOption("--use-commercial-ipp", + help=("Link with commercial IPP. The IPPROOT environment variable " + "must be set."), + action='store_true', dest='use-commercial-ipp', + default=False) + +SetOptionDefault("PRODUCT_VARIANT", variant_dirname()) + +######## End Commandline option setup ################################### + + +# fix for parts 0.10.8 until we get better logic to extract ${CC} +SetOptionDefault('PARTS_USE_SHORT_TOOL_NAMES', 1) + +def set_default_production_options(): + SetOptionDefault('TARGET_PLATFORM', 'x86_64') + SetOptionDefault('CONFIG', 'release') + + SetOptionDefault('TARGET_VARIANT', '${TARGET_OS}-${TARGET_ARCH}') + + SetOptionDefault('INSTALL_ROOT', + '#_install/${PRODUCT_VARIANT}') + + SetOptionDefault('INSTALL_TOOLS_BIN', + '$INSTALL_ROOT/tools') + + SetOptionDefault('INSTALL_SAMPLE_BIN', + '$INSTALL_ROOT/example') + + SetOptionDefault('INSTALL_EPID_INCLUDE', + '$INSTALL_ROOT/include/epid') + + SetOptionDefault('INSTALL_IPP_INCLUDE', + '$INSTALL_ROOT/include/ext/ipp/include') + + SetOptionDefault('INSTALL_TEST_BIN', + '$INSTALL_ROOT/test') + + SetOptionDefault('INSTALL_LIB', + '$INSTALL_ROOT/lib/${TARGET_VARIANT}') + + SetOptionDefault('INSTALL_SAMPLE_DATA', + '$INSTALL_ROOT/example') + + SetOptionDefault('INSTALL_TOOLS_DATA', + '$INSTALL_ROOT/tools') + + SetOptionDefault('PACKAGE_DIR', + '#_package') + + SetOptionDefault('PACKAGE_ROOT', + '#_package/${PRODUCT_VARIANT}') + + SetOptionDefault('ROOT', + '#') + + SetOptionDefault('PACKAGE_NAME', + '{PRODUCT_VARIANT}') + +if is_production(): + set_default_production_options() + ipp_mode = ['install_lib'] + if use_commercial_ipp(): + ipp_mode.append('use_commercial_ipp') + include_parts(ipp_parts, mode=ipp_mode, + INSTALL_INCLUDE='${INSTALL_IPP_INCLUDE}') + include_parts(utest_parts + common_parts + + member_parts + verifier_parts, + mode=['install_lib'], + INSTALL_INCLUDE='${INSTALL_EPID_INCLUDE}') + include_parts(util_parts + example_parts, + INSTALL_INCLUDE='${INSTALL_EPID_INCLUDE}', + INSTALL_BIN='${INSTALL_SAMPLE_BIN}', + INSTALL_DATA='${INSTALL_SAMPLE_DATA}') + include_parts(tools_parts, + INSTALL_BIN='${INSTALL_TOOLS_BIN}', + INSTALL_DATA='${INSTALL_TOOLS_DATA}') + PrintCompilerVersion(DefaultEnvironment()) + Default('all') + Default('run_utest::') + +if is_internal_test(): + set_default_production_options() + include_parts(ipp_parts) + include_parts(utest_parts + common_parts + + member_parts + verifier_parts) + include_parts(util_parts + example_parts, + INSTALL_BIN='${INSTALL_SAMPLE_BIN}', + INSTALL_DATA='${INSTALL_SAMPLE_DATA}') + include_parts(tools_parts, INSTALL_BIN='${INSTALL_TOOLS_BIN}') + include_parts(testbot_test_parts) + Default('all') + +if is_internal_tools(): + set_default_production_options() + include_parts(ipp_parts + utest_parts + common_parts + util_parts) + include_parts(internal_tools_parts, INSTALL_BIN='${INSTALL_TOOLS_BIN}') + Default('ikgfwrapper') + +if is_package(): + set_default_production_options() + include_parts(package_parts, + mode=['install_package'], + INSTALL_TOP_LEVEL='${PACKAGE_ROOT}') + Default('package') diff --git a/external/epid-sdk-3.0.0/configure b/external/epid-sdk-3.0.0/configure new file mode 100755 index 00000000..02a6d411 --- /dev/null +++ b/external/epid-sdk-3.0.0/configure @@ -0,0 +1,3799 @@ +#! /bin/sh +# Guess values for system-dependent variables and create Makefiles. +# Generated by GNU Autoconf 2.69 for Intel(R) EPID SDK . +# +# +# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. +# +# +# This configure script is free software; the Free Software Foundation +# gives unlimited permission to copy, distribute and modify it. +## -------------------- ## +## M4sh Initialization. ## +## -------------------- ## + +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; +esac +fi + + +as_nl=' +' +export as_nl +# Printing a long string crashes Solaris 7 /usr/bin/printf. +as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo +# Prefer a ksh shell builtin over an external printf program on Solaris, +# but without wasting forks for bash or zsh. +if test -z "$BASH_VERSION$ZSH_VERSION" \ + && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='print -r --' + as_echo_n='print -rn --' +elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='printf %s\n' + as_echo_n='printf %s' +else + if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then + as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' + as_echo_n='/usr/ucb/echo -n' + else + as_echo_body='eval expr "X$1" : "X\\(.*\\)"' + as_echo_n_body='eval + arg=$1; + case $arg in #( + *"$as_nl"*) + expr "X$arg" : "X\\(.*\\)$as_nl"; + arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; + esac; + expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" + ' + export as_echo_n_body + as_echo_n='sh -c $as_echo_n_body as_echo' + fi + export as_echo_body + as_echo='sh -c $as_echo_body as_echo' +fi + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } +fi + + +# IFS +# We need space, tab and new line, in precisely that order. Quoting is +# there to prevent editors from complaining about space-tab. +# (If _AS_PATH_WALK were called with IFS unset, it would disable word +# splitting by setting IFS to empty value.) +IFS=" "" $as_nl" + +# Find who we are. Look in the path if we contain no directory separator. +as_myself= +case $0 in #(( + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break + done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as `sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + exit 1 +fi + +# Unset variables that we do not need and which cause bugs (e.g. in +# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" +# suppresses any "Segmentation fault" message there. '((' could +# trigger a bug in pdksh 5.2.14. +for as_var in BASH_ENV ENV MAIL MAILPATH +do eval test x\${$as_var+set} = xset \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# CDPATH. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +# Use a proper internal environment variable to ensure we don't fall + # into an infinite loop, continuously re-executing ourselves. + if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then + _as_can_reexec=no; export _as_can_reexec; + # We cannot yet assume a decent shell, so we have to provide a +# neutralization value for shells without unset; and this also +# works around shells that cannot unset nonexistent variables. +# Preserve -v and -x to the replacement shell. +BASH_ENV=/dev/null +ENV=/dev/null +(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV +case $- in # (((( + *v*x* | *x*v* ) as_opts=-vx ;; + *v* ) as_opts=-v ;; + *x* ) as_opts=-x ;; + * ) as_opts= ;; +esac +exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} +# Admittedly, this is quite paranoid, since all the known shells bail +# out after a failed `exec'. +$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 +as_fn_exit 255 + fi + # We don't want this to propagate to other subprocesses. + { _as_can_reexec=; unset _as_can_reexec;} +if test "x$CONFIG_SHELL" = x; then + as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which + # is contrary to our usage. Disable this feature. + alias -g '\${1+\"\$@\"}'='\"\$@\"' + setopt NO_GLOB_SUBST +else + case \`(set -o) 2>/dev/null\` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; +esac +fi +" + as_required="as_fn_return () { (exit \$1); } +as_fn_success () { as_fn_return 0; } +as_fn_failure () { as_fn_return 1; } +as_fn_ret_success () { return 0; } +as_fn_ret_failure () { return 1; } + +exitcode=0 +as_fn_success || { exitcode=1; echo as_fn_success failed.; } +as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } +as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } +as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } +if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : + +else + exitcode=1; echo positional parameters were not saved. +fi +test x\$exitcode = x0 || exit 1 +test -x / || exit 1" + as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO + as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO + eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && + test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1" + if (eval "$as_required") 2>/dev/null; then : + as_have_required=yes +else + as_have_required=no +fi + if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : + +else + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +as_found=false +for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + as_found=: + case $as_dir in #( + /*) + for as_base in sh bash ksh sh5; do + # Try only shells that exist, to save several forks. + as_shell=$as_dir/$as_base + if { test -f "$as_shell" || test -f "$as_shell.exe"; } && + { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : + CONFIG_SHELL=$as_shell as_have_required=yes + if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : + break 2 +fi +fi + done;; + esac + as_found=false +done +$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && + { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : + CONFIG_SHELL=$SHELL as_have_required=yes +fi; } +IFS=$as_save_IFS + + + if test "x$CONFIG_SHELL" != x; then : + export CONFIG_SHELL + # We cannot yet assume a decent shell, so we have to provide a +# neutralization value for shells without unset; and this also +# works around shells that cannot unset nonexistent variables. +# Preserve -v and -x to the replacement shell. +BASH_ENV=/dev/null +ENV=/dev/null +(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV +case $- in # (((( + *v*x* | *x*v* ) as_opts=-vx ;; + *v* ) as_opts=-v ;; + *x* ) as_opts=-x ;; + * ) as_opts= ;; +esac +exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} +# Admittedly, this is quite paranoid, since all the known shells bail +# out after a failed `exec'. +$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 +exit 255 +fi + + if test x$as_have_required = xno; then : + $as_echo "$0: This script requires a shell more modern than all" + $as_echo "$0: the shells that I found on your system." + if test x${ZSH_VERSION+set} = xset ; then + $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" + $as_echo "$0: be upgraded to zsh 4.3.4 or later." + else + $as_echo "$0: Please tell bug-autoconf@gnu.org about your system, +$0: including any error possibly output before this +$0: message. Then install a modern shell, or manually run +$0: the script under such a shell if you do have one." + fi + exit 1 +fi +fi +fi +SHELL=${CONFIG_SHELL-/bin/sh} +export SHELL +# Unset more variables known to interfere with behavior of common tools. +CLICOLOR_FORCE= GREP_OPTIONS= +unset CLICOLOR_FORCE GREP_OPTIONS + +## --------------------- ## +## M4sh Shell Functions. ## +## --------------------- ## +# as_fn_unset VAR +# --------------- +# Portably unset VAR. +as_fn_unset () +{ + { eval $1=; unset $1;} +} +as_unset=as_fn_unset + +# as_fn_set_status STATUS +# ----------------------- +# Set $? to STATUS, without forking. +as_fn_set_status () +{ + return $1 +} # as_fn_set_status + +# as_fn_exit STATUS +# ----------------- +# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. +as_fn_exit () +{ + set +e + as_fn_set_status $1 + exit $1 +} # as_fn_exit + +# as_fn_mkdir_p +# ------------- +# Create "$as_dir" as a directory, including parents if necessary. +as_fn_mkdir_p () +{ + + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || eval $as_mkdir_p || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" + + +} # as_fn_mkdir_p + +# as_fn_executable_p FILE +# ----------------------- +# Test if FILE is an executable regular file. +as_fn_executable_p () +{ + test -f "$1" && test -x "$1" +} # as_fn_executable_p +# as_fn_append VAR VALUE +# ---------------------- +# Append the text in VALUE to the end of the definition contained in VAR. Take +# advantage of any shell optimizations that allow amortized linear growth over +# repeated appends, instead of the typical quadratic growth present in naive +# implementations. +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : + eval 'as_fn_append () + { + eval $1+=\$2 + }' +else + as_fn_append () + { + eval $1=\$$1\$2 + } +fi # as_fn_append + +# as_fn_arith ARG... +# ------------------ +# Perform arithmetic evaluation on the ARGs, and store the result in the +# global $as_val. Take advantage of shells that can avoid forks. The arguments +# must be portable across $(()) and expr. +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : + eval 'as_fn_arith () + { + as_val=$(( $* )) + }' +else + as_fn_arith () + { + as_val=`expr "$@" || test $? -eq 1` + } +fi # as_fn_arith + + +# as_fn_error STATUS ERROR [LINENO LOG_FD] +# ---------------------------------------- +# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are +# provided, also output the error to LOG_FD, referencing LINENO. Then exit the +# script with STATUS, using 1 if that was 0. +as_fn_error () +{ + as_status=$1; test $as_status -eq 0 && as_status=1 + if test "$4"; then + as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + fi + $as_echo "$as_me: error: $2" >&2 + as_fn_exit $as_status +} # as_fn_error + +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + + + as_lineno_1=$LINENO as_lineno_1a=$LINENO + as_lineno_2=$LINENO as_lineno_2a=$LINENO + eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && + test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { + # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) + sed -n ' + p + /[$]LINENO/= + ' <$as_myself | + sed ' + s/[$]LINENO.*/&-/ + t lineno + b + :lineno + N + :loop + s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ + t loop + s/-\n.*// + ' >$as_me.lineno && + chmod +x "$as_me.lineno" || + { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } + + # If we had to re-execute with $CONFIG_SHELL, we're ensured to have + # already done that, so ensure we don't try to do so again and fall + # in an infinite loop. This has already happened in practice. + _as_can_reexec=no; export _as_can_reexec + # Don't try to exec as it changes $[0], causing all sort of problems + # (the dirname of $[0] is not the place where we might find the + # original and so on. Autoconf is especially sensitive to this). + . "./$as_me.lineno" + # Exit status is that of the last command. + exit +} + +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in #((((( +-n*) + case `echo 'xy\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + xy) ECHO_C='\c';; + *) echo `echo ksh88 bug on AIX 6.1` > /dev/null + ECHO_T=' ';; + esac;; +*) + ECHO_N='-n';; +esac + +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir 2>/dev/null +fi +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -pR'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -pR' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -pR' + fi +else + as_ln_s='cp -pR' +fi +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null + +if mkdir -p . 2>/dev/null; then + as_mkdir_p='mkdir -p "$as_dir"' +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + +as_test_x='test -x' +as_executable_p=as_fn_executable_p + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + + +test -n "$DJDIR" || exec 7<&0 &1 + +# Name of the host. +# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, +# so uname gets run too. +ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` + +# +# Initializations. +# +ac_default_prefix=/usr/local +ac_clean_files= +ac_config_libobj_dir=. +LIBOBJS= +cross_compiling=no +subdirs= +MFLAGS= +MAKEFLAGS= + +# Identity of this package. +PACKAGE_NAME='Intel(R) EPID SDK' +PACKAGE_TARNAME='intel-r--epid-sdk' +PACKAGE_VERSION=' ' +PACKAGE_STRING='Intel(R) EPID SDK ' +PACKAGE_BUGREPORT='' +PACKAGE_URL='' + +ac_default_prefix=`pwd`/_install +ac_subst_vars='LTLIBOBJS +LIBOBJS +ac_ct_CXX +CXXFLAGS +CXX +OBJEXT +EXEEXT +ac_ct_CC +CPPFLAGS +LDFLAGS +CFLAGS +CC +target_alias +host_alias +build_alias +LIBS +ECHO_T +ECHO_N +ECHO_C +DEFS +mandir +localedir +libdir +psdir +pdfdir +dvidir +htmldir +infodir +docdir +oldincludedir +includedir +localstatedir +sharedstatedir +sysconfdir +datadir +datarootdir +libexecdir +sbindir +bindir +program_transform_name +prefix +exec_prefix +PACKAGE_URL +PACKAGE_BUGREPORT +PACKAGE_STRING +PACKAGE_VERSION +PACKAGE_TARNAME +PACKAGE_NAME +PATH_SEPARATOR +SHELL' +ac_subst_files='' +ac_user_opts=' +enable_option_checking +' + ac_precious_vars='build_alias +host_alias +target_alias +CC +CFLAGS +LDFLAGS +LIBS +CPPFLAGS +CXX +CXXFLAGS +CCC' + + +# Initialize some variables set by options. +ac_init_help= +ac_init_version=false +ac_unrecognized_opts= +ac_unrecognized_sep= +# The variables have the same names as the options, with +# dashes changed to underlines. +cache_file=/dev/null +exec_prefix=NONE +no_create= +no_recursion= +prefix=NONE +program_prefix=NONE +program_suffix=NONE +program_transform_name=s,x,x, +silent= +site= +srcdir= +verbose= +x_includes=NONE +x_libraries=NONE + +# Installation directory options. +# These are left unexpanded so users can "make install exec_prefix=/foo" +# and all the variables that are supposed to be based on exec_prefix +# by default will actually change. +# Use braces instead of parens because sh, perl, etc. also accept them. +# (The list follows the same order as the GNU Coding Standards.) +bindir='${exec_prefix}/bin' +sbindir='${exec_prefix}/sbin' +libexecdir='${exec_prefix}/libexec' +datarootdir='${prefix}/share' +datadir='${datarootdir}' +sysconfdir='${prefix}/etc' +sharedstatedir='${prefix}/com' +localstatedir='${prefix}/var' +includedir='${prefix}/include' +oldincludedir='/usr/include' +docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' +infodir='${datarootdir}/info' +htmldir='${docdir}' +dvidir='${docdir}' +pdfdir='${docdir}' +psdir='${docdir}' +libdir='${exec_prefix}/lib' +localedir='${datarootdir}/locale' +mandir='${datarootdir}/man' + +ac_prev= +ac_dashdash= +for ac_option +do + # If the previous option needs an argument, assign it. + if test -n "$ac_prev"; then + eval $ac_prev=\$ac_option + ac_prev= + continue + fi + + case $ac_option in + *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; + *=) ac_optarg= ;; + *) ac_optarg=yes ;; + esac + + # Accept the important Cygnus configure options, so we can diagnose typos. + + case $ac_dashdash$ac_option in + --) + ac_dashdash=yes ;; + + -bindir | --bindir | --bindi | --bind | --bin | --bi) + ac_prev=bindir ;; + -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) + bindir=$ac_optarg ;; + + -build | --build | --buil | --bui | --bu) + ac_prev=build_alias ;; + -build=* | --build=* | --buil=* | --bui=* | --bu=*) + build_alias=$ac_optarg ;; + + -cache-file | --cache-file | --cache-fil | --cache-fi \ + | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) + ac_prev=cache_file ;; + -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ + | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) + cache_file=$ac_optarg ;; + + --config-cache | -C) + cache_file=config.cache ;; + + -datadir | --datadir | --datadi | --datad) + ac_prev=datadir ;; + -datadir=* | --datadir=* | --datadi=* | --datad=*) + datadir=$ac_optarg ;; + + -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ + | --dataroo | --dataro | --datar) + ac_prev=datarootdir ;; + -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ + | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) + datarootdir=$ac_optarg ;; + + -disable-* | --disable-*) + ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid feature name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"enable_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval enable_$ac_useropt=no ;; + + -docdir | --docdir | --docdi | --doc | --do) + ac_prev=docdir ;; + -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) + docdir=$ac_optarg ;; + + -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) + ac_prev=dvidir ;; + -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) + dvidir=$ac_optarg ;; + + -enable-* | --enable-*) + ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid feature name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"enable_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval enable_$ac_useropt=\$ac_optarg ;; + + -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ + | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ + | --exec | --exe | --ex) + ac_prev=exec_prefix ;; + -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ + | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ + | --exec=* | --exe=* | --ex=*) + exec_prefix=$ac_optarg ;; + + -gas | --gas | --ga | --g) + # Obsolete; use --with-gas. + with_gas=yes ;; + + -help | --help | --hel | --he | -h) + ac_init_help=long ;; + -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) + ac_init_help=recursive ;; + -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) + ac_init_help=short ;; + + -host | --host | --hos | --ho) + ac_prev=host_alias ;; + -host=* | --host=* | --hos=* | --ho=*) + host_alias=$ac_optarg ;; + + -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) + ac_prev=htmldir ;; + -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ + | --ht=*) + htmldir=$ac_optarg ;; + + -includedir | --includedir | --includedi | --included | --include \ + | --includ | --inclu | --incl | --inc) + ac_prev=includedir ;; + -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ + | --includ=* | --inclu=* | --incl=* | --inc=*) + includedir=$ac_optarg ;; + + -infodir | --infodir | --infodi | --infod | --info | --inf) + ac_prev=infodir ;; + -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) + infodir=$ac_optarg ;; + + -libdir | --libdir | --libdi | --libd) + ac_prev=libdir ;; + -libdir=* | --libdir=* | --libdi=* | --libd=*) + libdir=$ac_optarg ;; + + -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ + | --libexe | --libex | --libe) + ac_prev=libexecdir ;; + -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ + | --libexe=* | --libex=* | --libe=*) + libexecdir=$ac_optarg ;; + + -localedir | --localedir | --localedi | --localed | --locale) + ac_prev=localedir ;; + -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) + localedir=$ac_optarg ;; + + -localstatedir | --localstatedir | --localstatedi | --localstated \ + | --localstate | --localstat | --localsta | --localst | --locals) + ac_prev=localstatedir ;; + -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ + | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) + localstatedir=$ac_optarg ;; + + -mandir | --mandir | --mandi | --mand | --man | --ma | --m) + ac_prev=mandir ;; + -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) + mandir=$ac_optarg ;; + + -nfp | --nfp | --nf) + # Obsolete; use --without-fp. + with_fp=no ;; + + -no-create | --no-create | --no-creat | --no-crea | --no-cre \ + | --no-cr | --no-c | -n) + no_create=yes ;; + + -no-recursion | --no-recursion | --no-recursio | --no-recursi \ + | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) + no_recursion=yes ;; + + -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ + | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ + | --oldin | --oldi | --old | --ol | --o) + ac_prev=oldincludedir ;; + -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ + | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ + | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) + oldincludedir=$ac_optarg ;; + + -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) + ac_prev=prefix ;; + -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) + prefix=$ac_optarg ;; + + -program-prefix | --program-prefix | --program-prefi | --program-pref \ + | --program-pre | --program-pr | --program-p) + ac_prev=program_prefix ;; + -program-prefix=* | --program-prefix=* | --program-prefi=* \ + | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) + program_prefix=$ac_optarg ;; + + -program-suffix | --program-suffix | --program-suffi | --program-suff \ + | --program-suf | --program-su | --program-s) + ac_prev=program_suffix ;; + -program-suffix=* | --program-suffix=* | --program-suffi=* \ + | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) + program_suffix=$ac_optarg ;; + + -program-transform-name | --program-transform-name \ + | --program-transform-nam | --program-transform-na \ + | --program-transform-n | --program-transform- \ + | --program-transform | --program-transfor \ + | --program-transfo | --program-transf \ + | --program-trans | --program-tran \ + | --progr-tra | --program-tr | --program-t) + ac_prev=program_transform_name ;; + -program-transform-name=* | --program-transform-name=* \ + | --program-transform-nam=* | --program-transform-na=* \ + | --program-transform-n=* | --program-transform-=* \ + | --program-transform=* | --program-transfor=* \ + | --program-transfo=* | --program-transf=* \ + | --program-trans=* | --program-tran=* \ + | --progr-tra=* | --program-tr=* | --program-t=*) + program_transform_name=$ac_optarg ;; + + -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) + ac_prev=pdfdir ;; + -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) + pdfdir=$ac_optarg ;; + + -psdir | --psdir | --psdi | --psd | --ps) + ac_prev=psdir ;; + -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) + psdir=$ac_optarg ;; + + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + silent=yes ;; + + -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) + ac_prev=sbindir ;; + -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ + | --sbi=* | --sb=*) + sbindir=$ac_optarg ;; + + -sharedstatedir | --sharedstatedir | --sharedstatedi \ + | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ + | --sharedst | --shareds | --shared | --share | --shar \ + | --sha | --sh) + ac_prev=sharedstatedir ;; + -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ + | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ + | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ + | --sha=* | --sh=*) + sharedstatedir=$ac_optarg ;; + + -site | --site | --sit) + ac_prev=site ;; + -site=* | --site=* | --sit=*) + site=$ac_optarg ;; + + -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) + ac_prev=srcdir ;; + -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) + srcdir=$ac_optarg ;; + + -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ + | --syscon | --sysco | --sysc | --sys | --sy) + ac_prev=sysconfdir ;; + -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ + | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) + sysconfdir=$ac_optarg ;; + + -target | --target | --targe | --targ | --tar | --ta | --t) + ac_prev=target_alias ;; + -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) + target_alias=$ac_optarg ;; + + -v | -verbose | --verbose | --verbos | --verbo | --verb) + verbose=yes ;; + + -version | --version | --versio | --versi | --vers | -V) + ac_init_version=: ;; + + -with-* | --with-*) + ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid package name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"with_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval with_$ac_useropt=\$ac_optarg ;; + + -without-* | --without-*) + ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid package name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"with_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval with_$ac_useropt=no ;; + + --x) + # Obsolete; use --with-x. + with_x=yes ;; + + -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ + | --x-incl | --x-inc | --x-in | --x-i) + ac_prev=x_includes ;; + -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ + | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) + x_includes=$ac_optarg ;; + + -x-libraries | --x-libraries | --x-librarie | --x-librari \ + | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) + ac_prev=x_libraries ;; + -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ + | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) + x_libraries=$ac_optarg ;; + + -*) as_fn_error $? "unrecognized option: \`$ac_option' +Try \`$0 --help' for more information" + ;; + + *=*) + ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` + # Reject names that are not valid shell variable names. + case $ac_envvar in #( + '' | [0-9]* | *[!_$as_cr_alnum]* ) + as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; + esac + eval $ac_envvar=\$ac_optarg + export $ac_envvar ;; + + *) + # FIXME: should be removed in autoconf 3.0. + $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 + expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && + $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 + : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" + ;; + + esac +done + +if test -n "$ac_prev"; then + ac_option=--`echo $ac_prev | sed 's/_/-/g'` + as_fn_error $? "missing argument to $ac_option" +fi + +if test -n "$ac_unrecognized_opts"; then + case $enable_option_checking in + no) ;; + fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; + *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; + esac +fi + +# Check all directory arguments for consistency. +for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ + datadir sysconfdir sharedstatedir localstatedir includedir \ + oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ + libdir localedir mandir +do + eval ac_val=\$$ac_var + # Remove trailing slashes. + case $ac_val in + */ ) + ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` + eval $ac_var=\$ac_val;; + esac + # Be sure to have absolute directory names. + case $ac_val in + [\\/$]* | ?:[\\/]* ) continue;; + NONE | '' ) case $ac_var in *prefix ) continue;; esac;; + esac + as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" +done + +# There might be people who depend on the old broken behavior: `$host' +# used to hold the argument of --host etc. +# FIXME: To remove some day. +build=$build_alias +host=$host_alias +target=$target_alias + +# FIXME: To remove some day. +if test "x$host_alias" != x; then + if test "x$build_alias" = x; then + cross_compiling=maybe + elif test "x$build_alias" != "x$host_alias"; then + cross_compiling=yes + fi +fi + +ac_tool_prefix= +test -n "$host_alias" && ac_tool_prefix=$host_alias- + +test "$silent" = yes && exec 6>/dev/null + + +ac_pwd=`pwd` && test -n "$ac_pwd" && +ac_ls_di=`ls -di .` && +ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || + as_fn_error $? "working directory cannot be determined" +test "X$ac_ls_di" = "X$ac_pwd_ls_di" || + as_fn_error $? "pwd does not report name of working directory" + + +# Find the source files, if location was not specified. +if test -z "$srcdir"; then + ac_srcdir_defaulted=yes + # Try the directory containing this script, then the parent directory. + ac_confdir=`$as_dirname -- "$as_myself" || +$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_myself" : 'X\(//\)[^/]' \| \ + X"$as_myself" : 'X\(//\)$' \| \ + X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_myself" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + srcdir=$ac_confdir + if test ! -r "$srcdir/$ac_unique_file"; then + srcdir=.. + fi +else + ac_srcdir_defaulted=no +fi +if test ! -r "$srcdir/$ac_unique_file"; then + test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." + as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" +fi +ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" +ac_abs_confdir=`( + cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" + pwd)` +# When building in place, set srcdir=. +if test "$ac_abs_confdir" = "$ac_pwd"; then + srcdir=. +fi +# Remove unnecessary trailing slashes from srcdir. +# Double slashes in file names in object file debugging info +# mess up M-x gdb in Emacs. +case $srcdir in +*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; +esac +for ac_var in $ac_precious_vars; do + eval ac_env_${ac_var}_set=\${${ac_var}+set} + eval ac_env_${ac_var}_value=\$${ac_var} + eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} + eval ac_cv_env_${ac_var}_value=\$${ac_var} +done + +# +# Report the --help message. +# +if test "$ac_init_help" = "long"; then + # Omit some internal or obsolete options to make the list less imposing. + # This message is too long to be a string in the A/UX 3.1 sh. + cat <<_ACEOF +\`configure' configures Intel(R) EPID SDK to adapt to many kinds of systems. + +Usage: $0 [OPTION]... [VAR=VALUE]... + +To assign environment variables (e.g., CC, CFLAGS...), specify them as +VAR=VALUE. See below for descriptions of some of the useful variables. + +Defaults for the options are specified in brackets. + +Configuration: + -h, --help display this help and exit + --help=short display options specific to this package + --help=recursive display the short help of all the included packages + -V, --version display version information and exit + -q, --quiet, --silent do not print \`checking ...' messages + --cache-file=FILE cache test results in FILE [disabled] + -C, --config-cache alias for \`--cache-file=config.cache' + -n, --no-create do not create output files + --srcdir=DIR find the sources in DIR [configure dir or \`..'] + +Installation directories: + --prefix=PREFIX install architecture-independent files in PREFIX + [$ac_default_prefix] + --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX + [PREFIX] + +By default, \`make install' will install all the files in +\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify +an installation prefix other than \`$ac_default_prefix' using \`--prefix', +for instance \`--prefix=\$HOME'. + +For better control, use the options below. + +Fine tuning of the installation directories: + --bindir=DIR user executables [EPREFIX/bin] + --sbindir=DIR system admin executables [EPREFIX/sbin] + --libexecdir=DIR program executables [EPREFIX/libexec] + --sysconfdir=DIR read-only single-machine data [PREFIX/etc] + --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] + --localstatedir=DIR modifiable single-machine data [PREFIX/var] + --libdir=DIR object code libraries [EPREFIX/lib] + --includedir=DIR C header files [PREFIX/include] + --oldincludedir=DIR C header files for non-gcc [/usr/include] + --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] + --datadir=DIR read-only architecture-independent data [DATAROOTDIR] + --infodir=DIR info documentation [DATAROOTDIR/info] + --localedir=DIR locale-dependent data [DATAROOTDIR/locale] + --mandir=DIR man documentation [DATAROOTDIR/man] + --docdir=DIR documentation root + [DATAROOTDIR/doc/intel-r--epid-sdk] + --htmldir=DIR html documentation [DOCDIR] + --dvidir=DIR dvi documentation [DOCDIR] + --pdfdir=DIR pdf documentation [DOCDIR] + --psdir=DIR ps documentation [DOCDIR] +_ACEOF + + cat <<\_ACEOF +_ACEOF +fi + +if test -n "$ac_init_help"; then + case $ac_init_help in + short | recursive ) echo "Configuration of Intel(R) EPID SDK :";; + esac + cat <<\_ACEOF + +Some influential environment variables: + CC C compiler command + CFLAGS C compiler flags + LDFLAGS linker flags, e.g. -L if you have libraries in a + nonstandard directory + LIBS libraries to pass to the linker, e.g. -l + CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if + you have headers in a nonstandard directory + CXX C++ compiler command + CXXFLAGS C++ compiler flags + +Use these variables to override the choices made by `configure' or to help +it to find libraries and programs with nonstandard names/locations. + +Report bugs to the package provider. +_ACEOF +ac_status=$? +fi + +if test "$ac_init_help" = "recursive"; then + # If there are subdirs, report their specific --help. + for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue + test -d "$ac_dir" || + { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || + continue + ac_builddir=. + +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix + +case $srcdir in + .) # We are building in place. + ac_srcdir=. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + cd "$ac_dir" || { ac_status=$?; continue; } + # Check for guested configure. + if test -f "$ac_srcdir/configure.gnu"; then + echo && + $SHELL "$ac_srcdir/configure.gnu" --help=recursive + elif test -f "$ac_srcdir/configure"; then + echo && + $SHELL "$ac_srcdir/configure" --help=recursive + else + $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 + fi || ac_status=$? + cd "$ac_pwd" || { ac_status=$?; break; } + done +fi + +test -n "$ac_init_help" && exit $ac_status +if $ac_init_version; then + cat <<\_ACEOF +Intel(R) EPID SDK configure +generated by GNU Autoconf 2.69 + +Copyright (C) 2012 Free Software Foundation, Inc. +This configure script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it. +_ACEOF + exit +fi + +## ------------------------ ## +## Autoconf initialization. ## +## ------------------------ ## + +# ac_fn_c_try_compile LINENO +# -------------------------- +# Try to compile conftest.$ac_ext, and return whether this succeeded. +ac_fn_c_try_compile () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext + if { { ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compile") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_c_try_compile + +# ac_fn_cxx_try_compile LINENO +# ---------------------------- +# Try to compile conftest.$ac_ext, and return whether this succeeded. +ac_fn_cxx_try_compile () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext + if { { ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compile") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_cxx_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_cxx_try_compile +cat >config.log <<_ACEOF +This file contains any messages produced by compilers while +running configure, to aid debugging if configure makes a mistake. + +It was created by Intel(R) EPID SDK $as_me , which was +generated by GNU Autoconf 2.69. Invocation command line was + + $ $0 $@ + +_ACEOF +exec 5>>config.log +{ +cat <<_ASUNAME +## --------- ## +## Platform. ## +## --------- ## + +hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` +uname -m = `(uname -m) 2>/dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` + +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` + +/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` +/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` +/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` +/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` + +_ASUNAME + +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + $as_echo "PATH: $as_dir" + done +IFS=$as_save_IFS + +} >&5 + +cat >&5 <<_ACEOF + + +## ----------- ## +## Core tests. ## +## ----------- ## + +_ACEOF + + +# Keep a trace of the command line. +# Strip out --no-create and --no-recursion so they do not pile up. +# Strip out --silent because we don't want to record it for future runs. +# Also quote any args containing shell meta-characters. +# Make two passes to allow for proper duplicate-argument suppression. +ac_configure_args= +ac_configure_args0= +ac_configure_args1= +ac_must_keep_next=false +for ac_pass in 1 2 +do + for ac_arg + do + case $ac_arg in + -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + continue ;; + *\'*) + ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + case $ac_pass in + 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; + 2) + as_fn_append ac_configure_args1 " '$ac_arg'" + if test $ac_must_keep_next = true; then + ac_must_keep_next=false # Got value, back to normal. + else + case $ac_arg in + *=* | --config-cache | -C | -disable-* | --disable-* \ + | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ + | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ + | -with-* | --with-* | -without-* | --without-* | --x) + case "$ac_configure_args0 " in + "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; + esac + ;; + -* ) ac_must_keep_next=true ;; + esac + fi + as_fn_append ac_configure_args " '$ac_arg'" + ;; + esac + done +done +{ ac_configure_args0=; unset ac_configure_args0;} +{ ac_configure_args1=; unset ac_configure_args1;} + +# When interrupted or exit'd, cleanup temporary files, and complete +# config.log. We remove comments because anyway the quotes in there +# would cause problems or look ugly. +# WARNING: Use '\'' to represent an apostrophe within the trap. +# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. +trap 'exit_status=$? + # Save into config.log some information that might help in debugging. + { + echo + + $as_echo "## ---------------- ## +## Cache variables. ## +## ---------------- ##" + echo + # The following way of writing the cache mishandles newlines in values, +( + for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do + eval ac_val=\$$ac_var + case $ac_val in #( + *${as_nl}*) + case $ac_var in #( + *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 +$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; + esac + case $ac_var in #( + _ | IFS | as_nl) ;; #( + BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( + *) { eval $ac_var=; unset $ac_var;} ;; + esac ;; + esac + done + (set) 2>&1 | + case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( + *${as_nl}ac_space=\ *) + sed -n \ + "s/'\''/'\''\\\\'\'''\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" + ;; #( + *) + sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" + ;; + esac | + sort +) + echo + + $as_echo "## ----------------- ## +## Output variables. ## +## ----------------- ##" + echo + for ac_var in $ac_subst_vars + do + eval ac_val=\$$ac_var + case $ac_val in + *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + esac + $as_echo "$ac_var='\''$ac_val'\''" + done | sort + echo + + if test -n "$ac_subst_files"; then + $as_echo "## ------------------- ## +## File substitutions. ## +## ------------------- ##" + echo + for ac_var in $ac_subst_files + do + eval ac_val=\$$ac_var + case $ac_val in + *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + esac + $as_echo "$ac_var='\''$ac_val'\''" + done | sort + echo + fi + + if test -s confdefs.h; then + $as_echo "## ----------- ## +## confdefs.h. ## +## ----------- ##" + echo + cat confdefs.h + echo + fi + test "$ac_signal" != 0 && + $as_echo "$as_me: caught signal $ac_signal" + $as_echo "$as_me: exit $exit_status" + } >&5 + rm -f core *.core core.conftest.* && + rm -f -r conftest* confdefs* conf$$* $ac_clean_files && + exit $exit_status +' 0 +for ac_signal in 1 2 13 15; do + trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal +done +ac_signal=0 + +# confdefs.h avoids OS command line length limits that DEFS can exceed. +rm -f -r conftest* confdefs.h + +$as_echo "/* confdefs.h */" > confdefs.h + +# Predefined preprocessor variables. + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_NAME "$PACKAGE_NAME" +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_TARNAME "$PACKAGE_TARNAME" +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_VERSION "$PACKAGE_VERSION" +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_STRING "$PACKAGE_STRING" +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_URL "$PACKAGE_URL" +_ACEOF + + +# Let the site file select an alternate cache file if it wants to. +# Prefer an explicitly selected file to automatically selected ones. +ac_site_file1=NONE +ac_site_file2=NONE +if test -n "$CONFIG_SITE"; then + # We do not want a PATH search for config.site. + case $CONFIG_SITE in #(( + -*) ac_site_file1=./$CONFIG_SITE;; + */*) ac_site_file1=$CONFIG_SITE;; + *) ac_site_file1=./$CONFIG_SITE;; + esac +elif test "x$prefix" != xNONE; then + ac_site_file1=$prefix/share/config.site + ac_site_file2=$prefix/etc/config.site +else + ac_site_file1=$ac_default_prefix/share/config.site + ac_site_file2=$ac_default_prefix/etc/config.site +fi +for ac_site_file in "$ac_site_file1" "$ac_site_file2" +do + test "x$ac_site_file" = xNONE && continue + if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 +$as_echo "$as_me: loading site script $ac_site_file" >&6;} + sed 's/^/| /' "$ac_site_file" >&5 + . "$ac_site_file" \ + || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "failed to load site script $ac_site_file +See \`config.log' for more details" "$LINENO" 5; } + fi +done + +if test -r "$cache_file"; then + # Some versions of bash will fail to source /dev/null (special files + # actually), so we avoid doing that. DJGPP emulates it as a regular file. + if test /dev/null != "$cache_file" && test -f "$cache_file"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 +$as_echo "$as_me: loading cache $cache_file" >&6;} + case $cache_file in + [\\/]* | ?:[\\/]* ) . "$cache_file";; + *) . "./$cache_file";; + esac + fi +else + { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 +$as_echo "$as_me: creating cache $cache_file" >&6;} + >$cache_file +fi + +# Check that the precious variables saved in the cache have kept the same +# value. +ac_cache_corrupted=false +for ac_var in $ac_precious_vars; do + eval ac_old_set=\$ac_cv_env_${ac_var}_set + eval ac_new_set=\$ac_env_${ac_var}_set + eval ac_old_val=\$ac_cv_env_${ac_var}_value + eval ac_new_val=\$ac_env_${ac_var}_value + case $ac_old_set,$ac_new_set in + set,) + { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 +$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,set) + { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 +$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,);; + *) + if test "x$ac_old_val" != "x$ac_new_val"; then + # differences in whitespace do not lead to failure. + ac_old_val_w=`echo x $ac_old_val` + ac_new_val_w=`echo x $ac_new_val` + if test "$ac_old_val_w" != "$ac_new_val_w"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 +$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} + ac_cache_corrupted=: + else + { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 +$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} + eval $ac_var=\$ac_old_val + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 +$as_echo "$as_me: former value: \`$ac_old_val'" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 +$as_echo "$as_me: current value: \`$ac_new_val'" >&2;} + fi;; + esac + # Pass precious variables to config.status. + if test "$ac_new_set" = set; then + case $ac_new_val in + *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; + *) ac_arg=$ac_var=$ac_new_val ;; + esac + case " $ac_configure_args " in + *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. + *) as_fn_append ac_configure_args " '$ac_arg'" ;; + esac + fi +done +if $ac_cache_corrupted; then + { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 +$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} + as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 +fi +## -------------------- ## +## Main body of script. ## +## -------------------- ## + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + +# save flags +CFLAGS_OLD="$CFLAGS" +CPPFLAGS_OLD="$CPPFLAGS" + +#c compiler priority +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +if test -n "$ac_tool_prefix"; then + for ac_prog in gcc icc cc + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="$ac_tool_prefix$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$CC" && break + done +fi +if test -z "$CC"; then + ac_ct_CC=$CC + for ac_prog in gcc icc cc +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +$as_echo "$ac_ct_CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$ac_ct_CC" && break +done + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +fi + + +test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "no acceptable C compiler found in \$PATH +See \`config.log' for more details" "$LINENO" 5; } + +# Provide some information about the compiler. +$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 +set X $ac_compile +ac_compiler=$2 +for ac_option in --version -v -V -qversion; do + { { ac_try="$ac_compiler $ac_option >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compiler $ac_option >&5") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + sed '10a\ +... rest of stderr output deleted ... + 10q' conftest.err >conftest.er1 + cat conftest.er1 >&5 + fi + rm -f conftest.er1 conftest.err + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +done + +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" +# Try to create an executable without -o first, disregard a.out. +# It will help us diagnose broken compilers, and finding out an intuition +# of exeext. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 +$as_echo_n "checking whether the C compiler works... " >&6; } +ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` + +# The possible output files: +ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" + +ac_rmfiles= +for ac_file in $ac_files +do + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; + * ) ac_rmfiles="$ac_rmfiles $ac_file";; + esac +done +rm -f $ac_rmfiles + +if { { ac_try="$ac_link_default" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link_default") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then : + # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. +# So ignore a value of `no', otherwise this would lead to `EXEEXT = no' +# in a Makefile. We should not override ac_cv_exeext if it was cached, +# so that the user can short-circuit this test for compilers unknown to +# Autoconf. +for ac_file in $ac_files '' +do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) + ;; + [ab].out ) + # We found the default executable, but exeext='' is most + # certainly right. + break;; + *.* ) + if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; + then :; else + ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + fi + # We set ac_cv_exeext here because the later test for it is not + # safe: cross compilers may not add the suffix if given an `-o' + # argument, so we may need to know it at that point already. + # Even if this section looks crufty: it has the advantage of + # actually working. + break;; + * ) + break;; + esac +done +test "$ac_cv_exeext" = no && ac_cv_exeext= + +else + ac_file='' +fi +if test -z "$ac_file"; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +$as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error 77 "C compiler cannot create executables +See \`config.log' for more details" "$LINENO" 5; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 +$as_echo_n "checking for C compiler default output file name... " >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 +$as_echo "$ac_file" >&6; } +ac_exeext=$ac_cv_exeext + +rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out +ac_clean_files=$ac_clean_files_save +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 +$as_echo_n "checking for suffix of executables... " >&6; } +if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then : + # If both `conftest.exe' and `conftest' are `present' (well, observable) +# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will +# work properly (i.e., refer to `conftest.exe'), while it won't with +# `rm'. +for ac_file in conftest.exe conftest conftest.*; do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; + *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + break;; + * ) break;; + esac +done +else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot compute suffix of executables: cannot compile and link +See \`config.log' for more details" "$LINENO" 5; } +fi +rm -f conftest conftest$ac_cv_exeext +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 +$as_echo "$ac_cv_exeext" >&6; } + +rm -f conftest.$ac_ext +EXEEXT=$ac_cv_exeext +ac_exeext=$EXEEXT +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main () +{ +FILE *f = fopen ("conftest.out", "w"); + return ferror (f) || fclose (f) != 0; + + ; + return 0; +} +_ACEOF +ac_clean_files="$ac_clean_files conftest.out" +# Check that the compiler produces executables we can run. If not, either +# the compiler is broken, or we cross compile. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 +$as_echo_n "checking whether we are cross compiling... " >&6; } +if test "$cross_compiling" != yes; then + { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + if { ac_try='./conftest$ac_cv_exeext' + { { case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then + cross_compiling=no + else + if test "$cross_compiling" = maybe; then + cross_compiling=yes + else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot run C compiled programs. +If you meant to cross compile, use \`--host'. +See \`config.log' for more details" "$LINENO" 5; } + fi + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 +$as_echo "$cross_compiling" >&6; } + +rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out +ac_clean_files=$ac_clean_files_save +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 +$as_echo_n "checking for suffix of object files... " >&6; } +if ${ac_cv_objext+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.o conftest.obj +if { { ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compile") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then : + for ac_file in conftest.o conftest.obj conftest.*; do + test -f "$ac_file" || continue; + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; + *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` + break;; + esac +done +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot compute suffix of object files: cannot compile +See \`config.log' for more details" "$LINENO" 5; } +fi +rm -f conftest.$ac_cv_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 +$as_echo "$ac_cv_objext" >&6; } +OBJEXT=$ac_cv_objext +ac_objext=$OBJEXT +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 +$as_echo_n "checking whether we are using the GNU C compiler... " >&6; } +if ${ac_cv_c_compiler_gnu+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_compiler_gnu=yes +else + ac_compiler_gnu=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +ac_cv_c_compiler_gnu=$ac_compiler_gnu + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 +$as_echo "$ac_cv_c_compiler_gnu" >&6; } +if test $ac_compiler_gnu = yes; then + GCC=yes +else + GCC= +fi +ac_test_CFLAGS=${CFLAGS+set} +ac_save_CFLAGS=$CFLAGS +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 +$as_echo_n "checking whether $CC accepts -g... " >&6; } +if ${ac_cv_prog_cc_g+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_save_c_werror_flag=$ac_c_werror_flag + ac_c_werror_flag=yes + ac_cv_prog_cc_g=no + CFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_prog_cc_g=yes +else + CFLAGS="" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + +else + ac_c_werror_flag=$ac_save_c_werror_flag + CFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_prog_cc_g=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ac_c_werror_flag=$ac_save_c_werror_flag +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 +$as_echo "$ac_cv_prog_cc_g" >&6; } +if test "$ac_test_CFLAGS" = set; then + CFLAGS=$ac_save_CFLAGS +elif test $ac_cv_prog_cc_g = yes; then + if test "$GCC" = yes; then + CFLAGS="-g -O2" + else + CFLAGS="-g" + fi +else + if test "$GCC" = yes; then + CFLAGS="-O2" + else + CFLAGS= + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 +$as_echo_n "checking for $CC option to accept ISO C89... " >&6; } +if ${ac_cv_prog_cc_c89+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_cv_prog_cc_c89=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +struct stat; +/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ +struct buf { int x; }; +FILE * (*rcsopen) (struct buf *, struct stat *, int); +static char *e (p, i) + char **p; + int i; +{ + return p[i]; +} +static char *f (char * (*g) (char **, int), char **p, ...) +{ + char *s; + va_list v; + va_start (v,p); + s = g (p, va_arg (v,int)); + va_end (v); + return s; +} + +/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has + function prototypes and stuff, but not '\xHH' hex character constants. + These don't provoke an error unfortunately, instead are silently treated + as 'x'. The following induces an error, until -std is added to get + proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an + array size at least. It's necessary to write '\x00'==0 to get something + that's true only with -std. */ +int osf4_cc_array ['\x00' == 0 ? 1 : -1]; + +/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters + inside strings and character constants. */ +#define FOO(x) 'x' +int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; + +int test (int i, double x); +struct s1 {int (*f) (int a);}; +struct s2 {int (*f) (double a);}; +int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); +int argc; +char **argv; +int +main () +{ +return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; + ; + return 0; +} +_ACEOF +for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ + -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_prog_cc_c89=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext + test "x$ac_cv_prog_cc_c89" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC + +fi +# AC_CACHE_VAL +case "x$ac_cv_prog_cc_c89" in + x) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +$as_echo "none needed" >&6; } ;; + xno) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +$as_echo "unsupported" >&6; } ;; + *) + CC="$CC $ac_cv_prog_cc_c89" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 +$as_echo "$ac_cv_prog_cc_c89" >&6; } ;; +esac +if test "x$ac_cv_prog_cc_c89" != xno; then : + +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +#c++ compiler priority +ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu +if test -z "$CXX"; then + if test -n "$CCC"; then + CXX=$CCC + else + if test -n "$ac_tool_prefix"; then + for ac_prog in g++ icpc c++ + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CXX+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CXX"; then + ac_cv_prog_CXX="$CXX" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CXX=$ac_cv_prog_CXX +if test -n "$CXX"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5 +$as_echo "$CXX" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$CXX" && break + done +fi +if test -z "$CXX"; then + ac_ct_CXX=$CXX + for ac_prog in g++ icpc c++ +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_CXX+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_CXX"; then + ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CXX="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_CXX=$ac_cv_prog_ac_ct_CXX +if test -n "$ac_ct_CXX"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CXX" >&5 +$as_echo "$ac_ct_CXX" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$ac_ct_CXX" && break +done + + if test "x$ac_ct_CXX" = x; then + CXX="g++" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CXX=$ac_ct_CXX + fi +fi + + fi +fi +# Provide some information about the compiler. +$as_echo "$as_me:${as_lineno-$LINENO}: checking for C++ compiler version" >&5 +set X $ac_compile +ac_compiler=$2 +for ac_option in --version -v -V -qversion; do + { { ac_try="$ac_compiler $ac_option >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compiler $ac_option >&5") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + sed '10a\ +... rest of stderr output deleted ... + 10q' conftest.err >conftest.er1 + cat conftest.er1 >&5 + fi + rm -f conftest.er1 conftest.err + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +done + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C++ compiler" >&5 +$as_echo_n "checking whether we are using the GNU C++ compiler... " >&6; } +if ${ac_cv_cxx_compiler_gnu+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + ac_compiler_gnu=yes +else + ac_compiler_gnu=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +ac_cv_cxx_compiler_gnu=$ac_compiler_gnu + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_compiler_gnu" >&5 +$as_echo "$ac_cv_cxx_compiler_gnu" >&6; } +if test $ac_compiler_gnu = yes; then + GXX=yes +else + GXX= +fi +ac_test_CXXFLAGS=${CXXFLAGS+set} +ac_save_CXXFLAGS=$CXXFLAGS +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -g" >&5 +$as_echo_n "checking whether $CXX accepts -g... " >&6; } +if ${ac_cv_prog_cxx_g+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_save_cxx_werror_flag=$ac_cxx_werror_flag + ac_cxx_werror_flag=yes + ac_cv_prog_cxx_g=no + CXXFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + ac_cv_prog_cxx_g=yes +else + CXXFLAGS="" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + +else + ac_cxx_werror_flag=$ac_save_cxx_werror_flag + CXXFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + ac_cv_prog_cxx_g=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ac_cxx_werror_flag=$ac_save_cxx_werror_flag +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_g" >&5 +$as_echo "$ac_cv_prog_cxx_g" >&6; } +if test "$ac_test_CXXFLAGS" = set; then + CXXFLAGS=$ac_save_CXXFLAGS +elif test $ac_cv_prog_cxx_g = yes; then + if test "$GXX" = yes; then + CXXFLAGS="-g -O2" + else + CXXFLAGS="-g" + fi +else + if test "$GXX" = yes; then + CXXFLAGS="-O2" + else + CXXFLAGS= + fi +fi +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + +# restore flags +CFLAGS="$CFLAGS_OLD" +CPPFLAGS="$CPPFLAGS_OLD" + +# default install path is current directory + +ac_config_files="$ac_config_files Makefile" + +cat >confcache <<\_ACEOF +# This file is a shell script that caches the results of configure +# tests run on this system so they can be shared between configure +# scripts and configure runs, see configure's option --config-cache. +# It is not useful on other systems. If it contains results you don't +# want to keep, you may remove or edit it. +# +# config.status only pays attention to the cache file if you give it +# the --recheck option to rerun configure. +# +# `ac_cv_env_foo' variables (set or unset) will be overridden when +# loading this file, other *unset* `ac_cv_foo' will be assigned the +# following values. + +_ACEOF + +# The following way of writing the cache mishandles newlines in values, +# but we know of no workaround that is simple, portable, and efficient. +# So, we kill variables containing newlines. +# Ultrix sh set writes to stderr and can't be redirected directly, +# and sets the high bit in the cache file unless we assign to the vars. +( + for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do + eval ac_val=\$$ac_var + case $ac_val in #( + *${as_nl}*) + case $ac_var in #( + *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 +$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; + esac + case $ac_var in #( + _ | IFS | as_nl) ;; #( + BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( + *) { eval $ac_var=; unset $ac_var;} ;; + esac ;; + esac + done + + (set) 2>&1 | + case $as_nl`(ac_space=' '; set) 2>&1` in #( + *${as_nl}ac_space=\ *) + # `set' does not quote correctly, so add quotes: double-quote + # substitution turns \\\\ into \\, and sed turns \\ into \. + sed -n \ + "s/'/'\\\\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" + ;; #( + *) + # `set' quotes correctly as required by POSIX, so do not add quotes. + sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" + ;; + esac | + sort +) | + sed ' + /^ac_cv_env_/b end + t clear + :clear + s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ + t end + s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ + :end' >>confcache +if diff "$cache_file" confcache >/dev/null 2>&1; then :; else + if test -w "$cache_file"; then + if test "x$cache_file" != "x/dev/null"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 +$as_echo "$as_me: updating cache $cache_file" >&6;} + if test ! -f "$cache_file" || test -h "$cache_file"; then + cat confcache >"$cache_file" + else + case $cache_file in #( + */* | ?:*) + mv -f confcache "$cache_file"$$ && + mv -f "$cache_file"$$ "$cache_file" ;; #( + *) + mv -f confcache "$cache_file" ;; + esac + fi + fi + else + { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 +$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} + fi +fi +rm -f confcache + +test "x$prefix" = xNONE && prefix=$ac_default_prefix +# Let make expand exec_prefix. +test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' + +# Transform confdefs.h into DEFS. +# Protect against shell expansion while executing Makefile rules. +# Protect against Makefile macro expansion. +# +# If the first sed substitution is executed (which looks for macros that +# take arguments), then branch to the quote section. Otherwise, +# look for a macro that doesn't take arguments. +ac_script=' +:mline +/\\$/{ + N + s,\\\n,, + b mline +} +t clear +:clear +s/^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*([^)]*)\)[ ]*\(.*\)/-D\1=\2/g +t quote +s/^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)/-D\1=\2/g +t quote +b any +:quote +s/[ `~#$^&*(){}\\|;'\''"<>?]/\\&/g +s/\[/\\&/g +s/\]/\\&/g +s/\$/$$/g +H +:any +${ + g + s/^\n// + s/\n/ /g + p +} +' +DEFS=`sed -n "$ac_script" confdefs.h` + + +ac_libobjs= +ac_ltlibobjs= +U= +for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue + # 1. Remove the extension, and $U if already installed. + ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' + ac_i=`$as_echo "$ac_i" | sed "$ac_script"` + # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR + # will be set to the directory where LIBOBJS objects are built. + as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" + as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' +done +LIBOBJS=$ac_libobjs + +LTLIBOBJS=$ac_ltlibobjs + + + +: "${CONFIG_STATUS=./config.status}" +ac_write_fail=0 +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files $CONFIG_STATUS" +{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 +$as_echo "$as_me: creating $CONFIG_STATUS" >&6;} +as_write_fail=0 +cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 +#! $SHELL +# Generated by $as_me. +# Run this file to recreate the current configuration. +# Compiler output produced by configure, useful for debugging +# configure, is in config.log if it exists. + +debug=false +ac_cs_recheck=false +ac_cs_silent=false + +SHELL=\${CONFIG_SHELL-$SHELL} +export SHELL +_ASEOF +cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 +## -------------------- ## +## M4sh Initialization. ## +## -------------------- ## + +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; +esac +fi + + +as_nl=' +' +export as_nl +# Printing a long string crashes Solaris 7 /usr/bin/printf. +as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo +# Prefer a ksh shell builtin over an external printf program on Solaris, +# but without wasting forks for bash or zsh. +if test -z "$BASH_VERSION$ZSH_VERSION" \ + && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='print -r --' + as_echo_n='print -rn --' +elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='printf %s\n' + as_echo_n='printf %s' +else + if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then + as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' + as_echo_n='/usr/ucb/echo -n' + else + as_echo_body='eval expr "X$1" : "X\\(.*\\)"' + as_echo_n_body='eval + arg=$1; + case $arg in #( + *"$as_nl"*) + expr "X$arg" : "X\\(.*\\)$as_nl"; + arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; + esac; + expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" + ' + export as_echo_n_body + as_echo_n='sh -c $as_echo_n_body as_echo' + fi + export as_echo_body + as_echo='sh -c $as_echo_body as_echo' +fi + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } +fi + + +# IFS +# We need space, tab and new line, in precisely that order. Quoting is +# there to prevent editors from complaining about space-tab. +# (If _AS_PATH_WALK were called with IFS unset, it would disable word +# splitting by setting IFS to empty value.) +IFS=" "" $as_nl" + +# Find who we are. Look in the path if we contain no directory separator. +as_myself= +case $0 in #(( + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break + done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as `sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + exit 1 +fi + +# Unset variables that we do not need and which cause bugs (e.g. in +# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" +# suppresses any "Segmentation fault" message there. '((' could +# trigger a bug in pdksh 5.2.14. +for as_var in BASH_ENV ENV MAIL MAILPATH +do eval test x\${$as_var+set} = xset \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# CDPATH. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + + +# as_fn_error STATUS ERROR [LINENO LOG_FD] +# ---------------------------------------- +# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are +# provided, also output the error to LOG_FD, referencing LINENO. Then exit the +# script with STATUS, using 1 if that was 0. +as_fn_error () +{ + as_status=$1; test $as_status -eq 0 && as_status=1 + if test "$4"; then + as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + fi + $as_echo "$as_me: error: $2" >&2 + as_fn_exit $as_status +} # as_fn_error + + +# as_fn_set_status STATUS +# ----------------------- +# Set $? to STATUS, without forking. +as_fn_set_status () +{ + return $1 +} # as_fn_set_status + +# as_fn_exit STATUS +# ----------------- +# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. +as_fn_exit () +{ + set +e + as_fn_set_status $1 + exit $1 +} # as_fn_exit + +# as_fn_unset VAR +# --------------- +# Portably unset VAR. +as_fn_unset () +{ + { eval $1=; unset $1;} +} +as_unset=as_fn_unset +# as_fn_append VAR VALUE +# ---------------------- +# Append the text in VALUE to the end of the definition contained in VAR. Take +# advantage of any shell optimizations that allow amortized linear growth over +# repeated appends, instead of the typical quadratic growth present in naive +# implementations. +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : + eval 'as_fn_append () + { + eval $1+=\$2 + }' +else + as_fn_append () + { + eval $1=\$$1\$2 + } +fi # as_fn_append + +# as_fn_arith ARG... +# ------------------ +# Perform arithmetic evaluation on the ARGs, and store the result in the +# global $as_val. Take advantage of shells that can avoid forks. The arguments +# must be portable across $(()) and expr. +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : + eval 'as_fn_arith () + { + as_val=$(( $* )) + }' +else + as_fn_arith () + { + as_val=`expr "$@" || test $? -eq 1` + } +fi # as_fn_arith + + +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in #((((( +-n*) + case `echo 'xy\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + xy) ECHO_C='\c';; + *) echo `echo ksh88 bug on AIX 6.1` > /dev/null + ECHO_T=' ';; + esac;; +*) + ECHO_N='-n';; +esac + +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir 2>/dev/null +fi +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -pR'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -pR' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -pR' + fi +else + as_ln_s='cp -pR' +fi +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null + + +# as_fn_mkdir_p +# ------------- +# Create "$as_dir" as a directory, including parents if necessary. +as_fn_mkdir_p () +{ + + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || eval $as_mkdir_p || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" + + +} # as_fn_mkdir_p +if mkdir -p . 2>/dev/null; then + as_mkdir_p='mkdir -p "$as_dir"' +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + + +# as_fn_executable_p FILE +# ----------------------- +# Test if FILE is an executable regular file. +as_fn_executable_p () +{ + test -f "$1" && test -x "$1" +} # as_fn_executable_p +as_test_x='test -x' +as_executable_p=as_fn_executable_p + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + + +exec 6>&1 +## ----------------------------------- ## +## Main body of $CONFIG_STATUS script. ## +## ----------------------------------- ## +_ASEOF +test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# Save the log message, to keep $0 and so on meaningful, and to +# report actual input values of CONFIG_FILES etc. instead of their +# values after options handling. +ac_log=" +This file was extended by Intel(R) EPID SDK $as_me , which was +generated by GNU Autoconf 2.69. Invocation command line was + + CONFIG_FILES = $CONFIG_FILES + CONFIG_HEADERS = $CONFIG_HEADERS + CONFIG_LINKS = $CONFIG_LINKS + CONFIG_COMMANDS = $CONFIG_COMMANDS + $ $0 $@ + +on `(hostname || uname -n) 2>/dev/null | sed 1q` +" + +_ACEOF + +case $ac_config_files in *" +"*) set x $ac_config_files; shift; ac_config_files=$*;; +esac + + + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +# Files that config.status was made for. +config_files="$ac_config_files" + +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +ac_cs_usage="\ +\`$as_me' instantiates files and other configuration actions +from templates according to the current configuration. Unless the files +and actions are specified as TAGs, all are instantiated by default. + +Usage: $0 [OPTION]... [TAG]... + + -h, --help print this help, then exit + -V, --version print version number and configuration settings, then exit + --config print configuration, then exit + -q, --quiet, --silent + do not print progress messages + -d, --debug don't remove temporary files + --recheck update $as_me by reconfiguring in the same conditions + --file=FILE[:TEMPLATE] + instantiate the configuration file FILE + +Configuration files: +$config_files + +Report bugs to the package provider." + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" +ac_cs_version="\\ +Intel(R) EPID SDK config.status +configured by $0, generated by GNU Autoconf 2.69, + with options \\"\$ac_cs_config\\" + +Copyright (C) 2012 Free Software Foundation, Inc. +This config.status script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it." + +ac_pwd='$ac_pwd' +srcdir='$srcdir' +test -n "\$AWK" || AWK=awk +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# The default lists apply if the user does not specify any file. +ac_need_defaults=: +while test $# != 0 +do + case $1 in + --*=?*) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` + ac_shift=: + ;; + --*=) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg= + ac_shift=: + ;; + *) + ac_option=$1 + ac_optarg=$2 + ac_shift=shift + ;; + esac + + case $ac_option in + # Handling of the options. + -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) + ac_cs_recheck=: ;; + --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) + $as_echo "$ac_cs_version"; exit ;; + --config | --confi | --conf | --con | --co | --c ) + $as_echo "$ac_cs_config"; exit ;; + --debug | --debu | --deb | --de | --d | -d ) + debug=: ;; + --file | --fil | --fi | --f ) + $ac_shift + case $ac_optarg in + *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + '') as_fn_error $? "missing file argument" ;; + esac + as_fn_append CONFIG_FILES " '$ac_optarg'" + ac_need_defaults=false;; + --he | --h | --help | --hel | -h ) + $as_echo "$ac_cs_usage"; exit ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil | --si | --s) + ac_cs_silent=: ;; + + # This is an error. + -*) as_fn_error $? "unrecognized option: \`$1' +Try \`$0 --help' for more information." ;; + + *) as_fn_append ac_config_targets " $1" + ac_need_defaults=false ;; + + esac + shift +done + +ac_configure_extra_args= + +if $ac_cs_silent; then + exec 6>/dev/null + ac_configure_extra_args="$ac_configure_extra_args --silent" +fi + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +if \$ac_cs_recheck; then + set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion + shift + \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 + CONFIG_SHELL='$SHELL' + export CONFIG_SHELL + exec "\$@" +fi + +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +exec 5>>config.log +{ + echo + sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX +## Running $as_me. ## +_ASBOX + $as_echo "$ac_log" +} >&5 + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 + +# Handling of arguments. +for ac_config_target in $ac_config_targets +do + case $ac_config_target in + "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; + + *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; + esac +done + + +# If the user did not use the arguments to specify the items to instantiate, +# then the envvar interface is used. Set only those that are not. +# We use the long form for the default assignment because of an extremely +# bizarre bug on SunOS 4.1.3. +if $ac_need_defaults; then + test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files +fi + +# Have a temporary directory for convenience. Make it in the build tree +# simply because there is no reason against having it here, and in addition, +# creating and moving files from /tmp can sometimes cause problems. +# Hook for its removal unless debugging. +# Note that there is a small window in which the directory will not be cleaned: +# after its creation but before its name has been assigned to `$tmp'. +$debug || +{ + tmp= ac_tmp= + trap 'exit_status=$? + : "${ac_tmp:=$tmp}" + { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status +' 0 + trap 'as_fn_exit 1' 1 2 13 15 +} +# Create a (secure) tmp directory for tmp files. + +{ + tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && + test -d "$tmp" +} || +{ + tmp=./conf$$-$RANDOM + (umask 077 && mkdir "$tmp") +} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 +ac_tmp=$tmp + +# Set up the scripts for CONFIG_FILES section. +# No need to generate them if there are no CONFIG_FILES. +# This happens for instance with `./config.status config.h'. +if test -n "$CONFIG_FILES"; then + + +ac_cr=`echo X | tr X '\015'` +# On cygwin, bash can eat \r inside `` if the user requested igncr. +# But we know of no other shell where ac_cr would be empty at this +# point, so we can use a bashism as a fallback. +if test "x$ac_cr" = x; then + eval ac_cr=\$\'\\r\' +fi +ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` +if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then + ac_cs_awk_cr='\\r' +else + ac_cs_awk_cr=$ac_cr +fi + +echo 'BEGIN {' >"$ac_tmp/subs1.awk" && +_ACEOF + + +{ + echo "cat >conf$$subs.awk <<_ACEOF" && + echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && + echo "_ACEOF" +} >conf$$subs.sh || + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 +ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` +ac_delim='%!_!# ' +for ac_last_try in false false false false false :; do + . ./conf$$subs.sh || + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 + + ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` + if test $ac_delim_n = $ac_delim_num; then + break + elif $ac_last_try; then + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 + else + ac_delim="$ac_delim!$ac_delim _$ac_delim!! " + fi +done +rm -f conf$$subs.sh + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && +_ACEOF +sed -n ' +h +s/^/S["/; s/!.*/"]=/ +p +g +s/^[^!]*!// +:repl +t repl +s/'"$ac_delim"'$// +t delim +:nl +h +s/\(.\{148\}\)..*/\1/ +t more1 +s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ +p +n +b repl +:more1 +s/["\\]/\\&/g; s/^/"/; s/$/"\\/ +p +g +s/.\{148\}// +t nl +:delim +h +s/\(.\{148\}\)..*/\1/ +t more2 +s/["\\]/\\&/g; s/^/"/; s/$/"/ +p +b +:more2 +s/["\\]/\\&/g; s/^/"/; s/$/"\\/ +p +g +s/.\{148\}// +t delim +' >$CONFIG_STATUS || ac_write_fail=1 +rm -f conf$$subs.awk +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +_ACAWK +cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && + for (key in S) S_is_set[key] = 1 + FS = "" + +} +{ + line = $ 0 + nfields = split(line, field, "@") + substed = 0 + len = length(field[1]) + for (i = 2; i < nfields; i++) { + key = field[i] + keylen = length(key) + if (S_is_set[key]) { + value = S[key] + line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) + len += length(value) + length(field[++i]) + substed = 1 + } else + len += 1 + keylen + } + + print line +} + +_ACAWK +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then + sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" +else + cat +fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ + || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 +_ACEOF + +# VPATH may cause trouble with some makes, so we remove sole $(srcdir), +# ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and +# trailing colons and then remove the whole line if VPATH becomes empty +# (actually we leave an empty line to preserve line numbers). +if test "x$srcdir" = x.; then + ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ +h +s/// +s/^/:/ +s/[ ]*$/:/ +s/:\$(srcdir):/:/g +s/:\${srcdir}:/:/g +s/:@srcdir@:/:/g +s/^:*// +s/:*$// +x +s/\(=[ ]*\).*/\1/ +G +s/\n// +s/^[^=]*=[ ]*$// +}' +fi + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +fi # test -n "$CONFIG_FILES" + + +eval set X " :F $CONFIG_FILES " +shift +for ac_tag +do + case $ac_tag in + :[FHLC]) ac_mode=$ac_tag; continue;; + esac + case $ac_mode$ac_tag in + :[FHL]*:*);; + :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; + :[FH]-) ac_tag=-:-;; + :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; + esac + ac_save_IFS=$IFS + IFS=: + set x $ac_tag + IFS=$ac_save_IFS + shift + ac_file=$1 + shift + + case $ac_mode in + :L) ac_source=$1;; + :[FH]) + ac_file_inputs= + for ac_f + do + case $ac_f in + -) ac_f="$ac_tmp/stdin";; + *) # Look for the file first in the build tree, then in the source tree + # (if the path is not absolute). The absolute path cannot be DOS-style, + # because $ac_f cannot contain `:'. + test -f "$ac_f" || + case $ac_f in + [\\/$]*) false;; + *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; + esac || + as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; + esac + case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac + as_fn_append ac_file_inputs " '$ac_f'" + done + + # Let's still pretend it is `configure' which instantiates (i.e., don't + # use $as_me), people would be surprised to read: + # /* config.h. Generated by config.status. */ + configure_input='Generated from '` + $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' + `' by configure.' + if test x"$ac_file" != x-; then + configure_input="$ac_file. $configure_input" + { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 +$as_echo "$as_me: creating $ac_file" >&6;} + fi + # Neutralize special characters interpreted by sed in replacement strings. + case $configure_input in #( + *\&* | *\|* | *\\* ) + ac_sed_conf_input=`$as_echo "$configure_input" | + sed 's/[\\\\&|]/\\\\&/g'`;; #( + *) ac_sed_conf_input=$configure_input;; + esac + + case $ac_tag in + *:-:* | *:-) cat >"$ac_tmp/stdin" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; + esac + ;; + esac + + ac_dir=`$as_dirname -- "$ac_file" || +$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + as_dir="$ac_dir"; as_fn_mkdir_p + ac_builddir=. + +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix + +case $srcdir in + .) # We are building in place. + ac_srcdir=. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + + case $ac_mode in + :F) + # + # CONFIG_FILE + # + +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# If the template does not know about datarootdir, expand it. +# FIXME: This hack should be removed a few years after 2.60. +ac_datarootdir_hack=; ac_datarootdir_seen= +ac_sed_dataroot=' +/datarootdir/ { + p + q +} +/@datadir@/p +/@docdir@/p +/@infodir@/p +/@localedir@/p +/@mandir@/p' +case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in +*datarootdir*) ac_datarootdir_seen=yes;; +*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 +$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 + ac_datarootdir_hack=' + s&@datadir@&$datadir&g + s&@docdir@&$docdir&g + s&@infodir@&$infodir&g + s&@localedir@&$localedir&g + s&@mandir@&$mandir&g + s&\\\${datarootdir}&$datarootdir&g' ;; +esac +_ACEOF + +# Neutralize VPATH when `$srcdir' = `.'. +# Shell code in configure.ac might set extrasub. +# FIXME: do we really want to maintain this feature? +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +ac_sed_extra="$ac_vpsub +$extrasub +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +:t +/@[a-zA-Z_][a-zA-Z_0-9]*@/!b +s|@configure_input@|$ac_sed_conf_input|;t t +s&@top_builddir@&$ac_top_builddir_sub&;t t +s&@top_build_prefix@&$ac_top_build_prefix&;t t +s&@srcdir@&$ac_srcdir&;t t +s&@abs_srcdir@&$ac_abs_srcdir&;t t +s&@top_srcdir@&$ac_top_srcdir&;t t +s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t +s&@builddir@&$ac_builddir&;t t +s&@abs_builddir@&$ac_abs_builddir&;t t +s&@abs_top_builddir@&$ac_abs_top_builddir&;t t +$ac_datarootdir_hack +" +eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ + >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + +test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && + { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && + { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ + "$ac_tmp/out"`; test -z "$ac_out"; } && + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined" >&5 +$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined" >&2;} + + rm -f "$ac_tmp/stdin" + case $ac_file in + -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; + *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; + esac \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + ;; + + + + esac + +done # for ac_tag + + +as_fn_exit 0 +_ACEOF +ac_clean_files=$ac_clean_files_save + +test $ac_write_fail = 0 || + as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 + + +# configure is writing to config.log, and then calls config.status. +# config.status does its own redirection, appending to config.log. +# Unfortunately, on DOS this fails, as config.log is still kept open +# by configure, so config.status won't be able to write to it; its +# output is simply discarded. So we exec the FD to /dev/null, +# effectively closing config.log, so it can be properly (re)opened and +# appended to by config.status. When coming back to configure, we +# need to make the FD available again. +if test "$no_create" != yes; then + ac_cs_success=: + ac_config_status_args= + test "$silent" = yes && + ac_config_status_args="$ac_config_status_args --quiet" + exec 5>/dev/null + $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false + exec 5>>config.log + # Use ||, not &&, to avoid exiting from the if with $? = 1, which + # would make configure fail if this is the last instruction. + $ac_cs_success || as_fn_exit 1 +fi +if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 +$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} +fi + + diff --git a/external/epid-sdk-3.0.0/configure.ac b/external/epid-sdk-3.0.0/configure.ac new file mode 100644 index 00000000..c5d30827 --- /dev/null +++ b/external/epid-sdk-3.0.0/configure.ac @@ -0,0 +1,20 @@ +AC_INIT([Intel(R) EPID SDK],[ ]) + +# save flags +CFLAGS_OLD="$CFLAGS" +CPPFLAGS_OLD="$CPPFLAGS" + +#c compiler priority +AC_PROG_CC([gcc icc cc]) +#c++ compiler priority +AC_PROG_CXX([g++ icpc c++]) + +# restore flags +CFLAGS="$CFLAGS_OLD" +CPPFLAGS="$CPPFLAGS_OLD" + +# default install path is current directory +AC_PREFIX_DEFAULT([`pwd`/_install]) +AC_CONFIG_FILES([Makefile]) +AC_OUTPUT + diff --git a/external/epid-sdk-3.0.0/doc/html/1_81_2file__parser_8h.html b/external/epid-sdk-3.0.0/doc/html/1_81_2file__parser_8h.html new file mode 100644 index 00000000..5019855e --- /dev/null +++ b/external/epid-sdk-3.0.0/doc/html/1_81_2file__parser_8h.html @@ -0,0 +1,104 @@ + + + + + + + +Intel® Enhanced Privacy ID SDK: epid/common/1.1/file_parser.h File Reference + + + + + + + + + + + + +
    +
    + + + + + + +
    + +
    +
    + + +
    +
    + +
    +
    +
    + +
    +
    + +
    +
    file_parser.h File Reference
    +
    +
    + +

    Epid 1.1 issuer material parsing utilities. +More...

    +
    #include <stddef.h>
    +#include "epid/common/1.1/types.h"
    +#include "epid/common/errors.h"
    +#include "epid/common/file_parser.h"
    +
    + + + + + + + + + + + + + +

    +Functions

    EpidStatus Epid11ParseGroupPubKeyFile (void const *buf, size_t len, EpidCaCertificate const *cert, Epid11GroupPubKey *pubkey)
     Extracts group public key from buffer in issuer binary format. More...
     
    EpidStatus Epid11ParsePrivRlFile (void const *buf, size_t len, EpidCaCertificate const *cert, Epid11PrivRl *rl, size_t *rl_len)
     Extracts private key revocation list from buffer in issuer binary format. More...
     
    EpidStatus Epid11ParseSigRlFile (void const *buf, size_t len, EpidCaCertificate const *cert, Epid11SigRl *rl, size_t *rl_len)
     Extracts signature revocation list from buffer in issuer binary format. More...
     
    EpidStatus Epid11ParseGroupRlFile (void const *buf, size_t len, EpidCaCertificate const *cert, Epid11GroupRl *rl, size_t *rl_len)
     Extracts group revocation list from buffer in issuer binary format. More...
     
    +

    Detailed Description

    +

    Epid 1.1 issuer material parsing utilities.

    +
    +
    + + + + + diff --git a/external/epid-sdk-3.0.0/doc/html/1_81_2types_8h.html b/external/epid-sdk-3.0.0/doc/html/1_81_2types_8h.html new file mode 100644 index 00000000..c5d3fb23 --- /dev/null +++ b/external/epid-sdk-3.0.0/doc/html/1_81_2types_8h.html @@ -0,0 +1,151 @@ + + + + + + + +Intel® Enhanced Privacy ID SDK: epid/common/1.1/types.h File Reference + + + + + + + + + + + + +
    +
    + + + + + + +
    + +
    +
    + + +
    +
    + +
    +
    +
    + +
    +
    + +
    +
    types.h File Reference
    +
    +
    + +

    SDK data types for Intel(R) EPID 1.1. +More...

    +
    #include <limits.h>
    +#include "epid/common/types.h"
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Data Structures

    struct  OctStr80
     80 bit octet string More...
     
    struct  OctStr600
     600 bit octet string More...
     
    struct  OctStr768
     768 bit octet string More...
     
    struct  Fq3ElemStr
     Serialized Fq3 element. More...
     
    struct  Epid11G2ElemStr
     Serialized Intel(R) EPID 1.1 G2 element. More...
     
    struct  Epid11GtElemStr
     Serialized Intel(R) EPID 1.1 GT element. More...
     
    struct  Epid11Params
     Intel(R) EPID 1.1 Parameters. More...
     
    struct  Epid11GroupPubKey
     Intel(R) EPID 1.1 group public key. More...
     
    struct  Epid11BasicSignature
     Intel(R) EPID 1.1 basic signature. More...
     
    struct  Epid11NrProof
     Intel(R) EPID 1.1 non-revoked Proof. More...
     
    struct  Epid11Signature
     Intel(R) EPID 1.1 Signature. More...
     
    struct  Epid11PrivRl
     Intel(R) EPID 1.1 private-key based revocation list. More...
     
    struct  Epid11SigRlEntry
     Intel(R) EPID 1.1 entry in SigRL (B,K) More...
     
    struct  Epid11SigRl
     Intel(R) EPID 1.1 signature based revocation list. More...
     
    struct  Epid11GroupRl
     Intel(R) EPID 1.1 group revocation list. More...
     
    + + + + + + + + + + +

    +Typedefs

    +typedef G1ElemStr Epid11G1ElemStr
     Serialized Intel(R) EPID 1.1 G1 element.
     
    +typedef G1ElemStr Epid11G3ElemStr
     Serialized Intel(R) EPID 1.1 G3 element.
     
    +typedef OctStr32 Epid11GroupId
     Intel(R) EPID 1.1 group ID.
     
    +

    Detailed Description

    +

    SDK data types for Intel(R) EPID 1.1.

    +
    +
    + + + + + diff --git a/external/epid-sdk-3.0.0/doc/html/Basenames.html b/external/epid-sdk-3.0.0/doc/html/Basenames.html new file mode 100644 index 00000000..91d749da --- /dev/null +++ b/external/epid-sdk-3.0.0/doc/html/Basenames.html @@ -0,0 +1,93 @@ + + + + + + + +Intel® Enhanced Privacy ID SDK: In-Depth Explanation of Basenames + + + + + + + + + + + + +
    +
    + + + + + + +
    + +
    +
    + + +
    +
    + +
    +
    +
    + +
    +
    +
    +
    In-Depth Explanation of Basenames
    +
    +
    +

    This in-depth explanation covers the use of basenames in the Intel® EPID scheme. It provides detail on name based signatures, random base signatures and how and when they are used.

    +


    +

    +

    +Random Base Signatures

    +

    By default, members sign using a random basename that is not shared with the verifier. This signing method is also referred to as signing using random base. Signing using random base provides the strongest privacy properties for the signer. If a member signs using random base, the signature generated by the member is anonymous.

    +

    When the signer and verifier agree to use random base, the basename is chosen at random for each signature. Two signatures using a random base cannot be linked to the same signer.

    +

    +Name Based Signatures

    +

    A name based signature is a type of signature that gives the verifier the ability to link Intel® EPID signatures from the same member, reducing the member's privacy. When using name based signatures, the signer and verifier agree on an explicit basename.

    +

    The verifier can ask the member to sign a message with a basename that the verifier chooses. If the member agrees to use a name based signature, then all the signatures created by the member using the same basename are linkable by the verifier, reducing the member's privacy.

    +

    Reasons why a verifier might require members to use a basename when signing include the following:

    +
      +
    • Profiling for Advertising Widget-Mart wants to show targeted advertising to privacy-conscious customers. Widget-Mart requests that all customers use a specific basename so that Widget-Mart can build an individualized profile for each anonymous user, while Intel® EPID technology ensures that the retailer does not have the ability to aggregate that information with other retailers to build a more extensive profile of the consumer.
    • +
    • Voting A voting machine is designed so that each anonymous authorized voter can only vote once per race. A basename per office being contested allows the verifier to confirm that the voter has not already voted for that office, without revealing their identity or correlating their voting patterns across multiple races.
    • +
    +
    Warning
    The use of a name-based signature creates a platform unique pseudonymous identifier. Because it reduces the member's privacy, the user should be notified when it is used and should have control over its use.
    +
    +
    + + + + + diff --git a/external/epid-sdk-3.0.0/doc/html/BuildToolsInstallation.html b/external/epid-sdk-3.0.0/doc/html/BuildToolsInstallation.html new file mode 100644 index 00000000..aa4a4772 --- /dev/null +++ b/external/epid-sdk-3.0.0/doc/html/BuildToolsInstallation.html @@ -0,0 +1,128 @@ + + + + + + + +Intel® Enhanced Privacy ID SDK: Guide to Installing Build Tools + + + + + + + + + + + + +
    +
    + + + + + + +
    + +
    +
    + + +
    +
    + +
    +
    +
    + +
    +
    +
    +
    Guide to Installing Build Tools
    +
    +
    + +

    Building SDK code out of the box requires a number of tools. This section explains how to install the following tools:

    + + + + + + + + + +
    Prerequisite Download Link
    Python python 2.7.12 installers
    SCons scons-2.4.1.zip
    Parts parts-0.11.0.zip
    +


    +

    +

    +Installing Python

    +
      +
    1. Download and install Python according to the installation procedure for your platform.
    2. +
    3. Make sure that the Python directory and the Python scripts directory are in the path.
    4. +
    +

    To verify that Python installed correctly, run:

        > python --version
    +


    +

    +

    +Installing SCons

    +

    After Python is installed, install SCons.

    +
      +
    1. Download and extract the files from the SCons archive.
    2. +
    3. To install SCons, go to the directory with the extracted files and run:
       > python setup.py install
      +
    4. +
    +
    Note
    You may need administrative privileges to execute this command.
    +


    + To verify that SCons installed correctly, run:

        > scons --version
    +


    +

    +

    +Installing Parts

    +

    After SCons is installed, install Parts.

    +
      +
    1. Download and extract the files from the Parts archive.
    2. +
    3. To install Parts, go to the directory with the extracted files and run:
       > python setup.py install
      +
    4. +
    +
    Note
    You may need administrative privileges to execute this command.
    +


    +

    +
    +
    + + + + + diff --git a/external/epid-sdk-3.0.0/doc/html/BuildingSdk.html b/external/epid-sdk-3.0.0/doc/html/BuildingSdk.html new file mode 100644 index 00000000..fcb2c1ec --- /dev/null +++ b/external/epid-sdk-3.0.0/doc/html/BuildingSdk.html @@ -0,0 +1,179 @@ + + + + + + + +Intel® Enhanced Privacy ID SDK: Building from Source + + + + + + + + + + + + +
    +
    + + + + + + +
    + +
    +
    + + +
    +
    + +
    +
    +
    + +
    +
    +
    +
    Building from Source
    +
    +
    + +

    To use the SDK in a project, the code from the SDK must be included in that project. The easiest way to do this is to link to static libraries. The SDK comes with build scripts to build static libraries for common environments.

    +

    +Prerequisites

    +

    Building SDK code out of the box requires a number of tools. This section lists the tools used to build the SDK.

    +

    For more information on how to install these tools, refer to Guide to Installing Build Tools.

    + + + + + + + + + + + +
    Prerequisite Notes
    A C/C++ compiler Core code in C. Unit tests need C++11 support.
    Python Validated with v2.7.10
    SCons Validated with v2.4.1
    Parts 0.10.9.2 or later
    +

    +Building SDK with SCons

    +

    To use the SDK, you need to build it to generate libraries compatible with your build environment.

    +

    To build based on the default SConstruct file in the root directory of the SDK, invoke scons with no arguments.

    cd <path/to/sdk-root>
    +scons
    +

    By default, this performs a 64 bit release build.

    +

    Potentially useful command line options:

    + + + + + + + + + + + + + + + + + + + + + + + + + +
    Option Action
    --cfg=debug Build in debug mode
    --cfg=release Build in release mode
    --target=x86 Target x86
    --target=x86_64 Target x86_64
    --tc=cl Use MSVC to compile (Microsoft®* C/C++ Optimizing Compiler)
    --tc=gcc Use GCC to compile (GNU* Compiler Collection)
    --tc=icl,mstools Use Intel® C++ compiler
    build:: Build the SDK (does not build unit tests)
    utest:: Build unit tests
    run_utest:: Run unit tests (builds tests if needed)
    -c Clean the build
    +

    Built components appear in the _install directory of the SDK root.

    +

    +Alternate Makefile/Autoconf Based Build Approach

    +

    You can build with the make command on platforms that support Make/Autoconf.

    +

    In the root directory of the SDK, run:

    ./configure
    +make all
    +make check
    +make install
    +

    ./configure sets up the default settings:

    +
      +
    • The default compilers are GCC/G++. You can specify compilers via the CC and CXX variables. For example, ./configure CC=/opt/intel/bin/icc CXX=/opt/intel/bin/icpc
    • +
    • The default installation directory is ./_install. You can specify the installation directory by using ./configure --prefix=/usr/local/epid_install
    • +
    • To change OS bit version, use CFLAGS parameter -m32 and -m64. For example, ./configure CFLAGS=-m32
    • +
    +

    make check is optional. It builds and runs the unit tests.

    +

    Alternatively, you can use make build as a shortcut to replace make all, make check, and make install.

    +

    To clean the build, run make clean.

    +

    To remove the install directory, run make uninstall.

    +

    +Improving Performance with Commercial IPP

    +

    For higher performance, you can use the commercial version of Cryptography for Intel® Integrated Performance Primitives, available at https://software.intel.com/articles/download-ipp-cryptography-libraries.

    +
    Note
    The SDK has been validated with v9.0.3 of the cryptography library.
    +

    To build the SDK using a commercial Intel® IPP installation, the IPPROOT environment variable must be properly configured to point to the IPP installation directory, as described in Setting Environment Variables* in the Intel® IPP User's Guide (PDF link).

    +

    Once the environment is configured, you can build using commercial IPP by specifying --use-commercial-ipp as a command line option.

    +

    +Example Programs

    +

    The SDK includes several examples that show you different aspects of how the Intel® EPID scheme works. In the SDK build, these examples are located in _install/epid-sdk/example.

    + + + + + + + +
    Name Description
    signmsg Create Intel® EPID signature of message
    verifysig Verify signature is from a group member in good standing
    +

    +Building with Other Build Systems

    +

    It is relatively straightforward to port the SDK to your build system of choice. The following dependency diagram shows the relationship between components and the sources used to build them.

    +
    +basicdoc.png +
    +


    +

    +

    Other names and brands may be claimed as the property of others.

    +
    +
    + + + + + diff --git a/external/epid-sdk-3.0.0/doc/html/ChangeLog.html b/external/epid-sdk-3.0.0/doc/html/ChangeLog.html new file mode 100644 index 00000000..0e48d4f7 --- /dev/null +++ b/external/epid-sdk-3.0.0/doc/html/ChangeLog.html @@ -0,0 +1,134 @@ + + + + + + + +Intel® Enhanced Privacy ID SDK: What's New + + + + + + + + + + + + +
    +
    + + + + + + +
    + +
    +
    + + +
    +
    + +
    +
    +
    + +
    +
    +
    +
    What's New
    +
    +
    +

    [3.0.0]

    +

    New in This Release

    +
      +
    • Support for verification of EPID 1.1 members.
    • +
    • Make-based build system support.
    • +
    • Sample material includes compressed keys.
    • +
    • Enhanced documentation, including step-by-step walkthroughs of example applications.
    • +
    • Validated on additional IoT platforms.
        +
      • Ostro Linux
      • +
      • Snappy Ubuntu Core
      • +
      +
    • +
    +

    Changes

    +
      +
    • A new verifier API has been added to set the basename to be used for verification. Verifier APIs that used to accept basenames now use the basename set via EpidVerifierSetBasename.
    • +
    • The verifier pre-computation structure has been changed to include the group ID to allow detection of errors that result from providing a pre-computation blob from a different group to EpidVerifierCreate.
    • +
    +

    Fixes

    +
      +
    • The kEpidxxxRevoked enums have been renamed to be consistent with other result return values.
    • +
    +

    Known Issues

    +
      +
    • SHA-512/256 hash algorithm is not supported.
    • +
    +

    [2.0.0] - 2016-07-20

    +

    New in This Release

    +
      +
    • Signed binary issuer material support.
        +
      • Binary issuer material validation APIs.
      • +
      • Updated sample issuer material.
      • +
      • Updated samples that parse signed binary issuer material.
      • +
      +
    • +
    • Compressed member private key support.
    • +
    • Validated on additional IoT platforms.
        +
      • Windows 10 IoT Core
      • +
      • WindRiver IDP
      • +
      +
    • +
    +

    Changes

    +
      +
    • The default hash algorithm has changed. It is now SHA-512.
    • +
    • Functions that returned EpidNullPtrErr now return EpidBadArgErr instead.
    • +
    +

    Fixes

    +
      +
    • Updated build flags to work around GCC 4.8.5 defect.
    • +
    +

    [1.0.0] - 2016-03-03

    +

    New in This Release

    +
      +
    • Basic sign and verify functionality
    • +
    • Dynamic join support for member
    • +
    • Apache 2.0 License
    • +
    +
    +
    + + + + + diff --git a/external/epid-sdk-3.0.0/doc/html/ChoosingiKGF.html b/external/epid-sdk-3.0.0/doc/html/ChoosingiKGF.html new file mode 100644 index 00000000..42c9de9a --- /dev/null +++ b/external/epid-sdk-3.0.0/doc/html/ChoosingiKGF.html @@ -0,0 +1,231 @@ + + + + + + + +Intel® Enhanced Privacy ID SDK: If You Choose iKGF as Your Issuer + + + + + + + + + + + + +
    +
    + + + + + + +
    + +
    +
    + + +
    +
    + +
    +
    +
    + +
    +
    +
    +
    If You Choose iKGF as Your Issuer
    +
    +
    + +

    To use the Intel® EPID APIs, you need to use the following items that are created by the issuer:

    +
      +
    • Group public key, which corresponds to the issuing private key kept by the issuer
    • +
    • Member private keys
    • +
    • Signature based revocation list (SigRL)
    • +
    • Private key based revocation list (PrivRL)
    • +
    • Group based revocation list (GroupRL)
    • +
    +

    If you want to use the Intel Key Generation Facility (iKGF) as the issuer, contact info@.nosp@m.digi.nosp@m.tal-c.nosp@m.p.co.nosp@m.m to get started.

    +

    If you choose to use iKGF as the issuer, you can take advantage of tools included in the SDK that are designed to make it easier for you to interact with iKGF by creating requests to update revocation lists and by extracting member private keys and group public keys from iKGF files.

    +

    +Tools for Creating Revocation Requests

    +

    The Intel® EPID SDK includes tools to help you request additions to revocation lists managed by iKGF if you are using iKGF as the issuer.

    +

    These tools are designed to create a revocation request in the format required by iKGF. In order to update a revocation list, the requests generated by these tools must be submitted to the issuer.

    +

    To access the tools, go to _install/epid-sdk/tools in the SDK directory.

    +

    You need to build the SDK before you can use these tools. For more information, refer to Building from Source.

    +

    The following tools are available:

    + + + + + + + + + +
    Tool Purpose
    revokegrp Create group revocation request
    revokekey Create member private key revocation request
    revokesig Create signature revocation request
    +

    +Requesting Group Revocation

    +

    The revokegrp tool adds a group to the revocation request file.

    Usage: revokegrp [OPTION]...
    +Revoke Intel(R) EPID group
    +
    +Options:
    +  --gpubkey=FILE
    +      load group public key from FILE (default: pubkey.bin)
    +
    +  --capubkey=FILE
    +      load IoT Issuing CA public key from FILE
    +
    +  --reason=NUM
    +      revocation reason (default: 0)
    +
    +  --req=FILE
    +      append group revocation request to FILE (default: grprlreq.dat)
    +
    +  -h, --help
    +      display this help and exit
    +
    +  -v, --verbose
    +      print status messages to stdout
    +

    +Requesting Private Key Revocation

    +

    The revokekey tool adds a member private key to the revocation request file.

    Usage: revokekey [OPTION]
    +Revoke Intel(R) EPID private key
    +
    +Options:
    +    --mprivkey=FILE
    +        load private key to revoke from FILE (default: mprivkey.dat)
    +
    +    --req=FILE
    +        append private key revocation request to FILE (default: privreq.dat)
    +
    +    -h, --help
    +        display this help and exit
    +
    +    -v,--verbose
    +        print status messages to stdout
    +
    +The following options are only needed for compressed keys:
    +
    +    --gpubkey=FILE
    +        load group public key from FILE (default: pubkey.bin)
    +
    +    --capubkey=FILE
    +        load IoT Issuing CA public key from FILE
    +

    +Requesting Signature Revocation

    +

    The revokesig tool creates a request to add a signature to the revocation request file.

    +

    revokesig only accepts valid signatures for addition to the revocation request.

    Usage: revokesig [OPTION]...
    +Revoke Intel(R) EPID signature
    +
    +Options:
    +  --sig=FILE
    +      load signature to revoke from FILE (default: sig.dat)
    +
    +  --msg=MESSAGE
    +      MESSAGE used to generate signature to revoke
    +
    +  --msgfile=FILE
    +      FILE containing message used to generate signature to revoke
    +
    +  --gpubkey=FILE
    +      load group public key from FILE (default: pubkey.bin)
    +
    +  --capubkey=FILE
    +      load IoT Issuing CA public key from FILE
    +
    +  --req=FILE
    +      append signature revocation request to FILE (default: sigrlreq.dat)
    +
    +  -h, --help
    +      display this help and exit
    +
    +  -v, --verbose
    +      print status messages to stdout
    +

    +Tools for Extracting Keys from iKGF Files

    +

    The Intel® EPID SDK includes tools to help you extract individual keys from files provided by the Intel Key Generation Facility (iKGF) if you are using iKGF as the issuer.

    +

    To access the tools, go to _install/epid-sdk/tools in the SDK directory.

    +

    You need to build the SDK before you can use these tools. For more information, refer to Building from Source.

    +

    The following tools are available:

    + + + + + + + +
    Tool Purpose
    extractgrps Extracts group public keys
    extractkeys Extracts member private keys
    +

    +Extracting Group Public Keys

    +

    The extractgrps tool extracts group public keys from the input file to the current directory.

    Usage: extractgrps [OPTION]... [FILE] [NUM]
    +Extract the first NUM group certs from FILE to current directory
    +
    +Options:
    +  -h, --help
    +      display this help and exit
    +
    +  -v, --verbose
    +      print status messages to stdout
    +

    +Extracting Member Private Keys

    +

    The extractkeys tool extracts member private keys from the input file to the current directory.

    Usage: extractkeys [OPTION]... [FILE] [NUM]
    +Extract the first NUM private keys from FILE to current directory.
    +
    +Options:
    +  -c, --compressed
    +      extract compressed keys
    +
    +  -h, --help
    +      display this help and exit
    +
    +  -v, --verbose
    +      print status messages to stdout
    +
    + + + + + diff --git a/external/epid-sdk-3.0.0/doc/html/EpidOverview.html b/external/epid-sdk-3.0.0/doc/html/EpidOverview.html new file mode 100644 index 00000000..f7209054 --- /dev/null +++ b/external/epid-sdk-3.0.0/doc/html/EpidOverview.html @@ -0,0 +1,173 @@ + + + + + + + +Intel® Enhanced Privacy ID SDK: Introduction to the Intel® EPID Scheme + + + + + + + + + + + + +
    +
    + + + + + + +
    + +
    +
    + + +
    +
    + +
    +
    +
    + +
    +
    +
    +
    Introduction to the Intel® EPID Scheme
    +
    +
    + +

    Intel® EPID is a cryptographic protocol which enables the remote authentication of a trusted platform whilst preserving the user's privacy.

    +

    +Roles

    +

    In the Intel® EPID scheme, there are three roles: issuers, members, and verifiers.

    +

    The entities in these roles interact with each other in such a way that a member can prove to a verifier that it is a trusted member of a group without disclosing the identity of the member. Groups are created and managed by the issuer.

    +
    +epid_diagram_high_level_use_case.png +
    +

    +Issuers

    +

    The issuer is responsible for managing group membership. Issuer functionality is not included in the SDK.

    +

    The issuer manages groups by doing the following:

    +
      +
    • Creates groups by generating one issuing private key and one group certificate for each group. The group certificate contains the group public key.
    • +
    • Creates group members by generating unique Intel® EPID member private keys through bulk provisioning. Member private keys are created from the issuing private key for the group.
    • +
    • Manages requests from prospective members to join existing groups by using the join protocol.
    • +
    • Creates and maintains signature based revocation lists and private key based revocation lists. These lists of members no longer in good standing allow members to be dropped from a group.
    • +
    • Creates and maintains group revocation lists.
    • +
    • Makes group public keys and revocation lists available to verifiers.
    • +
    +
    +epid_diagram_issuer_high_level.png +
    +

    +Members

    +

    The member is the entity that attempts to anonymously prove its group membership to the verifier.

    +
      +
    • Members are authorized by the issuer as part of a group.
    • +
    • Each group member has a unique Intel® EPID private key, which corresponds to the group.
    • +
    • The member uses its member private key to sign a message to prove group membership to the verifier without revealing the identity of the member.
    • +
    +
    +epid_diagram_member_high_level.png +
    +

    +Verifiers

    +

    The verifier checks an Intel(R) EPID signature to establish whether it was signed by an entity or device that is a member in good standing.

    +

    The verifier acts on behalf of a party that needs to know it is communicating with a trusted device. Verifiers obtain group certificates and revocation lists from issuers and negotiate details of signature protocol with members.

    +

    A verifier can do the following:

    +
      +
    • Confirm a member is in fact a member of a given group in good standing.
    • +
    • Obtain group certificates and revocation lists from issuers.
    • +
    • Negotiate details of signature protocol with members.
    • +
    • Manage a private list of revoked members, also called the verifier blacklist.
    • +
    +
    +epid_diagram_verifier_high_level.png +
    +

    +Groups

    +

    An Intel® EPID group represents a set of trusted entities called members. Issuers create groups and manage group membership. For each group, the issuer creates a group public key simultaneously with the corresponding issuing private key. The issuer uses the issuing private key to create unique member private keys for each group member, and makes the group public key available to verifiers.

    +

    All groups have the following:

    +
      +
    • Group public key, which corresponds to the issuing private key kept by the issuer
    • +
    • Signature based revocation list
    • +
    • Private key based revocation list
    • +
    • Member private keys, generated from the issuing private key
    • +
    +

    If a signature based revocation list or private key based revocation list does not exist, it is assumed to be empty.

    +

    +Keys

    +

    The Intel® EPID scheme works with three types of keys: the group public key, the issuing private key, and the member private key. A group public key corresponds to the unique member private keys that are part of the group. Member private keys are generated from the issuing private key.

    +

    Additionally, in the Intel® EPID scheme, a private key can be revoked given a signature created by that key, even if the key itself is still unknown. Group membership can be revoked and entire groups can be revoked. For more information on revocation, refer to In-Depth Explanation of Revocation.

    +

    +Group Public Key

    +

    The group public key is the key used by the verifier to confirm that a member belongs to a group in good standing. Each member private key in a group is associated with the group's public key.

    +

    When a group is created, the group public key and the issuing private key are simultaneously generated by the issuer. The verifier obtains the group public key from the issuer.

    +

    +Issuing Private Key

    +

    The issuing private key is the key used by the issuer to generate unique private keys for each member of a given group. For every group public key, there is a corresponding issuing private key. The issuing private key remains with the issuer and is kept private.

    +

    +Member Private Key

    +

    The member private key is the key used by the member to digitally sign a message when attempting to prove to the verifier that the member belongs to the group and is in good standing.

    +

    Unique member private keys are generated by the issuer for each member of a given group. The same group public key corresponds to each member private key in the group.

    +

    +Member and Verifier Interaction

    +

    Each Intel® EPID member uses its Intel® EPID private key to digitally sign a message. The resulting signature is called an Intel® EPID signature.

    +

    The Intel® EPID verifier uses the group public key to verify the correctness of an Intel® EPID signature, i.e., to verify that the signature was indeed created by a member with a valid Intel® EPID private key.

    +

    However, the Intel® EPID signature does not convey any information about which unique private key was used to create the signature.

    +
    +epid_diagram_high_level_interaction.png +
    +
    +
    + + + + + diff --git a/external/epid-sdk-3.0.0/doc/html/Examples.html b/external/epid-sdk-3.0.0/doc/html/Examples.html new file mode 100644 index 00000000..a69755f9 --- /dev/null +++ b/external/epid-sdk-3.0.0/doc/html/Examples.html @@ -0,0 +1,85 @@ + + + + + + + +Intel® Enhanced Privacy ID SDK: Walkthroughs of Examples Showing API Usage + + + + + + + + + + + + +
    +
    + + + + + + +
    + +
    +
    + + +
    +
    + +
    +
    +
    + +
    +
    +
    +
    Walkthroughs of Examples Showing API Usage
    +
    +
    +

    Several example applications are included that demonstrate how to use the SDK APIs.

    + + + + + + + +
    Example Application Concept Demonstrated
    signmsg Generating an Intel® EPID Signature
    verifysig Verifying an Intel® EPID Signature
    +
    +
    + + + + + diff --git a/external/epid-sdk-3.0.0/doc/html/Examples.js b/external/epid-sdk-3.0.0/doc/html/Examples.js new file mode 100644 index 00000000..35ebbda6 --- /dev/null +++ b/external/epid-sdk-3.0.0/doc/html/Examples.js @@ -0,0 +1,5 @@ +var Examples = +[ + [ "Generating an Intel® EPID Signature", "SignmsgWalkthru.html", null ], + [ "Verifying an Intel® EPID Signature", "VerifysigWalkthru.html", null ] +]; \ No newline at end of file diff --git a/external/epid-sdk-3.0.0/doc/html/Glossary.html b/external/epid-sdk-3.0.0/doc/html/Glossary.html new file mode 100644 index 00000000..f4c563ba --- /dev/null +++ b/external/epid-sdk-3.0.0/doc/html/Glossary.html @@ -0,0 +1,174 @@ + + + + + + + +Intel® Enhanced Privacy ID SDK: Glossary + + + + + + + + + + + + +
    +
    + + + + + + +
    + +
    +
    + + +
    +
    + +
    +
    +
    + +
    +
    +
    +
    Glossary
    +
    +
    + +

    +CA public key

    +

    The CA (Certificate Authority) public key contains the ECDSA public key of the issuing CA. The verifier uses this key to authenticate that information provided by the issuer is genuine.

    +

    +DAA

    +

    Direct Anonymous Attestation (DAA) is a digital signature algorithm that supports anonymity by providing a group public verification key associated with many unique private signing keys. Intel® EPID enhances DAA by enabling a private key to be revoked given a signature created by that key, even if the key itself is still unknown.

    +

    +Elliptic curve

    +

    In elliptic curve cryptography, an elliptic curve is an algebraic structure used to create a function whose output is easy to compute, but whose input is difficult to compute given the output. Elliptic curve cryptography requires smaller keys compared to non-elliptic curve cryptography (based on Galois fields) to provide equivalent security.

    +

    +Elliptic curve point

    +

    An elliptic curve point is a point along an elliptic curve. The security of elliptic curve cryptography depends on the ability to compute a point multiplication and the inability to compute the multiplicand given the original and product points.

    +

    +Group

    +

    An Intel® EPID group represents a set of trusted entities called members.

    +

    Issuers create groups and manage group membership. For each group, the issuer creates a group public key simultaneously with the corresponding issuing private key. The issuer uses the issuing private key to create unique member private keys for each group member, and makes the group public key available to verifiers.

    +

    All groups have the following:

    +
      +
    • Group public key, which corresponds to the issuing private key kept by the issuer
    • +
    • Signature based revocation list
    • +
    • Private key based revocation list
    • +
    • Member private keys, generated from the issuing private key
    • +
    +

    If a signature based revocation list or private key based revocation list does not exist, it is assumed to be empty.

    +

    +Group certificate

    +

    The group certificate contains the group public key. The group certificate is created by the issuer and obtained by the verifier. When the issuer creates groups, it generates one issuing private key and one group certificate for each group.

    +

    +Group public key

    +

    The group public key is the key used by the verifier to confirm that a member belongs to a group in good standing. Each member private key in a group is associated with the group's public key.

    +

    When a group is created, the group public key and the issuing private key are simultaneously generated by the issuer. The verifier obtains the group public key from the issuer.

    +

    +Intel® EPID

    +

    Enhanced Privacy ID (Intel® EPID) is a cryptographic protocol for attestation of a trusted platform while preserving the user's privacy. Intel® EPID can be used as a foundational building block for a multitude of security solutions.

    +

    +Intel® EPID signature

    +

    An Intel® EPID signature is a type of digital signature that preserves anonymity of the signer, while still proving the signer is a member of a trusted group.

    +

    +Issuer

    +

    The issuer is the entity in the Intel® EPID scheme that is responsible for managing group membership. Issuer APIs are not included in the SDK. An example of an issuer is the Intel Key Generation Facility. For sample issuer material, refer to Sample Issuer Material. For tools that can help you if you choose to use iKGF as your issuer, refer to If You Choose iKGF as Your Issuer.

    +

    The issuer manages groups by doing the following:

    +
      +
    • Creates groups by generating one issuing private key and one group certificate for each group. The group certificate contains the group public key.
    • +
    • Creates group members by generating unique Intel® EPID member private keys through bulk provisioning. Member private keys are created from the issuing private key for the group.
    • +
    • Manages requests from prospective members to join existing groups by using the join protocol.
    • +
    • Creates and maintains signature based revocation lists and private key based revocation lists. These lists of members no longer in good standing allow members to be dropped from a group.
    • +
    • Creates and maintains group revocation lists.
    • +
    • Makes group public keys and revocation lists available to verifiers.
    • +
    +

    +Issuing private key

    +

    The issuing private key is the key used by the issuer to generate unique private keys for each member of a given group. For every group public key, there is a corresponding issuing private key. The issuing private key remains with the issuer and is kept private.

    +

    +Member

    +

    The member is the entity that attempts to prove its group membership to the verifier. Members are authorized by the issuer as part of a group and each group member has a unique Intel® EPID private key. The member uses its member private key to sign a message to prove group membership without revealing its identity. An example of a member is a PC with an embedded Intel® EPID member private key.

    +

    +Name-based signature

    +

    A name-based signature is a type of signature that gives the verifier the ability to link Intel® EPID signatures from the same member, reducing the member's privacy.

    +

    A name-based signature is created using the additional parameter of a basename. If a basename is not specified, a random number is chosen as the basename. If the member uses the same basename, the verifier can mathematically link signatures generated by the member, showing that the signatures are from the same member.

    +

    +Member private key

    +

    The member private key is the key used by the member to digitally sign a message when attempting to prove to the verifier that the member belongs to the group and is in good standing.

    +

    Unique member private keys are generated by the issuer for each member of a given group. The same group public key corresponds to each member private key in the group.

    +

    +Non-revoked proof

    +

    A non-revoked proof is part of an Intel® EPID signature that proves that the member is not a specific revoked entity in the signature based revocation list. The member provides the signature with a number of non-revoked proofs, one per revocation list entry, to prove to the verifier that the member does not correspond to any entry in the revocation list.

    +

    +Pairing

    +

    Pairing is a mathematical operation that maps two elliptic curve groups to a third multiplicative group.

    +

    +Revocation, revocation lists

    +

    Revocation lists are data structures used by the verifier to identify members that are no longer approved members of the group.

    +

    The verifier obtains the member private key based revocation list (PrivRL), signature based revocation list (SigRL), and group based revocation list (GroupRL) from the issuer. The verifier can also maintain its own verifier blacklist (VerifierRL). Verifier blacklist revocation only works with name based signatures.

    +

    +Verifier

    +

    The verifier is the entity that checks an Intel® EPID signature to establish whether it was signed by an entity or device that is a member in good standing.

    +

    The verifier acts on behalf of a party that needs to know it is communicating with a trusted device. Verifiers obtain group certificates and revocation lists from issuers and negotiate details of signature protocol with members.

    +
    +
    + + + + + diff --git a/external/epid-sdk-3.0.0/doc/html/ImplementationNotes.html b/external/epid-sdk-3.0.0/doc/html/ImplementationNotes.html new file mode 100644 index 00000000..6aa26d78 --- /dev/null +++ b/external/epid-sdk-3.0.0/doc/html/ImplementationNotes.html @@ -0,0 +1,110 @@ + + + + + + + +Intel® Enhanced Privacy ID SDK: Implementation Notes + + + + + + + + + + + + +
    +
    + + + + + + +
    + +
    +
    + + +
    +
    + +
    +
    +
    + +
    +
    +
    +
    Implementation Notes
    +
    +
    + +

    +Random Number Generation

    +

    Some SDK APIs require a random number data source. A BitSupplier provides a source of random data. This function should be a cryptographically secure random number generator.

    +
    Warning
    The pseudo-random number generator provided with the examples is for sample use only and is not suitable for cryptographically secure applications.
    +

    +Protecting Secrets

    +

    Member code works with private keys, so member code must be run in a trusted environment.

    +
    Warning
    If member memory is available to an untrusted source, the member private key could be exposed.
    +

    The EpidZeroMemory function is used by the memory allocation routines EpidAlloc, EpidRealloc and EpidFree to wipe the memory as memory is freed.

    +
    Warning
    The EpidZeroMemory function may be optimized away by some compilers. If it is, you should consider using a compiler or operating system specific memory sanitization function (e.g. memcpy_s or SecureZeroMemory).
    +

    +Replacing Math Primitives

    +

    SDK math primitives are designed to be replaced with your own implementation if you need to rely on custom hardware for performance. The SDK is designed to simplify this process by isolating implementation details behind a clearly defined interface, defined by the non-internal headers in the epid/common/math directory. Math functionality has detailed tests to ease validation.

    +

    +Octstring/Buffer Types

    +

    Serialized information in the SDK is passed in fixed size buffer types whenever possible. Collectively these fixed size buffer types are called Octstrings.

    +

    In epid/common/types.h, there are a large number of packed structs that contain other packed structs, which eventually contain OctStr* types. Normally these are named *Str and are refered to as Str types.

    +

    OctStr* types are buffers that hold N bits, where N is the number at the end of the type name. These types usually represent numbers in a Big Endian format (buffer[0] is the most significant value).

    +

    Str types generally represent fixed size groups of numbers such as a point or vector.

    +

    OctStr* and Str types are usually populated by reading a buffer from a file or other storage, or by calling a serialize function. OctStr* and Str types must be packed so that the compiler does not insert padding. In the current code, this is done using pragmas.

    +
    #pragma pack(1)
    // OctStr* type holding 256 bits
    typedef struct OctStr256 {
    unsigned char data[256 / CHAR_BIT];
    // Str type consisting of a single 256 bit number
    typedef struct FqElemStr {
    // Str type consisting of a two other Str types
    typedef struct G1ElemStr {

    Many APIs use void* parameters where OctStr* types are expected. If more than one size is allowed, a size parameter is usually also required.

    +

    +Flexible Arrays

    +

    A common idiom in the SDK is the use of flexible array types. These types are structs with the last element being an array of size 1 of some type. Flexible array types always have a size value embedded in the struct. The name of the count and array fields differs between flexible array types.

    +
    typedef struct Sample {
    OctStr32 data;
    OctStr32 count;
    G1ElemStr array[1];
    } Sample;

    Flexible array types are expected to be in a buffer of size sizeof(FA) + ((N-1) * sizeof(E)) where FA is the flexible array type, N is the number of elements in the array and E is the type of each element. Note that this may be smaller than sizeof(FA) if N is 0, in which case referencing any element is an error.

    +
    Sample* AllocSample(size_t count) {
    return (Sample*)malloc(sizeof(Sample)
    + (count * sizeof(G1ElemStr))
    - sizeof(G1ElemStr));
    }

    In many cases, functions that accept flexible array types will also expect a buffer size that is compared against the computed size of the array as a sanity check.

    +
    +
    + + + + + diff --git a/external/epid-sdk-3.0.0/doc/html/IssuerMaterial.html b/external/epid-sdk-3.0.0/doc/html/IssuerMaterial.html new file mode 100644 index 00000000..8a9012a0 --- /dev/null +++ b/external/epid-sdk-3.0.0/doc/html/IssuerMaterial.html @@ -0,0 +1,293 @@ + + + + + + + +Intel® Enhanced Privacy ID SDK: Sample Issuer Material + + + + + + + + + + + + +
    +
    + + + + + + +
    + +
    +
    + + +
    +
    + +
    +
    +
    + +
    +
    +
    +
    Sample Issuer Material
    +
    +
    + +

    The Intel® EPID SDK does not include issuer APIs. That means you cannot generate the following items for validation:

    +
      +
    • Group public key, which corresponds to the issuing private key kept by the issuer
    • +
    • Member private keys
    • +
    • Signature based revocation list (SigRL)
    • +
    • Private key based revocation list (PrivRL)
    • +
    • Group based revocation list (GroupRL)
    • +
    +

    For validation purposes, you can use pre-generated sample data. This sample issuer material includes sample groups and revocation lists.

    +

    Sample compressed key material is not included in the package.

    +

    +Sample Groups

    +

    +Sample Group A

    +

    Group A (groupa) contains eight group members and sample revocation lists:

    +


    +

    +

    Members in Group A

    + + + + + + + + + + + + + + + + + + + +
    Group Member Revocation Status
    groupa/member0 Non-revoked
    groupa/member1 Non-revoked
    groupa/privrevokedmember0 Revoked in PrivRL
    groupa/privrevokedmember1 Revoked in PrivRL
    groupa/privrevokedmember2 Revoked in PrivRL
    groupa/sigrevokedmember0 Revoked in SigRL
    groupa/sigrevokedmember1 Revoked in SigRL
    groupa/sigrevokedmember2 Revoked in SigRL
    +


    +

    +

    Revocation Lists for Group A

    + + + + + + + + + + + +
    Description Directory Location Revoked Members
    Private key based revocation list groupa/privrl.bin privrevokedmember0,
    + privrevokedmember1,
    + privrevokedmember2
    Signature based revocation list groupa/sigrl.bin sigrevokedmember0,
    + sigrevokedmember1,
    + sigrevokedmember2
    Empty private key based revocation list groupa/privrl_empty.bin None
    Empty signature based revocation list groupa/sigrl_empty.bin None
    +


    +

    +

    +Sample Group B

    +

    Group B (groupb) contains four group members and sample revocation lists:

    +


    +

    +

    Members in Group B

    + + + + + + + + + + + +
    Group Member Revocation Status
    groupb/member0 Non-revoked
    groupb/member1 Non-revoked
    groupb/privrevokedmember0 Revoked in PrivRL
    groupb/sigrevokedmember0 Revoked in SigRL
    +


    +

    +

    Revocation Lists for Group B

    + + + + + + + + + + + +
    Description Directory Location Revoked Members
    Private key based revocation list groupb/privrl.bin privrevokedmember0
    Signature based revocation list groupb/sigrl.bin sigrevokedmember0
    Empty private key based revocation list groupb/privrl_empty.bin None
    Empty signature based revocation list groupb/sigrl_empty.bin None
    +

    +Group Based Revocation Lists

    +

    If an entire group is no longer valid, the issuer can revoke it using the group based revocation list. Two sample group based revocation lists are provided with the SDK.

    +


    +

    +

    Sample GrpRLs

    + + + + + + + +
    Group Based Revocation List Description
    grprl_empty.bin No entries
    grprl.bin One entry in which groupb is revoked
    +

    +Compressed Member Private Key

    +

    Sample Groups

    +

    Intel® EPID SDK supports use of compressed member private keys. The groups described here use compressed compressed member private keys but structuarlly corospond to groups described above.

    +

    +Compressed Sample Group A

    +

    Group A (groupa) contains eight group members and sample revocation lists:

    +


    +

    +

    Members in Group A

    + + + + + + + + + + + + + + + + + + + +
    Group Member Revocation Status
    groupa/member0 Non-revoked
    groupa/member1 Non-revoked
    groupa/privrevokedmember0 Revoked in PrivRL
    groupa/privrevokedmember1 Revoked in PrivRL
    groupa/privrevokedmember2 Revoked in PrivRL
    groupa/sigrevokedmember0 Revoked in SigRL
    groupa/sigrevokedmember1 Revoked in SigRL
    groupa/sigrevokedmember2 Revoked in SigRL
    +


    +

    +

    Revocation Lists for Group A

    + + + + + + + + + + + +
    Description Directory Location Revoked Members
    Private key based revocation list groupa/privrl.bin privrevokedmember0,
    + privrevokedmember1,
    + privrevokedmember2
    Signature based revocation list groupa/sigrl.bin sigrevokedmember0,
    + sigrevokedmember1,
    + sigrevokedmember2
    Empty private key based revocation list groupa/privrl_empty.bin None
    Empty signature based revocation list groupa/sigrl_empty.bin None
    +


    +

    +

    +Compressed Sample Group B

    +

    Group B (groupb) contains four group members and sample revocation lists:

    +


    +

    +

    Members in Group B

    + + + + + + + + + + + +
    Group Member Revocation Status
    groupb/member0 Non-revoked
    groupb/member1 Non-revoked
    groupb/privrevokedmember0 Revoked in PrivRL
    groupb/sigrevokedmember0 Revoked in SigRL
    +


    +

    +

    Revocation Lists for Group B

    + + + + + + + + + + + +
    Description Directory Location Revoked Members
    Private key based revocation list groupb/privrl.bin privrevokedmember0
    Signature based revocation list groupb/sigrl.bin sigrevokedmember0
    Empty private key based revocation list groupb/privrl_empty.bin None
    Empty signature based revocation list groupb/sigrl_empty.bin None
    +

    +Compressed Group Based Revocation Lists

    +

    If an entire group is no longer valid, the issuer can revoke it using the group based revocation list. Two sample group based revocation lists are provided with the SDK.

    +


    +

    +

    Sample GrpRLs

    + + + + + + + +
    Group Based Revocation List Description
    grprl_empty.bin No entries
    grprl.bin One entry in which groupb is revoked
    +
    +
    + + + + + diff --git a/external/epid-sdk-3.0.0/doc/html/LegalInformation.html b/external/epid-sdk-3.0.0/doc/html/LegalInformation.html new file mode 100644 index 00000000..e86d60f5 --- /dev/null +++ b/external/epid-sdk-3.0.0/doc/html/LegalInformation.html @@ -0,0 +1,84 @@ + + + + + + + +Intel® Enhanced Privacy ID SDK: Legal Information + + + + + + + + + + + + +
    +
    + + + + + + +
    + +
    +
    + + +
    +
    + +
    +
    +
    + +
    +
    +
    +
    Legal Information
    +
    +
    +

    INFORMATION IN THIS DOCUMENT IS PROVIDED IN CONNECTION WITH INTEL® PRODUCTS. NO LICENSE, EXPRESS OR IMPLIED, BY ESTOPPEL OR OTHERWISE, TO ANY INTELLECTUAL PROPERTY RIGHTS IS GRANTED BY THIS DOCUMENT. EXCEPT AS PROVIDED IN INTEL'S TERMS AND CONDITIONS OF SALE FOR SUCH PRODUCTS, INTEL ASSUMES NO LIABILITY WHATSOEVER, AND INTEL DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY, RELATING TO SALE AND/OR USE OF INTEL PRODUCTS INCLUDING LIABILITY OR WARRANTIES RELATING TO FITNESS FOR A PARTICULAR PURPOSE, MERCHANTABILITY, OR INFRINGEMENT OF ANY PATENT, COPYRIGHT OR OTHER INTELLECTUAL PROPERTY RIGHT.

    +

    UNLESS OTHERWISE AGREED IN WRITING BY INTEL, THE INTEL PRODUCTS ARE NOT DESIGNED NOR INTENDED FOR ANY APPLICATION IN WHICH THE FAILURE OF THE INTEL PRODUCT COULD CREATE A SITUATION WHERE PERSONAL INJURY OR DEATH MAY OCCUR.

    +

    Intel may make changes to specifications and product descriptions at any time, without notice. Designers must not rely on the absence or characteristics of any features or instructions marked "reserved" or "undefined." Intel reserves these for future definition and shall have no responsibility whatsoever for conflicts or incompatibilities arising from future changes to them. The information here is subject to change without notice. Do not finalize a design with this information.

    +

    The products described in this document may contain design defects or errors known as errata which may cause the product to deviate from published specifications. Current characterized errata are available on request.

    +

    Contact your local Intel sales office or your distributor to obtain the latest specifications and before placing your product order.

    +

    Copies of documents which have an order number and are referenced in this document, or other Intel literature, may be obtained by calling 1-800-548-4725, or by visiting Intel's web site http://www.intel.com.

    +

    Intel and the Intel logo are trademarks of Intel Corporation in the U.S. and other countries.

    +

    *Other names and brands may be claimed as the property of others.

    +
    +
    + + + + + diff --git a/external/epid-sdk-3.0.0/doc/html/Revocation.html b/external/epid-sdk-3.0.0/doc/html/Revocation.html new file mode 100644 index 00000000..7191f2d8 --- /dev/null +++ b/external/epid-sdk-3.0.0/doc/html/Revocation.html @@ -0,0 +1,142 @@ + + + + + + + +Intel® Enhanced Privacy ID SDK: In-Depth Explanation of Revocation + + + + + + + + + + + + +
    +
    + + + + + + +
    + +
    +
    + + +
    +
    + +
    +
    +
    + +
    +
    +
    +
    In-Depth Explanation of Revocation
    +
    +
    +

    This in-depth explanation covers the available options to revoke members in the Intel® EPID scheme. It also provides details on how and why each type of revocation is used.

    +


    +

    +

    +Revocation Hierarchy

    +

    The verifier only checks the revocation lists if the message was signed with a member private key that corresponds with the correct group public key.

    +

    After concluding that the signer is a member of a group, the verifier proceeds to check for group based revocation, then member private key based revocation, then signature based revocation, then verifier blacklist revocation.

    +

    If the group is revoked, the verifier stops and reports it.

    +

    If the member private key is revoked, the verifier does not check the signature based revocation list.

    +

    +Revocation List Versions

    +

    The verifier should periodically download the revocation lists (GroupRL, PrivRL, and SigRL) from the issuer and should use the latest revocation list during signature verification. The verifier should make sure that it gets the newest version of the revocation list during the update by checking RLver, the revocation list version number.

    +

    +Group Based Revocation

    +

    The group based revocation list, also called the GroupRL, has a list of revoked groups.

    +

    The issuer revokes the entire Intel® EPID group by revoking the group public key. This results in the revocation of all members of a group.

    +

    +Reasons the Issuer Might Revoke a Group

    +

    Group revocation is expected to be a rare event and would only happen under limited criteria.

    +

    Reasons to revoke a group might include:

    +
      +
    • A manufacturing defect causes the devices in the group to malfunction.
    • +
    • A subscriber terminates or violates the service agreement.
    • +
    • The Intel® EPID issuing private key is exposed.
    • +
    • A critical vulnerability in a member implementation is identified.
    • +
    • Performance problems arise due to the expensive calculation of non-revoked proofs in signature based revocation, and a replacement group needs to be provisioned.
    • +
    +

    +Private Key Based Revocation

    +

    Private key based revocation is used to revoke a compromised member. For example, the issuer can revoke a member if the member private key is exposed. When a compromised member private key is identified, it needs to be communicated to the issuer so that the issuer can revoke the member private key.

    +

    The issuer manages and publishes the member private key revocation list, also called the PrivRL, which contains member private keys that can no longer be used.

    +

    +Reasons the Issuer Might Revoke a Member Private Key

    +

    Depending on the use case, these member private keys could belong to members whose identity was compromised. For example, if a member private key is exposed online, allowing group members to be impersonated, then the compromised member private key is known, and the issuer revokes the member private key.

    +

    +Signature Based Revocation

    +

    In signature based revocation, the issuer revokes a member based on the signature generated by the member. This revocation method is used when a member becomes subject to revocation criteria, but the issuer does not know the member's member private key.

    +

    The issuer manages and publishes the signature based revocation list, also called SigRL.

    +

    Entries in the SigRL cause signing to take longer for all members of the group. Therefore, when an issuer receives a signature revocation request, it first checks the signature against all entries in the private key based revocation list. If the signature was generated by a revoked private key, then it is not placed in the SigRL.

    +

    For the same reason, if the issuer were requested to revoke a private key, and the current SigRL had entries that corresponded to that private key, then the issuer would remove those entries from the SigRL.

    +

    +Signing with Non-Revoked Proofs

    +

    The verifier and the member both use the SigRL managed by the issuer (the method of obtaining the SigRL is outside the scope of the SDK). The member sends the verifier an Intel® EPID signature that includes a number of non-revoked proofs that correspond to each revoked member in the SigRL.

    +

    In other words, the member mathematically proves that it is not any of the members who created the entries on the SigRL. One proof of non-revocation is generated by the member per entry in the SigRL. A single proof indicates the member in question cannot be the one who generated that signature in the SigRL.

    +

    For privacy, Intel® EPID signatures that are generated by the same member are unlinkable by default. This means that the verifier cannot recognize if two Intel® EPID signatures are from the same device. Therefore, multiple Intel® EPID signatures on the SigRL could be from the same member.

    +

    +Reasons the Issuer Might Revoke an Intel® EPID Signature

    +

    Reasons for revoking a signature might include the following:

    +
      +
    • A member's signature is connected to an aspect of its behavior that indicates that the member is compromised.
    • +
    • A member repeatedly generates a constant signature for the same message. Per the Intel® EPID algorithm, multiple signatures generated for the same challenge must be different.
    • +
    +

    +Verifier Blacklist Revocation

    +

    Verifier blacklist revocation is similar to signature based revocation in that it can be used to revoke a member using only a signature from a compromised member. Unlike the procedure for the signature based revocation list, members do not have to create non-revoked proofs for each entry on the verifier blacklist. Instead, the verifier relies on the member to use a basename when creating the signature (in other words, to use a name based signature) in order to determine if the same member created any of the signatures on the verifier blacklist.

    +

    For the verifier to determine that a member created an entry on the verifier blacklist, the member and verifier must use the same basename. The mechanism that allows them to agree on a basename is outside the scope of the SDK.

    +

    For more information on basenames, refer to Name Based Signatures.

    +

    The verifier adds a signature to a blacklist when the verifier does not want to trust the signer, but the verifier does not have enough reason to send a request to the issuer to revoke the member's signature.

    +

    When the verifier tracks a member using a basename, and decides the member is not trustworthy, the verifier can add the member's signature to the verifier blacklist.

    +

    +Reasons the Verifier Might Revoke an Intel® EPID Signature

    +

    Reasons a verifier might revoke a member based on its tracked signatures include the following:

    +
      +
    • A service provider receives a complaint about a customer. In this case, even though the verifier no longer trusts that customer to use the service, the verifier does not have a case to petition the issuer to revoke the member.
    • +
    • A service provider detects suspicious behavior that might indicate illegal activity or another violation of the service provider's policy.
    • +
    +
    +
    + + + + + diff --git a/external/epid-sdk-3.0.0/doc/html/SdkOverview.html b/external/epid-sdk-3.0.0/doc/html/SdkOverview.html new file mode 100644 index 00000000..0cc61242 --- /dev/null +++ b/external/epid-sdk-3.0.0/doc/html/SdkOverview.html @@ -0,0 +1,203 @@ + + + + + + + +Intel® Enhanced Privacy ID SDK: What's Included in the SDK + + + + + + + + + + + + +
    +
    + + + + + + +
    + +
    +
    + + +
    +
    + +
    +
    +
    + +
    +
    +
    +
    What's Included in the SDK
    +
    +
    + +

    +SDK Components

    +

    The SDK is divided into logical components to separate responsibilities and create interfaces that you can re-implement using custom tools such as hardware accelerators.

    +
    +sdk_block_diagram.png +
    +


    + The Intel® EPID SDK is divided into the following components:

    +

    Components in the SDK Core implement the features of Intel® EPID.

    + + + + + + + + + + + + + +
    Component Description
    member Library containing APIs needed to implement a member
    verifier Library containing APIs needed to implement a verifier
    common Library containing common types and functions
    math Math primitives used by member and verifier
    IPP A C-only non-optimized subset of Intel® IPP
    +

    Examples show how to use the SDK APIs in working code.

    + + + + + + + + + + + +
    Component Description
    signmsg A sample program showing how to sign messages
    verfifysig A sample program showing how to verify signatures
    util Common utilities used by samples
    Sample Issuer Material Sample keys and revocation lists
    +

    Tools implement utility code to interact with Intel® EPID related services such as the Intel® Key GenerationFacility (iKGF)".

    + + + + + + + + + + + + + +
    Component Description
    extractgrps A tool to extract groups from a bulk group file
    extractkeys A tool to extract member keys from a bulk key file
    revokegrp A tool to create a revocation request for a group
    revokekey A tool to create a revocation request for a member key
    revokesig A tool to create a revocation request from a signature
    +

    The SDK comes with a number of other components that support building and validating the code.

    + + + + + + + +
    Component Description
    gtest gtest unit test framework
    Build Scripts Scripts to configure and build the SDK
    +

    Math primitives are implemented in the math sub-component of common. The reference math primitive implementation is based on a non-optimized Vanilla C subset of the Intel® Performance Primitives. Math is designed so that you can replace its implementation to call custom hardware IP blocks or optimized libraries.

    +

    Intel® EPID 1.1 Compatibility

    +

    In addition to the default Intel® EPID 2.0 APIs, the verifier component also includes APIs that allow verification of Intel® EPID 1.1 signatures.

    +

    Billions of existing devices, including most Intel platforms manufactured since 2008, create signatures that need Intel® EPID 1.1 verification.

    +

    For details on verifying Intel® EPID 1.1 signatures see EPID 1.1 support in the API Reference.

    +

    +Filesystem Layout

    +

    The Intel® EPID SDK has two filesystem layouts: the Source Layout and the Install Layout.

    +

    The Source Layout is what you find when you download the SDK and extract it to disk. This layout contains all of the files that you need to build the libraries, samples, tests, and data generated by the SDK.

    +

    The Install Layout is the layout of files under the _install folder after you build the SDK.

    +

    +Source Layout

    +

    The Source Layout is used by the build scripts in the Intel® EPID SDK to find components and files needed to create libraries and executables.

    epid-sdk/
    +|__ LICENSE.txt             Distribution license
    +|__ NOTICE.txt              Legal notices
    +|__ README.md               Readme
    +|__ CHANGELOG.md            Change log
    +|__ SConstruct              Main build configuration
    +|
    +|__ doc/
    +|   |__ html/               HTML format documentation
    +|   |__ index.html          Entry point for HTML format documentation
    +|
    +|__ epid/
    +|   |__ common/             Source for Common
    +|   |__ common-testhelper/  Source for unit test helper common helpers
    +|   |__ member/             Source for Member
    +|   |__ verifier/           Source for Verifier
    +|
    +|__ example/
    +|   |__ data/               Binary data used for testing and tutorials
    +|   |__ compressed_data/    Compressed Member Key Binary data used for testing and tutorials
    +|   |__ signmsg/            Source for message signing example
    +|   |__ util/               Common utilities for examples
    +|   |__ verifysig/          Source for signature validation signing example
    +|
    +|__ ext/
    +|   |__ gtest/             Third party gtest library
    +|   |__ ipp/               IPP library
    +|
    +|__ parts-site/            Parts platform config scripts
    +|
    +|__ tools/
    +    |__ extractgrps/       Tool to extract groups
    +    |__ extractkeys/       Tool to extract keys
    +    |__ revokegrp/         Tool to create group revocation request
    +    |__ revokekey/         Tool to create a member key revocation request
    +    |__ revokesig/         Tool to create a signature based revocation
    +                           request
    +

    +Install Layout

    +

    The Install Layout contains the data developers need to develop and build their applications using the Intel® EPID SDK. Once built, the Install Layout has no dependency on the Source Layout, allowing developers to build the SDK once and reuse the built files in other locations or on other computers.

    _install/
    +|__ epid-sdk/
    +    |__ include/            C include header files for the SDK
    +    |__ lib/
    +    |   |__ <platform>      Target specific static libraries for the SDK
    +    |
    +    |__example/             Sample applications and data
    +    |__test/                Unit test executables (if unit tests built)
    +    |__tools/               Tools
    +
    + + + + + diff --git a/external/epid-sdk-3.0.0/doc/html/SignVerifyTutorial.html b/external/epid-sdk-3.0.0/doc/html/SignVerifyTutorial.html new file mode 100644 index 00000000..5fc86a4a --- /dev/null +++ b/external/epid-sdk-3.0.0/doc/html/SignVerifyTutorial.html @@ -0,0 +1,239 @@ + + + + + + + +Intel® Enhanced Privacy ID SDK: Signing and Verification Tutorial + + + + + + + + + + + + +
    +
    + + + + + + +
    + +
    +
    + + +
    +
    + +
    +
    +
    + +
    +
    +
    +
    Signing and Verification Tutorial
    +
    +
    + +

    The Intel® EPID SDK provides example tools to show you how to use the Intel® EPID SDK APIs. These examples are called signmsg and verifysig.

    +

    You can build these examples using the instructions in Building from Source. The tutorial assumes _install/epid-sdk/example is the current directory.

    +

    All command lines in this tutorial use posix command line conventions; for other systems, adjust accordingly.

    +

    For the code used in this tutorial, refer to Walkthroughs of Examples Showing API Usage.

    +
    Note
    The data for running this tutorial is pre-generated. Once the samples are built, the data is in the _install/epid-sdk/example/data directory. See Sample Issuer Material.
    +

    +Creating an Intel® EPID Signature of a Given Message

    +

    The example application signmsg shows you how to create an Intel® EPID signature of a given message.

    $ ./signmsg -h
    +Usage: signmsg [OPTION]...
    +Create Intel(R) EPID signature of message
    +
    +Options:
    +  --sig=FILE
    +      write signature to FILE (default: sig.dat)
    +
    +  --msg=MESSAGE
    +      MESSAGE to sign
    +
    +  --bsn=BASENAME
    +      BASENAME to sign with (default: random)
    +
    +  --sigrl=FILE
    +      load signature based revocation list from FILE
    +
    +  --gpubkey=FILE
    +      load group public key from FILE (default: pubkey.bin)
    +
    +  --mprivkey=FILE
    +      load member private key from FILE (default: mprivkey.dat)
    +
    +  --mprecmpi=FILE
    +      load pre-computed member data from FILE
    +
    +  --mprecmpo=FILE
    +      write pre-computed member data to FILE
    +
    +  --capubkey=FILE
    +      load IoT Issuing CA public key from FILE (default: cacert.bin)
    +
    +  --hashalg={SHA-256 | SHA-384 | SHA-512}
    +      use specified hash algorithm (default: SHA-512)
    +
    +  -h, --help
    +      display this help and exit
    +
    +  -v, --verbose
    +      print status messages to stdout
    +

    To sign a message, a group member in good standing uses the following command:

    $ ./signmsg --msg="test0"
    +

    The above command signs a message "test0". signmsg uses default options for the group public key, member private key, hash algorithm and IoT Issuing CA public key. All other parameters that are not given are ignored. The command produces a signature file: sig.dat

    +

    +Verifying an Intel® EPID Signature

    +

    The example application verifysig shows you how to verify that a given Intel® EPID signature is produced by a member in good standing.

    $ ./verifysig -h
    +Usage: verifysig [OPTION]...
    +Verify signature was created by group member in good standing
    +
    +Options:
    +  --sig=FILE
    +      load signature from FILE (default: sig.dat)
    +
    +  --msg=MESSAGE
    +      MESSAGE that was signed (default: empty)
    +
    +  --bsn=BASENAME
    +      BASENAME used in signature (default: random)
    +
    +  --privrl=FILE
    +      load private key revocation list from FILE
    +
    +  --sigrl=FILE
    +      load signature based revocation list from FILE
    +
    +  --grprl=FILE
    +      load group revocation list from FILE
    +       (default: grprl.bin)
    +
    +  --verifierrl=FILE
    +      load verifier revocation list from FILE
    +
    +  --gpubkey=FILE
    +      load group public key from FILE (default: pubkey.bin)
    +
    +  --vprecmpi=FILE
    +      load pre-computed verifier data from FILE
    +
    +  --vprecmpo=FILE
    +      write pre-computed verifier data to FILE
    +
    +  --capubkey=FILE
    +      load IoT Issuing CA public key from FILE
    +   (default: cacert.bin)
    +
    +  --hashalg={SHA-256 | SHA-384 | SHA-512}
    +      use specified hash algorithm for 2.0 groups (default: SHA-512)
    +
    +  -h, --help
    +  display this help and exit
    +
    +  -v, --verbose
    +      print status messages to stdout
    +

    To verify that a signature is from a member in good standing, the verifier uses the following command:

    $ ./verifysig --msg="test0"
    +signature verified successfully
    +

    This verifies that the default signature file sig.dat is generated for the message "test0" by a member in good standing. verifysig uses default inputs for group public key, hash algorithm and IoT Issuing CA public key. All other parameters are ignored. The output verifysig: signature verified successfully denotes that the verification is successful.

    +

    +Linking Intel® EPID Signatures from the Same Member

    +

    A name based signature is created using the additional parameter of a basename. If the member uses the same basename, the verifier can mathematically link signatures generated by the member, showing that the signatures are from the same member.

    +

    To validate a signature with a basename, you need to use the same basename for signing and verification. The mechanism for ensuring that the member and verifier use the same basename is outside the scope of the SDK.

    +

    If a basename is not provided, then the member uses a random basename and the signature generated by the member is anonymous.

    +

    For more general information on why you might want to use a basename, refer to Name Based Signatures.

    +
    Warning
    The use of a name-based signature creates a platform unique pseudonymous identifier. Because it reduces the member's privacy, the user should be notified when it is used and should have control over its use.
    +

    To sign message "test0" with a basename "base0":

    $ ./signmsg --msg="test0" --bsn="base0"
    +

    To verify the signature:

    $ ./verifysig --msg="test0" --bsn="base0"
    +verifysig: signature verified successfully
    +

    To validate a signature, you need to use the same message for signing and verification. The mechanism for ensuring that the member and verifier use the same message is outside the scope of the SDK.

    +

    Member and verifier must also use the same hash algorithm and basename, if applicable.

    +

    +Expected Failures

    +

    The signature verification process fails if there is a parameter mismatch between sign and verify operations. Here are some examples.

    +

    Verification fails if there is a mismatch in the message:

    $ ./signmsg --msg="test0"
    +$ ./verifysig --msg="test1"
    +verifysig: signature verification failed: invalid signature
    +

    Verification fails if there is a mismatch in the basename:

    $ ./signmsg --msg="test0" --bsn="base0"
    +$ ./verifysig --msg="test0" --bsn="base1"
    +verifysig: signature verification failed: invalid signature
    +

    The Intel® EPID SDK supports the following hash algorithms: SHA-256, SHA-384, SHA-512. The selected hash algorithm must be the same for both sign and verify. Mismatch in hash algorithm results in verification failure:

    $ ./signmsg --msg="test0" --hashalg=SHA-256
    +$ ./verifysig --msg="test0" --hashalg=SHA-384
    +verifysig: signature verification failed: invalid signature
    +

    +Revocation

    +

    Revocation lists are data structures used by the verifier to identify members that are no longer approved members of the group.

    +

    The verifier obtains the member private key based revocation list (PrivRL), signature based revocation list (SigRL), and group based revocation list (GroupRL) from the issuer. The verifier can also maintain its own verifier blacklist (VerifierRL).

    +

    +Detecting Revoked Group from Group Revocation List

    +

    Verification of a signature fails if it is generated by a member of a group that is revoked in the group revocation list.

    +

    For example,

    $ ./signmsg --msg="test0" --gpubkey=data/groupb/pubkey.bin --mprivkey=data/groupb/member0/mprivkey.dat
    +$ ./verifysig --msg="test0" --grprl=data/grprl.bin --gpubkey=data/groupb/pubkey.bin
    +verifysig: signature verification failed: signature revoked in GroupRl
    +

    The verification fails because groupb is revoked and is an entry in the group revocation list (grprl.bin).

    +

    +Detecting Revoked Member from Private Key Based Revocation List

    +

    Verification of a signature fails if it is generated by a member whose private key is revoked in a private-key based revocation list.

    +

    For example,

    $ ./signmsg --msg=test0 --gpubkey=data/groupa/pubkey.bin --mprivkey=data/groupa/privrevokedmember0/mprivkey.dat
    +$ ./verifysig --msg=test0 --privrl=data/groupa/privrl.bin --gpubkey=data/groupa/pubkey.bin
    +verifysig: signature verification failed: signature revoked in PrivRl
    +

    The verification fails because the private key of privrevokedmember0 is revoked and is an entry in the private key based revocation list of groupa (privrl.bin).

    +

    +Detecting Revoked Member from Signature Based Revocation List

    +

    Verification of a signature fails if it is generated by a member whose signature is revoked in a signature based revocation list.

    $ ./signmsg --msg="test1" --sigrl=data/groupa/sigrl.bin --gpubkey=data/groupa/pubkey.bin --mprivkey=data/groupa/sigrevokedmember0/mprivkey.dat
    +signmsg: signature revoked in SigRL
    +$ ./verifysig --msg="test1" --sigrl=data/groupa/sigrl.bin --gpubkey=data/groupa/pubkey.bin
    +verifysig: signature verification failed: signature revoked in SigRl
    +

    The message "test1" is signed by signmsg with a warning signmsg: signature revoked in SigRL. This means that the signature of sigrevokedmember0 is revoked in the signature based revocation list. The verification fails because the signature was generated by sigrevokedmember0, which is revoked and is an entry in the signature based revocation list of groupa (sigrl.bin).

    +
    +
    + + + + + diff --git a/external/epid-sdk-3.0.0/doc/html/SignmsgWalkthru.html b/external/epid-sdk-3.0.0/doc/html/SignmsgWalkthru.html new file mode 100644 index 00000000..f41b6bd9 --- /dev/null +++ b/external/epid-sdk-3.0.0/doc/html/SignmsgWalkthru.html @@ -0,0 +1,170 @@ + + + + + + + +Intel® Enhanced Privacy ID SDK: Generating an Intel® EPID Signature + + + + + + + + + + + + +
    +
    + + + + + + +
    + +
    +
    + + +
    +
    + +
    +
    +
    + +
    +
    +
    +
    Generating an Intel® EPID Signature
    +
    +
    +

    This walkthrough of the signmsg example shows you how to use SDK APIs to generate an Intel® EPID signature. Signmsg is built during the SDK build.

    +


    +

    +

    First, we include headers so we have access to needed declarations.

    +

    #include <stdlib.h>
    #include <string.h>
    #include "src/signmsg.h"
    #include "src/prng.h"
    #include "util/envutil.h"
    #include "util/stdtypes.h"
    #include "util/buffutil.h"

    +

    The prng.h header provides access to a pseudo-random number generator needed for signing, while the utility headers are used by signmsg for logging and buffer management. The epid/member/api.h header provides access to the core member APIs. The epid/common/file_parser.h header provides an API for parsing buffers formatted according to the various IoT Intel® EPID binary file formats.

    +


    +

    +

    We define a stub function responsible for checking that the CA certificate is authorized by the root CA.

    +

    bool IsCaCertAuthorizedByRootCa(void const* data, size_t size) {
    (void)data;
    (void)size;
    return true;
    }

    +

    IsCaCertAuthorizedByRootCa is called from main.c to validate the CA certificate before calling SignMsg. In an actual implementation, you need to provide an implementation to validate the issuing CA certificate with the CA root certificate before using it in parse functions.

    +


    +

    +

    The core signing functionality is contained in SignMsg.

    +

    EpidStatus SignMsg(void const* msg, size_t msg_len, void const* basename,
    size_t basename_len, unsigned char const* signed_sig_rl,
    size_t signed_sig_rl_size,
    unsigned char const* signed_pubkey,
    size_t signed_pubkey_size, unsigned char const* priv_key_ptr,
    size_t privkey_size, HashAlg hash_alg,
    MemberPrecomp* member_precomp, bool member_precomp_is_input,
    EpidSignature** sig, size_t* sig_len,
    EpidCaCertificate const* cacert) {

    +

    The SignMsg parameters are either received by the member, or they are part of the member's configuration. The exceptions are the sig and sig_len parameters, which are used to output the signature.

    +

    The verifier might send the message to the member or there may be another mechanism to choose the message, but the way the message is communicated is outside the scope of the Intel® EPID scheme.

    +

    We use the parameters member_precomp and member_precomp_is_input to pass in a pre-computation blob if provided. We can use the pre-computation blob to increase performance when verifying signatures repeatedly with the same group public key.

    +

    The member knows the group public key and the member private key.

    +

    The member and the verifier agree on the message, basename, hash algorithm, and SigRL that the member uses for signing.

    +


    +

    +

    Next we do basic variable setup and argument checking.

    +

    void* prng = NULL;
    MemberCtx* member = NULL;
    SigRl* sig_rl = NULL;
    do {
    GroupPubKey pub_key = {0};
    PrivKey priv_key = {0};
    size_t sig_rl_size = 0;
    if (!sig) {
    break;
    }

    +

    We create pointers to resources to be allocated and use the do {} while(0) idiom so that we can reliably free resources on return from SignMsg.

    +

    We create variables on the stack to hold the group public key and member private key.

    +

    Finally we check to make sure that sig is a vaild pointer.

    +


    +

    +

    Next, we authenticate and extract the group public key using EpidParseGroupPubKeyFile.

    +

    sts = EpidParseGroupPubKeyFile(signed_pubkey, signed_pubkey_size, cacert,
    &pub_key);
    if (kEpidNoErr != sts) {
    break;
    }

    +

    EpidParseGroupPubKeyFile takes a buffer containing a group public key in issuer binary format and validates that the public key is signed by the private key that corresponds to the provided CA certificate, extracting the key in the process.

    +


    +

    +

    We authenticate and extract the signed SigRL using EpidParseSigRlFile.

    +

    if (signed_sig_rl) {
    // authenticate and determine space needed for SigRl
    sts = EpidParseSigRlFile(signed_sig_rl, signed_sig_rl_size, cacert, NULL,
    &sig_rl_size);
    if (kEpidSigInvalid == sts) {
    // authentication failure
    break;
    }
    if (kEpidNoErr != sts) {
    break;
    }
    sig_rl = AllocBuffer(sig_rl_size);
    if (!sig_rl) {
    break;
    }
    // fill the SigRl
    sts = EpidParseSigRlFile(signed_sig_rl, signed_sig_rl_size, cacert,
    sig_rl, &sig_rl_size);
    if (kEpidSigInvalid == sts) {
    // authentication failure
    break;
    }
    if (kEpidNoErr != sts) {
    break;
    }
    } // if (signed_sig_rl)

    +

    We use EpidParseSigRlFile to:

    +
      +
    • extract the signature based revocation list
    • +
    • validate that the revocation list was signed by the private key corresponding to the provided CA certificate
    • +
    • validate that the size of the input buffer is correct
    • +
    • determine the required size of the revocation list output buffer
    • +
    +

    To determine the required sig_rl output buffer size, we provide a null pointer for the output buffer when calling EpidParseSigRlFile. This updates sig_rl_size with the required size of the output buffer.

    +

    After we find out the required size of the sig_rl, we allocate a buffer for the sig_rl. Then we fill the buffer using EpidParseSigRlFile.

    +


    +

    +

    Next, we fill the member private key.

    +

    if (privkey_size == sizeof(PrivKey)) {
    priv_key = *(PrivKey*)priv_key_ptr;
    } else if (privkey_size == sizeof(CompressedPrivKey)) {
    sts = EpidDecompressPrivKey(&pub_key, (CompressedPrivKey*)priv_key_ptr,
    &priv_key);
    if (kEpidNoErr != sts) {
    break;
    }
    } else {
    sts = kEpidErr;
    break;
    } // if (privkey_size == sizeof(PrivKey))

    +

    If the member private key is compressed, then we decompress it using EpidDecompressPrivKey before it can be passed to the member APIs. To determine if the member private key is compressed, we check if it is the known size of a compressed key.

    +

    If the key size is not the size of a known format, we return an error.

    +


    +

    +

    Next, we create a pseudo-random number generator.

    +

    sts = PrngCreate(&prng);
    if (kEpidNoErr != sts) {
    break;
    }

    +
    Warning
    This pseudo-random number generator is included only for demonstration, and should not be used in production code as a source of secure random data. For security, prng should be a cryptographically secure random number generator.
    +


    +

    +

    Now that the inputs have been prepared, we create a member context using EpidMemberCreate.

    +

    sts = EpidMemberCreate(&pub_key, &priv_key,
    member_precomp_is_input ? member_precomp : NULL,
    PrngGen, prng, &member);
    if (kEpidNoErr != sts) {
    break;
    }

    +

    If a pre-computation blob is provided to the top level application, we use it. Otherwise, we pass in NULL.

    +


    +

    +

    We serialize pre-computed member data using EpidMemberWritePrecomp.

    +

    sts = EpidMemberWritePrecomp(member, member_precomp);
    if (kEpidNoErr != sts) {
    break;
    }

    +

    The serialized member pre-computation blob can be used to greatly increase performance of EpidMemberCreate in future sessions if the same member private key is used.

    +


    +

    +

    Next, if a basename is specified, we register it with EpidRegisterBaseName so that the member can use it.

    +

    if (0 != basename_len) {
    sts = EpidRegisterBaseName(member, basename, basename_len);
    if (kEpidNoErr != sts) {
    break;
    }
    }

    +

    In a typical use case, to prevent loss of privacy, the member keeps a list of basenames that correspond to authorized verifiers. The member signs a message with a basename only if the basename is in the member's basename list.

    +
    Warning
    The use of a name-based signature creates a platform unique pseudonymous identifier. Because it reduces the member's privacy, the user should be notified when it is used and should have control over its use.
    +


    +

    +

    Then we set the hash algorithm to be used by the member using EpidMemberSetHashAlg.

    +

    sts = EpidMemberSetHashAlg(member, hash_alg);
    if (kEpidNoErr != sts) {
    break;
    }

    +

    After the hash algorithm is set, future calls to EpidSign will use the same algorithm.

    +


    +

    +

    Next, we sign the message, generating an Intel® EPID signature.

    +

    *sig_len = EpidGetSigSize(sig_rl);
    *sig = AllocBuffer(*sig_len);
    if (!*sig) {
    break;
    }
    // sign message
    sts = EpidSign(member, msg, msg_len, basename, basename_len, sig_rl,
    sig_rl_size, *sig, *sig_len);
    if (kEpidNoErr != sts) {
    break;
    }

    +

    To create a signature, first we find out the required size of the signature using EpidGetSigSize. Then we allocate a buffer for the signature and fill the buffer using EpidSign.

    +

    It is important to compute signature size after loading sig_rl because the signature size varies with the size of the SigRL.

    +


    +

    +

    Finally, we clean up and exit.

    +

    sts = kEpidNoErr;
    } while (0);
    PrngDelete(&prng);
    EpidMemberDelete(&member);
    if (sig_rl) free(sig_rl);
    return sts;
    }

    +

    If we made it past signing without an error, we set the return code appropriately and fall out of the do-while loop. If there was an error earlier, all breaks in the do-while loop bring us to this point with an error status.

    +

    Next, we free the allocated resources. EpidMemberDelete deletes an existing member context.

    +

    We return from SignMsg with the success or error status.

    +


    +

    +

    This concludes the signmsg walkthrough. Now you should be able to generate an Intel® EPID signature that proves a member's group membership to a verifier without revealing the member's identity.

    +

    To learn more about the SDK APIs see the API Reference. To learn more about the Intel® EPID scheme see Introduction to the Intel® EPID Scheme in the documentation.

    +
    +
    + + + + + diff --git a/external/epid-sdk-3.0.0/doc/html/VerifysigWalkthru.html b/external/epid-sdk-3.0.0/doc/html/VerifysigWalkthru.html new file mode 100644 index 00000000..c66ada5d --- /dev/null +++ b/external/epid-sdk-3.0.0/doc/html/VerifysigWalkthru.html @@ -0,0 +1,190 @@ + + + + + + + +Intel® Enhanced Privacy ID SDK: Verifying an Intel® EPID Signature + + + + + + + + + + + + +
    +
    + + + + + + +
    + +
    +
    + + +
    +
    + +
    +
    +
    + +
    +
    +
    +
    Verifying an Intel® EPID Signature
    +
    +
    +

    This walkthrough of the verifysig example shows you how to use SDK APIs to verify an Intel® EPID 2.0 signature. Verifysig is built during the SDK build.

    +

    To verify an Intel® EPID 1.1 signature see the example code in verifysig11.c. For information on Intel® EPID 1.1 speciifc APIs see EPID 1.1 support.

    +


    +

    +

    First, we include headers so we have access to needed declarations.

    +

    #include "src/verifysig.h"
    #include <stdlib.h>
    #include "util/buffutil.h"
    #include "util/envutil.h"

    +

    The utility headers are used by verifysig for logging and buffer management. The epid/verifier/api.h header provides access to the core verifier APIs, and the epid/common/file_parser.h header provides an API for parsing buffers formatted according to the various IoT Intel® EPID binary file formats.

    +


    +

    +

    We define a stub function responsible for checking that the CA certificate is authorized by the root CA.

    +

    bool IsCaCertAuthorizedByRootCa(void const* data, size_t size) {
    (void)data;
    (void)size;
    return true;
    }

    +

    IsCaCertAuthorizedByRootCa is called from main.c to validate the CA certificate before calling Verify. In an actual implementation, you need to provide an implementation to validate the issuing CA certificate with the CA root certificate before using it in parse functions.

    +


    +

    +

    We use Verify to verify an Intel® EPID signature. Verify is a wrapper function that isolates SDK API functionality for the purpose of this walkthrough.

    +

    EpidStatus Verify(EpidSignature const* sig, size_t sig_len, void const* msg,
    size_t msg_len, void const* basename, size_t basename_len,
    void const* signed_priv_rl, size_t signed_priv_rl_size,
    void const* signed_sig_rl, size_t signed_sig_rl_size,
    void const* signed_grp_rl, size_t signed_grp_rl_size,
    VerifierRl const* ver_rl, size_t ver_rl_size,
    void const* signed_pub_key, size_t signed_pub_key_size,
    EpidCaCertificate const* cacert, HashAlg hash_alg,
    VerifierPrecomp* verifier_precomp,
    bool verifier_precomp_is_input) {

    +

    The Verify parameters were either sent by the verifier to the member, or they were part of the member's configuration. The exceptions are the sig and sig_len parameters, which we use to input the signature to be verified.

    +

    The verifier might send the message to the member or there may be another mechanism to choose the message, but the way the message is communicated is outside the scope of the Intel® EPID scheme.

    +

    We use the parameters verifier_precomp and verifier_precomp_is_input to pass in a pre-computation blob if provided. We can use the pre-computation blob to increase performance when verifying signatures repeatedly with the same group public key.

    +

    The member and the verifier agree on the message, basename, hash algorithm, and SigRL that the verifier uses for verification.

    +
    Warning
    The use of a name-based signature creates a platform unique pseudonymous identifier. Because it reduces the member's privacy, the user should be notified when it is used and should have control over its use.
    +


    +

    +

    Next we do basic variable setup.

    +

    EpidStatus result = kEpidErr;
    VerifierCtx* ctx = NULL;
    PrivRl* priv_rl = NULL;
    SigRl* sig_rl = NULL;
    GroupRl* grp_rl = NULL;
    do {
    GroupPubKey pub_key = {0};

    +

    We create pointers to resources to be allocated and we use the do {} while(0) idiom so that we can reliably free resources on return from Verify. We also allocate the group public key on the stack.

    +


    +

    +

    Next, we authenticate and extract the group public key using EpidParseGroupPubKeyFile.

    +

    result = EpidParseGroupPubKeyFile(signed_pub_key, signed_pub_key_size,
    cacert, &pub_key);
    if (kEpidNoErr != result) {
    break;
    }

    +

    EpidParseGroupPubKeyFile takes a buffer containing a group public key in issuer binary format and validates that the public key is signed by the private key that corresponds to the provided CA certificate, reading the key into pub_key in the process.

    +


    +

    +

    Next, we create a verifier context using EpidVerifierCreate.

    +

    &pub_key, verifier_precomp_is_input ? verifier_precomp : NULL, &ctx);
    if (kEpidNoErr != result) {
    break;
    }

    +

    If a pre-computation blob is provided to the top level application, we use it. Otherwise, we pass in NULL.

    +


    +

    +

    Then we serialize pre-computed verifier data using EpidVerifierWritePrecomp.

    +

    result = EpidVerifierWritePrecomp(ctx, verifier_precomp);
    if (kEpidNoErr != result) {
    break;
    }

    +

    The serialized verifier pre-computation blob can be used to greatly increase performance of EpidVerifierCreate in future sessions if the same group public key is used.

    +


    +

    +

    We use EpidVerifierSetHashAlg to indicate the hash algorithm used for verification, which should be the same algorithm that the member used when signing.

    +

    result = EpidVerifierSetHashAlg(ctx, hash_alg);
    if (kEpidNoErr != result) {
    break;
    }

    +

    After the hash algorithm is set, future calls to EpidVerify will use the same algorithm.

    +


    +

    +

    We use EpidVerifierSetBasename to indicate the basename used for verification, which should be the same one that the member used when signing.

    +

    result = EpidVerifierSetBasename(ctx, basename, basename_len);
    if (kEpidNoErr != result) {
    break;
    }

    +

    After the basename is set, future calls to EpidVerify will use the same basename.

    +


    +

    +

    Before we verify a signature, we have to configure revocation lists so that we can check to see if a signer's group membership has been revoked.

    +
    Note
    Configured revocation lists are referenced directly by the verifier until a new revocation list is set or the verifier is destroyed. Until the verifier is destroyed, we do not modify the revocation lists.
    +


    +

    +

    We set the private key based revocation list using EpidVerifierSetPrivRl.

    +

    if (signed_priv_rl) {
    // authenticate and determine space needed for RL
    size_t priv_rl_size = 0;
    result = EpidParsePrivRlFile(signed_priv_rl, signed_priv_rl_size, cacert,
    NULL, &priv_rl_size);
    if (kEpidSigInvalid == result) {
    // authentication failure
    break;
    }
    if (kEpidNoErr != result) {
    break;
    }
    priv_rl = AllocBuffer(priv_rl_size);
    if (!priv_rl) {
    result = kEpidMemAllocErr;
    break;
    }
    // fill the rl
    result = EpidParsePrivRlFile(signed_priv_rl, signed_priv_rl_size, cacert,
    priv_rl, &priv_rl_size);
    if (kEpidNoErr != result) {
    break;
    }
    // set private key based revocation list
    result = EpidVerifierSetPrivRl(ctx, priv_rl, priv_rl_size);
    if (kEpidNoErr != result) {
    break;
    }
    } // if (signed_priv_rl)

    +

    We use EpidParsePrivRlFile to:

    +
      +
    • extract the private key based revocation list
    • +
    • validate that the revocation list was signed by the private key corresponding to the provided CA certificate
    • +
    • validate that the size of the input buffer is correct
    • +
    • determine the required size of the revocation list output buffer
    • +
    +

    To determine the required priv_rl buffer size, we provide a null pointer for the output buffer when calling EpidParsePrivRlFile.

    +

    After we find out the required size of the priv_rl buffer, we allocate memory for it. Then we fill the buffer using EpidParsePrivRlFile.

    +


    +

    +

    Next, we set the signature based revocation list using EpidVerifierSetSigRl.

    +

    if (signed_sig_rl) {
    // authenticate and determine space needed for RL
    size_t sig_rl_size = 0;
    result = EpidParseSigRlFile(signed_sig_rl, signed_sig_rl_size, cacert,
    NULL, &sig_rl_size);
    if (kEpidSigInvalid == result) {
    // authentication failure
    break;
    }
    if (kEpidNoErr != result) {
    break;
    }
    sig_rl = AllocBuffer(sig_rl_size);
    if (!sig_rl) {
    result = kEpidMemAllocErr;
    break;
    }
    // fill the rl
    result = EpidParseSigRlFile(signed_sig_rl, signed_sig_rl_size, cacert,
    sig_rl, &sig_rl_size);
    if (kEpidNoErr != result) {
    break;
    }
    // set signature based revocation list
    result = EpidVerifierSetSigRl(ctx, sig_rl, sig_rl_size);
    if (kEpidNoErr != result) {
    break;
    }
    } // if (signed_sig_rl)

    +

    We use EpidParseSigRlFile to:

    +
      +
    • extract the signature based revocation list
    • +
    • validate that the revocation list was signed by the private key corresponding to the provided CA certificate
    • +
    • validate that the size of the input buffer is correct
    • +
    • determine the required size of the revocation list output buffer
    • +
    +

    To determine the required sig_rl buffer size, we provide a null pointer for the output buffer when calling EpidParseSigRlFile.

    +

    After we find out the required size of the sig_rl buffer, we allocate memory for it. Then we fill the buffer using EpidParseSigRlFile.

    +


    +

    +

    Next, we set the group based revocation list using EpidVerifierSetGroupRl.

    +

    if (signed_grp_rl) {
    // authenticate and determine space needed for RL
    size_t grp_rl_size = 0;
    result = EpidParseGroupRlFile(signed_grp_rl, signed_grp_rl_size, cacert,
    NULL, &grp_rl_size);
    if (kEpidSigInvalid == result) {
    // authentication failure
    break;
    }
    if (kEpidNoErr != result) {
    break;
    }
    grp_rl = AllocBuffer(grp_rl_size);
    if (!grp_rl) {
    result = kEpidMemAllocErr;
    break;
    }
    // fill the rl
    result = EpidParseGroupRlFile(signed_grp_rl, signed_grp_rl_size, cacert,
    grp_rl, &grp_rl_size);
    if (kEpidNoErr != result) {
    break;
    }
    // set group revocation list
    result = EpidVerifierSetGroupRl(ctx, grp_rl, grp_rl_size);
    if (kEpidNoErr != result) {
    break;
    }
    } // if (signed_grp_rl)

    +

    We use EpidParseGroupRlFile to:

    +
      +
    • extract the group based revocation list
    • +
    • validate that the revocation list was signed by the private key corresponding to the provided CA certificate
    • +
    • validate that the size of the input buffer is correct
    • +
    • determine the required size of the revocation list output buffer
    • +
    +

    To determine the required grp_rl buffer size, we provide a null pointer for the output buffer when calling EpidParseGroupRlFile.

    +

    After we find out the required size of the grp_rl buffer, we allocate memory for it. Then we fill the buffer using EpidParseGroupRlFile.

    +


    +

    +

    Next, we set the verifier blacklist using EpidVerifierSetVerifierRl.

    +

    if (ver_rl) {
    // set verifier based revocation list
    result = EpidVerifierSetVerifierRl(ctx, ver_rl, ver_rl_size);
    if (kEpidNoErr != result) {
    break;
    }
    }

    +

    The verifier is responsible for ensuring that the verifier revocation list is authorized. Validating it is outside the scope of this example.

    +


    +

    +

    Next, we use EpidVerify to verify that the Intel® EPID signature was created by a valid member of a group in good standing.

    +

    result = EpidVerify(ctx, sig, sig_len, msg, msg_len);
    if (kEpidNoErr != result) {
    break;
    }

    +

    +

    Finally, we clean up and exit.

    +

    } while (0);
    // delete verifier
    if (priv_rl) free(priv_rl);
    if (sig_rl) free(sig_rl);
    if (grp_rl) free(grp_rl);
    return result;
    }

    +

    If we made it past verification without an error, we set the return code appropriately and fall out of the do-while loop. If there was an error earlier, all breaks in the do-while loop bring us to this point with an error status.

    +

    Then we free the allocated resources. EpidVerifierDelete deletes the verifier context.

    +

    After deleting the verifier context, we can also delete the revocation lists.

    +

    We return from Verify with the success or error status.

    +


    +

    +

    This concludes the verifysig walkthrough. Now you should be able to verify an Intel® EPID signature using the SDK APIs.

    +

    To learn more about the SDK APIs see the API Reference. To learn more about the Intel® EPID Scheme see Introduction to the Intel® EPID Scheme in the documentation.

    +
    +
    + + + + + diff --git a/external/epid-sdk-3.0.0/doc/html/annotated.html b/external/epid-sdk-3.0.0/doc/html/annotated.html new file mode 100644 index 00000000..e60838c8 --- /dev/null +++ b/external/epid-sdk-3.0.0/doc/html/annotated.html @@ -0,0 +1,136 @@ + + + + + + + +Intel® Enhanced Privacy ID SDK: Data Structures + + + + + + + + + + + + +
    +
    + + + + + + +
    + +
    +
    + + +
    +
    + +
    +
    +
    + +
    +
    +
    +
    Data Structures
    +
    +
    +
    Here are the data structures with brief descriptions:
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
     CBasicSignatureIntel(R) EPID 2.0 basic signature
     CBigNumStrSerialized BigNum
     CCompressedPrivKeyCompressed private key
     CEcdsaPrivateKeyECDSA Private Key
     CEcdsaPublicKeyECDSA Public Key
     CEcdsaSignatureECDSA Signature using NIST 256-bit curve secp256r1
     CEpid11BasicSignatureIntel(R) EPID 1.1 basic signature
     CEpid11G2ElemStrSerialized Intel(R) EPID 1.1 G2 element
     CEpid11GroupPubKeyIntel(R) EPID 1.1 group public key
     CEpid11GroupRlIntel(R) EPID 1.1 group revocation list
     CEpid11GtElemStrSerialized Intel(R) EPID 1.1 GT element
     CEpid11NrProofIntel(R) EPID 1.1 non-revoked Proof
     CEpid11ParamsIntel(R) EPID 1.1 Parameters
     CEpid11PrivRlIntel(R) EPID 1.1 private-key based revocation list
     CEpid11SignatureIntel(R) EPID 1.1 Signature
     CEpid11SigRlIntel(R) EPID 1.1 signature based revocation list
     CEpid11SigRlEntryIntel(R) EPID 1.1 entry in SigRL (B,K)
     CEpid11VerifierPrecompIntel(R) EPID 1.1 Pre-computed verifier settings
     CEpid2ParamsIntel(R) EPID 2.0 Parameters
     CEpidCaCertificateIoT CA Certificate binary format
     CEpidFileHeaderIntel(R) EPID binary file header
     CEpidSignatureIntel(R) EPID 2.0 Signature
     CFpElemStrNumber in [0, p-1]
     CFq12ElemStrSerialized Fq2^3^2 element
     CFq2ElemStrSerialized Fq2 element
     CFq3ElemStrSerialized Fq3 element
     CFq6ElemStrSerialized Fq2^3 element
     CFqElemStrNumber in [0, q-1]
     CG1ElemStrSerialized G1 element
     CG2ElemStrSerialized G2 element
     CGroupPubKeyIntel(R) EPID 2.0 group public key
     CGroupRlGroup revocation list
     CGtElemStrSerialized GT element
     CIPrivKeyIntel(R) EPID 2.0 issuing private key
     CJoinRequestJoin request
     CMemberPrecompPre-computed member settings
     CMembershipCredentialMembership credential
     CNrProofNon-revoked Proof
     COctStr128128 bit octet string
     COctStr1616 bit octet string
     COctStr256256 bit octet string
     COctStr3232 bit octet string
     COctStr512512 bit octet string
     COctStr600600 bit octet string
     COctStr6464 bit octet string
     COctStr768768 bit octet string
     COctStr88 bit octet string
     COctStr8080 bit octet string
     CPreComputedSignaturePre-computed signature
     CPrivKeyIntel(R) EPID 2.0 private key
     CPrivRlPrivate-key based revocation list
     CSha256DigestSHA256 digest
     CSigRlSignature based revocation list
     CSigRlEntryEntry in SigRL (B,K)
     CVerifierPrecompPre-computed verifier settings
     CVerifierRl
    +
    +
    +
    + + + + + diff --git a/external/epid-sdk-3.0.0/doc/html/arrowdown.png b/external/epid-sdk-3.0.0/doc/html/arrowdown.png new file mode 100644 index 0000000000000000000000000000000000000000..0b63f6d38c4b9ec907b820192ebe9724ed6eca22 GIT binary patch literal 246 zcmVkw!R34#Lv2LOS^S2tZA31X++9RY}n zChwn@Z)Wz*WWHH{)HDtJnq&A2hk$b-y(>?@z0iHr41EKCGp#T5?07*qoM6N<$f(V3Pvj6}9 literal 0 HcmV?d00001 diff --git a/external/epid-sdk-3.0.0/doc/html/arrowright.png b/external/epid-sdk-3.0.0/doc/html/arrowright.png new file mode 100644 index 0000000000000000000000000000000000000000..c6ee22f937a07d1dbfc27c669d11f8ed13e2f152 GIT binary patch literal 229 zcmV^P)R?RzRoKvklcaQ%HF6%rK2&ZgO(-ihJ_C zzrKgp4jgO( fd_(yg|3PpEQb#9`a?Pz_00000NkvXXu0mjftR`5K literal 0 HcmV?d00001 diff --git a/external/epid-sdk-3.0.0/doc/html/basenames_8dox.html b/external/epid-sdk-3.0.0/doc/html/basenames_8dox.html new file mode 100644 index 00000000..459857a2 --- /dev/null +++ b/external/epid-sdk-3.0.0/doc/html/basenames_8dox.html @@ -0,0 +1,82 @@ + + + + + + + +Intel® Enhanced Privacy ID SDK: doc/docsrc/basenames.dox File Reference + + + + + + + + + + + + +
    +
    + + + + + + +
    + +
    +
    + + +
    +
    + +
    +
    +
    + +
    +
    +
    +
    doc/docsrc/basenames.dox File Reference
    +
    +
    + +

    This file is used by Doxygen to generate documentation. +More...

    +

    Detailed Description

    +

    This file is used by Doxygen to generate documentation.

    +
    +
    + + + + + diff --git a/external/epid-sdk-3.0.0/doc/html/basicdoc.png b/external/epid-sdk-3.0.0/doc/html/basicdoc.png new file mode 100644 index 0000000000000000000000000000000000000000..e092eb64db088145daa571cd093c338c269ba0ff GIT binary patch literal 19922 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 KMNUMnLSTYoA~SLT literal 0 HcmV?d00001 diff --git a/external/epid-sdk-3.0.0/doc/html/bdwn.png b/external/epid-sdk-3.0.0/doc/html/bdwn.png new file mode 100644 index 0000000000000000000000000000000000000000..940a0b950443a0bb1b216ac03c45b8a16c955452 GIT binary patch literal 147 zcmeAS@N?(olHy`uVBq!ia0vp^>_E)H!3HEvS)PKZC{Gv1kP61Pb5HX&C2wk~_T + + + + + + +Intel® Enhanced Privacy ID SDK: epid/common/math/bignum.h File Reference + + + + + + + + + + + + +
    +
    + + + + + + +
    + +
    +
    + + +
    +
    + +
    +
    +
    + +
    +
    + +
    +
    bignum.h File Reference
    +
    +
    + +

    Big number interface. +More...

    +
    #include <stddef.h>
    +#include <stdint.h>
    +#include "epid/common/stdtypes.h"
    +#include "epid/common/errors.h"
    +#include "epid/common/types.h"
    +
    + + + + +

    +Typedefs

    +typedef struct BigNum BigNum
     Internal representation of large numbers.
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    EpidStatus NewBigNum (size_t data_size_bytes, BigNum **bignum)
     Constructs a new BigNum. More...
     
    void DeleteBigNum (BigNum **bignum)
     Deletes a previously allocated BigNum. More...
     
    EpidStatus ReadBigNum (void const *bn_str, size_t strlen, BigNum *bn)
     Deserializes a BigNum from a string. More...
     
    EpidStatus WriteBigNum (BigNum const *bn, size_t strlen, void *bn_str)
     Serializes a BigNum to a string. More...
     
    EpidStatus BigNumAdd (BigNum const *a, BigNum const *b, BigNum *r)
     Adds two BigNum values. More...
     
    EpidStatus BigNumSub (BigNum const *a, BigNum const *b, BigNum *r)
     Subtracts two BigNum values. More...
     
    EpidStatus BigNumMul (BigNum const *a, BigNum const *b, BigNum *r)
     Multiplies two BigNum values. More...
     
    EpidStatus BigNumDiv (BigNum const *a, BigNum const *b, BigNum *q, BigNum *r)
     Divides two BigNum values. More...
     
    EpidStatus BigNumMod (BigNum const *a, BigNum const *b, BigNum *r)
     Computes modular reduction for BigNum value by specified modulus. More...
     
    EpidStatus BigNumIsEven (BigNum const *a, bool *is_even)
     Checks if a BigNum is even. More...
     
    EpidStatus BigNumIsZero (BigNum const *a, bool *is_zero)
     Checks if a BigNum is zero. More...
     
    EpidStatus BigNumPow2N (unsigned int n, BigNum *r)
     Raises 2 to the given power. More...
     
    +

    Detailed Description

    +

    Big number interface.

    +
    +
    + + + + + diff --git a/external/epid-sdk-3.0.0/doc/html/bitsupplier_8h.html b/external/epid-sdk-3.0.0/doc/html/bitsupplier_8h.html new file mode 100644 index 00000000..24d64447 --- /dev/null +++ b/external/epid-sdk-3.0.0/doc/html/bitsupplier_8h.html @@ -0,0 +1,92 @@ + + + + + + + +Intel® Enhanced Privacy ID SDK: epid/common/bitsupplier.h File Reference + + + + + + + + + + + + +
    +
    + + + + + + +
    + +
    +
    + + +
    +
    + +
    +
    +
    + +
    +
    + +
    +
    bitsupplier.h File Reference
    +
    +
    + +

    Random data supplier interface. +More...

    + + + + + +

    +Typedefs

    typedef int(__STDCALL * BitSupplier) (unsigned int *rand_data, int num_bits, void *user_data)
     Generates random data. More...
     
    +

    Detailed Description

    +

    Random data supplier interface.

    +
    +
    + + + + + diff --git a/external/epid-sdk-3.0.0/doc/html/build__tools__installation_8dox.html b/external/epid-sdk-3.0.0/doc/html/build__tools__installation_8dox.html new file mode 100644 index 00000000..52c1f0b3 --- /dev/null +++ b/external/epid-sdk-3.0.0/doc/html/build__tools__installation_8dox.html @@ -0,0 +1,82 @@ + + + + + + + +Intel® Enhanced Privacy ID SDK: doc/docsrc/build_tools_installation.dox File Reference + + + + + + + + + + + + +
    +
    + + + + + + +
    + +
    +
    + + +
    +
    + +
    +
    +
    + +
    +
    +
    +
    doc/docsrc/build_tools_installation.dox File Reference
    +
    +
    + +

    This file is used by Doxygen to generate documentation. +More...

    +

    Detailed Description

    +

    This file is used by Doxygen to generate documentation.

    +
    +
    + + + + + diff --git a/external/epid-sdk-3.0.0/doc/html/building__sdk_8dox.html b/external/epid-sdk-3.0.0/doc/html/building__sdk_8dox.html new file mode 100644 index 00000000..0b63f2c9 --- /dev/null +++ b/external/epid-sdk-3.0.0/doc/html/building__sdk_8dox.html @@ -0,0 +1,82 @@ + + + + + + + +Intel® Enhanced Privacy ID SDK: doc/docsrc/building_sdk.dox File Reference + + + + + + + + + + + + +
    +
    + + + + + + +
    + +
    +
    + + +
    +
    + +
    +
    +
    + +
    +
    +
    +
    doc/docsrc/building_sdk.dox File Reference
    +
    +
    + +

    This file is used by Doxygen to generate documentation. +More...

    +

    Detailed Description

    +

    This file is used by Doxygen to generate documentation.

    +
    +
    + + + + + diff --git a/external/epid-sdk-3.0.0/doc/html/choosing__ikgf_8dox.html b/external/epid-sdk-3.0.0/doc/html/choosing__ikgf_8dox.html new file mode 100644 index 00000000..d63d34a0 --- /dev/null +++ b/external/epid-sdk-3.0.0/doc/html/choosing__ikgf_8dox.html @@ -0,0 +1,82 @@ + + + + + + + +Intel® Enhanced Privacy ID SDK: doc/docsrc/choosing_ikgf.dox File Reference + + + + + + + + + + + + +
    +
    + + + + + + +
    + +
    +
    + + +
    +
    + +
    +
    +
    + +
    +
    +
    +
    doc/docsrc/choosing_ikgf.dox File Reference
    +
    +
    + +

    This file is used by Doxygen to generate documentation. +More...

    +

    Detailed Description

    +

    This file is used by Doxygen to generate documentation.

    +
    +
    + + + + + diff --git a/external/epid-sdk-3.0.0/doc/html/classes.html b/external/epid-sdk-3.0.0/doc/html/classes.html new file mode 100644 index 00000000..6329f929 --- /dev/null +++ b/external/epid-sdk-3.0.0/doc/html/classes.html @@ -0,0 +1,113 @@ + + + + + + + +Intel® Enhanced Privacy ID SDK: Data Structure Index + + + + + + + + + + + + +
    +
    + + + + + + +
    + +
    +
    + + +
    +
    + +
    +
    +
    + +
    +
    +
    +
    Data Structure Index
    +
    +
    +
    B | C | E | F | G | I | J | M | N | O | P | S | V
    + + + + + + + + + + + + + + + + + + + + + +
      B  
    +
    Epid11NrProof   Fq6ElemStr   MembershipCredential   PrivKey   
    Epid11Params   FqElemStr   
      N  
    +
    PrivRl   
    BasicSignature   Epid11PrivRl   
      G  
    +
      S  
    +
    BigNumStr   Epid11Signature   NrProof   
      C  
    +
    Epid11SigRl   G1ElemStr   
      O  
    +
    Sha256Digest   
    Epid11SigRlEntry   G2ElemStr   SigRl   
    CompressedPrivKey   Epid11VerifierPrecomp   GroupPubKey   OctStr128   SigRlEntry   
      E  
    +
    Epid2Params   GroupRl   OctStr16   
      V  
    +
    EpidCaCertificate   GtElemStr   OctStr256   
    EcdsaPrivateKey   EpidFileHeader   
      I  
    +
    OctStr32   VerifierPrecomp   
    EcdsaPublicKey   EpidSignature   OctStr512   VerifierRl   
    EcdsaSignature   
      F  
    +
    IPrivKey   OctStr600   
    Epid11BasicSignature   
      J  
    +
    OctStr64   
    Epid11G2ElemStr   FpElemStr   OctStr768   
    Epid11GroupPubKey   Fq12ElemStr   JoinRequest   OctStr8   
    Epid11GroupRl   Fq2ElemStr   
      M  
    +
    OctStr80   
    Epid11GtElemStr   Fq3ElemStr   
      P  
    +
    MemberPrecomp   
    PreComputedSignature   
    +
    B | C | E | F | G | I | J | M | N | O | P | S | V
    +
    +
    + + + + + diff --git a/external/epid-sdk-3.0.0/doc/html/closed.png b/external/epid-sdk-3.0.0/doc/html/closed.png new file mode 100644 index 0000000000000000000000000000000000000000..98cc2c909da37a6df914fbf67780eebd99c597f5 GIT binary patch literal 132 zcmeAS@N?(olHy`uVBq!ia0vp^oFL4>1|%O$WD@{V-kvUwAr*{o@8{^CZMh(5KoB^r_<4^zF@3)Cp&&t3hdujKf f*?bjBoY!V+E))@{xMcbjXe@)LtDnm{r-UW|*e5JT literal 0 HcmV?d00001 diff --git a/external/epid-sdk-3.0.0/doc/html/dir_02c945662023679b89476bd7126bc985.html b/external/epid-sdk-3.0.0/doc/html/dir_02c945662023679b89476bd7126bc985.html new file mode 100644 index 00000000..2da52538 --- /dev/null +++ b/external/epid-sdk-3.0.0/doc/html/dir_02c945662023679b89476bd7126bc985.html @@ -0,0 +1,93 @@ + + + + + + + +Intel® Enhanced Privacy ID SDK: epid/verifier Directory Reference + + + + + + + + + + + + +
    +
    + + + + + + +
    + +
    +
    + + +
    +
    + +
    +
    +
    + +
    +
    +
    +
    verifier Directory Reference
    +
    +
    + +

    Verifier functionality.

    + +More...

    + + +

    +Directories

    + + + + +

    +Files

    file  api.h
     Intel(R) EPID SDK verifier API.
     
    +

    Detailed Description

    +

    Verifier functionality.

    +
    +
    + + + + + diff --git a/external/epid-sdk-3.0.0/doc/html/dir_12b90d9c027aaf878a834df729679a56.html b/external/epid-sdk-3.0.0/doc/html/dir_12b90d9c027aaf878a834df729679a56.html new file mode 100644 index 00000000..3b6b9389 --- /dev/null +++ b/external/epid-sdk-3.0.0/doc/html/dir_12b90d9c027aaf878a834df729679a56.html @@ -0,0 +1,96 @@ + + + + + + + +Intel® Enhanced Privacy ID SDK: epid Directory Reference + + + + + + + + + + + + +
    +
    + + + + + + +
    + +
    +
    + + +
    +
    + +
    +
    +
    + +
    +
    +
    +
    epid Directory Reference
    +
    +
    + +

    Core Intel® EPID functionality.

    + +More...

    + + + + + + + + + + + +

    +Directories

    directory  common
     Common code shared between core sub-components.
     
    directory  member
     Member functionality.
     
    directory  verifier
     Verifier functionality.
     
    +

    Detailed Description

    +

    Core Intel® EPID functionality.

    +
    +
    + + + + + diff --git a/external/epid-sdk-3.0.0/doc/html/dir_512d3e62841a8535b716ec4cf8b9e950.html b/external/epid-sdk-3.0.0/doc/html/dir_512d3e62841a8535b716ec4cf8b9e950.html new file mode 100644 index 00000000..c2d5b413 --- /dev/null +++ b/external/epid-sdk-3.0.0/doc/html/dir_512d3e62841a8535b716ec4cf8b9e950.html @@ -0,0 +1,90 @@ + + + + + + + +Intel® Enhanced Privacy ID SDK: epid/member Directory Reference + + + + + + + + + + + + +
    +
    + + + + + + +
    + +
    +
    + + +
    +
    + +
    +
    +
    + +
    +
    +
    +
    member Directory Reference
    +
    +
    + +

    Member functionality.

    + +More...

    + + + + + +

    +Files

    file  api.h
     Intel(R) EPID SDK member API.
     
    +

    Detailed Description

    +

    Member functionality.

    +
    +
    + + + + + diff --git a/external/epid-sdk-3.0.0/doc/html/dir_a32be19bc88f3d7aac6b7249da379f26.html b/external/epid-sdk-3.0.0/doc/html/dir_a32be19bc88f3d7aac6b7249da379f26.html new file mode 100644 index 00000000..446b40ef --- /dev/null +++ b/external/epid-sdk-3.0.0/doc/html/dir_a32be19bc88f3d7aac6b7249da379f26.html @@ -0,0 +1,87 @@ + + + + + + + +Intel® Enhanced Privacy ID SDK: epid/common/1.1 Directory Reference + + + + + + + + + + + + +
    +
    + + + + + + +
    + +
    +
    + + +
    +
    + +
    +
    +
    + +
    +
    +
    +
    1.1 Directory Reference
    +
    +
    + + + + + + + + +

    +Files

    file  file_parser.h
     Epid 1.1 issuer material parsing utilities.
     
    file  types.h
     SDK data types for Intel(R) EPID 1.1.
     
    +
    +
    + + + + + diff --git a/external/epid-sdk-3.0.0/doc/html/dir_ef364879bae02db2684040178ed9b186.html b/external/epid-sdk-3.0.0/doc/html/dir_ef364879bae02db2684040178ed9b186.html new file mode 100644 index 00000000..5a8f5eb3 --- /dev/null +++ b/external/epid-sdk-3.0.0/doc/html/dir_ef364879bae02db2684040178ed9b186.html @@ -0,0 +1,84 @@ + + + + + + + +Intel® Enhanced Privacy ID SDK: epid/verifier/1.1 Directory Reference + + + + + + + + + + + + +
    +
    + + + + + + +
    + +
    +
    + + +
    +
    + +
    +
    +
    + +
    +
    +
    +
    1.1 Directory Reference
    +
    +
    + + + + + +

    +Files

    file  api.h
     Intel(R) EPID SDK verifier Intel(R) EPID 1.1 API.
     
    +
    +
    + + + + + diff --git a/external/epid-sdk-3.0.0/doc/html/dir_f169ebf8da29290a918fa4b3f7151050.html b/external/epid-sdk-3.0.0/doc/html/dir_f169ebf8da29290a918fa4b3f7151050.html new file mode 100644 index 00000000..3a07fce1 --- /dev/null +++ b/external/epid-sdk-3.0.0/doc/html/dir_f169ebf8da29290a918fa4b3f7151050.html @@ -0,0 +1,111 @@ + + + + + + + +Intel® Enhanced Privacy ID SDK: epid/common/math Directory Reference + + + + + + + + + + + + +
    +
    + + + + + + +
    + +
    +
    + + +
    +
    + +
    +
    +
    + +
    +
    +
    +
    math Directory Reference
    +
    +
    + +

    Math primitives.

    + +More...

    + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Files

    file  bignum.h
     Big number interface.
     
    file  ecdsa.h
     Ecdsa interface.
     
    file  ecgroup.h
     Elliptic curve group interface.
     
    file  finitefield.h
     Finite field interface.
     
    file  hash.h
     Hash primitives.
     
    file  pairing.h
     Pairing interface.
     
    file  printutils.h
     Print helper interface.
     
    file  tatepairing.h
     Intel(R) EPID 1.1 Pairing interface.
     
    +

    Detailed Description

    +

    Math primitives.

    +
    +
    + + + + + diff --git a/external/epid-sdk-3.0.0/doc/html/dir_f6bef457d5f671b6e774bfccc16651f6.html b/external/epid-sdk-3.0.0/doc/html/dir_f6bef457d5f671b6e774bfccc16651f6.html new file mode 100644 index 00000000..b4547802 --- /dev/null +++ b/external/epid-sdk-3.0.0/doc/html/dir_f6bef457d5f671b6e774bfccc16651f6.html @@ -0,0 +1,108 @@ + + + + + + + +Intel® Enhanced Privacy ID SDK: epid/common Directory Reference + + + + + + + + + + + + +
    +
    + + + + + + +
    + +
    +
    + + +
    +
    + +
    +
    +
    + +
    +
    +
    +
    common Directory Reference
    +
    +
    + +

    Common code shared between core sub-components.

    + +More...

    + + + + + +

    +Directories

    directory  math
     Math primitives.
     
    + + + + + + + + + + + + + + + + +

    +Files

    file  bitsupplier.h
     Random data supplier interface.
     
    file  errors.h
     Error reporting.
     
    file  file_parser.h
     Epid issuer material parsing utilities.
     
    file  stdtypes.h
     C99 standard data types.
     
    file  types.h
     SDK data types.
     
    +

    Detailed Description

    +

    Common code shared between core sub-components.

    +
    +
    + + + + + diff --git a/external/epid-sdk-3.0.0/doc/html/doc.png b/external/epid-sdk-3.0.0/doc/html/doc.png new file mode 100644 index 0000000000000000000000000000000000000000..17edabff95f7b8da13c9516a04efe05493c29501 GIT binary patch literal 746 zcmV7=@pnbNXRFEm&G8P!&WHG=d)>K?YZ1bzou)2{$)) zumDct!>4SyxL;zgaG>wy`^Hv*+}0kUfCrz~BCOViSb$_*&;{TGGn2^x9K*!Sf0=lV zpP=7O;GA0*Jm*tTYj$IoXvimpnV4S1Z5f$p*f$Db2iq2zrVGQUz~yq`ahn7ck(|CE z7Gz;%OP~J6)tEZWDzjhL9h2hdfoU2)Nd%T<5Kt;Y0XLt&<@6pQx!nw*5`@bq#?l*?3z{Hlzoc=Pr>oB5(9i6~_&-}A(4{Q$>c>%rV&E|a(r&;?i5cQB=} zYSDU5nXG)NS4HEs0it2AHe2>shCyr7`6@4*6{r@8fXRbTA?=IFVWAQJL&H5H{)DpM#{W(GL+Idzf^)uRV@oB8u$ z8v{MfJbTiiRg4bza<41NAzrl{=3fl_D+$t+^!xlQ8S}{UtY`e z;;&9UhyZqQRN%2pot{*Ei0*4~hSF_3AH2@fKU!$NSflS>{@tZpDT4`M2WRTTVH+D? z)GFlEGGHe?koB}i|1w45!BF}N_q&^HJ&-tyR{(afC6H7|aml|tBBbv}55C5DNP8p3 z)~jLEO4Z&2hZmP^i-e%(@d!(E|KRafiU8Q5u(wU((j8un3OR*Hvj+t literal 0 HcmV?d00001 diff --git a/external/epid-sdk-3.0.0/doc/html/doxygen.css b/external/epid-sdk-3.0.0/doc/html/doxygen.css new file mode 100644 index 00000000..1425ec53 --- /dev/null +++ b/external/epid-sdk-3.0.0/doc/html/doxygen.css @@ -0,0 +1,1475 @@ +/* The standard CSS for doxygen 1.8.11 */ + +body, table, div, p, dl { + font: 400 14px/22px Roboto,sans-serif; +} + +/* @group Heading Levels */ + +h1.groupheader { + font-size: 150%; +} + +.title { + font: 400 14px/28px Roboto,sans-serif; + font-size: 150%; + font-weight: bold; + margin: 10px 2px; +} + +h2.groupheader { + border-bottom: 1px solid #879ECB; + color: #354C7B; + font-size: 150%; + font-weight: normal; + margin-top: 1.75em; + padding-top: 8px; + padding-bottom: 4px; + width: 100%; +} + +h3.groupheader { + font-size: 100%; +} + +h1, h2, h3, h4, h5, h6 { + -webkit-transition: text-shadow 0.5s linear; + -moz-transition: text-shadow 0.5s linear; + -ms-transition: text-shadow 0.5s linear; + -o-transition: text-shadow 0.5s linear; + transition: text-shadow 0.5s linear; + margin-right: 15px; +} + +h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow { + text-shadow: 0 0 15px cyan; +} + +dt { + font-weight: bold; +} + +div.multicol { + -moz-column-gap: 1em; + -webkit-column-gap: 1em; + -moz-column-count: 3; + -webkit-column-count: 3; +} + +p.startli, p.startdd { + margin-top: 2px; +} + +p.starttd { + margin-top: 0px; +} + +p.endli { + margin-bottom: 0px; +} + +p.enddd { + margin-bottom: 4px; +} + +p.endtd { + margin-bottom: 2px; +} + +/* @end */ + +caption { + font-weight: bold; +} + +span.legend { + font-size: 70%; + text-align: center; +} + +h3.version { + font-size: 90%; + text-align: center; +} + +div.qindex, div.navtab{ + background-color: #EBEFF6; + border: 1px solid #A3B4D7; + text-align: center; +} + +div.qindex, div.navpath { + width: 100%; + line-height: 140%; +} + +div.navtab { + margin-right: 15px; +} + +/* @group Link Styling */ + +a { + color: #3D578C; + font-weight: normal; + text-decoration: none; +} + +.contents a:visited { + color: #4665A2; +} + +a:hover { + text-decoration: underline; +} + +a.qindex { + font-weight: bold; +} + +a.qindexHL { + font-weight: bold; + background-color: #9CAFD4; + color: #ffffff; + border: 1px double #869DCA; +} + +.contents a.qindexHL:visited { + color: #ffffff; +} + +a.el { + font-weight: bold; +} + +a.elRef { +} + +a.code, a.code:visited, a.line, a.line:visited { + color: #4665A2; +} + +a.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited { + color: #4665A2; +} + +/* @end */ + +dl.el { + margin-left: -1cm; +} + +pre.fragment { + border: 1px solid #C4CFE5; + background-color: #FBFCFD; + padding: 4px 6px; + margin: 4px 8px 4px 2px; + overflow: auto; + word-wrap: break-word; + font-size: 9pt; + line-height: 125%; + font-family: monospace, fixed; + font-size: 105%; +} + +div.fragment { + padding: 4px 6px; + margin: 4px 8px 4px 2px; + background-color: #FBFCFD; + border: 1px solid #C4CFE5; +} + +div.line { + font-family: monospace, fixed; + font-size: 13px; + min-height: 13px; + line-height: 1.0; + text-wrap: unrestricted; + white-space: -moz-pre-wrap; /* Moz */ + white-space: -pre-wrap; /* Opera 4-6 */ + white-space: -o-pre-wrap; /* Opera 7 */ + white-space: pre-wrap; /* CSS3 */ + word-wrap: break-word; /* IE 5.5+ */ + text-indent: -53px; + padding-left: 53px; + padding-bottom: 0px; + margin: 0px; + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +div.line:after { + content:"\000A"; + white-space: pre; +} + +div.line.glow { + background-color: cyan; + box-shadow: 0 0 10px cyan; +} + + +span.lineno { + padding-right: 4px; + text-align: right; + border-right: 2px solid #0F0; + background-color: #E8E8E8; + white-space: pre; +} +span.lineno a { + background-color: #D8D8D8; +} + +span.lineno a:hover { + background-color: #C8C8C8; +} + +div.ah, span.ah { + background-color: black; + font-weight: bold; + color: #ffffff; + margin-bottom: 3px; + margin-top: 3px; + padding: 0.2em; + border: solid thin #333; + border-radius: 0.5em; + -webkit-border-radius: .5em; + -moz-border-radius: .5em; + box-shadow: 2px 2px 3px #999; + -webkit-box-shadow: 2px 2px 3px #999; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; + background-image: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#000),color-stop(0.3, #444)); + background-image: -moz-linear-gradient(center top, #eee 0%, #444 40%, #000 110%); +} + +div.classindex ul { + list-style: none; + padding-left: 0; +} + +div.classindex span.ai { + display: inline-block; +} + +div.groupHeader { + margin-left: 16px; + margin-top: 12px; + font-weight: bold; +} + +div.groupText { + margin-left: 16px; + font-style: italic; +} + +body { + background-color: white; + color: black; + margin: 0; +} + +div.contents { + margin-top: 10px; + margin-left: 12px; + margin-right: 8px; +} + +td.indexkey { + background-color: #EBEFF6; + font-weight: bold; + border: 1px solid #C4CFE5; + margin: 2px 0px 2px 0; + padding: 2px 10px; + white-space: nowrap; + vertical-align: top; +} + +td.indexvalue { + background-color: #EBEFF6; + border: 1px solid #C4CFE5; + padding: 2px 10px; + margin: 2px 0px; +} + +tr.memlist { + background-color: #EEF1F7; +} + +p.formulaDsp { + text-align: center; +} + +img.formulaDsp { + +} + +img.formulaInl { + vertical-align: middle; +} + +div.center { + text-align: center; + margin-top: 0px; + margin-bottom: 0px; + padding: 0px; +} + +div.center img { + border: 0px; +} + +address.footer { + text-align: right; + padding-right: 12px; +} + +img.footer { + border: 0px; + vertical-align: middle; +} + +/* @group Code Colorization */ + +span.keyword { + color: #008000 +} + +span.keywordtype { + color: #604020 +} + +span.keywordflow { + color: #e08000 +} + +span.comment { + color: #800000 +} + +span.preprocessor { + color: #806020 +} + +span.stringliteral { + color: #002080 +} + +span.charliteral { + color: #008080 +} + +span.vhdldigit { + color: #ff00ff +} + +span.vhdlchar { + color: #000000 +} + +span.vhdlkeyword { + color: #700070 +} + +span.vhdllogic { + color: #ff0000 +} + +blockquote { + background-color: #F7F8FB; + border-left: 2px solid #9CAFD4; + margin: 0 24px 0 4px; + padding: 0 12px 0 16px; +} + +/* @end */ + +/* +.search { + color: #003399; + font-weight: bold; +} + +form.search { + margin-bottom: 0px; + margin-top: 0px; +} + +input.search { + font-size: 75%; + color: #000080; + font-weight: normal; + background-color: #e8eef2; +} +*/ + +td.tiny { + font-size: 75%; +} + +.dirtab { + padding: 4px; + border-collapse: collapse; + border: 1px solid #A3B4D7; +} + +th.dirtab { + background: #EBEFF6; + font-weight: bold; +} + +hr { + height: 0px; + border: none; + border-top: 1px solid #4A6AAA; +} + +hr.footer { + height: 1px; +} + +/* @group Member Descriptions */ + +table.memberdecls { + border-spacing: 0px; + padding: 0px; +} + +.memberdecls td, .fieldtable tr { + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +.memberdecls td.glow, .fieldtable tr.glow { + background-color: cyan; + box-shadow: 0 0 15px cyan; +} + +.mdescLeft, .mdescRight, +.memItemLeft, .memItemRight, +.memTemplItemLeft, .memTemplItemRight, .memTemplParams { + background-color: #F9FAFC; + border: none; + margin: 4px; + padding: 1px 0 0 8px; +} + +.mdescLeft, .mdescRight { + padding: 0px 8px 4px 8px; + color: #555; +} + +.memSeparator { + border-bottom: 1px solid #DEE4F0; + line-height: 1px; + margin: 0px; + padding: 0px; +} + +.memItemLeft, .memTemplItemLeft { + white-space: nowrap; +} + +.memItemRight { + width: 100%; +} + +.memTemplParams { + color: #4665A2; + white-space: nowrap; + font-size: 80%; +} + +/* @end */ + +/* @group Member Details */ + +/* Styles for detailed member documentation */ + +.memtemplate { + font-size: 80%; + color: #4665A2; + font-weight: normal; + margin-left: 9px; +} + +.memnav { + background-color: #EBEFF6; + border: 1px solid #A3B4D7; + text-align: center; + margin: 2px; + margin-right: 15px; + padding: 2px; +} + +.mempage { + width: 100%; +} + +.memitem { + padding: 0; + margin-bottom: 10px; + margin-right: 5px; + -webkit-transition: box-shadow 0.5s linear; + -moz-transition: box-shadow 0.5s linear; + -ms-transition: box-shadow 0.5s linear; + -o-transition: box-shadow 0.5s linear; + transition: box-shadow 0.5s linear; + display: table !important; + width: 100%; +} + +.memitem.glow { + box-shadow: 0 0 15px cyan; +} + +.memname { + font-weight: bold; + margin-left: 6px; +} + +.memname td { + vertical-align: bottom; +} + +.memproto, dl.reflist dt { + border-top: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + padding: 6px 0px 6px 0px; + color: #253555; + font-weight: bold; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + background-image:url('nav_f.png'); + background-repeat:repeat-x; + background-color: #E2E8F2; + /* opera specific markup */ + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + border-top-right-radius: 4px; + border-top-left-radius: 4px; + /* firefox specific markup */ + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + -moz-border-radius-topright: 4px; + -moz-border-radius-topleft: 4px; + /* webkit specific markup */ + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + -webkit-border-top-right-radius: 4px; + -webkit-border-top-left-radius: 4px; + +} + +.memdoc, dl.reflist dd { + border-bottom: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + padding: 6px 10px 2px 10px; + background-color: #FBFCFD; + border-top-width: 0; + background-image:url('nav_g.png'); + background-repeat:repeat-x; + background-color: #FFFFFF; + /* opera specific markup */ + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + /* firefox specific markup */ + -moz-border-radius-bottomleft: 4px; + -moz-border-radius-bottomright: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + /* webkit specific markup */ + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +dl.reflist dt { + padding: 5px; +} + +dl.reflist dd { + margin: 0px 0px 10px 0px; + padding: 5px; +} + +.paramkey { + text-align: right; +} + +.paramtype { + white-space: nowrap; +} + +.paramname { + color: #602020; + white-space: nowrap; +} +.paramname em { + font-style: normal; +} +.paramname code { + line-height: 14px; +} + +.params, .retval, .exception, .tparams { + margin-left: 0px; + padding-left: 0px; +} + +.params .paramname, .retval .paramname { + font-weight: bold; + vertical-align: top; +} + +.params .paramtype { + font-style: italic; + vertical-align: top; +} + +.params .paramdir { + font-family: "courier new",courier,monospace; + vertical-align: top; +} + +table.mlabels { + border-spacing: 0px; +} + +td.mlabels-left { + width: 100%; + padding: 0px; +} + +td.mlabels-right { + vertical-align: bottom; + padding: 0px; + white-space: nowrap; +} + +span.mlabels { + margin-left: 8px; +} + +span.mlabel { + background-color: #728DC1; + border-top:1px solid #5373B4; + border-left:1px solid #5373B4; + border-right:1px solid #C4CFE5; + border-bottom:1px solid #C4CFE5; + text-shadow: none; + color: white; + margin-right: 4px; + padding: 2px 3px; + border-radius: 3px; + font-size: 7pt; + white-space: nowrap; + vertical-align: middle; +} + + + +/* @end */ + +/* these are for tree view inside a (index) page */ + +div.directory { + margin: 10px 0px; + border-top: 1px solid #9CAFD4; + border-bottom: 1px solid #9CAFD4; + width: 100%; +} + +.directory table { + border-collapse:collapse; +} + +.directory td { + margin: 0px; + padding: 0px; + vertical-align: top; +} + +.directory td.entry { + white-space: nowrap; + padding-right: 6px; + padding-top: 3px; +} + +.directory td.entry a { + outline:none; +} + +.directory td.entry a img { + border: none; +} + +.directory td.desc { + width: 100%; + padding-left: 6px; + padding-right: 6px; + padding-top: 3px; + border-left: 1px solid rgba(0,0,0,0.05); +} + +.directory tr.even { + padding-left: 6px; + background-color: #F7F8FB; +} + +.directory img { + vertical-align: -30%; +} + +.directory .levels { + white-space: nowrap; + width: 100%; + text-align: right; + font-size: 9pt; +} + +.directory .levels span { + cursor: pointer; + padding-left: 2px; + padding-right: 2px; + color: #3D578C; +} + +.arrow { + color: #9CAFD4; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + cursor: pointer; + font-size: 80%; + display: inline-block; + width: 16px; + height: 22px; +} + +.icon { + font-family: Arial, Helvetica; + font-weight: bold; + font-size: 12px; + height: 14px; + width: 16px; + display: inline-block; + background-color: #728DC1; + color: white; + text-align: center; + border-radius: 4px; + margin-left: 2px; + margin-right: 2px; +} + +.icona { + width: 24px; + height: 22px; + display: inline-block; +} + +.iconfopen { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('folderopen.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.iconfclosed { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('folderclosed.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.icondoc { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('doc.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +table.directory { + font: 400 14px Roboto,sans-serif; +} + +/* @end */ + +div.dynheader { + margin-top: 8px; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +address { + font-style: normal; + color: #2A3D61; +} + +table.doxtable caption { + caption-side: top; +} + +table.doxtable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.doxtable td, table.doxtable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +table.doxtable th { + background-color: #374F7F; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +table.fieldtable { + /*width: 100%;*/ + margin-bottom: 10px; + border: 1px solid #A8B8D9; + border-spacing: 0px; + -moz-border-radius: 4px; + -webkit-border-radius: 4px; + border-radius: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; + -webkit-box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); + box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); +} + +.fieldtable td, .fieldtable th { + padding: 3px 7px 2px; +} + +.fieldtable td.fieldtype, .fieldtable td.fieldname { + white-space: nowrap; + border-right: 1px solid #A8B8D9; + border-bottom: 1px solid #A8B8D9; + vertical-align: top; +} + +.fieldtable td.fieldname { + padding-top: 3px; +} + +.fieldtable td.fielddoc { + border-bottom: 1px solid #A8B8D9; + /*width: 100%;*/ +} + +.fieldtable td.fielddoc p:first-child { + margin-top: 0px; +} + +.fieldtable td.fielddoc p:last-child { + margin-bottom: 2px; +} + +.fieldtable tr:last-child td { + border-bottom: none; +} + +.fieldtable th { + background-image:url('nav_f.png'); + background-repeat:repeat-x; + background-color: #E2E8F2; + font-size: 90%; + color: #253555; + padding-bottom: 4px; + padding-top: 5px; + text-align:left; + -moz-border-radius-topleft: 4px; + -moz-border-radius-topright: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + border-top-left-radius: 4px; + border-top-right-radius: 4px; + border-bottom: 1px solid #A8B8D9; +} + + +.tabsearch { + top: 0px; + left: 10px; + height: 36px; + background-image: url('tab_b.png'); + z-index: 101; + overflow: hidden; + font-size: 13px; +} + +.navpath ul +{ + font-size: 11px; + background-image:url('tab_b.png'); + background-repeat:repeat-x; + background-position: 0 -5px; + height:30px; + line-height:30px; + color:#8AA0CC; + border:solid 1px #C2CDE4; + overflow:hidden; + margin:0px; + padding:0px; +} + +.navpath li +{ + list-style-type:none; + float:left; + padding-left:10px; + padding-right:15px; + background-image:url('bc_s.png'); + background-repeat:no-repeat; + background-position:right; + color:#364D7C; +} + +.navpath li.navelem a +{ + height:32px; + display:block; + text-decoration: none; + outline: none; + color: #283A5D; + font-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + text-decoration: none; +} + +.navpath li.navelem a:hover +{ + color:#6884BD; +} + +.navpath li.footer +{ + list-style-type:none; + float:right; + padding-left:10px; + padding-right:15px; + background-image:none; + background-repeat:no-repeat; + background-position:right; + color:#364D7C; + font-size: 8pt; +} + + +div.summary +{ + float: right; + font-size: 8pt; + padding-right: 5px; + width: 50%; + text-align: right; +} + +div.summary a +{ + white-space: nowrap; +} + +table.classindex +{ + margin: 10px; + white-space: nowrap; + margin-left: 3%; + margin-right: 3%; + width: 94%; + border: 0; + border-spacing: 0; + padding: 0; +} + +div.ingroups +{ + font-size: 8pt; + width: 50%; + text-align: left; +} + +div.ingroups a +{ + white-space: nowrap; +} + +div.header +{ + background-image:url('nav_h.png'); + background-repeat:repeat-x; + background-color: #F9FAFC; + margin: 0px; + border-bottom: 1px solid #C4CFE5; +} + +div.headertitle +{ + padding: 5px 5px 5px 10px; +} + +dl +{ + padding: 0 0 0 10px; +} + +/* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug */ +dl.section +{ + margin-left: 0px; + padding-left: 0px; +} + +dl.note +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #D0C000; +} + +dl.warning, dl.attention +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #FF0000; +} + +dl.pre, dl.post, dl.invariant +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #00D000; +} + +dl.deprecated +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #505050; +} + +dl.todo +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #00C0E0; +} + +dl.test +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #3030E0; +} + +dl.bug +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #C08050; +} + +dl.section dd { + margin-bottom: 6px; +} + + +#projectlogo +{ + text-align: center; + vertical-align: bottom; + border-collapse: separate; +} + +#projectlogo img +{ + border: 0px none; +} + +#projectalign +{ + vertical-align: middle; +} + +#projectname +{ + font: 300% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 2px 0px; +} + +#projectbrief +{ + font: 120% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#projectnumber +{ + font: 50% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#titlearea +{ + padding: 0px; + margin: 0px; + width: 100%; + border-bottom: 1px solid #5373B4; +} + +.image +{ + text-align: center; +} + +.dotgraph +{ + text-align: center; +} + +.mscgraph +{ + text-align: center; +} + +.diagraph +{ + text-align: center; +} + +.caption +{ + font-weight: bold; +} + +div.zoom +{ + border: 1px solid #90A5CE; +} + +dl.citelist { + margin-bottom:50px; +} + +dl.citelist dt { + color:#334975; + float:left; + font-weight:bold; + margin-right:10px; + padding:5px; +} + +dl.citelist dd { + margin:2px 0; + padding:5px 0; +} + +div.toc { + padding: 14px 25px; + background-color: #F4F6FA; + border: 1px solid #D8DFEE; + border-radius: 7px 7px 7px 7px; + float: right; + height: auto; + margin: 0 8px 10px 10px; + width: 200px; +} + +div.toc li { + background: url("bdwn.png") no-repeat scroll 0 5px transparent; + font: 10px/1.2 Verdana,DejaVu Sans,Geneva,sans-serif; + margin-top: 5px; + padding-left: 10px; + padding-top: 2px; +} + +div.toc h3 { + font: bold 12px/1.2 Arial,FreeSans,sans-serif; + color: #4665A2; + border-bottom: 0 none; + margin: 0; +} + +div.toc ul { + list-style: none outside none; + border: medium none; + padding: 0px; +} + +div.toc li.level1 { + margin-left: 0px; +} + +div.toc li.level2 { + margin-left: 15px; +} + +div.toc li.level3 { + margin-left: 30px; +} + +div.toc li.level4 { + margin-left: 45px; +} + +.inherit_header { + font-weight: bold; + color: gray; + cursor: pointer; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.inherit_header td { + padding: 6px 0px 2px 5px; +} + +.inherit { + display: none; +} + +tr.heading h2 { + margin-top: 12px; + margin-bottom: 4px; +} + +/* tooltip related style info */ + +.ttc { + position: absolute; + display: none; +} + +#powerTip { + cursor: default; + white-space: nowrap; + background-color: white; + border: 1px solid gray; + border-radius: 4px 4px 4px 4px; + box-shadow: 1px 1px 7px gray; + display: none; + font-size: smaller; + max-width: 80%; + opacity: 0.9; + padding: 1ex 1em 1em; + position: absolute; + z-index: 2147483647; +} + +#powerTip div.ttdoc { + color: grey; + font-style: italic; +} + +#powerTip div.ttname a { + font-weight: bold; +} + +#powerTip div.ttname { + font-weight: bold; +} + +#powerTip div.ttdeci { + color: #006318; +} + +#powerTip div { + margin: 0px; + padding: 0px; + font: 12px/16px Roboto,sans-serif; +} + +#powerTip:before, #powerTip:after { + content: ""; + position: absolute; + margin: 0px; +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.s:after, #powerTip.s:before, +#powerTip.w:after, #powerTip.w:before, +#powerTip.e:after, #powerTip.e:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.nw:after, #powerTip.nw:before, +#powerTip.sw:after, #powerTip.sw:before { + border: solid transparent; + content: " "; + height: 0; + width: 0; + position: absolute; +} + +#powerTip.n:after, #powerTip.s:after, +#powerTip.w:after, #powerTip.e:after, +#powerTip.nw:after, #powerTip.ne:after, +#powerTip.sw:after, #powerTip.se:after { + border-color: rgba(255, 255, 255, 0); +} + +#powerTip.n:before, #powerTip.s:before, +#powerTip.w:before, #powerTip.e:before, +#powerTip.nw:before, #powerTip.ne:before, +#powerTip.sw:before, #powerTip.se:before { + border-color: rgba(128, 128, 128, 0); +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.nw:after, #powerTip.nw:before { + top: 100%; +} + +#powerTip.n:after, #powerTip.ne:after, #powerTip.nw:after { + border-top-color: #ffffff; + border-width: 10px; + margin: 0px -10px; +} +#powerTip.n:before { + border-top-color: #808080; + border-width: 11px; + margin: 0px -11px; +} +#powerTip.n:after, #powerTip.n:before { + left: 50%; +} + +#powerTip.nw:after, #powerTip.nw:before { + right: 14px; +} + +#powerTip.ne:after, #powerTip.ne:before { + left: 14px; +} + +#powerTip.s:after, #powerTip.s:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.sw:after, #powerTip.sw:before { + bottom: 100%; +} + +#powerTip.s:after, #powerTip.se:after, #powerTip.sw:after { + border-bottom-color: #ffffff; + border-width: 10px; + margin: 0px -10px; +} + +#powerTip.s:before, #powerTip.se:before, #powerTip.sw:before { + border-bottom-color: #808080; + border-width: 11px; + margin: 0px -11px; +} + +#powerTip.s:after, #powerTip.s:before { + left: 50%; +} + +#powerTip.sw:after, #powerTip.sw:before { + right: 14px; +} + +#powerTip.se:after, #powerTip.se:before { + left: 14px; +} + +#powerTip.e:after, #powerTip.e:before { + left: 100%; +} +#powerTip.e:after { + border-left-color: #ffffff; + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.e:before { + border-left-color: #808080; + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +#powerTip.w:after, #powerTip.w:before { + right: 100%; +} +#powerTip.w:after { + border-right-color: #ffffff; + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.w:before { + border-right-color: #808080; + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +@media print +{ + #top { display: none; } + #side-nav { display: none; } + #nav-path { display: none; } + body { overflow:visible; } + h1, h2, h3, h4, h5, h6 { page-break-after: avoid; } + .summary { display: none; } + .memitem { page-break-inside: avoid; } + #doc-content + { + margin-left:0 !important; + height:auto !important; + width:auto !important; + overflow:inherit; + display:inline; + } +} + diff --git a/external/epid-sdk-3.0.0/doc/html/doxygen.png b/external/epid-sdk-3.0.0/doc/html/doxygen.png new file mode 100644 index 0000000000000000000000000000000000000000..3ff17d807fd8aa003bed8bb2a69e8f0909592fd1 GIT binary patch literal 3779 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 literal 0 HcmV?d00001 diff --git a/external/epid-sdk-3.0.0/doc/html/dynsections.js b/external/epid-sdk-3.0.0/doc/html/dynsections.js new file mode 100644 index 00000000..85e18369 --- /dev/null +++ b/external/epid-sdk-3.0.0/doc/html/dynsections.js @@ -0,0 +1,97 @@ +function toggleVisibility(linkObj) +{ + var base = $(linkObj).attr('id'); + var summary = $('#'+base+'-summary'); + var content = $('#'+base+'-content'); + var trigger = $('#'+base+'-trigger'); + var src=$(trigger).attr('src'); + if (content.is(':visible')===true) { + content.hide(); + summary.show(); + $(linkObj).addClass('closed').removeClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png'); + } else { + content.show(); + summary.hide(); + $(linkObj).removeClass('closed').addClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-10)+'open.png'); + } + return false; +} + +function updateStripes() +{ + $('table.directory tr'). + removeClass('even').filter(':visible:even').addClass('even'); +} + +function toggleLevel(level) +{ + $('table.directory tr').each(function() { + var l = this.id.split('_').length-1; + var i = $('#img'+this.id.substring(3)); + var a = $('#arr'+this.id.substring(3)); + if (l + + + + + + +Intel® Enhanced Privacy ID SDK: epid/common/math/ecdsa.h File Reference + + + + + + + + + + + + +
    +
    + + + + + + +
    + +
    +
    + + +
    +
    + +
    +
    +
    + +
    +
    + +
    +
    ecdsa.h File Reference
    +
    +
    + +

    Ecdsa interface. +More...

    +
    #include <stddef.h>
    +#include "epid/common/errors.h"
    +#include "epid/common/types.h"
    +#include "epid/common/bitsupplier.h"
    +
    + + + + + + + +

    +Functions

    EpidStatus EcdsaVerifyBuffer (void const *buf, size_t buf_len, EcdsaPublicKey const *pubkey, EcdsaSignature const *sig)
     Verifies authenticity of a digital signature over a buffer. More...
     
    EpidStatus EcdsaSignBuffer (void const *buf, size_t buf_len, EcdsaPrivateKey const *privkey, BitSupplier rnd_func, void *rnd_param, EcdsaSignature *sig)
     Creates ECDSA signature of buffer. More...
     
    +

    Detailed Description

    +

    Ecdsa interface.

    +
    +
    + + + + + diff --git a/external/epid-sdk-3.0.0/doc/html/ecgroup_8h.html b/external/epid-sdk-3.0.0/doc/html/ecgroup_8h.html new file mode 100644 index 00000000..adf8f29e --- /dev/null +++ b/external/epid-sdk-3.0.0/doc/html/ecgroup_8h.html @@ -0,0 +1,165 @@ + + + + + + + +Intel® Enhanced Privacy ID SDK: epid/common/math/ecgroup.h File Reference + + + + + + + + + + + + +
    +
    + + + + + + +
    + +
    +
    + + +
    +
    + +
    +
    +
    + +
    +
    + +
    +
    ecgroup.h File Reference
    +
    +
    + +

    Elliptic curve group interface. +More...

    + + + + + + + + +

    +Typedefs

    +typedef struct EcGroup EcGroup
     Elliptic curve group over finite field.
     
    +typedef struct EcPoint EcPoint
     Point on elliptic curve over finite field.
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    EpidStatus NewEcGroup (FiniteField const *ff, FfElement const *a, FfElement const *b, FfElement const *x, FfElement const *y, BigNum const *order, BigNum const *cofactor, EcGroup **g)
     Constructs a new EcGroup. More...
     
    void DeleteEcGroup (EcGroup **g)
     Deletes a previously allocated EcGroup. More...
     
    EpidStatus NewEcPoint (EcGroup const *g, EcPoint **p)
     Creates a new EcPoint. More...
     
    void DeleteEcPoint (EcPoint **p)
     Deletes a previously allocated EcPoint. More...
     
    EpidStatus ReadEcPoint (EcGroup *g, void const *p_str, size_t strlen, EcPoint *p)
     Deserializes an EcPoint from a string. More...
     
    EpidStatus WriteEcPoint (EcGroup *g, EcPoint const *p, void *p_str, size_t strlen)
     Serializes an EcPoint to a string. More...
     
    EpidStatus EcMul (EcGroup *g, EcPoint const *a, EcPoint const *b, EcPoint *r)
     Multiplies two elements in an elliptic curve group. More...
     
    EpidStatus EcExp (EcGroup *g, EcPoint const *a, BigNumStr const *b, EcPoint *r)
     Raises a point in an elliptic curve group to a power. More...
     
    EpidStatus EcSscmExp (EcGroup *g, EcPoint const *a, BigNumStr const *b, EcPoint *r)
     Software side-channel mitigated implementation of EcExp. More...
     
    EpidStatus EcMultiExp (EcGroup *g, EcPoint const **a, BigNumStr const **b, size_t m, EcPoint *r)
     Multi-exponentiates elements in elliptic curve group. More...
     
    EpidStatus EcMultiExpBn (EcGroup *g, EcPoint const **a, BigNum const **b, size_t m, EcPoint *r)
     Multi-exponentiates elements in elliptic curve group. More...
     
    EpidStatus EcSscmMultiExp (EcGroup *g, EcPoint const **a, BigNumStr const **b, size_t m, EcPoint *r)
     Software side-channel mitigated implementation of EcMultiExp. More...
     
    EpidStatus EcGetRandom (EcGroup *g, BitSupplier rnd_func, void *rnd_func_param, EcPoint *r)
     Generates a random element from an elliptic curve group. More...
     
    EpidStatus EcInGroup (EcGroup *g, void const *p_str, size_t strlen, bool *in_group)
     Checks if a point is in an elliptic curve group. More...
     
    EpidStatus Epid11EcHash (EcGroup *g, void const *msg, size_t msg_len, EcPoint *r)
     Hashes an arbitrary message to an Intel(R) EPID 1.1 element in an elliptic curve group. More...
     
    EpidStatus EcHash (EcGroup *g, void const *msg, size_t msg_len, HashAlg hash_alg, EcPoint *r)
     Hashes an arbitrary message to an element in an elliptic curve group. More...
     
    EpidStatus EcMakePoint (EcGroup *g, FfElement const *x, EcPoint *r)
     Sets an EcPoint variable to a point on a curve. More...
     
    EpidStatus EcInverse (EcGroup *g, EcPoint const *p, EcPoint *r)
     Computes the additive inverse of an EcPoint. More...
     
    EpidStatus EcIsEqual (EcGroup *g, EcPoint const *a, EcPoint const *b, bool *is_equal)
     Checks if two EcPoints are equal. More...
     
    EpidStatus EcIsIdentity (EcGroup *g, EcPoint const *p, bool *is_identity)
     Checks if an EcPoint is the identity element. More...
     
    +

    Detailed Description

    +

    Elliptic curve group interface.

    +
    +
    + + + + + diff --git a/external/epid-sdk-3.0.0/doc/html/epid__overview_8dox.html b/external/epid-sdk-3.0.0/doc/html/epid__overview_8dox.html new file mode 100644 index 00000000..1aae71e9 --- /dev/null +++ b/external/epid-sdk-3.0.0/doc/html/epid__overview_8dox.html @@ -0,0 +1,82 @@ + + + + + + + +Intel® Enhanced Privacy ID SDK: doc/docsrc/epid_overview.dox File Reference + + + + + + + + + + + + +
    +
    + + + + + + +
    + +
    +
    + + +
    +
    + +
    +
    +
    + +
    +
    +
    +
    doc/docsrc/epid_overview.dox File Reference
    +
    +
    + +

    This file is used by Doxygen to generate documentation. +More...

    +

    Detailed Description

    +

    This file is used by Doxygen to generate documentation.

    +
    +
    + + + + + diff --git a/external/epid-sdk-3.0.0/doc/html/epid_diagram_high_level_interaction.png b/external/epid-sdk-3.0.0/doc/html/epid_diagram_high_level_interaction.png new file mode 100644 index 0000000000000000000000000000000000000000..1013eb05f21ed8d32711372cea3756ffdbe79830 GIT binary patch literal 25513 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 literal 0 HcmV?d00001 diff --git a/external/epid-sdk-3.0.0/doc/html/epid_diagram_high_level_use_case.png b/external/epid-sdk-3.0.0/doc/html/epid_diagram_high_level_use_case.png new file mode 100644 index 0000000000000000000000000000000000000000..acc63747281f6b6233c1a641044c5a6face6fff7 GIT binary patch literal 16041 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 literal 0 HcmV?d00001 diff --git a/external/epid-sdk-3.0.0/doc/html/epid_diagram_issuer_high_level.png b/external/epid-sdk-3.0.0/doc/html/epid_diagram_issuer_high_level.png new file mode 100644 index 0000000000000000000000000000000000000000..d03d6b9fdb1f216d83576b612707bbf5601874d4 GIT binary patch literal 4857 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 ul > li > div { + display: none; +} + +/* Shift remaining nav-tree nodes left */ +#nav-tree-contents > ul { + margin: 0; + padding: 0; + margin-left: -16px; + margin-top: -2em; /* nav-tree hack*/ +} + +#projectlink { + color:inherit; + text-decoration:none; +} \ No newline at end of file diff --git a/external/epid-sdk-3.0.0/doc/html/errors_8h.html b/external/epid-sdk-3.0.0/doc/html/errors_8h.html new file mode 100644 index 00000000..ecda4e4c --- /dev/null +++ b/external/epid-sdk-3.0.0/doc/html/errors_8h.html @@ -0,0 +1,124 @@ + + + + + + + +Intel® Enhanced Privacy ID SDK: epid/common/errors.h File Reference + + + + + + + + + + + + +

    +
    + +
    +
    +
    + +
    +
    + +
    +
    errors.h File Reference
    +
    +
    + +

    Error reporting. +More...

    + + + + + +

    +Enumerations

    enum  EpidStatus {
    +  kEpidNoErr = 0, +kEpidSigValid = 0, +kEpidSigInvalid = 1, +kEpidSigRevokedInGroupRl = 2, +
    +  kEpidSigRevokedInPrivRl = 3, +kEpidSigRevokedInSigRl = 4, +kEpidSigRevokedInVerifierRl = 5, +kEpidErr = -999, +
    +  kEpidNotImpl, +kEpidBadArgErr, +kEpidNoMemErr, +kEpidMemAllocErr, +
    +  kEpidMathErr, +kEpidDivByZeroErr, +kEpidUnderflowErr, +kEpidHashAlgorithmNotSupported, +
    +  kEpidRandMaxIterErr, +kEpidDuplicateErr, +kEpidInconsistentBasenameSetErr, +kEpidMathQuadraticNonResidueError +
    + }
     Return status for SDK functions. More...
     
    + + + + +

    +Functions

    char const * EpidStatusToString (EpidStatus e)
     Returns string representation of error code. More...
     
    +

    Detailed Description

    +

    Error reporting.

    +
    +
    + + + + + diff --git a/external/epid-sdk-3.0.0/doc/html/examples_8dox.html b/external/epid-sdk-3.0.0/doc/html/examples_8dox.html new file mode 100644 index 00000000..0114afb9 --- /dev/null +++ b/external/epid-sdk-3.0.0/doc/html/examples_8dox.html @@ -0,0 +1,82 @@ + + + + + + + +Intel® Enhanced Privacy ID SDK: doc/docsrc/examples.dox File Reference + + + + + + + + + + + + +
    +
    + + + + + + +
    + +
    +
    + + +
    +
    + +
    +
    +
    + +
    +
    +
    +
    doc/docsrc/examples.dox File Reference
    +
    +
    + +

    This file is used by Doxygen to generate documentation. +More...

    +

    Detailed Description

    +

    This file is used by Doxygen to generate documentation.

    +
    +
    + + + + + diff --git a/external/epid-sdk-3.0.0/doc/html/file__parser_8h.html b/external/epid-sdk-3.0.0/doc/html/file__parser_8h.html new file mode 100644 index 00000000..5b29071b --- /dev/null +++ b/external/epid-sdk-3.0.0/doc/html/file__parser_8h.html @@ -0,0 +1,154 @@ + + + + + + + +Intel® Enhanced Privacy ID SDK: epid/common/file_parser.h File Reference + + + + + + + + + + + + +
    +
    + + + + + + +
    + +
    +
    + + +
    +
    + +
    +
    +
    + +
    +
    + +
    +
    file_parser.h File Reference
    +
    +
    + +

    Epid issuer material parsing utilities. +More...

    +
    #include <stddef.h>
    +#include "epid/common/types.h"
    +#include "epid/common/errors.h"
    +
    + + + + + + + +

    +Data Structures

    struct  EpidFileHeader
     Intel(R) EPID binary file header. More...
     
    struct  EpidCaCertificate
     IoT CA Certificate binary format. More...
     
    + + + + + + + +

    +Enumerations

    enum  EpidVersion { kEpid1x, +kEpid2x, +kNumEpidVersions + }
     Recognized Intel(R) EPID versions. More...
     
    enum  EpidFileType {
    +  kIssuingCaPubKeyFile, +kGroupPubKeyFile, +kPrivRlFile, +kSigRlFile, +
    +  kGroupRlFile, +kPrivRlRequestFile, +kSigRlRequestFile, +kGroupRlRequestFile, +
    +  kNumFileTypes +
    + }
     Recognized Intel(R) EPID file types. More...
     
    + + + + + + + + + + + + + + + + +

    +Functions

    EpidStatus EpidParseFileHeader (void const *buf, size_t len, EpidVersion *epid_version, EpidFileType *file_type)
     Extracts Intel(R) EPID Binary Output File header information. More...
     
    EpidStatus EpidParseGroupPubKeyFile (void const *buf, size_t len, EpidCaCertificate const *cert, GroupPubKey *pubkey)
     Extracts group public key from buffer in issuer binary format. More...
     
    EpidStatus EpidParsePrivRlFile (void const *buf, size_t len, EpidCaCertificate const *cert, PrivRl *rl, size_t *rl_len)
     Extracts private key revocation list from buffer in issuer binary format. More...
     
    EpidStatus EpidParseSigRlFile (void const *buf, size_t len, EpidCaCertificate const *cert, SigRl *rl, size_t *rl_len)
     Extracts signature revocation list from buffer in issuer binary format. More...
     
    EpidStatus EpidParseGroupRlFile (void const *buf, size_t len, EpidCaCertificate const *cert, GroupRl *rl, size_t *rl_len)
     Extracts group revocation list from buffer in issuer binary format. More...
     
    + + + + + + + +

    +Variables

    +const OctStr16 kEpidVersionCode [kNumEpidVersions]
     Encoding of issuer material Intel(R) EPID versions.
     
    +const OctStr16 kEpidFileTypeCode [kNumFileTypes]
     Encoding of issuer material file types.
     
    +

    Detailed Description

    +

    Epid issuer material parsing utilities.

    +
    +
    + + + + + diff --git a/external/epid-sdk-3.0.0/doc/html/files.html b/external/epid-sdk-3.0.0/doc/html/files.html new file mode 100644 index 00000000..ab34f5b2 --- /dev/null +++ b/external/epid-sdk-3.0.0/doc/html/files.html @@ -0,0 +1,105 @@ + + + + + + + +Intel® Enhanced Privacy ID SDK: File List + + + + + + + + + + + + +
    +
    + + + + + + +
    + +
    +
    + + +
    +
    + +
    +
    +
    + +
    +
    +
    +
    File List
    +
    +
    +
    Here is a list of all documented files with brief descriptions:
    +
    [detail level 1234]
    + + + + + + + + + + + + + + + + + + + + + + + + + +
      epidCore Intel® EPID functionality
      commonCommon code shared between core sub-components
      1.1
     file_parser.hEpid 1.1 issuer material parsing utilities
     types.hSDK data types for Intel(R) EPID 1.1
      mathMath primitives
     bignum.hBig number interface
     ecdsa.hEcdsa interface
     ecgroup.hElliptic curve group interface
     finitefield.hFinite field interface
     hash.hHash primitives
     pairing.hPairing interface
     printutils.hPrint helper interface
     tatepairing.hIntel(R) EPID 1.1 Pairing interface
     bitsupplier.hRandom data supplier interface
     errors.hError reporting
     file_parser.hEpid issuer material parsing utilities
     stdtypes.hC99 standard data types
     types.hSDK data types
      memberMember functionality
     api.hIntel(R) EPID SDK member API
      verifierVerifier functionality
      1.1
     api.hIntel(R) EPID SDK verifier Intel(R) EPID 1.1 API
     api.hIntel(R) EPID SDK verifier API
    +
    +
    +
    + + + + + diff --git a/external/epid-sdk-3.0.0/doc/html/finitefield_8h.html b/external/epid-sdk-3.0.0/doc/html/finitefield_8h.html new file mode 100644 index 00000000..ca7b07f7 --- /dev/null +++ b/external/epid-sdk-3.0.0/doc/html/finitefield_8h.html @@ -0,0 +1,174 @@ + + + + + + + +Intel® Enhanced Privacy ID SDK: epid/common/math/finitefield.h File Reference + + + + + + + + + + + + +
    +
    + + + + + + +
    + +
    +
    + + +
    +
    + +
    +
    +
    + +
    +
    + +
    +
    finitefield.h File Reference
    +
    +
    + +

    Finite field interface. +More...

    + + + + + + + + +

    +Typedefs

    +typedef struct FiniteField FiniteField
     A finite field.
     
    +typedef struct FfElement FfElement
     An element in a finite field.
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    EpidStatus NewFiniteField (BigNumStr const *prime, FiniteField **ff)
     Creates new finite field. More...
     
    EpidStatus NewFiniteFieldViaBinomalExtension (FiniteField const *ground_field, FfElement const *ground_element, int degree, FiniteField **ff)
     Creates a new finite field using binomial extension. More...
     
    EpidStatus NewFiniteFieldViaPolynomialExtension (FiniteField const *ground_field, BigNumStr const *irr_polynomial, int degree, FiniteField **ff)
     Creates a new finite field using polynomial extension. More...
     
    void DeleteFiniteField (FiniteField **ff)
     Frees a previously allocated FiniteField. More...
     
    EpidStatus NewFfElement (FiniteField const *ff, FfElement **new_ff_elem)
     Creates a new finite field element. More...
     
    void DeleteFfElement (FfElement **ff_elem)
     Frees a previously allocated FfElement. More...
     
    EpidStatus ReadFfElement (FiniteField *ff, void const *ff_elem_str, size_t strlen, FfElement *ff_elem)
     Deserializes a FfElement from a string. More...
     
    EpidStatus InitFfElementFromBn (FiniteField *ff, BigNum *bn, FfElement *ff_elem)
     Initializes an existing FfElement from a BigNum. More...
     
    EpidStatus WriteFfElement (FiniteField *ff, FfElement const *ff_elem, void *ff_elem_str, size_t strlen)
     Serializes a finite field element to a string. More...
     
    EpidStatus FfNeg (FiniteField *ff, FfElement const *a, FfElement *r)
     Calculates the additive inverse of a finite field element. More...
     
    EpidStatus FfInv (FiniteField *ff, FfElement const *a, FfElement *r)
     Calculates the multiplicative inverse of a finite field element. More...
     
    EpidStatus FfAdd (FiniteField *ff, FfElement const *a, FfElement const *b, FfElement *r)
     Adds two finite field elements. More...
     
    EpidStatus FfSub (FiniteField *ff, FfElement const *a, FfElement const *b, FfElement *r)
     Subtracts two finite field elements. More...
     
    EpidStatus FfMul (FiniteField *ff, FfElement const *a, FfElement const *b, FfElement *r)
     Multiplies two finite field elements. More...
     
    EpidStatus FfIsZero (FiniteField *ff, FfElement const *a, bool *is_zero)
     Checks if given finite field element is the additive identity (zero). More...
     
    EpidStatus FfExp (FiniteField *ff, FfElement const *a, BigNum const *b, FfElement *r)
     Raises an element of a finite field to a power. More...
     
    EpidStatus FfMultiExp (FiniteField *ff, FfElement const **a, BigNumStr const **b, size_t m, FfElement *r)
     Multi-exponentiates finite field elements. More...
     
    EpidStatus FfMultiExpBn (FiniteField *ff, FfElement const **a, BigNum const **b, size_t m, FfElement *r)
     Multi-exponentiates finite field elements. More...
     
    EpidStatus FfSscmMultiExp (FiniteField *ff, FfElement const **a, BigNumStr const **b, size_t m, FfElement *r)
     Software side-channel mitigated implementation of FfMultiExp. More...
     
    EpidStatus FfIsEqual (FiniteField *ff, FfElement const *a, FfElement const *b, bool *is_equal)
     Checks if two finite field elements are equal. More...
     
    EpidStatus FfHash (FiniteField *ff, void const *msg, size_t msg_len, HashAlg hash_alg, FfElement *r)
     Hashes an arbitrary message to an element in a finite field. More...
     
    EpidStatus FfGetRandom (FiniteField *ff, BigNumStr const *low_bound, BitSupplier rnd_func, void *rnd_param, FfElement *r)
     Generate random finite field element. More...
     
    EpidStatus FfSqrt (FiniteField *ff, FfElement const *a, FfElement *r)
     Finds a square root of a finite field element. More...
     
    +

    Detailed Description

    +

    Finite field interface.

    +
    +
    + + + + + diff --git a/external/epid-sdk-3.0.0/doc/html/folderclosed.png b/external/epid-sdk-3.0.0/doc/html/folderclosed.png new file mode 100644 index 0000000000000000000000000000000000000000..bb8ab35edce8e97554e360005ee9fc5bffb36e66 GIT binary patch literal 616 zcmV-u0+;=XP)a9#ETzayK)T~Jw&MMH>OIr#&;dC}is*2Mqdf&akCc=O@`qC+4i z5Iu3w#1M@KqXCz8TIZd1wli&kkl2HVcAiZ8PUn5z_kG@-y;?yK06=cA0U%H0PH+kU zl6dp}OR(|r8-RG+YLu`zbI}5TlOU6ToR41{9=uz^?dGTNL;wIMf|V3`d1Wj3y!#6` zBLZ?xpKR~^2x}?~zA(_NUu3IaDB$tKma*XUdOZN~c=dLt_h_k!dbxm_*ibDM zlFX`g{k$X}yIe%$N)cn1LNu=q9_CS)*>A zsX_mM4L@`(cSNQKMFc$RtYbx{79#j-J7hk*>*+ZZhM4Hw?I?rsXCi#mRWJ=-0LGV5a-WR0Qgt<|Nqf)C-@80`5gIz45^_20000IqP)X=#(TiCT&PiIIVc55T}TU}EUh*{q$|`3@{d>{Tc9Bo>e= zfmF3!f>fbI9#GoEHh0f`i5)wkLpva0ztf%HpZneK?w-7AK@b4Itw{y|Zd3k!fH?q2 zlhckHd_V2M_X7+)U&_Xcfvtw60l;--DgZmLSw-Y?S>)zIqMyJ1#FwLU*%bl38ok+! zh78H87n`ZTS;uhzAR$M`zZ`bVhq=+%u9^$5jDplgxd44}9;IRqUH1YHH|@6oFe%z( zo4)_>E$F&^P-f(#)>(TrnbE>Pefs9~@iN=|)Rz|V`sGfHNrJ)0gJb8xx+SBmRf@1l zvuzt=vGfI)<-F9!o&3l?>9~0QbUDT(wFdnQPv%xdD)m*g%!20>Bc9iYmGAp<9YAa( z0QgYgTWqf1qN++Gqp z8@AYPTB3E|6s=WLG?xw0tm|U!o=&zd+H0oRYE;Dbx+Na9s^STqX|Gnq%H8s(nGDGJ j8vwW|`Ts`)fSK|Kx=IK@RG@g200000NkvXXu0mjfauFEA literal 0 HcmV?d00001 diff --git a/external/epid-sdk-3.0.0/doc/html/functions.html b/external/epid-sdk-3.0.0/doc/html/functions.html new file mode 100644 index 00000000..ee04435e --- /dev/null +++ b/external/epid-sdk-3.0.0/doc/html/functions.html @@ -0,0 +1,510 @@ + + + + + + + +Intel® Enhanced Privacy ID SDK: Data Fields + + + + + + + + + + + + +
    +
    + + + + + + +
    + +
    +
    + + +
    +
    + +
    +
    +
    + +
    +
    +
    Here is a list of all documented struct and union fields with links to the struct/union documentation for each field:
    + +

    - a -

    + + +

    - b -

    + + +

    - c -

    + + +

    - d -

    + + +

    - e -

    + + +

    - f -

    + + +

    - g -

    + + +

    - h -

    + + +

    - k -

    + + +

    - n -

    + + +

    - o -

    + + +

    - p -

    + + +

    - q -

    + + +

    - r -

    + + +

    - s -

    + + +

    - t -

    + + +

    - v -

    + + +

    - w -

    + + +

    - x -

    + + +

    - y -

    +
    +
    + + + + + diff --git a/external/epid-sdk-3.0.0/doc/html/functions_vars.html b/external/epid-sdk-3.0.0/doc/html/functions_vars.html new file mode 100644 index 00000000..056b9bc5 --- /dev/null +++ b/external/epid-sdk-3.0.0/doc/html/functions_vars.html @@ -0,0 +1,510 @@ + + + + + + + +Intel® Enhanced Privacy ID SDK: Data Fields - Variables + + + + + + + + + + + + +
    +
    + + + + + + +
    + +
    +
    + + +
    +
    + +
    +
    +
    + +
    +
    +  + +

    - a -

    + + +

    - b -

    + + +

    - c -

    + + +

    - d -

    + + +

    - e -

    + + +

    - f -

    + + +

    - g -

    + + +

    - h -

    + + +

    - k -

    + + +

    - n -

    + + +

    - o -

    + + +

    - p -

    + + +

    - q -

    + + +

    - r -

    + + +

    - s -

    + + +

    - t -

    + + +

    - v -

    + + +

    - w -

    + + +

    - x -

    + + +

    - y -

    +
    +
    + + + + + diff --git a/external/epid-sdk-3.0.0/doc/html/globals.html b/external/epid-sdk-3.0.0/doc/html/globals.html new file mode 100644 index 00000000..bc81e4fc --- /dev/null +++ b/external/epid-sdk-3.0.0/doc/html/globals.html @@ -0,0 +1,79 @@ + + + + + + + +Intel® Enhanced Privacy ID SDK: Globals + + + + + + + + + + + + +
    +
    + + + + + + +
    + +
    +
    + + +
    +
    + +
    +
    +
    + +
    +
    +
    Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation:
    + +

    - _ -

    +
    +
    + + + + + diff --git a/external/epid-sdk-3.0.0/doc/html/globals_b.html b/external/epid-sdk-3.0.0/doc/html/globals_b.html new file mode 100644 index 00000000..32e65967 --- /dev/null +++ b/external/epid-sdk-3.0.0/doc/html/globals_b.html @@ -0,0 +1,109 @@ + + + + + + + +Intel® Enhanced Privacy ID SDK: Globals + + + + + + + + + + + + +
    +
    + + + + + + +
    + +
    +
    + + +
    +
    + +
    +
    +
    + +
    +
    +
    Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation:
    + +

    - b -

    +
    +
    + + + + + diff --git a/external/epid-sdk-3.0.0/doc/html/globals_d.html b/external/epid-sdk-3.0.0/doc/html/globals_d.html new file mode 100644 index 00000000..5a581ac5 --- /dev/null +++ b/external/epid-sdk-3.0.0/doc/html/globals_d.html @@ -0,0 +1,97 @@ + + + + + + + +Intel® Enhanced Privacy ID SDK: Globals + + + + + + + + + + + + +
    +
    + + + + + + +
    + +
    +
    + + +
    +
    + +
    +
    +
    + +
    +
    +
    Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation:
    + +

    - d -

    +
    +
    + + + + + diff --git a/external/epid-sdk-3.0.0/doc/html/globals_defs.html b/external/epid-sdk-3.0.0/doc/html/globals_defs.html new file mode 100644 index 00000000..32be0f52 --- /dev/null +++ b/external/epid-sdk-3.0.0/doc/html/globals_defs.html @@ -0,0 +1,83 @@ + + + + + + + +Intel® Enhanced Privacy ID SDK: Globals + + + + + + + + + + + + +
    +
    + + + + + + +
    + +
    +
    + + +
    +
    + +
    +
    +
    + +
    +
    +
    +
    + + + + + diff --git a/external/epid-sdk-3.0.0/doc/html/globals_e.html b/external/epid-sdk-3.0.0/doc/html/globals_e.html new file mode 100644 index 00000000..4d01760d --- /dev/null +++ b/external/epid-sdk-3.0.0/doc/html/globals_e.html @@ -0,0 +1,319 @@ + + + + + + + +Intel® Enhanced Privacy ID SDK: Globals + + + + + + + + + + + + +
    +
    + + + + + + +
    + +
    +
    + + +
    +
    + +
    +
    +
    + +
    +
    +
    Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation:
    + +

    - e -

    +
    +
    + + + + + diff --git a/external/epid-sdk-3.0.0/doc/html/globals_enum.html b/external/epid-sdk-3.0.0/doc/html/globals_enum.html new file mode 100644 index 00000000..e5d8f319 --- /dev/null +++ b/external/epid-sdk-3.0.0/doc/html/globals_enum.html @@ -0,0 +1,89 @@ + + + + + + + +Intel® Enhanced Privacy ID SDK: Globals + + + + + + + + + + + + +
    +
    + + + + + + +
    + +
    +
    + + +
    +
    + +
    +
    +
    + +
    +
    +
    +
    + + + + + diff --git a/external/epid-sdk-3.0.0/doc/html/globals_eval.html b/external/epid-sdk-3.0.0/doc/html/globals_eval.html new file mode 100644 index 00000000..d509456e --- /dev/null +++ b/external/epid-sdk-3.0.0/doc/html/globals_eval.html @@ -0,0 +1,205 @@ + + + + + + + +Intel® Enhanced Privacy ID SDK: Globals + + + + + + + + + + + + +
    +
    + + + + + + +
    + +
    +
    + + +
    +
    + +
    +
    +
    + +
    +
    +  + +

    - k -

    +
    +
    + + + + + diff --git a/external/epid-sdk-3.0.0/doc/html/globals_f.html b/external/epid-sdk-3.0.0/doc/html/globals_f.html new file mode 100644 index 00000000..a7623e41 --- /dev/null +++ b/external/epid-sdk-3.0.0/doc/html/globals_f.html @@ -0,0 +1,127 @@ + + + + + + + +Intel® Enhanced Privacy ID SDK: Globals + + + + + + + + + + + + +
    +
    + + + + + + +
    + +
    +
    + + +
    +
    + +
    +
    +
    + +
    +
    +
    Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation:
    + +

    - f -

    +
    +
    + + + + + diff --git a/external/epid-sdk-3.0.0/doc/html/globals_func.html b/external/epid-sdk-3.0.0/doc/html/globals_func.html new file mode 100644 index 00000000..e1724354 --- /dev/null +++ b/external/epid-sdk-3.0.0/doc/html/globals_func.html @@ -0,0 +1,502 @@ + + + + + + + +Intel® Enhanced Privacy ID SDK: Globals + + + + + + + + + + + + +
    +
    + + + + + + +
    + +
    +
    + + +
    +
    + +
    +
    +
    + +
    +
    +  + +

    - b -

    + + +

    - d -

    + + +

    - e -

    + + +

    - f -

    + + +

    - i -

    + + +

    - n -

    + + +

    - p -

    + + +

    - r -

    + + +

    - s -

      +
    • Sha256MessageDigest() +: hash.h +
    • +
    + + +

    - w -

    +
    +
    + + + + + diff --git a/external/epid-sdk-3.0.0/doc/html/globals_g.html b/external/epid-sdk-3.0.0/doc/html/globals_g.html new file mode 100644 index 00000000..73f98a59 --- /dev/null +++ b/external/epid-sdk-3.0.0/doc/html/globals_g.html @@ -0,0 +1,79 @@ + + + + + + + +Intel® Enhanced Privacy ID SDK: Globals + + + + + + + + + + + + +
    +
    + + + + + + +
    + +
    +
    + + +
    +
    + +
    +
    +
    + +
    +
    +
    Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation:
    + +

    - g -

    +
    +
    + + + + + diff --git a/external/epid-sdk-3.0.0/doc/html/globals_h.html b/external/epid-sdk-3.0.0/doc/html/globals_h.html new file mode 100644 index 00000000..227a488b --- /dev/null +++ b/external/epid-sdk-3.0.0/doc/html/globals_h.html @@ -0,0 +1,79 @@ + + + + + + + +Intel® Enhanced Privacy ID SDK: Globals + + + + + + + + + + + + +
    +
    + + + + + + +
    + +
    +
    + + +
    +
    + +
    +
    +
    + +
    +
    +
    Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation:
    + +

    - h -

    +
    +
    + + + + + diff --git a/external/epid-sdk-3.0.0/doc/html/globals_i.html b/external/epid-sdk-3.0.0/doc/html/globals_i.html new file mode 100644 index 00000000..cd8c032e --- /dev/null +++ b/external/epid-sdk-3.0.0/doc/html/globals_i.html @@ -0,0 +1,82 @@ + + + + + + + +Intel® Enhanced Privacy ID SDK: Globals + + + + + + + + + + + + +
    +
    + + + + + + +
    + +
    +
    + + +
    +
    + +
    +
    +
    + +
    +
    +
    Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation:
    + +

    - i -

    +
    +
    + + + + + diff --git a/external/epid-sdk-3.0.0/doc/html/globals_k.html b/external/epid-sdk-3.0.0/doc/html/globals_k.html new file mode 100644 index 00000000..b403cac4 --- /dev/null +++ b/external/epid-sdk-3.0.0/doc/html/globals_k.html @@ -0,0 +1,211 @@ + + + + + + + +Intel® Enhanced Privacy ID SDK: Globals + + + + + + + + + + + + +
    +
    + + + + + + +
    + +
    +
    + + +
    +
    + +
    +
    +
    + +
    +
    +
    Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation:
    + +

    - k -

    +
    +
    + + + + + diff --git a/external/epid-sdk-3.0.0/doc/html/globals_m.html b/external/epid-sdk-3.0.0/doc/html/globals_m.html new file mode 100644 index 00000000..4e74e83a --- /dev/null +++ b/external/epid-sdk-3.0.0/doc/html/globals_m.html @@ -0,0 +1,79 @@ + + + + + + + +Intel® Enhanced Privacy ID SDK: Globals + + + + + + + + + + + + +
    +
    + + + + + + +
    + +
    +
    + + +
    +
    + +
    +
    +
    + +
    +
    +
    Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation:
    + +

    - m -

    +
    +
    + + + + + diff --git a/external/epid-sdk-3.0.0/doc/html/globals_n.html b/external/epid-sdk-3.0.0/doc/html/globals_n.html new file mode 100644 index 00000000..2edd5a5f --- /dev/null +++ b/external/epid-sdk-3.0.0/doc/html/globals_n.html @@ -0,0 +1,103 @@ + + + + + + + +Intel® Enhanced Privacy ID SDK: Globals + + + + + + + + + + + + +
    +
    + + + + + + +
    + +
    +
    + + +
    +
    + +
    +
    +
    + +
    +
    +
    Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation:
    + +

    - n -

    +
    +
    + + + + + diff --git a/external/epid-sdk-3.0.0/doc/html/globals_p.html b/external/epid-sdk-3.0.0/doc/html/globals_p.html new file mode 100644 index 00000000..45b4ea43 --- /dev/null +++ b/external/epid-sdk-3.0.0/doc/html/globals_p.html @@ -0,0 +1,121 @@ + + + + + + + +Intel® Enhanced Privacy ID SDK: Globals + + + + + + + + + + + + +
    +
    + + + + + + +
    + +
    +
    + + +
    +
    + +
    +
    +
    + +
    +
    +
    Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation:
    + +

    - p -

    +
    +
    + + + + + diff --git a/external/epid-sdk-3.0.0/doc/html/globals_r.html b/external/epid-sdk-3.0.0/doc/html/globals_r.html new file mode 100644 index 00000000..9d6af060 --- /dev/null +++ b/external/epid-sdk-3.0.0/doc/html/globals_r.html @@ -0,0 +1,88 @@ + + + + + + + +Intel® Enhanced Privacy ID SDK: Globals + + + + + + + + + + + + +
    +
    + + + + + + +
    + +
    +
    + + +
    +
    + +
    +
    +
    + +
    +
    +
    Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation:
    + +

    - r -

    +
    +
    + + + + + diff --git a/external/epid-sdk-3.0.0/doc/html/globals_s.html b/external/epid-sdk-3.0.0/doc/html/globals_s.html new file mode 100644 index 00000000..ffba267a --- /dev/null +++ b/external/epid-sdk-3.0.0/doc/html/globals_s.html @@ -0,0 +1,82 @@ + + + + + + + +Intel® Enhanced Privacy ID SDK: Globals + + + + + + + + + + + + +
    +
    + + + + + + +
    + +
    +
    + + +
    +
    + +
    +
    +
    + +
    +
    +
    Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation:
    + +

    - s -

    +
    +
    + + + + + diff --git a/external/epid-sdk-3.0.0/doc/html/globals_t.html b/external/epid-sdk-3.0.0/doc/html/globals_t.html new file mode 100644 index 00000000..7e7f3e8c --- /dev/null +++ b/external/epid-sdk-3.0.0/doc/html/globals_t.html @@ -0,0 +1,79 @@ + + + + + + + +Intel® Enhanced Privacy ID SDK: Globals + + + + + + + + + + + + +
    +
    + + + + + + +
    + +
    +
    + + +
    +
    + +
    +
    +
    + +
    +
    +
    Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation:
    + +

    - t -

    +
    +
    + + + + + diff --git a/external/epid-sdk-3.0.0/doc/html/globals_type.html b/external/epid-sdk-3.0.0/doc/html/globals_type.html new file mode 100644 index 00000000..1dfada33 --- /dev/null +++ b/external/epid-sdk-3.0.0/doc/html/globals_type.html @@ -0,0 +1,131 @@ + + + + + + + +Intel® Enhanced Privacy ID SDK: Globals + + + + + + + + + + + + +
    +
    + + + + + + +
    + +
    +
    + + +
    +
    + +
    +
    +
    + +
    +
    +
    +
    + + + + + diff --git a/external/epid-sdk-3.0.0/doc/html/globals_v.html b/external/epid-sdk-3.0.0/doc/html/globals_v.html new file mode 100644 index 00000000..dfd30988 --- /dev/null +++ b/external/epid-sdk-3.0.0/doc/html/globals_v.html @@ -0,0 +1,79 @@ + + + + + + + +Intel® Enhanced Privacy ID SDK: Globals + + + + + + + + + + + + +
    +
    + + + + + + +
    + +
    +
    + + +
    +
    + +
    +
    +
    + +
    +
    +
    Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation:
    + +

    - v -

      +
    • VerifierCtx +: api.h +
    • +
    +
    +
    + + + + + diff --git a/external/epid-sdk-3.0.0/doc/html/globals_vars.html b/external/epid-sdk-3.0.0/doc/html/globals_vars.html new file mode 100644 index 00000000..ea821a9f --- /dev/null +++ b/external/epid-sdk-3.0.0/doc/html/globals_vars.html @@ -0,0 +1,80 @@ + + + + + + + +Intel® Enhanced Privacy ID SDK: Globals + + + + + + + + + + + + +
    +
    + + + + + + +
    + +
    +
    + + +
    +
    + +
    +
    +
    + +
    +
    +
    +
    + + + + + diff --git a/external/epid-sdk-3.0.0/doc/html/globals_w.html b/external/epid-sdk-3.0.0/doc/html/globals_w.html new file mode 100644 index 00000000..49073427 --- /dev/null +++ b/external/epid-sdk-3.0.0/doc/html/globals_w.html @@ -0,0 +1,85 @@ + + + + + + + +Intel® Enhanced Privacy ID SDK: Globals + + + + + + + + + + + + +
    +
    + + + + + + +
    + +
    +
    + + +
    +
    + +
    +
    +
    + +
    +
    +
    Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation:
    + +

    - w -

    +
    +
    + + + + + diff --git a/external/epid-sdk-3.0.0/doc/html/glossary_8dox.html b/external/epid-sdk-3.0.0/doc/html/glossary_8dox.html new file mode 100644 index 00000000..e8cf60a4 --- /dev/null +++ b/external/epid-sdk-3.0.0/doc/html/glossary_8dox.html @@ -0,0 +1,82 @@ + + + + + + + +Intel® Enhanced Privacy ID SDK: doc/docsrc/glossary.dox File Reference + + + + + + + + + + + + +
    +
    + + + + + + +
    + +
    +
    + + +
    +
    + +
    +
    +
    + +
    +
    +
    +
    doc/docsrc/glossary.dox File Reference
    +
    +
    + +

    This file is used by Doxygen to generate documentation. +More...

    +

    Detailed Description

    +

    This file is used by Doxygen to generate documentation.

    +
    +
    + + + + + diff --git a/external/epid-sdk-3.0.0/doc/html/group___big_num_primitives.html b/external/epid-sdk-3.0.0/doc/html/group___big_num_primitives.html new file mode 100644 index 00000000..b71ca763 --- /dev/null +++ b/external/epid-sdk-3.0.0/doc/html/group___big_num_primitives.html @@ -0,0 +1,616 @@ + + + + + + + +Intel® Enhanced Privacy ID SDK: bignum + + + + + + + + + + + + +
    +
    + + + + + + +
    + +
    +
    + + +
    +
    + +
    +
    +
    + +
    +
    + +
    +
    bignum
    +
    +
    + +

    Big number operations. +More...

    + + + + + +

    +Typedefs

    +typedef struct BigNum BigNum
     Internal representation of large numbers.
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    EpidStatus NewBigNum (size_t data_size_bytes, BigNum **bignum)
     Constructs a new BigNum. More...
     
    void DeleteBigNum (BigNum **bignum)
     Deletes a previously allocated BigNum. More...
     
    EpidStatus ReadBigNum (void const *bn_str, size_t strlen, BigNum *bn)
     Deserializes a BigNum from a string. More...
     
    EpidStatus WriteBigNum (BigNum const *bn, size_t strlen, void *bn_str)
     Serializes a BigNum to a string. More...
     
    EpidStatus BigNumAdd (BigNum const *a, BigNum const *b, BigNum *r)
     Adds two BigNum values. More...
     
    EpidStatus BigNumSub (BigNum const *a, BigNum const *b, BigNum *r)
     Subtracts two BigNum values. More...
     
    EpidStatus BigNumMul (BigNum const *a, BigNum const *b, BigNum *r)
     Multiplies two BigNum values. More...
     
    EpidStatus BigNumDiv (BigNum const *a, BigNum const *b, BigNum *q, BigNum *r)
     Divides two BigNum values. More...
     
    EpidStatus BigNumMod (BigNum const *a, BigNum const *b, BigNum *r)
     Computes modular reduction for BigNum value by specified modulus. More...
     
    EpidStatus BigNumIsEven (BigNum const *a, bool *is_even)
     Checks if a BigNum is even. More...
     
    EpidStatus BigNumIsZero (BigNum const *a, bool *is_zero)
     Checks if a BigNum is zero. More...
     
    EpidStatus BigNumPow2N (unsigned int n, BigNum *r)
     Raises 2 to the given power. More...
     
    +

    Detailed Description

    +

    Big number operations.

    +

    This module provides an API for working with large numbers. BigNums represent non-negative integers.

    +

    Each BigNum variable represents a number of a byte-size set when the variable was created. BigNum variables cannot be re-sized after they are created.

    +

    Function Documentation

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    EpidStatus BigNumAdd (BigNum const * a,
    BigNum const * b,
    BigNumr 
    )
    +
    + +

    Adds two BigNum values.

    +
    Parameters
    + + + + +
    [in]aThe first operand to be added.
    [in]bThe second operand to be added.
    [out]rThe result of adding a and b.
    +
    +
    +
    Returns
    EpidStatus
    + +
    +
    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    EpidStatus BigNumDiv (BigNum const * a,
    BigNum const * b,
    BigNumq,
    BigNumr 
    )
    +
    + +

    Divides two BigNum values.

    +
    Note
    Only needed for Intel(R) EPID 1.1 verification.
    +
    Parameters
    + + + + + +
    [in]aDividend parameter.
    [in]bDivisor parameter.
    [out]qQuotient of result.
    [out]rRemainder of result.
    +
    +
    +
    Returns
    EpidStatus
    + +
    +
    + +
    +
    + + + + + + + + + + + + + + + + + + +
    EpidStatus BigNumIsEven (BigNum const * a,
    boolis_even 
    )
    +
    + +

    Checks if a BigNum is even.

    +
    Parameters
    + + + +
    [in]aThe BigNum to check.
    [out]is_evenThe result of the check.
    +
    +
    +
    Returns
    EpidStatus
    + +
    +
    + +
    +
    + + + + + + + + + + + + + + + + + + +
    EpidStatus BigNumIsZero (BigNum const * a,
    boolis_zero 
    )
    +
    + +

    Checks if a BigNum is zero.

    +
    Parameters
    + + + +
    [in]aThe BigNum to check.
    [out]is_zeroThe result of the check.
    +
    +
    +
    Returns
    EpidStatus
    + +
    +
    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    EpidStatus BigNumMod (BigNum const * a,
    BigNum const * b,
    BigNumr 
    )
    +
    + +

    Computes modular reduction for BigNum value by specified modulus.

    +
    Parameters
    + + + + +
    [in]aThe BigNum value.
    [in]bThe modulus.
    [out]rModular reduction result.
    +
    +
    +
    Returns
    EpidStatus
    + +
    +
    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    EpidStatus BigNumMul (BigNum const * a,
    BigNum const * b,
    BigNumr 
    )
    +
    + +

    Multiplies two BigNum values.

    +
    Parameters
    + + + + +
    [in]aThe first operand to be multiplied.
    [in]bThe second operand to be multiplied.
    [out]rThe result of multiplying a and b.
    +
    +
    +
    Returns
    EpidStatus
    + +
    +
    + +
    +
    + + + + + + + + + + + + + + + + + + +
    EpidStatus BigNumPow2N (unsigned int n,
    BigNumr 
    )
    +
    + +

    Raises 2 to the given power.

    +
    Parameters
    + + + +
    [in]nThe power.
    [out]rThe result of 2^n.
    +
    +
    +
    Returns
    EpidStatus
    + +
    +
    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    EpidStatus BigNumSub (BigNum const * a,
    BigNum const * b,
    BigNumr 
    )
    +
    + +

    Subtracts two BigNum values.

    +
    Parameters
    + + + + +
    [in]aThe first operand to use in subtraction.
    [in]bThe second operand to use in subtraction.
    [out]rThe result of subtracting a and b.
    +
    +
    +
    Returns
    EpidStatus
    + +
    +
    + +
    +
    + + + + + + + + +
    void DeleteBigNum (BigNum ** bignum)
    +
    + +

    Deletes a previously allocated BigNum.

    +

    Frees memory pointed to by bignum. Nulls the pointer.

    +
    Parameters
    + + +
    [in]bignumThe BigNum. Can be NULL.
    +
    +
    +
    See also
    NewBigNum
    + +
    +
    + +
    +
    + + + + + + + + + + + + + + + + + + +
    EpidStatus NewBigNum (size_t data_size_bytes,
    BigNum ** bignum 
    )
    +
    + +

    Constructs a new BigNum.

    +

    Allocates memory and creates a new BigNum.

    +

    Use DeleteBigNum() to free memory.

    +
    Parameters
    + + + +
    [in]data_size_bytesThe size in bytes of the new number.
    [out]bignumThe BigNum.
    +
    +
    +
    Returns
    EpidStatus
    +
    See also
    DeleteBigNum
    + +
    +
    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    EpidStatus ReadBigNum (void const * bn_str,
    size_t strlen,
    BigNumbn 
    )
    +
    + +

    Deserializes a BigNum from a string.

    +
    Parameters
    + + + + +
    [in]bn_strThe serialized value.
    [in]strlenThe size of bn_str in bytes.
    [out]bnThe target BigNum.
    +
    +
    +
    Returns
    EpidStatus
    + +
    +
    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    EpidStatus WriteBigNum (BigNum const * bn,
    size_t strlen,
    void * bn_str 
    )
    +
    + +

    Serializes a BigNum to a string.

    +
    Parameters
    + + + + +
    [in]bnThe BigNum to be serialized.
    [in]strlenThe size of bn_str in bytes.
    [out]bn_strThe target string.
    +
    +
    +
    Returns
    EpidStatus
    + +
    +
    +
    +
    + + + + + diff --git a/external/epid-sdk-3.0.0/doc/html/group___big_num_primitives.js b/external/epid-sdk-3.0.0/doc/html/group___big_num_primitives.js new file mode 100644 index 00000000..ccdcec2b --- /dev/null +++ b/external/epid-sdk-3.0.0/doc/html/group___big_num_primitives.js @@ -0,0 +1,16 @@ +var group___big_num_primitives = +[ + [ "BigNum", "group___big_num_primitives.html#ga2bf153e27be2683f0fb26f0f7ff1f718", null ], + [ "BigNumAdd", "group___big_num_primitives.html#gae70fd9b3026f0ab3c7e9601d0a3186b8", null ], + [ "BigNumDiv", "group___big_num_primitives.html#ga166134085464b0df2c8efcfccf8ec573", null ], + [ "BigNumIsEven", "group___big_num_primitives.html#gaf0366e47226563b17fcbc8e3ed766084", null ], + [ "BigNumIsZero", "group___big_num_primitives.html#gacde6564a814617a96985b379be0dfabb", null ], + [ "BigNumMod", "group___big_num_primitives.html#ga7dd6038987210d10bf843602fef0c929", null ], + [ "BigNumMul", "group___big_num_primitives.html#ga03c89b8b8dd87de2c0f4b5822145d317", null ], + [ "BigNumPow2N", "group___big_num_primitives.html#gafd64b66fc85dab0005f4a1bb67bdf7b4", null ], + [ "BigNumSub", "group___big_num_primitives.html#gacbec9669ab0fe768e2be74dcaca397ea", null ], + [ "DeleteBigNum", "group___big_num_primitives.html#ga2d17600068b1d94000635c6644258a03", null ], + [ "NewBigNum", "group___big_num_primitives.html#gad5f6f262bfd780fed3678bcee16f0aed", null ], + [ "ReadBigNum", "group___big_num_primitives.html#ga808cf477b70ed06358b11756bfe36024", null ], + [ "WriteBigNum", "group___big_num_primitives.html#ga79d86c872fe8da0f217e3ba069f98d38", null ] +]; \ No newline at end of file diff --git a/external/epid-sdk-3.0.0/doc/html/group___ec_group_primitives.html b/external/epid-sdk-3.0.0/doc/html/group___ec_group_primitives.html new file mode 100644 index 00000000..8c143ca0 --- /dev/null +++ b/external/epid-sdk-3.0.0/doc/html/group___ec_group_primitives.html @@ -0,0 +1,1198 @@ + + + + + + + +Intel® Enhanced Privacy ID SDK: ecgroup + + + + + + + + + + + + +
    +
    + + + + + + +
    + +
    +
    + + +
    +
    + +
    +
    +
    + +
    +
    + +
    +
    ecgroup
    +
    +
    + +

    Elliptic curve group operations. +More...

    + + + + + + + + +

    +Typedefs

    +typedef struct EcGroup EcGroup
     Elliptic curve group over finite field.
     
    +typedef struct EcPoint EcPoint
     Point on elliptic curve over finite field.
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    EpidStatus NewEcGroup (FiniteField const *ff, FfElement const *a, FfElement const *b, FfElement const *x, FfElement const *y, BigNum const *order, BigNum const *cofactor, EcGroup **g)
     Constructs a new EcGroup. More...
     
    void DeleteEcGroup (EcGroup **g)
     Deletes a previously allocated EcGroup. More...
     
    EpidStatus NewEcPoint (EcGroup const *g, EcPoint **p)
     Creates a new EcPoint. More...
     
    void DeleteEcPoint (EcPoint **p)
     Deletes a previously allocated EcPoint. More...
     
    EpidStatus ReadEcPoint (EcGroup *g, void const *p_str, size_t strlen, EcPoint *p)
     Deserializes an EcPoint from a string. More...
     
    EpidStatus WriteEcPoint (EcGroup *g, EcPoint const *p, void *p_str, size_t strlen)
     Serializes an EcPoint to a string. More...
     
    EpidStatus EcMul (EcGroup *g, EcPoint const *a, EcPoint const *b, EcPoint *r)
     Multiplies two elements in an elliptic curve group. More...
     
    EpidStatus EcExp (EcGroup *g, EcPoint const *a, BigNumStr const *b, EcPoint *r)
     Raises a point in an elliptic curve group to a power. More...
     
    EpidStatus EcSscmExp (EcGroup *g, EcPoint const *a, BigNumStr const *b, EcPoint *r)
     Software side-channel mitigated implementation of EcExp. More...
     
    EpidStatus EcMultiExp (EcGroup *g, EcPoint const **a, BigNumStr const **b, size_t m, EcPoint *r)
     Multi-exponentiates elements in elliptic curve group. More...
     
    EpidStatus EcMultiExpBn (EcGroup *g, EcPoint const **a, BigNum const **b, size_t m, EcPoint *r)
     Multi-exponentiates elements in elliptic curve group. More...
     
    EpidStatus EcSscmMultiExp (EcGroup *g, EcPoint const **a, BigNumStr const **b, size_t m, EcPoint *r)
     Software side-channel mitigated implementation of EcMultiExp. More...
     
    EpidStatus EcGetRandom (EcGroup *g, BitSupplier rnd_func, void *rnd_func_param, EcPoint *r)
     Generates a random element from an elliptic curve group. More...
     
    EpidStatus EcInGroup (EcGroup *g, void const *p_str, size_t strlen, bool *in_group)
     Checks if a point is in an elliptic curve group. More...
     
    EpidStatus Epid11EcHash (EcGroup *g, void const *msg, size_t msg_len, EcPoint *r)
     Hashes an arbitrary message to an Intel(R) EPID 1.1 element in an elliptic curve group. More...
     
    EpidStatus EcHash (EcGroup *g, void const *msg, size_t msg_len, HashAlg hash_alg, EcPoint *r)
     Hashes an arbitrary message to an element in an elliptic curve group. More...
     
    EpidStatus EcMakePoint (EcGroup *g, FfElement const *x, EcPoint *r)
     Sets an EcPoint variable to a point on a curve. More...
     
    EpidStatus EcInverse (EcGroup *g, EcPoint const *p, EcPoint *r)
     Computes the additive inverse of an EcPoint. More...
     
    EpidStatus EcIsEqual (EcGroup *g, EcPoint const *a, EcPoint const *b, bool *is_equal)
     Checks if two EcPoints are equal. More...
     
    EpidStatus EcIsIdentity (EcGroup *g, EcPoint const *p, bool *is_identity)
     Checks if an EcPoint is the identity element. More...
     
    +

    Detailed Description

    +

    Elliptic curve group operations.

    +

    Provides APIs for working with Elliptic curve groups. Elliptic curve groups allow simple mathematical operations based on points that lie on a defined elliptic curve. The results of these operations also lie on the same curve.

    +

    Curves themselves are defined based on elements (FfElement) of a finite field (FiniteField).

    +

    Function Documentation

    + +
    +
    + + + + + + + + +
    void DeleteEcGroup (EcGroup ** g)
    +
    + +

    Deletes a previously allocated EcGroup.

    +

    Frees memory pointed to by elliptic curve group. Nulls the pointer.

    +
    Parameters
    + + +
    [in]gThe elliptic curve group. Can be NULL.
    +
    +
    +
    See also
    NewEcGroup
    + +
    +
    + +
    +
    + + + + + + + + +
    void DeleteEcPoint (EcPoint ** p)
    +
    + +

    Deletes a previously allocated EcPoint.

    +

    Frees memory used by a point on elliptic curve group. Nulls the pointer.

    +
    Parameters
    + + +
    [in]pThe EcPoint. Can be NULL.
    +
    +
    +
    See also
    NewEcPoint
    + +
    +
    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    EpidStatus EcExp (EcGroupg,
    EcPoint const * a,
    BigNumStr const * b,
    EcPointr 
    )
    +
    + +

    Raises a point in an elliptic curve group to a power.

    +

    This exponentiation operation is also known as element multiplication for elliptic curve groups.

    Parameters
    + + + + + +
    [in]gThe elliptic curve group.
    [in]aThe base.
    [in]bThe power. Power must be less than the order of the elliptic curve group.
    [out]rThe result of raising a to the power b.
    +
    +
    +
    Returns
    EpidStatus
    +
    See also
    NewEcGroup
    +
    +NewEcPoint
    + +
    +
    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    EpidStatus EcGetRandom (EcGroupg,
    BitSupplier rnd_func,
    void * rnd_func_param,
    EcPointr 
    )
    +
    + +

    Generates a random element from an elliptic curve group.

    +

    This function is only available for G1 and GT.

    +
    Parameters
    + + + + + +
    [in]gThe elliptic curve group.
    [in]rnd_funcRandom number generator.
    [in]rnd_func_paramPass through context data for rnd_func.
    [in,out]rOutput random elliptic curve element.
    +
    +
    +
    Returns
    EpidStatus
    +
    See also
    NewEcPoint
    +
    +BitSupplier
    + +
    +
    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    EpidStatus EcHash (EcGroupg,
    void const * msg,
    size_t msg_len,
    HashAlg hash_alg,
    EcPointr 
    )
    +
    + +

    Hashes an arbitrary message to an element in an elliptic curve group.

    +
    Parameters
    + + + + + + +
    [in]gThe elliptic curve group.
    [in]msgThe message.
    [in]msg_lenThe size of msg in bytes.
    [in]hash_algThe hash algorithm.
    [out]rThe hashed value.
    +
    +
    +
    Returns
    EpidStatus
    +
    See also
    NewEcGroup
    +
    +NewEcPoint
    + +
    +
    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    EpidStatus EcInGroup (EcGroupg,
    void const * p_str,
    size_t strlen,
    boolin_group 
    )
    +
    + +

    Checks if a point is in an elliptic curve group.

    +
    Parameters
    + + + + + +
    [in]gThe elliptic curve group.
    [in]p_strA serialized point. Must be a G1ElemStr or G2ElemStr.
    [in]strlenThe size of p_str in bytes.
    [out]in_groupThe result of the check.
    +
    +
    +
    Returns
    EpidStatus
    +
    See also
    NewEcPoint
    + +
    +
    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    EpidStatus EcInverse (EcGroupg,
    EcPoint const * p,
    EcPointr 
    )
    +
    + +

    Computes the additive inverse of an EcPoint.

    +

    This inverse operation is also known as element negation for elliptic curve groups.

    +
    Parameters
    + + + + +
    [in]gThe elliptic curve group.
    [in]pThe point.
    [out]rThe inverted point.
    +
    +
    +
    Returns
    EpidStatus
    +
    See also
    NewEcGroup
    +
    +NewEcPoint
    + +
    +
    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    EpidStatus EcIsEqual (EcGroupg,
    EcPoint const * a,
    EcPoint const * b,
    boolis_equal 
    )
    +
    + +

    Checks if two EcPoints are equal.

    +
    Parameters
    + + + + + +
    [in]gThe elliptic curve group.
    [in]aA point to check.
    [in]bAnother point to check.
    [out]is_equalThe result of the check.
    +
    +
    +
    Returns
    EpidStatus
    +
    See also
    NewEcGroup
    +
    +NewEcPoint
    + +
    +
    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    EpidStatus EcIsIdentity (EcGroupg,
    EcPoint const * p,
    boolis_identity 
    )
    +
    + +

    Checks if an EcPoint is the identity element.

    +

    Takes a group element P as input. It outputs true if P is the identity element of G. Otherwise, it outputs false.

    +
    Parameters
    + + + + +
    [in]gThe elliptic curve group.
    [in]pThe point to check.
    [out]is_identityThe result of the check.
    +
    +
    +
    Returns
    EpidStatus
    +
    See also
    NewEcGroup
    +
    +NewEcPoint
    + +
    +
    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    EpidStatus EcMakePoint (EcGroupg,
    FfElement const * x,
    EcPointr 
    )
    +
    + +

    Sets an EcPoint variable to a point on a curve.

    +

    This function is only available for G1.

    +
    Parameters
    + + + + +
    [in]gThe elliptic curve group.
    [in]xThe x coordinate.
    [out]rThe point.
    +
    +
    +
    Returns
    EpidStatus
    +
    See also
    NewEcGroup
    +
    +NewEcPoint
    +
    +NewFfElement
    + +
    +
    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    EpidStatus EcMul (EcGroupg,
    EcPoint const * a,
    EcPoint const * b,
    EcPointr 
    )
    +
    + +

    Multiplies two elements in an elliptic curve group.

    +

    This multiplication operation is also known as element addition for elliptic curve groups.

    +
    Parameters
    + + + + + +
    [in]gThe elliptic curve group.
    [in]aThe first operand to be multiplied.
    [in]bThe second operand to be multiplied.
    [out]rThe result of multiplying a and b.
    +
    +
    +
    Returns
    EpidStatus
    +
    See also
    NewEcGroup
    +
    +NewEcPoint
    + +
    +
    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    EpidStatus EcMultiExp (EcGroupg,
    EcPoint const ** a,
    BigNumStr const ** b,
    size_t m,
    EcPointr 
    )
    +
    + +

    Multi-exponentiates elements in elliptic curve group.

    +

    Takes a group elements a[0], ... , a[m-1] in G and positive integers b[0], ..., b[m-1], where m is a small positive integer. Outputs r (in G) = EcExp(a[0],b[0]) * ... * EcExp(a[m-1],b[m-1]).

    +
    Parameters
    + + + + + + +
    [in]gThe elliptic curve group.
    [in]aThe bases.
    [in]bThe powers. Power must be less than the order of the elliptic curve group.
    [in]mNumber of entries in a and b.
    [out]rThe result of raising each a to the corresponding power b and multiplying the results.
    +
    +
    +
    Returns
    EpidStatus
    +
    See also
    NewEcGroup
    +
    +NewEcPoint
    + +
    +
    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    EpidStatus EcMultiExpBn (EcGroupg,
    EcPoint const ** a,
    BigNum const ** b,
    size_t m,
    EcPointr 
    )
    +
    + +

    Multi-exponentiates elements in elliptic curve group.

    +

    Takes a group elements a[0], ... , a[m-1] in G and positive integers b[0], ..., b[m-1], where m is a small positive integer. Outputs r (in G) = EcExp(a[0],b[0]) * ... * EcExp(a[m-1],b[m-1]).

    +
    Parameters
    + + + + + + +
    [in]gThe elliptic curve group.
    [in]aThe bases.
    [in]bThe powers. Power must be less than the order of the elliptic curve group.
    [in]mNumber of entries in a and b.
    [out]rThe result of raising each a to the corresponding power b and multiplying the results.
    +
    +
    +
    Returns
    EpidStatus
    +
    See also
    NewEcGroup
    +
    +NewEcPoint
    + +
    +
    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    EpidStatus EcSscmExp (EcGroupg,
    EcPoint const * a,
    BigNumStr const * b,
    EcPointr 
    )
    +
    + +

    Software side-channel mitigated implementation of EcExp.

    +

    This exponentiation operation is also known as element multiplication for elliptic curve groups.

    +
    Attention
    The reference implementation of EcSscmExp calls EcExp directly because the implementation of EcExp is already side channel mitigated. Implementers providing their own versions of this function are responsible for ensuring that EcSscmExp is side channel mitigated per section 8 of the Intel(R) EPID 2.0 spec.
    +
    Parameters
    + + + + + +
    [in]gThe elliptic curve group.
    [in]aThe base.
    [in]bThe power. Power must be less than the order of the elliptic curve group.
    [out]rThe result of raising a to the power b.
    +
    +
    +
    Returns
    EpidStatus
    +
    See also
    NewEcGroup
    +
    +NewEcPoint
    + +
    +
    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    EpidStatus EcSscmMultiExp (EcGroupg,
    EcPoint const ** a,
    BigNumStr const ** b,
    size_t m,
    EcPointr 
    )
    +
    + +

    Software side-channel mitigated implementation of EcMultiExp.

    +

    Takes a group elements a[0], ... , a[m-1] in G and positive integers b[0], ..., b[m-1], where m is a small positive integer. Outputs r (in G) = EcExp(a[0],b[0]) * ... * EcExp(a[m-1],b[m-1]).

    +
    Attention
    The reference implementation of EcSscmMultiExp calls EcMultiExp directly because the implementation of EcMultiExp is already side channel mitigated. Implementers providing their own versions of this function are responsible for ensuring that EcSscmMultiExp is side channel mitigated per section 8 of the Intel(R) EPID 2.0 spec.
    +
    Parameters
    + + + + + + +
    [in]gThe elliptic curve group.
    [in]aThe bases.
    [in]bThe powers. Power must be less than the order of the elliptic curve group.
    [in]mNumber of entries in a and b.
    [out]rThe result of raising each a to the corresponding power b and multiplying the results.
    +
    +
    +
    Returns
    EpidStatus
    +
    See also
    NewEcGroup
    +
    +NewEcPoint
    + +
    +
    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    EpidStatus Epid11EcHash (EcGroupg,
    void const * msg,
    size_t msg_len,
    EcPointr 
    )
    +
    + +

    Hashes an arbitrary message to an Intel(R) EPID 1.1 element in an elliptic curve group.

    +
    Parameters
    + + + + + +
    [in]gThe elliptic curve group.
    [in]msgThe message.
    [in]msg_lenThe size of msg in bytes.
    [out]rThe hashed value.
    +
    +
    +
    Returns
    EpidStatus
    +
    See also
    NewEcGroup
    +
    +NewEcPoint
    + +
    +
    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    EpidStatus NewEcGroup (FiniteField const * ff,
    FfElement const * a,
    FfElement const * b,
    FfElement const * x,
    FfElement const * y,
    BigNum const * order,
    BigNum const * cofactor,
    EcGroup ** g 
    )
    +
    + +

    Constructs a new EcGroup.

    +

    Allocates memory and creates a new elliptic curve group.

    +

    Use DeleteFiniteField() to free memory.

    +
    Parameters
    + + + + + + + + + +
    [in]ffThe finite field on which the curve is based.
    [in]aThe A value of the elliptic curve.
    [in]bThe B value of the elliptic curve.
    [in]xThe X-coordinate of the base point of the elliptic curve.
    [in]yThe Y-coordinate of the base point of the elliptic curve.
    [in]orderThe order of the elliptic curve group.
    [in]cofactorThe co-factor of the elliptic curve.
    [out]gThe newly constructed elliptic curve group.
    +
    +
    +
    Returns
    EpidStatus
    +
    See also
    DeleteEcGroup
    + +
    +
    + +
    +
    + + + + + + + + + + + + + + + + + + +
    EpidStatus NewEcPoint (EcGroup const * g,
    EcPoint ** p 
    )
    +
    + +

    Creates a new EcPoint.

    +

    Allocates memory and creates a new point on elliptic curve group.

    +

    Use DeleteEcPoint() to free memory.

    +
    Parameters
    + + + +
    [in]gElliptic curve group.
    [out]pNewly constructed point on the elliptic curve group g.
    +
    +
    +
    Returns
    EpidStatus
    +
    See also
    NewEcGroup
    +
    +DeleteEcPoint
    + +
    +
    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    EpidStatus ReadEcPoint (EcGroupg,
    void const * p_str,
    size_t strlen,
    EcPointp 
    )
    +
    + +

    Deserializes an EcPoint from a string.

    +
    Parameters
    + + + + + +
    [in]gThe elliptic curve group.
    [in]p_strThe serialized value.
    [in]strlenThe size of p_str in bytes.
    [out]pThe target EcPoint.
    +
    +
    +
    Returns
    EpidStatus
    +
    See also
    NewEcPoint
    + +
    +
    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    EpidStatus WriteEcPoint (EcGroupg,
    EcPoint const * p,
    void * p_str,
    size_t strlen 
    )
    +
    + +

    Serializes an EcPoint to a string.

    +
    Parameters
    + + + + + +
    [in]gThe elliptic curve group.
    [in]pThe EcPoint to be serialized.
    [out]p_strThe target string.
    [in]strlenthe size of p_str in bytes.
    +
    +
    +
    Returns
    EpidStatus
    +
    See also
    NewEcPoint
    + +
    +
    +
    +
    + + + + + diff --git a/external/epid-sdk-3.0.0/doc/html/group___ec_group_primitives.js b/external/epid-sdk-3.0.0/doc/html/group___ec_group_primitives.js new file mode 100644 index 00000000..af74b1c5 --- /dev/null +++ b/external/epid-sdk-3.0.0/doc/html/group___ec_group_primitives.js @@ -0,0 +1,25 @@ +var group___ec_group_primitives = +[ + [ "EcGroup", "group___ec_group_primitives.html#gac91c5a7623c17a868dd15b2e9aaf7159", null ], + [ "EcPoint", "group___ec_group_primitives.html#ga85c1d5e106031b385a6e23e598ac98fa", null ], + [ "DeleteEcGroup", "group___ec_group_primitives.html#gab7af276256c27610eda85ff432b846ea", null ], + [ "DeleteEcPoint", "group___ec_group_primitives.html#ga8cb086d792bffb79b3ca07e6ca4ce0e7", null ], + [ "EcExp", "group___ec_group_primitives.html#ga01bf8d6fa60a2e445490966b3a06c270", null ], + [ "EcGetRandom", "group___ec_group_primitives.html#ga3f96c43d14d24de0f7a5e214aef64196", null ], + [ "EcHash", "group___ec_group_primitives.html#gadc22ee07864a7ee681a881029b69d76a", null ], + [ "EcInGroup", "group___ec_group_primitives.html#ga4d0f32aede3066eae500241b387bd970", null ], + [ "EcInverse", "group___ec_group_primitives.html#ga0b6d7a3398251e9352fb29ef4abef466", null ], + [ "EcIsEqual", "group___ec_group_primitives.html#gad3b3c63c48fa24e8dea07837b05bc061", null ], + [ "EcIsIdentity", "group___ec_group_primitives.html#ga9cf15b34bc4ff12e58b169dd989d8210", null ], + [ "EcMakePoint", "group___ec_group_primitives.html#ga8a6114a48214a327d4ec04fd25e5940e", null ], + [ "EcMul", "group___ec_group_primitives.html#ga25c9013cc76907d73765eb7a96aa8c96", null ], + [ "EcMultiExp", "group___ec_group_primitives.html#gae96c38e004ccd2211290ad6e66415ec4", null ], + [ "EcMultiExpBn", "group___ec_group_primitives.html#ga76d24378455eb96a3257fe8045c0993a", null ], + [ "EcSscmExp", "group___ec_group_primitives.html#gaf3b6a548aa6f0d4f028a14feca251f57", null ], + [ "EcSscmMultiExp", "group___ec_group_primitives.html#ga40e3431d3dbe8cf7a65ada7b7811cba4", null ], + [ "Epid11EcHash", "group___ec_group_primitives.html#gadf83fa559585375faad9a8b1559249bc", null ], + [ "NewEcGroup", "group___ec_group_primitives.html#gaf4e23677dd378ef2e0cf55df79cbdb62", null ], + [ "NewEcPoint", "group___ec_group_primitives.html#ga6417b0ce72ba96de00c329e322fec7fb", null ], + [ "ReadEcPoint", "group___ec_group_primitives.html#ga2d433f567fa2419465a49604f4da21ad", null ], + [ "WriteEcPoint", "group___ec_group_primitives.html#ga4bb7d6691ffbb6e947c1068453e27fbd", null ] +]; \ No newline at end of file diff --git a/external/epid-sdk-3.0.0/doc/html/group___ecdsa_primitives.html b/external/epid-sdk-3.0.0/doc/html/group___ecdsa_primitives.html new file mode 100644 index 00000000..50d135d9 --- /dev/null +++ b/external/epid-sdk-3.0.0/doc/html/group___ecdsa_primitives.html @@ -0,0 +1,229 @@ + + + + + + + +Intel® Enhanced Privacy ID SDK: ecdsa + + + + + + + + + + + + +
    +
    + + + + + + +
    + +
    +
    + + +
    +
    + +
    +
    +
    + +
    +
    + +
    +
    ecdsa
    +
    +
    + +

    Elliptic Curve Digital Signature Algorithm Primitives. +More...

    + + + + + + + + +

    +Functions

    EpidStatus EcdsaVerifyBuffer (void const *buf, size_t buf_len, EcdsaPublicKey const *pubkey, EcdsaSignature const *sig)
     Verifies authenticity of a digital signature over a buffer. More...
     
    EpidStatus EcdsaSignBuffer (void const *buf, size_t buf_len, EcdsaPrivateKey const *privkey, BitSupplier rnd_func, void *rnd_param, EcdsaSignature *sig)
     Creates ECDSA signature of buffer. More...
     
    +

    Detailed Description

    +

    Elliptic Curve Digital Signature Algorithm Primitives.

    +

    Provides APIs for computing and checking buffer signatures using the Elliptic Curve Digital Signature Algorithm.

    +

    Function Documentation

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    EpidStatus EcdsaSignBuffer (void const * buf,
    size_t buf_len,
    EcdsaPrivateKey const * privkey,
    BitSupplier rnd_func,
    void * rnd_param,
    EcdsaSignaturesig 
    )
    +
    + +

    Creates ECDSA signature of buffer.

    +

    Uses Elliptic Curve Digital Signature Algorithm (ECDSA) to generate a signature of the SHA-256 hash of the input buffer with the provided private key.

    +

    The operation is over the standard secp256r1 curve.

    +
    Parameters
    + + + + + + + +
    [in]bufPointer to buffer containing message to sign.
    [in]buf_lenThe size of buf in bytes.
    [in]privkeyThe ECDSA private key on secp256r1 curve.
    [in]rnd_funcRandom number generator.
    [in]rnd_paramPass through context data for rnd_func.
    [out]sigThe resulting ECDSA signature.
    +
    +
    +
    Returns
    EpidStatus
    +
    Return values
    + + +
    kEpidRandMaxIterErrFailed to sign after maximum number of iterations due to bad luck in random number generation.
    +
    +
    +
    See also
    EcdsaSignBuffer
    + +
    +
    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    EpidStatus EcdsaVerifyBuffer (void const * buf,
    size_t buf_len,
    EcdsaPublicKey const * pubkey,
    EcdsaSignature const * sig 
    )
    +
    + +

    Verifies authenticity of a digital signature over a buffer.

    +

    Uses Elliptic Curve Digital Signature Algorithm (ECDSA) to verify that the SHA-256 hash of the input buffer was signed with the private key corresponding to the provided public key.

    +

    The operation is over the standard secp256r1 curve.

    +
    Warning
    It is the responsibility of the caller to verify the identity of the public key.
    +
    Parameters
    + + + + + +
    [in]bufPointer to buffer containing message to verify.
    [in]buf_lenThe size of buf in bytes.
    [in]pubkeyThe ECDSA public key on secp256r1 curve.
    [in]sigThe ECDSA signature to be verified.
    +
    +
    +
    Returns
    EpidStatus
    +
    Return values
    + + + +
    kEpidSigValidEcdsaSignature is valid for the given buffer.
    kEpidSigInvalidEcdsaSignature is invalid for the given buffer.
    +
    +
    +
    See also
    EcdsaSignBuffer
    + +
    +
    +
    +
    + + + + + diff --git a/external/epid-sdk-3.0.0/doc/html/group___ecdsa_primitives.js b/external/epid-sdk-3.0.0/doc/html/group___ecdsa_primitives.js new file mode 100644 index 00000000..37f85bf0 --- /dev/null +++ b/external/epid-sdk-3.0.0/doc/html/group___ecdsa_primitives.js @@ -0,0 +1,5 @@ +var group___ecdsa_primitives = +[ + [ "EcdsaSignBuffer", "group___ecdsa_primitives.html#ga67091ecae643c1b8a0b0a4946eda7afe", null ], + [ "EcdsaVerifyBuffer", "group___ecdsa_primitives.html#gaab68de7291db6e42a01e99c2fa40057f", null ] +]; \ No newline at end of file diff --git a/external/epid-sdk-3.0.0/doc/html/group___epid11_file_parser_module.html b/external/epid-sdk-3.0.0/doc/html/group___epid11_file_parser_module.html new file mode 100644 index 00000000..4f3dc04d --- /dev/null +++ b/external/epid-sdk-3.0.0/doc/html/group___epid11_file_parser_module.html @@ -0,0 +1,362 @@ + + + + + + + +Intel® Enhanced Privacy ID SDK: EPID 1.1 support + + + + + + + + + + + + +
    +
    + + + + + + +
    + +
    +
    + + +
    +
    + +
    +
    +
    + +
    +
    + +
    +
    EPID 1.1 support
    +
    +
    + +

    Parser for 1.1 issuer material. +More...

    + + + + + + + + + + + + + + +

    +Functions

    EpidStatus Epid11ParseGroupPubKeyFile (void const *buf, size_t len, EpidCaCertificate const *cert, Epid11GroupPubKey *pubkey)
     Extracts group public key from buffer in issuer binary format. More...
     
    EpidStatus Epid11ParsePrivRlFile (void const *buf, size_t len, EpidCaCertificate const *cert, Epid11PrivRl *rl, size_t *rl_len)
     Extracts private key revocation list from buffer in issuer binary format. More...
     
    EpidStatus Epid11ParseSigRlFile (void const *buf, size_t len, EpidCaCertificate const *cert, Epid11SigRl *rl, size_t *rl_len)
     Extracts signature revocation list from buffer in issuer binary format. More...
     
    EpidStatus Epid11ParseGroupRlFile (void const *buf, size_t len, EpidCaCertificate const *cert, Epid11GroupRl *rl, size_t *rl_len)
     Extracts group revocation list from buffer in issuer binary format. More...
     
    +

    Detailed Description

    +

    Parser for 1.1 issuer material.

    +

    Defines the APIs needed to parse Intel(R) EPID 1.1 issuer material.

    +
    See also
    EPID 1.1 support
    +

    Function Documentation

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    EpidStatus Epid11ParseGroupPubKeyFile (void const * buf,
    size_t len,
    EpidCaCertificate const * cert,
    Epid11GroupPubKeypubkey 
    )
    +
    + +

    Extracts group public key from buffer in issuer binary format.

    +

    Extracts the first group public key from a buffer with format of Intel(R) EPID 1.1 Group Public Key Certificate Binary File. The function validates that the first public key was signed by the private key corresponding to the provided CA certificate and the size of the input buffer is correct.

    +
    Warning
    It is the responsibility of the caller to authenticate the EpidCaCertificate.
    +
    Parameters
    + + + + + +
    [in]bufPointer to buffer containing public key to extract.
    [in]lenThe size of buf in bytes.
    [in]certThe issuing CA public key certificate.
    [out]pubkeyThe extracted group public key.
    +
    +
    +
    Returns
    EpidStatus
    +
    Return values
    + + +
    kEpidSigInvalidParsing failed due to data authentication failure.
    +
    +
    +
    See also
    EPID 1.1 support
    + +
    +
    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    EpidStatus Epid11ParseGroupRlFile (void const * buf,
    size_t len,
    EpidCaCertificate const * cert,
    Epid11GroupRlrl,
    size_t * rl_len 
    )
    +
    + +

    Extracts group revocation list from buffer in issuer binary format.

    +

    Extracts the group revocation list from a buffer with format of Intel(R) EPID 1.1 Binary Group Certificate Revocation List File. The function validates that the revocation list was signed by the private key corresponding to the provided CA certificate and the size of the input buffer is correct.

    +

    To determine the required size of the revocation list output buffer, provide a null pointer for the output buffer.

    +
    Warning
    It is the responsibility of the caller to authenticate the EpidCaCertificate.
    +
    Parameters
    + + + + + + +
    [in]bufPointer to buffer containing the revocation list to extract.
    [in]lenThe size of buf in bytes.
    [in]certThe issuing CA public key certificate.
    [out]rlThe extracted revocation list. If Null, rl_len is filled with the required output buffer size.
    [in,out]rl_lenThe size of rl in bytes.
    +
    +
    +
    Returns
    EpidStatus
    +
    Return values
    + + +
    kEpidSigInvalidParsing failed due to data authentication failure.
    +
    +
    +
    See also
    EPID 1.1 support
    + +
    +
    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    EpidStatus Epid11ParsePrivRlFile (void const * buf,
    size_t len,
    EpidCaCertificate const * cert,
    Epid11PrivRlrl,
    size_t * rl_len 
    )
    +
    + +

    Extracts private key revocation list from buffer in issuer binary format.

    +

    Extracts the private key revocation list from a buffer with format of Intel(R) EPID 1.1 Binary Private Key Revocation List File. The function validates that the revocation list was signed by the private key corresponding to the provided CA certificate and the size of the input buffer is correct.

    +

    To determine the required size of the revocation list output buffer, provide a null pointer for the output buffer.

    +
    Warning
    It is the responsibility of the caller to authenticate the EpidCaCertificate.
    +
    Parameters
    + + + + + + +
    [in]bufPointer to buffer containing the revocation list to extract.
    [in]lenThe size of buf in bytes.
    [in]certThe issuing CA public key certificate.
    [out]rlThe extracted revocation list. If Null, rl_len is filled with the required output buffer size.
    [in,out]rl_lenThe size of rl in bytes.
    +
    +
    +
    Returns
    EpidStatus
    +
    Return values
    + + +
    kEpidSigInvalidParsing failed due to data authentication failure.
    +
    +
    +
    See also
    EPID 1.1 support
    + +
    +
    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    EpidStatus Epid11ParseSigRlFile (void const * buf,
    size_t len,
    EpidCaCertificate const * cert,
    Epid11SigRlrl,
    size_t * rl_len 
    )
    +
    + +

    Extracts signature revocation list from buffer in issuer binary format.

    +

    Extracts the signature based revocation list from a buffer with format of Intel(R) EPID 1.1 Binary Signature Revocation List File. The function validates that the revocation list was signed by the private key corresponding to the provided CA certificate and the size of the input buffer is correct.

    +

    To determine the required size of the revocation list output buffer, provide a null pointer for the output buffer.

    +
    Warning
    It is the responsibility of the caller to authenticate the EpidCaCertificate.
    +
    Parameters
    + + + + + + +
    [in]bufPointer to buffer containing the revocation list to extract.
    [in]lenThe size of buf in bytes.
    [in]certThe issuing CA public key certificate.
    [out]rlThe extracted revocation list. If Null, rl_len is filled with the required output buffer size.
    [in,out]rl_lenThe size of rl in bytes.
    +
    +
    +
    Returns
    EpidStatus
    +
    Return values
    + + +
    kEpidSigInvalidParsing failed due to data authentication failure.
    +
    +
    +
    See also
    EPID 1.1 support
    + +
    +
    +
    +
    + + + + + diff --git a/external/epid-sdk-3.0.0/doc/html/group___epid11_file_parser_module.js b/external/epid-sdk-3.0.0/doc/html/group___epid11_file_parser_module.js new file mode 100644 index 00000000..aacd2908 --- /dev/null +++ b/external/epid-sdk-3.0.0/doc/html/group___epid11_file_parser_module.js @@ -0,0 +1,7 @@ +var group___epid11_file_parser_module = +[ + [ "Epid11ParseGroupPubKeyFile", "group___epid11_file_parser_module.html#ga1f92d1cb6bd7d9815711fde515b40a4c", null ], + [ "Epid11ParseGroupRlFile", "group___epid11_file_parser_module.html#gae28a844eb68828480b2a76fcb7d252a3", null ], + [ "Epid11ParsePrivRlFile", "group___epid11_file_parser_module.html#gae682077d315c39ed298ef198fd738546", null ], + [ "Epid11ParseSigRlFile", "group___epid11_file_parser_module.html#gac3f6daaa5333627d4efe5438c1fe8868", null ] +]; \ No newline at end of file diff --git a/external/epid-sdk-3.0.0/doc/html/group___epid11_pairing_primitives.html b/external/epid-sdk-3.0.0/doc/html/group___epid11_pairing_primitives.html new file mode 100644 index 00000000..0d60502f --- /dev/null +++ b/external/epid-sdk-3.0.0/doc/html/group___epid11_pairing_primitives.html @@ -0,0 +1,245 @@ + + + + + + + +Intel® Enhanced Privacy ID SDK: EPID 1.1 specific pairing + + + + + + + + + + + + +
    +
    + + + + + + +
    + +
    +
    + + +
    +
    + +
    +
    +
    + +
    +
    + +
    +
    EPID 1.1 specific pairing
    +
    +
    + +

    EPID 1.1 pairing operations. +More...

    + + + + + +

    +Typedefs

    +typedef struct Epid11PairingState Epid11PairingState
     A pairing.
     
    + + + + + + + + + + +

    +Functions

    EpidStatus NewEpid11PairingState (EcGroup const *ga, EcGroup const *gb, FiniteField const *ff, Epid11PairingState **ps)
     Constructs a new Tate pairing state. More...
     
    void DeleteEpid11PairingState (Epid11PairingState **ps)
     Frees a previously allocated by Epid11PairingState. More...
     
    EpidStatus Epid11Pairing (Epid11PairingState *ps, EcPoint const *a, EcPoint const *b, FfElement *d)
     Computes a Tate Pairing for two parameters. More...
     
    +

    Detailed Description

    +

    EPID 1.1 pairing operations.

    +

    Provides APIs for defining and using a pairing relationship between two Elliptic curve groups.

    +

    These pairing operations are intended to support Intel(R) EPID 1.1 verification.

    +
    See also
    EPID 1.1 support
    +

    Function Documentation

    + +
    +
    + + + + + + + + +
    void DeleteEpid11PairingState (Epid11PairingState ** ps)
    +
    + +

    Frees a previously allocated by Epid11PairingState.

    +

    Frees memory pointed to by pairing state. Nulls the pointer.

    +

    This pairing operation is intended to support Intel(R) EPID 1.1 verification.

    +
    Parameters
    + + +
    [in]psThe pairing state. Can be NULL.
    +
    +
    +
    See also
    NewEpid11PairingState
    +
    +EPID 1.1 support
    + +
    +
    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    EpidStatus Epid11Pairing (Epid11PairingStateps,
    EcPoint const * a,
    EcPoint const * b,
    FfElementd 
    )
    +
    + +

    Computes a Tate Pairing for two parameters.

    +

    This pairing operation is intended to support Intel(R) EPID 1.1 verification. It frees memory pointed to by an Intel(R) EPID 1.1 pairing state.

    +
    Parameters
    + + + + + +
    [in]psThe pairing state.
    [in]aThe first value to pair. Must be in ga.
    [in]bThe second value to pair. Must be in gb.
    [out]dThe result of the pairing. Must be in ff.
    +
    +
    +
    Returns
    EpidStatus
    +
    See also
    EPID 1.1 support
    + +
    +
    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    EpidStatus NewEpid11PairingState (EcGroup const * ga,
    EcGroup const * gb,
    FiniteField const * ff,
    Epid11PairingState ** ps 
    )
    +
    + +

    Constructs a new Tate pairing state.

    +

    Allocates memory and creates a new pairing state for Tate pairing.

    +

    Use DeleteEpid11PairingState() to free memory.

    +

    This pairing operation is intended to support Intel(R) EPID 1.1 verification.

    +
    Parameters
    + + + + + +
    [in]gaThe EcGroup from which the first parameter of the pairing will be taken.
    [in]gbThe EcGroup from which the second parameter of the pairing will be taken.
    [in]ffThe result finite field. Must be a Fq12 field.
    [out]psNewly constructed pairing state.
    +
    +
    +
    Returns
    EpidStatus
    +
    See also
    DeleteEpid11PairingState
    +
    +EPID 1.1 support
    + +
    +
    +
    +
    + + + + + diff --git a/external/epid-sdk-3.0.0/doc/html/group___epid11_pairing_primitives.js b/external/epid-sdk-3.0.0/doc/html/group___epid11_pairing_primitives.js new file mode 100644 index 00000000..53b346ae --- /dev/null +++ b/external/epid-sdk-3.0.0/doc/html/group___epid11_pairing_primitives.js @@ -0,0 +1,7 @@ +var group___epid11_pairing_primitives = +[ + [ "Epid11PairingState", "group___epid11_pairing_primitives.html#ga74236e8ebbfc30a7daa7fa1cf1df148b", null ], + [ "DeleteEpid11PairingState", "group___epid11_pairing_primitives.html#gaa3457d6f85889bc714910252fd21c758", null ], + [ "Epid11Pairing", "group___epid11_pairing_primitives.html#gaa4076dfe25e8e61ac6753333a322c059", null ], + [ "NewEpid11PairingState", "group___epid11_pairing_primitives.html#ga0ee658e26e9f933ba2ffbf2504dfae7e", null ] +]; \ No newline at end of file diff --git a/external/epid-sdk-3.0.0/doc/html/group___epid11_types.html b/external/epid-sdk-3.0.0/doc/html/group___epid11_types.html new file mode 100644 index 00000000..8b4241f6 --- /dev/null +++ b/external/epid-sdk-3.0.0/doc/html/group___epid11_types.html @@ -0,0 +1,150 @@ + + + + + + + +Intel® Enhanced Privacy ID SDK: EPID 1.1 specific types + + + + + + + + + + + + +
    +
    + + + + + + +
    + +
    +
    + + +
    +
    + +
    +
    +
    + +
    +
    + +
    +
    EPID 1.1 specific types
    +
    +
    + +

    Intel(R) EPID 1.1 specific data types. +More...

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Data Structures

    struct  OctStr80
     80 bit octet string More...
     
    struct  OctStr600
     600 bit octet string More...
     
    struct  OctStr768
     768 bit octet string More...
     
    struct  Fq3ElemStr
     Serialized Fq3 element. More...
     
    struct  Epid11G2ElemStr
     Serialized Intel(R) EPID 1.1 G2 element. More...
     
    struct  Epid11GtElemStr
     Serialized Intel(R) EPID 1.1 GT element. More...
     
    struct  Epid11Params
     Intel(R) EPID 1.1 Parameters. More...
     
    struct  Epid11GroupPubKey
     Intel(R) EPID 1.1 group public key. More...
     
    struct  Epid11BasicSignature
     Intel(R) EPID 1.1 basic signature. More...
     
    struct  Epid11NrProof
     Intel(R) EPID 1.1 non-revoked Proof. More...
     
    struct  Epid11Signature
     Intel(R) EPID 1.1 Signature. More...
     
    struct  Epid11PrivRl
     Intel(R) EPID 1.1 private-key based revocation list. More...
     
    struct  Epid11SigRlEntry
     Intel(R) EPID 1.1 entry in SigRL (B,K) More...
     
    struct  Epid11SigRl
     Intel(R) EPID 1.1 signature based revocation list. More...
     
    struct  Epid11GroupRl
     Intel(R) EPID 1.1 group revocation list. More...
     
    + + + + + + + + + + +

    +Typedefs

    +typedef G1ElemStr Epid11G1ElemStr
     Serialized Intel(R) EPID 1.1 G1 element.
     
    +typedef G1ElemStr Epid11G3ElemStr
     Serialized Intel(R) EPID 1.1 G3 element.
     
    +typedef OctStr32 Epid11GroupId
     Intel(R) EPID 1.1 group ID.
     
    +

    Detailed Description

    +

    Intel(R) EPID 1.1 specific data types.

    +

    Defines serialized data types used by the SDK. These data types are only used by components that need to do Intel(R) EPID 1.1 verification.

    +
    See also
    EPID 1.1 support
    +
    +
    + + + + + diff --git a/external/epid-sdk-3.0.0/doc/html/group___epid11_types.js b/external/epid-sdk-3.0.0/doc/html/group___epid11_types.js new file mode 100644 index 00000000..4d71606d --- /dev/null +++ b/external/epid-sdk-3.0.0/doc/html/group___epid11_types.js @@ -0,0 +1,97 @@ +var group___epid11_types = +[ + [ "OctStr80", "struct_oct_str80.html", [ + [ "data", "struct_oct_str80.html#af80e2b81554109d9a41c5e771aceb8c9", null ] + ] ], + [ "OctStr600", "struct_oct_str600.html", [ + [ "data", "struct_oct_str600.html#a06d53af92a06e1decc6062fd16c43a59", null ] + ] ], + [ "OctStr768", "struct_oct_str768.html", [ + [ "data", "struct_oct_str768.html#ae45eea89259bd22e60a8d960063921cc", null ] + ] ], + [ "Fq3ElemStr", "struct_fq3_elem_str.html", [ + [ "a", "struct_fq3_elem_str.html#af1be0a4d5c9c674d75bec34f95e3c731", null ] + ] ], + [ "Epid11G2ElemStr", "struct_epid11_g2_elem_str.html", [ + [ "x", "struct_epid11_g2_elem_str.html#af28558484298f4f56377ededf57a4a04", null ], + [ "y", "struct_epid11_g2_elem_str.html#a9e8984e479bcbe8bd36c65e80c340032", null ] + ] ], + [ "Epid11GtElemStr", "struct_epid11_gt_elem_str.html", [ + [ "a", "struct_epid11_gt_elem_str.html#aed8dd86f1696c2f3537154fc904bf2b0", null ] + ] ], + [ "Epid11Params", "struct_epid11_params.html", [ + [ "a", "struct_epid11_params.html#a01381f84b2d747b6273e21c71c58a1b0", null ], + [ "a_tick", "struct_epid11_params.html#ae8770bb921aac9214ff8c45c41dbb228", null ], + [ "b", "struct_epid11_params.html#a27b45ed7771a3024d1d059b4b4ff6eae", null ], + [ "b_tick", "struct_epid11_params.html#ade3f88ce73d7de656ec67d9fdb0719d7", null ], + [ "coeff", "struct_epid11_params.html#aacc39ebe0cc625321039ffb6be0b0e87", null ], + [ "g1", "struct_epid11_params.html#a835e70da717cd5b0c94e242a6418a287", null ], + [ "g2", "struct_epid11_params.html#a1c6bbc4e066449d9c329f88cb653ef7c", null ], + [ "g3", "struct_epid11_params.html#a7eb9a1371d7187ae81bccfa8d5595033", null ], + [ "h", "struct_epid11_params.html#ae2d1dc635d9d7cba496c3d64fb6f9d5b", null ], + [ "h_tick", "struct_epid11_params.html#a0fe238db4ebc0225899dc2dac97d11c0", null ], + [ "orderG2", "struct_epid11_params.html#a02bd6fa2ab256e3a07533e947ab0101e", null ], + [ "p", "struct_epid11_params.html#a2aa4d8a2ebe0dfeb6d930fd7b39f9d1a", null ], + [ "p_tick", "struct_epid11_params.html#a77a8350b97a7afb584a46eb5b32f03bf", null ], + [ "q", "struct_epid11_params.html#aad03fd1cc3955bb8879535fa7298123f", null ], + [ "q_tick", "struct_epid11_params.html#a49462f35596d07a456a731d0690fdd83", null ], + [ "qnr", "struct_epid11_params.html#af22cfcd6c7ec0e7e7369b79554b963bd", null ] + ] ], + [ "Epid11GroupPubKey", "struct_epid11_group_pub_key.html", [ + [ "gid", "struct_epid11_group_pub_key.html#a964344b3c595bdd585bb9b5d9d0ea762", null ], + [ "h1", "struct_epid11_group_pub_key.html#a36f688472e2655052d485eac67d8c362", null ], + [ "h2", "struct_epid11_group_pub_key.html#aa724e9d2f0cb6019c05547d76a13b72a", null ], + [ "w", "struct_epid11_group_pub_key.html#a056c7138246e2bdcd47eaad501b756bb", null ] + ] ], + [ "Epid11BasicSignature", "struct_epid11_basic_signature.html", [ + [ "B", "struct_epid11_basic_signature.html#a27fd7ae99d1ada652e21e7508a467c0b", null ], + [ "c", "struct_epid11_basic_signature.html#a9cc6efcd3d7270022779bd16776168ed", null ], + [ "K", "struct_epid11_basic_signature.html#a5882fcbfd272774e12e50a2d77f0b139", null ], + [ "nd", "struct_epid11_basic_signature.html#af18200712d2cf3ed3ccaee328e8a4e0f", null ], + [ "sa", "struct_epid11_basic_signature.html#aeb221cf52bc2b1a9bf6e0a9779bfd20f", null ], + [ "salpha", "struct_epid11_basic_signature.html#a1a73fc922f69e2499643dd4c53d0d42d", null ], + [ "sb", "struct_epid11_basic_signature.html#a29a700f3bec251600e18b2292081df4b", null ], + [ "sbeta", "struct_epid11_basic_signature.html#afe28bad6328f81e6f7af011cc96ac2e5", null ], + [ "sf", "struct_epid11_basic_signature.html#ae17b45194997a6fa13c6014a51ec711c", null ], + [ "sx", "struct_epid11_basic_signature.html#a2718346665210b7e26521bf4a15cb3bd", null ], + [ "sy", "struct_epid11_basic_signature.html#a911441845fc9b82d514133371b5ba87c", null ], + [ "T1", "struct_epid11_basic_signature.html#a58b058a9c5119a240177acfade328b3b", null ], + [ "T2", "struct_epid11_basic_signature.html#a267cf4e17d10584736b0c38f3668d822", null ] + ] ], + [ "Epid11NrProof", "struct_epid11_nr_proof.html", [ + [ "c", "struct_epid11_nr_proof.html#a2e5ee8dc25d296538dce935397a93d68", null ], + [ "smu", "struct_epid11_nr_proof.html#a1ad7fe6b32c09f2504ee49731c0ad145", null ], + [ "snu", "struct_epid11_nr_proof.html#aa8406e938b2f87bded9e374e93a8ee5d", null ], + [ "T", "struct_epid11_nr_proof.html#a5ad9ba3bfac4eac37fd4a4e33ea65ddc", null ] + ] ], + [ "Epid11Signature", "struct_epid11_signature.html", [ + [ "n2", "struct_epid11_signature.html#ad25c277223a5210063163ea554d08ad4", null ], + [ "rl_ver", "struct_epid11_signature.html#a43cb3ed13c862ff05a9292623ad57c5e", null ], + [ "sigma", "struct_epid11_signature.html#abf24a8df563ba3f535486d8dad7384f4", null ], + [ "sigma0", "struct_epid11_signature.html#a48526e73f02ad3f1544c4c71c481f153", null ] + ] ], + [ "Epid11PrivRl", "struct_epid11_priv_rl.html", [ + [ "f", "struct_epid11_priv_rl.html#abbb75fee81aecb2dde7e2daab895ad3b", null ], + [ "gid", "struct_epid11_priv_rl.html#aa8945d81e30674b52a6d0900b64feb3c", null ], + [ "n1", "struct_epid11_priv_rl.html#ad95f880f40e2f40c723f5bdbd22ecfa2", null ], + [ "version", "struct_epid11_priv_rl.html#a2b3899f5a35bf64f860d6d91bccb03c8", null ] + ] ], + [ "Epid11SigRlEntry", "struct_epid11_sig_rl_entry.html", [ + [ "b", "struct_epid11_sig_rl_entry.html#abe47cfbd00684941f93a211417bedf0c", null ], + [ "k", "struct_epid11_sig_rl_entry.html#a5de66e1352eafe95774a0d76bac8f01a", null ] + ] ], + [ "Epid11SigRl", "struct_epid11_sig_rl.html", [ + [ "bk", "struct_epid11_sig_rl.html#a6473f8a98f76c9f82183041ea5ae17e3", null ], + [ "gid", "struct_epid11_sig_rl.html#ad45b0e3e1be59649150dd34c104000ac", null ], + [ "n2", "struct_epid11_sig_rl.html#a8c654d43df132db7874f4c84c177dc12", null ], + [ "version", "struct_epid11_sig_rl.html#aa38674729293f4879ff94328dd3c59b1", null ] + ] ], + [ "Epid11GroupRl", "struct_epid11_group_rl.html", [ + [ "gid", "struct_epid11_group_rl.html#a97f165c59bc447e3ca3c2148a096710f", null ], + [ "n3", "struct_epid11_group_rl.html#a35cb954f598d4006b0f047cde77010a5", null ], + [ "version", "struct_epid11_group_rl.html#a63afa9863e8dcb63ff884e6e4093c481", null ] + ] ], + [ "Epid11G1ElemStr", "group___epid11_types.html#gadff9c05d5b7751024152b40dda545545", null ], + [ "Epid11G3ElemStr", "group___epid11_types.html#gaf1f4f1d6f001895abe548cfb33611c23", null ], + [ "Epid11GroupId", "group___epid11_types.html#ga7293cec8f937d6f5da42084403f978f1", null ] +]; \ No newline at end of file diff --git a/external/epid-sdk-3.0.0/doc/html/group___epid11_verifier_module.html b/external/epid-sdk-3.0.0/doc/html/group___epid11_verifier_module.html new file mode 100644 index 00000000..8b383c38 --- /dev/null +++ b/external/epid-sdk-3.0.0/doc/html/group___epid11_verifier_module.html @@ -0,0 +1,780 @@ + + + + + + + +Intel® Enhanced Privacy ID SDK: EPID 1.1 support + + + + + + + + + + + + +
    +
    + + + + + + +
    + +
    +
    + + +
    +
    + +
    +
    +
    + +
    +
    + +
    +
    EPID 1.1 support
    +
    +
    + +

    Intel(R) EPID 1.1 Verifier functionality. +More...

    + + + + + +

    +Data Structures

    struct  Epid11VerifierPrecomp
     Intel(R) EPID 1.1 Pre-computed verifier settings. More...
     
    + + + + +

    +Typedefs

    +typedef struct Epid11VerifierCtx Epid11VerifierCtx
     Internal context of Intel(R) EPID 1.1 verifier.
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    EpidStatus Epid11VerifierCreate (Epid11GroupPubKey const *pub_key, Epid11VerifierPrecomp const *precomp, Epid11VerifierCtx **ctx)
     Creates a new Intel(R) EPID 1.1 verifier context. More...
     
    void Epid11VerifierDelete (Epid11VerifierCtx **ctx)
     Deletes an existing Intel(R) EPID 1.1 verifier context. More...
     
    EpidStatus Epid11VerifierWritePrecomp (Epid11VerifierCtx const *ctx, Epid11VerifierPrecomp *precomp)
     Serializes the pre-computed Intel(R) EPID 1.1 verifier settings. More...
     
    EpidStatus Epid11VerifierSetPrivRl (Epid11VerifierCtx *ctx, Epid11PrivRl const *priv_rl, size_t priv_rl_size)
     Sets the Intel(R) EPID 1.1 private key based revocation list. More...
     
    EpidStatus Epid11VerifierSetSigRl (Epid11VerifierCtx *ctx, Epid11SigRl const *sig_rl, size_t sig_rl_size)
     Sets the Intel(R) EPID 1.1 signature based revocation list. More...
     
    EpidStatus Epid11VerifierSetGroupRl (Epid11VerifierCtx *ctx, Epid11GroupRl const *grp_rl, size_t grp_rl_size)
     Sets the Intel(R) EPID 1.1 group based revocation list. More...
     
    EpidStatus Epid11VerifierSetBasename (Epid11VerifierCtx *ctx, void const *basename, size_t basename_len)
     Sets the basename to be used by a verifier. More...
     
    EpidStatus Epid11Verify (Epid11VerifierCtx const *ctx, Epid11Signature const *sig, size_t sig_len, void const *msg, size_t msg_len)
     Verifies an Intel(R) EPID 1.1 signature and checks revocation status. More...
     
    bool Epid11AreSigsLinked (Epid11BasicSignature const *sig1, Epid11BasicSignature const *sig2)
     Determines if two Intel(R) EPID 1.1 signatures are linked. More...
     
    EpidStatus Epid11VerifyBasicSig (Epid11VerifierCtx const *ctx, Epid11BasicSignature const *sig, void const *msg, size_t msg_len)
     Verifies an Intel(R) EPID 1.1 member signature without revocation checks. More...
     
    EpidStatus Epid11NrVerify (Epid11VerifierCtx const *ctx, Epid11BasicSignature const *sig, void const *msg, size_t msg_len, Epid11SigRlEntry const *sigrl_entry, Epid11NrProof const *proof)
     Verifies the non-revoked proof for a single Intel(R) EPID 1.1 signature based revocation list entry. More...
     
    EpidStatus Epid11CheckPrivRlEntry (Epid11VerifierCtx const *ctx, Epid11BasicSignature const *sig, FpElemStr const *f)
     Verifies an Intel(R) EPID 1.1 signature has not been revoked in the private key based revocation list. More...
     
    +

    Detailed Description

    +

    Intel(R) EPID 1.1 Verifier functionality.

    +

    To verify signatures coming from member devices that belong to an Intel® EPID 1.1 group, you need to use Intel® EPID 1.1 verifier APIs.

    +

    If you are acting as a verifier for both Intel® EPID 1.1 and 2.0 members, you can determine if you need version 1.1 or 2.0 verification by checking the Intel® EPID version field in the group public key file (see EpidParseFileHeader). You can also check the version in other binary issuer material, such as the GroupRL and SigRL.

    +

    The 1.1 verifier APIs take a verifier context as input. Each verifier context (Epid11VerifierCtx) represents a verifier for a single group.

    +

    The Intel® EPID 1.1 specification does not provide hash algorithm selection and verifier blacklist revocation. Therefore, APIs such as EpidVerifierSetHashAlg and EpidVerifierSetVerifierRl are not available.

    +

    You can find the Intel® EPID 1.1 API headers in the 1.1 directories, for example, epid/verifier/1.1/api.h.

    +

    Intel® EPID 1.1 APIs and data structures are indicated with the "Epid11" prefix. For example, the Intel® EPID 1.1 version of EpidParseGroupPubKeyFile is called Epid11ParseGroupPubKeyFile, and the Intel® EPID 1.1 version of GroupRl is Epid11GroupRl.

    +

    Function Documentation

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    bool Epid11AreSigsLinked (Epid11BasicSignature const * sig1,
    Epid11BasicSignature const * sig2 
    )
    +
    + +

    Determines if two Intel(R) EPID 1.1 signatures are linked.

    +

    The Intel(R) EPID scheme allows signatures to be linked. If basename option is specified when signing signatures with the same basename will be linkable. This linking capability allows the verifier, or anyone, to know whether two Intel(R) EPID signatures are generated by the same member.

    +

    This API supports Intel(R) EPID 1.1 verification.

    +
    Parameters
    + + + +
    [in]sig1A basic signature.
    [in]sig2A basic signature.
    +
    +
    +
    Returns
    bool
    +
    Return values
    + + + +
    trueif the signatures were generated by the same member
    falseif it couldn't be determined if the signatures were generated by the same member
    +
    +
    +
    Note
    The input signatures should be verified using Epid11VerifyBasicSig() before invocation. Behavior is undefined if either of the signatures cannot be verified.
    +
    See also
    Epid11VerifyBasicSig
    +
    +EPID 1.1 support
    + +
    +
    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    EpidStatus Epid11CheckPrivRlEntry (Epid11VerifierCtx const * ctx,
    Epid11BasicSignature const * sig,
    FpElemStr const * f 
    )
    +
    + +

    Verifies an Intel(R) EPID 1.1 signature has not been revoked in the private key based revocation list.

    +

    Used in constrained environments where, due to limited memory, it may not be possible to process through a large and potentially unbounded revocation list.

    +

    This API supports Intel(R) EPID 1.1 verification.

    +
    Parameters
    + + + + +
    [in]ctxThe verifier context.
    [in]sigThe basic signature.
    [in]fThe private key based revocation list entry.
    +
    +
    +
    Note
    Sig should be verified using Epid11VerifyBasicSig() before invocation. Behavior is undefined if sig cannot be verified.
    +
    +This function should be used in conjunction with Epid11NrVerify() and Epid11VerifyBasicSig().
    +
    +If the result is not kEpidNoErr the verify should de considered to have failed.
    +
    Returns
    EpidStatus
    +
    See also
    Epid11VerifierCreate
    +
    +Epid11NrVerify
    +
    +Epid11VerifyBasicSig
    +
    +EPID 1.1 support
    + +
    +
    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    EpidStatus Epid11NrVerify (Epid11VerifierCtx const * ctx,
    Epid11BasicSignature const * sig,
    void const * msg,
    size_t msg_len,
    Epid11SigRlEntry const * sigrl_entry,
    Epid11NrProof const * proof 
    )
    +
    + +

    Verifies the non-revoked proof for a single Intel(R) EPID 1.1 signature based revocation list entry.

    +

    Used in constrained environments where, due to limited memory, it may not be possible to process through a large and potentially unbounded revocation list.

    +

    This API supports Intel(R) EPID 1.1 verification.

    +
    Parameters
    + + + + + + + +
    [in]ctxThe verifier context.
    [in]sigThe basic signature.
    [in]msgThe message that was signed.
    [in]msg_lenThe size of msg in bytes.
    [in]sigrl_entryThe signature based revocation list entry.
    [in]proofThe non-revoked proof.
    +
    +
    +
    Returns
    EpidStatus
    +
    Note
    Sig should be verified using Epid11VerifyBasicSig() before invocation. Behavior is undefined if sig cannot be verified.
    +
    +This function should be used in conjunction with Epid11VerifyBasicSig() and Epid11CheckPrivRlEntry().
    +
    +If the result is not kEpidNoErr the verify should de considered to have failed.
    +
    See also
    Epid11VerifierCreate
    +
    +Epid11VerifyBasicSig
    +
    +Epid11CheckPrivRlEntry
    +
    +EPID 1.1 support
    + +
    +
    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    EpidStatus Epid11VerifierCreate (Epid11GroupPubKey const * pub_key,
    Epid11VerifierPrecomp const * precomp,
    Epid11VerifierCtx ** ctx 
    )
    +
    + +

    Creates a new Intel(R) EPID 1.1 verifier context.

    +

    Must be called to create the verifier context that is used by other "Verifier" APIs.

    +

    Allocates memory for the context, then initialize it.

    +

    Epid11VerifierDelete() must be called to safely release the member context.

    +
    Parameters
    + + + + +
    [in]pub_keyThe group certificate.
    [in]precompOptional pre-computed data. If NULL the value is computed internally and is readable using Epid11VerifierWritePrecomp().
    [out]ctxNewly constructed verifier context.
    +
    +
    +
    Returns
    EpidStatus
    +
    Note
    If the result is not kEpidNoErr the content of ctx is undefined.
    +
    See also
    Epid11VerifierDelete
    +
    +Epid11VerifierWritePrecomp
    +
    +EPID 1.1 support
    + +
    +
    + +
    +
    + + + + + + + + +
    void Epid11VerifierDelete (Epid11VerifierCtx ** ctx)
    +
    + +

    Deletes an existing Intel(R) EPID 1.1 verifier context.

    +

    Must be called to safely release a verifier context created using Epid11VerifierCreate().

    +

    De-initializes the context, frees memory used by the context, and sets the context pointer to NULL.

    +
    Parameters
    + + +
    [in,out]ctxThe verifier context. Can be NULL.
    +
    +
    +
    See also
    Epid11VerifierCreate
    +
    +EPID 1.1 support
    + +
    +
    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    EpidStatus Epid11VerifierSetBasename (Epid11VerifierCtxctx,
    void const * basename,
    size_t basename_len 
    )
    +
    + +

    Sets the basename to be used by a verifier.

    +

    This API allows setting a zero length base name.

    +
    Warning
    Not all members in the Intel(R) EPID 1.1 ecosystem may support zero length basenames. They may interpret a zero length basename as random base.
    +
    Parameters
    + + + + +
    [in,out]ctxThe verifier context.
    [in]basenameThe basename. Pass NULL for random base.
    [in]basename_lenNumber of bytes in basename buffer. Must be 0 if basename is NULL.
    +
    +
    +
    Returns
    EpidStatus
    +
    See also
    Epid11VerifierCreate
    + +
    +
    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    EpidStatus Epid11VerifierSetGroupRl (Epid11VerifierCtxctx,
    Epid11GroupRl const * grp_rl,
    size_t grp_rl_size 
    )
    +
    + +

    Sets the Intel(R) EPID 1.1 group based revocation list.

    +

    The caller is responsible to for ensuring the revocation list is authorized, e.g signed by the issuer. The caller is also responsible checking the version of the revocation list. The call will fail if trying to set an older version of the revocation list than was last set.

    +

    This API supports Intel(R) EPID 1.1 verification.

    +
    Attention
    The memory pointed to by grp_rl will be accessed directly by the verifier until a new list is set or the verifier is destroyed. Do not modify the contents of this memory. The behavior of subsequent operations that rely on the revocation list will be undefined if the memory is modified.
    +
    +It is the responsibility of the caller to free the memory pointed to by grp_rl after the verifier is no longer using it.
    +
    Parameters
    + + + + +
    [in,out]ctxThe verifier context.
    [in]grp_rlThe group based revocation list.
    [in]grp_rl_sizeThe size of the group based revocation list in bytes.
    +
    +
    +
    Returns
    EpidStatus
    +
    Note
    If the result is not kEpidNoErr the group based revocation list pointed to by the verifier is undefined.
    +
    See also
    Epid11VerifierCreate
    +
    +EPID 1.1 support
    + +
    +
    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    EpidStatus Epid11VerifierSetPrivRl (Epid11VerifierCtxctx,
    Epid11PrivRl const * priv_rl,
    size_t priv_rl_size 
    )
    +
    + +

    Sets the Intel(R) EPID 1.1 private key based revocation list.

    +

    The caller is responsible to for ensuring the revocation list is authorized, e.g signed by the issuer. The caller is also responsible checking the version of the revocation list. The call will fail if trying to set an older version of the revocation list than was last set.

    +

    This API supports Intel(R) EPID 1.1 verification.

    +
    Attention
    The memory pointed to by priv_rl will be accessed directly by the verifier until a new list is set or the verifier is destroyed. Do not modify the contents of this memory. The behavior of subsequent operations that rely on the revocation list will be undefined if the memory is modified.
    +
    +It is the responsibility of the caller to free the memory pointed to by priv_rl after the verifier is no longer using it.
    +
    Parameters
    + + + + +
    [in,out]ctxThe verifier context.
    [in]priv_rlThe private key based revocation list.
    [in]priv_rl_sizeThe size of the private key based revocation list in bytes.
    +
    +
    +
    Returns
    EpidStatus
    +
    Note
    If the result is not kEpidNoErr the private key based revocation list pointed to by the verifier is undefined.
    +
    See also
    Epid11VerifierCreate
    +
    +EPID 1.1 support
    + +
    +
    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    EpidStatus Epid11VerifierSetSigRl (Epid11VerifierCtxctx,
    Epid11SigRl const * sig_rl,
    size_t sig_rl_size 
    )
    +
    + +

    Sets the Intel(R) EPID 1.1 signature based revocation list.

    +

    The caller is responsible to for ensuring the revocation list is authorized, e.g signed by the issuer. The caller is also responsible checking the version of the revocation list. The call will fail if trying to set an older version of the revocation list than was last set.

    +

    This API supports Intel(R) EPID 1.1 verification.

    +
    Attention
    The memory pointed to by sig_rl will be accessed directly by the verifier until a new list is set or the verifier is destroyed. Do not modify the contents of this memory. The behavior of subsequent operations that rely on the revocation list will be undefined if the memory is modified.
    +
    +It is the responsibility of the caller to free the memory pointed to by sig_rl after the verifier is no longer using it.
    +
    Parameters
    + + + + +
    [in,out]ctxThe verifier context.
    [in]sig_rlThe signature based revocation list.
    [in]sig_rl_sizeThe size of the signature based revocation list in bytes.
    +
    +
    +
    Returns
    EpidStatus
    +
    Note
    If the result is not kEpidNoErr the signature based revocation list pointed to by the verifier is undefined.
    +
    See also
    Epid11VerifierCreate
    +
    +SdkOverview_11Verifier
    +
    +EPID 1.1 support
    + +
    +
    + +
    +
    + + + + + + + + + + + + + + + + + + +
    EpidStatus Epid11VerifierWritePrecomp (Epid11VerifierCtx const * ctx,
    Epid11VerifierPrecompprecomp 
    )
    +
    + +

    Serializes the pre-computed Intel(R) EPID 1.1 verifier settings.

    +
    Parameters
    + + + +
    [in]ctxThe verifier context.
    [out]precompThe Serialized pre-computed verifier settings.
    +
    +
    +
    Returns
    EpidStatus
    +
    Note
    If the result is not kEpidNoErr the content of precomp is undefined.
    +
    See also
    EPID 1.1 support
    + +
    +
    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    EpidStatus Epid11Verify (Epid11VerifierCtx const * ctx,
    Epid11Signature const * sig,
    size_t sig_len,
    void const * msg,
    size_t msg_len 
    )
    +
    + +

    Verifies an Intel(R) EPID 1.1 signature and checks revocation status.

    +
    Parameters
    + + + + + + +
    [in]ctxThe verifier context.
    [in]sigThe signature.
    [in]sig_lenThe size of sig in bytes.
    [in]msgThe message that was signed.
    [in]msg_lenThe size of msg in bytes.
    +
    +
    +
    Returns
    EpidStatus
    +
    Return values
    + + + + + + +
    kEpidSigValidSignature validated successfully
    kEpidSigInvalidSignature is invalid
    kEpidSigRevokedInGroupRlSignature revoked in GroupRl
    kEpidSigRevokedInPrivRlSignature revoked in PrivRl
    kEpidSigRevokedInSigRlSignature revoked in SigRl
    +
    +
    +
    Note
    If the result is not kEpidNoErr or one of the values listed above the verify should de considered to have failed.
    +
    See also
    Epid11VerifierCreate
    +
    +EPID 1.1 support
    + +
    +
    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    EpidStatus Epid11VerifyBasicSig (Epid11VerifierCtx const * ctx,
    Epid11BasicSignature const * sig,
    void const * msg,
    size_t msg_len 
    )
    +
    + +

    Verifies an Intel(R) EPID 1.1 member signature without revocation checks.

    +

    Used in constrained environments where, due to limited memory, it may not be possible to process through a large and potentially unbounded revocation list.

    +
    Parameters
    + + + + + +
    [in]ctxThe verifier context.
    [in]sigThe basic signature.
    [in]msgThe message that was signed.
    [in]msg_lenThe size of msg in bytes.
    +
    +
    +
    Returns
    EpidStatus
    +
    Note
    This function should be used in conjunction with Epid11NrVerify() and Epid11CheckPrivRlEntry().
    +
    +If the result is not kEpidNoErr the verify should be considered to have failed.
    +
    See also
    Epid11VerifierCreate
    +
    +EPID 1.1 support
    + +
    +
    +
    +
    + + + + + diff --git a/external/epid-sdk-3.0.0/doc/html/group___epid11_verifier_module.js b/external/epid-sdk-3.0.0/doc/html/group___epid11_verifier_module.js new file mode 100644 index 00000000..b6867654 --- /dev/null +++ b/external/epid-sdk-3.0.0/doc/html/group___epid11_verifier_module.js @@ -0,0 +1,22 @@ +var group___epid11_verifier_module = +[ + [ "Epid11VerifierPrecomp", "struct_epid11_verifier_precomp.html", [ + [ "e12", "struct_epid11_verifier_precomp.html#a0a980adb039089263ec59a995600ee91", null ], + [ "e22", "struct_epid11_verifier_precomp.html#ad0ff2a13c2c87460296900dde72a2f30", null ], + [ "e2w", "struct_epid11_verifier_precomp.html#a14ebadf105aff085edb9a817a2d1db89", null ], + [ "gid", "struct_epid11_verifier_precomp.html#a03138e937f4488bdbc52ed473dc313da", null ] + ] ], + [ "Epid11VerifierCtx", "group___epid11_verifier_module.html#gabe6a864a06322205ae7536ffea34c702", null ], + [ "Epid11AreSigsLinked", "group___epid11_verifier_module.html#gab0b6560b226a37321f5ca5d4fb55eba7", null ], + [ "Epid11CheckPrivRlEntry", "group___epid11_verifier_module.html#ga0b79c79d09e3551158e1c38c7c335929", null ], + [ "Epid11NrVerify", "group___epid11_verifier_module.html#ga3a2e320d7de6156b2ce9d73e9cdce813", null ], + [ "Epid11VerifierCreate", "group___epid11_verifier_module.html#gac5a8f8d7624063ea428d81dbdbf61fa8", null ], + [ "Epid11VerifierDelete", "group___epid11_verifier_module.html#ga63cae8d5abcf4d7e3af4157de18998f1", null ], + [ "Epid11VerifierSetBasename", "group___epid11_verifier_module.html#ga0cb6d30df527ee0d8f0a1b68d2b7c0c0", null ], + [ "Epid11VerifierSetGroupRl", "group___epid11_verifier_module.html#ga809c777908b2f9d029062d9424cb5f65", null ], + [ "Epid11VerifierSetPrivRl", "group___epid11_verifier_module.html#gaffbe6ac2bc7236ad65126a17ebdceb14", null ], + [ "Epid11VerifierSetSigRl", "group___epid11_verifier_module.html#gaff5a014b0334be7e8583f0f99cb5e9b8", null ], + [ "Epid11VerifierWritePrecomp", "group___epid11_verifier_module.html#ga241520cb925e5be89893a2037451cf1c", null ], + [ "Epid11Verify", "group___epid11_verifier_module.html#gafe5ad6bde38ad0c3e0a9960975fd5216", null ], + [ "Epid11VerifyBasicSig", "group___epid11_verifier_module.html#ga7b5d19277da043c2b79721975d7bd070", null ] +]; \ No newline at end of file diff --git a/external/epid-sdk-3.0.0/doc/html/group___epid_common.html b/external/epid-sdk-3.0.0/doc/html/group___epid_common.html new file mode 100644 index 00000000..83665db3 --- /dev/null +++ b/external/epid-sdk-3.0.0/doc/html/group___epid_common.html @@ -0,0 +1,135 @@ + + + + + + + +Intel® Enhanced Privacy ID SDK: common + + + + + + + + + + + + +
    +
    + + + + + + +
    + +
    +
    + + +
    +
    + +
    +
    +
    + +
    +
    + +
    +
    common
    +
    +
    + +

    Common code shared between core sub-components. +More...

    + + + + + + + + + + + + + + + + + +

    +Modules

     math
     Math Primitives and Group Operations.
     
     errors
     Error reporting interface.
     
     fileparser
     Parser for issuer material.
     
     print_utils
     Debug print routines.
     
     types
     SDK data types.
     
    + + + + +

    +Typedefs

    typedef int(__STDCALL * BitSupplier) (unsigned int *rand_data, int num_bits, void *user_data)
     Generates random data. More...
     
    +

    Detailed Description

    +

    Common code shared between core sub-components.

    +

    Constants, utility functions, and libraries that are used widely in the implementation or definition of APIs and samples.

    +

    Typedef Documentation

    + +
    +
    + + + + +
    typedef int(__STDCALL* BitSupplier) (unsigned int *rand_data, int num_bits, void *user_data)
    +
    + +

    Generates random data.

    +

    It is the responsibility of the caller of the SDK interfaces to implement a function of this prototype and to then pass a pointer to this function into methods that require it.

    +
    Parameters
    + + + + +
    [out]rand_datadestination buffer
    [in]num_bitssize of rand_data in bits
    [in]user_datauser data passed through from api call.
    +
    +
    +
    Returns
    zero on success and non-zero value on error.
    + +
    +
    +
    +
    + + + + + diff --git a/external/epid-sdk-3.0.0/doc/html/group___epid_common.js b/external/epid-sdk-3.0.0/doc/html/group___epid_common.js new file mode 100644 index 00000000..70dc2de3 --- /dev/null +++ b/external/epid-sdk-3.0.0/doc/html/group___epid_common.js @@ -0,0 +1,9 @@ +var group___epid_common = +[ + [ "math", "group___epid_math.html", "group___epid_math" ], + [ "errors", "group___error_codes.html", "group___error_codes" ], + [ "fileparser", "group___file_parser.html", "group___file_parser" ], + [ "print_utils", "group___epid_print.html", "group___epid_print" ], + [ "types", "group___epid_types.html", "group___epid_types" ], + [ "BitSupplier", "group___epid_common.html#ga6119a2c0323a3fca9e502b24bc378c2c", null ] +]; \ No newline at end of file diff --git a/external/epid-sdk-3.0.0/doc/html/group___epid_math.html b/external/epid-sdk-3.0.0/doc/html/group___epid_math.html new file mode 100644 index 00000000..8ced37ba --- /dev/null +++ b/external/epid-sdk-3.0.0/doc/html/group___epid_math.html @@ -0,0 +1,106 @@ + + + + + + + +Intel® Enhanced Privacy ID SDK: math + + + + + + + + + + + + +
    +
    + + + + + + +
    + +
    +
    + + +
    +
    + +
    +
    +
    + +
    +
    + +
    +
    math
    +
    +
    + +

    Math Primitives and Group Operations. +More...

    + + + + + + + + + + + + + + + + + + + + +

    +Modules

     bignum
     Big number operations.
     
     ecdsa
     Elliptic Curve Digital Signature Algorithm Primitives.
     
     ecgroup
     Elliptic curve group operations.
     
     finitefield
     Finite field operations.
     
     hash
     Hash primitives.
     
     pairing
     Pairing operations.
     
    +

    Detailed Description

    +

    Math Primitives and Group Operations.

    +

    Provides abstracted math primitives that are designed to be overridden by implementers porting to environments with specialized hardware. This module is defined and tested to hide implementation details from users of the API

    +
    +
    + + + + + diff --git a/external/epid-sdk-3.0.0/doc/html/group___epid_math.js b/external/epid-sdk-3.0.0/doc/html/group___epid_math.js new file mode 100644 index 00000000..c416f544 --- /dev/null +++ b/external/epid-sdk-3.0.0/doc/html/group___epid_math.js @@ -0,0 +1,9 @@ +var group___epid_math = +[ + [ "bignum", "group___big_num_primitives.html", "group___big_num_primitives" ], + [ "ecdsa", "group___ecdsa_primitives.html", "group___ecdsa_primitives" ], + [ "ecgroup", "group___ec_group_primitives.html", "group___ec_group_primitives" ], + [ "finitefield", "group___finite_field_primitives.html", "group___finite_field_primitives" ], + [ "hash", "group___hash_primitives.html", "group___hash_primitives" ], + [ "pairing", "group___pairing_primitives.html", "group___pairing_primitives" ] +]; \ No newline at end of file diff --git a/external/epid-sdk-3.0.0/doc/html/group___epid_member_module.html b/external/epid-sdk-3.0.0/doc/html/group___epid_member_module.html new file mode 100644 index 00000000..156ea0bb --- /dev/null +++ b/external/epid-sdk-3.0.0/doc/html/group___epid_member_module.html @@ -0,0 +1,933 @@ + + + + + + + +Intel® Enhanced Privacy ID SDK: member + + + + + + + + + + + + +
    +
    + + + + + + +
    + +
    +
    + + +
    +
    + +
    +
    +
    + +
    +
    + +
    +
    member
    +
    +
    + +

    Member functionality. +More...

    + + + + + + + + +

    +Data Structures

    struct  MemberPrecomp
     Pre-computed member settings. More...
     
    struct  PreComputedSignature
     Pre-computed signature. More...
     
    + + + + +

    +Typedefs

    +typedef struct MemberCtx MemberCtx
     Internal context of member.
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    EpidStatus EpidMemberCreate (GroupPubKey const *pub_key, PrivKey const *priv_key, MemberPrecomp const *precomp, BitSupplier rnd_func, void *rnd_param, MemberCtx **ctx)
     Creates a new member context. More...
     
    void EpidMemberDelete (MemberCtx **ctx)
     Deletes an existing member context. More...
     
    EpidStatus EpidMemberWritePrecomp (MemberCtx const *ctx, MemberPrecomp *precomp)
     Serializes the pre-computed member settings. More...
     
    EpidStatus EpidMemberSetHashAlg (MemberCtx *ctx, HashAlg hash_alg)
     Sets the hash algorithm to be used by a member. More...
     
    size_t EpidGetSigSize (SigRl const *sig_rl)
     Computes the size in bytes required for an Intel(R) EPID signature. More...
     
    EpidStatus EpidSign (MemberCtx const *ctx, void const *msg, size_t msg_len, void const *basename, size_t basename_len, SigRl const *sig_rl, size_t sig_rl_size, EpidSignature *sig, size_t sig_len)
     Writes an Intel(R) EPID signature. More...
     
    EpidStatus EpidRegisterBaseName (MemberCtx *ctx, void const *basename, size_t basename_len)
     Registers a basename with a member. More...
     
    EpidStatus EpidAddPreSigs (MemberCtx *ctx, size_t number_presigs, PreComputedSignature *presigs)
     Extends the member's pool of pre-computed signatures. More...
     
    size_t EpidGetNumPreSigs (MemberCtx const *ctx)
     Gets the number of pre-computed signatures in the member's pool. More...
     
    EpidStatus EpidWritePreSigs (MemberCtx *ctx, PreComputedSignature *presigs, size_t number_presigs)
     Serializes pre-computed signatures from the member's pool. More...
     
    EpidStatus EpidRequestJoin (GroupPubKey const *pub_key, IssuerNonce const *ni, FpElemStr const *f, BitSupplier rnd_func, void *rnd_param, HashAlg hash_alg, JoinRequest *join_request)
     Creates a request to join a group. More...
     
    EpidStatus EpidSignBasic (MemberCtx const *ctx, void const *msg, size_t msg_len, void const *basename, size_t basename_len, BasicSignature *sig)
     Creates a basic signature for use in constrained environment. More...
     
    EpidStatus EpidNrProve (MemberCtx const *ctx, void const *msg, size_t msg_len, BasicSignature const *sig, SigRlEntry const *sigrl_entry, NrProof *proof)
     Calculates a non-revoked proof for a single signature based revocation list entry. More...
     
    bool EpidIsPrivKeyInGroup (GroupPubKey const *pub_key, PrivKey const *priv_key)
     Tests if a member private key is valid without checking revocation. More...
     
    EpidStatus EpidDecompressPrivKey (GroupPubKey const *pub_key, CompressedPrivKey const *compressed_privkey, PrivKey *priv_key)
     Decompresses compressed member private key. More...
     
    +

    Detailed Description

    +

    Member functionality.

    +

    Defines the APIs needed by Intel(R) EPID members. Each member context (MemberCtx) represents membership in a single group.

    +

    Function Documentation

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    EpidStatus EpidAddPreSigs (MemberCtxctx,
    size_t number_presigs,
    PreComputedSignaturepresigs 
    )
    +
    + +

    Extends the member's pool of pre-computed signatures.

    +

    Can either generate new pre-computed signatures or import existing ones. EpidWritePreSigs can be used to export pre-computed signatures.

    +
    Parameters
    + + + + +
    [in]ctxThe member context.
    [in]number_presigsThe number of pre-computed signatures to add to the internal pool.
    [in,out]presigsOptional array of valid pre-computed signatures to import. If presigs is not NULL it most contain at least number_presigs pre-computed signatures.
    +
    +
    +
    Returns
    EpidStatus
    +
    Note
    presigs buffer is zeroed out before return to prevent pre-computed signatures from being reused.
    +
    +If the result is not kEpidNoErr the state of the pre-computed signature pool, and of presigs, is undefined.
    +
    See also
    EpidMemberCreate
    +
    +EpidWritePreSigs
    + +
    +
    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    EpidStatus EpidDecompressPrivKey (GroupPubKey const * pub_key,
    CompressedPrivKey const * compressed_privkey,
    PrivKeypriv_key 
    )
    +
    + +

    Decompresses compressed member private key.

    +

    Converts a compressed member private key into a member private key for use by other member APIs.

    +
    Parameters
    + + + + +
    [in]pub_keyThe public key of the group.
    [in]compressed_privkeyThe compressed member private key to be decompressed.
    [out]priv_keyThe member private key.
    +
    +
    +
    Returns
    EpidStatus
    + +
    +
    + +
    +
    + + + + + + + + +
    size_t EpidGetNumPreSigs (MemberCtx const * ctx)
    +
    + +

    Gets the number of pre-computed signatures in the member's pool.

    +
    Parameters
    + + +
    [in]ctxThe member context.
    +
    +
    +
    Returns
    Number of remaining pre-computed signatures. Returns 0 if ctx is NULL.
    +
    See also
    EpidMemberCreate
    +
    +EpidWritePreSigs
    + +
    +
    + +
    +
    + + + + + + + + +
    size_t EpidGetSigSize (SigRl const * sig_rl)
    +
    + +

    Computes the size in bytes required for an Intel(R) EPID signature.

    +
    Parameters
    + + +
    [in]sig_rlThe signature based revocation list that is used. NULL is treated as a zero length list.
    +
    +
    +
    Returns
    Size in bytes of an Intel(R) EPID signature including proofs for each entry in the signature based revocation list.
    +
    See also
    SigRl
    + +
    +
    + +
    +
    + + + + + + + + + + + + + + + + + + +
    bool EpidIsPrivKeyInGroup (GroupPubKey const * pub_key,
    PrivKey const * priv_key 
    )
    +
    + +

    Tests if a member private key is valid without checking revocation.

    +

    Used to check that a member private key is a valid key for a group. This is useful as a cross check when creating a new member private key as part of the join process

    +
    Parameters
    + + + +
    [in]pub_keyThe public key of the group.
    [in]priv_keyThe private key to check.
    +
    +
    +
    Returns
    bool
    +
    Return values
    + + + +
    trueif the private key is valid for the group of the public key
    falseif the private key is not valid for the group of the public key
    +
    +
    +
    See also
    EpidRequestJoin
    + +
    +
    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    EpidStatus EpidMemberCreate (GroupPubKey const * pub_key,
    PrivKey const * priv_key,
    MemberPrecomp const * precomp,
    BitSupplier rnd_func,
    void * rnd_param,
    MemberCtx ** ctx 
    )
    +
    + +

    Creates a new member context.

    +

    Must be called to create the member context that is used by other "Member" APIs.

    +

    Allocates memory for the context, then initializes it.

    +

    EpidMemberDelete() must be called to safely release the member context.

    +
    Parameters
    + + + + + + + +
    [in]pub_keyThe group certificate.
    [in]priv_keyThe member private key.
    [in]precompOptional pre-computed data. If NULL the value is computed internally and is readable using EpidMemberWritePrecomp().
    [in]rnd_funcRandom number generator.
    [in]rnd_paramPass through context data for rnd_func.
    [out]ctxNewly constructed member context.
    +
    +
    +
    Returns
    EpidStatus
    +
    Warning
    For security rnd_func should be a cryptographically secure random number generator.
    +
    Note
    If the result is not kEpidNoErr the content of ctx is undefined.
    +
    See also
    EpidMemberDelete
    +
    +EpidMemberWritePrecomp
    + +
    +
    + +
    +
    + + + + + + + + +
    void EpidMemberDelete (MemberCtx ** ctx)
    +
    + +

    Deletes an existing member context.

    +

    Must be called to safely release a member context created using EpidMemberCreate().

    +

    De-initializes the context, frees memory used by the context, and sets the context pointer to NULL.

    +
    Parameters
    + + +
    [in,out]ctxThe member context. Can be NULL.
    +
    +
    +
    See also
    EpidMemberCreate
    + +
    +
    + +
    +
    + + + + + + + + + + + + + + + + + + +
    EpidStatus EpidMemberSetHashAlg (MemberCtxctx,
    HashAlg hash_alg 
    )
    +
    + +

    Sets the hash algorithm to be used by a member.

    +
    Parameters
    + + + +
    [in]ctxThe member context.
    [in]hash_algThe hash algorithm to use.
    +
    +
    +
    Returns
    EpidStatus
    +
    Note
    If the result is not kEpidNoErr, the hash algorithm used by the member is undefined.
    +
    See also
    EpidMemberCreate
    +
    +HashAlg
    + +
    +
    + +
    +
    + + + + + + + + + + + + + + + + + + +
    EpidStatus EpidMemberWritePrecomp (MemberCtx const * ctx,
    MemberPrecompprecomp 
    )
    +
    + +

    Serializes the pre-computed member settings.

    +
    Parameters
    + + + +
    [in]ctxThe member context.
    [out]precompThe Serialized pre-computed member settings.
    +
    +
    +
    Returns
    EpidStatus
    +
    Note
    If the result is not kEpidNoErr, the content of precomp is undefined.
    + +
    +
    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    EpidStatus EpidNrProve (MemberCtx const * ctx,
    void const * msg,
    size_t msg_len,
    BasicSignature const * sig,
    SigRlEntry const * sigrl_entry,
    NrProofproof 
    )
    +
    + +

    Calculates a non-revoked proof for a single signature based revocation list entry.

    +

    Used in constrained environments where, due to limited memory, it may not be possible to process through a large and potentially unbounded revocation list.

    +
    Parameters
    + + + + + + + +
    [in]ctxThe member context.
    [in]msgThe message.
    [in]msg_lenThe length of message in bytes.
    [in]sigThe basic signature.
    [in]sigrl_entryThe signature based revocation list entry.
    [out]proofThe generated non-revoked proof.
    +
    +
    +
    Returns
    EpidStatus
    +
    Note
    This function should be used in conjunction with EpidSignBasic().
    +
    +If the result is not kEpidNoErr, the content of proof is undefined.
    +
    See also
    EpidMemberCreate
    +
    +EpidSignBasic
    + +
    +
    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    EpidStatus EpidRegisterBaseName (MemberCtxctx,
    void const * basename,
    size_t basename_len 
    )
    +
    + +

    Registers a basename with a member.

    +

    To prevent loss of privacy, the member keeps a list of basenames (corresponding to authorized verifiers). The member signs a message with a basename only if the basename is in the member's basename list.

    +
    Warning
    The use of a name-based signature creates a platform unique pseudonymous identifier. Because it reduces the member's privacy, the user should be notified when it is used and should have control over its use.
    +
    Parameters
    + + + + +
    [in]ctxThe member context.
    [in]basenameThe basename.
    [in]basename_lenLength of the basename.
    +
    +
    +
    Returns
    EpidStatus
    +
    Return values
    + + +
    kEpidDuplicateErrThe basename was already registered.
    +
    +
    +
    Note
    If the result is not kEpidNoErr or kEpidDuplicateErr it is undefined if the basename is registered.
    + +
    +
    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    EpidStatus EpidRequestJoin (GroupPubKey const * pub_key,
    IssuerNonce const * ni,
    FpElemStr const * f,
    BitSupplier rnd_func,
    void * rnd_param,
    HashAlg hash_alg,
    JoinRequestjoin_request 
    )
    +
    + +

    Creates a request to join a group.

    +

    The created request is part of the interaction with an issuer needed to join a group. This interaction with the issuer is outside the scope of this API.

    +
    Parameters
    + + + + + + + + +
    [in]pub_keyThe group certificate of group to join.
    [in]niThe nonce chosen by issuer as part of join protocol.
    [in]fA randomly selected integer in [1, p-1].
    [in]rnd_funcRandom number generator.
    [in]rnd_paramPass through context data for rnd_func.
    [in]hash_algThe hash algorithm to be used.
    [out]join_requestThe join request.
    +
    +
    +
    Returns
    EpidStatus
    +
    Warning
    For security rnd_func should be a cryptographically secure random number generator.
    +
    Note
    The default hash algorithm in Member is SHA-512. This is the recommended option if you do not override the hash algorithm elsewhere.
    +
    +If the result is not kEpidNoErr, the content of join_request is undefined.
    +
    See also
    HashAlg
    + +
    +
    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    EpidStatus EpidSign (MemberCtx const * ctx,
    void const * msg,
    size_t msg_len,
    void const * basename,
    size_t basename_len,
    SigRl const * sig_rl,
    size_t sig_rl_size,
    EpidSignaturesig,
    size_t sig_len 
    )
    +
    + +

    Writes an Intel(R) EPID signature.

    +
    Parameters
    + + + + + + + + + + +
    [in]ctxThe member context.
    [in]msgThe message to sign.
    [in]msg_lenThe length in bytes of message.
    [in]basenameOptional basename. If basename is NULL a random basename is used. Signatures generated using random basenames are anonymous. Signatures generated using the same basename are linkable by the verifier. If a basename is provided, it must already be registered, or kEpidBadArgErr is returned.
    [in]basename_lenThe size of basename in bytes. Must be 0 basename is NULL.
    [in]sig_rlThe signature based revocation list.
    [in]sig_rl_sizeThe size in bytes of the signature based revocation list.
    [out]sigThe generated signature
    [in]sig_lenThe size of signature in bytes. Must be equal to value returned by EpidGetSigSize().
    +
    +
    +
    Returns
    EpidStatus
    +
    Note
    If the result is not kEpidNoErr the content of sig is undefined.
    +
    See also
    EpidMemberCreate
    +
    +EpidMemberSetHashAlg
    +
    +EpidGetSigSize
    + +
    +
    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    EpidStatus EpidSignBasic (MemberCtx const * ctx,
    void const * msg,
    size_t msg_len,
    void const * basename,
    size_t basename_len,
    BasicSignaturesig 
    )
    +
    + +

    Creates a basic signature for use in constrained environment.

    +

    Used in constrained environments where, due to limited memory, it may not be possible to process through a large and potentially unbounded revocation list.

    +
    Parameters
    + + + + + + + +
    [in]ctxThe member context.
    [in]msgThe message.
    [in]msg_lenThe length of message in bytes.
    [in]basenameOptional basename. If basename is NULL a random basename is used. Signatures generated using random basenames are anonymous. Signatures generated using the same basename are linkable by the verifier. If a basename is provided it must already be registered or kEpidBadArgErr is returned.
    [in]basename_lenThe size of basename in bytes. Must be 0 basename is NULL.
    [out]sigThe generated basic signature
    +
    +
    +
    Returns
    EpidStatus
    +
    Note
    This function should be used in conjunction with EpidNrProve()
    +
    +If the result is not kEpidNoErr the content of sig, is undefined.
    +
    See also
    EpidMemberCreate
    +
    +EpidNrProve
    + +
    +
    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    EpidStatus EpidWritePreSigs (MemberCtxctx,
    PreComputedSignaturepresigs,
    size_t number_presigs 
    )
    +
    + +

    Serializes pre-computed signatures from the member's pool.

    +

    Removes requested number of pre-computed signatures from member's pool and stores them in presigs array. Use EpidAddPreSigs to add pre-computed signatures to the pool.

    +
    Parameters
    + + + + +
    [in]ctxThe member context.
    [out]presigsAn existing buffer of pre-computed signatures.
    [in]number_presigsNumber of pre-computed signatures to read. Number_presigs must not be greater than the value returned by EpidGetNumPreSigs.
    +
    +
    +
    Returns
    EpidStatus
    +
    Note
    If the result is not kEpidNoErr the state of the pre-computed signature pool, and of presigs, is undefined.
    +
    See also
    EpidMemberCreate
    +
    +EpidGetNumPreSigs
    +
    +EpidAddPreSigs
    + +
    +
    +
    +
    + + + + + diff --git a/external/epid-sdk-3.0.0/doc/html/group___epid_member_module.js b/external/epid-sdk-3.0.0/doc/html/group___epid_member_module.js new file mode 100644 index 00000000..cb9d1c77 --- /dev/null +++ b/external/epid-sdk-3.0.0/doc/html/group___epid_member_module.js @@ -0,0 +1,38 @@ +var group___epid_member_module = +[ + [ "MemberPrecomp", "struct_member_precomp.html", [ + [ "e12", "struct_member_precomp.html#a55e5c4b25c8f0f426969a8d745260fe5", null ], + [ "e22", "struct_member_precomp.html#a4e7412969bed3964f813b093b948e7b4", null ], + [ "e2w", "struct_member_precomp.html#a879d5a7b0c30088b23f6e5c5fc62f834", null ], + [ "ea2", "struct_member_precomp.html#a573551f6494e372f44fd3bdf5b02aeda", null ] + ] ], + [ "PreComputedSignature", "struct_pre_computed_signature.html", [ + [ "a", "struct_pre_computed_signature.html#af23f3f9693857a33fe8564644612ea37", null ], + [ "B", "struct_pre_computed_signature.html#a9cc2eb61572a1aca9e6bc3d5e6f4c1fe", null ], + [ "b", "struct_pre_computed_signature.html#a666710432d9d54ca896647a976892c4f", null ], + [ "K", "struct_pre_computed_signature.html#a2a4eaffe2717bd9c8c360599612adbe6", null ], + [ "R1", "struct_pre_computed_signature.html#a72be597624957e3d668c95ff6f445f94", null ], + [ "R2", "struct_pre_computed_signature.html#a79f06fb57842597372e00dd34c1a804a", null ], + [ "ra", "struct_pre_computed_signature.html#a54462643b8a2b4f2741bf8d2e6909d11", null ], + [ "rb", "struct_pre_computed_signature.html#a6a1db672c609943fe7af84320dc68ba3", null ], + [ "rf", "struct_pre_computed_signature.html#ac244bd559a96812bcee7671abc299b66", null ], + [ "rx", "struct_pre_computed_signature.html#acd0674d5b5e96244645e9abef7bdbddc", null ], + [ "T", "struct_pre_computed_signature.html#a73471643dc757115701833ca2e831a72", null ] + ] ], + [ "MemberCtx", "group___epid_member_module.html#gadfb10d5dfdadb0694792c7b06718e817", null ], + [ "EpidAddPreSigs", "group___epid_member_module.html#gad2e3de5c6ce641a318f8a46b61e75236", null ], + [ "EpidDecompressPrivKey", "group___epid_member_module.html#gaf8cd05388f017486f14da2ee48d067ef", null ], + [ "EpidGetNumPreSigs", "group___epid_member_module.html#gad78ca056dfea2565bbacd5734d9dc075", null ], + [ "EpidGetSigSize", "group___epid_member_module.html#ga76e535722467af7c16809b5b521e0000", null ], + [ "EpidIsPrivKeyInGroup", "group___epid_member_module.html#ga8e3f201d1e9dc668659e08a3bdf543b6", null ], + [ "EpidMemberCreate", "group___epid_member_module.html#ga561c4d544a78ee1bf59c3f4f919aa7bb", null ], + [ "EpidMemberDelete", "group___epid_member_module.html#ga3824589c683c5e0e59d483462fce65d6", null ], + [ "EpidMemberSetHashAlg", "group___epid_member_module.html#ga9998eb454838ff5d232ff22ecbab31bf", null ], + [ "EpidMemberWritePrecomp", "group___epid_member_module.html#ga5c35798d62cf81c4ca62b22c38809721", null ], + [ "EpidNrProve", "group___epid_member_module.html#gac8e2c6c1fead8030785a40427905a2cc", null ], + [ "EpidRegisterBaseName", "group___epid_member_module.html#gad92d3c3266ae1833ffb1dba9ad76035d", null ], + [ "EpidRequestJoin", "group___epid_member_module.html#ga13dd0d72be9babf8194d472d7712a361", null ], + [ "EpidSign", "group___epid_member_module.html#ga759155a719254f734157722716dac640", null ], + [ "EpidSignBasic", "group___epid_member_module.html#gae04a250d5981fcf9bd6f9f57e0468faa", null ], + [ "EpidWritePreSigs", "group___epid_member_module.html#ga9e12c7cec8d0c4e07b12c0e26a278c9d", null ] +]; \ No newline at end of file diff --git a/external/epid-sdk-3.0.0/doc/html/group___epid_module.html b/external/epid-sdk-3.0.0/doc/html/group___epid_module.html new file mode 100644 index 00000000..300aed1a --- /dev/null +++ b/external/epid-sdk-3.0.0/doc/html/group___epid_module.html @@ -0,0 +1,97 @@ + + + + + + + +Intel® Enhanced Privacy ID SDK: epid + + + + + + + + + + + + +
    +
    + + + + + + +
    + +
    +
    + + +
    +
    + +
    +
    +
    + +
    +
    + +
    +
    epid
    +
    +
    + +

    Core Intel® EPID functionality. +More...

    + + + + + + + + + + + +

    +Modules

     common
     Common code shared between core sub-components.
     
     member
     Member functionality.
     
     verifier
     Verifier functionality.
     
    +

    Detailed Description

    +

    Core Intel® EPID functionality.

    +

    Contains core functionality used to provide or implement APIs in the Intel(R) EPID SDK.

    +
    +
    + + + + + diff --git a/external/epid-sdk-3.0.0/doc/html/group___epid_module.js b/external/epid-sdk-3.0.0/doc/html/group___epid_module.js new file mode 100644 index 00000000..892eddf4 --- /dev/null +++ b/external/epid-sdk-3.0.0/doc/html/group___epid_module.js @@ -0,0 +1,6 @@ +var group___epid_module = +[ + [ "common", "group___epid_common.html", "group___epid_common" ], + [ "member", "group___epid_member_module.html", "group___epid_member_module" ], + [ "verifier", "group___epid_verifier_module.html", "group___epid_verifier_module" ] +]; \ No newline at end of file diff --git a/external/epid-sdk-3.0.0/doc/html/group___epid_print.html b/external/epid-sdk-3.0.0/doc/html/group___epid_print.html new file mode 100644 index 00000000..0e1a1b33 --- /dev/null +++ b/external/epid-sdk-3.0.0/doc/html/group___epid_print.html @@ -0,0 +1,664 @@ + + + + + + + +Intel® Enhanced Privacy ID SDK: print_utils + + + + + + + + + + + + +
    +
    + + + + + + +
    + +
    +
    + + +
    +
    + +
    +
    +
    + +
    +
    + +
    +
    print_utils
    +
    +
    + +

    Debug print routines. +More...

    + + + + + +

    +Enumerations

    enum  PrintUtilFormat { kPrintUtilUnannotated = 0, +kPrintUtilAnnotated = 1, +kPrintUtilFormatCount = 2 + }
     Print format. More...
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    void PrintBigNum (BigNum const *big_num, char const *var_name)
     Prints BigNum. More...
     
    void PrintFfElement (FiniteField const *ff, FfElement const *ff_element, char const *var_name, PrintUtilFormat format)
     Prints finite field element. More...
     
    void PrintEcPoint (EcGroup const *g, EcPoint const *ec_point, char const *var_name, PrintUtilFormat format)
     Prints elliptic curve group element. More...
     
    void PrintBigNumStr (BigNumStr const *big_num_str, char const *var_name)
     Prints serialized BigNum. More...
     
    void PrintFpElemStr (FpElemStr const *fp_elem_str, char const *var_name)
     Prints serialized Fp element. More...
     
    void PrintFqElemStr (FqElemStr const *fq_elem_str, char const *var_name)
     Prints serialized Fq element. More...
     
    void PrintFq2ElemStr (Fq2ElemStr const *fq2_elem_str, char const *var_name, PrintUtilFormat format)
     Prints serialized Fq2 element. More...
     
    void PrintFq6ElemStr (Fq6ElemStr const *fq6_elem_str, char const *var_name, PrintUtilFormat format)
     Prints serialized Fq6 element. More...
     
    void PrintFq12ElemStr (Fq12ElemStr const *fq12_elem_str, char const *var_name, PrintUtilFormat format)
     Prints serialized Fq12 element. More...
     
    void PrintG1ElemStr (G1ElemStr const *g1_elem_str, char const *var_name, PrintUtilFormat format)
     Prints serialized G1 element. More...
     
    void PrintG2ElemStr (G2ElemStr const *g2_elem_str, char const *var_name, PrintUtilFormat format)
     Prints serialized G2 element. More...
     
    void PrintGtElemStr (GtElemStr const *gt_elem_str, char const *var_name, PrintUtilFormat format)
     Prints serialized Gt element. More...
     
    +

    Detailed Description

    +

    Debug print routines.

    +

    Defines an API to print formatted versions of the types used for mathematical operations.

    +

    If the symbol EPID_ENABLE_DEBUG_PRINT is not defined, all calls to the functions in this module are ignored.

    +

    Enumeration Type Documentation

    + +
    +
    + + + + +
    enum PrintUtilFormat
    +
    + +

    Print format.

    + + + + +
    Enumerator
    kPrintUtilUnannotated  +

    Unannotated output format.

    +
    kPrintUtilAnnotated  +

    Annotated output format.

    +
    kPrintUtilFormatCount  +

    Count of print formats.

    +
    + +
    +
    +

    Function Documentation

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void PrintBigNum (BigNum const * big_num,
    char const * var_name 
    )
    +
    + +

    Prints BigNum.

    +

    Macro EPID_ENABLE_DEBUG_PRINT needs to be defined in order to activate this routine; otherwise, it prints nothing.

    +
    Parameters
    + + + +
    [in]big_numBigNum to be printed
    [in]var_nameResult variable name
    +
    +
    + +
    +
    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void PrintBigNumStr (BigNumStr const * big_num_str,
    char const * var_name 
    )
    +
    + +

    Prints serialized BigNum.

    +

    Macro EPID_ENABLE_DEBUG_PRINT needs to be defined in order to activate this routine; otherwise, it prints nothing.

    +
    Parameters
    + + + +
    [in]big_num_strSerialized BigNum to be printed
    [in]var_nameResult variable name
    +
    +
    + +
    +
    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void PrintEcPoint (EcGroup const * g,
    EcPoint const * ec_point,
    char const * var_name,
    PrintUtilFormat format 
    )
    +
    + +

    Prints elliptic curve group element.

    +

    Macro EPID_ENABLE_DEBUG_PRINT needs to be defined in order to activate this routine; otherwise, it prints nothing.

    +
    Parameters
    + + + + + +
    [in]gElliptic curve group that element to be printed belongs to
    [in]ec_pointElliptic curve group element to be printed
    [in]var_nameResult variable name
    [in]formatOutput format
    +
    +
    + +
    +
    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void PrintFfElement (FiniteField const * ff,
    FfElement const * ff_element,
    char const * var_name,
    PrintUtilFormat format 
    )
    +
    + +

    Prints finite field element.

    +

    Macro EPID_ENABLE_DEBUG_PRINT needs to be defined in order to activate this routine; otherwise, it prints nothing.

    +
    Parameters
    + + + + + +
    [in]ffFinite field that element to be printed belongs to
    [in]ff_elementFinite field element to be printed
    [in]var_nameResult variable name
    [in]formatOutput format
    +
    +
    + +
    +
    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void PrintFpElemStr (FpElemStr const * fp_elem_str,
    char const * var_name 
    )
    +
    + +

    Prints serialized Fp element.

    +

    Macro EPID_ENABLE_DEBUG_PRINT needs to be defined in order to activate this routine; otherwise, it prints nothing.

    +
    Parameters
    + + + +
    [in]fp_elem_strSerialized Fp element to be printed
    [in]var_nameResult variable name
    +
    +
    + +
    +
    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void PrintFq12ElemStr (Fq12ElemStr const * fq12_elem_str,
    char const * var_name,
    PrintUtilFormat format 
    )
    +
    + +

    Prints serialized Fq12 element.

    +

    Macro EPID_ENABLE_DEBUG_PRINT needs to be defined in order to activate this routine; otherwise, it prints nothing.

    +
    Parameters
    + + + + +
    [in]fq12_elem_strSerialized Intel(R) EPID Fq12 element to be printed
    [in]var_nameResult variable name
    [in]formatOutput format
    +
    +
    + +
    +
    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void PrintFq2ElemStr (Fq2ElemStr const * fq2_elem_str,
    char const * var_name,
    PrintUtilFormat format 
    )
    +
    + +

    Prints serialized Fq2 element.

    +

    Macro EPID_ENABLE_DEBUG_PRINT needs to be defined in order to activate this routine; otherwise, it prints nothing.

    +
    Parameters
    + + + + +
    [in]fq2_elem_strSerialized Fq2 element to be printed
    [in]var_nameResult variable name
    [in]formatOutput format
    +
    +
    + +
    +
    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void PrintFq6ElemStr (Fq6ElemStr const * fq6_elem_str,
    char const * var_name,
    PrintUtilFormat format 
    )
    +
    + +

    Prints serialized Fq6 element.

    +

    Macro EPID_ENABLE_DEBUG_PRINT needs to be defined in order to activate this routine; otherwise, it prints nothing.

    +
    Parameters
    + + + + +
    [in]fq6_elem_strSerialized Fq6 element to be printed
    [in]var_nameResult variable name
    [in]formatOutput format
    +
    +
    + +
    +
    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void PrintFqElemStr (FqElemStr const * fq_elem_str,
    char const * var_name 
    )
    +
    + +

    Prints serialized Fq element.

    +

    Macro EPID_ENABLE_DEBUG_PRINT needs to be defined in order to activate this routine; otherwise, it prints nothing.

    +
    Parameters
    + + + +
    [in]fq_elem_strSerialized Fq element to be printed
    [in]var_nameResult variable name
    +
    +
    + +
    +
    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void PrintG1ElemStr (G1ElemStr const * g1_elem_str,
    char const * var_name,
    PrintUtilFormat format 
    )
    +
    + +

    Prints serialized G1 element.

    +

    Macro EPID_ENABLE_DEBUG_PRINT needs to be defined in order to activate this routine; otherwise, it prints nothing.

    +
    Parameters
    + + + + +
    [in]g1_elem_strSerialized G1 element to be printed
    [in]var_nameResult variable name
    [in]formatOutput format
    +
    +
    + +
    +
    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void PrintG2ElemStr (G2ElemStr const * g2_elem_str,
    char const * var_name,
    PrintUtilFormat format 
    )
    +
    + +

    Prints serialized G2 element.

    +

    Macro EPID_ENABLE_DEBUG_PRINT needs to be defined in order to activate this routine; otherwise, it prints nothing.

    +
    Parameters
    + + + + +
    [in]g2_elem_strSerialized G2 element to be printed
    [in]var_nameResult variable name
    [in]formatOutput format
    +
    +
    + +
    +
    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void PrintGtElemStr (GtElemStr const * gt_elem_str,
    char const * var_name,
    PrintUtilFormat format 
    )
    +
    + +

    Prints serialized Gt element.

    +

    Macro EPID_ENABLE_DEBUG_PRINT needs to be defined in order to activate this routine; otherwise, it prints nothing.

    +
    Parameters
    + + + + +
    [in]gt_elem_strSerialized G2 element to be printed
    [in]var_nameResult variable name
    [in]formatOutput format
    +
    +
    + +
    +
    +
    +
    + + + + + diff --git a/external/epid-sdk-3.0.0/doc/html/group___epid_print.js b/external/epid-sdk-3.0.0/doc/html/group___epid_print.js new file mode 100644 index 00000000..d1b92d4b --- /dev/null +++ b/external/epid-sdk-3.0.0/doc/html/group___epid_print.js @@ -0,0 +1,20 @@ +var group___epid_print = +[ + [ "PrintUtilFormat", "group___epid_print.html#ga3e215d157eb205ad596bb84bce694a83", [ + [ "kPrintUtilUnannotated", "group___epid_print.html#gga3e215d157eb205ad596bb84bce694a83aeb475b793d8d357087d7fcc74702ffae", null ], + [ "kPrintUtilAnnotated", "group___epid_print.html#gga3e215d157eb205ad596bb84bce694a83ae2d5345c14f57fc992a613003c3c443d", null ], + [ "kPrintUtilFormatCount", "group___epid_print.html#gga3e215d157eb205ad596bb84bce694a83ade23610605d0ba7dd48db5060e28995a", null ] + ] ], + [ "PrintBigNum", "group___epid_print.html#ga45a933b44fc1dfe926e3af89c198070a", null ], + [ "PrintBigNumStr", "group___epid_print.html#ga5f249c594ed12e4a9b11b7bc101da85d", null ], + [ "PrintEcPoint", "group___epid_print.html#ga0d6377d9c1651d0101ec6b61feaa78ca", null ], + [ "PrintFfElement", "group___epid_print.html#gaa3b1cbbfc6f78562658953113e5798cf", null ], + [ "PrintFpElemStr", "group___epid_print.html#gae553c3a156a0e4968b89635ab0757580", null ], + [ "PrintFq12ElemStr", "group___epid_print.html#gaf185fe3df270cd8b4a2969bf3cfc5d5f", null ], + [ "PrintFq2ElemStr", "group___epid_print.html#ga883a834ab1703365bb0bca4abd3104de", null ], + [ "PrintFq6ElemStr", "group___epid_print.html#ga3f2961ef6b4c44a6205d422d8a293476", null ], + [ "PrintFqElemStr", "group___epid_print.html#ga6c9fea48fa0477f4a98abb50f891a5e4", null ], + [ "PrintG1ElemStr", "group___epid_print.html#ga87168a3ce5306f9839b8e8d6c9a5f84f", null ], + [ "PrintG2ElemStr", "group___epid_print.html#gab76a4cf0385dc4a76bb56ee9f0e3e87a", null ], + [ "PrintGtElemStr", "group___epid_print.html#ga138cd388247a58680d4701d59d6976d2", null ] +]; \ No newline at end of file diff --git a/external/epid-sdk-3.0.0/doc/html/group___epid_types.html b/external/epid-sdk-3.0.0/doc/html/group___epid_types.html new file mode 100644 index 00000000..6a65d8e1 --- /dev/null +++ b/external/epid-sdk-3.0.0/doc/html/group___epid_types.html @@ -0,0 +1,277 @@ + + + + + + + +Intel® Enhanced Privacy ID SDK: types + + + + + + + + + + + + +
    +
    + + + + + + +
    + +
    +
    + + +
    +
    + +
    +
    +
    + +
    + +
    + +

    SDK data types. +More...

    + + + + + +

    +Modules

     EPID 1.1 specific types
     Intel(R) EPID 1.1 specific data types.
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Data Structures

    struct  OctStr8
     8 bit octet string More...
     
    struct  OctStr16
     16 bit octet string More...
     
    struct  OctStr32
     32 bit octet string More...
     
    struct  OctStr64
     64 bit octet string More...
     
    struct  OctStr128
     128 bit octet string More...
     
    struct  OctStr256
     256 bit octet string More...
     
    struct  OctStr512
     512 bit octet string More...
     
    struct  BigNumStr
     Serialized BigNum. More...
     
    struct  FpElemStr
     a number in [0, p-1] More...
     
    struct  FqElemStr
     a number in [0, q-1] More...
     
    struct  G1ElemStr
     Serialized G1 element. More...
     
    struct  G2ElemStr
     Serialized G2 element. More...
     
    struct  GtElemStr
     Serialized GT element. More...
     
    struct  Epid2Params
     Intel(R) EPID 2.0 Parameters. More...
     
    struct  GroupPubKey
     Intel(R) EPID 2.0 group public key. More...
     
    struct  IPrivKey
     Intel(R) EPID 2.0 issuing private key. More...
     
    struct  PrivKey
     Intel(R) EPID 2.0 private key. More...
     
    struct  CompressedPrivKey
     Compressed private key. More...
     
    struct  MembershipCredential
     Membership credential. More...
     
    struct  JoinRequest
     Join request. More...
     
    struct  BasicSignature
     Intel(R) EPID 2.0 basic signature. More...
     
    struct  NrProof
     non-revoked Proof. More...
     
    struct  EpidSignature
     Intel(R) EPID 2.0 Signature. More...
     
    struct  PrivRl
     private-key based revocation list. More...
     
    struct  SigRlEntry
     entry in SigRL (B,K) More...
     
    struct  SigRl
     signature based revocation list More...
     
    struct  GroupRl
     group revocation list More...
     
    struct  VerifierRl
     
    struct  Fq2ElemStr
     Serialized Fq2 element. More...
     
    struct  Fq6ElemStr
     Serialized Fq2^3 element. More...
     
    struct  Fq12ElemStr
     Serialized Fq2^3^2 element. More...
     
    struct  EcdsaSignature
     ECDSA Signature using NIST 256-bit curve secp256r1. More...
     
    struct  EcdsaPublicKey
     ECDSA Public Key. More...
     
    struct  EcdsaPrivateKey
     ECDSA Private Key. More...
     
    + + + + + + + + + + + + + +

    +Typedefs

    +typedef OctStr128 GroupId
     group ID
     
    +typedef OctStr256 Seed
     256 bit seed derived from fuse key
     
    +typedef OctStr256 IssuerNonce
     256 bit nonce chosen by issuer
     
    +typedef G1ElemStr ReKeySeed
     element to store seed values for later rekey
     
    + + + + +

    +Enumerations

    enum  HashAlg {
    +  kInvalidHashAlg = -1, +kSha256 = 0, +kSha384 = 1, +kSha512 = 2, +
    +  kSha512_256 = 3, +kSha3_256 = 4, +kSha3_384 = 5, +kSha3_512 = 6 +
    + }
     Recognized hash algorithms. More...
     
    +

    Detailed Description

    +

    SDK data types.

    +

    Defines serialized data types used by the SDK.

    +

    Most of the types defined here are fixed size binary buffers of various sizes that are semantically mapped to the types of various inputs to the Intel(R) EPID APIs.

    +

    For example GtElemStr is a 384 byte buffer that represents a serialized value that is compatible with a FfElement belonging to the FiniteField GT.

    +

    Enumeration Type Documentation

    + +
    +
    + + + + +
    enum HashAlg
    +
    + +

    Recognized hash algorithms.

    + + + + + + + + + +
    Enumerator
    kInvalidHashAlg  +

    Invalid.

    +
    kSha256  +

    SHA-256.

    +
    kSha384  +

    SHA-384.

    +
    kSha512  +

    SHA-512.

    +
    kSha512_256  +

    SHA-512/256.

    +
    kSha3_256  +

    Reserved for SHA3/256.

    +
    kSha3_384  +

    Reserved for SHA3/384.

    +
    kSha3_512  +

    Reserved for SHA3/512.

    +
    + +
    +
    +
    +
    + + + + + diff --git a/external/epid-sdk-3.0.0/doc/html/group___epid_types.js b/external/epid-sdk-3.0.0/doc/html/group___epid_types.js new file mode 100644 index 00000000..e83078b2 --- /dev/null +++ b/external/epid-sdk-3.0.0/doc/html/group___epid_types.js @@ -0,0 +1,171 @@ +var group___epid_types = +[ + [ "EPID 1.1 specific types", "group___epid11_types.html", "group___epid11_types" ], + [ "OctStr8", "struct_oct_str8.html", [ + [ "data", "struct_oct_str8.html#a5e6c56fda48c88b419e621b464b03bef", null ] + ] ], + [ "OctStr16", "struct_oct_str16.html", [ + [ "data", "struct_oct_str16.html#a86ed6671693a3f60ec4ff7de2c1206c3", null ] + ] ], + [ "OctStr32", "struct_oct_str32.html", [ + [ "data", "struct_oct_str32.html#a5588a7e70f3d73f6ce58b567a9f5c5c8", null ] + ] ], + [ "OctStr64", "struct_oct_str64.html", [ + [ "data", "struct_oct_str64.html#a0e107d78192a5ae0b48ed9e5c4eab0fc", null ] + ] ], + [ "OctStr128", "struct_oct_str128.html", [ + [ "data", "struct_oct_str128.html#a7482aa9b0b580fdd50bd65419d52d4b9", null ] + ] ], + [ "OctStr256", "struct_oct_str256.html", [ + [ "data", "struct_oct_str256.html#a359781bb84f5717a16094583a00ef14e", null ] + ] ], + [ "OctStr512", "struct_oct_str512.html", [ + [ "data", "struct_oct_str512.html#abd4d1b97fe49321571da86de1aeac653", null ] + ] ], + [ "BigNumStr", "struct_big_num_str.html", [ + [ "data", "struct_big_num_str.html#a442dcf33889b4f85c5b1228d2c8e6838", null ] + ] ], + [ "FpElemStr", "struct_fp_elem_str.html", [ + [ "data", "struct_fp_elem_str.html#a5ddb96a5567750f2834335851c906c45", null ] + ] ], + [ "FqElemStr", "struct_fq_elem_str.html", [ + [ "data", "struct_fq_elem_str.html#aac1a876b51a8d2c6d1510e4df2fd3f14", null ] + ] ], + [ "G1ElemStr", "struct_g1_elem_str.html", [ + [ "x", "struct_g1_elem_str.html#a3b0e658d6e5697763ad9c633c11d4ec4", null ], + [ "y", "struct_g1_elem_str.html#a8f2455ca314e885ea180dadf84bf27c3", null ] + ] ], + [ "G2ElemStr", "struct_g2_elem_str.html", [ + [ "x", "struct_g2_elem_str.html#a145ec5b20a6f4f00b080e11c8680afc3", null ], + [ "y", "struct_g2_elem_str.html#a43141b2458aecceed8ee2748270f7908", null ] + ] ], + [ "GtElemStr", "struct_gt_elem_str.html", [ + [ "x", "struct_gt_elem_str.html#aeaeb0e9e1c6efd378a475eb9a6c42132", null ] + ] ], + [ "Epid2Params", "struct_epid2_params.html", [ + [ "b", "struct_epid2_params.html#a2f868edb49be49f645101ef5ebbbc551", null ], + [ "beta", "struct_epid2_params.html#ac2d7507c6f58c3451beacacb91b52695", null ], + [ "g1", "struct_epid2_params.html#a4c5195b4fa9393a07a121336202531ad", null ], + [ "g2", "struct_epid2_params.html#a609b0aac17fca34fe39bee29676a9618", null ], + [ "neg", "struct_epid2_params.html#af23f07fb0e1745c0ad14aceeaa946928", null ], + [ "p", "struct_epid2_params.html#ac0e0dad45b10927860cd5fa4f8101f08", null ], + [ "q", "struct_epid2_params.html#a023603228fed2854ddae2e228938940f", null ], + [ "t", "struct_epid2_params.html#a200a0cba1c9e4ad512bece23f2461a5f", null ], + [ "xi", "struct_epid2_params.html#ae1d8f5d6036a82064e91bc137b278e74", null ] + ] ], + [ "GroupPubKey", "struct_group_pub_key.html", [ + [ "gid", "struct_group_pub_key.html#ae8e77ab4d5eb3c8e566c24a64cce56ee", null ], + [ "h1", "struct_group_pub_key.html#a8c22c758ea186f95e3bf4b2ef8451da5", null ], + [ "h2", "struct_group_pub_key.html#a2a4320ec99fd1a15df412fbf2a8d49f1", null ], + [ "w", "struct_group_pub_key.html#a86be439104fb60b324784baf24a943f9", null ] + ] ], + [ "IPrivKey", "struct_i_priv_key.html", [ + [ "gamma", "struct_i_priv_key.html#a6d484175317aef09fb959c3ca55fc70a", null ], + [ "gid", "struct_i_priv_key.html#ad400a4237b6d50855538fd40580eb1bb", null ] + ] ], + [ "PrivKey", "struct_priv_key.html", [ + [ "A", "struct_priv_key.html#a266c7e369b8b868ef5755e9cd3c0c849", null ], + [ "f", "struct_priv_key.html#ad7ee0392a583edd2e287cf8c1f9066ba", null ], + [ "gid", "struct_priv_key.html#ab416dcb4366427c24b44c2a02e4ae7c8", null ], + [ "x", "struct_priv_key.html#aa805f9e124f05bdb733c85cb93614cbd", null ] + ] ], + [ "CompressedPrivKey", "struct_compressed_priv_key.html", [ + [ "ax", "struct_compressed_priv_key.html#a0b0535f0567eb0e48f799d27991d0f66", null ], + [ "gid", "struct_compressed_priv_key.html#ac6689899f1d9a6a8c5e4915563679840", null ], + [ "seed", "struct_compressed_priv_key.html#a54b9af7699f517bbaef3d52d03e3fed8", null ] + ] ], + [ "MembershipCredential", "struct_membership_credential.html", [ + [ "A", "struct_membership_credential.html#a6d38ac3a9c5417833b8adb9b22bc9dc8", null ], + [ "gid", "struct_membership_credential.html#afbff64ec55888c7e2a658eabb5e16671", null ], + [ "x", "struct_membership_credential.html#a2c5c0d22999d6917fea5ad6618883bcf", null ] + ] ], + [ "JoinRequest", "struct_join_request.html", [ + [ "c", "struct_join_request.html#a55e30a274e83b808db6fbab5ae6c6cb8", null ], + [ "F", "struct_join_request.html#a005651506fd4511e8a3537f6c3634532", null ], + [ "s", "struct_join_request.html#a73bf8989df5f90eb3d06e7a42ad74d1d", null ] + ] ], + [ "BasicSignature", "struct_basic_signature.html", [ + [ "B", "struct_basic_signature.html#ae90cb6af66b010ae39913f033c1e65ac", null ], + [ "c", "struct_basic_signature.html#a4daa94db5068db3f10960f3dd178d603", null ], + [ "K", "struct_basic_signature.html#a0078cc83ecf6c7e31f96b7d44aa60e21", null ], + [ "sa", "struct_basic_signature.html#a69115a4776d15b48411dd6c3a76d0f3d", null ], + [ "sb", "struct_basic_signature.html#a91daebc5b577688afeed2a7ee7913245", null ], + [ "sf", "struct_basic_signature.html#a79d8dec8c5da176e497abf22e4c43adb", null ], + [ "sx", "struct_basic_signature.html#a0e8ea6a2cd3af10e9b59d96d7d06bc69", null ], + [ "T", "struct_basic_signature.html#a730f74d85cfb4fa4089d43c87b97a624", null ] + ] ], + [ "NrProof", "struct_nr_proof.html", [ + [ "c", "struct_nr_proof.html#a0de1aa69acf3d93da34cf4a613b359a1", null ], + [ "smu", "struct_nr_proof.html#a717ec36a6c91acd01d9b642bb20fc178", null ], + [ "snu", "struct_nr_proof.html#ae2e9f22089793a4d44a0f7f5cdb78a0c", null ], + [ "T", "struct_nr_proof.html#ace535065bbf96502b893ac677dc8dcd3", null ] + ] ], + [ "EpidSignature", "struct_epid_signature.html", [ + [ "n2", "struct_epid_signature.html#a62a6b0ffcd5f68dd3d2786a58fe43017", null ], + [ "rl_ver", "struct_epid_signature.html#a4155f3f4f1223fc4ae50c94f5305def1", null ], + [ "sigma", "struct_epid_signature.html#a89d2e38223944310b6eeeadf6061a2dd", null ], + [ "sigma0", "struct_epid_signature.html#ab0fe5f98bff737fcfbfe0b4d658e83f2", null ] + ] ], + [ "PrivRl", "struct_priv_rl.html", [ + [ "f", "struct_priv_rl.html#a60d73f9ef5fc81f117b3abadf8c18466", null ], + [ "gid", "struct_priv_rl.html#af7317529b8e55476bd06b66ed8131d64", null ], + [ "n1", "struct_priv_rl.html#a6da9639ec4061689d1c30a58e0befd14", null ], + [ "version", "struct_priv_rl.html#a4c6b51cec760f7e81ca8635422ac6a50", null ] + ] ], + [ "SigRlEntry", "struct_sig_rl_entry.html", [ + [ "b", "struct_sig_rl_entry.html#ac6a47ff0d1b8ea1512e0ff14983ac5ce", null ], + [ "k", "struct_sig_rl_entry.html#a0dfeb058614e81878bfbf86ae3edac3c", null ] + ] ], + [ "SigRl", "struct_sig_rl.html", [ + [ "bk", "struct_sig_rl.html#ac23a919993d99d24a5150302f1778102", null ], + [ "gid", "struct_sig_rl.html#a12757d30fcccd310716433948e0b603e", null ], + [ "n2", "struct_sig_rl.html#a9dfb6b508db9051f4dc480a51d702af2", null ], + [ "version", "struct_sig_rl.html#ac9d4c343c539dba799e1f42eb38b351f", null ] + ] ], + [ "GroupRl", "struct_group_rl.html", [ + [ "gid", "struct_group_rl.html#a51022e172ab8b945efc69f1e63170107", null ], + [ "n3", "struct_group_rl.html#a9067f01c63cdefbc8e23c3cf67a10172", null ], + [ "version", "struct_group_rl.html#a69c41d99cdfc5b6ece7442f466f7ec3f", null ] + ] ], + [ "VerifierRl", "struct_verifier_rl.html", [ + [ "B", "struct_verifier_rl.html#a5d9a9265fffa96fd5f9260543eb08c68", null ], + [ "gid", "struct_verifier_rl.html#ab85c4666d16145ff16443e84468d2d7d", null ], + [ "K", "struct_verifier_rl.html#ac7d3dceab4772096bbbeb3fa735d18a9", null ], + [ "n4", "struct_verifier_rl.html#a1e3f84b873bccc0c882aa6432c42d2f7", null ], + [ "version", "struct_verifier_rl.html#afa44ab69ffff5a3508366aeb2131fdaa", null ] + ] ], + [ "Fq2ElemStr", "struct_fq2_elem_str.html", [ + [ "a", "struct_fq2_elem_str.html#ab1d253eb24ba30eaf516ac429daab915", null ] + ] ], + [ "Fq6ElemStr", "struct_fq6_elem_str.html", [ + [ "a", "struct_fq6_elem_str.html#a89d656e5c815b4a2382d11ef6932a7d2", null ] + ] ], + [ "Fq12ElemStr", "struct_fq12_elem_str.html", [ + [ "a", "struct_fq12_elem_str.html#a0520947335aaf52de90af1dec5bdd112", null ] + ] ], + [ "EcdsaSignature", "struct_ecdsa_signature.html", [ + [ "x", "struct_ecdsa_signature.html#a64b623605a55a267a36df18f29142d0d", null ], + [ "y", "struct_ecdsa_signature.html#a2efd6bf37b12f35135bf325fa491b029", null ] + ] ], + [ "EcdsaPublicKey", "struct_ecdsa_public_key.html", [ + [ "x", "struct_ecdsa_public_key.html#a37c51614faf022eec491b4de8f3a13e1", null ], + [ "y", "struct_ecdsa_public_key.html#a4503c4613386cbc78add1dc245c99284", null ] + ] ], + [ "EcdsaPrivateKey", "struct_ecdsa_private_key.html", [ + [ "data", "struct_ecdsa_private_key.html#a97efee9b4079f95d94a104f9a6d8c96d", null ] + ] ], + [ "GroupId", "group___epid_types.html#gada666b48d0cbc301985405fde896f1de", null ], + [ "IssuerNonce", "group___epid_types.html#ga55eb2193045bde31af3f551565126042", null ], + [ "ReKeySeed", "group___epid_types.html#ga54bd22670f2e348593db7ab631131d10", null ], + [ "Seed", "group___epid_types.html#ga888541b8148df69c634a92c64ed51317", null ], + [ "HashAlg", "group___epid_types.html#ga5e450438f6f9a5eacd0cf5ce354ec890", [ + [ "kInvalidHashAlg", "group___epid_types.html#gga5e450438f6f9a5eacd0cf5ce354ec890a68b2137c7946583a99f0dac2286523eb", null ], + [ "kSha256", "group___epid_types.html#gga5e450438f6f9a5eacd0cf5ce354ec890aefb89989305b5c34120b0f18ee8e2c5d", null ], + [ "kSha384", "group___epid_types.html#gga5e450438f6f9a5eacd0cf5ce354ec890a0f4dde6e82b84f5769873f6704fcd290", null ], + [ "kSha512", "group___epid_types.html#gga5e450438f6f9a5eacd0cf5ce354ec890afb78d98f37fecc53dd1637d94c5c0055", null ], + [ "kSha512_256", "group___epid_types.html#gga5e450438f6f9a5eacd0cf5ce354ec890a9746b5049a62bca2f7b844925e6136ba", null ], + [ "kSha3_256", "group___epid_types.html#gga5e450438f6f9a5eacd0cf5ce354ec890a4fa16d3867498f5e2f8ae5c94b0fab85", null ], + [ "kSha3_384", "group___epid_types.html#gga5e450438f6f9a5eacd0cf5ce354ec890a90d21c8885ab138f7cf91f253dd6ef86", null ], + [ "kSha3_512", "group___epid_types.html#gga5e450438f6f9a5eacd0cf5ce354ec890ade8e74cf7910b3a71fe902a40abf7eee", null ] + ] ] +]; \ No newline at end of file diff --git a/external/epid-sdk-3.0.0/doc/html/group___epid_verifier_module.html b/external/epid-sdk-3.0.0/doc/html/group___epid_verifier_module.html new file mode 100644 index 00000000..2e07e219 --- /dev/null +++ b/external/epid-sdk-3.0.0/doc/html/group___epid_verifier_module.html @@ -0,0 +1,1019 @@ + + + + + + + +Intel® Enhanced Privacy ID SDK: verifier + + + + + + + + + + + + +
    +
    + + + + + + +
    + +
    +
    + + +
    +
    + +
    +
    +
    + +
    +
    + +
    +
    verifier
    +
    +
    + +

    Verifier functionality. +More...

    + + + + + +

    +Modules

     EPID 1.1 support
     Intel(R) EPID 1.1 Verifier functionality.
     
    + + + + +

    +Data Structures

    struct  VerifierPrecomp
     Pre-computed verifier settings. More...
     
    + + + + +

    +Typedefs

    +typedef struct VerifierCtx VerifierCtx
     Internal context of verifier.
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    EpidStatus EpidVerifierCreate (GroupPubKey const *pub_key, VerifierPrecomp const *precomp, VerifierCtx **ctx)
     Creates a new verifier context. More...
     
    void EpidVerifierDelete (VerifierCtx **ctx)
     Deletes an existing verifier context. More...
     
    EpidStatus EpidVerifierWritePrecomp (VerifierCtx const *ctx, VerifierPrecomp *precomp)
     Serializes the pre-computed verifier settings. More...
     
    EpidStatus EpidVerifierSetPrivRl (VerifierCtx *ctx, PrivRl const *priv_rl, size_t priv_rl_size)
     Sets the private key based revocation list. More...
     
    EpidStatus EpidVerifierSetSigRl (VerifierCtx *ctx, SigRl const *sig_rl, size_t sig_rl_size)
     Sets the signature based revocation list. More...
     
    EpidStatus EpidVerifierSetGroupRl (VerifierCtx *ctx, GroupRl const *grp_rl, size_t grp_rl_size)
     Sets the group based revocation list. More...
     
    EpidStatus EpidVerifierSetVerifierRl (VerifierCtx *ctx, VerifierRl const *ver_rl, size_t ver_rl_size)
     Sets the verifier revocation list. More...
     
    EpidStatus EpidVerifierSetHashAlg (VerifierCtx *ctx, HashAlg hash_alg)
     Sets the hash algorithm to be used by a verifier. More...
     
    EpidStatus EpidVerifierSetBasename (VerifierCtx *ctx, void const *basename, size_t basename_len)
     Sets the basename to be used by a verifier. More...
     
    EpidStatus EpidVerify (VerifierCtx const *ctx, EpidSignature const *sig, size_t sig_len, void const *msg, size_t msg_len)
     Verifies a signature and checks revocation status. More...
     
    bool EpidAreSigsLinked (BasicSignature const *sig1, BasicSignature const *sig2)
     Determines if two signatures are linked. More...
     
    EpidStatus EpidVerifyBasicSig (VerifierCtx const *ctx, BasicSignature const *sig, void const *msg, size_t msg_len)
     Verifies a member signature without revocation checks. More...
     
    EpidStatus EpidNrVerify (VerifierCtx const *ctx, BasicSignature const *sig, void const *msg, size_t msg_len, SigRlEntry const *sigrl_entry, NrProof const *proof)
     Verifies the non-revoked proof for a single signature based revocation list entry. More...
     
    EpidStatus EpidCheckPrivRlEntry (VerifierCtx const *ctx, BasicSignature const *sig, FpElemStr const *f)
     Verifies a signature has not been revoked in the private key based revocation list. More...
     
    size_t EpidGetVerifierRlSize (VerifierCtx const *ctx)
     Returns the number of bytes required to serialize the verifier blacklist. More...
     
    EpidStatus EpidWriteVerifierRl (VerifierCtx const *ctx, VerifierRl *ver_rl, size_t ver_rl_size)
     Serializes the verifier blacklist to a buffer. More...
     
    EpidStatus EpidBlacklistSig (VerifierCtx *ctx, EpidSignature const *sig, size_t sig_len, void const *msg, size_t msg_len)
     Adds a valid name-based signature to the verifier blacklist. More...
     
    +

    Detailed Description

    +

    Verifier functionality.

    +

    Defines the APIs needed by Intel(R) EPID verifiers. Each verifier context (VerifierCtx) represents a verifier for a single group.

    +

    Function Documentation

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    bool EpidAreSigsLinked (BasicSignature const * sig1,
    BasicSignature const * sig2 
    )
    +
    + +

    Determines if two signatures are linked.

    +

    The Intel(R) EPID scheme allows signatures to be linked. If basename option is specified when signing, signatures with the same basename are linkable. This linking capability allows the verifier, or anyone, to know whether two Intel(R) EPID signatures are generated by the same member.

    +
    Parameters
    + + + +
    [in]sig1A basic signature.
    [in]sig2A basic signature.
    +
    +
    +
    Returns
    bool
    +
    Return values
    + + + +
    trueif the signatures were generated by the same member
    falseif it couldn't be determined if the signatures were generated by the same member
    +
    +
    +
    Note
    The input signatures should be verified using EpidVerifyBasicSig() before invocation. Behavior is undefined if either of the signatures cannot be verified.
    +
    See also
    EpidVerifyBasicSig
    +
    +EpidSignBasic
    +
    +EpidSign
    + +
    +
    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    EpidStatus EpidBlacklistSig (VerifierCtxctx,
    EpidSignature const * sig,
    size_t sig_len,
    void const * msg,
    size_t msg_len 
    )
    +
    + +

    Adds a valid name-based signature to the verifier blacklist.

    +

    If the signature is not valid it will not be added to the blacklist.

    +
    Parameters
    + + + + + + +
    [in]ctxThe verifier context.
    [in]sigThe name-based signature to revoke.
    [in]sig_lenThe size of sig in bytes.
    [in]msgThe message that was signed.
    [in]msg_lenThe size of msg in bytes.
    +
    +
    +
    Returns
    EpidStatus
    +
    See also
    EpidVerifierCreate
    +
    +EpidVerifierSetVerifierRl
    +
    +EpidWriteVerifierRl
    + +
    +
    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    EpidStatus EpidCheckPrivRlEntry (VerifierCtx const * ctx,
    BasicSignature const * sig,
    FpElemStr const * f 
    )
    +
    + +

    Verifies a signature has not been revoked in the private key based revocation list.

    +

    Used in constrained environments where, due to limited memory, it may not be possible to process through a large and potentially unbounded revocation list.

    +
    Parameters
    + + + + +
    [in]ctxThe verifier context.
    [in]sigThe basic signature.
    [in]fThe private key based revocation list entry.
    +
    +
    +
    Note
    Sig should be verified using EpidVerifyBasicSig() before invocation. Behavior is undefined if sig cannot be verified.
    +
    +This function should be used in conjunction with EpidNrVerify() and EpidVerifyBasicSig().
    +
    +If the result is not kEpidNoErr the verify should be considered to have failed.
    +
    Returns
    EpidStatus
    +
    See also
    EpidVerifierCreate
    +
    +EpidNrVerify
    +
    +EpidVerifyBasicSig
    + +
    +
    + +
    +
    + + + + + + + + +
    size_t EpidGetVerifierRlSize (VerifierCtx const * ctx)
    +
    + +

    Returns the number of bytes required to serialize the verifier blacklist.

    +

    Use this function to determine the buffer size required by EpidWriteVerifierRl.

    +
    Parameters
    + + +
    [in]ctxThe verifier context.
    +
    +
    +
    Returns
    Size in bytes required to serialize the verifier blacklist
    +
    See also
    EpidVerifierCreate
    +
    +EpidVerifierSetVerifierRl
    +
    +EpidBlacklistSig
    +
    +EpidWriteVerifierRl
    + +
    +
    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    EpidStatus EpidNrVerify (VerifierCtx const * ctx,
    BasicSignature const * sig,
    void const * msg,
    size_t msg_len,
    SigRlEntry const * sigrl_entry,
    NrProof const * proof 
    )
    +
    + +

    Verifies the non-revoked proof for a single signature based revocation list entry.

    +

    Used in constrained environments where, due to limited memory, it may not be possible to process through a large and potentially unbounded revocation list.

    +
    Parameters
    + + + + + + + +
    [in]ctxThe verifier context.
    [in]sigThe basic signature.
    [in]msgThe message that was signed.
    [in]msg_lenThe size of msg in bytes.
    [in]sigrl_entryThe signature based revocation list entry.
    [in]proofThe non-revoked proof.
    +
    +
    +
    Returns
    EpidStatus
    +
    Note
    Sig should be verified using EpidVerifyBasicSig() before invocation. Behavior is undefined if sig cannot be verified.
    +
    +This function should be used in conjunction with EpidVerifyBasicSig() and EpidCheckPrivRlEntry().
    +
    +If the result is not kEpidNoErr, the verification should be considered to have failed.
    +
    See also
    EpidVerifierCreate
    +
    +EpidVerifyBasicSig
    +
    +EpidCheckPrivRlEntry
    + +
    +
    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    EpidStatus EpidVerifierCreate (GroupPubKey const * pub_key,
    VerifierPrecomp const * precomp,
    VerifierCtx ** ctx 
    )
    +
    + +

    Creates a new verifier context.

    +

    Must be called to create the verifier context that is used by other "Verifier" APIs.

    +

    Allocates memory for the context, then initializes it.

    +

    EpidVerifierDelete() must be called to safely release the member context.

    +
    Parameters
    + + + + +
    [in]pub_keyThe group certificate.
    [in]precompOptional pre-computed data. If NULL the value is computed internally and is readable using EpidVerifierWritePrecomp().
    [out]ctxNewly constructed verifier context.
    +
    +
    +
    Returns
    EpidStatus
    +
    Note
    If the result is not kEpidNoErr the content of ctx is undefined.
    +
    See also
    EpidVerifierDelete
    +
    +EpidVerifierWritePrecomp
    + +
    +
    + +
    +
    + + + + + + + + +
    void EpidVerifierDelete (VerifierCtx ** ctx)
    +
    + +

    Deletes an existing verifier context.

    +

    Must be called to safely release a verifier context created using EpidVerifierCreate().

    +

    De-initializes the context, frees memory used by the context, and sets the context pointer to NULL.

    +
    Parameters
    + + +
    [in,out]ctxThe verifier context. Can be NULL.
    +
    +
    +
    See also
    EpidVerifierCreate
    + +
    +
    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    EpidStatus EpidVerifierSetBasename (VerifierCtxctx,
    void const * basename,
    size_t basename_len 
    )
    +
    + +

    Sets the basename to be used by a verifier.

    +
    Note
    A successful call to this function will clear the current verifier blacklist.
    +
    Parameters
    + + + + +
    [in,out]ctxThe verifier context.
    [in]basenameThe basename. Pass NULL for random base.
    [in]basename_lenNumber of bytes in basename buffer. Must be 0 if basename is NULL.
    +
    +
    +
    Returns
    EpidStatus
    +
    See also
    EpidVerifierCreate
    + +
    +
    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    EpidStatus EpidVerifierSetGroupRl (VerifierCtxctx,
    GroupRl const * grp_rl,
    size_t grp_rl_size 
    )
    +
    + +

    Sets the group based revocation list.

    +

    The caller is responsible for ensuring the revocation list is authorized, e.g signed by the issuer. The caller is also responsible checking the version of the revocation list. The call fails if trying to set an older version of the revocation list than was last set.

    +
    Attention
    The memory pointed to by grp_rl is accessed directly by the verifier until a new list is set or the verifier is destroyed. Do not modify the contents of this memory. The behavior of subsequent operations that rely on the revocation list is undefined if the memory is modified.
    +
    +It is the responsibility of the caller to free the memory pointed to by grp_rl after the verifier is no longer using it.
    +
    Parameters
    + + + + +
    [in,out]ctxThe verifier context.
    [in]grp_rlThe group based revocation list.
    [in]grp_rl_sizeThe size of the group based revocation list in bytes.
    +
    +
    +
    Returns
    EpidStatus
    +
    Note
    If the result is not kEpidNoErr the group based revocation list pointed to by the verifier is undefined.
    +
    See also
    EpidVerifierCreate
    + +
    +
    + +
    +
    + + + + + + + + + + + + + + + + + + +
    EpidStatus EpidVerifierSetHashAlg (VerifierCtxctx,
    HashAlg hash_alg 
    )
    +
    + +

    Sets the hash algorithm to be used by a verifier.

    +
    Parameters
    + + + +
    [in]ctxThe verifier context.
    [in]hash_algThe hash algorithm to use.
    +
    +
    +
    Returns
    EpidStatus
    +
    Note
    If the result is not kEpidNoErr, the hash algorithm used by the verifier is undefined.
    +
    See also
    EpidVerifierCreate
    +
    +HashAlg
    + +
    +
    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    EpidStatus EpidVerifierSetPrivRl (VerifierCtxctx,
    PrivRl const * priv_rl,
    size_t priv_rl_size 
    )
    +
    + +

    Sets the private key based revocation list.

    +

    The caller is responsible for ensuring the revocation list is authorized, e.g signed by the issuer. The caller is also responsible checking the version of the revocation list. The call fails if trying to set an older version of the revocation list than was last set.

    +
    Attention
    The memory pointed to by priv_rl is accessed directly by the verifier until a new list is set or the verifier is destroyed. Do not modify the contents of this memory. The behavior of subsequent operations that rely on the revocation list is undefined if the memory is modified.
    +
    +It is the responsibility of the caller to free the memory pointed to by priv_rl after the verifier is no longer using it.
    +
    Parameters
    + + + + +
    [in,out]ctxThe verifier context.
    [in]priv_rlThe private key based revocation list.
    [in]priv_rl_sizeThe size of the private key based revocation list in bytes.
    +
    +
    +
    Returns
    EpidStatus
    +
    Note
    If the result is not kEpidNoErr the private key based revocation list pointed to by the verifier is undefined.
    +
    See also
    EpidVerifierCreate
    + +
    +
    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    EpidStatus EpidVerifierSetSigRl (VerifierCtxctx,
    SigRl const * sig_rl,
    size_t sig_rl_size 
    )
    +
    + +

    Sets the signature based revocation list.

    +

    The caller is responsible for ensuring the revocation list is authorized, e.g signed by the issuer. The caller is also responsible checking the version of the revocation list. The call fails if trying to set an older version of the revocation list than was last set.

    +
    Attention
    The memory pointed to by sig_rl is accessed directly by the verifier until a new list is set or the verifier is destroyed. Do not modify the contents of this memory. The behavior of subsequent operations that rely on the revocation list is undefined if the memory is modified.
    +
    +It is the responsibility of the caller to free the memory pointed to by sig_rl after the verifier is no longer using it.
    +
    Parameters
    + + + + +
    [in,out]ctxThe verifier context.
    [in]sig_rlThe signature based revocation list.
    [in]sig_rl_sizeThe size of the signature based revocation list in bytes.
    +
    +
    +
    Returns
    EpidStatus
    +
    Note
    If the result is not kEpidNoErr the signature based revocation list pointed to by the verifier is undefined.
    +
    See also
    EpidVerifierCreate
    + +
    +
    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    EpidStatus EpidVerifierSetVerifierRl (VerifierCtxctx,
    VerifierRl const * ver_rl,
    size_t ver_rl_size 
    )
    +
    + +

    Sets the verifier revocation list.

    +

    The caller is responsible for ensuring the revocation list is authorized. The caller is also responsible for checking the version of the revocation list. The call fails if trying to set an older version of the same revocation list than was last set.

    +

    Once EpidVerifierSetVerifierRl returns, callers are free to release the memory pointed to by ver_rl.

    +
    Parameters
    + + + + +
    [in,out]ctxThe verifier context.
    [in]ver_rlThe verifier revocation list.
    [in]ver_rl_sizeThe size of the verifier revocation list in bytes.
    +
    +
    +
    Returns
    EpidStatus
    +
    Note
    If the result is not kEpidNoErr the verifier revocation list pointed to by the verifier is undefined.
    +
    See also
    EpidVerifierCreate
    +
    +EpidBlacklistSig
    +
    +EpidWriteVerifierRl
    + +
    +
    + +
    +
    + + + + + + + + + + + + + + + + + + +
    EpidStatus EpidVerifierWritePrecomp (VerifierCtx const * ctx,
    VerifierPrecompprecomp 
    )
    +
    + +

    Serializes the pre-computed verifier settings.

    +
    Parameters
    + + + +
    [in]ctxThe verifier context.
    [out]precompThe Serialized pre-computed verifier settings.
    +
    +
    +
    Returns
    EpidStatus
    +
    Note
    If the result is not kEpidNoErr the content of precomp is undefined.
    + +
    +
    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    EpidStatus EpidVerify (VerifierCtx const * ctx,
    EpidSignature const * sig,
    size_t sig_len,
    void const * msg,
    size_t msg_len 
    )
    +
    + +

    Verifies a signature and checks revocation status.

    +
    Parameters
    + + + + + + +
    [in]ctxThe verifier context.
    [in]sigThe signature.
    [in]sig_lenThe size of sig in bytes.
    [in]msgThe message that was signed.
    [in]msg_lenThe size of msg in bytes.
    +
    +
    +
    Returns
    EpidStatus
    +
    Return values
    + + + + + + + +
    kEpidSigValidSignature validated successfully
    kEpidSigInvalidSignature is invalid
    kEpidSigRevokedInGroupRlSignature revoked in GroupRl
    kEpidSigRevokedInPrivRlSignature revoked in PrivRl
    kEpidSigRevokedInSigRlSignature revoked in SigRl
    kEpidSigRevokedInVerifierRlSignature revoked in VerifierRl
    +
    +
    +
    Note
    If the result is not kEpidNoErr or one of the values listed above the verify should be considered to have failed.
    +
    See also
    EpidVerifierCreate
    +
    +EpidSignBasic
    +
    +EpidSign
    + +
    +
    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    EpidStatus EpidVerifyBasicSig (VerifierCtx const * ctx,
    BasicSignature const * sig,
    void const * msg,
    size_t msg_len 
    )
    +
    + +

    Verifies a member signature without revocation checks.

    +

    Used in constrained environments where, due to limited memory, it may not be possible to process through a large and potentially unbounded revocation list.

    +
    Parameters
    + + + + + +
    [in]ctxThe verifier context.
    [in]sigThe basic signature.
    [in]msgThe message that was signed.
    [in]msg_lenThe size of msg in bytes.
    +
    +
    +
    Returns
    EpidStatus
    +
    Note
    This function should be used in conjunction with EpidNrVerify() and EpidCheckPrivRlEntry().
    +
    +If the result is not kEpidNoErr the verify should be considered to have failed.
    +
    See also
    EpidVerifierCreate
    +
    +EpidSignBasic
    +
    +EpidSign
    + +
    +
    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    EpidStatus EpidWriteVerifierRl (VerifierCtx const * ctx,
    VerifierRlver_rl,
    size_t ver_rl_size 
    )
    +
    + +

    Serializes the verifier blacklist to a buffer.

    +

    If the current blacklist is empty or not set a valid empty verifier blacklist will be serialized.

    +

    Use EpidGetVerifierRlSize to determine the buffer size required to serialize the verifier blacklist.

    +
    Parameters
    + + + + +
    [in]ctxThe verifier context.
    [out]ver_rlAn existing buffer in which to write the verifier revocation list.
    [in]ver_rl_sizeThe size of the caller allocated output buffer in bytes.
    +
    +
    +
    Returns
    EpidStatus
    +
    See also
    EpidVerifierCreate
    +
    +EpidVerifierSetVerifierRl
    +
    +EpidBlacklistSig
    +
    +EpidGetVerifierRlSize
    + +
    +
    +
    +
    + + + + + diff --git a/external/epid-sdk-3.0.0/doc/html/group___epid_verifier_module.js b/external/epid-sdk-3.0.0/doc/html/group___epid_verifier_module.js new file mode 100644 index 00000000..b93f8229 --- /dev/null +++ b/external/epid-sdk-3.0.0/doc/html/group___epid_verifier_module.js @@ -0,0 +1,29 @@ +var group___epid_verifier_module = +[ + [ "EPID 1.1 support", "group___epid11_verifier_module.html", "group___epid11_verifier_module" ], + [ "VerifierPrecomp", "struct_verifier_precomp.html", [ + [ "e12", "struct_verifier_precomp.html#ad1106376f12772942af0331eb74de6e5", null ], + [ "e22", "struct_verifier_precomp.html#af8fd90f3a5a2be932a97dcd86099d5b2", null ], + [ "e2w", "struct_verifier_precomp.html#a8caf79578e3c0baf91921460391103ca", null ], + [ "eg12", "struct_verifier_precomp.html#ab061d6cc07d1467eeb5bf25f3ea7e306", null ], + [ "gid", "struct_verifier_precomp.html#afc3e29a325c95c62bb192d5f8cdd5c1c", null ] + ] ], + [ "VerifierCtx", "group___epid_verifier_module.html#gaf172a5f8f7f069d38c5838b723a1a85c", null ], + [ "EpidAreSigsLinked", "group___epid_verifier_module.html#gae44bd8acbc1e7205aeedff0c7e2632a8", null ], + [ "EpidBlacklistSig", "group___epid_verifier_module.html#ga8eaeb9f4a34e9e37ccdf342919f38c69", null ], + [ "EpidCheckPrivRlEntry", "group___epid_verifier_module.html#gaeb05e6faea6f09c0665b13adc6e7ddea", null ], + [ "EpidGetVerifierRlSize", "group___epid_verifier_module.html#ga2a75c7d5775e852a7b6e24178dd4054f", null ], + [ "EpidNrVerify", "group___epid_verifier_module.html#gac6e2fab59e3af8a33a74a5b201642700", null ], + [ "EpidVerifierCreate", "group___epid_verifier_module.html#ga1d116daaee5466a1485d26ebc4e3ab70", null ], + [ "EpidVerifierDelete", "group___epid_verifier_module.html#ga6707e691f4b3916f9c684d5bbd463d12", null ], + [ "EpidVerifierSetBasename", "group___epid_verifier_module.html#ga1c3810ef361da678a1f77823bd9c37a6", null ], + [ "EpidVerifierSetGroupRl", "group___epid_verifier_module.html#ga1d41d6ef4dabbc30ec28452edd6baffb", null ], + [ "EpidVerifierSetHashAlg", "group___epid_verifier_module.html#ga97b58b2382f24756b66a357f1e825c92", null ], + [ "EpidVerifierSetPrivRl", "group___epid_verifier_module.html#gafab08180a43b58ce2e1d56c4b070bb0e", null ], + [ "EpidVerifierSetSigRl", "group___epid_verifier_module.html#ga4c7c9820409ee06f30bb8dc75fdd5dcf", null ], + [ "EpidVerifierSetVerifierRl", "group___epid_verifier_module.html#ga0909703a0a4dfe080374d0d99077465a", null ], + [ "EpidVerifierWritePrecomp", "group___epid_verifier_module.html#ga92df4d00ea4ee59d7bfd35b23da03392", null ], + [ "EpidVerify", "group___epid_verifier_module.html#gae3f9c37628e18b880d8bbee3e7f55064", null ], + [ "EpidVerifyBasicSig", "group___epid_verifier_module.html#gac3b1f1a2bdba8eeeebbf1e0c8c00862e", null ], + [ "EpidWriteVerifierRl", "group___epid_verifier_module.html#gac857bff47e7d80363eac15285471fe81", null ] +]; \ No newline at end of file diff --git a/external/epid-sdk-3.0.0/doc/html/group___error_codes.html b/external/epid-sdk-3.0.0/doc/html/group___error_codes.html new file mode 100644 index 00000000..74b35b31 --- /dev/null +++ b/external/epid-sdk-3.0.0/doc/html/group___error_codes.html @@ -0,0 +1,232 @@ + + + + + + + +Intel® Enhanced Privacy ID SDK: errors + + + + + + + + + + + + +
    +
    + + + + + + +
    + +
    +
    + + +
    +
    + +
    +
    +
    + +
    +
    + +
    +
    errors
    +
    +
    + +

    Error reporting interface. +More...

    + + + + + +

    +Enumerations

    enum  EpidStatus {
    +  kEpidNoErr = 0, +kEpidSigValid = 0, +kEpidSigInvalid = 1, +kEpidSigRevokedInGroupRl = 2, +
    +  kEpidSigRevokedInPrivRl = 3, +kEpidSigRevokedInSigRl = 4, +kEpidSigRevokedInVerifierRl = 5, +kEpidErr = -999, +
    +  kEpidNotImpl, +kEpidBadArgErr, +kEpidNoMemErr, +kEpidMemAllocErr, +
    +  kEpidMathErr, +kEpidDivByZeroErr, +kEpidUnderflowErr, +kEpidHashAlgorithmNotSupported, +
    +  kEpidRandMaxIterErr, +kEpidDuplicateErr, +kEpidInconsistentBasenameSetErr, +kEpidMathQuadraticNonResidueError +
    + }
     Return status for SDK functions. More...
     
    + + + + +

    +Functions

    char const * EpidStatusToString (EpidStatus e)
     Returns string representation of error code. More...
     
    +

    Detailed Description

    +

    Error reporting interface.

    +

    This module defines the return status type. It also provides tools for interactions with status values, such as converting them to a string.

    +

    Enumeration Type Documentation

    + +
    +
    + + + + +
    enum EpidStatus
    +
    + +

    Return status for SDK functions.

    +

    Convention for status values is as follows:

      +
    • Zero indicates "success"
    • +
    • Any positive number indicates "success with status"
    • +
    • Any negative number indicates "failure"
    • +
    + + + + + + + + + + + + + + + + + + + + + +
    Enumerator
    kEpidNoErr  +

    no error

    +
    kEpidSigValid  +

    Signature is valid.

    +
    kEpidSigInvalid  +

    Signature is invalid.

    +
    kEpidSigRevokedInGroupRl  +

    Signature revoked in GroupRl.

    +
    kEpidSigRevokedInPrivRl  +

    Signature revoked in PrivRl.

    +
    kEpidSigRevokedInSigRl  +

    Signature revoked in SigRl.

    +
    kEpidSigRevokedInVerifierRl  +

    Signature revoked in VerifierRl.

    +
    kEpidErr  +

    unspecified error

    +
    kEpidNotImpl  +

    not implemented error

    +
    kEpidBadArgErr  +

    incorrect arg to function

    +
    kEpidNoMemErr  +

    not enough memory for the operation

    +
    kEpidMemAllocErr  +

    insufficient memory allocated for operation

    +
    kEpidMathErr  +

    internal math error

    +
    kEpidDivByZeroErr  +

    an attempt to divide by zero

    +
    kEpidUnderflowErr  +

    a value became less than minimum supported level

    +
    kEpidHashAlgorithmNotSupported  +

    unsupported hash algorithm type

    +
    kEpidRandMaxIterErr  +

    reached max iteration for random number generation

    +
    kEpidDuplicateErr  +

    argument would add duplicate entry

    +
    kEpidInconsistentBasenameSetErr  +

    set basename conflicts with arguments

    +
    kEpidMathQuadraticNonResidueError  +

    quadratic Non-Residue Error

    +
    + +
    +
    +

    Function Documentation

    + +
    +
    + + + + + + + + +
    char const* EpidStatusToString (EpidStatus e)
    +
    + +

    Returns string representation of error code.

    +
    Parameters
    + + +
    eThe status value.
    +
    +
    +
    Returns
    The string describing the status.
    + +
    +
    +
    +
    + + + + + diff --git a/external/epid-sdk-3.0.0/doc/html/group___error_codes.js b/external/epid-sdk-3.0.0/doc/html/group___error_codes.js new file mode 100644 index 00000000..5f024635 --- /dev/null +++ b/external/epid-sdk-3.0.0/doc/html/group___error_codes.js @@ -0,0 +1,26 @@ +var group___error_codes = +[ + [ "EpidStatus", "group___error_codes.html#gafdb27c77c2c4b32c807e326a8a0da360", [ + [ "kEpidNoErr", "group___error_codes.html#ggafdb27c77c2c4b32c807e326a8a0da360a8a6861e14322ca9193498ffc955537f9", null ], + [ "kEpidSigValid", "group___error_codes.html#ggafdb27c77c2c4b32c807e326a8a0da360ab45ad60085d03c03ea30b40a0519897e", null ], + [ "kEpidSigInvalid", "group___error_codes.html#ggafdb27c77c2c4b32c807e326a8a0da360aeedd19b8a1cbdecf963f90b4860e02b8", null ], + [ "kEpidSigRevokedInGroupRl", "group___error_codes.html#ggafdb27c77c2c4b32c807e326a8a0da360aedd43fb4043bef3b515fc23f1d9a5fe5", null ], + [ "kEpidSigRevokedInPrivRl", "group___error_codes.html#ggafdb27c77c2c4b32c807e326a8a0da360a1dc7b7e6ff97c7ed9ff4191d76ebd6e1", null ], + [ "kEpidSigRevokedInSigRl", "group___error_codes.html#ggafdb27c77c2c4b32c807e326a8a0da360a43c658cbf0d156850d71ce3f8efd461c", null ], + [ "kEpidSigRevokedInVerifierRl", "group___error_codes.html#ggafdb27c77c2c4b32c807e326a8a0da360a486e052baa99c6c25ae5d5cc710de298", null ], + [ "kEpidErr", "group___error_codes.html#ggafdb27c77c2c4b32c807e326a8a0da360aa08f0d2e394b37694117a6a32bc71e6e", null ], + [ "kEpidNotImpl", "group___error_codes.html#ggafdb27c77c2c4b32c807e326a8a0da360a5252da1ff519a098446723e9edd30cc7", null ], + [ "kEpidBadArgErr", "group___error_codes.html#ggafdb27c77c2c4b32c807e326a8a0da360ad134d6cc95a9dcb1b1a9f9c358047cbf", null ], + [ "kEpidNoMemErr", "group___error_codes.html#ggafdb27c77c2c4b32c807e326a8a0da360ab7dfec784192a827a91a4b8a6054d01c", null ], + [ "kEpidMemAllocErr", "group___error_codes.html#ggafdb27c77c2c4b32c807e326a8a0da360a11a4d2f1c37064eb663de08dc57bcda8", null ], + [ "kEpidMathErr", "group___error_codes.html#ggafdb27c77c2c4b32c807e326a8a0da360a1739ecb620f4bede2e1b84e52a96cee6", null ], + [ "kEpidDivByZeroErr", "group___error_codes.html#ggafdb27c77c2c4b32c807e326a8a0da360a893cd0d417b139bb376d09c93695c3f3", null ], + [ "kEpidUnderflowErr", "group___error_codes.html#ggafdb27c77c2c4b32c807e326a8a0da360a83a867b4f71ee13edbfca2f1b72abbec", null ], + [ "kEpidHashAlgorithmNotSupported", "group___error_codes.html#ggafdb27c77c2c4b32c807e326a8a0da360ad4d4ff24a7ef2cd7a50b8082265e9ff4", null ], + [ "kEpidRandMaxIterErr", "group___error_codes.html#ggafdb27c77c2c4b32c807e326a8a0da360a61234ad9610406da6bf7977afd72a357", null ], + [ "kEpidDuplicateErr", "group___error_codes.html#ggafdb27c77c2c4b32c807e326a8a0da360a3706f895a660260033b5b91890516c0f", null ], + [ "kEpidInconsistentBasenameSetErr", "group___error_codes.html#ggafdb27c77c2c4b32c807e326a8a0da360a94ae9c9b9337afd2fefd3b4f9c3160df", null ], + [ "kEpidMathQuadraticNonResidueError", "group___error_codes.html#ggafdb27c77c2c4b32c807e326a8a0da360ab2768a1a5c4374cb1ac6175c09c73129", null ] + ] ], + [ "EpidStatusToString", "group___error_codes.html#ga59e8680ce52509302fd58a987e45004d", null ] +]; \ No newline at end of file diff --git a/external/epid-sdk-3.0.0/doc/html/group___file_parser.html b/external/epid-sdk-3.0.0/doc/html/group___file_parser.html new file mode 100644 index 00000000..e6445ef1 --- /dev/null +++ b/external/epid-sdk-3.0.0/doc/html/group___file_parser.html @@ -0,0 +1,534 @@ + + + + + + + +Intel® Enhanced Privacy ID SDK: fileparser + + + + + + + + + + + + +
    +
    + + + + + + +
    + +
    +
    + + +
    +
    + +
    +
    +
    + +
    + +
    + +

    Parser for issuer material. +More...

    + + + + + +

    +Modules

     EPID 1.1 support
     Parser for 1.1 issuer material.
     
    + + + + + + + +

    +Data Structures

    struct  EpidFileHeader
     Intel(R) EPID binary file header. More...
     
    struct  EpidCaCertificate
     IoT CA Certificate binary format. More...
     
    + + + + + + + +

    +Enumerations

    enum  EpidVersion { kEpid1x, +kEpid2x, +kNumEpidVersions + }
     Recognized Intel(R) EPID versions. More...
     
    enum  EpidFileType {
    +  kIssuingCaPubKeyFile, +kGroupPubKeyFile, +kPrivRlFile, +kSigRlFile, +
    +  kGroupRlFile, +kPrivRlRequestFile, +kSigRlRequestFile, +kGroupRlRequestFile, +
    +  kNumFileTypes +
    + }
     Recognized Intel(R) EPID file types. More...
     
    + + + + + + + + + + + + + + + + +

    +Functions

    EpidStatus EpidParseFileHeader (void const *buf, size_t len, EpidVersion *epid_version, EpidFileType *file_type)
     Extracts Intel(R) EPID Binary Output File header information. More...
     
    EpidStatus EpidParseGroupPubKeyFile (void const *buf, size_t len, EpidCaCertificate const *cert, GroupPubKey *pubkey)
     Extracts group public key from buffer in issuer binary format. More...
     
    EpidStatus EpidParsePrivRlFile (void const *buf, size_t len, EpidCaCertificate const *cert, PrivRl *rl, size_t *rl_len)
     Extracts private key revocation list from buffer in issuer binary format. More...
     
    EpidStatus EpidParseSigRlFile (void const *buf, size_t len, EpidCaCertificate const *cert, SigRl *rl, size_t *rl_len)
     Extracts signature revocation list from buffer in issuer binary format. More...
     
    EpidStatus EpidParseGroupRlFile (void const *buf, size_t len, EpidCaCertificate const *cert, GroupRl *rl, size_t *rl_len)
     Extracts group revocation list from buffer in issuer binary format. More...
     
    + + + + + + + +

    +Variables

    +const OctStr16 kEpidVersionCode [kNumEpidVersions]
     Encoding of issuer material Intel(R) EPID versions.
     
    +const OctStr16 kEpidFileTypeCode [kNumFileTypes]
     Encoding of issuer material file types.
     
    +

    Detailed Description

    +

    Parser for issuer material.

    +

    Provides an API for parsing buffers formatted according to the various IoT Intel(R) EPID binary file formats.

    +

    Enumeration Type Documentation

    + +
    +
    + + + + +
    enum EpidFileType
    +
    + +

    Recognized Intel(R) EPID file types.

    + + + + + + + + + + +
    Enumerator
    kIssuingCaPubKeyFile  +

    IoT Issuing CA public key file.

    +
    kGroupPubKeyFile  +

    Group Public Key Output File Format.

    +
    kPrivRlFile  +

    Binary Private Key Revocation List.

    +
    kSigRlFile  +

    Binary Signature Revocation List.

    +
    kGroupRlFile  +

    Binary Group Revocation List.

    +
    kPrivRlRequestFile  +

    Binary Private Key Revocation Request.

    +
    kSigRlRequestFile  +

    Binary Signature Revocation Request.

    +
    kGroupRlRequestFile  +

    Binary Group Revocation Request.

    +
    kNumFileTypes  +

    Maximum number of file types.

    +
    + +
    +
    + +
    +
    + + + + +
    enum EpidVersion
    +
    + +

    Recognized Intel(R) EPID versions.

    + + + + +
    Enumerator
    kEpid1x  +

    Intel(R) EPID version 1.x.

    +
    kEpid2x  +

    Intel(R) EPID version 2.x.

    +
    kNumEpidVersions  +

    Maximum number of EPID versions.

    +
    + +
    +
    +

    Function Documentation

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    EpidStatus EpidParseFileHeader (void const * buf,
    size_t len,
    EpidVersionepid_version,
    EpidFileTypefile_type 
    )
    +
    + +

    Extracts Intel(R) EPID Binary Output File header information.

    +
    Parameters
    + + + + + +
    [in]bufPointer to buffer containing Intel(R) EPID Binary Output File to parse.
    [in]lenThe size of buf in bytes.
    [out]epid_versionThe extracted EPID version or kNumEpidVersions if EPID version is unknown. Pass NULL to not extract.
    [out]file_typeThe extracted EPID file type or kNumFileTypes if file type is unknown. Pass NULL to not extract.
    +
    +
    +
    Returns
    EpidStatus
    + +
    +
    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    EpidStatus EpidParseGroupPubKeyFile (void const * buf,
    size_t len,
    EpidCaCertificate const * cert,
    GroupPubKeypubkey 
    )
    +
    + +

    Extracts group public key from buffer in issuer binary format.

    +

    Extracts the first group public key from a buffer with format of Intel(R) EPID 2.0 Group Public Key Certificate Binary File. The function validates that the first public key was signed by the private key corresponding to the provided CA certificate and the size of the input buffer is correct.

    +
    Warning
    It is the responsibility of the caller to authenticate the EpidCaCertificate.
    +
    Parameters
    + + + + + +
    [in]bufPointer to buffer containing public key to extract.
    [in]lenThe size of buf in bytes.
    [in]certThe issuing CA public key certificate.
    [out]pubkeyThe extracted group public key.
    +
    +
    +
    Returns
    EpidStatus
    +
    Return values
    + + +
    kEpidSigInvalidParsing failed due to data authentication failure.
    +
    +
    + +
    +
    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    EpidStatus EpidParseGroupRlFile (void const * buf,
    size_t len,
    EpidCaCertificate const * cert,
    GroupRlrl,
    size_t * rl_len 
    )
    +
    + +

    Extracts group revocation list from buffer in issuer binary format.

    +

    Extracts the group revocation list from a buffer with format of Binary Group Certificate Revocation List File. The function validates that the revocation list was signed by the private key corresponding to the provided CA certificate and the size of the input buffer is correct.

    +

    To determine the required size of the revocation list output buffer, provide a null pointer for the output buffer.

    +
    Warning
    It is the responsibility of the caller to authenticate the EpidCaCertificate.
    +
    Parameters
    + + + + + + +
    [in]bufPointer to buffer containing the revocation list to extract.
    [in]lenThe size of buf in bytes.
    [in]certThe issuing CA public key certificate.
    [out]rlThe extracted revocation list. If Null, rl_len is filled with the required output buffer size.
    [in,out]rl_lenThe size of rl in bytes.
    +
    +
    +
    Returns
    EpidStatus
    +
    Return values
    + + +
    kEpidSigInvalidParsing failed due to data authentication failure.
    +
    +
    + +
    +
    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    EpidStatus EpidParsePrivRlFile (void const * buf,
    size_t len,
    EpidCaCertificate const * cert,
    PrivRlrl,
    size_t * rl_len 
    )
    +
    + +

    Extracts private key revocation list from buffer in issuer binary format.

    +

    Extracts the private key revocation list from a buffer with format of Binary Private Key Revocation List File. The function validates that the revocation list was signed by the private key corresponding to the provided CA certificate and the size of the input buffer is correct.

    +

    To determine the required size of the revocation list output buffer, provide a null pointer for the output buffer.

    +
    Warning
    It is the responsibility of the caller to authenticate the EpidCaCertificate.
    +
    Parameters
    + + + + + + +
    [in]bufPointer to buffer containing the revocation list to extract.
    [in]lenThe size of buf in bytes.
    [in]certThe issuing CA public key certificate.
    [out]rlThe extracted revocation list. If Null, rl_len is filled with the required output buffer size.
    [in,out]rl_lenThe size of rl in bytes.
    +
    +
    +
    Returns
    EpidStatus
    +
    Return values
    + + +
    kEpidSigInvalidParsing failed due to data authentication failure.
    +
    +
    + +
    +
    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    EpidStatus EpidParseSigRlFile (void const * buf,
    size_t len,
    EpidCaCertificate const * cert,
    SigRlrl,
    size_t * rl_len 
    )
    +
    + +

    Extracts signature revocation list from buffer in issuer binary format.

    +

    Extracts the signature based revocation list from a buffer with format of Binary Signature Revocation List File. The function validates that the revocation list was signed by the private key corresponding to the provided CA certificate and the size of the input buffer is correct.

    +

    To determine the required size of the revocation list output buffer, provide a null pointer for the output buffer.

    +
    Warning
    It is the responsibility of the caller to authenticate the EpidCaCertificate.
    +
    Parameters
    + + + + + + +
    [in]bufPointer to buffer containing the revocation list to extract.
    [in]lenThe size of buf in bytes.
    [in]certThe issuing CA public key certificate.
    [out]rlThe extracted revocation list. If Null, rl_len is filled with the required output buffer size.
    [in,out]rl_lenThe size of rl in bytes.
    +
    +
    +
    Returns
    EpidStatus
    +
    Return values
    + + +
    kEpidSigInvalidParsing failed due to data authentication failure.
    +
    +
    + +
    +
    +
    +
    + + + + + diff --git a/external/epid-sdk-3.0.0/doc/html/group___file_parser.js b/external/epid-sdk-3.0.0/doc/html/group___file_parser.js new file mode 100644 index 00000000..3694cba6 --- /dev/null +++ b/external/epid-sdk-3.0.0/doc/html/group___file_parser.js @@ -0,0 +1,42 @@ +var group___file_parser = +[ + [ "EPID 1.1 support", "group___epid11_file_parser_module.html", "group___epid11_file_parser_module" ], + [ "EpidFileHeader", "struct_epid_file_header.html", [ + [ "epid_version", "struct_epid_file_header.html#a35d43c51c1739940381e4898ca87b824", null ], + [ "file_type", "struct_epid_file_header.html#af5d48c739cc6c00c6e1ce35abf4f1473", null ] + ] ], + [ "EpidCaCertificate", "struct_epid_ca_certificate.html", [ + [ "a", "struct_epid_ca_certificate.html#a2811c1914ffae913820f13da914c8f01", null ], + [ "b", "struct_epid_ca_certificate.html#a280e0b0238cf45834c21849ab8a7e124", null ], + [ "header", "struct_epid_ca_certificate.html#ac03cf7257c52ad14e3dd3201b930dd50", null ], + [ "prime", "struct_epid_ca_certificate.html#a3a44e8050ca2f5085652b2b4e15b779c", null ], + [ "pubkey", "struct_epid_ca_certificate.html#a9d2fc21f46cf9fc96e2ea557b70e5356", null ], + [ "r", "struct_epid_ca_certificate.html#ab9d4c318b1fc8d38d3ce53b29f2dfee2", null ], + [ "signature", "struct_epid_ca_certificate.html#a2f8f09ae02919c379c38386668b47418", null ], + [ "x", "struct_epid_ca_certificate.html#a4f77996f90ed7da1d0503c4236b2c9d1", null ], + [ "y", "struct_epid_ca_certificate.html#abd69cce8d5e3940787ee0d17f72184ab", null ] + ] ], + [ "EpidFileType", "group___file_parser.html#ga9a33be7edc6b4c7a867fb07bd2bddecb", [ + [ "kIssuingCaPubKeyFile", "group___file_parser.html#gga9a33be7edc6b4c7a867fb07bd2bddecbac24554caafe2db01e2daed413188cd92", null ], + [ "kGroupPubKeyFile", "group___file_parser.html#gga9a33be7edc6b4c7a867fb07bd2bddecba1f8d8c4b253403a35c51e05d34a7ca1e", null ], + [ "kPrivRlFile", "group___file_parser.html#gga9a33be7edc6b4c7a867fb07bd2bddecba692b4141bff8225bee6000750b0da322", null ], + [ "kSigRlFile", "group___file_parser.html#gga9a33be7edc6b4c7a867fb07bd2bddecba8aead4b6aab87a1efb2d7e8c77a9b710", null ], + [ "kGroupRlFile", "group___file_parser.html#gga9a33be7edc6b4c7a867fb07bd2bddecba8e5247daee3999540e6cb24d4c2b3770", null ], + [ "kPrivRlRequestFile", "group___file_parser.html#gga9a33be7edc6b4c7a867fb07bd2bddecbac708ba9e56eaeac0f1256457cbd45911", null ], + [ "kSigRlRequestFile", "group___file_parser.html#gga9a33be7edc6b4c7a867fb07bd2bddecbac52e5fe24a12424316f655b9b7c62600", null ], + [ "kGroupRlRequestFile", "group___file_parser.html#gga9a33be7edc6b4c7a867fb07bd2bddecbab772fa1e3f221af125ffb34b86b3f24c", null ], + [ "kNumFileTypes", "group___file_parser.html#gga9a33be7edc6b4c7a867fb07bd2bddecbac6d742ea3dd3b17f6d763970ac84b811", null ] + ] ], + [ "EpidVersion", "group___file_parser.html#ga1562efc7c1891875d6b2b9180d65de9d", [ + [ "kEpid1x", "group___file_parser.html#gga1562efc7c1891875d6b2b9180d65de9da5f270e2e8c2412bc07de293023f425cc", null ], + [ "kEpid2x", "group___file_parser.html#gga1562efc7c1891875d6b2b9180d65de9da6af0ee9d9689f1d4325bdd0beb8a89e2", null ], + [ "kNumEpidVersions", "group___file_parser.html#gga1562efc7c1891875d6b2b9180d65de9da8bbd27765997dd10f1c0378dbecef01d", null ] + ] ], + [ "EpidParseFileHeader", "group___file_parser.html#ga8e38d1102eb1dd9b5af2e2f79236da55", null ], + [ "EpidParseGroupPubKeyFile", "group___file_parser.html#ga43fdbc1bf2edd3695d21cb457365afbb", null ], + [ "EpidParseGroupRlFile", "group___file_parser.html#gad767f72dc55307b872a8b5600da3fd6f", null ], + [ "EpidParsePrivRlFile", "group___file_parser.html#gadc033fb23e3cbda56aa7e3d412060b7e", null ], + [ "EpidParseSigRlFile", "group___file_parser.html#ga237ef5a43076aa6fc6eb18829a93da3f", null ], + [ "kEpidFileTypeCode", "group___file_parser.html#ga3770c39a0546c79447c9d4159d794c33", null ], + [ "kEpidVersionCode", "group___file_parser.html#gaae808987ce82188dff42baa4e43cab82", null ] +]; \ No newline at end of file diff --git a/external/epid-sdk-3.0.0/doc/html/group___finite_field_primitives.html b/external/epid-sdk-3.0.0/doc/html/group___finite_field_primitives.html new file mode 100644 index 00000000..4d20c6ca --- /dev/null +++ b/external/epid-sdk-3.0.0/doc/html/group___finite_field_primitives.html @@ -0,0 +1,1328 @@ + + + + + + + +Intel® Enhanced Privacy ID SDK: finitefield + + + + + + + + + + + + +
    +
    + + + + + + +
    + +
    +
    + + +
    +
    + +
    +
    +
    + +
    +
    + +
    +
    finitefield
    +
    +
    + +

    Finite field operations. +More...

    + + + + + + + + +

    +Typedefs

    +typedef struct FiniteField FiniteField
     A finite field.
     
    +typedef struct FfElement FfElement
     An element in a finite field.
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    EpidStatus NewFiniteField (BigNumStr const *prime, FiniteField **ff)
     Creates new finite field. More...
     
    EpidStatus NewFiniteFieldViaBinomalExtension (FiniteField const *ground_field, FfElement const *ground_element, int degree, FiniteField **ff)
     Creates a new finite field using binomial extension. More...
     
    EpidStatus NewFiniteFieldViaPolynomialExtension (FiniteField const *ground_field, BigNumStr const *irr_polynomial, int degree, FiniteField **ff)
     Creates a new finite field using polynomial extension. More...
     
    void DeleteFiniteField (FiniteField **ff)
     Frees a previously allocated FiniteField. More...
     
    EpidStatus NewFfElement (FiniteField const *ff, FfElement **new_ff_elem)
     Creates a new finite field element. More...
     
    void DeleteFfElement (FfElement **ff_elem)
     Frees a previously allocated FfElement. More...
     
    EpidStatus ReadFfElement (FiniteField *ff, void const *ff_elem_str, size_t strlen, FfElement *ff_elem)
     Deserializes a FfElement from a string. More...
     
    EpidStatus InitFfElementFromBn (FiniteField *ff, BigNum *bn, FfElement *ff_elem)
     Initializes an existing FfElement from a BigNum. More...
     
    EpidStatus WriteFfElement (FiniteField *ff, FfElement const *ff_elem, void *ff_elem_str, size_t strlen)
     Serializes a finite field element to a string. More...
     
    EpidStatus FfNeg (FiniteField *ff, FfElement const *a, FfElement *r)
     Calculates the additive inverse of a finite field element. More...
     
    EpidStatus FfInv (FiniteField *ff, FfElement const *a, FfElement *r)
     Calculates the multiplicative inverse of a finite field element. More...
     
    EpidStatus FfAdd (FiniteField *ff, FfElement const *a, FfElement const *b, FfElement *r)
     Adds two finite field elements. More...
     
    EpidStatus FfSub (FiniteField *ff, FfElement const *a, FfElement const *b, FfElement *r)
     Subtracts two finite field elements. More...
     
    EpidStatus FfMul (FiniteField *ff, FfElement const *a, FfElement const *b, FfElement *r)
     Multiplies two finite field elements. More...
     
    EpidStatus FfIsZero (FiniteField *ff, FfElement const *a, bool *is_zero)
     Checks if given finite field element is the additive identity (zero). More...
     
    EpidStatus FfExp (FiniteField *ff, FfElement const *a, BigNum const *b, FfElement *r)
     Raises an element of a finite field to a power. More...
     
    EpidStatus FfMultiExp (FiniteField *ff, FfElement const **a, BigNumStr const **b, size_t m, FfElement *r)
     Multi-exponentiates finite field elements. More...
     
    EpidStatus FfMultiExpBn (FiniteField *ff, FfElement const **a, BigNum const **b, size_t m, FfElement *r)
     Multi-exponentiates finite field elements. More...
     
    EpidStatus FfSscmMultiExp (FiniteField *ff, FfElement const **a, BigNumStr const **b, size_t m, FfElement *r)
     Software side-channel mitigated implementation of FfMultiExp. More...
     
    EpidStatus FfIsEqual (FiniteField *ff, FfElement const *a, FfElement const *b, bool *is_equal)
     Checks if two finite field elements are equal. More...
     
    EpidStatus FfHash (FiniteField *ff, void const *msg, size_t msg_len, HashAlg hash_alg, FfElement *r)
     Hashes an arbitrary message to an element in a finite field. More...
     
    EpidStatus FfGetRandom (FiniteField *ff, BigNumStr const *low_bound, BitSupplier rnd_func, void *rnd_param, FfElement *r)
     Generate random finite field element. More...
     
    EpidStatus FfSqrt (FiniteField *ff, FfElement const *a, FfElement *r)
     Finds a square root of a finite field element. More...
     
    +

    Detailed Description

    +

    Finite field operations.

    +

    provides APIs for working with finite fields. Finite fields allow simple mathematical operations based on a finite set of discrete values. The results of these operations are also contained in the same set.

    +

    A simple example of a finite field is all integers from zero that are less than a given value.

    +

    The elements (FfElement) of a finite field can be used in a variety of simple mathematical operations that result in elements of the same field.

    +

    Function Documentation

    + +
    +
    + + + + + + + + +
    void DeleteFfElement (FfElement ** ff_elem)
    +
    + +

    Frees a previously allocated FfElement.

    +

    Frees memory pointed to by ff_elem. Nulls the pointer.

    +
    Parameters
    + + +
    [in]ff_elemThe finite field element. Can be NULL.
    +
    +
    +
    See also
    NewFfElement
    + +
    +
    + +
    +
    + + + + + + + + +
    void DeleteFiniteField (FiniteField ** ff)
    +
    + +

    Frees a previously allocated FiniteField.

    +

    Frees memory pointed to by finite field. Nulls the pointer.

    +
    Parameters
    + + +
    [in]ffThe Finite field. Can be NULL.
    +
    +
    +
    See also
    NewFiniteField
    + +
    +
    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    EpidStatus FfAdd (FiniteFieldff,
    FfElement const * a,
    FfElement const * b,
    FfElementr 
    )
    +
    + +

    Adds two finite field elements.

    +
    Parameters
    + + + + + +
    [in]ffThe finite field.
    [out]aThe first operand to be added.
    [out]bThe second operand to be added.
    [out]rThe result of adding a and b.
    +
    +
    +
    Returns
    EpidStatus
    + +
    +
    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    EpidStatus FfExp (FiniteFieldff,
    FfElement const * a,
    BigNum const * b,
    FfElementr 
    )
    +
    + +

    Raises an element of a finite field to a power.

    +
    Parameters
    + + + + + +
    [in]ffThe finite field in which to perform the operation
    [in]aThe base.
    [in]bThe power.
    [out]rThe result of raising a to the power b.
    +
    +
    +
    Returns
    EpidStatus
    +
    See also
    NewFiniteField
    +
    +NewFfElement
    + +
    +
    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    EpidStatus FfGetRandom (FiniteFieldff,
    BigNumStr const * low_bound,
    BitSupplier rnd_func,
    void * rnd_param,
    FfElementr 
    )
    +
    + +

    Generate random finite field element.

    +
    Parameters
    + + + + + + +
    [in]ffThe finite field associated with the random finite field element.
    [in]low_boundLower bound of the random finite field to be generated.
    [in]rnd_funcRandom number generator.
    [in]rnd_paramPass through context data for rnd_func.
    [in,out]rThe random finite field element.
    +
    +
    +
    Returns
    EpidStatus
    +
    Return values
    + + +
    kEpidRandMaxIterErrthe function should be called again with different random data.
    +
    +
    +
    See also
    NewFfElement
    +
    +BitSupplier
    + +
    +
    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    EpidStatus FfHash (FiniteFieldff,
    void const * msg,
    size_t msg_len,
    HashAlg hash_alg,
    FfElementr 
    )
    +
    + +

    Hashes an arbitrary message to an element in a finite field.

    +
    Parameters
    + + + + + + +
    [in]ffThe finite field.
    [in]msgThe message.
    [in]msg_lenThe size of msg in bytes.
    [in]hash_algThe hash algorithm.
    [out]rThe hashed value.
    +
    +
    +
    Returns
    EpidStatus
    +
    See also
    NewFiniteField
    +
    +NewFfElement
    + +
    +
    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    EpidStatus FfInv (FiniteFieldff,
    FfElement const * a,
    FfElementr 
    )
    +
    + +

    Calculates the multiplicative inverse of a finite field element.

    +
    Parameters
    + + + + +
    [in]ffThe finite field.
    [in]aThe element.
    [out]rThe inverted element.
    +
    +
    +
    Returns
    EpidStatus
    +
    See also
    NewFiniteField
    +
    +NewFfElement
    + +
    +
    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    EpidStatus FfIsEqual (FiniteFieldff,
    FfElement const * a,
    FfElement const * b,
    boolis_equal 
    )
    +
    + +

    Checks if two finite field elements are equal.

    +
    Parameters
    + + + + + +
    [in]ffThe finite field.
    [in]aAn element to check.
    [in]bAnother element to check.
    [out]is_equalThe result of the check.
    +
    +
    +
    Returns
    EpidStatus
    +
    See also
    NewEcGroup
    +
    +NewEcPoint
    + +
    +
    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    EpidStatus FfIsZero (FiniteFieldff,
    FfElement const * a,
    boolis_zero 
    )
    +
    + +

    Checks if given finite field element is the additive identity (zero).

    +
    Parameters
    + + + + +
    [in]ffThe finite field.
    [out]aThe element.
    [out]is_zeroThe result of the check.
    +
    +
    +
    Returns
    EpidStatus
    +
    See also
    NewFiniteField
    +
    +NewFfElement
    + +
    +
    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    EpidStatus FfMul (FiniteFieldff,
    FfElement const * a,
    FfElement const * b,
    FfElementr 
    )
    +
    + +

    Multiplies two finite field elements.

    +
    Parameters
    + + + + + +
    [in]ffThe finite field.
    [out]aThe first operand to be multplied.
    [out]bThe second operand to be multiplied. If ff is an extension field of a field F then this parameter may be an element of either ff or F.
    [out]rThe result of multiplying a and b.
    +
    +
    +
    Returns
    EpidStatus
    +
    See also
    NewFiniteField
    +
    +NewFfElement
    + +
    +
    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    EpidStatus FfMultiExp (FiniteFieldff,
    FfElement const ** a,
    BigNumStr const ** b,
    size_t m,
    FfElementr 
    )
    +
    + +

    Multi-exponentiates finite field elements.

    +

    Calculates FfExp(p[0],b[0]) * ... * FfExp(p[m-1],b[m-1]) for m > 1

    +
    Parameters
    + + + + + + +
    [in]ffThe finite field in which to perform the operation
    [in]aThe bases.
    [in]bThe powers.
    [in]mNumber of entries in a and b.
    [out]rThe result of raising each a to the corresponding power b and multiplying the results.
    +
    +
    +
    Returns
    EpidStatus
    +
    See also
    NewFiniteField
    +
    +NewFfElement
    + +
    +
    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    EpidStatus FfMultiExpBn (FiniteFieldff,
    FfElement const ** a,
    BigNum const ** b,
    size_t m,
    FfElementr 
    )
    +
    + +

    Multi-exponentiates finite field elements.

    +

    Calculates FfExp(p[0],b[0]) * ... * FfExp(p[m-1],b[m-1]) for m > 1

    +
    Parameters
    + + + + + + +
    [in]ffThe finite field in which to perform the operation
    [in]aThe bases.
    [in]bThe powers.
    [in]mNumber of entries in a and b.
    [out]rThe result of raising each a to the corresponding power b and multiplying the results.
    +
    +
    +
    Returns
    EpidStatus
    +
    See also
    NewFiniteField
    +
    +NewFfElement
    + +
    +
    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    EpidStatus FfNeg (FiniteFieldff,
    FfElement const * a,
    FfElementr 
    )
    +
    + +

    Calculates the additive inverse of a finite field element.

    +
    Parameters
    + + + + +
    [in]ffThe finite field.
    [in]aThe element.
    [out]rThe inverted element.
    +
    +
    +
    Returns
    EpidStatus
    +
    See also
    NewFiniteField
    +
    +NewFfElement
    + +
    +
    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    EpidStatus FfSqrt (FiniteFieldff,
    FfElement const * a,
    FfElementr 
    )
    +
    + +

    Finds a square root of a finite field element.

    +

    This function calculates the square root by the method of false position.

    +
    Parameters
    + + + + +
    [in]ffThe finite field in which to perform the operation
    [in]aThe bases.
    [out]rThe result of raising each a to the corresponding power b and multiplying the results.
    +
    +
    +
    Return values
    + + +
    kEpidMathQuadraticNonResidueErrorNo square root could be found.
    +
    +
    +
    Returns
    EpidStatus
    +
    See also
    NewFiniteField
    +
    +NewFfElement
    + +
    +
    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    EpidStatus FfSscmMultiExp (FiniteFieldff,
    FfElement const ** a,
    BigNumStr const ** b,
    size_t m,
    FfElementr 
    )
    +
    + +

    Software side-channel mitigated implementation of FfMultiExp.

    +

    Calculates FfExp(p[0],b[0]) * ... * FfExp(p[m-1],b[m-1]) for m > 1

    +
    Attention
    The reference implementation of FfSscmMultiExp calls FfMultiExp directly because the implementation of FfMultiExp is already side channel mitigated. Implementers providing their own versions of this function are responsible for ensuring that FfSscmMultiExp is side channel mitigated per section 8 of the Intel(R) EPID 2.0 spec.
    +
    Parameters
    + + + + + + +
    [in]ffThe finite field in which to perform the operation.
    [in]aThe bases.
    [in]bThe powers.
    [in]mNumber of entries in a and b.
    [out]rThe result of raising each a to the corresponding power b and multiplying the results.
    +
    +
    +
    Returns
    EpidStatus
    +
    See also
    NewFiniteField
    +
    +NewFfElement
    + +
    +
    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    EpidStatus FfSub (FiniteFieldff,
    FfElement const * a,
    FfElement const * b,
    FfElementr 
    )
    +
    + +

    Subtracts two finite field elements.

    +
    Note
    Only needed for Intel(R) EPID 1.1 verification.
    +
    Parameters
    + + + + + +
    [in]ffThe finite field.
    [out]aThe first operand to use in subtraction.
    [out]bThe second operand to use in subtraction.
    [out]rThe result of subtracting a and b.
    +
    +
    +
    Returns
    EpidStatus
    + +
    +
    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    EpidStatus InitFfElementFromBn (FiniteFieldff,
    BigNumbn,
    FfElementff_elem 
    )
    +
    + +

    Initializes an existing FfElement from a BigNum.

    +
    Parameters
    + + + + +
    [in]ffThe finite field. Must be a Prime Field.
    [in]bnThe value to read.
    [out]ff_elemThe target FfElement.
    +
    +
    +
    Returns
    EpidStatus
    +
    See also
    NewFfElement
    +
    +WriteFfElement
    + +
    +
    + +
    +
    + + + + + + + + + + + + + + + + + + +
    EpidStatus NewFfElement (FiniteField const * ff,
    FfElement ** new_ff_elem 
    )
    +
    + +

    Creates a new finite field element.

    +

    Allocates memory and creates a new finite field element.

    +

    Use DeleteFfElement() to free memory.

    +
    Parameters
    + + + +
    [in]ffThe finite field.
    [out]new_ff_elemThe Newly constructed finite field element.
    +
    +
    +
    Returns
    EpidStatus
    +
    See also
    NewFiniteField
    +
    +DeleteFfElement
    + +
    +
    + +
    +
    + + + + + + + + + + + + + + + + + + +
    EpidStatus NewFiniteField (BigNumStr const * prime,
    FiniteField ** ff 
    )
    +
    + +

    Creates new finite field.

    +

    Allocates memory and creates a new finite field GF(prime).

    +

    Use DeleteFiniteField() to free memory.

    +
    Parameters
    + + + +
    [in]primeThe order of the finite field.
    [out]ffThe newly constructed finite field.
    +
    +
    +
    Returns
    EpidStatus
    +
    See also
    DeleteFiniteField
    + +
    +
    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    EpidStatus NewFiniteFieldViaBinomalExtension (FiniteField const * ground_field,
    FfElement const * ground_element,
    int degree,
    FiniteField ** ff 
    )
    +
    + +

    Creates a new finite field using binomial extension.

    +

    Allocates memory and creates a finite field using binomial extension.

    +

    Use DeleteFiniteField() to free memory.

    +
    Parameters
    + + + + + +
    [in]ground_fieldThe ground field.
    [in]ground_elementThe low-order term of the extension.
    [in]degreeThe degree of the extension.
    [out]ffThe newly constructed finite field.
    +
    +
    +
    Returns
    EpidStatus
    +
    See also
    DeleteFiniteField
    + +
    +
    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    EpidStatus NewFiniteFieldViaPolynomialExtension (FiniteField const * ground_field,
    BigNumStr const * irr_polynomial,
    int degree,
    FiniteField ** ff 
    )
    +
    + +

    Creates a new finite field using polynomial extension.

    +

    Allocates memory and creates a finite field using polynomial extension.

    +

    Use DeleteFiniteField() to free memory.

    +
    Note
    Only needed for Intel(R) EPID 1.1 verification.
    +
    Parameters
    + + + + + +
    [in]ground_fieldThe ground field.
    [in]irr_polynomialArray with coefficients of the irreducible polynomial. Number of elements must be equal to the degree of the extension.
    [in]degreeThe degree of the extension.
    [out]ffThe newly constructed finite field.
    +
    +
    +
    Returns
    EpidStatus
    +
    See also
    DeleteFiniteField
    + +
    +
    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    EpidStatus ReadFfElement (FiniteFieldff,
    void const * ff_elem_str,
    size_t strlen,
    FfElementff_elem 
    )
    +
    + +

    Deserializes a FfElement from a string.

    +
    Parameters
    + + + + + +
    [in]ffThe finite field.
    [in]ff_elem_strThe serialized value.
    [in]strlenThe size of ff_elem_str in bytes.
    [out]ff_elemThe target FfElement.
    +
    +
    +
    Returns
    EpidStatus
    +
    See also
    NewFfElement
    +
    +WriteFfElement
    + +
    +
    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    EpidStatus WriteFfElement (FiniteFieldff,
    FfElement const * ff_elem,
    void * ff_elem_str,
    size_t strlen 
    )
    +
    + +

    Serializes a finite field element to a string.

    +
    Parameters
    + + + + + +
    [in]ffThe finite field.
    [in]ff_elemThe FfElement to be serialized.
    [out]ff_elem_strThe target string.
    [in]strlenThe size of ff_elem_str in bytes.
    +
    +
    +
    Returns
    EpidStatus
    +
    See also
    NewFfElement
    +
    +FpElemStr
    +
    +FqElemStr
    +
    +GtElemStr
    + +
    +
    +
    +
    + + + + + diff --git a/external/epid-sdk-3.0.0/doc/html/group___finite_field_primitives.js b/external/epid-sdk-3.0.0/doc/html/group___finite_field_primitives.js new file mode 100644 index 00000000..5d2ad45e --- /dev/null +++ b/external/epid-sdk-3.0.0/doc/html/group___finite_field_primitives.js @@ -0,0 +1,28 @@ +var group___finite_field_primitives = +[ + [ "FfElement", "group___finite_field_primitives.html#ga6cff5c7c06b07a87442b810ccc0a86fa", null ], + [ "FiniteField", "group___finite_field_primitives.html#gab281b24e336a8b3d7d90079d862d969e", null ], + [ "DeleteFfElement", "group___finite_field_primitives.html#ga1bad3c6945d1d709fceb07a1dd03000e", null ], + [ "DeleteFiniteField", "group___finite_field_primitives.html#gacbdd2871ecf93dadaac9d2c5b16e1e5f", null ], + [ "FfAdd", "group___finite_field_primitives.html#ga1a6e6d3c2319bb24eae8670b021e223b", null ], + [ "FfExp", "group___finite_field_primitives.html#gaf0ddbc1bad048d67771cba119eb44a6c", null ], + [ "FfGetRandom", "group___finite_field_primitives.html#ga6622db072782fd9e53b4d59dd3dbd8e8", null ], + [ "FfHash", "group___finite_field_primitives.html#ga18a952cebb4a1274c73e6cb0c19e8aea", null ], + [ "FfInv", "group___finite_field_primitives.html#ga26069d035d0f6ade33af2b5d5c14949a", null ], + [ "FfIsEqual", "group___finite_field_primitives.html#gaed2acb8583e9c9f6b49fdb660c672625", null ], + [ "FfIsZero", "group___finite_field_primitives.html#ga20d9140e5670d679ef8183d9b5115f53", null ], + [ "FfMul", "group___finite_field_primitives.html#ga4613a75bd001a974b3e3e494c3a112a5", null ], + [ "FfMultiExp", "group___finite_field_primitives.html#ga84d21decc1c957bcf6e98e1492eb2ac3", null ], + [ "FfMultiExpBn", "group___finite_field_primitives.html#ga1ef46fc83f9c11263a2aa1ec906c9144", null ], + [ "FfNeg", "group___finite_field_primitives.html#gae7a8c7503b6fc7a41bcaab4d45ca37b2", null ], + [ "FfSqrt", "group___finite_field_primitives.html#ga39892fe2ab431e166dbbcf57756660f6", null ], + [ "FfSscmMultiExp", "group___finite_field_primitives.html#ga0d0c31a22bbfb665a16b2d25b0cd2634", null ], + [ "FfSub", "group___finite_field_primitives.html#ga59d20610f245ff4bc3a17b7bfe289991", null ], + [ "InitFfElementFromBn", "group___finite_field_primitives.html#ga90b2c192708973b54b7a3e82b34536ed", null ], + [ "NewFfElement", "group___finite_field_primitives.html#gacc54f315ede2dbeb8c5990c024a0de6c", null ], + [ "NewFiniteField", "group___finite_field_primitives.html#ga7d99fdc5e4573668a5744e49df7ab67c", null ], + [ "NewFiniteFieldViaBinomalExtension", "group___finite_field_primitives.html#ga83041e3be9984a4bd8f1021934bfa3a2", null ], + [ "NewFiniteFieldViaPolynomialExtension", "group___finite_field_primitives.html#gae69af62a03179718cac81b004549c598", null ], + [ "ReadFfElement", "group___finite_field_primitives.html#ga884d9e1baadf29a410244a735853e3c7", null ], + [ "WriteFfElement", "group___finite_field_primitives.html#ga678694636708463b078d842d5c58a900", null ] +]; \ No newline at end of file diff --git a/external/epid-sdk-3.0.0/doc/html/group___hash_primitives.html b/external/epid-sdk-3.0.0/doc/html/group___hash_primitives.html new file mode 100644 index 00000000..4a31fcbb --- /dev/null +++ b/external/epid-sdk-3.0.0/doc/html/group___hash_primitives.html @@ -0,0 +1,142 @@ + + + + + + + +Intel® Enhanced Privacy ID SDK: hash + + + + + + + + + + + + +
    +
    + + + + + + +
    + +
    +
    + + +
    +
    + +
    +
    +
    + +
    +
    + +
    +
    hash
    +
    +
    + +

    Hash primitives. +More...

    + + + + + +

    +Data Structures

    struct  Sha256Digest
     SHA256 digest. More...
     
    + + + + +

    +Functions

    EpidStatus Sha256MessageDigest (void const *msg, size_t len, Sha256Digest *digest)
     Computes SHA256 digest of a message. More...
     
    +

    Detailed Description

    +

    Hash primitives.

    +

    Provides APIs for computing digests of messages.

    +

    Function Documentation

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    EpidStatus Sha256MessageDigest (void const * msg,
    size_t len,
    Sha256Digestdigest 
    )
    +
    + +

    Computes SHA256 digest of a message.

    +
    Parameters
    + + + + +
    [in]msgMessage to compute digest for.
    [in]lenThe size of msg in bytes.
    [out]digestThe resulting message digest.
    +
    +
    +
    Returns
    EpidStatus
    + +
    +
    +
    +
    + + + + + diff --git a/external/epid-sdk-3.0.0/doc/html/group___hash_primitives.js b/external/epid-sdk-3.0.0/doc/html/group___hash_primitives.js new file mode 100644 index 00000000..14b92829 --- /dev/null +++ b/external/epid-sdk-3.0.0/doc/html/group___hash_primitives.js @@ -0,0 +1,7 @@ +var group___hash_primitives = +[ + [ "Sha256Digest", "struct_sha256_digest.html", [ + [ "data", "struct_sha256_digest.html#a4b6462ddd3f89e4c40220ceb6b1c7f28", null ] + ] ], + [ "Sha256MessageDigest", "group___hash_primitives.html#ga86d62aac9efd7445acee311b41846c6c", null ] +]; \ No newline at end of file diff --git a/external/epid-sdk-3.0.0/doc/html/group___pairing_primitives.html b/external/epid-sdk-3.0.0/doc/html/group___pairing_primitives.html new file mode 100644 index 00000000..0ca3e2a5 --- /dev/null +++ b/external/epid-sdk-3.0.0/doc/html/group___pairing_primitives.html @@ -0,0 +1,256 @@ + + + + + + + +Intel® Enhanced Privacy ID SDK: pairing + + + + + + + + + + + + +
    +
    + + + + + + +
    + +
    +
    + + +
    +
    + +
    +
    +
    + +
    +
    + +
    +
    pairing
    +
    +
    + +

    Pairing operations. +More...

    + + + + + +

    +Modules

     EPID 1.1 specific pairing
     EPID 1.1 pairing operations.
     
    + + + + +

    +Typedefs

    +typedef struct PairingState PairingState
     A pairing.
     
    + + + + + + + + + + +

    +Functions

    EpidStatus NewPairingState (EcGroup const *ga, EcGroup const *gb, FiniteField *ff, BigNumStr const *t, bool neg, PairingState **ps)
     Constructs a new pairing state. More...
     
    void DeletePairingState (PairingState **ps)
     Frees a previously allocated by PairingState. More...
     
    EpidStatus Pairing (PairingState *ps, FfElement *d, EcPoint const *a, EcPoint const *b)
     Computes an Optimal Ate Pairing for two parameters. More...
     
    +

    Detailed Description

    +

    Pairing operations.

    +

    Provides APIs for defining and using a pairing relationship between two elliptic curve groups.

    +

    Function Documentation

    + +
    +
    + + + + + + + + +
    void DeletePairingState (PairingState ** ps)
    +
    + +

    Frees a previously allocated by PairingState.

    +

    Frees memory pointed to by pairing state. Nulls the pointer.

    +
    Parameters
    + + +
    [in]psThe pairing state. Can be NULL.
    +
    +
    +
    See also
    NewPairingState
    + +
    +
    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    EpidStatus NewPairingState (EcGroup const * ga,
    EcGroup const * gb,
    FiniteFieldff,
    BigNumStr const * t,
    bool neg,
    PairingState ** ps 
    )
    +
    + +

    Constructs a new pairing state.

    +

    Allocates memory and creates a new pairing state for Optimal Ate Pairing.

    +

    Use DeletePairingState() to free memory.

    +
    Parameters
    + + + + + + + +
    [in]gaThe EcGroup from which the first parameter of the pairing is taken.
    [in]gbThe EcGroup from which the second parameter of the pairing is taken.
    [in]ffThe result finite field. Must be a Fq12 field.
    [in]tA positive integer such that 6(t^2) == q - p, where p and q are parameters of G1.
    [in]negSelect the alternate "negate" processing path for Optimal Ate Pairing.
    [out]psNewly constructed pairing state.
    +
    +
    +
    Returns
    EpidStatus
    +
    See also
    DeletePairingState
    + +
    +
    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    EpidStatus Pairing (PairingStateps,
    FfElementd,
    EcPoint const * a,
    EcPoint const * b 
    )
    +
    + +

    Computes an Optimal Ate Pairing for two parameters.

    +
    Parameters
    + + + + + +
    [in]psThe pairing state.
    [out]dThe result of the pairing. Will be in ff used to create the pairing state.
    [in]aThe first value to pair. Must be in ga used to create ps.
    [in]bThe second value to pair. Must be in gb used to create ps
    +
    +
    +
    Returns
    EpidStatus
    + +
    +
    +
    +
    + + + + + diff --git a/external/epid-sdk-3.0.0/doc/html/group___pairing_primitives.js b/external/epid-sdk-3.0.0/doc/html/group___pairing_primitives.js new file mode 100644 index 00000000..a594ea74 --- /dev/null +++ b/external/epid-sdk-3.0.0/doc/html/group___pairing_primitives.js @@ -0,0 +1,8 @@ +var group___pairing_primitives = +[ + [ "EPID 1.1 specific pairing", "group___epid11_pairing_primitives.html", "group___epid11_pairing_primitives" ], + [ "PairingState", "group___pairing_primitives.html#ga3f1fa61d25487f96dfb0ffef4ad35607", null ], + [ "DeletePairingState", "group___pairing_primitives.html#gad54aebdc331d39b73000fdca9e04f94d", null ], + [ "NewPairingState", "group___pairing_primitives.html#ga29f79a645871830754d396b9b4a2a0cc", null ], + [ "Pairing", "group___pairing_primitives.html#ga5dd07d13536e27c37eaeee285297066c", null ] +]; \ No newline at end of file diff --git a/external/epid-sdk-3.0.0/doc/html/hash_8h.html b/external/epid-sdk-3.0.0/doc/html/hash_8h.html new file mode 100644 index 00000000..1e6252ab --- /dev/null +++ b/external/epid-sdk-3.0.0/doc/html/hash_8h.html @@ -0,0 +1,102 @@ + + + + + + + +Intel® Enhanced Privacy ID SDK: epid/common/math/hash.h File Reference + + + + + + + + + + + + +
    +
    + + + + + + +
    + +
    +
    + + +
    +
    + +
    +
    +
    + +
    +
    + +
    +
    hash.h File Reference
    +
    +
    + +

    Hash primitives. +More...

    +
    #include <stddef.h>
    +#include <stdint.h>
    +#include <limits.h>
    +#include "epid/common/errors.h"
    +
    + + + + +

    +Data Structures

    struct  Sha256Digest
     SHA256 digest. More...
     
    + + + + +

    +Functions

    EpidStatus Sha256MessageDigest (void const *msg, size_t len, Sha256Digest *digest)
     Computes SHA256 digest of a message. More...
     
    +

    Detailed Description

    +

    Hash primitives.

    +
    +
    + + + + + diff --git a/external/epid-sdk-3.0.0/doc/html/implementation__notes_8dox.html b/external/epid-sdk-3.0.0/doc/html/implementation__notes_8dox.html new file mode 100644 index 00000000..a07d4bc7 --- /dev/null +++ b/external/epid-sdk-3.0.0/doc/html/implementation__notes_8dox.html @@ -0,0 +1,82 @@ + + + + + + + +Intel® Enhanced Privacy ID SDK: doc/docsrc/implementation_notes.dox File Reference + + + + + + + + + + + + +
    +
    + + + + + + +
    + +
    +
    + + +
    +
    + +
    +
    +
    + +
    +
    +
    +
    doc/docsrc/implementation_notes.dox File Reference
    +
    +
    + +

    This file is used by Doxygen to generate documentation. +More...

    +

    Detailed Description

    +

    This file is used by Doxygen to generate documentation.

    +
    +
    + + + + + diff --git a/external/epid-sdk-3.0.0/doc/html/index.html b/external/epid-sdk-3.0.0/doc/html/index.html new file mode 100644 index 00000000..7b34b803 --- /dev/null +++ b/external/epid-sdk-3.0.0/doc/html/index.html @@ -0,0 +1,78 @@ + + + + + + + +Intel® Enhanced Privacy ID SDK: Introducing the Intel® EPID SDK + + + + + + + + + + + + +
    +
    + + + + + + +
    + +
    +
    + + +
    +
    + +
    +
    +
    + +
    +
    +
    +
    Introducing the Intel® EPID SDK
    +
    +
    +

    Intel® EPID is a cryptographic protocol which enables the remote authentication of a trusted platform whilst preserving the user's privacy.

    +

    The Intel® EPID Software Development Kit provides an implementation of the Intel® EPID specification that developers can use when developing their own applications using Intel® EPID technology.

    +
    +
    + + + + + diff --git a/external/epid-sdk-3.0.0/doc/html/issuer__material_8dox.html b/external/epid-sdk-3.0.0/doc/html/issuer__material_8dox.html new file mode 100644 index 00000000..5a3a47e8 --- /dev/null +++ b/external/epid-sdk-3.0.0/doc/html/issuer__material_8dox.html @@ -0,0 +1,82 @@ + + + + + + + +Intel® Enhanced Privacy ID SDK: doc/docsrc/issuer_material.dox File Reference + + + + + + + + + + + + +
    +
    + + + + + + +
    + +
    +
    + + +
    +
    + +
    +
    +
    + +
    +
    +
    +
    doc/docsrc/issuer_material.dox File Reference
    +
    +
    + +

    This file is used by Doxygen to generate documentation. +More...

    +

    Detailed Description

    +

    This file is used by Doxygen to generate documentation.

    +
    +
    + + + + + diff --git a/external/epid-sdk-3.0.0/doc/html/jquery.js b/external/epid-sdk-3.0.0/doc/html/jquery.js new file mode 100644 index 00000000..1f4d0b47 --- /dev/null +++ b/external/epid-sdk-3.0.0/doc/html/jquery.js @@ -0,0 +1,68 @@ +/*! + * jQuery JavaScript Library v1.7.1 + * http://jquery.com/ + * + * Copyright 2011, John Resig + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * Includes Sizzle.js + * http://sizzlejs.com/ + * Copyright 2011, The Dojo Foundation + * Released under the MIT, BSD, and GPL Licenses. + * + * Date: Mon Nov 21 21:11:03 2011 -0500 + */ +(function(bb,L){var av=bb.document,bu=bb.navigator,bl=bb.location;var b=(function(){var bF=function(b0,b1){return new bF.fn.init(b0,b1,bD)},bU=bb.jQuery,bH=bb.$,bD,bY=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,bM=/\S/,bI=/^\s+/,bE=/\s+$/,bA=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,bN=/^[\],:{}\s]*$/,bW=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,bP=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,bJ=/(?:^|:|,)(?:\s*\[)+/g,by=/(webkit)[ \/]([\w.]+)/,bR=/(opera)(?:.*version)?[ \/]([\w.]+)/,bQ=/(msie) ([\w.]+)/,bS=/(mozilla)(?:.*? rv:([\w.]+))?/,bB=/-([a-z]|[0-9])/ig,bZ=/^-ms-/,bT=function(b0,b1){return(b1+"").toUpperCase()},bX=bu.userAgent,bV,bC,e,bL=Object.prototype.toString,bG=Object.prototype.hasOwnProperty,bz=Array.prototype.push,bK=Array.prototype.slice,bO=String.prototype.trim,bv=Array.prototype.indexOf,bx={};bF.fn=bF.prototype={constructor:bF,init:function(b0,b4,b3){var b2,b5,b1,b6;if(!b0){return this}if(b0.nodeType){this.context=this[0]=b0;this.length=1;return this}if(b0==="body"&&!b4&&av.body){this.context=av;this[0]=av.body;this.selector=b0;this.length=1;return this}if(typeof b0==="string"){if(b0.charAt(0)==="<"&&b0.charAt(b0.length-1)===">"&&b0.length>=3){b2=[null,b0,null]}else{b2=bY.exec(b0)}if(b2&&(b2[1]||!b4)){if(b2[1]){b4=b4 instanceof bF?b4[0]:b4;b6=(b4?b4.ownerDocument||b4:av);b1=bA.exec(b0);if(b1){if(bF.isPlainObject(b4)){b0=[av.createElement(b1[1])];bF.fn.attr.call(b0,b4,true)}else{b0=[b6.createElement(b1[1])]}}else{b1=bF.buildFragment([b2[1]],[b6]);b0=(b1.cacheable?bF.clone(b1.fragment):b1.fragment).childNodes}return bF.merge(this,b0)}else{b5=av.getElementById(b2[2]);if(b5&&b5.parentNode){if(b5.id!==b2[2]){return b3.find(b0)}this.length=1;this[0]=b5}this.context=av;this.selector=b0;return this}}else{if(!b4||b4.jquery){return(b4||b3).find(b0)}else{return this.constructor(b4).find(b0)}}}else{if(bF.isFunction(b0)){return b3.ready(b0)}}if(b0.selector!==L){this.selector=b0.selector;this.context=b0.context}return bF.makeArray(b0,this)},selector:"",jquery:"1.7.1",length:0,size:function(){return this.length},toArray:function(){return bK.call(this,0)},get:function(b0){return b0==null?this.toArray():(b0<0?this[this.length+b0]:this[b0])},pushStack:function(b1,b3,b0){var b2=this.constructor();if(bF.isArray(b1)){bz.apply(b2,b1)}else{bF.merge(b2,b1)}b2.prevObject=this;b2.context=this.context;if(b3==="find"){b2.selector=this.selector+(this.selector?" ":"")+b0}else{if(b3){b2.selector=this.selector+"."+b3+"("+b0+")"}}return b2},each:function(b1,b0){return bF.each(this,b1,b0)},ready:function(b0){bF.bindReady();bC.add(b0);return this},eq:function(b0){b0=+b0;return b0===-1?this.slice(b0):this.slice(b0,b0+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(bK.apply(this,arguments),"slice",bK.call(arguments).join(","))},map:function(b0){return this.pushStack(bF.map(this,function(b2,b1){return b0.call(b2,b1,b2)}))},end:function(){return this.prevObject||this.constructor(null)},push:bz,sort:[].sort,splice:[].splice};bF.fn.init.prototype=bF.fn;bF.extend=bF.fn.extend=function(){var b9,b2,b0,b1,b6,b7,b5=arguments[0]||{},b4=1,b3=arguments.length,b8=false;if(typeof b5==="boolean"){b8=b5;b5=arguments[1]||{};b4=2}if(typeof b5!=="object"&&!bF.isFunction(b5)){b5={}}if(b3===b4){b5=this;--b4}for(;b40){return}bC.fireWith(av,[bF]);if(bF.fn.trigger){bF(av).trigger("ready").off("ready")}}},bindReady:function(){if(bC){return}bC=bF.Callbacks("once memory");if(av.readyState==="complete"){return setTimeout(bF.ready,1)}if(av.addEventListener){av.addEventListener("DOMContentLoaded",e,false);bb.addEventListener("load",bF.ready,false)}else{if(av.attachEvent){av.attachEvent("onreadystatechange",e);bb.attachEvent("onload",bF.ready);var b0=false;try{b0=bb.frameElement==null}catch(b1){}if(av.documentElement.doScroll&&b0){bw()}}}},isFunction:function(b0){return bF.type(b0)==="function"},isArray:Array.isArray||function(b0){return bF.type(b0)==="array"},isWindow:function(b0){return b0&&typeof b0==="object"&&"setInterval" in b0},isNumeric:function(b0){return !isNaN(parseFloat(b0))&&isFinite(b0)},type:function(b0){return b0==null?String(b0):bx[bL.call(b0)]||"object"},isPlainObject:function(b2){if(!b2||bF.type(b2)!=="object"||b2.nodeType||bF.isWindow(b2)){return false}try{if(b2.constructor&&!bG.call(b2,"constructor")&&!bG.call(b2.constructor.prototype,"isPrototypeOf")){return false}}catch(b1){return false}var b0;for(b0 in b2){}return b0===L||bG.call(b2,b0)},isEmptyObject:function(b1){for(var b0 in b1){return false}return true},error:function(b0){throw new Error(b0)},parseJSON:function(b0){if(typeof b0!=="string"||!b0){return null}b0=bF.trim(b0);if(bb.JSON&&bb.JSON.parse){return bb.JSON.parse(b0)}if(bN.test(b0.replace(bW,"@").replace(bP,"]").replace(bJ,""))){return(new Function("return "+b0))()}bF.error("Invalid JSON: "+b0)},parseXML:function(b2){var b0,b1;try{if(bb.DOMParser){b1=new DOMParser();b0=b1.parseFromString(b2,"text/xml")}else{b0=new ActiveXObject("Microsoft.XMLDOM");b0.async="false";b0.loadXML(b2)}}catch(b3){b0=L}if(!b0||!b0.documentElement||b0.getElementsByTagName("parsererror").length){bF.error("Invalid XML: "+b2)}return b0},noop:function(){},globalEval:function(b0){if(b0&&bM.test(b0)){(bb.execScript||function(b1){bb["eval"].call(bb,b1)})(b0)}},camelCase:function(b0){return b0.replace(bZ,"ms-").replace(bB,bT)},nodeName:function(b1,b0){return b1.nodeName&&b1.nodeName.toUpperCase()===b0.toUpperCase()},each:function(b3,b6,b2){var b1,b4=0,b5=b3.length,b0=b5===L||bF.isFunction(b3);if(b2){if(b0){for(b1 in b3){if(b6.apply(b3[b1],b2)===false){break}}}else{for(;b40&&b0[0]&&b0[b1-1])||b1===0||bF.isArray(b0));if(b3){for(;b21?aJ.call(arguments,0):bG;if(!(--bw)){bC.resolveWith(bC,bx)}}}function bz(bF){return function(bG){bB[bF]=arguments.length>1?aJ.call(arguments,0):bG;bC.notifyWith(bE,bB)}}if(e>1){for(;bv
    a";bI=bv.getElementsByTagName("*");bF=bv.getElementsByTagName("a")[0];if(!bI||!bI.length||!bF){return{}}bG=av.createElement("select");bx=bG.appendChild(av.createElement("option"));bE=bv.getElementsByTagName("input")[0];bJ={leadingWhitespace:(bv.firstChild.nodeType===3),tbody:!bv.getElementsByTagName("tbody").length,htmlSerialize:!!bv.getElementsByTagName("link").length,style:/top/.test(bF.getAttribute("style")),hrefNormalized:(bF.getAttribute("href")==="/a"),opacity:/^0.55/.test(bF.style.opacity),cssFloat:!!bF.style.cssFloat,checkOn:(bE.value==="on"),optSelected:bx.selected,getSetAttribute:bv.className!=="t",enctype:!!av.createElement("form").enctype,html5Clone:av.createElement("nav").cloneNode(true).outerHTML!=="<:nav>",submitBubbles:true,changeBubbles:true,focusinBubbles:false,deleteExpando:true,noCloneEvent:true,inlineBlockNeedsLayout:false,shrinkWrapBlocks:false,reliableMarginRight:true};bE.checked=true;bJ.noCloneChecked=bE.cloneNode(true).checked;bG.disabled=true;bJ.optDisabled=!bx.disabled;try{delete bv.test}catch(bC){bJ.deleteExpando=false}if(!bv.addEventListener&&bv.attachEvent&&bv.fireEvent){bv.attachEvent("onclick",function(){bJ.noCloneEvent=false});bv.cloneNode(true).fireEvent("onclick")}bE=av.createElement("input");bE.value="t";bE.setAttribute("type","radio");bJ.radioValue=bE.value==="t";bE.setAttribute("checked","checked");bv.appendChild(bE);bD=av.createDocumentFragment();bD.appendChild(bv.lastChild);bJ.checkClone=bD.cloneNode(true).cloneNode(true).lastChild.checked;bJ.appendChecked=bE.checked;bD.removeChild(bE);bD.appendChild(bv);bv.innerHTML="";if(bb.getComputedStyle){bA=av.createElement("div");bA.style.width="0";bA.style.marginRight="0";bv.style.width="2px";bv.appendChild(bA);bJ.reliableMarginRight=(parseInt((bb.getComputedStyle(bA,null)||{marginRight:0}).marginRight,10)||0)===0}if(bv.attachEvent){for(by in {submit:1,change:1,focusin:1}){bB="on"+by;bw=(bB in bv);if(!bw){bv.setAttribute(bB,"return;");bw=(typeof bv[bB]==="function")}bJ[by+"Bubbles"]=bw}}bD.removeChild(bv);bD=bG=bx=bA=bv=bE=null;b(function(){var bM,bU,bV,bT,bN,bO,bL,bS,bR,e,bP,bQ=av.getElementsByTagName("body")[0];if(!bQ){return}bL=1;bS="position:absolute;top:0;left:0;width:1px;height:1px;margin:0;";bR="visibility:hidden;border:0;";e="style='"+bS+"border:5px solid #000;padding:0;'";bP="
    ";bM=av.createElement("div");bM.style.cssText=bR+"width:0;height:0;position:static;top:0;margin-top:"+bL+"px";bQ.insertBefore(bM,bQ.firstChild);bv=av.createElement("div");bM.appendChild(bv);bv.innerHTML="
    t
    ";bz=bv.getElementsByTagName("td");bw=(bz[0].offsetHeight===0);bz[0].style.display="";bz[1].style.display="none";bJ.reliableHiddenOffsets=bw&&(bz[0].offsetHeight===0);bv.innerHTML="";bv.style.width=bv.style.paddingLeft="1px";b.boxModel=bJ.boxModel=bv.offsetWidth===2;if(typeof bv.style.zoom!=="undefined"){bv.style.display="inline";bv.style.zoom=1;bJ.inlineBlockNeedsLayout=(bv.offsetWidth===2);bv.style.display="";bv.innerHTML="
    ";bJ.shrinkWrapBlocks=(bv.offsetWidth!==2)}bv.style.cssText=bS+bR;bv.innerHTML=bP;bU=bv.firstChild;bV=bU.firstChild;bN=bU.nextSibling.firstChild.firstChild;bO={doesNotAddBorder:(bV.offsetTop!==5),doesAddBorderForTableAndCells:(bN.offsetTop===5)};bV.style.position="fixed";bV.style.top="20px";bO.fixedPosition=(bV.offsetTop===20||bV.offsetTop===15);bV.style.position=bV.style.top="";bU.style.overflow="hidden";bU.style.position="relative";bO.subtractsBorderForOverflowNotVisible=(bV.offsetTop===-5);bO.doesNotIncludeMarginInBodyOffset=(bQ.offsetTop!==bL);bQ.removeChild(bM);bv=bM=null;b.extend(bJ,bO)});return bJ})();var aS=/^(?:\{.*\}|\[.*\])$/,aA=/([A-Z])/g;b.extend({cache:{},uuid:0,expando:"jQuery"+(b.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:true,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:true},hasData:function(e){e=e.nodeType?b.cache[e[b.expando]]:e[b.expando];return !!e&&!S(e)},data:function(bx,bv,bz,by){if(!b.acceptData(bx)){return}var bG,bA,bD,bE=b.expando,bC=typeof bv==="string",bF=bx.nodeType,e=bF?b.cache:bx,bw=bF?bx[bE]:bx[bE]&&bE,bB=bv==="events";if((!bw||!e[bw]||(!bB&&!by&&!e[bw].data))&&bC&&bz===L){return}if(!bw){if(bF){bx[bE]=bw=++b.uuid}else{bw=bE}}if(!e[bw]){e[bw]={};if(!bF){e[bw].toJSON=b.noop}}if(typeof bv==="object"||typeof bv==="function"){if(by){e[bw]=b.extend(e[bw],bv)}else{e[bw].data=b.extend(e[bw].data,bv)}}bG=bA=e[bw];if(!by){if(!bA.data){bA.data={}}bA=bA.data}if(bz!==L){bA[b.camelCase(bv)]=bz}if(bB&&!bA[bv]){return bG.events}if(bC){bD=bA[bv];if(bD==null){bD=bA[b.camelCase(bv)]}}else{bD=bA}return bD},removeData:function(bx,bv,by){if(!b.acceptData(bx)){return}var bB,bA,bz,bC=b.expando,bD=bx.nodeType,e=bD?b.cache:bx,bw=bD?bx[bC]:bC;if(!e[bw]){return}if(bv){bB=by?e[bw]:e[bw].data;if(bB){if(!b.isArray(bv)){if(bv in bB){bv=[bv]}else{bv=b.camelCase(bv);if(bv in bB){bv=[bv]}else{bv=bv.split(" ")}}}for(bA=0,bz=bv.length;bA-1){return true}}return false},val:function(bx){var e,bv,by,bw=this[0];if(!arguments.length){if(bw){e=b.valHooks[bw.nodeName.toLowerCase()]||b.valHooks[bw.type];if(e&&"get" in e&&(bv=e.get(bw,"value"))!==L){return bv}bv=bw.value;return typeof bv==="string"?bv.replace(aU,""):bv==null?"":bv}return}by=b.isFunction(bx);return this.each(function(bA){var bz=b(this),bB;if(this.nodeType!==1){return}if(by){bB=bx.call(this,bA,bz.val())}else{bB=bx}if(bB==null){bB=""}else{if(typeof bB==="number"){bB+=""}else{if(b.isArray(bB)){bB=b.map(bB,function(bC){return bC==null?"":bC+""})}}}e=b.valHooks[this.nodeName.toLowerCase()]||b.valHooks[this.type];if(!e||!("set" in e)||e.set(this,bB,"value")===L){this.value=bB}})}});b.extend({valHooks:{option:{get:function(e){var bv=e.attributes.value;return !bv||bv.specified?e.value:e.text}},select:{get:function(e){var bA,bv,bz,bx,by=e.selectedIndex,bB=[],bC=e.options,bw=e.type==="select-one";if(by<0){return null}bv=bw?by:0;bz=bw?by+1:bC.length;for(;bv=0});if(!e.length){bv.selectedIndex=-1}return e}}},attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true},attr:function(bA,bx,bB,bz){var bw,e,by,bv=bA.nodeType;if(!bA||bv===3||bv===8||bv===2){return}if(bz&&bx in b.attrFn){return b(bA)[bx](bB)}if(typeof bA.getAttribute==="undefined"){return b.prop(bA,bx,bB)}by=bv!==1||!b.isXMLDoc(bA);if(by){bx=bx.toLowerCase();e=b.attrHooks[bx]||(ao.test(bx)?aY:be)}if(bB!==L){if(bB===null){b.removeAttr(bA,bx);return}else{if(e&&"set" in e&&by&&(bw=e.set(bA,bB,bx))!==L){return bw}else{bA.setAttribute(bx,""+bB);return bB}}}else{if(e&&"get" in e&&by&&(bw=e.get(bA,bx))!==null){return bw}else{bw=bA.getAttribute(bx);return bw===null?L:bw}}},removeAttr:function(bx,bz){var by,bA,bv,e,bw=0;if(bz&&bx.nodeType===1){bA=bz.toLowerCase().split(af);e=bA.length;for(;bw=0)}}})});var bd=/^(?:textarea|input|select)$/i,n=/^([^\.]*)?(?:\.(.+))?$/,J=/\bhover(\.\S+)?\b/,aO=/^key/,bf=/^(?:mouse|contextmenu)|click/,T=/^(?:focusinfocus|focusoutblur)$/,U=/^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,Y=function(e){var bv=U.exec(e);if(bv){bv[1]=(bv[1]||"").toLowerCase();bv[3]=bv[3]&&new RegExp("(?:^|\\s)"+bv[3]+"(?:\\s|$)")}return bv},j=function(bw,e){var bv=bw.attributes||{};return((!e[1]||bw.nodeName.toLowerCase()===e[1])&&(!e[2]||(bv.id||{}).value===e[2])&&(!e[3]||e[3].test((bv["class"]||{}).value)))},bt=function(e){return b.event.special.hover?e:e.replace(J,"mouseenter$1 mouseleave$1")};b.event={add:function(bx,bC,bJ,bA,by){var bD,bB,bK,bI,bH,bF,e,bG,bv,bz,bw,bE;if(bx.nodeType===3||bx.nodeType===8||!bC||!bJ||!(bD=b._data(bx))){return}if(bJ.handler){bv=bJ;bJ=bv.handler}if(!bJ.guid){bJ.guid=b.guid++}bK=bD.events;if(!bK){bD.events=bK={}}bB=bD.handle;if(!bB){bD.handle=bB=function(bL){return typeof b!=="undefined"&&(!bL||b.event.triggered!==bL.type)?b.event.dispatch.apply(bB.elem,arguments):L};bB.elem=bx}bC=b.trim(bt(bC)).split(" ");for(bI=0;bI=0){bG=bG.slice(0,-1);bw=true}if(bG.indexOf(".")>=0){bx=bG.split(".");bG=bx.shift();bx.sort()}if((!bA||b.event.customEvent[bG])&&!b.event.global[bG]){return}bv=typeof bv==="object"?bv[b.expando]?bv:new b.Event(bG,bv):new b.Event(bG);bv.type=bG;bv.isTrigger=true;bv.exclusive=bw;bv.namespace=bx.join(".");bv.namespace_re=bv.namespace?new RegExp("(^|\\.)"+bx.join("\\.(?:.*\\.)?")+"(\\.|$)"):null;by=bG.indexOf(":")<0?"on"+bG:"";if(!bA){e=b.cache;for(bC in e){if(e[bC].events&&e[bC].events[bG]){b.event.trigger(bv,bD,e[bC].handle.elem,true)}}return}bv.result=L;if(!bv.target){bv.target=bA}bD=bD!=null?b.makeArray(bD):[];bD.unshift(bv);bF=b.event.special[bG]||{};if(bF.trigger&&bF.trigger.apply(bA,bD)===false){return}bB=[[bA,bF.bindType||bG]];if(!bJ&&!bF.noBubble&&!b.isWindow(bA)){bI=bF.delegateType||bG;bH=T.test(bI+bG)?bA:bA.parentNode;bz=null;for(;bH;bH=bH.parentNode){bB.push([bH,bI]);bz=bH}if(bz&&bz===bA.ownerDocument){bB.push([bz.defaultView||bz.parentWindow||bb,bI])}}for(bC=0;bCbA){bH.push({elem:this,matches:bz.slice(bA)})}for(bC=0;bC0?this.on(e,null,bx,bw):this.trigger(e)};if(b.attrFn){b.attrFn[e]=true}if(aO.test(e)){b.event.fixHooks[e]=b.event.keyHooks}if(bf.test(e)){b.event.fixHooks[e]=b.event.mouseHooks}}); +/*! + * Sizzle CSS Selector Engine + * Copyright 2011, The Dojo Foundation + * Released under the MIT, BSD, and GPL Licenses. + * More information: http://sizzlejs.com/ + */ +(function(){var bH=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,bC="sizcache"+(Math.random()+"").replace(".",""),bI=0,bL=Object.prototype.toString,bB=false,bA=true,bK=/\\/g,bO=/\r\n/g,bQ=/\W/;[0,0].sort(function(){bA=false;return 0});var by=function(bV,e,bY,bZ){bY=bY||[];e=e||av;var b1=e;if(e.nodeType!==1&&e.nodeType!==9){return[]}if(!bV||typeof bV!=="string"){return bY}var bS,b3,b6,bR,b2,b5,b4,bX,bU=true,bT=by.isXML(e),bW=[],b0=bV;do{bH.exec("");bS=bH.exec(b0);if(bS){b0=bS[3];bW.push(bS[1]);if(bS[2]){bR=bS[3];break}}}while(bS);if(bW.length>1&&bD.exec(bV)){if(bW.length===2&&bE.relative[bW[0]]){b3=bM(bW[0]+bW[1],e,bZ)}else{b3=bE.relative[bW[0]]?[e]:by(bW.shift(),e);while(bW.length){bV=bW.shift();if(bE.relative[bV]){bV+=bW.shift()}b3=bM(bV,b3,bZ)}}}else{if(!bZ&&bW.length>1&&e.nodeType===9&&!bT&&bE.match.ID.test(bW[0])&&!bE.match.ID.test(bW[bW.length-1])){b2=by.find(bW.shift(),e,bT);e=b2.expr?by.filter(b2.expr,b2.set)[0]:b2.set[0]}if(e){b2=bZ?{expr:bW.pop(),set:bF(bZ)}:by.find(bW.pop(),bW.length===1&&(bW[0]==="~"||bW[0]==="+")&&e.parentNode?e.parentNode:e,bT);b3=b2.expr?by.filter(b2.expr,b2.set):b2.set;if(bW.length>0){b6=bF(b3)}else{bU=false}while(bW.length){b5=bW.pop();b4=b5;if(!bE.relative[b5]){b5=""}else{b4=bW.pop()}if(b4==null){b4=e}bE.relative[b5](b6,b4,bT)}}else{b6=bW=[]}}if(!b6){b6=b3}if(!b6){by.error(b5||bV)}if(bL.call(b6)==="[object Array]"){if(!bU){bY.push.apply(bY,b6)}else{if(e&&e.nodeType===1){for(bX=0;b6[bX]!=null;bX++){if(b6[bX]&&(b6[bX]===true||b6[bX].nodeType===1&&by.contains(e,b6[bX]))){bY.push(b3[bX])}}}else{for(bX=0;b6[bX]!=null;bX++){if(b6[bX]&&b6[bX].nodeType===1){bY.push(b3[bX])}}}}}else{bF(b6,bY)}if(bR){by(bR,b1,bY,bZ);by.uniqueSort(bY)}return bY};by.uniqueSort=function(bR){if(bJ){bB=bA;bR.sort(bJ);if(bB){for(var e=1;e0};by.find=function(bX,e,bY){var bW,bS,bU,bT,bV,bR;if(!bX){return[]}for(bS=0,bU=bE.order.length;bS":function(bW,bR){var bV,bU=typeof bR==="string",bS=0,e=bW.length;if(bU&&!bQ.test(bR)){bR=bR.toLowerCase();for(;bS=0)){if(!bS){e.push(bV)}}else{if(bS){bR[bU]=false}}}}return false},ID:function(e){return e[1].replace(bK,"")},TAG:function(bR,e){return bR[1].replace(bK,"").toLowerCase()},CHILD:function(e){if(e[1]==="nth"){if(!e[2]){by.error(e[0])}e[2]=e[2].replace(/^\+|\s*/g,"");var bR=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(e[2]==="even"&&"2n"||e[2]==="odd"&&"2n+1"||!/\D/.test(e[2])&&"0n+"+e[2]||e[2]);e[2]=(bR[1]+(bR[2]||1))-0;e[3]=bR[3]-0}else{if(e[2]){by.error(e[0])}}e[0]=bI++;return e},ATTR:function(bU,bR,bS,e,bV,bW){var bT=bU[1]=bU[1].replace(bK,"");if(!bW&&bE.attrMap[bT]){bU[1]=bE.attrMap[bT]}bU[4]=(bU[4]||bU[5]||"").replace(bK,"");if(bU[2]==="~="){bU[4]=" "+bU[4]+" "}return bU},PSEUDO:function(bU,bR,bS,e,bV){if(bU[1]==="not"){if((bH.exec(bU[3])||"").length>1||/^\w/.test(bU[3])){bU[3]=by(bU[3],null,null,bR)}else{var bT=by.filter(bU[3],bR,bS,true^bV);if(!bS){e.push.apply(e,bT)}return false}}else{if(bE.match.POS.test(bU[0])||bE.match.CHILD.test(bU[0])){return true}}return bU},POS:function(e){e.unshift(true);return e}},filters:{enabled:function(e){return e.disabled===false&&e.type!=="hidden"},disabled:function(e){return e.disabled===true},checked:function(e){return e.checked===true},selected:function(e){if(e.parentNode){e.parentNode.selectedIndex}return e.selected===true},parent:function(e){return !!e.firstChild},empty:function(e){return !e.firstChild},has:function(bS,bR,e){return !!by(e[3],bS).length},header:function(e){return(/h\d/i).test(e.nodeName)},text:function(bS){var e=bS.getAttribute("type"),bR=bS.type;return bS.nodeName.toLowerCase()==="input"&&"text"===bR&&(e===bR||e===null)},radio:function(e){return e.nodeName.toLowerCase()==="input"&&"radio"===e.type},checkbox:function(e){return e.nodeName.toLowerCase()==="input"&&"checkbox"===e.type},file:function(e){return e.nodeName.toLowerCase()==="input"&&"file"===e.type},password:function(e){return e.nodeName.toLowerCase()==="input"&&"password"===e.type},submit:function(bR){var e=bR.nodeName.toLowerCase();return(e==="input"||e==="button")&&"submit"===bR.type},image:function(e){return e.nodeName.toLowerCase()==="input"&&"image"===e.type},reset:function(bR){var e=bR.nodeName.toLowerCase();return(e==="input"||e==="button")&&"reset"===bR.type},button:function(bR){var e=bR.nodeName.toLowerCase();return e==="input"&&"button"===bR.type||e==="button"},input:function(e){return(/input|select|textarea|button/i).test(e.nodeName)},focus:function(e){return e===e.ownerDocument.activeElement}},setFilters:{first:function(bR,e){return e===0},last:function(bS,bR,e,bT){return bR===bT.length-1},even:function(bR,e){return e%2===0},odd:function(bR,e){return e%2===1},lt:function(bS,bR,e){return bRe[3]-0},nth:function(bS,bR,e){return e[3]-0===bR},eq:function(bS,bR,e){return e[3]-0===bR}},filter:{PSEUDO:function(bS,bX,bW,bY){var e=bX[1],bR=bE.filters[e];if(bR){return bR(bS,bW,bX,bY)}else{if(e==="contains"){return(bS.textContent||bS.innerText||bw([bS])||"").indexOf(bX[3])>=0}else{if(e==="not"){var bT=bX[3];for(var bV=0,bU=bT.length;bV=0)}}},ID:function(bR,e){return bR.nodeType===1&&bR.getAttribute("id")===e},TAG:function(bR,e){return(e==="*"&&bR.nodeType===1)||!!bR.nodeName&&bR.nodeName.toLowerCase()===e},CLASS:function(bR,e){return(" "+(bR.className||bR.getAttribute("class"))+" ").indexOf(e)>-1},ATTR:function(bV,bT){var bS=bT[1],e=by.attr?by.attr(bV,bS):bE.attrHandle[bS]?bE.attrHandle[bS](bV):bV[bS]!=null?bV[bS]:bV.getAttribute(bS),bW=e+"",bU=bT[2],bR=bT[4];return e==null?bU==="!=":!bU&&by.attr?e!=null:bU==="="?bW===bR:bU==="*="?bW.indexOf(bR)>=0:bU==="~="?(" "+bW+" ").indexOf(bR)>=0:!bR?bW&&e!==false:bU==="!="?bW!==bR:bU==="^="?bW.indexOf(bR)===0:bU==="$="?bW.substr(bW.length-bR.length)===bR:bU==="|="?bW===bR||bW.substr(0,bR.length+1)===bR+"-":false},POS:function(bU,bR,bS,bV){var e=bR[2],bT=bE.setFilters[e];if(bT){return bT(bU,bS,bR,bV)}}}};var bD=bE.match.POS,bx=function(bR,e){return"\\"+(e-0+1)};for(var bz in bE.match){bE.match[bz]=new RegExp(bE.match[bz].source+(/(?![^\[]*\])(?![^\(]*\))/.source));bE.leftMatch[bz]=new RegExp(/(^(?:.|\r|\n)*?)/.source+bE.match[bz].source.replace(/\\(\d+)/g,bx))}var bF=function(bR,e){bR=Array.prototype.slice.call(bR,0);if(e){e.push.apply(e,bR);return e}return bR};try{Array.prototype.slice.call(av.documentElement.childNodes,0)[0].nodeType}catch(bP){bF=function(bU,bT){var bS=0,bR=bT||[];if(bL.call(bU)==="[object Array]"){Array.prototype.push.apply(bR,bU)}else{if(typeof bU.length==="number"){for(var e=bU.length;bS";e.insertBefore(bR,e.firstChild);if(av.getElementById(bS)){bE.find.ID=function(bU,bV,bW){if(typeof bV.getElementById!=="undefined"&&!bW){var bT=bV.getElementById(bU[1]);return bT?bT.id===bU[1]||typeof bT.getAttributeNode!=="undefined"&&bT.getAttributeNode("id").nodeValue===bU[1]?[bT]:L:[]}};bE.filter.ID=function(bV,bT){var bU=typeof bV.getAttributeNode!=="undefined"&&bV.getAttributeNode("id");return bV.nodeType===1&&bU&&bU.nodeValue===bT}}e.removeChild(bR);e=bR=null})();(function(){var e=av.createElement("div");e.appendChild(av.createComment(""));if(e.getElementsByTagName("*").length>0){bE.find.TAG=function(bR,bV){var bU=bV.getElementsByTagName(bR[1]);if(bR[1]==="*"){var bT=[];for(var bS=0;bU[bS];bS++){if(bU[bS].nodeType===1){bT.push(bU[bS])}}bU=bT}return bU}}e.innerHTML="";if(e.firstChild&&typeof e.firstChild.getAttribute!=="undefined"&&e.firstChild.getAttribute("href")!=="#"){bE.attrHandle.href=function(bR){return bR.getAttribute("href",2)}}e=null})();if(av.querySelectorAll){(function(){var e=by,bT=av.createElement("div"),bS="__sizzle__";bT.innerHTML="

    ";if(bT.querySelectorAll&&bT.querySelectorAll(".TEST").length===0){return}by=function(b4,bV,bZ,b3){bV=bV||av;if(!b3&&!by.isXML(bV)){var b2=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b4);if(b2&&(bV.nodeType===1||bV.nodeType===9)){if(b2[1]){return bF(bV.getElementsByTagName(b4),bZ)}else{if(b2[2]&&bE.find.CLASS&&bV.getElementsByClassName){return bF(bV.getElementsByClassName(b2[2]),bZ)}}}if(bV.nodeType===9){if(b4==="body"&&bV.body){return bF([bV.body],bZ)}else{if(b2&&b2[3]){var bY=bV.getElementById(b2[3]);if(bY&&bY.parentNode){if(bY.id===b2[3]){return bF([bY],bZ)}}else{return bF([],bZ)}}}try{return bF(bV.querySelectorAll(b4),bZ)}catch(b0){}}else{if(bV.nodeType===1&&bV.nodeName.toLowerCase()!=="object"){var bW=bV,bX=bV.getAttribute("id"),bU=bX||bS,b6=bV.parentNode,b5=/^\s*[+~]/.test(b4);if(!bX){bV.setAttribute("id",bU)}else{bU=bU.replace(/'/g,"\\$&")}if(b5&&b6){bV=bV.parentNode}try{if(!b5||b6){return bF(bV.querySelectorAll("[id='"+bU+"'] "+b4),bZ)}}catch(b1){}finally{if(!bX){bW.removeAttribute("id")}}}}}return e(b4,bV,bZ,b3)};for(var bR in e){by[bR]=e[bR]}bT=null})()}(function(){var e=av.documentElement,bS=e.matchesSelector||e.mozMatchesSelector||e.webkitMatchesSelector||e.msMatchesSelector;if(bS){var bU=!bS.call(av.createElement("div"),"div"),bR=false;try{bS.call(av.documentElement,"[test!='']:sizzle")}catch(bT){bR=true}by.matchesSelector=function(bW,bY){bY=bY.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!by.isXML(bW)){try{if(bR||!bE.match.PSEUDO.test(bY)&&!/!=/.test(bY)){var bV=bS.call(bW,bY);if(bV||!bU||bW.document&&bW.document.nodeType!==11){return bV}}}catch(bX){}}return by(bY,null,null,[bW]).length>0}}})();(function(){var e=av.createElement("div");e.innerHTML="
    ";if(!e.getElementsByClassName||e.getElementsByClassName("e").length===0){return}e.lastChild.className="e";if(e.getElementsByClassName("e").length===1){return}bE.order.splice(1,0,"CLASS");bE.find.CLASS=function(bR,bS,bT){if(typeof bS.getElementsByClassName!=="undefined"&&!bT){return bS.getElementsByClassName(bR[1])}};e=null})();function bv(bR,bW,bV,bZ,bX,bY){for(var bT=0,bS=bZ.length;bT0){bU=e;break}}}e=e[bR]}bZ[bT]=bU}}}if(av.documentElement.contains){by.contains=function(bR,e){return bR!==e&&(bR.contains?bR.contains(e):true)}}else{if(av.documentElement.compareDocumentPosition){by.contains=function(bR,e){return !!(bR.compareDocumentPosition(e)&16)}}else{by.contains=function(){return false}}}by.isXML=function(e){var bR=(e?e.ownerDocument||e:0).documentElement;return bR?bR.nodeName!=="HTML":false};var bM=function(bS,e,bW){var bV,bX=[],bU="",bY=e.nodeType?[e]:e;while((bV=bE.match.PSEUDO.exec(bS))){bU+=bV[0];bS=bS.replace(bE.match.PSEUDO,"")}bS=bE.relative[bS]?bS+"*":bS;for(var bT=0,bR=bY.length;bT0){for(bB=bA;bB=0:b.filter(e,this).length>0:this.filter(e).length>0)},closest:function(by,bx){var bv=[],bw,e,bz=this[0];if(b.isArray(by)){var bB=1;while(bz&&bz.ownerDocument&&bz!==bx){for(bw=0;bw-1:b.find.matchesSelector(bz,by)){bv.push(bz);break}else{bz=bz.parentNode;if(!bz||!bz.ownerDocument||bz===bx||bz.nodeType===11){break}}}}bv=bv.length>1?b.unique(bv):bv;return this.pushStack(bv,"closest",by)},index:function(e){if(!e){return(this[0]&&this[0].parentNode)?this.prevAll().length:-1}if(typeof e==="string"){return b.inArray(this[0],b(e))}return b.inArray(e.jquery?e[0]:e,this)},add:function(e,bv){var bx=typeof e==="string"?b(e,bv):b.makeArray(e&&e.nodeType?[e]:e),bw=b.merge(this.get(),bx);return this.pushStack(C(bx[0])||C(bw[0])?bw:b.unique(bw))},andSelf:function(){return this.add(this.prevObject)}});function C(e){return !e||!e.parentNode||e.parentNode.nodeType===11}b.each({parent:function(bv){var e=bv.parentNode;return e&&e.nodeType!==11?e:null},parents:function(e){return b.dir(e,"parentNode")},parentsUntil:function(bv,e,bw){return b.dir(bv,"parentNode",bw)},next:function(e){return b.nth(e,2,"nextSibling")},prev:function(e){return b.nth(e,2,"previousSibling")},nextAll:function(e){return b.dir(e,"nextSibling")},prevAll:function(e){return b.dir(e,"previousSibling")},nextUntil:function(bv,e,bw){return b.dir(bv,"nextSibling",bw)},prevUntil:function(bv,e,bw){return b.dir(bv,"previousSibling",bw)},siblings:function(e){return b.sibling(e.parentNode.firstChild,e)},children:function(e){return b.sibling(e.firstChild)},contents:function(e){return b.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:b.makeArray(e.childNodes)}},function(e,bv){b.fn[e]=function(by,bw){var bx=b.map(this,bv,by);if(!ab.test(e)){bw=by}if(bw&&typeof bw==="string"){bx=b.filter(bw,bx)}bx=this.length>1&&!ay[e]?b.unique(bx):bx;if((this.length>1||a9.test(bw))&&aq.test(e)){bx=bx.reverse()}return this.pushStack(bx,e,P.call(arguments).join(","))}});b.extend({filter:function(bw,e,bv){if(bv){bw=":not("+bw+")"}return e.length===1?b.find.matchesSelector(e[0],bw)?[e[0]]:[]:b.find.matches(bw,e)},dir:function(bw,bv,by){var e=[],bx=bw[bv];while(bx&&bx.nodeType!==9&&(by===L||bx.nodeType!==1||!b(bx).is(by))){if(bx.nodeType===1){e.push(bx)}bx=bx[bv]}return e},nth:function(by,e,bw,bx){e=e||1;var bv=0;for(;by;by=by[bw]){if(by.nodeType===1&&++bv===e){break}}return by},sibling:function(bw,bv){var e=[];for(;bw;bw=bw.nextSibling){if(bw.nodeType===1&&bw!==bv){e.push(bw)}}return e}});function aG(bx,bw,e){bw=bw||0;if(b.isFunction(bw)){return b.grep(bx,function(bz,by){var bA=!!bw.call(bz,by,bz);return bA===e})}else{if(bw.nodeType){return b.grep(bx,function(bz,by){return(bz===bw)===e})}else{if(typeof bw==="string"){var bv=b.grep(bx,function(by){return by.nodeType===1});if(bp.test(bw)){return b.filter(bw,bv,!e)}else{bw=b.filter(bw,bv)}}}}return b.grep(bx,function(bz,by){return(b.inArray(bz,bw)>=0)===e})}function a(e){var bw=aR.split("|"),bv=e.createDocumentFragment();if(bv.createElement){while(bw.length){bv.createElement(bw.pop())}}return bv}var aR="abbr|article|aside|audio|canvas|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",ag=/ jQuery\d+="(?:\d+|null)"/g,ar=/^\s+/,R=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,d=/<([\w:]+)/,w=/",""],legend:[1,"
    ","
    "],thead:[1,"","
    "],tr:[2,"","
    "],td:[3,"","
    "],col:[2,"","
    "],area:[1,"",""],_default:[0,"",""]},ac=a(av);ax.optgroup=ax.option;ax.tbody=ax.tfoot=ax.colgroup=ax.caption=ax.thead;ax.th=ax.td;if(!b.support.htmlSerialize){ax._default=[1,"div
    ","
    "]}b.fn.extend({text:function(e){if(b.isFunction(e)){return this.each(function(bw){var bv=b(this);bv.text(e.call(this,bw,bv.text()))})}if(typeof e!=="object"&&e!==L){return this.empty().append((this[0]&&this[0].ownerDocument||av).createTextNode(e))}return b.text(this)},wrapAll:function(e){if(b.isFunction(e)){return this.each(function(bw){b(this).wrapAll(e.call(this,bw))})}if(this[0]){var bv=b(e,this[0].ownerDocument).eq(0).clone(true);if(this[0].parentNode){bv.insertBefore(this[0])}bv.map(function(){var bw=this;while(bw.firstChild&&bw.firstChild.nodeType===1){bw=bw.firstChild}return bw}).append(this)}return this},wrapInner:function(e){if(b.isFunction(e)){return this.each(function(bv){b(this).wrapInner(e.call(this,bv))})}return this.each(function(){var bv=b(this),bw=bv.contents();if(bw.length){bw.wrapAll(e)}else{bv.append(e)}})},wrap:function(e){var bv=b.isFunction(e);return this.each(function(bw){b(this).wrapAll(bv?e.call(this,bw):e)})},unwrap:function(){return this.parent().each(function(){if(!b.nodeName(this,"body")){b(this).replaceWith(this.childNodes)}}).end()},append:function(){return this.domManip(arguments,true,function(e){if(this.nodeType===1){this.appendChild(e)}})},prepend:function(){return this.domManip(arguments,true,function(e){if(this.nodeType===1){this.insertBefore(e,this.firstChild)}})},before:function(){if(this[0]&&this[0].parentNode){return this.domManip(arguments,false,function(bv){this.parentNode.insertBefore(bv,this)})}else{if(arguments.length){var e=b.clean(arguments);e.push.apply(e,this.toArray());return this.pushStack(e,"before",arguments)}}},after:function(){if(this[0]&&this[0].parentNode){return this.domManip(arguments,false,function(bv){this.parentNode.insertBefore(bv,this.nextSibling)})}else{if(arguments.length){var e=this.pushStack(this,"after",arguments);e.push.apply(e,b.clean(arguments));return e}}},remove:function(e,bx){for(var bv=0,bw;(bw=this[bv])!=null;bv++){if(!e||b.filter(e,[bw]).length){if(!bx&&bw.nodeType===1){b.cleanData(bw.getElementsByTagName("*"));b.cleanData([bw])}if(bw.parentNode){bw.parentNode.removeChild(bw)}}}return this},empty:function(){for(var e=0,bv;(bv=this[e])!=null;e++){if(bv.nodeType===1){b.cleanData(bv.getElementsByTagName("*"))}while(bv.firstChild){bv.removeChild(bv.firstChild)}}return this},clone:function(bv,e){bv=bv==null?false:bv;e=e==null?bv:e;return this.map(function(){return b.clone(this,bv,e)})},html:function(bx){if(bx===L){return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(ag,""):null}else{if(typeof bx==="string"&&!ae.test(bx)&&(b.support.leadingWhitespace||!ar.test(bx))&&!ax[(d.exec(bx)||["",""])[1].toLowerCase()]){bx=bx.replace(R,"<$1>");try{for(var bw=0,bv=this.length;bw1&&bw0?this.clone(true):this).get();b(bC[bA])[bv](by);bz=bz.concat(by)}return this.pushStack(bz,e,bC.selector)}}});function bg(e){if(typeof e.getElementsByTagName!=="undefined"){return e.getElementsByTagName("*")}else{if(typeof e.querySelectorAll!=="undefined"){return e.querySelectorAll("*")}else{return[]}}}function az(e){if(e.type==="checkbox"||e.type==="radio"){e.defaultChecked=e.checked}}function E(e){var bv=(e.nodeName||"").toLowerCase();if(bv==="input"){az(e)}else{if(bv!=="script"&&typeof e.getElementsByTagName!=="undefined"){b.grep(e.getElementsByTagName("input"),az)}}}function al(e){var bv=av.createElement("div");ac.appendChild(bv);bv.innerHTML=e.outerHTML;return bv.firstChild}b.extend({clone:function(by,bA,bw){var e,bv,bx,bz=b.support.html5Clone||!ah.test("<"+by.nodeName)?by.cloneNode(true):al(by);if((!b.support.noCloneEvent||!b.support.noCloneChecked)&&(by.nodeType===1||by.nodeType===11)&&!b.isXMLDoc(by)){ai(by,bz);e=bg(by);bv=bg(bz);for(bx=0;e[bx];++bx){if(bv[bx]){ai(e[bx],bv[bx])}}}if(bA){t(by,bz);if(bw){e=bg(by);bv=bg(bz);for(bx=0;e[bx];++bx){t(e[bx],bv[bx])}}}e=bv=null;return bz},clean:function(bw,by,bH,bA){var bF;by=by||av;if(typeof by.createElement==="undefined"){by=by.ownerDocument||by[0]&&by[0].ownerDocument||av}var bI=[],bB;for(var bE=0,bz;(bz=bw[bE])!=null;bE++){if(typeof bz==="number"){bz+=""}if(!bz){continue}if(typeof bz==="string"){if(!W.test(bz)){bz=by.createTextNode(bz)}else{bz=bz.replace(R,"<$1>");var bK=(d.exec(bz)||["",""])[1].toLowerCase(),bx=ax[bK]||ax._default,bD=bx[0],bv=by.createElement("div");if(by===av){ac.appendChild(bv)}else{a(by).appendChild(bv)}bv.innerHTML=bx[1]+bz+bx[2];while(bD--){bv=bv.lastChild}if(!b.support.tbody){var e=w.test(bz),bC=bK==="table"&&!e?bv.firstChild&&bv.firstChild.childNodes:bx[1]===""&&!e?bv.childNodes:[];for(bB=bC.length-1;bB>=0;--bB){if(b.nodeName(bC[bB],"tbody")&&!bC[bB].childNodes.length){bC[bB].parentNode.removeChild(bC[bB])}}}if(!b.support.leadingWhitespace&&ar.test(bz)){bv.insertBefore(by.createTextNode(ar.exec(bz)[0]),bv.firstChild)}bz=bv.childNodes}}var bG;if(!b.support.appendChecked){if(bz[0]&&typeof(bG=bz.length)==="number"){for(bB=0;bB=0){return bx+"px"}}else{return bx}}}});if(!b.support.opacity){b.cssHooks.opacity={get:function(bv,e){return au.test((e&&bv.currentStyle?bv.currentStyle.filter:bv.style.filter)||"")?(parseFloat(RegExp.$1)/100)+"":e?"1":""},set:function(by,bz){var bx=by.style,bv=by.currentStyle,e=b.isNumeric(bz)?"alpha(opacity="+bz*100+")":"",bw=bv&&bv.filter||bx.filter||"";bx.zoom=1;if(bz>=1&&b.trim(bw.replace(ak,""))===""){bx.removeAttribute("filter");if(bv&&!bv.filter){return}}bx.filter=ak.test(bw)?bw.replace(ak,e):bw+" "+e}}}b(function(){if(!b.support.reliableMarginRight){b.cssHooks.marginRight={get:function(bw,bv){var e;b.swap(bw,{display:"inline-block"},function(){if(bv){e=Z(bw,"margin-right","marginRight")}else{e=bw.style.marginRight}});return e}}}});if(av.defaultView&&av.defaultView.getComputedStyle){aI=function(by,bw){var bv,bx,e;bw=bw.replace(z,"-$1").toLowerCase();if((bx=by.ownerDocument.defaultView)&&(e=bx.getComputedStyle(by,null))){bv=e.getPropertyValue(bw);if(bv===""&&!b.contains(by.ownerDocument.documentElement,by)){bv=b.style(by,bw)}}return bv}}if(av.documentElement.currentStyle){aX=function(bz,bw){var bA,e,by,bv=bz.currentStyle&&bz.currentStyle[bw],bx=bz.style;if(bv===null&&bx&&(by=bx[bw])){bv=by}if(!bc.test(bv)&&bn.test(bv)){bA=bx.left;e=bz.runtimeStyle&&bz.runtimeStyle.left;if(e){bz.runtimeStyle.left=bz.currentStyle.left}bx.left=bw==="fontSize"?"1em":(bv||0);bv=bx.pixelLeft+"px";bx.left=bA;if(e){bz.runtimeStyle.left=e}}return bv===""?"auto":bv}}Z=aI||aX;function p(by,bw,bv){var bA=bw==="width"?by.offsetWidth:by.offsetHeight,bz=bw==="width"?an:a1,bx=0,e=bz.length;if(bA>0){if(bv!=="border"){for(;bx)<[^<]*)*<\/script>/gi,q=/^(?:select|textarea)/i,h=/\s+/,br=/([?&])_=[^&]*/,K=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,A=b.fn.load,aa={},r={},aE,s,aV=["*/"]+["*"];try{aE=bl.href}catch(aw){aE=av.createElement("a");aE.href="";aE=aE.href}s=K.exec(aE.toLowerCase())||[];function f(e){return function(by,bA){if(typeof by!=="string"){bA=by;by="*"}if(b.isFunction(bA)){var bx=by.toLowerCase().split(h),bw=0,bz=bx.length,bv,bB,bC;for(;bw=0){var e=bw.slice(by,bw.length);bw=bw.slice(0,by)}var bx="GET";if(bz){if(b.isFunction(bz)){bA=bz;bz=L}else{if(typeof bz==="object"){bz=b.param(bz,b.ajaxSettings.traditional);bx="POST"}}}var bv=this;b.ajax({url:bw,type:bx,dataType:"html",data:bz,complete:function(bC,bB,bD){bD=bC.responseText;if(bC.isResolved()){bC.done(function(bE){bD=bE});bv.html(e?b("
    ").append(bD.replace(a6,"")).find(e):bD)}if(bA){bv.each(bA,[bD,bB,bC])}}});return this},serialize:function(){return b.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?b.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||q.test(this.nodeName)||aZ.test(this.type))}).map(function(e,bv){var bw=b(this).val();return bw==null?null:b.isArray(bw)?b.map(bw,function(by,bx){return{name:bv.name,value:by.replace(bs,"\r\n")}}):{name:bv.name,value:bw.replace(bs,"\r\n")}}).get()}});b.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(e,bv){b.fn[bv]=function(bw){return this.on(bv,bw)}});b.each(["get","post"],function(e,bv){b[bv]=function(bw,by,bz,bx){if(b.isFunction(by)){bx=bx||bz;bz=by;by=L}return b.ajax({type:bv,url:bw,data:by,success:bz,dataType:bx})}});b.extend({getScript:function(e,bv){return b.get(e,L,bv,"script")},getJSON:function(e,bv,bw){return b.get(e,bv,bw,"json")},ajaxSetup:function(bv,e){if(e){am(bv,b.ajaxSettings)}else{e=bv;bv=b.ajaxSettings}am(bv,e);return bv},ajaxSettings:{url:aE,isLocal:aM.test(s[1]),global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":aV},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":bb.String,"text html":true,"text json":b.parseJSON,"text xml":b.parseXML},flatOptions:{context:true,url:true}},ajaxPrefilter:f(aa),ajaxTransport:f(r),ajax:function(bz,bx){if(typeof bz==="object"){bx=bz;bz=L}bx=bx||{};var bD=b.ajaxSetup({},bx),bS=bD.context||bD,bG=bS!==bD&&(bS.nodeType||bS instanceof b)?b(bS):b.event,bR=b.Deferred(),bN=b.Callbacks("once memory"),bB=bD.statusCode||{},bC,bH={},bO={},bQ,by,bL,bE,bI,bA=0,bw,bK,bJ={readyState:0,setRequestHeader:function(bT,bU){if(!bA){var e=bT.toLowerCase();bT=bO[e]=bO[e]||bT;bH[bT]=bU}return this},getAllResponseHeaders:function(){return bA===2?bQ:null},getResponseHeader:function(bT){var e;if(bA===2){if(!by){by={};while((e=aD.exec(bQ))){by[e[1].toLowerCase()]=e[2]}}e=by[bT.toLowerCase()]}return e===L?null:e},overrideMimeType:function(e){if(!bA){bD.mimeType=e}return this},abort:function(e){e=e||"abort";if(bL){bL.abort(e)}bF(0,e);return this}};function bF(bZ,bU,b0,bW){if(bA===2){return}bA=2;if(bE){clearTimeout(bE)}bL=L;bQ=bW||"";bJ.readyState=bZ>0?4:0;var bT,b4,b3,bX=bU,bY=b0?bj(bD,bJ,b0):L,bV,b2;if(bZ>=200&&bZ<300||bZ===304){if(bD.ifModified){if((bV=bJ.getResponseHeader("Last-Modified"))){b.lastModified[bC]=bV}if((b2=bJ.getResponseHeader("Etag"))){b.etag[bC]=b2}}if(bZ===304){bX="notmodified";bT=true}else{try{b4=G(bD,bY);bX="success";bT=true}catch(b1){bX="parsererror";b3=b1}}}else{b3=bX;if(!bX||bZ){bX="error";if(bZ<0){bZ=0}}}bJ.status=bZ;bJ.statusText=""+(bU||bX);if(bT){bR.resolveWith(bS,[b4,bX,bJ])}else{bR.rejectWith(bS,[bJ,bX,b3])}bJ.statusCode(bB);bB=L;if(bw){bG.trigger("ajax"+(bT?"Success":"Error"),[bJ,bD,bT?b4:b3])}bN.fireWith(bS,[bJ,bX]);if(bw){bG.trigger("ajaxComplete",[bJ,bD]);if(!(--b.active)){b.event.trigger("ajaxStop")}}}bR.promise(bJ);bJ.success=bJ.done;bJ.error=bJ.fail;bJ.complete=bN.add;bJ.statusCode=function(bT){if(bT){var e;if(bA<2){for(e in bT){bB[e]=[bB[e],bT[e]]}}else{e=bT[bJ.status];bJ.then(e,e)}}return this};bD.url=((bz||bD.url)+"").replace(bq,"").replace(c,s[1]+"//");bD.dataTypes=b.trim(bD.dataType||"*").toLowerCase().split(h);if(bD.crossDomain==null){bI=K.exec(bD.url.toLowerCase());bD.crossDomain=!!(bI&&(bI[1]!=s[1]||bI[2]!=s[2]||(bI[3]||(bI[1]==="http:"?80:443))!=(s[3]||(s[1]==="http:"?80:443))))}if(bD.data&&bD.processData&&typeof bD.data!=="string"){bD.data=b.param(bD.data,bD.traditional)}aW(aa,bD,bx,bJ);if(bA===2){return false}bw=bD.global;bD.type=bD.type.toUpperCase();bD.hasContent=!aQ.test(bD.type);if(bw&&b.active++===0){b.event.trigger("ajaxStart")}if(!bD.hasContent){if(bD.data){bD.url+=(M.test(bD.url)?"&":"?")+bD.data;delete bD.data}bC=bD.url;if(bD.cache===false){var bv=b.now(),bP=bD.url.replace(br,"$1_="+bv);bD.url=bP+((bP===bD.url)?(M.test(bD.url)?"&":"?")+"_="+bv:"")}}if(bD.data&&bD.hasContent&&bD.contentType!==false||bx.contentType){bJ.setRequestHeader("Content-Type",bD.contentType)}if(bD.ifModified){bC=bC||bD.url;if(b.lastModified[bC]){bJ.setRequestHeader("If-Modified-Since",b.lastModified[bC])}if(b.etag[bC]){bJ.setRequestHeader("If-None-Match",b.etag[bC])}}bJ.setRequestHeader("Accept",bD.dataTypes[0]&&bD.accepts[bD.dataTypes[0]]?bD.accepts[bD.dataTypes[0]]+(bD.dataTypes[0]!=="*"?", "+aV+"; q=0.01":""):bD.accepts["*"]);for(bK in bD.headers){bJ.setRequestHeader(bK,bD.headers[bK])}if(bD.beforeSend&&(bD.beforeSend.call(bS,bJ,bD)===false||bA===2)){bJ.abort();return false}for(bK in {success:1,error:1,complete:1}){bJ[bK](bD[bK])}bL=aW(r,bD,bx,bJ);if(!bL){bF(-1,"No Transport")}else{bJ.readyState=1;if(bw){bG.trigger("ajaxSend",[bJ,bD])}if(bD.async&&bD.timeout>0){bE=setTimeout(function(){bJ.abort("timeout")},bD.timeout)}try{bA=1;bL.send(bH,bF)}catch(bM){if(bA<2){bF(-1,bM)}else{throw bM}}}return bJ},param:function(e,bw){var bv=[],by=function(bz,bA){bA=b.isFunction(bA)?bA():bA;bv[bv.length]=encodeURIComponent(bz)+"="+encodeURIComponent(bA)};if(bw===L){bw=b.ajaxSettings.traditional}if(b.isArray(e)||(e.jquery&&!b.isPlainObject(e))){b.each(e,function(){by(this.name,this.value)})}else{for(var bx in e){v(bx,e[bx],bw,by)}}return bv.join("&").replace(k,"+")}});function v(bw,by,bv,bx){if(b.isArray(by)){b.each(by,function(bA,bz){if(bv||ap.test(bw)){bx(bw,bz)}else{v(bw+"["+(typeof bz==="object"||b.isArray(bz)?bA:"")+"]",bz,bv,bx)}})}else{if(!bv&&by!=null&&typeof by==="object"){for(var e in by){v(bw+"["+e+"]",by[e],bv,bx)}}else{bx(bw,by)}}}b.extend({active:0,lastModified:{},etag:{}});function bj(bD,bC,bz){var bv=bD.contents,bB=bD.dataTypes,bw=bD.responseFields,by,bA,bx,e;for(bA in bw){if(bA in bz){bC[bw[bA]]=bz[bA]}}while(bB[0]==="*"){bB.shift();if(by===L){by=bD.mimeType||bC.getResponseHeader("content-type")}}if(by){for(bA in bv){if(bv[bA]&&bv[bA].test(by)){bB.unshift(bA);break}}}if(bB[0] in bz){bx=bB[0]}else{for(bA in bz){if(!bB[0]||bD.converters[bA+" "+bB[0]]){bx=bA;break}if(!e){e=bA}}bx=bx||e}if(bx){if(bx!==bB[0]){bB.unshift(bx)}return bz[bx]}}function G(bH,bz){if(bH.dataFilter){bz=bH.dataFilter(bz,bH.dataType)}var bD=bH.dataTypes,bG={},bA,bE,bw=bD.length,bB,bC=bD[0],bx,by,bF,bv,e;for(bA=1;bA=bw.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();bw.animatedProperties[this.prop]=true;for(bA in bw.animatedProperties){if(bw.animatedProperties[bA]!==true){e=false}}if(e){if(bw.overflow!=null&&!b.support.shrinkWrapBlocks){b.each(["","X","Y"],function(bC,bD){bz.style["overflow"+bD]=bw.overflow[bC]})}if(bw.hide){b(bz).hide()}if(bw.hide||bw.show){for(bA in bw.animatedProperties){b.style(bz,bA,bw.orig[bA]);b.removeData(bz,"fxshow"+bA,true);b.removeData(bz,"toggle"+bA,true)}}bv=bw.complete;if(bv){bw.complete=false;bv.call(bz)}}return false}else{if(bw.duration==Infinity){this.now=bx}else{bB=bx-this.startTime;this.state=bB/bw.duration;this.pos=b.easing[bw.animatedProperties[this.prop]](this.state,bB,0,1,bw.duration);this.now=this.start+((this.end-this.start)*this.pos)}this.update()}return true}};b.extend(b.fx,{tick:function(){var bw,bv=b.timers,e=0;for(;e").appendTo(e),bw=bv.css("display");bv.remove();if(bw==="none"||bw===""){if(!a8){a8=av.createElement("iframe");a8.frameBorder=a8.width=a8.height=0}e.appendChild(a8);if(!m||!a8.createElement){m=(a8.contentWindow||a8.contentDocument).document;m.write((av.compatMode==="CSS1Compat"?"":"")+"");m.close()}bv=m.createElement(bx);m.body.appendChild(bv);bw=b.css(bv,"display");e.removeChild(a8)}Q[bx]=bw}return Q[bx]}var V=/^t(?:able|d|h)$/i,ad=/^(?:body|html)$/i;if("getBoundingClientRect" in av.documentElement){b.fn.offset=function(bI){var by=this[0],bB;if(bI){return this.each(function(e){b.offset.setOffset(this,bI,e)})}if(!by||!by.ownerDocument){return null}if(by===by.ownerDocument.body){return b.offset.bodyOffset(by)}try{bB=by.getBoundingClientRect()}catch(bF){}var bH=by.ownerDocument,bw=bH.documentElement;if(!bB||!b.contains(bw,by)){return bB?{top:bB.top,left:bB.left}:{top:0,left:0}}var bC=bH.body,bD=aK(bH),bA=bw.clientTop||bC.clientTop||0,bE=bw.clientLeft||bC.clientLeft||0,bv=bD.pageYOffset||b.support.boxModel&&bw.scrollTop||bC.scrollTop,bz=bD.pageXOffset||b.support.boxModel&&bw.scrollLeft||bC.scrollLeft,bG=bB.top+bv-bA,bx=bB.left+bz-bE;return{top:bG,left:bx}}}else{b.fn.offset=function(bF){var bz=this[0];if(bF){return this.each(function(bG){b.offset.setOffset(this,bF,bG)})}if(!bz||!bz.ownerDocument){return null}if(bz===bz.ownerDocument.body){return b.offset.bodyOffset(bz)}var bC,bw=bz.offsetParent,bv=bz,bE=bz.ownerDocument,bx=bE.documentElement,bA=bE.body,bB=bE.defaultView,e=bB?bB.getComputedStyle(bz,null):bz.currentStyle,bD=bz.offsetTop,by=bz.offsetLeft;while((bz=bz.parentNode)&&bz!==bA&&bz!==bx){if(b.support.fixedPosition&&e.position==="fixed"){break}bC=bB?bB.getComputedStyle(bz,null):bz.currentStyle;bD-=bz.scrollTop;by-=bz.scrollLeft;if(bz===bw){bD+=bz.offsetTop;by+=bz.offsetLeft;if(b.support.doesNotAddBorder&&!(b.support.doesAddBorderForTableAndCells&&V.test(bz.nodeName))){bD+=parseFloat(bC.borderTopWidth)||0;by+=parseFloat(bC.borderLeftWidth)||0}bv=bw;bw=bz.offsetParent}if(b.support.subtractsBorderForOverflowNotVisible&&bC.overflow!=="visible"){bD+=parseFloat(bC.borderTopWidth)||0;by+=parseFloat(bC.borderLeftWidth)||0}e=bC}if(e.position==="relative"||e.position==="static"){bD+=bA.offsetTop;by+=bA.offsetLeft}if(b.support.fixedPosition&&e.position==="fixed"){bD+=Math.max(bx.scrollTop,bA.scrollTop);by+=Math.max(bx.scrollLeft,bA.scrollLeft)}return{top:bD,left:by}}}b.offset={bodyOffset:function(e){var bw=e.offsetTop,bv=e.offsetLeft;if(b.support.doesNotIncludeMarginInBodyOffset){bw+=parseFloat(b.css(e,"marginTop"))||0;bv+=parseFloat(b.css(e,"marginLeft"))||0}return{top:bw,left:bv}},setOffset:function(bx,bG,bA){var bB=b.css(bx,"position");if(bB==="static"){bx.style.position="relative"}var bz=b(bx),bv=bz.offset(),e=b.css(bx,"top"),bE=b.css(bx,"left"),bF=(bB==="absolute"||bB==="fixed")&&b.inArray("auto",[e,bE])>-1,bD={},bC={},bw,by;if(bF){bC=bz.position();bw=bC.top;by=bC.left}else{bw=parseFloat(e)||0;by=parseFloat(bE)||0}if(b.isFunction(bG)){bG=bG.call(bx,bA,bv)}if(bG.top!=null){bD.top=(bG.top-bv.top)+bw}if(bG.left!=null){bD.left=(bG.left-bv.left)+by}if("using" in bG){bG.using.call(bx,bD)}else{bz.css(bD)}}};b.fn.extend({position:function(){if(!this[0]){return null}var bw=this[0],bv=this.offsetParent(),bx=this.offset(),e=ad.test(bv[0].nodeName)?{top:0,left:0}:bv.offset();bx.top-=parseFloat(b.css(bw,"marginTop"))||0;bx.left-=parseFloat(b.css(bw,"marginLeft"))||0;e.top+=parseFloat(b.css(bv[0],"borderTopWidth"))||0;e.left+=parseFloat(b.css(bv[0],"borderLeftWidth"))||0;return{top:bx.top-e.top,left:bx.left-e.left}},offsetParent:function(){return this.map(function(){var e=this.offsetParent||av.body;while(e&&(!ad.test(e.nodeName)&&b.css(e,"position")==="static")){e=e.offsetParent}return e})}});b.each(["Left","Top"],function(bv,e){var bw="scroll"+e;b.fn[bw]=function(bz){var bx,by;if(bz===L){bx=this[0];if(!bx){return null}by=aK(bx);return by?("pageXOffset" in by)?by[bv?"pageYOffset":"pageXOffset"]:b.support.boxModel&&by.document.documentElement[bw]||by.document.body[bw]:bx[bw]}return this.each(function(){by=aK(this);if(by){by.scrollTo(!bv?bz:b(by).scrollLeft(),bv?bz:b(by).scrollTop())}else{this[bw]=bz}})}});function aK(e){return b.isWindow(e)?e:e.nodeType===9?e.defaultView||e.parentWindow:false}b.each(["Height","Width"],function(bv,e){var bw=e.toLowerCase();b.fn["inner"+e]=function(){var bx=this[0];return bx?bx.style?parseFloat(b.css(bx,bw,"padding")):this[bw]():null};b.fn["outer"+e]=function(by){var bx=this[0];return bx?bx.style?parseFloat(b.css(bx,bw,by?"margin":"border")):this[bw]():null};b.fn[bw]=function(bz){var bA=this[0];if(!bA){return bz==null?null:this}if(b.isFunction(bz)){return this.each(function(bE){var bD=b(this);bD[bw](bz.call(this,bE,bD[bw]()))})}if(b.isWindow(bA)){var bB=bA.document.documentElement["client"+e],bx=bA.document.body;return bA.document.compatMode==="CSS1Compat"&&bB||bx&&bx["client"+e]||bB}else{if(bA.nodeType===9){return Math.max(bA.documentElement["client"+e],bA.body["scroll"+e],bA.documentElement["scroll"+e],bA.body["offset"+e],bA.documentElement["offset"+e])}else{if(bz===L){var bC=b.css(bA,bw),by=parseFloat(bC);return b.isNumeric(by)?by:bC}else{return this.css(bw,typeof bz==="string"?bz:bz+"px")}}}}});bb.jQuery=bb.$=b;if(typeof define==="function"&&define.amd&&define.amd.jQuery){define("jquery",[],function(){return b})}})(window);/*! + * jQuery UI 1.8.18 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI + */ +(function(a,d){a.ui=a.ui||{};if(a.ui.version){return}a.extend(a.ui,{version:"1.8.18",keyCode:{ALT:18,BACKSPACE:8,CAPS_LOCK:20,COMMA:188,COMMAND:91,COMMAND_LEFT:91,COMMAND_RIGHT:93,CONTROL:17,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,INSERT:45,LEFT:37,MENU:93,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106,NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SHIFT:16,SPACE:32,TAB:9,UP:38,WINDOWS:91}});a.fn.extend({propAttr:a.fn.prop||a.fn.attr,_focus:a.fn.focus,focus:function(e,f){return typeof e==="number"?this.each(function(){var g=this;setTimeout(function(){a(g).focus();if(f){f.call(g)}},e)}):this._focus.apply(this,arguments)},scrollParent:function(){var e;if((a.browser.msie&&(/(static|relative)/).test(this.css("position")))||(/absolute/).test(this.css("position"))){e=this.parents().filter(function(){return(/(relative|absolute|fixed)/).test(a.curCSS(this,"position",1))&&(/(auto|scroll)/).test(a.curCSS(this,"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0)}else{e=this.parents().filter(function(){return(/(auto|scroll)/).test(a.curCSS(this,"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0)}return(/fixed/).test(this.css("position"))||!e.length?a(document):e},zIndex:function(h){if(h!==d){return this.css("zIndex",h)}if(this.length){var f=a(this[0]),e,g;while(f.length&&f[0]!==document){e=f.css("position");if(e==="absolute"||e==="relative"||e==="fixed"){g=parseInt(f.css("zIndex"),10);if(!isNaN(g)&&g!==0){return g}}f=f.parent()}}return 0},disableSelection:function(){return this.bind((a.support.selectstart?"selectstart":"mousedown")+".ui-disableSelection",function(e){e.preventDefault()})},enableSelection:function(){return this.unbind(".ui-disableSelection")}});a.each(["Width","Height"],function(g,e){var f=e==="Width"?["Left","Right"]:["Top","Bottom"],h=e.toLowerCase(),k={innerWidth:a.fn.innerWidth,innerHeight:a.fn.innerHeight,outerWidth:a.fn.outerWidth,outerHeight:a.fn.outerHeight};function j(m,l,i,n){a.each(f,function(){l-=parseFloat(a.curCSS(m,"padding"+this,true))||0;if(i){l-=parseFloat(a.curCSS(m,"border"+this+"Width",true))||0}if(n){l-=parseFloat(a.curCSS(m,"margin"+this,true))||0}});return l}a.fn["inner"+e]=function(i){if(i===d){return k["inner"+e].call(this)}return this.each(function(){a(this).css(h,j(this,i)+"px")})};a.fn["outer"+e]=function(i,l){if(typeof i!=="number"){return k["outer"+e].call(this,i)}return this.each(function(){a(this).css(h,j(this,i,true,l)+"px")})}});function c(g,e){var j=g.nodeName.toLowerCase();if("area"===j){var i=g.parentNode,h=i.name,f;if(!g.href||!h||i.nodeName.toLowerCase()!=="map"){return false}f=a("img[usemap=#"+h+"]")[0];return !!f&&b(f)}return(/input|select|textarea|button|object/.test(j)?!g.disabled:"a"==j?g.href||e:e)&&b(g)}function b(e){return !a(e).parents().andSelf().filter(function(){return a.curCSS(this,"visibility")==="hidden"||a.expr.filters.hidden(this)}).length}a.extend(a.expr[":"],{data:function(g,f,e){return !!a.data(g,e[3])},focusable:function(e){return c(e,!isNaN(a.attr(e,"tabindex")))},tabbable:function(g){var e=a.attr(g,"tabindex"),f=isNaN(e);return(f||e>=0)&&c(g,!f)}});a(function(){var e=document.body,f=e.appendChild(f=document.createElement("div"));f.offsetHeight;a.extend(f.style,{minHeight:"100px",height:"auto",padding:0,borderWidth:0});a.support.minHeight=f.offsetHeight===100;a.support.selectstart="onselectstart" in f;e.removeChild(f).style.display="none"});a.extend(a.ui,{plugin:{add:function(f,g,j){var h=a.ui[f].prototype;for(var e in j){h.plugins[e]=h.plugins[e]||[];h.plugins[e].push([g,j[e]])}},call:function(e,g,f){var j=e.plugins[g];if(!j||!e.element[0].parentNode){return}for(var h=0;h0){return true}h[e]=1;g=(h[e]>0);h[e]=0;return g},isOverAxis:function(f,e,g){return(f>e)&&(f<(e+g))},isOver:function(j,f,i,h,e,g){return a.ui.isOverAxis(j,i,e)&&a.ui.isOverAxis(f,h,g)}})})(jQuery);/*! + * jQuery UI Widget 1.8.18 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Widget + */ +(function(b,d){if(b.cleanData){var c=b.cleanData;b.cleanData=function(f){for(var g=0,h;(h=f[g])!=null;g++){try{b(h).triggerHandler("remove")}catch(j){}}c(f)}}else{var a=b.fn.remove;b.fn.remove=function(e,f){return this.each(function(){if(!f){if(!e||b.filter(e,[this]).length){b("*",this).add([this]).each(function(){try{b(this).triggerHandler("remove")}catch(g){}})}}return a.call(b(this),e,f)})}}b.widget=function(f,h,e){var g=f.split(".")[0],j;f=f.split(".")[1];j=g+"-"+f;if(!e){e=h;h=b.Widget}b.expr[":"][j]=function(k){return !!b.data(k,f)};b[g]=b[g]||{};b[g][f]=function(k,l){if(arguments.length){this._createWidget(k,l)}};var i=new h();i.options=b.extend(true,{},i.options);b[g][f].prototype=b.extend(true,i,{namespace:g,widgetName:f,widgetEventPrefix:b[g][f].prototype.widgetEventPrefix||f,widgetBaseClass:j},e);b.widget.bridge(f,b[g][f])};b.widget.bridge=function(f,e){b.fn[f]=function(i){var g=typeof i==="string",h=Array.prototype.slice.call(arguments,1),j=this;i=!g&&h.length?b.extend.apply(null,[true,i].concat(h)):i;if(g&&i.charAt(0)==="_"){return j}if(g){this.each(function(){var k=b.data(this,f),l=k&&b.isFunction(k[i])?k[i].apply(k,h):k;if(l!==k&&l!==d){j=l;return false}})}else{this.each(function(){var k=b.data(this,f);if(k){k.option(i||{})._init()}else{b.data(this,f,new e(i,this))}})}return j}};b.Widget=function(e,f){if(arguments.length){this._createWidget(e,f)}};b.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",options:{disabled:false},_createWidget:function(f,g){b.data(g,this.widgetName,this);this.element=b(g);this.options=b.extend(true,{},this.options,this._getCreateOptions(),f);var e=this;this.element.bind("remove."+this.widgetName,function(){e.destroy()});this._create();this._trigger("create");this._init()},_getCreateOptions:function(){return b.metadata&&b.metadata.get(this.element[0])[this.widgetName]},_create:function(){},_init:function(){},destroy:function(){this.element.unbind("."+this.widgetName).removeData(this.widgetName);this.widget().unbind("."+this.widgetName).removeAttr("aria-disabled").removeClass(this.widgetBaseClass+"-disabled ui-state-disabled")},widget:function(){return this.element},option:function(f,g){var e=f;if(arguments.length===0){return b.extend({},this.options)}if(typeof f==="string"){if(g===d){return this.options[f]}e={};e[f]=g}this._setOptions(e);return this},_setOptions:function(f){var e=this;b.each(f,function(g,h){e._setOption(g,h)});return this},_setOption:function(e,f){this.options[e]=f;if(e==="disabled"){this.widget()[f?"addClass":"removeClass"](this.widgetBaseClass+"-disabled ui-state-disabled").attr("aria-disabled",f)}return this},enable:function(){return this._setOption("disabled",false)},disable:function(){return this._setOption("disabled",true)},_trigger:function(e,f,g){var j,i,h=this.options[e];g=g||{};f=b.Event(f);f.type=(e===this.widgetEventPrefix?e:this.widgetEventPrefix+e).toLowerCase();f.target=this.element[0];i=f.originalEvent;if(i){for(j in i){if(!(j in f)){f[j]=i[j]}}}this.element.trigger(f,g);return !(b.isFunction(h)&&h.call(this.element[0],f,g)===false||f.isDefaultPrevented())}}})(jQuery);/*! + * jQuery UI Mouse 1.8.18 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Mouse + * + * Depends: + * jquery.ui.widget.js + */ +(function(b,c){var a=false;b(document).mouseup(function(d){a=false});b.widget("ui.mouse",{options:{cancel:":input,option",distance:1,delay:0},_mouseInit:function(){var d=this;this.element.bind("mousedown."+this.widgetName,function(e){return d._mouseDown(e)}).bind("click."+this.widgetName,function(e){if(true===b.data(e.target,d.widgetName+".preventClickEvent")){b.removeData(e.target,d.widgetName+".preventClickEvent");e.stopImmediatePropagation();return false}});this.started=false},_mouseDestroy:function(){this.element.unbind("."+this.widgetName)},_mouseDown:function(f){if(a){return}(this._mouseStarted&&this._mouseUp(f));this._mouseDownEvent=f;var e=this,g=(f.which==1),d=(typeof this.options.cancel=="string"&&f.target.nodeName?b(f.target).closest(this.options.cancel).length:false);if(!g||d||!this._mouseCapture(f)){return true}this.mouseDelayMet=!this.options.delay;if(!this.mouseDelayMet){this._mouseDelayTimer=setTimeout(function(){e.mouseDelayMet=true},this.options.delay)}if(this._mouseDistanceMet(f)&&this._mouseDelayMet(f)){this._mouseStarted=(this._mouseStart(f)!==false);if(!this._mouseStarted){f.preventDefault();return true}}if(true===b.data(f.target,this.widgetName+".preventClickEvent")){b.removeData(f.target,this.widgetName+".preventClickEvent")}this._mouseMoveDelegate=function(h){return e._mouseMove(h)};this._mouseUpDelegate=function(h){return e._mouseUp(h)};b(document).bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate);f.preventDefault();a=true;return true},_mouseMove:function(d){if(b.browser.msie&&!(document.documentMode>=9)&&!d.button){return this._mouseUp(d)}if(this._mouseStarted){this._mouseDrag(d);return d.preventDefault()}if(this._mouseDistanceMet(d)&&this._mouseDelayMet(d)){this._mouseStarted=(this._mouseStart(this._mouseDownEvent,d)!==false);(this._mouseStarted?this._mouseDrag(d):this._mouseUp(d))}return !this._mouseStarted},_mouseUp:function(d){b(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate);if(this._mouseStarted){this._mouseStarted=false;if(d.target==this._mouseDownEvent.target){b.data(d.target,this.widgetName+".preventClickEvent",true)}this._mouseStop(d)}return false},_mouseDistanceMet:function(d){return(Math.max(Math.abs(this._mouseDownEvent.pageX-d.pageX),Math.abs(this._mouseDownEvent.pageY-d.pageY))>=this.options.distance)},_mouseDelayMet:function(d){return this.mouseDelayMet},_mouseStart:function(d){},_mouseDrag:function(d){},_mouseStop:function(d){},_mouseCapture:function(d){return true}})})(jQuery);(function(c,d){c.widget("ui.resizable",c.ui.mouse,{widgetEventPrefix:"resize",options:{alsoResize:false,animate:false,animateDuration:"slow",animateEasing:"swing",aspectRatio:false,autoHide:false,containment:false,ghost:false,grid:false,handles:"e,s,se",helper:false,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:1000},_create:function(){var f=this,k=this.options;this.element.addClass("ui-resizable");c.extend(this,{_aspectRatio:!!(k.aspectRatio),aspectRatio:k.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:k.helper||k.ghost||k.animate?k.helper||"ui-resizable-helper":null});if(this.element[0].nodeName.match(/canvas|textarea|input|select|button|img/i)){this.element.wrap(c('
    ').css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")}));this.element=this.element.parent().data("resizable",this.element.data("resizable"));this.elementIsWrapper=true;this.element.css({marginLeft:this.originalElement.css("marginLeft"),marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom")});this.originalElement.css({marginLeft:0,marginTop:0,marginRight:0,marginBottom:0});this.originalResizeStyle=this.originalElement.css("resize");this.originalElement.css("resize","none");this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"}));this.originalElement.css({margin:this.originalElement.css("margin")});this._proportionallyResize()}this.handles=k.handles||(!c(".ui-resizable-handle",this.element).length?"e,s,se":{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"});if(this.handles.constructor==String){if(this.handles=="all"){this.handles="n,e,s,w,se,sw,ne,nw"}var l=this.handles.split(",");this.handles={};for(var g=0;g
    ');if(/sw|se|ne|nw/.test(j)){h.css({zIndex:++k.zIndex})}if("se"==j){h.addClass("ui-icon ui-icon-gripsmall-diagonal-se")}this.handles[j]=".ui-resizable-"+j;this.element.append(h)}}this._renderAxis=function(q){q=q||this.element;for(var n in this.handles){if(this.handles[n].constructor==String){this.handles[n]=c(this.handles[n],this.element).show()}if(this.elementIsWrapper&&this.originalElement[0].nodeName.match(/textarea|input|select|button/i)){var o=c(this.handles[n],this.element),p=0;p=/sw|ne|nw|se|n|s/.test(n)?o.outerHeight():o.outerWidth();var m=["padding",/ne|nw|n/.test(n)?"Top":/se|sw|s/.test(n)?"Bottom":/^e$/.test(n)?"Right":"Left"].join("");q.css(m,p);this._proportionallyResize()}if(!c(this.handles[n]).length){continue}}};this._renderAxis(this.element);this._handles=c(".ui-resizable-handle",this.element).disableSelection();this._handles.mouseover(function(){if(!f.resizing){if(this.className){var i=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)}f.axis=i&&i[1]?i[1]:"se"}});if(k.autoHide){this._handles.hide();c(this.element).addClass("ui-resizable-autohide").hover(function(){if(k.disabled){return}c(this).removeClass("ui-resizable-autohide");f._handles.show()},function(){if(k.disabled){return}if(!f.resizing){c(this).addClass("ui-resizable-autohide");f._handles.hide()}})}this._mouseInit()},destroy:function(){this._mouseDestroy();var e=function(g){c(g).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").unbind(".resizable").find(".ui-resizable-handle").remove()};if(this.elementIsWrapper){e(this.element);var f=this.element;f.after(this.originalElement.css({position:f.css("position"),width:f.outerWidth(),height:f.outerHeight(),top:f.css("top"),left:f.css("left")})).remove()}this.originalElement.css("resize",this.originalResizeStyle);e(this.originalElement);return this},_mouseCapture:function(f){var g=false;for(var e in this.handles){if(c(this.handles[e])[0]==f.target){g=true}}return !this.options.disabled&&g},_mouseStart:function(g){var j=this.options,f=this.element.position(),e=this.element;this.resizing=true;this.documentScroll={top:c(document).scrollTop(),left:c(document).scrollLeft()};if(e.is(".ui-draggable")||(/absolute/).test(e.css("position"))){e.css({position:"absolute",top:f.top,left:f.left})}this._renderProxy();var k=b(this.helper.css("left")),h=b(this.helper.css("top"));if(j.containment){k+=c(j.containment).scrollLeft()||0;h+=c(j.containment).scrollTop()||0}this.offset=this.helper.offset();this.position={left:k,top:h};this.size=this._helper?{width:e.outerWidth(),height:e.outerHeight()}:{width:e.width(),height:e.height()};this.originalSize=this._helper?{width:e.outerWidth(),height:e.outerHeight()}:{width:e.width(),height:e.height()};this.originalPosition={left:k,top:h};this.sizeDiff={width:e.outerWidth()-e.width(),height:e.outerHeight()-e.height()};this.originalMousePosition={left:g.pageX,top:g.pageY};this.aspectRatio=(typeof j.aspectRatio=="number")?j.aspectRatio:((this.originalSize.width/this.originalSize.height)||1);var i=c(".ui-resizable-"+this.axis).css("cursor");c("body").css("cursor",i=="auto"?this.axis+"-resize":i);e.addClass("ui-resizable-resizing");this._propagate("start",g);return true},_mouseDrag:function(e){var h=this.helper,g=this.options,m={},q=this,j=this.originalMousePosition,n=this.axis;var r=(e.pageX-j.left)||0,p=(e.pageY-j.top)||0;var i=this._change[n];if(!i){return false}var l=i.apply(this,[e,r,p]),k=c.browser.msie&&c.browser.version<7,f=this.sizeDiff;this._updateVirtualBoundaries(e.shiftKey);if(this._aspectRatio||e.shiftKey){l=this._updateRatio(l,e)}l=this._respectSize(l,e);this._propagate("resize",e);h.css({top:this.position.top+"px",left:this.position.left+"px",width:this.size.width+"px",height:this.size.height+"px"});if(!this._helper&&this._proportionallyResizeElements.length){this._proportionallyResize()}this._updateCache(l);this._trigger("resize",e,this.ui());return false},_mouseStop:function(h){this.resizing=false;var i=this.options,m=this;if(this._helper){var g=this._proportionallyResizeElements,e=g.length&&(/textarea/i).test(g[0].nodeName),f=e&&c.ui.hasScroll(g[0],"left")?0:m.sizeDiff.height,k=e?0:m.sizeDiff.width;var n={width:(m.helper.width()-k),height:(m.helper.height()-f)},j=(parseInt(m.element.css("left"),10)+(m.position.left-m.originalPosition.left))||null,l=(parseInt(m.element.css("top"),10)+(m.position.top-m.originalPosition.top))||null;if(!i.animate){this.element.css(c.extend(n,{top:l,left:j}))}m.helper.height(m.size.height);m.helper.width(m.size.width);if(this._helper&&!i.animate){this._proportionallyResize()}}c("body").css("cursor","auto");this.element.removeClass("ui-resizable-resizing");this._propagate("stop",h);if(this._helper){this.helper.remove()}return false},_updateVirtualBoundaries:function(g){var j=this.options,i,h,f,k,e;e={minWidth:a(j.minWidth)?j.minWidth:0,maxWidth:a(j.maxWidth)?j.maxWidth:Infinity,minHeight:a(j.minHeight)?j.minHeight:0,maxHeight:a(j.maxHeight)?j.maxHeight:Infinity};if(this._aspectRatio||g){i=e.minHeight*this.aspectRatio;f=e.minWidth/this.aspectRatio;h=e.maxHeight*this.aspectRatio;k=e.maxWidth/this.aspectRatio;if(i>e.minWidth){e.minWidth=i}if(f>e.minHeight){e.minHeight=f}if(hl.width),s=a(l.height)&&i.minHeight&&(i.minHeight>l.height);if(h){l.width=i.minWidth}if(s){l.height=i.minHeight}if(t){l.width=i.maxWidth}if(m){l.height=i.maxHeight}var f=this.originalPosition.left+this.originalSize.width,p=this.position.top+this.size.height;var k=/sw|nw|w/.test(q),e=/nw|ne|n/.test(q);if(h&&k){l.left=f-i.minWidth}if(t&&k){l.left=f-i.maxWidth}if(s&&e){l.top=p-i.minHeight}if(m&&e){l.top=p-i.maxHeight}var n=!l.width&&!l.height;if(n&&!l.left&&l.top){l.top=null}else{if(n&&!l.top&&l.left){l.left=null}}return l},_proportionallyResize:function(){var k=this.options;if(!this._proportionallyResizeElements.length){return}var g=this.helper||this.element;for(var f=0;f');var e=c.browser.msie&&c.browser.version<7,g=(e?1:0),h=(e?2:-1);this.helper.addClass(this._helper).css({width:this.element.outerWidth()+h,height:this.element.outerHeight()+h,position:"absolute",left:this.elementOffset.left-g+"px",top:this.elementOffset.top-g+"px",zIndex:++i.zIndex});this.helper.appendTo("body").disableSelection()}else{this.helper=this.element}},_change:{e:function(g,f,e){return{width:this.originalSize.width+f}},w:function(h,f,e){var j=this.options,g=this.originalSize,i=this.originalPosition;return{left:i.left+f,width:g.width-f}},n:function(h,f,e){var j=this.options,g=this.originalSize,i=this.originalPosition;return{top:i.top+e,height:g.height-e}},s:function(g,f,e){return{height:this.originalSize.height+e}},se:function(g,f,e){return c.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[g,f,e]))},sw:function(g,f,e){return c.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[g,f,e]))},ne:function(g,f,e){return c.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[g,f,e]))},nw:function(g,f,e){return c.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[g,f,e]))}},_propagate:function(f,e){c.ui.plugin.call(this,f,[e,this.ui()]);(f!="resize"&&this._trigger(f,e,this.ui()))},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}});c.extend(c.ui.resizable,{version:"1.8.18"});c.ui.plugin.add("resizable","alsoResize",{start:function(f,g){var e=c(this).data("resizable"),i=e.options;var h=function(j){c(j).each(function(){var k=c(this);k.data("resizable-alsoresize",{width:parseInt(k.width(),10),height:parseInt(k.height(),10),left:parseInt(k.css("left"),10),top:parseInt(k.css("top"),10)})})};if(typeof(i.alsoResize)=="object"&&!i.alsoResize.parentNode){if(i.alsoResize.length){i.alsoResize=i.alsoResize[0];h(i.alsoResize)}else{c.each(i.alsoResize,function(j){h(j)})}}else{h(i.alsoResize)}},resize:function(g,i){var f=c(this).data("resizable"),j=f.options,h=f.originalSize,l=f.originalPosition;var k={height:(f.size.height-h.height)||0,width:(f.size.width-h.width)||0,top:(f.position.top-l.top)||0,left:(f.position.left-l.left)||0},e=function(m,n){c(m).each(function(){var q=c(this),r=c(this).data("resizable-alsoresize"),p={},o=n&&n.length?n:q.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];c.each(o,function(s,u){var t=(r[u]||0)+(k[u]||0);if(t&&t>=0){p[u]=t||null}});q.css(p)})};if(typeof(j.alsoResize)=="object"&&!j.alsoResize.nodeType){c.each(j.alsoResize,function(m,n){e(m,n)})}else{e(j.alsoResize)}},stop:function(e,f){c(this).removeData("resizable-alsoresize")}});c.ui.plugin.add("resizable","animate",{stop:function(i,n){var p=c(this).data("resizable"),j=p.options;var h=p._proportionallyResizeElements,e=h.length&&(/textarea/i).test(h[0].nodeName),f=e&&c.ui.hasScroll(h[0],"left")?0:p.sizeDiff.height,l=e?0:p.sizeDiff.width;var g={width:(p.size.width-l),height:(p.size.height-f)},k=(parseInt(p.element.css("left"),10)+(p.position.left-p.originalPosition.left))||null,m=(parseInt(p.element.css("top"),10)+(p.position.top-p.originalPosition.top))||null;p.element.animate(c.extend(g,m&&k?{top:m,left:k}:{}),{duration:j.animateDuration,easing:j.animateEasing,step:function(){var o={width:parseInt(p.element.css("width"),10),height:parseInt(p.element.css("height"),10),top:parseInt(p.element.css("top"),10),left:parseInt(p.element.css("left"),10)};if(h&&h.length){c(h[0]).css({width:o.width,height:o.height})}p._updateCache(o);p._propagate("resize",i)}})}});c.ui.plugin.add("resizable","containment",{start:function(f,r){var t=c(this).data("resizable"),j=t.options,l=t.element;var g=j.containment,k=(g instanceof c)?g.get(0):(/parent/.test(g))?l.parent().get(0):g;if(!k){return}t.containerElement=c(k);if(/document/.test(g)||g==document){t.containerOffset={left:0,top:0};t.containerPosition={left:0,top:0};t.parentData={element:c(document),left:0,top:0,width:c(document).width(),height:c(document).height()||document.body.parentNode.scrollHeight}}else{var n=c(k),i=[];c(["Top","Right","Left","Bottom"]).each(function(p,o){i[p]=b(n.css("padding"+o))});t.containerOffset=n.offset();t.containerPosition=n.position();t.containerSize={height:(n.innerHeight()-i[3]),width:(n.innerWidth()-i[1])};var q=t.containerOffset,e=t.containerSize.height,m=t.containerSize.width,h=(c.ui.hasScroll(k,"left")?k.scrollWidth:m),s=(c.ui.hasScroll(k)?k.scrollHeight:e);t.parentData={element:k,left:q.left,top:q.top,width:h,height:s}}},resize:function(g,q){var t=c(this).data("resizable"),i=t.options,f=t.containerSize,p=t.containerOffset,m=t.size,n=t.position,r=t._aspectRatio||g.shiftKey,e={top:0,left:0},h=t.containerElement;if(h[0]!=document&&(/static/).test(h.css("position"))){e=p}if(n.left<(t._helper?p.left:0)){t.size.width=t.size.width+(t._helper?(t.position.left-p.left):(t.position.left-e.left));if(r){t.size.height=t.size.width/i.aspectRatio}t.position.left=i.helper?p.left:0}if(n.top<(t._helper?p.top:0)){t.size.height=t.size.height+(t._helper?(t.position.top-p.top):t.position.top);if(r){t.size.width=t.size.height*i.aspectRatio}t.position.top=t._helper?p.top:0}t.offset.left=t.parentData.left+t.position.left;t.offset.top=t.parentData.top+t.position.top;var l=Math.abs((t._helper?t.offset.left-e.left:(t.offset.left-e.left))+t.sizeDiff.width),s=Math.abs((t._helper?t.offset.top-e.top:(t.offset.top-p.top))+t.sizeDiff.height);var k=t.containerElement.get(0)==t.element.parent().get(0),j=/relative|absolute/.test(t.containerElement.css("position"));if(k&&j){l-=t.parentData.left}if(l+t.size.width>=t.parentData.width){t.size.width=t.parentData.width-l;if(r){t.size.height=t.size.width/t.aspectRatio}}if(s+t.size.height>=t.parentData.height){t.size.height=t.parentData.height-s;if(r){t.size.width=t.size.height*t.aspectRatio}}},stop:function(f,n){var q=c(this).data("resizable"),g=q.options,l=q.position,m=q.containerOffset,e=q.containerPosition,i=q.containerElement;var j=c(q.helper),r=j.offset(),p=j.outerWidth()-q.sizeDiff.width,k=j.outerHeight()-q.sizeDiff.height;if(q._helper&&!g.animate&&(/relative/).test(i.css("position"))){c(this).css({left:r.left-e.left-m.left,width:p,height:k})}if(q._helper&&!g.animate&&(/static/).test(i.css("position"))){c(this).css({left:r.left-e.left-m.left,width:p,height:k})}}});c.ui.plugin.add("resizable","ghost",{start:function(g,h){var e=c(this).data("resizable"),i=e.options,f=e.size;e.ghost=e.originalElement.clone();e.ghost.css({opacity:0.25,display:"block",position:"relative",height:f.height,width:f.width,margin:0,left:0,top:0}).addClass("ui-resizable-ghost").addClass(typeof i.ghost=="string"?i.ghost:"");e.ghost.appendTo(e.helper)},resize:function(f,g){var e=c(this).data("resizable"),h=e.options;if(e.ghost){e.ghost.css({position:"relative",height:e.size.height,width:e.size.width})}},stop:function(f,g){var e=c(this).data("resizable"),h=e.options;if(e.ghost&&e.helper){e.helper.get(0).removeChild(e.ghost.get(0))}}});c.ui.plugin.add("resizable","grid",{resize:function(e,m){var p=c(this).data("resizable"),h=p.options,k=p.size,i=p.originalSize,j=p.originalPosition,n=p.axis,l=h._aspectRatio||e.shiftKey;h.grid=typeof h.grid=="number"?[h.grid,h.grid]:h.grid;var g=Math.round((k.width-i.width)/(h.grid[0]||1))*(h.grid[0]||1),f=Math.round((k.height-i.height)/(h.grid[1]||1))*(h.grid[1]||1);if(/^(se|s|e)$/.test(n)){p.size.width=i.width+g;p.size.height=i.height+f}else{if(/^(ne)$/.test(n)){p.size.width=i.width+g;p.size.height=i.height+f;p.position.top=j.top-f}else{if(/^(sw)$/.test(n)){p.size.width=i.width+g;p.size.height=i.height+f;p.position.left=j.left-g}else{p.size.width=i.width+g;p.size.height=i.height+f;p.position.top=j.top-f;p.position.left=j.left-g}}}}});var b=function(e){return parseInt(e,10)||0};var a=function(e){return !isNaN(parseInt(e,10))}})(jQuery);/*! + * jQuery hashchange event - v1.3 - 7/21/2010 + * http://benalman.com/projects/jquery-hashchange-plugin/ + * + * Copyright (c) 2010 "Cowboy" Ben Alman + * Dual licensed under the MIT and GPL licenses. + * http://benalman.com/about/license/ + */ +(function($,e,b){var c="hashchange",h=document,f,g=$.event.special,i=h.documentMode,d="on"+c in e&&(i===b||i>7);function a(j){j=j||location.href;return"#"+j.replace(/^[^#]*#?(.*)$/,"$1")}$.fn[c]=function(j){return j?this.bind(c,j):this.trigger(c)};$.fn[c].delay=50;g[c]=$.extend(g[c],{setup:function(){if(d){return false}$(f.start)},teardown:function(){if(d){return false}$(f.stop)}});f=(function(){var j={},p,m=a(),k=function(q){return q},l=k,o=k;j.start=function(){p||n()};j.stop=function(){p&&clearTimeout(p);p=b};function n(){var r=a(),q=o(m);if(r!==m){l(m=r,q);$(e).trigger(c)}else{if(q!==m){location.href=location.href.replace(/#.*/,"")+q}}p=setTimeout(n,$.fn[c].delay)}$.browser.msie&&!d&&(function(){var q,r;j.start=function(){if(!q){r=$.fn[c].src;r=r&&r+a();q=$('