0f29b684f5b7b3075fa1afd9f575c84033445b1e
[platform/core/security/tef-optee_os.git] / CHANGELOG.md
1 # OP-TEE - version 2.3.0
2
3 [Link][github_commits_2_3_0] to a list of all commits between this release and
4 the previous one (2.2.0).
5
6 Please note: this release is API-compatible with the previous one, but the
7 Secure Storage internal format for the REE FS is not compatible due to commit
8 [361fb3e][commit_361fb3e] ("core: REE FS: use a single file per object").
9
10 [commit_361fb3e]: https://github.com/OP-TEE/optee_os/commit/361fb3e
11
12 ## New features
13
14 * New supported platform: Xilinx Zynq 7000 ZC702 (`PLATFORM=zynq7k-zc702`)
15
16 * Add debug assertions to spinlocks and mutexes
17
18 * Add more CP15 register access macros for Cortex-A9
19
20 * ARMv7-A: redesign secure monitor to make it easier to register services
21
22 * ARMv7-A: cleanup boot arguments
23
24 * libutee: extend `TEE_CheckMemoryAccessRights()` with
25   `TEE_MEMORY_ACCESS_SECURE` and `TEE_MEMORY_ACCESS_NONSECURE`
26
27 * plat-hikey: enable SPI by default and add sample test code
28
29 * Consider `CFLAGS_ta_arm64` and `CFLAGS_ta_arm32` when building TAs
30
31 * Secure storage refactoring
32   - Simplify interface with tee-supplicant. Minimize round trips with normal
33     world, especially by adding a cache for FS RPC payload data.
34   - REE FS: use a single file per object, remove block cache.
35
36 * Print call stack in panic()
37
38 ## Bug fixes
39
40 * Fix UUID encoding when communicating with normal world (use big endian
41   mode instead of native endianness). Related to this, the string format
42   for UUIDs has changed in tee-supplicant, so that TA file names now follow
43   the format defined in RFC4122 (a missing hyphen was added). The old format
44   is still supported, but deprecated, and will likely be removed with the
45   next major release.
46
47 * Drop write permission to non-writable ELF segments after TA loading is
48   complete.
49
50 * mm: fix confusing memory mapping debug traces
51
52 * plat-ti: fix issues with MMU mapping
53
54 * crypto: fix clearing of big numbers
55
56 * build: allow spaces and double quotes in CFG_ variables
57
58 * mm: use paddr_t to support both 32- and 64-bit architectures properly.
59   Resolves 32-bit truncation error when pool is at top of 32 bit address
60   space on 64-bit architecture.
61
62 * plat-stm: support pager. Fix pager on ARMv7-A SMP boards.
63
64 * Fix debug output of Trusted Applications (remove "ERROR: TEE-CORE:" prefix)
65
66 * Do not consider TA memref parameters as TA private memory
67
68 * crypto: fix `cipher_final()` which would not call `cbc_done()` for CBC_MAC
69   algorithms
70
71 * fix for 16-way PL310
72
73 * arm32: fix call stack unwinding (`print_stack()`)
74
75 * arm32: fix spinlock assembly code
76
77 * plat-stm, plat-imx: fix SCR initalization
78
79 * Fix user L1 MMU entries calculation (non-LPAE), allowing TTBCR.N values
80   other than 7.
81
82 * mtk-mt8173: fix panic caused by incorrect size of SHMEM
83
84 * plat-stm: fix RNG driver (non-flat mapping)
85
86 ## Known issues
87
88 * New issues open on GitHub
89   * [#1203][issue1203] AES-CTS mode will fail when inlen=0x100, in_incr=0x80
90   * [#1199][issue1199] Both tee and teepriv reported GlobalPlatform compliant
91   * [#1188][issue1188] Secure storage (SQL FS and REE FS): blocks not tied to
92     current meta header
93   * [#1172][issue1172] paddr_t should be larger than 32 bits when
94     CFG_WITH_LPAE is enabled
95
96 ## Tested on
97
98 In the list below, _standard_ means that the `xtest` program passed with
99 its default configuration, while _extended_ means it was run successfully
100 with the additional GlobalPlatform™ TEE Initial Configuration Test Suite
101 v1.1.0.4.
102
103 If a platform is not listed, it means the release was not tested on this
104 platform.
105
106 <!-- ${PLATFORM}-${PLATFORM_FLAVOR}, ordered alphabetically -->
107 * d02: extended
108 * hikey: extended
109 * imx-mx6ulevk: standard
110 * ls-ls1021atwr: standard
111 * mediatek-mt8173: standard
112 * rcar-h3: standard
113 * rpi3: standard
114 * stm-b2260: extended
115 * stm-cannes: extended
116 * ti-dra7xx: standard
117 * vexpress-fvp: standard
118 * vexpress-juno: standard
119 * vexpress-qemu_armv8a: standard
120 * vexpress-qemu_virt: extended
121 * zynqmp-zcu102: standard
122
123 [github_commits_2_3_0]: https://github.com/OP-TEE/optee_os/compare/2.2.0...2.3.0
124 [issue1172]: https://github.com/OP-TEE/optee_os/issues/1172
125 [issue1188]: https://github.com/OP-TEE/optee_os/issues/1188
126 [issue1199]: https://github.com/OP-TEE/optee_os/issues/1199
127 [issue1203]: https://github.com/OP-TEE/optee_os/issues/1203
128
129 # OP-TEE - version 2.2.0
130
131 [Link][github_commits_2_2_0] to a list of all commits between this release and
132 the previous one (2.1.0).
133
134 Please note: this release is API-compatible with the previous one, but the
135 Secure Storage internal format is not compatible due to commit
136 [fde4a75][commit_fde4a75] ("storage: encrypt the FEK with a TA-specific key").
137
138 [commit_fde4a75]: https://github.com/OP-TEE/optee_os/commit/fde4a75
139
140 ## New features
141
142 * New supported platforms:
143         * Freescale i.MX6 Quad SABRE Lite & SD
144         * HiSilicon D02
145         * Raspberry Pi3
146         * Renesas RCAR H3
147         * STMicroelectronics b2260 - h410
148
149 * Pager: Support paging of read/write pages by encrypting them with AES-GCM.
150   Support paging of user TAs. Add global setting for TZSRAM size
151   (CFG_CORE_TZSRAM_EMUL_SIZE), defaults to 300K.
152
153 * Support for more than 8 CPU cores
154
155 * Added SPI framework and PL022 driver
156
157 * GPIO: framework supports multiple instances, PL061 driver now has get/set
158   interrupt and mode control functions
159
160 * Secure storage: Encrypt the File Encryption Key with a TA-specific key for
161   better TA isolation. Add build-time and run-time support for multiple storage
162   backends. Add SQLite backend.
163
164 * Trusted User Interface: some code is introduced to support the implementation
165   of TUI. This includes: a generic framebuffer driver, display and serial
166   abstractions, and drivers for PL111 (LCD) / PL050 (KMI) / TZC400 and PS2
167   mouse.
168
169 * AES acceleration using ARMv8-A Cryptographic Extensions instructions is
170   now supported in AArch32 mode
171
172 * Add support for GCC flags: -fsanitize=undefined and -fsanitize=kernel-address
173
174 * Use a global setting for core heap size (CFG_CORE_HEAP_SIZE), 64K by default.
175
176 * Add macros to unwind and print the call stack of TEE core
177
178 * Libtomcrypt: sync with the latest `develop` branch.
179
180 * The Trusted Application SDK (ta_dev_kit.mk) can produce libraries (.a)
181
182 * Rework assertions and TEE core panics and properly honor NDEBUG
183
184 ## Bug fixes
185
186 * Fix incorrect algorithm passed to cipher.final()
187
188 * scripts: support Python 2.x and 3.x
189
190 * Secure storage: Add proper locking to support concurrent access. Fix sign
191   extension bug with offset parameter of syscall storage_obj_seek which could
192   cause errors in Aarch32 mode. Fix reading beyond end of file.
193
194 * Aarch64: mask all maskable exceptions before doing a normal return from call.
195
196 * Device Tree: add no-map property to OP-TEE node in reserved-memory.
197
198 * LibTomcrypt: fix CVE-2016-6129
199
200 ## Known issues
201
202 * New issues open on GitHub
203   * [#1093][issue1093] rcar-h3: xtest 6010 hangs
204   * [#1092][issue1092] rcar-h3: xtest 4010 fails
205   * [#1081][issue1081] Bad mapping of TA secure memref parameters
206   * [#1071][issue1071] __data_end may not correctly represent text start position when using CFG_WITH_PAGER
207   * [#1069][issue1069] armv7/Aarch32: crash in stack unwind (DPRINT_STACK())
208
209 ## Tested on
210
211 In the list below, _standard_ means that the `xtest` program passed with
212 its default configuration, while _extended_ means it was run successfully
213 with the additional GlobalPlatform™ TEE Initial Configuration Test Suite
214 v1.1.0.4.
215
216 If a platform is not listed, it means the release was not tested on this
217 platform.
218
219 <!-- ${PLATFORM}-${PLATFORM_FLAVOR}, ordered alphabetically -->
220 * d02: extended
221 * hikey: extended
222 * imx-mx6qsabrelite: standard
223 * imx-mx6qsabresd: standard
224 * rcar-h3: standard, pass except issues [#1092][issue1092] and [#1093][issue1093]
225 * rpi3: standard
226 * stm-b2260: standard
227 * stm-cannes: standard
228 * ti-dra7xx: standard
229 * vexpress-fvp: standard
230 * vexpress-juno: standard
231 * vexpress-qemu_armv8a: standard
232 * vexpress-qemu_virt: extended
233 * zynqmp-zcu102: standard
234
235 [github_commits_2_2_0]: https://github.com/OP-TEE/optee_os/compare/2.1.0...2.2.0
236 [issue1081]: https://github.com/OP-TEE/optee_os/issues/1081
237 [issue1071]: https://github.com/OP-TEE/optee_os/issues/1071
238 [issue1069]: https://github.com/OP-TEE/optee_os/issues/1069
239 [issue1092]: https://github.com/OP-TEE/optee_os/issues/1092
240 [issue1093]: https://github.com/OP-TEE/optee_os/issues/1093
241
242 # OP-TEE - version 2.1.0
243
244 ## New features
245
246 * New supported platforms:
247         * Xilinx Zynq UltraScale+ MPSOC
248         * Spreadtrum SC9860
249
250 * GCC5 support
251
252 * Non Linear Mapping support: In OP-TEE kernel mode, the physical to virtual
253   addresses was linear until this release, meaning the virtual addresses
254   were equal to the physical addresses. This is no more the case in this
255   release.
256
257 * Font rendering routines have been introduced in order to ease an
258   implementation of Trusted UI.
259
260 * File Storage: Possibility to use the normal world filesystem and the RPMB
261   implementations simultaneously.
262
263 * AOSP: There is a [local manifest][aosp_local_manifest] to build OP-TEE into an AOSP build, running on HiKey.
264   Please refer to the README in that repo for instructions.
265
266 * OpenEmbedded: In addition to the makefile-based build described in the optee_os README, there is an
267   [OpenEmbedded-based build][oe_build] that supports Qemu (32-bit), FVP (64-bit), and HiKey (64-bit).
268   Please refer to the README in that repo for instructions.
269
270 * [Link][github_commits_2_1_0] to a list of all commits between this and
271   previous release.
272
273
274 ## Tested on
275 Definitions:
276
277 | Type | Meaning |
278 | ---- | ------- |
279 | Standard tests | The [optee_test][optee_test] project. |
280 | Extended tests | optee_test with tests from the GlobalPlatform™ TEE Initial Configuration Test Suite v1.1.0.4. |
281
282 *       ARM Juno Board (vexpress-juno), standard.
283 *       Foundation Models (vexpress-fvp), standard tests + extended tests,
284         using FVP ARM V8 Foundation Platformr0p0 (platform build 10.0.37)
285 *       FSL i.MX6 UltraLite EVK (imx), standard.
286 *       FSL ls1021a (ls-ls1021atwr), standard tests.
287 *       HiKey (hikey), standard + extended tests.
288 *       QEMU (vexpress-qemu), standard + extended tests.
289 *       Xilinx Zynq UltraScale+ MPSOC, standard tests
290
291 Note that the following platform has not been tested:
292 *       MTK8173-EVB (mediatek-mt8173)
293
294
295 ## Known issues
296 * Issue(s) open on GitHub
297   * [#868][pr868]: python-wand font generation sometimes times out
298   * [#863][pr863]: "double free or corruption" error when building optee_os
299   * [#858][pr858]: UUIDs in binary format have wrong endinanness
300   * [#857][pr857]: Formatting of UUIDs is incorrect
301   * [#847][pr847]: optee_os panic(TEE-CORE: Assertion)
302   * [#838][pr838]: TUI font rendering is _very_ slow
303   * [#814][pr814]: Persistent objects : save informations after close
304   * [#665][pr665]: xtest 1013 stalled on HiKey when log levels are 4 and optee_os is on its own UART
305   * [#506][pr506]: tee-supplicant panic & ta panic
306
307 [github_commits_2_1_0]: https://github.com/OP-TEE/optee_os/compare/2.0.0...2.1.0
308 [pr868]: https://github.com/OP-TEE/optee_os/issues/868
309 [pr863]: https://github.com/OP-TEE/optee_os/issues/863
310 [pr858]: https://github.com/OP-TEE/optee_os/issues/858
311 [pr857]: https://github.com/OP-TEE/optee_os/issues/857
312 [pr847]: https://github.com/OP-TEE/optee_os/issues/847
313 [pr838]: https://github.com/OP-TEE/optee_os/issues/838
314 [pr814]: https://github.com/OP-TEE/optee_os/issues/814
315 [pr665]: https://github.com/OP-TEE/optee_os/issues/665
316 [aosp_local_manifest]: https://github.com/linaro-swg/optee_android_manifest
317 [oe_build]: https://github.com/linaro-swg/oe-optee
318
319 # OP-TEE - version 2.0.0
320
321 ## New features
322
323 * Generic driver: A new generic TEE driver is in the process of being
324   [upstreamed][gendrv_v9].
325   In this release, [OP-TEE/optee_linuxdriver][optee_linuxdriver] is no more used.
326   Instead, linux v4.5 is being patched using the proposed Generic TEE Driver,
327   as it can be found in [https://github.com/linaro-swg/linux/tree/optee][linux_optee]
328
329 * RPMB support: Secure Storage can now use Replay Protected Memory Block (RPMB) partition
330   of an eMMC device. Check the [full documentation][rpmb_doc]
331
332 * Hard-float ABI is now available.
333
334 * [Link][github_commits_2_0_0] to a list of all commits between this and
335   previous release.
336
337
338 ## Tested on
339 Definitions:
340
341 | Type | Meaning |
342 | ---- | ------- |
343 | Standard tests | The [optee_test][optee_test] project. |
344 | Extended tests | optee_test with tests from the GlobalPlatform™ TEE Initial Configuration Test Suite v1.1.0.4. |
345
346 *       ARM Juno Board (vexpress-juno), standard.
347 *       Foundation Models (vexpress-fvp), standard tests + extended tests,
348         using FVP ARM V8 Foundation Platformr0p0 (platform build 9.5.40)
349 *       FSL ls1021a (ls-ls1021atwr), standard.
350 *       HiKey (hikey), standard.
351 *       MTK8173-EVB (mediatek-mt8173), standard.
352 *       QEMU (vexpress-qemu), standard + extended tests.
353 *       STM Cannes (stm-cannes), standard + extended tests.
354
355 ## Known issues
356 * Issue(s) open on GitHub
357   * [#40][prld40] BUG_ON() when re-using RPC buffer to tee-supplicant
358   * [#506][pr506]: tee-supplicant panic & ta panic
359
360 [github_commits_2_0_0]: https://github.com/OP-TEE/optee_os/compare/1.1.0...2.0.0
361 [rpmb_doc]: https://github.com/OP-TEE/optee_os/blob/master/documentation/secure_storage_rpmb.md
362 [optee_linuxdriver]: https://github.com/OP-TEE/optee_linuxdriver
363 [gendrv_v9]: https://lkml.org/lkml/2016/4/1/205
364 [linux_optee]: https://github.com/linaro-swg/linux/tree/optee
365
366
367 # OP-TEE - version 1.1.0
368
369
370 ## New features
371
372 * Softfloat library: floating point support is now available in 32bits TA.
373
374 * Support running 64-bits TA: on ARMv8-A platform, TA can be compiled in
375   AArch32 and/or in AArch64 in case the core is compiled in AArch64.
376   An example can be found in HiKey configuration file. Using the following
377   excerpt code, the user TA libraries are compiled in both AArch32 and
378   AArch64, and can be found in `out/arm-plat-hikey/export-ta_arm32` and
379   `out/arm-plat-hikey/export-ta_arm64`
380
381 ```
382     ta-targets = ta_arm32
383     ta-targets += ta_arm64
384 ```
385
386 * Concurrent TA support: multiple TA can run in parallel on
387   several cores.
388
389 * New tests added in xtest test suite: concurrent TA (xtest 1013),
390   floating point tests (xtest 1006 and os_test TA) and corruption
391   file storage (xtest 20000)
392
393 * [Link][github_commits_1_1_0] to a list of all commits between this and
394   previous release.
395
396
397 ## Tested on
398 Definitions:
399
400 | Type | Meaning |
401 | ---- | ------- |
402 | Standard tests | The [optee_test][optee_test] project. |
403 | Extended tests | optee_test with tests from the GlobalPlatform™ TEE Initial Configuration Test Suite v1.1.0.4. |
404 | Hello world test | Plain hello world Trusted Application such as [this][hello_world]. |
405
406 *       Foundation Models (vexpress-fvp), standard tests + extended tests,
407         using FVP ARM V8 Foundation Platformr0p0 (platform build 9.5.40)
408 *       HiKey (hikey), standard + extended tests.
409 *       MT8173 (mediatek), standard tests.
410 *       QEMU (vexpress-qemu), standard + extended tests.
411 *       STM Cannes (stm-cannes), standard + extended tests.
412
413 ## Known issues
414 * Secure Storage is implemented, but note that anti-rollback protection
415   is not implemented yet.
416
417 * Issue(s) open on GitHub
418   * [#40][prld40] BUG_ON() when re-using RPC buffer to tee-supplicant
419   * [#296][pr296]: Connecting RPMB to the storage APIs.
420   * [#493][pr493]: setup_juno_optee: unable to find pre-built binaries
421   * [#506][pr506]: tee-supplicant panic & ta panic
422
423 [prld40]: https://github.com/OP-TEE/optee_linuxdriver/issues/40
424 [pr506]: https://github.com/OP-TEE/optee_os/issues/506
425 [github_commits_1_1_0]: https://github.com/OP-TEE/optee_os/compare/1.0.1...1.1.0
426
427
428
429 # OP-TEE - version 1.0.0
430
431 OP-TEE is now maintained by Linaro. Contributors do not need to
432 sign a CLA anymore, but must follow the rules of the [DCO][DCO]
433 (Developer Certificate of Origin) instead.
434
435
436 ## New features
437
438 * Add hardware support for Texas Instruments DRA7xx, ARMv7 (plat-ti)
439
440 * GlobalPlatform™ TEE Internal Core API Specification v1.1,
441   including ECC algorithms.
442
443 * Secure Storage: Files stored by the REE are now encrypted. Operations
444   are made atomic in order to prevent inconsistencies in case of errors
445   during the storage operations. [Slides][LCStorage] describing the
446   Secure Storage have been presented at the Linaro Connect SFO15.
447
448 * Change of format of the Trusted Applications: they follow a
449   [signed ELF format][elf]
450
451 * Rework thread [synchronization][synchro] in optee_os.
452
453 * Use of ARMv8 native cryptographic support.
454
455 * [OP-TEE/optee_test][optee_test] test suite is released.
456
457 * Introduce [OP-TEE/manifest][manifest] and [OP-TEE/build][build]
458   to setup and build QEMU, FVP, HiKey and Mediatek platforms. Setup scripts
459   that used to be in optee_os have been removed, except for Juno board.
460
461 * [Link][github_commits_1_0_0] to a list of all commits between this and
462   previous release.
463
464
465 ## Tested on
466 Definitions:
467
468 | Type | Meaning |
469 | ---- | ------- |
470 | Standard tests | The [optee_test][optee_test] project. |
471 | Extended tests | optee_test with tests from the GlobalPlatform™ TEE Initial Configuration Test Suite v1.1.0.4. |
472 | Hello world test | Plain hello world Trusted Application such as [this][hello_world]. |
473
474 *       ARM Juno Board (vexpress-juno), standard + extended tests.
475 *       Foundation Models (vexpress-fvp), standard tests.
476 *       HiKey (hikey), standard + extended tests.
477 *       MT8173 (mediatek), standard tests.
478 *       QEMU (vexpress-qemu), standard + extended tests.
479 *       STM Cannes (stm-cannes), standard + extended tests.
480
481 ## Known issues
482 * Secure Storage is implemented, but note that anti-rollback protection
483   is not implemented yet.
484
485 * Issue(s) open on GitHub
486   * [#210][pr210]: libteec.so 32-bit does not communicate well
487     with 64-bit kernel module
488   * [#296][pr296]: Connecting RPMB to the storage APIs.
489   * [#493][pr493]: setup_juno_optee: unable to find pre-built binaries
490   * [#494][pr494]: HiKey: xtest 7671 fails (1.0.0-rc2)
491
492 [pr210]: https://github.com/OP-TEE/optee_os/issues/210
493 [pr296]: https://github.com/OP-TEE/optee_os/issues/296
494 [pr493]: https://github.com/OP-TEE/optee_os/issues/493
495 [pr494]: https://github.com/OP-TEE/optee_os/issues/494
496 [github_commits_1_0_0]: https://github.com/OP-TEE/optee_os/compare/0.3.0...1.0.0
497 [DCO]: https://github.com/OP-TEE/optee_os/blob/master/Notice.md#contributions
498 [LCStorage]: http://www.slideshare.net/linaroorg/sfo15503-secure-storage-in-optee
499 [synchro]: https://github.com/OP-TEE/optee_os/blob/master/documentation/optee_design.md#4-thread-handling
500 [elf]: https://github.com/OP-TEE/optee_os/blob/master/documentation/optee_design.md#format
501 [optee_test]: https://github.com/OP-TEE/optee_test
502 [manifest]: https://github.com/OP-TEE/manifest
503 [build]: https://github.com/OP-TEE/build
504
505
506
507 # OP-TEE - version 0.3.0
508
509 ## New features
510
511 *   Add hardware support for
512         *   Mediatek MT8173 Board, ARMv8-A (plat-mediatek)
513         *   Hisilicon HiKey Board, ARMv8-A (plat-hikey)
514 *   AArch64 build of optee_os is now possible through the configuration `CFG_ARM64_core=y`
515 *       Secure Storage: Data can be encrypted prior to their storage in the non-secure.
516         Build is configured using `CFG_ENC_FS=y`
517 *       A generic boot scheme can be used. Boot configuration is commonalized. This helps
518         new board support. It is applied on plat-hikey, plat-vexpress, plat-mediatek, plat-stm
519     and plat-vexpress.
520
521 ## Tested on
522 Definitions:
523
524 | Type | Meaning |
525 | ---- | ------- |
526 | Standard tests | The optee_test project. |
527 | Extended tests | optee_test with tests from the GlobalPlatform™ TEE Initial Configuration Test Suite v1.1.0.4. |
528 | Hello world test | Plain hello world Trusted Application such as [this][hello_world]. |
529
530 *       ARM Juno Board (vexpress-juno), standard tests.
531 *       Foundation Models (vexpress-fvp), standard tests.
532 *       HiKey (hikey), standard tests.
533 *       MT8173 (mediatek), standard tests.
534 *       QEMU (vexpress-qemu), standard + extended tests.
535 *       STM Cannes (stm-cannes), standard + extended tests.
536
537 -------------------------------------------
538
539 # OP-TEE - version 0.2.0
540
541 ## New features
542
543 ### Linux Driver Refactoring
544
545 Linux Driver has been refactored. It is now split in two parts:
546 *       optee.ko, the generic Linux driver. It contains all functionality
547         common to all backends.
548 *       optee_armtz.ko, a specific backend dedicated to the TrustZone optee.
549         It depends on optee.ko.
550
551 Loading the TrustZone optee linux driver module is now performed using
552
553     modprobe optee_armtz
554
555 Thanks to the dependency between the generic and the backend modules, optee.ko is then automatically loaded.
556
557 ### Misc new features
558 * support PL310 lock down at TEE boot
559 * add 64bits support (division / print)
560
561 ## Tested on
562 Definitions:
563
564 | Type | Meaning |
565 | ---- | ------- |
566 | Standard tests | The optee_test project. |
567 | Extended tests | optee_test with tests from the GlobalPlatform™ TEE Initial Configuration Test Suite v1.1.0.4. |
568 | Hello world test | Plain hello world Trusted Application such as [this][hello_world]. |
569
570 *   ARM Juno Board (vexpress-juno), standard tests + extended tests.
571
572 *   Foundation Models (vexpress-fvp), standard + extended tests.
573
574 *   QEMU (vexpress-qemu), standard + extended tests.
575
576 *   STM Cannes (stm-cannes), standard + extended tests.
577
578
579 ## Issues resolved since last release
580 *       Fix user TA trace issue, in order each TA is able to select its own trace level
581
582
583 -------------------------------------------
584 #OP-TEE - version 0.1.0
585
586 ## New features
587 Below is a summary of the most important features added, but at the end you will
588 find a link that present you all commits between the current and previous
589 release tag.
590
591 *   GlobalPlatform Client API v1.0 support.
592
593 *   GlobalPlatform Internal API v1.0 support.
594
595 *   GlobalPlatform Secure Elements v1.0 support.
596
597 *   Add hardware support for
598
599     *   Allwinner A80, ARMv7-A.
600
601     *   ARM Juno Board, ARMv8-A.
602
603     *   Foundation Models, ARMv8-A.
604
605     *   Fast Models, ARMv8-A.
606
607     *   QEMU, ARMv7-A.
608
609     *   STM Cannes, ARMv7-A.
610
611     *   STM Orly2, ARMv7-A.
612
613 *   Add LibTomCrypt as the default software cryptographic library.
614
615 *   Add cryptographic abstraction layer in on secure side to ease the use of
616     other cryptographic software libraries or adding support for hardware
617     acceleration.
618
619 *   Extended cryptographic API with support for HKDF, Concat KDF and PBKDF2.
620
621 *   SHA-1 and SHA-256 ARMv8-A crypto extension implementation.
622
623 *   Enabled paging support in OP-TEE OS.
624
625 *   Add support for xtest (both standard and extended) in QEMU and FVP setup
626     scripts.
627
628 *   Add documentation for the OS design, cryptographic abstraction layer, secure
629     elements design, the build system, GitHub usage, key derivation extensions,
630     ARM-Trusted Firmware usage within OP-TEE and GlobalPlatform usage within
631     OP-TEE.
632
633 *   Integrate support for Travis CI.
634
635 *   [Link][github_commits_0_1_0] to a list of all commits between this and
636     previous release.
637
638
639 ## Tested on
640 Definitions:
641
642 | Type | Meaning |
643 | ---- | ------- |
644 | Standard tests | The optee_test project. |
645 | Extended tests | optee_test with tests from the GlobalPlatform™ TEE Initial Configuration Test Suite v1.0.0. |
646 | Hello world test | Plain hello world Trusted Application such as [this][hello_world]. |
647
648 *   Allwinner A80 (plat-sunxi), hello world test.
649
650 *   ARM Juno Board (vexpress-juno), standard tests.
651
652 *   Foundation Models (plat-vexpress-fvp), standard + extended tests
653
654 *   QEMU (plat-vexpress-qemu), standard + extended tests (and Secure Elements
655     tested separately).
656
657 *   STM Cannes (plat-stm-cannes), standard + extended tests.
658
659
660 ## Issues resolved since last release
661 N/A since this is the first release tag on OP-TEE.
662
663
664 ## Known issues
665 *   Storage is implemented, but not "Secure storage", meaning that a client
666     needs to do encrypt files on their own before storing the files.
667
668 *   Issue(s) open on GitHub
669     *   [#95][pr95]: An error about building the test code of libtomcrypt.
670
671     *   [#149][pr149]: when testing optee os with arm trusted firmware (I
672         utilized optee os tee.bin as bl32 image) on juno platform, I got an
673         error.
674
675     *   [#161][pr161]: tee_svc_cryp.c lacks accessibility checks on
676         user-supplied TEE_Attributes.
677
678 [hello_world]: https://github.com/jenswi-linaro/lcu14_optee_hello_world
679 [github_commits_0_1_0]: https://github.com/OP-TEE/optee_os/compare/b01047730e77127c23a36591643eeb8bb0487d68...999e4a6c0f64d3177fd3d0db234107b6fb860884
680 [pr95]: https://github.com/OP-TEE/optee_os/issues/95
681 [pr149]: https://github.com/OP-TEE/optee_os/issues/149
682 [pr161]: https://github.com/OP-TEE/optee_os/issues/161
683
684 *   Global Platform Device Internal Core API v1.1
685     *   [#230][pr230]: Persistent object corruption support (TEE_ERROR_CORRUPT_OBJECT/_2)
686     *   [#230][pr230]: Persistent object access support (TEE_ERROR_STORAGE_NOT_AVAILABLE/_2)