History log of /optee_os/core/lib/libtomcrypt/ (Results 251 – 275 of 287)
Revision Date Author Comments
(<<< Hide modified files)
(Show modified files >>>)
bf49489402-Jul-2015 Pascal Brand <pascal.brand@st.com>

ECC: DH implementation and self tests

Reviewed-by: Jerome Forissier <jerome.forissier@linaro.org>
Reviewed-by: Jens Wiklander <jens.wiklander@linaro.org>
Tested-by: Jerome Forissier <jerome.forissie

ECC: DH implementation and self tests

Reviewed-by: Jerome Forissier <jerome.forissier@linaro.org>
Reviewed-by: Jens Wiklander <jens.wiklander@linaro.org>
Tested-by: Jerome Forissier <jerome.forissier@linaro.org> (HiKey 32 & 64-bit)
Tested-by: Pascal Brand <pascal.brand@linaro.org> (QEMU)
Signed-off-by: Pascal Brand <pascal.brand@st.com>

show more ...

12e66b6f02-Jul-2015 Cedric Chaumont <cedric.chaumont@st.com>

GP11 : Asymmetric functions fix/panic reason

Signed-off-by: Cedric Chaumont <cedric.chaumont@st.com>
Reviewed-by: Joakim Bech <joakim.bech@linaro.org>
Reviewed-by: Pascal Brand <pascal.brand@linaro.

GP11 : Asymmetric functions fix/panic reason

Signed-off-by: Cedric Chaumont <cedric.chaumont@st.com>
Reviewed-by: Joakim Bech <joakim.bech@linaro.org>
Reviewed-by: Pascal Brand <pascal.brand@linaro.org>
Tested-by: Cedric Chaumont <cedric.chaumont@linaro.org> (STM boards)
Tested-by: Cedric Chaumont <cedric.chaumont@linaro.org> (ARM Juno board)

show more ...

e1d7559026-Jun-2015 Jerome Forissier <jerome.forissier@linaro.org>

arm64: AES XTS using ARMv8-A cryptographic extensions

This completes the work started with commit:
7e8f94166c6f ("arm64: AES using ARMv8-A cryptographic extensions").

The ltc_cipher_descriptor stru

arm64: AES XTS using ARMv8-A cryptographic extensions

This completes the work started with commit:
7e8f94166c6f ("arm64: AES using ARMv8-A cryptographic extensions").

The ltc_cipher_descriptor structure of LibTomCrypt is updated to include
pointers to accelerated XTS routines, which can handle multiple blocks
of data. The actual processing is done in assembly by
ce_aes_xts_encrypt() and ce_aes_xts_decrypt().

aes-perf results on HiKey are now on par with other AES modes.
In the table below, XTS is non-accelerated (CFG_CRYPTO_AES_ARM64_CE=n),
XTS+ is commit 7e8f94166c6f, and XTS++ is this commit.

Average encryption speed (MiB/s):

Size | Mode
(KiB) | XTS XTS+ XTS++
------+------------------
1 | 9.2 13.0 21.3
2 | 11.7 18.3 41.4
4 | 13.6 23.0 78.3
8 | 14.7 26.3 141.4
16 | 15.4 28.4 236.6
32 | 15.8 29.6 362.2
64 | 16.0 30.3 495.3
128 | 16.1 30.6 605.8

Signed-off-by: Jerome Forissier <jerome.forissier@linaro.org>
Reviewed-by: Jens Wiklander <jens.wiklander@linaro.org>
Reviewed-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>

show more ...

9977404e25-Jun-2015 Pascal Brand <pascal.brand@st.com>

ECC: sign and self tests, at crypto_ops level

Note that in case of pager, the emulated esram size
has been increased from 200KB to 256KB.

Reviewed-by: Jens Wiklander <jens.wiklander@linaro.org>
Rev

ECC: sign and self tests, at crypto_ops level

Note that in case of pager, the emulated esram size
has been increased from 200KB to 256KB.

Reviewed-by: Jens Wiklander <jens.wiklander@linaro.org>
Reviewed-by: Jerome Forissier <jerome.forissier@linaro.org>
Tested-by: Jerome Forissier <jerome.forissier@linaro.org> (HiKey 32 & 64-bit)
Tested-by: Jerome Forissier <jerome.forissier@linaro.org> (HiKey with pager)
Tested-by: Pascal Brand <pascal.brand@linaro.org> (QEMU platform)
Signed-off-by: Pascal Brand <pascal.brand@st.com>

show more ...

316a94e718-Jun-2015 Pascal Brand <pascal.brand@st.com>

ECC: gen_ecc_key HAL

Implementation and test of crypto_ops.acipher.gen_ecc_key

Reviewed-by: Joakim Bech <joakim.bech@linaro.org>
Reviewed-by: Jens Wiklander <jens.wiklander@linaro.org>
Tested-by: P

ECC: gen_ecc_key HAL

Implementation and test of crypto_ops.acipher.gen_ecc_key

Reviewed-by: Joakim Bech <joakim.bech@linaro.org>
Reviewed-by: Jens Wiklander <jens.wiklander@linaro.org>
Tested-by: Pascal Brand <pascal.brand@linaro.org> (QEMU)
Signed-off-by: Pascal Brand <pascal.brand@st.com>

show more ...

7e8f941603-Jun-2015 Jerome Forissier <jerome.forissier@linaro.org>

arm64: AES using ARMv8-A cryptographic extensions

Adds AES acceleration to LibTomCrypt when CFG_CRYPTO_AES_ARM64_CE=y.

This commit implements an ltc_cipher_descriptor with accelerated
encryption an

arm64: AES using ARMv8-A cryptographic extensions

Adds AES acceleration to LibTomCrypt when CFG_CRYPTO_AES_ARM64_CE=y.

This commit implements an ltc_cipher_descriptor with accelerated
encryption and decryption for AES modes: ECB, CBC and CTR.
XTS will also benefit from CE acceleration since it relies on
ecb_encrypt() and ecb_decrypt(), but it may be beneficial to later
add multiple-blocks XTS operations to the descriptor.

The ARMv8 CE assembler code comes from the Linux kernel:
arch/arm64/crypto/{aes-modes.S,aes-ce.S,aes-ce-cipher.c}.

Tested on HiKey. CE code was benchmarked against plain C code using
the test application at http://github.com/linaro-swg/aes-perf.git.
A Trusted Application is invoked to encrypt a buffer of a given
size using TEE_CipherUpdate(). The client application measures the
time it takes for TEEC_InvokeCommand() to execute. The throughput
values below are computed from the average time it takes to encrypt
one buffer of the specified size. '+' after a mode means accelerated
with crypto extensions.

Average encryption speed (MiB/s):

Size | Mode
(KiB) | ECB CBC CTR XTS ECB+ CBC+ CTR+ XTS+
------+--------------------------------------------------
1 | 11.8 10.6 10.2 9.2 23.7 23.2 23.5 13.0
2 | 15.6 13.5 12.8 11.7 46.4 44.9 45.7 18.3
4 | 18.6 15.8 14.8 13.6 89.4 84.1 87.5 23.0
8 | 20.6 17.2 16.1 14.7 165.4 148.1 159.3 26.3
16 | 21.8 17.9 16.8 15.4 292.3 240.2 272.2 28.4
32 | 22.4 18.4 17.1 15.8 470.4 351.9 422.2 29.6
64 | 22.8 18.6 17.3 16.0 684.6 461.6 585.0 30.3
128 | 23.0 18.7 17.4 16.1 884.2 546.6 726.5 30.6

Signed-off-by: Jerome Forissier <jerome.forissier@linaro.org>
Reviewed-by: Jens Wiklander <jens.wiklander@linaro.org>
Reviewed-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>

show more ...

2d57ba9515-Jun-2015 Pascal Brand <pascal.brand@st.com>

ECC: Update LTC code from branch develop

Synchronize https://github.com/libtom/libtomcrypt,
src/pk/ecc, at sha1=aeaa6d4a515f390515c21f1678e11b52b81d1ada

Reviewed-by: Cedric Chaumont <cedric.chaumon

ECC: Update LTC code from branch develop

Synchronize https://github.com/libtom/libtomcrypt,
src/pk/ecc, at sha1=aeaa6d4a515f390515c21f1678e11b52b81d1ada

Reviewed-by: Cedric Chaumont <cedric.chaumont@linaro.org>
Reviewed-by: Joakim Bech <joakim.bech@linaro.org>
Tested-by: Pascal Brand <pascal.brand@linaro.org> (QEMU)
Signed-off-by: Pascal Brand <pascal.brand@st.com>

show more ...

c994cb4116-Jun-2015 Cedric Chaumont <cedric.chaumont@st.com>

GP Internal Core API v1.1 : enable LibTomCrypt's ECC code

Note: ECC-256 commented (legacy)

Signed-off-by: Cedric Chaumont <cedric.chaumont@st.com>
Reviewed-by: Jerome Forissier <jerome.forissier@li

GP Internal Core API v1.1 : enable LibTomCrypt's ECC code

Note: ECC-256 commented (legacy)

Signed-off-by: Cedric Chaumont <cedric.chaumont@st.com>
Reviewed-by: Jerome Forissier <jerome.forissier@linaro.org>
Reviewed-by: Pascal Brand <pascal.brand@linaro.org>
Tested-by: Cedric Chaumont <cedric.chaumont@linaro.org> (STM boards)
Tested-by: Cedric Chaumont <cedric.chaumont@linaro.org> (ARM Juno board)

