blob: b46926d41aebaf62bcc8cba81305e77dce67174a [file] [log] [blame]
(window.webpackJsonp=window.webpackJsonp||[]).push([[26],{249:function(e,t,a){e.exports=a.p+"assets/img/teaclave-client-sdks.27efa590.png"},375:function(e,t,a){"use strict";a.r(t);var n=a(11),s=Object(n.a)({},(function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[n("p",[n("RouterLink",{attrs:{to:"/blog/2021-03-01-announcing-teaclave-0-2-0/"}},[e._v("English")]),e._v(" | "),n("RouterLink",{attrs:{to:"/blog/2021-03-01-announcing-teaclave-0-2-0-cn/"}},[e._v("中文")])],1),e._v(" "),n("p",[e._v("On behalf of the Teaclave community, I am happy to announce the "),n("em",[e._v("second")]),e._v(" Apache\nIncubator release of Teaclave, 0.2.0. Teaclave is a universal secure computing\nplatform, making computation on privacy-sensitive data safe and simple.")]),e._v(" "),n("p",[e._v("In 0.2.0, we focus on various components including built-in functions, SDKs in\ndifferent languages, docker, command line interface, documents, etc.")]),e._v(" "),n("h2",{attrs:{id:"highlights"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#highlights"}},[e._v("#")]),e._v(" Highlights")]),e._v(" "),n("p",[e._v("In version 0.2.0, we added more client SDKs in different languages; Rust, C, and\neven Swift. In "),n("a",{attrs:{href:"/blog/2021-02-24-teaclave-meetup-2"}},[e._v("Teaclave Meetup #2")]),e._v(", we\nintroduced the design of client SDKs.\nBasically, we are using JSON serialization/deserialization to make the interface\nsimple and easy to work on.")]),e._v(" "),n("p",[n("img",{attrs:{src:a(249),alt:"Teaclave Client SDKs"}})]),e._v(" "),n("h2",{attrs:{id:"_0-2-0-release-notes"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#_0-2-0-release-notes"}},[e._v("#")]),e._v(" 0.2.0 Release Notes")]),e._v(" "),n("p",[e._v("Specifically, we have following updates:")]),e._v(" "),n("h3",{attrs:{id:"functions"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#functions"}},[e._v("#")]),e._v(" Functions")]),e._v(" "),n("ul",[n("li",[e._v("Add the builtin PCA (Principal Component Analysis) function")]),e._v(" "),n("li",[e._v("Add the exposed password checking built-in function (#447)")])]),e._v(" "),n("h3",{attrs:{id:"sdk"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#sdk"}},[e._v("#")]),e._v(" SDK")]),e._v(" "),n("ul",[n("li",[e._v("Add Rust client SDK (#455)")]),e._v(" "),n("li",[e._v("Add C client SDK and examples (#470)")]),e._v(" "),n("li",[e._v("Add Swift SDK (iOS framework)")]),e._v(" "),n("li",[e._v("Change CMAC format from string to bytes array")])]),e._v(" "),n("h3",{attrs:{id:"docker"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#docker"}},[e._v("#")]),e._v(" Docker")]),e._v(" "),n("ul",[n("li",[e._v("Add a "),n("code",[e._v("teaclave-file-service")]),e._v("container to the docker compose file to help run the examples (#446)")]),e._v(" "),n("li",[e._v("Fix sim mode docker compose file (#462)")])]),e._v(" "),n("h3",{attrs:{id:"cli"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#cli"}},[e._v("#")]),e._v(" CLI")]),e._v(" "),n("ul",[n("li",[e._v("[cli] Add the attest subcommand to display attestation report from the remote Teaclave service")])]),e._v(" "),n("h3",{attrs:{id:"documents"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#documents"}},[e._v("#")]),e._v(" Documents")]),e._v(" "),n("ul",[n("li",[e._v("[docs] Add permalink for codebase's README (#428)")]),e._v(" "),n("li",[e._v("[docs] Add document of Deploying Teaclave on Azure Confidential Computing Virtual Machines")])]),e._v(" "),n("h3",{attrs:{id:"bug-fixes"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#bug-fixes"}},[e._v("#")]),e._v(" Bug Fixes")]),e._v(" "),n("ul",[n("li",[e._v("[binder] Add checks and test case for input/output buffer. (#423)")])]),e._v(" "),n("h3",{attrs:{id:"misc"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#misc"}},[e._v("#")]),e._v(" Misc")]),e._v(" "),n("ul",[n("li",[e._v("Start to use GitHub Action (#473)")]),e._v(" "),n("li",[e._v("Add GitHub issue templates (#476)")]),e._v(" "),n("li",[e._v("Document polishing")])]),e._v(" "),n("h2",{attrs:{id:"download"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#download"}},[e._v("#")]),e._v(" Download")]),e._v(" "),n("p",[e._v("Teaclave 0.2.0 can be downloaded at "),n("RouterLink",{attrs:{to:"/download/"}},[e._v("the download page")]),e._v(". Note that\nit is essential to verify the integrity of the downloaded file using the\nPGP signature (the "),n("code",[e._v(".asc")]),e._v(" file) or a hash (the "),n("code",[e._v(".sha256")]),e._v(" file).")],1),e._v(" "),n("h2",{attrs:{id:"documentation"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#documentation"}},[e._v("#")]),e._v(" Documentation")]),e._v(" "),n("p",[e._v("If it is the first time to try Teaclave, we provide a simple but clear tutorial\nto guide you getting stated with Teaclave by invoking\n"),n("RouterLink",{attrs:{to:"/docs/my-first-function/"}},[e._v("your first function")]),e._v(" in Teaclave.")],1),e._v(" "),n("p",[e._v("Basically, you can build the Teaclave platform using docker with these commands:")]),e._v(" "),n("div",{staticClass:"language-sh extra-class"},[n("pre",{pre:!0,attrs:{class:"language-text"}},[n("code",[e._v('$ cd incubator-teaclave\n$ docker run --rm -v $(pwd):/teaclave -w /teaclave \\\n -it teaclave/teaclave-build-ubuntu-1804-sgx-2.9.1:latest \\\n bash -c ". /root/.cargo/env && \\\n . /opt/sgxsdk/environment && \\\n mkdir -p build && cd build && \\\n cmake -DTEST_MODE=ON .. && \\\n make"\n')])])]),n("p",[e._v("Launch all services with "),n("code",[e._v("docker-compose")]),e._v(" using simulation mode:")]),e._v(" "),n("div",{staticClass:"language-sh extra-class"},[n("pre",{pre:!0,attrs:{class:"language-text"}},[n("code",[e._v("$ (cd docker && docker-compose -f docker-compose-ubuntu-1804-sgx-sim-mode.yml up --build)\n")])])]),n("p",[e._v("And invoke function with a Python client:")]),e._v(" "),n("div",{staticClass:"language-sh extra-class"},[n("pre",{pre:!0,attrs:{class:"language-text"}},[n("code",[e._v("$ cd examples/python\n$ PYTHONPATH=../../sdk/python python3 builtin_echo.py 'Hello, Teaclave!'\n[+] registering user\n[+] login\n[+] registering function\n[+] creating task\n[+] approving task\n[+] invoking task\n[+] getting result\n[+] done\n[+] function return: b'Hello, Teaclave!'\n")])])]),n("p",[e._v("If you want to understand the internals of Teaclave, we provide several\ndocuments about the "),n("RouterLink",{attrs:{to:"/docs/#design"}},[e._v("design")]),e._v(" of Teaclave. Also, we extensively\ndocument our "),n("RouterLink",{attrs:{to:"/blog/docs/#codebase"}},[e._v("codebase")]),e._v(" in each sub directories. At last, "),n("RouterLink",{attrs:{to:"/blog/docs/#api-references"}},[e._v("API references")]),e._v("\nare automatically generated and uploaded to our homepage.")],1)])}),[],!1,null,null,null);t.default=s.exports}}]);