show more ...


/optee_os/.travis.yml
/optee_os/CHANGELOG.md
/optee_os/core/arch/arm/include/arm64.h
/optee_os/core/arch/arm/include/kernel/thread.h
/optee_os/core/arch/arm/include/kernel/vfp.h
/optee_os/core/arch/arm/include/sm/teesmc.h
/optee_os/core/arch/arm/kernel/generic_boot.c
/optee_os/core/arch/arm/kernel/link.mk
/optee_os/core/arch/arm/kernel/mutex.c
/optee_os/core/arch/arm/kernel/sub.mk
/optee_os/core/arch/arm/kernel/tee_ta_manager.c
/optee_os/core/arch/arm/kernel/tee_time.c
/optee_os/core/arch/arm/kernel/thread.c
/optee_os/core/arch/arm/kernel/thread_a32.S
/optee_os/core/arch/arm/kernel/thread_a64.S
/optee_os/core/arch/arm/kernel/thread_private.h
/optee_os/core/arch/arm/kernel/vfp.c
/optee_os/core/arch/arm/kernel/vfp_a64.S
/optee_os/core/arch/arm/kernel/vfp_private.h
/optee_os/core/arch/arm/mm/core_mmu.c
/optee_os/core/arch/arm/mm/core_mmu_v7.c
/optee_os/core/arch/arm/plat-hikey/platform_config.h
/optee_os/core/arch/arm/plat-mediatek/platform_config.h
/optee_os/core/arch/arm/plat-vexpress/platform_config.h
/optee_os/core/arch/arm/sta/enc_fs_key_manager_tests.c
/optee_os/core/arch/arm/tee/arch_tee_fs.c
/optee_os/core/arch/arm/tee/tee_rpmb.c
/optee_os/core/include/tee/tee_cryp_provider.h
/optee_os/core/include/tee/tee_fs.h
/optee_os/core/kernel/tee_misc.c
include/tomcrypt_custom.h
src/pk/ecc/ltc_ecc_mulmod_timing.c
src/pk/ecc/sub.mk
src/pk/sub.mk
src/tee_ltc_provider.c
sub.mk
/optee_os/core/tee/tee_enc_fs.c
/optee_os/core/tee/tee_enc_fs_key_manager.c
/optee_os/core/tee/tee_fs.c
/optee_os/core/tee/tee_fs_common.c
/optee_os/core/tee/tee_fs_private.h
/optee_os/core/tee/tee_pobj.c
/optee_os/core/tee/tee_svc_cryp.c
/optee_os/core/tee/tee_svc_storage.c
/optee_os/documentation/crypto.md
/optee_os/lib/libutee/include/tee_api_defines.h
/optee_os/lib/libutee/tee_api_objects.c
/optee_os/scripts/setup_fvp_optee.sh
/optee_os/scripts/setup_juno_optee.sh
/optee_os/scripts/setup_mtk_optee.sh
/optee_os/scripts/setup_qemu_optee.sh
a822461116-Mar-2015 James Kung <james.kung@linaro.org>

Enhancing Secure Storage

- Implement encrypted file system key manager
* Key generation for SSK, FEK
* Provide helper APIs to do file encryption/decryption
* Finished key manager test cases fo

Enhancing Secure Storage

- Implement encrypted file system key manager
* Key generation for SSK, FEK
* Provide helper APIs to do file encryption/decryption
* Finished key manager test cases for file encryption/decryption tests

- Implements encrypted file system operations file-based operation
* file content is encrypted and MACed before storing
on normal world file system.
* file hole is not implemented because this is
meaningless in the context of secure storage.

Signed-off-by: SY Chiu <sy.chiu@linaro.org>
Signed-off-by: James Kung <james.kung@linaro.org>
Reviewed-by: Pascal Brand <pascal.brand@linaro.org>
Reviewed-by: Joakim Bech <joakim.bech@linaro.org>
Tested-by: SY Chiu <sy.chiu@linaro.org> (QEMU)
Tested-by: James Kung <james.kung@linaro.org> (QEMU)
Tested-by: Pascal Brand <pascal.brand@linaro.org> (STM platform)

show more ...


/optee_os/.travis.yml
/optee_os/Makefile
/optee_os/README.md
/optee_os/core/arch/arm/arm.mk
/optee_os/core/arch/arm/include/arm.h
/optee_os/core/arch/arm/include/arm64.h
/optee_os/core/arch/arm/include/arm64_macros.S
/optee_os/core/arch/arm/include/kernel/generic_boot.h
/optee_os/core/arch/arm/include/kernel/misc.h
/optee_os/core/arch/arm/include/kernel/pm_stubs.h
/optee_os/core/arch/arm/include/kernel/tee_l2cc_mutex.h
/optee_os/core/arch/arm/include/kernel/thread.h
/optee_os/core/arch/arm/include/kernel/tz_ssvce.h
/optee_os/core/arch/arm/include/mm/core_mmu.h
/optee_os/core/arch/arm/include/tee/arch_svc.h
/optee_os/core/arch/arm/include/tee/entry.h
/optee_os/core/arch/arm/kernel/cache_helpers_a64.S
/optee_os/core/arch/arm/kernel/generic_boot.c
/optee_os/core/arch/arm/kernel/generic_core_bootcfg.c
/optee_os/core/arch/arm/kernel/generic_entry_a32.S
/optee_os/core/arch/arm/kernel/generic_entry_a64.S
/optee_os/core/arch/arm/kernel/kern.ld.S
/optee_os/core/arch/arm/kernel/link.mk
/optee_os/core/arch/arm/kernel/misc_a32.S
/optee_os/core/arch/arm/kernel/misc_a64.S
/optee_os/core/arch/arm/kernel/pm_stubs.c
/optee_os/core/arch/arm/kernel/proc_a64.S
/optee_os/core/arch/arm/kernel/spin_lock_a64.S
/optee_os/core/arch/arm/kernel/ssvce_a64.S
/optee_os/core/arch/arm/kernel/sub.mk
/optee_os/core/arch/arm/kernel/tee_l2cc_mutex.c
/optee_os/core/arch/arm/kernel/tee_ta_manager.c
/optee_os/core/arch/arm/kernel/thread.c
/optee_os/core/arch/arm/kernel/thread_a64.S
/optee_os/core/arch/arm/kernel/thread_private.h
/optee_os/core/arch/arm/mm/core_mmu.c
/optee_os/core/arch/arm/mm/core_mmu_lpae.c
/optee_os/core/arch/arm/mm/core_mmu_v7.c
/optee_os/core/arch/arm/mm/tee_mm.c
/optee_os/core/arch/arm/mm/tee_mm_unpg.c
/optee_os/core/arch/arm/mm/tee_mmu.c
/optee_os/core/arch/arm/mm/tee_pager.c
/optee_os/core/arch/arm/plat-hikey/conf.mk
/optee_os/core/arch/arm/plat-hikey/kern.ld.S
/optee_os/core/arch/arm/plat-hikey/link.mk
/optee_os/core/arch/arm/plat-hikey/main.c
/optee_os/core/arch/arm/plat-hikey/platform_config.h
/optee_os/core/arch/arm/plat-hikey/platform_flags.mk
/optee_os/core/arch/arm/plat-hikey/sub.mk
/optee_os/core/arch/arm/plat-mediatek/conf.mk
/optee_os/core/arch/arm/plat-mediatek/kern.ld.S
/optee_os/core/arch/arm/plat-mediatek/link.mk
/optee_os/core/arch/arm/plat-mediatek/main.c
/optee_os/core/arch/arm/plat-mediatek/mt8173_core_pos_a32.S
/optee_os/core/arch/arm/plat-mediatek/mt8173_core_pos_a64.S
/optee_os/core/arch/arm/plat-mediatek/platform_config.h
/optee_os/core/arch/arm/plat-mediatek/platform_flags.mk
/optee_os/core/arch/arm/plat-mediatek/sub.mk
/optee_os/core/arch/arm/plat-stm/conf.mk
/optee_os/core/arch/arm/plat-stm/kern.ld.S
/optee_os/core/arch/arm/plat-stm/link.mk
/optee_os/core/arch/arm/plat-stm/main.c
/optee_os/core/arch/arm/plat-stm/platform_config.h
/optee_os/core/arch/arm/plat-stm/sub.mk
/optee_os/core/arch/arm/plat-stm/system_config.mk
/optee_os/core/arch/arm/plat-stm/tz_a9init.S
/optee_os/core/arch/arm/plat-sunxi/conf.mk
/optee_os/core/arch/arm/plat-sunxi/console.c
/optee_os/core/arch/arm/plat-sunxi/kern.ld.S
/optee_os/core/arch/arm/plat-sunxi/link.mk
/optee_os/core/arch/arm/plat-sunxi/main.c
/optee_os/core/arch/arm/plat-sunxi/platform_config.h
/optee_os/core/arch/arm/plat-sunxi/sub.mk
/optee_os/core/arch/arm/plat-vexpress/conf.mk
/optee_os/core/arch/arm/plat-vexpress/juno_core_pos_a64.S
/optee_os/core/arch/arm/plat-vexpress/kern.ld.S
/optee_os/core/arch/arm/plat-vexpress/link.mk
/optee_os/core/arch/arm/plat-vexpress/main.c
/optee_os/core/arch/arm/plat-vexpress/platform_config.h
/optee_os/core/arch/arm/plat-vexpress/sub.mk
/optee_os/core/arch/arm/sta/core_self_tests.c
/optee_os/core/arch/arm/sta/enc_fs_key_manager_tests.c
/optee_os/core/arch/arm/sta/sta_self_tests.c
/optee_os/core/arch/arm/sta/sub.mk
/optee_os/core/arch/arm/tee/arch_svc.c
/optee_os/core/arch/arm/tee/arch_svc_a32.S
/optee_os/core/arch/arm/tee/arch_svc_a64.S
/optee_os/core/arch/arm/tee/entry.c
/optee_os/core/arch/arm/tee/init.c
/optee_os/core/arch/arm/tee/sub.mk
/optee_os/core/drivers/serial8250_uart.c
/optee_os/core/drivers/sub.mk
/optee_os/core/include/console.h
/optee_os/core/include/drivers/serial8250_uart.h
/optee_os/core/include/kernel/tee_common_otp.h
/optee_os/core/include/kernel/tee_common_unpg.h
/optee_os/core/include/kernel/tee_dispatch.h
/optee_os/core/include/kernel/tee_rpc_types.h
/optee_os/core/include/kernel/tee_ta_manager_unpg.h
/optee_os/core/include/kernel/trace_ta.h
/optee_os/core/include/mm/tee_mm_unpg.h
/optee_os/core/include/tee/tee_cryp_provider.h
/optee_os/core/include/tee/tee_enc_fs_key_manager.h
/optee_os/core/kernel/assert.c
sub.mk
/optee_os/core/tee/sub.mk
/optee_os/core/tee/tee_cryp_utl.c
/optee_os/core/tee/tee_enc_fs.c
/optee_os/core/tee/tee_enc_fs_key_manager.c
/optee_os/core/tee/tee_fs.c
/optee_os/core/tee/tee_fs_common.c
/optee_os/core/tee/tee_fs_private.h
/optee_os/core/tee/tee_svc.c
/optee_os/core/tee/tee_svc_cryp.c
/optee_os/documentation/debug.md
/optee_os/lib/libutee/include/tee_api_defines.h
/optee_os/lib/libutee/include/user_ta_header.h
/optee_os/lib/libutee/include/utee_defines.h
/optee_os/lib/libutee/include/utee_types.h
/optee_os/lib/libutee/tee_api.c
/optee_os/lib/libutee/tee_api_objects.c
/optee_os/lib/libutee/tee_api_operations.c
/optee_os/lib/libutee/tee_api_property.c
/optee_os/lib/libutee/tee_user_mem.c
/optee_os/lib/libutee/tee_user_mem.h
/optee_os/lib/libutils/ext/include/util.h
/optee_os/lib/libutils/isoc/bget_malloc.c
/optee_os/mk/checkconf.mk
/optee_os/mk/cleanvars.mk
/optee_os/mk/compile.mk
/optee_os/mk/config.mk
/optee_os/mk/lib.mk
/optee_os/scripts/gen_hashed_bin.py
/optee_os/scripts/setup_mtk_optee.sh
/optee_os/ta/arch/arm/arm.mk
/optee_os/ta/arch/arm/link.mk
/optee_os/ta/arch/arm/user_ta_header.c
/optee_os/ta/mk/ta_dev_kit.mk
/optee_os/ta/ta.mk
c61c04b820-Apr-2015 Pascal Brand <pascal.brand@st.com>

Fix potential memory leak in DH

Reviewed-by: Joakim Bech <joakim.bech@linaro.org>
Reviewed-by: Jens Wiklander <jens.wiklander@linaro.org>
Signed-off-by: Pascal Brand <pascal.brand@st.com>

abe3897409-Mar-2015 Jens Wiklander <jens.wiklander@linaro.org>

Rename arm32 architecture to arm

Renames arm32 directories to arm.

Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org>
Tested-by: Jens Wiklander <jens.wiklander@linaro.org> (QEMU)
Reviewed-by

Rename arm32 architecture to arm

Renames arm32 directories to arm.

Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org>
Tested-by: Jens Wiklander <jens.wiklander@linaro.org> (QEMU)
Reviewed-by: Pascal Brand <pascal.brand@linaro.org>
Tested-by: Pascal Brand <pascal.brand@linaro.org> (QEMU platform)

show more ...


/optee_os/Makefile
/optee_os/core/arch/arm/arm.mk
/optee_os/core/arch/arm/include/arm.h
/optee_os/core/arch/arm/include/arm32.h
/optee_os/core/arch/arm/include/arm32_macros.S
/optee_os/core/arch/arm/include/kernel/kta_types.h
/optee_os/core/arch/arm/include/kernel/misc.h
/optee_os/core/arch/arm/include/kernel/mutex.h
/optee_os/core/arch/arm/include/kernel/tee_l2cc_mutex.h
/optee_os/core/arch/arm/include/kernel/thread.h
/optee_os/core/arch/arm/include/kernel/thread_defs.h
/optee_os/core/arch/arm/include/kernel/time_source.h
/optee_os/core/arch/arm/include/kernel/tz_proc.h
/optee_os/core/arch/arm/include/kernel/tz_proc_def.h
/optee_os/core/arch/arm/include/kernel/tz_ssvce.h
/optee_os/core/arch/arm/include/kernel/tz_ssvce_def.h
/optee_os/core/arch/arm/include/kernel/tz_ssvce_pl310.h
/optee_os/core/arch/arm/include/kernel/vfp.h
/optee_os/core/arch/arm/include/mm/core_memprot.h
/optee_os/core/arch/arm/include/mm/core_mmu.h
/optee_os/core/arch/arm/include/mm/tee_mm_def.h
/optee_os/core/arch/arm/include/mm/tee_mmu_defs.h
/optee_os/core/arch/arm/include/mm/tee_pager.h
/optee_os/core/arch/arm/include/sm/sm.h
/optee_os/core/arch/arm/include/sm/sm_defs.h
/optee_os/core/arch/arm/include/sm/tee_mon.h
/optee_os/core/arch/arm/include/sm/teesmc.h
/optee_os/core/arch/arm/include/sm/teesmc_optee.h
/optee_os/core/arch/arm/include/sm/teesmc_opteed.h
/optee_os/core/arch/arm/include/sm/teesmc_opteed_macros.h
/optee_os/core/arch/arm/include/tee/arch_svc.h
/optee_os/core/arch/arm/include/tee/entry.h
/optee_os/core/arch/arm/kernel/misc_a32.S
/optee_os/core/arch/arm/kernel/mutex.c
/optee_os/core/arch/arm/kernel/proc_a32.S
/optee_os/core/arch/arm/kernel/ssvce_a32.S
/optee_os/core/arch/arm/kernel/sub.mk
/optee_os/core/arch/arm/kernel/tee_l2cc_mutex.c
/optee_os/core/arch/arm/kernel/tee_ta_manager.c
/optee_os/core/arch/arm/kernel/tee_time.c
/optee_os/core/arch/arm/kernel/tee_time_arm_cntpct.c
/optee_os/core/arch/arm/kernel/tee_time_ree.c
/optee_os/core/arch/arm/kernel/tee_time_rtt.c
/optee_os/core/arch/arm/kernel/tee_time_unpg.c
/optee_os/core/arch/arm/kernel/thread.c
/optee_os/core/arch/arm/kernel/thread_a32.S
/optee_os/core/arch/arm/kernel/thread_private.h
/optee_os/core/arch/arm/kernel/trace_ext.c
/optee_os/core/arch/arm/kernel/tz_ssvce_pl310_a32.S
/optee_os/core/arch/arm/kernel/vfp.c
/optee_os/core/arch/arm/kernel/vfp_a32.S
/optee_os/core/arch/arm/kernel/vfp_private.h
/optee_os/core/arch/arm/mm/core_mmu.c
/optee_os/core/arch/arm/mm/core_mmu_lpae.c
/optee_os/core/arch/arm/mm/core_mmu_private.h
/optee_os/core/arch/arm/mm/core_mmu_v7.c
/optee_os/core/arch/arm/mm/sub.mk
/optee_os/core/arch/arm/mm/tee_mm.c
/optee_os/core/arch/arm/mm/tee_mm_unpg.c
/optee_os/core/arch/arm/mm/tee_mmu.c
/optee_os/core/arch/arm/mm/tee_pager.c
/optee_os/core/arch/arm/plat-stm/.gitignore
/optee_os/core/arch/arm/plat-stm/asc.S
/optee_os/core/arch/arm/plat-stm/asc.h
/optee_os/core/arch/arm/plat-stm/cache_maintenance.c
/optee_os/core/arch/arm/plat-stm/conf.mk
/optee_os/core/arch/arm/plat-stm/core_bootcfg.c
/optee_os/core/arch/arm/plat-stm/core_chip_cannes.c
/optee_os/core/arch/arm/plat-stm/core_chip_orly2.c
/optee_os/core/arch/arm/plat-stm/link.mk
/optee_os/core/arch/arm/plat-stm/main.c
/optee_os/core/arch/arm/plat-stm/platform_config.h
/optee_os/core/arch/arm/plat-stm/platform_flags.mk
/optee_os/core/arch/arm/plat-stm/rng_support.c
/optee_os/core/arch/arm/plat-stm/sub.mk
/optee_os/core/arch/arm/plat-stm/system_config.in
/optee_os/core/arch/arm/plat-stm/tee_common_otp.c
/optee_os/core/arch/arm/plat-stm/tz-template.lds
/optee_os/core/arch/arm/plat-stm/tz_a9init.S
/optee_os/core/arch/arm/plat-stm/tz_sinit.S
/optee_os/core/arch/arm/plat-sunxi/conf.mk
/optee_os/core/arch/arm/plat-sunxi/console.c
/optee_os/core/arch/arm/plat-sunxi/core_bootcfg.c
/optee_os/core/arch/arm/plat-sunxi/core_chip.c
/optee_os/core/arch/arm/plat-sunxi/entry.S
/optee_os/core/arch/arm/plat-sunxi/head.c
/optee_os/core/arch/arm/plat-sunxi/kern.ld.S
/optee_os/core/arch/arm/plat-sunxi/link.mk
/optee_os/core/arch/arm/plat-sunxi/main.c
/optee_os/core/arch/arm/plat-sunxi/platform.c
/optee_os/core/arch/arm/plat-sunxi/platform.h
/optee_os/core/arch/arm/plat-sunxi/platform_config.h
/optee_os/core/arch/arm/plat-sunxi/platform_flags.mk
/optee_os/core/arch/arm/plat-sunxi/rng_support.c
/optee_os/core/arch/arm/plat-sunxi/smp_boot.S
/optee_os/core/arch/arm/plat-sunxi/smp_fixup.S
/optee_os/core/arch/arm/plat-sunxi/sub.mk
/optee_os/core/arch/arm/plat-sunxi/tee_common_otp.c
/optee_os/core/arch/arm/plat-vexpress/conf.mk
/optee_os/core/arch/arm/plat-vexpress/core_bootcfg.c
/optee_os/core/arch/arm/plat-vexpress/core_chip.c
/optee_os/core/arch/arm/plat-vexpress/entry_a32.S
/optee_os/core/arch/arm/plat-vexpress/juno_core_pos_a32.S
/optee_os/core/arch/arm/plat-vexpress/kern.ld.S
/optee_os/core/arch/arm/plat-vexpress/link.mk
/optee_os/core/arch/arm/plat-vexpress/main.c
/optee_os/core/arch/arm/plat-vexpress/plat_tee_func.c
/optee_os/core/arch/arm/plat-vexpress/plat_tee_func.h
/optee_os/core/arch/arm/plat-vexpress/platform_config.h
/optee_os/core/arch/arm/plat-vexpress/platform_flags.mk
/optee_os/core/arch/arm/plat-vexpress/pm_debug.h
/optee_os/core/arch/arm/plat-vexpress/sub.mk
/optee_os/core/arch/arm/plat-vexpress/tee_common_otp.c
/optee_os/core/arch/arm/sm/sm.c
/optee_os/core/arch/arm/sm/sm_a32.S
/optee_os/core/arch/arm/sm/sm_private.h
/optee_os/core/arch/arm/sm/sub.mk
/optee_os/core/arch/arm/sta/core_self_tests.c
/optee_os/core/arch/arm/sta/core_self_tests.h
/optee_os/core/arch/arm/sta/se_api_self_tests.c
/optee_os/core/arch/arm/sta/sta_self_tests.c
/optee_os/core/arch/arm/sta/sub.mk
/optee_os/core/arch/arm/tee/arch_svc.c
/optee_os/core/arch/arm/tee/arch_svc_a32.S
/optee_os/core/arch/arm/tee/arch_svc_private.h
/optee_os/core/arch/arm/tee/arch_tee_fs.c
/optee_os/core/arch/arm/tee/entry.c
/optee_os/core/arch/arm/tee/init.c
/optee_os/core/arch/arm/tee/sub.mk
/optee_os/core/arch/arm/tee/tee_rpmb.c
/optee_os/core/core.mk
/optee_os/core/drivers/gic.c
/optee_os/core/drivers/pl011.c
/optee_os/core/drivers/sub.mk
/optee_os/core/drivers/sunxi_uart.c
/optee_os/core/include/console.h
/optee_os/core/include/drivers/pl011.h
/optee_os/core/include/drivers/sunxi_uart.h
/optee_os/core/include/mm/tee_mmu.h
/optee_os/core/include/tee/tee_svc_storage.h
src/hashes/sha1_arm32_ce_a32.S
src/hashes/sha2/sha256_arm32_ce_a32.S
src/hashes/sha2/sub.mk
src/hashes/sub.mk
/optee_os/core/tee/tee_obj.c
/optee_os/core/tee/tee_svc.c
/optee_os/core/tee/tee_svc_cryp.c
/optee_os/core/tee/tee_svc_storage.c
/optee_os/documentation/build_system.md
/optee_os/documentation/crypto.md
/optee_os/documentation/file_structure.md
/optee_os/documentation/optee_design.md
/optee_os/lib/libmpa/arch/arm/mpa_a32.S
/optee_os/lib/libmpa/arch/arm/sub.mk
/optee_os/lib/libmpa/sub.mk
/optee_os/lib/libutee/abort.c
/optee_os/lib/libutee/arch/arm/sub.mk
/optee_os/lib/libutee/arch/arm/user_ta_entry.c
/optee_os/lib/libutee/arch/arm/utee_misc.c
/optee_os/lib/libutee/arch/arm/utee_syscalls_asm.S
/optee_os/lib/libutee/assert.c
/optee_os/lib/libutee/include/tee_api.h
/optee_os/lib/libutee/include/utee_syscalls.h
/optee_os/lib/libutee/tee_api.c
/optee_os/lib/libutee/tee_api_arith.c
/optee_os/lib/libutee/tee_api_objects.c
/optee_os/lib/libutee/tee_api_operations.c
/optee_os/lib/libutee/tee_api_property.c
/optee_os/lib/libutee/tee_user_mem.c
/optee_os/lib/libutee/trace_ext.c
/optee_os/lib/libutils/ext/include/trace.h
/optee_os/lib/libutils/ext/trace.c
/optee_os/lib/libutils/isoc/arch/arm/arm32_aeabi_divmod.c
/optee_os/lib/libutils/isoc/arch/arm/arm32_aeabi_divmod_a32.S
/optee_os/lib/libutils/isoc/arch/arm/arm32_aeabi_ldivmod.c
/optee_os/lib/libutils/isoc/arch/arm/arm32_aeabi_ldivmod_a32.S
/optee_os/lib/libutils/isoc/arch/arm/sub.mk
/optee_os/lib/libutils/isoc/bget_malloc.c
/optee_os/lib/libutils/isoc/include/inttypes.h
/optee_os/lib/libutils/isoc/include/stdint.h
/optee_os/lib/libutils/isoc/sub.mk
/optee_os/mk/config.mk
/optee_os/scripts/setup_fvp_optee.sh
/optee_os/scripts/setup_qemu_optee.sh
/optee_os/ta/arch/arm/arm.mk
/optee_os/ta/arch/arm/fix_ta_binary
/optee_os/ta/arch/arm/link.mk
/optee_os/ta/arch/arm/user_ta_elf_arm.lds
/optee_os/ta/arch/arm/user_ta_header.c
/optee_os/ta/mk/ta_dev_kit.mk
/optee_os/ta/ta.mk
86ffc42017-Mar-2015 SY Chiu <sy.chiu@linaro.org>

Added new interface in PRNG Hal to inject entropy

- Added add_entropy interface in crypto_ops.prng, and expose
new interface tee_prng_add_entropy() for platform vendor to
inject entropy.
- Injec

Added new interface in PRNG Hal to inject entropy

- Added add_entropy interface in crypto_ops.prng, and expose
new interface tee_prng_add_entropy() for platform vendor to
inject entropy.
- Inject entropy using current timestamp every time
when a session is opened or closed.

Signed-off-by: SY Chiu <sy.chiu@linaro.org>
Reviewed-by: Joakim Bech <joakim.bech@linaro.org>
Reviewed-by: Pascal Brand <pascal.brand@linaro.org>
Tested-by: SY Chiu <sy.chiu@linaro.org> (FVP,QEMU)
Tested-by: Pascal Brand <pascal.brand@linaro.org> (QEMU)

show more ...


/optee_os/.travis.yml
/optee_os/core/arch/arm32/include/kernel/thread.h
/optee_os/core/arch/arm32/include/mm/tee_pager.h
/optee_os/core/arch/arm32/kernel/misc_a32.S
/optee_os/core/arch/arm32/kernel/proc_a32.S
/optee_os/core/arch/arm32/kernel/ssvce_a32.S
/optee_os/core/arch/arm32/kernel/sub.mk
/optee_os/core/arch/arm32/kernel/tee_ta_manager.c
/optee_os/core/arch/arm32/kernel/thread.c
/optee_os/core/arch/arm32/kernel/thread_a32.S
/optee_os/core/arch/arm32/kernel/thread_private.h
/optee_os/core/arch/arm32/kernel/tz_ssvce_pl310_a32.S
/optee_os/core/arch/arm32/kernel/vfp_a32.S
/optee_os/core/arch/arm32/mm/tee_pager.c
/optee_os/core/arch/arm32/plat-stm/conf.mk
/optee_os/core/arch/arm32/plat-stm/link.mk
/optee_os/core/arch/arm32/plat-stm/main.c
/optee_os/core/arch/arm32/plat-stm/platform_config.h
/optee_os/core/arch/arm32/plat-stm/platform_flags.mk
/optee_os/core/arch/arm32/plat-sunxi/conf.mk
/optee_os/core/arch/arm32/plat-sunxi/link.mk
/optee_os/core/arch/arm32/plat-sunxi/main.c
/optee_os/core/arch/arm32/plat-sunxi/platform_config.h
/optee_os/core/arch/arm32/plat-sunxi/platform_flags.mk
/optee_os/core/arch/arm32/plat-vexpress/conf.mk
/optee_os/core/arch/arm32/plat-vexpress/entry_a32.S
/optee_os/core/arch/arm32/plat-vexpress/juno_core_pos_a32.S
/optee_os/core/arch/arm32/plat-vexpress/kern.ld.S
/optee_os/core/arch/arm32/plat-vexpress/link.mk
/optee_os/core/arch/arm32/plat-vexpress/main.c
/optee_os/core/arch/arm32/plat-vexpress/platform_config.h
/optee_os/core/arch/arm32/plat-vexpress/platform_flags.mk
/optee_os/core/arch/arm32/plat-vexpress/sub.mk
/optee_os/core/arch/arm32/sm/sm_a32.S
/optee_os/core/arch/arm32/sm/sub.mk
/optee_os/core/arch/arm32/tee/arch_svc_a32.S
/optee_os/core/arch/arm32/tee/sub.mk
/optee_os/core/core.mk
/optee_os/core/include/kernel/tee_ta_manager.h
/optee_os/core/include/tee/abi.h
/optee_os/core/include/tee/tee_cryp_provider.h
/optee_os/core/include/tee/tee_cryp_utl.h
/optee_os/core/include/tee/tee_svc.h
/optee_os/core/include/tee/tee_svc_cryp.h
/optee_os/core/kernel/tee_dispatch.c
src/tee_ltc_provider.c
/optee_os/core/tee/abi.c
/optee_os/core/tee/sub.mk
/optee_os/core/tee/tee_cryp_utl.c
/optee_os/core/tee/tee_svc.c
/optee_os/core/tee/tee_svc_cryp.c
/optee_os/documentation/build_system.md
/optee_os/documentation/optee_design.md
/optee_os/lib/libutee/arch/arm32/user_ta_entry.c
/optee_os/lib/libutee/include/tee_api.h
/optee_os/lib/libutee/include/tee_api_defines.h
/optee_os/lib/libutee/include/tee_api_types.h
/optee_os/lib/libutee/tee_api.c
/optee_os/lib/libutee/tee_api_arith.c
/optee_os/lib/libutee/tee_api_objects.c
/optee_os/lib/libutee/tee_api_operations.c
/optee_os/lib/libutee/tee_api_property.c
/optee_os/lib/libutils/isoc/arch/arm32/arm32_aeabi_divmod.c
/optee_os/lib/libutils/isoc/arch/arm32/arm32_aeabi_divmod_a32.S
/optee_os/lib/libutils/isoc/arch/arm32/arm32_aeabi_ldivmod.c
/optee_os/lib/libutils/isoc/arch/arm32/arm32_aeabi_ldivmod_a32.S
/optee_os/lib/libutils/isoc/arch/arm32/sub.mk
/optee_os/mk/compile.mk
/optee_os/mk/gcc.mk
/optee_os/mk/lib.mk
/optee_os/scripts/gen_hashed_bin.py
/optee_os/ta/ta.mk
7018ae0104-Mar-2015 SY Chiu <sy.chiu@linaro.org>

Added Abstract Layer for PRNG

- Extended crypto_ops with a new prng_ops which handles prng operations.
- Replace calls to get_rng_array() with crypto_ops.prng.read(), this
enforces PRNG operations

Added Abstract Layer for PRNG

- Extended crypto_ops with a new prng_ops which handles prng operations.
- Replace calls to get_rng_array() with crypto_ops.prng.read(), this
enforces PRNG operations go through PRNG HAL, instead of invoking
platform-dependent PRNG implementation directly.
- Create a new mpa_set_random_generator() interface for mpa user to register
a callback to generate random number, instead of expecting the user to provide
a get_rng_array(). This enables libmpa uses crypto_ops.prng.read().
- Added a new configuration CFG_WITH_PRNG_SOFTWARE to toggle SW/HW-dependent
PRNG implementation.
- The SW PRNG implementation is supplied by backed cryto library(libtomcrypt).
- Added a new SW PRNG 'Fortuna' to libtomcrypt.
- Added a new SW PRNG 'RC4' to libtomcrypt, when Fortuna is not available due
to AES and SHA256 not available, fallback to RC4.
- Get rid of bad implemented SW PRNG in plat_vexpress(rng_support.c).
- If CFG_WITH_PRNG_SOFTWARE is not enabled, the platform needs to supply
hw_get_random_byte().

Signed-off-by: SY Chiu <sy.chiu@linaro.org>
Reviewed-by: Pascal Brand <pascal.brand@linaro.org>
Reviewed-by: Joakim Bech <joakim.bech@linaro.org>
Reviewed-by: Jerome Forissier <jerome.forissier@linaro.org>
Tested-by: Pascal Brand <pascal.brand@linaro.org> (STM platform)
Tested-by: SY Chiu <sy.chiu@linaro.org> (QEMU)

show more ...

ca1e64d627-Feb-2015 Pascal Brand <pascal.brand@st.com>

Libtomcrypt: use buf_compare_ct instead of mem_neq

This is a size-optimization, as the current optee_os code
already contains a function dedicated to constant-time
memory compare: buf_compare_ct()

Libtomcrypt: use buf_compare_ct instead of mem_neq

This is a size-optimization, as the current optee_os code
already contains a function dedicated to constant-time
memory compare: buf_compare_ct()

Reviewed-by: Jerome Forissier <jerome.forissier@linaro.org>
Reviewed-by: Jens Wiklander <jens.wiklander@linaro.org>
Tested-by: Pascal Brand <pascal.brand@linaro.org> (QEMU)
Signed-off-by: Pascal Brand <pascal.brand@st.com>

show more ...


/optee_os/core/arch/arm32/include/arm32.h
/optee_os/core/arch/arm32/include/mm/core_mmu.h
/optee_os/core/arch/arm32/include/mm/tee_mm_def.h
/optee_os/core/arch/arm32/include/mm/tee_mmu_defs.h
/optee_os/core/arch/arm32/include/mm/tee_pager.h
/optee_os/core/arch/arm32/kernel/tee_ta_manager.c
/optee_os/core/arch/arm32/kernel/tee_time_arm_cntpct.c
/optee_os/core/arch/arm32/kernel/thread.c
/optee_os/core/arch/arm32/kernel/thread_private.h
/optee_os/core/arch/arm32/mm/core_mmu.c
/optee_os/core/arch/arm32/mm/core_mmu_lpae.c
/optee_os/core/arch/arm32/mm/core_mmu_private.h
/optee_os/core/arch/arm32/mm/core_mmu_v7.c
/optee_os/core/arch/arm32/mm/sub.mk
/optee_os/core/arch/arm32/mm/tee_mm.c
/optee_os/core/arch/arm32/mm/tee_mmu.c
/optee_os/core/arch/arm32/mm/tee_pager.c
/optee_os/core/arch/arm32/plat-stm/conf.mk
/optee_os/core/arch/arm32/plat-stm/core_bootcfg.c
/optee_os/core/arch/arm32/plat-stm/main.c
/optee_os/core/arch/arm32/plat-stm/platform_config.h
/optee_os/core/arch/arm32/plat-stm/tz_a9init.S
/optee_os/core/arch/arm32/plat-stm/tz_sinit.S
/optee_os/core/arch/arm32/plat-sunxi/core_bootcfg.c
/optee_os/core/arch/arm32/plat-sunxi/entry.S
/optee_os/core/arch/arm32/plat-sunxi/main.c
/optee_os/core/arch/arm32/plat-sunxi/platform_config.h
/optee_os/core/arch/arm32/plat-vexpress/conf.mk
/optee_os/core/arch/arm32/plat-vexpress/core_bootcfg.c
/optee_os/core/arch/arm32/plat-vexpress/entry.S
/optee_os/core/arch/arm32/plat-vexpress/main.c
/optee_os/core/arch/arm32/plat-vexpress/platform_config.h
/optee_os/core/arch/arm32/tee/arch_svc.c
/optee_os/core/include/kernel/tee_misc.h
/optee_os/core/include/kernel/tee_ta_manager.h
/optee_os/core/include/kernel/tee_ta_manager_unpg.h
/optee_os/core/include/mm/tee_mmu.h
/optee_os/core/include/mm/tee_mmu_types.h
/optee_os/core/include/tee/tee_svc.h
include/tomcrypt_custom.h
src/misc/sub.mk
src/pk/pkcs1/pkcs_1_oaep_decode.c
src/pk/pkcs1/pkcs_1_pss_decode.c
/optee_os/core/tee/tee_pobj.c
/optee_os/core/tee/tee_svc.c
/optee_os/core/tee/tee_svc_cryp.c
/optee_os/documentation/extensions/extensions.md
/optee_os/lib/libutee/arch/arm32/utee_syscalls_asm.S
/optee_os/lib/libutee/include/tee_internal_api_extensions.h
/optee_os/lib/libutee/include/tee_syscall_numbers.h
/optee_os/lib/libutee/include/utee_syscalls.h
/optee_os/lib/libutee/include/utee_types.h
/optee_os/lib/libutee/tee_api.c
/optee_os/lib/libutee/tee_api_operations.c
/optee_os/lib/libutils/ext/include/types_ext.h
/optee_os/scripts/setup_qemu_optee.sh
c84d070c27-Jan-2015 Pascal Brand <pascal.brand@st.com>

RSA decode in constant time

This is a cherry-pick of the libtomcrypt pull-request
https://github.com/libtom/libtomcrypt/pull/57

As pointed by Herve Sibert, verification has been kept non-constant t

RSA decode in constant time

This is a cherry-pick of the libtomcrypt pull-request
https://github.com/libtom/libtomcrypt/pull/57

As pointed by Herve Sibert, verification has been kept non-constant time
in this patch.

Excerpt from original libtomcrypt pull-request:
as proposed in RFC 3447 only one error return code is used when there are
errors while decoding the pkcs#1 format.
also, all steps are executed and only the "output" is skipped if something
went wrong.

Sorry this could break backwards compatibility, since there's no more
BUFFER_OVERFLOW messaging.
Former error-handling code could also be affected because now there's only
OK as return code in cases where "res" is also set to '1'.

Reviewed-by: Joakim Bech <joakim.bech@linaro.org>
Reviewed-by: Pascal Brand <pascal.brand@linaro.org>
Tested-by: Pascal Brand <pascal.brand@linaro.org> (STM platform)
Tested-by: Pascal Brand <pascal.brand@linaro.org> (QEMU)
Signed-off-by: Pascal Brand <pascal.brand@st.com>

show more ...


/optee_os/CHANGELOG.md
/optee_os/README.md
/optee_os/core/arch/arm32/include/arm32.h
/optee_os/core/arch/arm32/include/kernel/tz_ssvce_def.h
/optee_os/core/arch/arm32/include/kernel/tz_ssvce_pl310.h
/optee_os/core/arch/arm32/include/mm/tee_pager.h
/optee_os/core/arch/arm32/kernel/tee_ta_manager.c
/optee_os/core/arch/arm32/kernel/trace_ext.c
/optee_os/core/arch/arm32/kernel/tz_ssvce_pl310.S
/optee_os/core/arch/arm32/mm/core_mmu.c
/optee_os/core/arch/arm32/mm/tee_pager.c
/optee_os/core/arch/arm32/plat-stm/cache_maintenance.c
/optee_os/core/arch/arm32/plat-stm/system_config.in
/optee_os/core/arch/arm32/plat-stm/tz-template.lds
/optee_os/core/arch/arm32/plat-stm/tz_sinit.S
/optee_os/core/arch/arm32/plat-sunxi/kern.ld.S
/optee_os/core/arch/arm32/plat-sunxi/link.mk
/optee_os/core/arch/arm32/plat-vexpress/conf.mk
/optee_os/core/arch/arm32/plat-vexpress/core_bootcfg.c
/optee_os/core/arch/arm32/plat-vexpress/kern.ld.S
/optee_os/core/arch/arm32/plat-vexpress/link.mk
/optee_os/core/arch/arm32/plat-vexpress/platform_config.h
/optee_os/core/arch/arm32/sta/se_api_self_tests.c
/optee_os/core/arch/arm32/sta/sub.mk
/optee_os/core/arch/arm32/tee/arch_svc.c
/optee_os/core/arch/arm32/tee/init.c
/optee_os/core/include/initcall.h
/optee_os/core/include/kernel/tee_ta_manager_unpg.h
/optee_os/core/include/tee/se/aid.h
/optee_os/core/include/tee/se/apdu.h
/optee_os/core/include/tee/se/channel.h
/optee_os/core/include/tee/se/iso7816.h
/optee_os/core/include/tee/se/manager.h
/optee_os/core/include/tee/se/reader.h
/optee_os/core/include/tee/se/reader/interface.h
/optee_os/core/include/tee/se/service.h
/optee_os/core/include/tee/se/session.h
/optee_os/core/include/tee/se/svc.h
/optee_os/core/include/tee/se/util.h
/optee_os/core/include/tee/tee_svc.h
include/tomcrypt_misc.h
src/misc/mem_neq.c
src/misc/sub.mk
src/pk/pkcs1/pkcs_1_oaep_decode.c
src/pk/pkcs1/pkcs_1_pss_decode.c
src/pk/pkcs1/pkcs_1_v1_5_decode.c
/optee_os/core/tee/se/aid.c
/optee_os/core/tee/se/aid_priv.h
/optee_os/core/tee/se/apdu.c
/optee_os/core/tee/se/apdu_priv.h
/optee_os/core/tee/se/channel.c
/optee_os/core/tee/se/channel_priv.h
/optee_os/core/tee/se/iso7816.c
/optee_os/core/tee/se/manager.c
/optee_os/core/tee/se/reader.c
/optee_os/core/tee/se/reader/passthru_reader/driver.c
/optee_os/core/tee/se/reader/passthru_reader/pcsc.h
/optee_os/core/tee/se/reader/passthru_reader/reader.c
/optee_os/core/tee/se/reader/passthru_reader/reader.h
/optee_os/core/tee/se/reader/passthru_reader/sub.mk
/optee_os/core/tee/se/reader/sub.mk
/optee_os/core/tee/se/reader_priv.h
/optee_os/core/tee/se/service.c
/optee_os/core/tee/se/service_priv.h
/optee_os/core/tee/se/session.c
/optee_os/core/tee/se/session_priv.h
/optee_os/core/tee/se/sub.mk
/optee_os/core/tee/se/svc.c
/optee_os/core/tee/se/util.c
/optee_os/core/tee/sub.mk
/optee_os/core/tee/tee_svc.c
/optee_os/documentation/se_api_design.md
/optee_os/lib/libutee/arch/arm32/utee_syscalls_asm.S
/optee_os/lib/libutee/include/tee_api_types.h
/optee_os/lib/libutee/include/tee_internal_se_api.h
/optee_os/lib/libutee/include/tee_syscall_numbers.h
/optee_os/lib/libutee/include/utee_defines.h
/optee_os/lib/libutee/include/utee_syscalls.h
/optee_os/lib/libutee/sub.mk
/optee_os/lib/libutee/tee_api_operations.c
/optee_os/lib/libutee/tee_api_se.c
/optee_os/lib/libutee/tee_user_mem.c
/optee_os/lib/libutee/trace_ext.c
/optee_os/lib/libutils/ext/include/compiler.h
/optee_os/lib/libutils/ext/include/trace.h
/optee_os/lib/libutils/ext/include/util.h
/optee_os/lib/libutils/ext/trace.c
/optee_os/lib/libutils/isoc/arch/arm32/aeabi_ldivmod.c
/optee_os/lib/libutils/isoc/arch/arm32/aeabi_ldivmod_asm.S
/optee_os/lib/libutils/isoc/arch/arm32/sub.mk
/optee_os/lib/libutils/isoc/snprintf.c
/optee_os/mk/compile.mk
/optee_os/scripts/setup_fvp_optee.sh
/optee_os/scripts/setup_qemu_optee.sh
/optee_os/ta/arch/arm32/user_ta_header.c
/optee_os/ta/ta.mk
718cde1705-Jan-2015 Jens Wiklander <jens.wiklander@linaro.org>

SHA-1 ARMv8 crypto extension implementation

* Adds a ARMv8 crypto extension based SHA-1 implementation for LTC.
* Crypto extension based SHA-1 implementation is enabled for
plat-vexpress-juno.

Si

SHA-1 ARMv8 crypto extension implementation

* Adds a ARMv8 crypto extension based SHA-1 implementation for LTC.
* Crypto extension based SHA-1 implementation is enabled for
plat-vexpress-juno.

Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org>
Tested-by: Jens Wiklander <jens.wiklander@linaro.org> (Juno)
Reviewed-by: Pascal Brand <pascal.brand@linaro.org>
Tested-by: Pascal Brand <pascal.brand@linaro.org> (STM platform)

show more ...

0bea860928-Dec-2014 Jens Wiklander <jens.wiklander@linaro.org>

SHA-256 ARMv8 crypto extension implementation

* Adds a ARMv8 crypto extension based SHA-256 implementation for LTC.
* Crypto extension based SHA-256 implementation is enabled for
plat-vexpress-ju

SHA-256 ARMv8 crypto extension implementation

* Adds a ARMv8 crypto extension based SHA-256 implementation for LTC.
* Crypto extension based SHA-256 implementation is enabled for
plat-vexpress-juno.

Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org>
Reviewed-by: Pascal Brand <pascal.brand@linaro.org>

show more ...

cdb198a704-Dec-2014 Jerome Forissier <jerome.forissier@linaro.org>

Add HMAC-based extract-and-expand key derivation function (HKDF)

HKDF (http://tools.ietf.org/html/rfc5869) is a key derivation algorithm.
As per the RFC:

A key derivation function (KDF) is a bas

Add HMAC-based extract-and-expand key derivation function (HKDF)

HKDF (http://tools.ietf.org/html/rfc5869) is a key derivation algorithm.
As per the RFC:

A key derivation function (KDF) is a basic and essential component of
cryptographic systems. Its goal is to take some source of initial
keying material and derive from it one or more cryptographically
strong secret keys.
[...]
HKDF follows the "extract-then-expand" paradigm, where the KDF
logically consists of two modules.
[...]
The goal of the "extract" stage is to "concentrate" the possibly
dispersed entropy of the input keying material into a short, but
cryptographically strong, pseudorandom key.
[...]
The second stage "expands" the pseudorandom key to the desired
length; the number and lengths of the output keys depend on the
specific cryptographic algorithms for which the keys are needed.

Since HKDF is not covered by the GlobalPlatform Internal API specification
v1.0/v1.1, this commit introduces extensions to the specification.
More specifically: it defines new algorithms, a new object type and new
object attributes. This implementation supports all the usual hash
functions (MD5, SHA-1, SHA-224, SHA-256, SHA-384, SHA-512) and may
produce output keys of length up to 4096 bits (currently limited only by
the maximum size allowed for an object of type TEE_TYPE_GENERIC_SECRET).
Aside from minor updates to object manipulation functions to support
the new data, the function TEE_DeriveKey() is mostly impacted.

The file documentation/extensions/crypto_hkdf.md contains the modifications
to the GP Internal API v1.0 spec in order to support HKDF.

Signed-off-by: Jerome Forissier <jerome.forissier@linaro.org>
Signed-off-by: Xiaoqiang Du <xiaoqiang.du@linaro.org>
Reviewed-by: Pascal Brand <pascal.brand@linaro.org>
Tested-by: Pascal Brand <pascal.brand@linaro.org> (STM platform)
Reviewed-by: Jens Wiklander <jens.wiklander@linaro.org>
Reviewed-by: Joakim Bech <joakim.bech@linaro.org>

show more ...


/optee_os/.travis.yml
/optee_os/README.md
/optee_os/core/arch/arm32/include/arm32.h
/optee_os/core/arch/arm32/include/arm32_macros.S
/optee_os/core/arch/arm32/plat-sunxi/conf.mk
/optee_os/core/arch/arm32/plat-sunxi/console.c
/optee_os/core/arch/arm32/plat-sunxi/core_bootcfg.c
/optee_os/core/arch/arm32/plat-sunxi/core_chip.c
/optee_os/core/arch/arm32/plat-sunxi/entry.S
/optee_os/core/arch/arm32/plat-sunxi/head.c
/optee_os/core/arch/arm32/plat-sunxi/kern.ld.S
/optee_os/core/arch/arm32/plat-sunxi/link.mk
/optee_os/core/arch/arm32/plat-sunxi/main.c
/optee_os/core/arch/arm32/plat-sunxi/platform.c
/optee_os/core/arch/arm32/plat-sunxi/platform.h
/optee_os/core/arch/arm32/plat-sunxi/platform_config.h
/optee_os/core/arch/arm32/plat-sunxi/platform_flags.mk
/optee_os/core/arch/arm32/plat-sunxi/rng_support.c
/optee_os/core/arch/arm32/plat-sunxi/smp_boot.S
/optee_os/core/arch/arm32/plat-sunxi/smp_fixup.S
/optee_os/core/arch/arm32/plat-sunxi/sub.mk
/optee_os/core/arch/arm32/plat-sunxi/tee_common_otp.c
/optee_os/core/drivers/gic.c
/optee_os/core/drivers/sub.mk
/optee_os/core/drivers/sunxi_uart.c
/optee_os/core/include/drivers/gic.h
/optee_os/core/include/drivers/sunxi_uart.h
/optee_os/core/include/tee/tee_cryp_concat_kdf.h
/optee_os/core/include/tee/tee_cryp_hkdf.h
src/tee_ltc_provider.c
/optee_os/core/tee/sub.mk
/optee_os/core/tee/tee_cryp_concat_kdf.c
/optee_os/core/tee/tee_cryp_hkdf.c
/optee_os/core/tee/tee_svc_cryp.c
/optee_os/documentation/extensions/crypto_concat_kdf.md
/optee_os/documentation/extensions/crypto_hkdf.md
/optee_os/lib/libutee/include/tee_api_defines_extensions.h
/optee_os/lib/libutee/include/utee_defines.h
/optee_os/lib/libutee/tee_api_operations.c
80439f3817-Dec-2014 Pascal Brand <pascal.brand@st.com>

Fix #6686: Support passing Public Exponent when generating RSA key pair

Global Platform Internal API 1.0 is not accurate when describing
RSA key pair generation. It only indicates
No parameter i

Fix #6686: Support passing Public Exponent when generating RSA key pair

Global Platform Internal API 1.0 is not accurate when describing
RSA key pair generation. It only indicates
No parameter is required
This is why RSA key pair generation was always using 65537
as the public exponent.

Version 1.1 of the API is much more precise:
No parameter is required.
The TEE_ATTR_RSA_PUBLIC_EXPONENT attribute may be
specified; if omitted, the default value is 65537.

This patch implements this requirement.

Reviewed-by: Jerome Forissier <jerome.forissier@linaro.org>
Reviewed-by: Jens Wiklander <jens.wiklander@linaro.org>
Tested-by: Pascal Brand <pascal.brand@linaro.org> (STM platform)
Reviewed-by: Laurent GERARD <laurent.gerard@st.com>
Reviewed-by: Jean-Michel DELORME <jean-michel.delorme@st.com>
Signed-off-by: Pascal Brand <pascal.brand@st.com>

show more ...

a391143319-Dec-2014 Jerome Forissier <jerome.forissier@linaro.org>

core: get value of CFG_ variables directly from generated/conf.h

Add a '-include' preprocessor flag to the command line so that all
TEE core files include generated/conf.h automatically. Then, there

core: get value of CFG_ variables directly from generated/conf.h

Add a '-include' preprocessor flag to the command line so that all
TEE core files include generated/conf.h automatically. Then, there
is no need to define macros via the command line (-DCFG_XYZ=...).

This commit also fixes a compile error when
CFG_TEE_CORE_EMBED_INTERNAL_TESTS=0.

Signed-off-by: Jerome Forissier <jerome.forissier@linaro.org>
Reviewed-by: Jens Wiklander <jens.wiklander@linaro.org>
Reviewed-by: Pascal Brand <pascal.brand@linaro.org>
Tested-by: Pascal Brand <pascal.brand@linaro.org> (STM platform)

show more ...

7de955b304-Dec-2014 Jens Wiklander <jens.wiklander@linaro.org>

arm32: paging of TEE Core optionally enabled

plat-vexpress-*:
* Optionally enable paging with CFG_WITH_PAGER=y
* Uses fake SRAM when paging is enabled
* Supports partitioning OP-TEE binary in unpage

arm32: paging of TEE Core optionally enabled

plat-vexpress-*:
* Optionally enable paging with CFG_WITH_PAGER=y
* Uses fake SRAM when paging is enabled
* Supports partitioning OP-TEE binary in unpaged, init and pagable areas

plat-stm:
* Displays an error message if compiled with CFG_WITH_PAGER=y

arm32:
* Replaces legacy paging support with new paging support
* Removes unused tee_pager_unpg.c

Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org>
Tested-by: Jens Wiklander <jens.wiklander@linaro.org> (QEMU, FVP, Juno)
Reviewed-by: Pascal Brand <pascal.brand@linaro.org>
Tested-by: Pascal Brand <pascal.brand@linaro.org> (STM platform - Check the code without the pager is not broken).

show more ...

5f1d1af502-Dec-2014 Jens Wiklander <jens.wiklander@linaro.org>

provide hash_sha256_check()

Adds hash_sha256_check() to the tee_crypt_provider interface to be
used by pager and early initialization code where the complete crypto
library might not be available.

provide hash_sha256_check()

Adds hash_sha256_check() to the tee_crypt_provider interface to be
used by pager and early initialization code where the complete crypto
library might not be available.

Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org>
Reviewed-by: Pascal Brand <pascal.brand@linaro.org>

show more ...


/optee_os/core/arch/arm32/include/arm32_macros.S
/optee_os/core/arch/arm32/include/kernel/thread.h
/optee_os/core/arch/arm32/include/mm/core_mmu.h
/optee_os/core/arch/arm32/include/mm/tee_mmu_defs.h
/optee_os/core/arch/arm32/include/mm/tee_pager.h
/optee_os/core/arch/arm32/kernel/thread.c
/optee_os/core/arch/arm32/kernel/thread_asm.S
/optee_os/core/arch/arm32/kernel/thread_private.h
/optee_os/core/arch/arm32/kernel/tz_ssvce.S
/optee_os/core/arch/arm32/mm/core_mmu.c
/optee_os/core/arch/arm32/mm/sub.mk
/optee_os/core/arch/arm32/mm/tee_mm.c
/optee_os/core/arch/arm32/mm/tee_pager.c
/optee_os/core/arch/arm32/plat-stm/conf.mk
/optee_os/core/arch/arm32/plat-stm/main.c
/optee_os/core/arch/arm32/plat-stm/tz-template.lds
/optee_os/core/arch/arm32/plat-stm/tz_sinit.S
/optee_os/core/arch/arm32/plat-vexpress/conf.mk
/optee_os/core/arch/arm32/plat-vexpress/core_bootcfg.c
/optee_os/core/arch/arm32/plat-vexpress/entry.S
/optee_os/core/arch/arm32/plat-vexpress/kern.ld.S
/optee_os/core/arch/arm32/plat-vexpress/main.c
/optee_os/core/arch/arm32/plat-vexpress/plat_tee_func.c
/optee_os/core/arch/arm32/plat-vexpress/plat_tee_func.h
/optee_os/core/arch/arm32/plat-vexpress/platform_config.h
/optee_os/core/arch/arm32/plat-vexpress/sub.mk
/optee_os/core/arch/arm32/sm/sm_asm.S
/optee_os/core/arch/arm32/tee/arch_svc_asm.S
/optee_os/core/arch/arm32/tee/init.c
/optee_os/core/include/kernel/tee_common.h
/optee_os/core/include/mm/tee_mm_unpg.h
/optee_os/core/include/tee/tee_cryp_provider.h
src/tee_ltc_provider.c
/optee_os/lib/libutee/tee_api_operations.c
508697b210-Dec-2014 Jerome Forissier <jerome.forissier@linaro.org>

libtomcrypt: the len parameter of hash.final() is the max size

To be consistent with the behavior of crypto_ops.mac.final(), do not fail if
the length passed to crypto_ops.hash.final() is larger tha

libtomcrypt: the len parameter of hash.final() is the max size

To be consistent with the behavior of crypto_ops.mac.final(), do not fail if
the length passed to crypto_ops.hash.final() is larger than the hash size.

Also, use TEE_MAX_HASH_SIZE instead of defining another macro (MAX_DIGEST).

Signed-off-by: Jerome Forissier <jerome.forissier@linaro.org>
Reviewed-by: Jens Wiklander <jens.wiklander@linaro.org>

show more ...


/optee_os/.travis.yml
/optee_os/README.md
/optee_os/core/arch/arm32/include/arm32.h
/optee_os/core/arch/arm32/include/kernel/misc.h
/optee_os/core/arch/arm32/include/kernel/thread.h
/optee_os/core/arch/arm32/include/kernel/tz_ssvce.h
/optee_os/core/arch/arm32/include/tee/arch_svc.h
/optee_os/core/arch/arm32/kernel/misc.S
/optee_os/core/arch/arm32/kernel/tee_ta_manager.c
/optee_os/core/arch/arm32/kernel/thread.c
/optee_os/core/arch/arm32/kernel/thread_asm.S
/optee_os/core/arch/arm32/mm/core_mmu.c
/optee_os/core/arch/arm32/mm/tee_pager_unpg.c
/optee_os/core/arch/arm32/plat-stm/conf.mk
/optee_os/core/arch/arm32/plat-stm/main.c
/optee_os/core/arch/arm32/plat-stm/system_config.in
/optee_os/core/arch/arm32/plat-vexpress/main.c
/optee_os/core/arch/arm32/plat-vexpress/platform_config.h
/optee_os/core/arch/arm32/sta/core_self_tests.c
/optee_os/core/arch/arm32/tee/arch_svc.c
/optee_os/core/arch/arm32/tee/arch_svc_asm.S
/optee_os/core/arch/arm32/tee/arch_svc_private.h
/optee_os/core/arch/arm32/tee/sub.mk
/optee_os/core/include/kernel/tee_misc.h
/optee_os/core/include/kernel/tee_ta_manager.h
/optee_os/core/include/tee/tee_svc.h
/optee_os/core/kernel/tee_misc.c
src/tee_ltc_provider.c
/optee_os/core/tee/tee_cryp_utl.c
/optee_os/core/tee/tee_svc.c
/optee_os/core/tee/tee_svc_cryp.c
/optee_os/documentation/build_system.md
/optee_os/documentation/crypto.md
/optee_os/documentation/optee_design.md
/optee_os/lib/libutee/arch/arm32/utee_syscalls_asm.S
/optee_os/lib/libutee/include/tee_syscall_numbers.h
/optee_os/lib/libutee/tee_user_mem.c
/optee_os/lib/libutee/trace_ext.c
/optee_os/lib/libutils/ext/include/trace.h
/optee_os/lib/libutils/ext/trace.c
/optee_os/mk/compile.mk
/optee_os/scripts/setup_fvp_optee.sh
d1d226a507-Nov-2014 Jerome Forissier <jerome.forissier@linaro.org>

Select cryptographic algorithms at compile time

Allows to disable some cryptographic algorithms by setting make variables
at build time (either from the environment, the command line or by editing
c

Select cryptographic algorithms at compile time

Allows to disable some cryptographic algorithms by setting make variables
at build time (either from the environment, the command line or by editing
core/lib/libtomcrypt/sub.mk).

For example:
$ make ... CFG_CRYPTO=n
$ make ... CFG_CRYPTO_DES=n

This can reduce the size of the TEE binary as well as its memory footprint:

$ make -j9 PLATFORM=vexpress-qemu_virt DEBUG= all mem_usage
$ grep RAM out/arm32-plat-vexpress/core/tee.mem_usage
RAM Usage 7DF00000 - 7DF39280 size 00039280 229 KiB 58 pages
$ du -h out/arm32-plat-vexpress/core/tee.bin
164K out/arm32-plat-vexpress/core/tee.bin

$ make -j9 PLATFORM=vexpress-qemu_virt DEBUG= CFG_CRYPTO=n all mem_usage
$ grep RAM out/arm32-plat-vexpress/core/tee.mem_usage
RAM Usage 7DF00000 - 7DF1D280 size 0001D280 117 KiB 30 pages
$ du -h out/arm32-plat-vexpress/core/tee.bin
104K out/arm32-plat-vexpress/core/tee.bin

Signed-off-by: Jerome Forissier <jerome.forissier@linaro.org>
Tested-by: Jerome Forissier <jerome.forissier@linaro.org> (QEMU virt, FVP)
Reviewed-by: Pascal Brand <pascal.brand@linaro.org>
Tested-by: Pascal Brand <pascal.brand@linaro.org> (STM platform)

show more ...

d8e06e1224-Nov-2014 Pascal Brand <pascal.brand@st.com>

MAC operations now supports NULL arguments

MAC algorithms support NULL arguments and zero length strings.

Note that the fix consists in a change of API in the internal crypto
interface. This change

MAC operations now supports NULL arguments

MAC algorithms support NULL arguments and zero length strings.

Note that the fix consists in a change of API in the internal crypto
interface. This change make hash_ops and mac_ops look the same in terms of
update and final step

Signed-off-by: Pascal Brand <pascal.brand@st.com>
Tested-by: Pascal Brand <pascal.brand@linaro.org> (STM platform)
Reviewed-by: Jerome Forissier <jerome.forissier@linaro.org>
Reviewed-by: Jens Wiklander <jens.wiklander@linaro.org>

show more ...


/optee_os/.travis.yml
/optee_os/core/arch/arm32/include/arm32_macros.S
/optee_os/core/arch/arm32/include/kernel/tee_l2cc_mutex.h
/optee_os/core/arch/arm32/include/kernel/tz_ssvce.h
/optee_os/core/arch/arm32/include/kernel/tz_ssvce_def.h
/optee_os/core/arch/arm32/include/kernel/tz_ssvce_pl310.h
/optee_os/core/arch/arm32/include/mm/core_mmu.h
/optee_os/core/arch/arm32/include/sm/tee_mon.h
/optee_os/core/arch/arm32/kernel/sub.mk
/optee_os/core/arch/arm32/kernel/tee_l2cc_mutex.c
/optee_os/core/arch/arm32/kernel/tee_ta_manager.c
/optee_os/core/arch/arm32/kernel/trace_ext.c
/optee_os/core/arch/arm32/kernel/tz_ssvce.S
/optee_os/core/arch/arm32/kernel/tz_ssvce_pl310.S
/optee_os/core/arch/arm32/mm/core_mmu.c
/optee_os/core/arch/arm32/mm/tee_pager_unpg.c
/optee_os/core/arch/arm32/plat-stm/cache_maintenance.c
/optee_os/core/arch/arm32/plat-stm/conf.mk
/optee_os/core/arch/arm32/plat-stm/main.c
/optee_os/core/arch/arm32/plat-stm/tz-template.lds
/optee_os/core/arch/arm32/plat-stm/tz_a9init.S
/optee_os/core/arch/arm32/plat-vexpress/conf.mk
/optee_os/core/arch/arm32/plat-vexpress/kern.ld.S
/optee_os/core/arch/arm32/plat-vexpress/main.c
/optee_os/core/arch/arm32/sta/core_self_tests.c
/optee_os/core/arch/arm32/tee/init.c
/optee_os/core/include/core_serviceid.h
/optee_os/core/include/kernel/tee_kta_trace.h
/optee_os/core/include/kernel/trace_ta.h
/optee_os/core/include/tee/tee_cryp_provider.h
/optee_os/core/kernel/sub.mk
src/tee_ltc_provider.c
/optee_os/core/tee/tee_cryp_utl.c
/optee_os/core/tee/tee_svc_cryp.c
/optee_os/documentation/images/xlat_table.dot
/optee_os/documentation/images/xlat_table.png
/optee_os/documentation/optee_design.md
/optee_os/lib/libutee/arch/arm32/sub.mk
/optee_os/lib/libutee/arch/arm32/user_ta_entry.c
/optee_os/lib/libutee/tee_api_operations.c
/optee_os/lib/libutils/ext/include/util.h
/optee_os/lib/libutils/isoc/bget.c
/optee_os/lib/libutils/isoc/bget.doc
/optee_os/lib/libutils/isoc/bget.h
/optee_os/lib/libutils/isoc/bget_malloc.c
/optee_os/lib/libutils/isoc/include/malloc.h
/optee_os/lib/libutils/isoc/sub.mk
/optee_os/mk/config.mk

1...<<1112