You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@teaclave.apache.org by iv...@apache.org on 2026/01/07 01:45:06 UTC
(teaclave-trustzone-sdk) 01/05: feat: enable mock_api in optee-utee-sys
This is an automated email from the ASF dual-hosted git repository.
ivila pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/teaclave-trustzone-sdk.git
commit cf95f73d81b9a95d1559615ed462bb550987d4f1
Author: ivila <39...@qq.com>
AuthorDate: Tue Jan 6 11:50:59 2026 +0800
feat: enable mock_api in optee-utee-sys
---
optee-utee/optee-utee-sys/Cargo.toml | 2 +
optee-utee/optee-utee-sys/src/lib.rs | 21 +-
.../mod.rs} | 24 +-
.../object.rs} | 28 +-
optee-utee/optee-utee-sys/src/tee_api.rs | 1154 ++++++++++----------
.../src/tee_internal_api_extensions.rs | 41 +-
6 files changed, 636 insertions(+), 634 deletions(-)
diff --git a/optee-utee/optee-utee-sys/Cargo.toml b/optee-utee/optee-utee-sys/Cargo.toml
index e58c888..f691a66 100644
--- a/optee-utee/optee-utee-sys/Cargo.toml
+++ b/optee-utee/optee-utee-sys/Cargo.toml
@@ -27,8 +27,10 @@ links = "utee"
[dependencies]
libc = "0.2"
+mockall = { version = "0.14.0", optional = true }
[features]
default = []
std = []
no_link = []
+mock = ["dep:mockall", "std", "no_link"]
diff --git a/optee-utee/optee-utee-sys/src/lib.rs b/optee-utee/optee-utee-sys/src/lib.rs
index 04c1f6d..89b9956 100644
--- a/optee-utee/optee-utee-sys/src/lib.rs
+++ b/optee-utee/optee-utee-sys/src/lib.rs
@@ -18,14 +18,14 @@
#![cfg_attr(not(feature = "std"), no_std)]
#![allow(non_camel_case_types, non_snake_case)]
-pub use tee_api::*;
+pub use tee_api::api::*;
pub use tee_api_defines::*;
pub use tee_api_types::*;
-pub use tee_internal_api_extensions::*;
+pub use tee_internal_api_extensions::api::*;
+pub use tee_ipsocket::*;
pub use tee_isocket::*;
pub use tee_tcpsocket::*;
pub use tee_udpsocket::*;
-pub use tee_ipsocket::*;
pub use trace::*;
pub use user_ta_header::*;
pub use utee_syscalls::*;
@@ -35,6 +35,7 @@ mod tee_api;
mod tee_api_defines;
mod tee_api_types;
mod tee_internal_api_extensions;
+mod tee_ipsocket;
mod tee_isocket;
mod tee_tcpsocket;
mod tee_udpsocket;
@@ -42,7 +43,6 @@ mod trace;
mod user_ta_header;
mod utee_syscalls;
mod utee_types;
-mod tee_ipsocket;
// Currently, the libc crate does not support optee_os, and patching it in
// Xargo.toml within the TA project does not affect optee-utee-sys. Therefore,
@@ -55,5 +55,16 @@ mod libc_compat {
#[cfg(not(feature = "std"))]
mod libc_compat {
- pub use libc::{size_t, intmax_t};
+ pub use libc::{intmax_t, size_t};
}
+
+#[cfg(feature = "mock")]
+pub mod mock_api {
+ pub use crate::tee_api::mock_api::*;
+ pub mod extension {
+ pub use crate::tee_internal_api_extensions::mock_api::*;
+ }
+}
+
+#[cfg(feature = "mock")]
+pub mod mock_utils;
diff --git a/optee-utee/optee-utee-sys/src/tee_internal_api_extensions.rs b/optee-utee/optee-utee-sys/src/mock_utils/mod.rs
similarity index 53%
copy from optee-utee/optee-utee-sys/src/tee_internal_api_extensions.rs
copy to optee-utee/optee-utee-sys/src/mock_utils/mod.rs
index 90846b1..0a6c478 100644
--- a/optee-utee/optee-utee-sys/src/tee_internal_api_extensions.rs
+++ b/optee-utee/optee-utee-sys/src/mock_utils/mod.rs
@@ -15,25 +15,9 @@
// specific language governing permissions and limitations
// under the License.
-use super::*;
-use core::ffi::*;
+use std::sync::Mutex;
-extern "C" {
- /// tee_invoke_supp_plugin() - invoke a tee-supplicant's plugin
- /// @uuid: uuid of the plugin
- /// @cmd: command for the plugin
- /// @sub_cmd: subcommand for the plugin
- /// @buf: data [for/from] the plugin [in/out]
- /// @len: length of the input buf
- /// @outlen: pointer to length of the output data (if they will be used)
- /// Return TEE_SUCCESS on success or TEE_ERRROR_* on failure.
- pub fn tee_invoke_supp_plugin(
- uuid: *const TEE_UUID,
- cmd: u32,
- sub_cmd: u32,
- buf: *mut c_void,
- len: usize,
- outlen: *mut usize,
- ) -> TEE_Result;
+// Use this lock to prevent concurrent execution of the test.
+pub static SERIAL_TEST_LOCK: Mutex<()> = Mutex::new(());
-}
+pub mod object;
diff --git a/optee-utee/optee-utee-sys/src/tee_internal_api_extensions.rs b/optee-utee/optee-utee-sys/src/mock_utils/object.rs
similarity index 53%
copy from optee-utee/optee-utee-sys/src/tee_internal_api_extensions.rs
copy to optee-utee/optee-utee-sys/src/mock_utils/object.rs
index 90846b1..be766ad 100644
--- a/optee-utee/optee-utee-sys/src/tee_internal_api_extensions.rs
+++ b/optee-utee/optee-utee-sys/src/mock_utils/object.rs
@@ -15,25 +15,15 @@
// specific language governing permissions and limitations
// under the License.
-use super::*;
-use core::ffi::*;
+use crate::TEE_ObjectHandle;
-extern "C" {
- /// tee_invoke_supp_plugin() - invoke a tee-supplicant's plugin
- /// @uuid: uuid of the plugin
- /// @cmd: command for the plugin
- /// @sub_cmd: subcommand for the plugin
- /// @buf: data [for/from] the plugin [in/out]
- /// @len: length of the input buf
- /// @outlen: pointer to length of the output data (if they will be used)
- /// Return TEE_SUCCESS on success or TEE_ERRROR_* on failure.
- pub fn tee_invoke_supp_plugin(
- uuid: *const TEE_UUID,
- cmd: u32,
- sub_cmd: u32,
- buf: *mut c_void,
- len: usize,
- outlen: *mut usize,
- ) -> TEE_Result;
+pub struct MockHandle(crate::__TEE_ObjectHandle);
+impl MockHandle {
+ pub fn new() -> Self {
+ Self(unsafe { core::mem::zeroed() })
+ }
+ pub fn as_handle(&mut self) -> TEE_ObjectHandle {
+ &mut self.0
+ }
}
diff --git a/optee-utee/optee-utee-sys/src/tee_api.rs b/optee-utee/optee-utee-sys/src/tee_api.rs
index ac2c8fb..f3b165a 100644
--- a/optee-utee/optee-utee-sys/src/tee_api.rs
+++ b/optee-utee/optee-utee-sys/src/tee_api.rs
@@ -15,575 +15,587 @@
// specific language governing permissions and limitations
// under the License.
-use super::*;
-use crate::libc_compat::{intmax_t, size_t};
-use core::ffi::*;
-
-extern "C" {
- // Property access functions
-
- pub fn TEE_GetPropertyAsString(
- propsetOrEnumerator: TEE_PropSetHandle,
- name: *const c_char,
- valueBuffer: *mut c_char,
- valueBufferLen: *mut usize,
- ) -> TEE_Result;
- pub fn TEE_GetPropertyAsBool(
- propsetOrEnumerator: TEE_PropSetHandle,
- name: *const c_char,
- value: *mut bool,
- ) -> TEE_Result;
- pub fn TEE_GetPropertyAsU32(
- propsetOrEnumerator: TEE_PropSetHandle,
- name: *const c_char,
- value: *mut u32,
- ) -> TEE_Result;
- pub fn TEE_GetPropertyAsU64(
- propsetOrEnumerator: TEE_PropSetHandle,
- name: *const c_char,
- value: *mut u64,
- ) -> TEE_Result;
- pub fn TEE_GetPropertyAsBinaryBlock(
- propsetOrEnumerator: TEE_PropSetHandle,
- name: *const c_char,
- valueBuffer: *mut c_void,
- valueBufferLen: *mut usize,
- ) -> TEE_Result;
- pub fn TEE_GetPropertyAsUUID(
- propsetOrEnumerator: TEE_PropSetHandle,
- name: *const c_char,
- value: *mut TEE_UUID,
- ) -> TEE_Result;
- pub fn TEE_GetPropertyAsIdentity(
- propsetOrEnumerator: TEE_PropSetHandle,
- name: *const c_char,
- value: *mut TEE_Identity,
- ) -> TEE_Result;
- pub fn TEE_AllocatePropertyEnumerator(enumerator: *mut TEE_PropSetHandle) -> TEE_Result;
- pub fn TEE_FreePropertyEnumerator(enumerator: TEE_PropSetHandle);
- pub fn TEE_StartPropertyEnumerator(enumerator: TEE_PropSetHandle, propSet: TEE_PropSetHandle);
- pub fn TEE_ResetPropertyEnumerator(enumerator: TEE_PropSetHandle);
- pub fn TEE_GetPropertyName(
- enumerator: TEE_PropSetHandle,
- nameBuffer: *mut c_void,
- nameBufferLen: *mut usize,
- ) -> TEE_Result;
- pub fn TEE_GetNextProperty(enumerator: TEE_PropSetHandle) -> TEE_Result;
-
- // System API - Misc
-
- pub fn TEE_Panic(panicCode: TEE_Result);
-
- // System API - Internal Client API
-
- pub fn TEE_OpenTASession(
- destination: *const TEE_UUID,
- cancellationRequestTimeout: u32,
- paramTypes: u32,
- params: *mut TEE_Param,
- session: *mut TEE_TASessionHandle,
- returnOrigin: *mut u32,
- ) -> TEE_Result;
- pub fn TEE_CloseTASession(session: TEE_TASessionHandle);
- pub fn TEE_InvokeTACommand(
- session: TEE_TASessionHandle,
- cancellationRequestTimeout: u32,
- commandID: u32,
- paramTypes: u32,
- params: *mut TEE_Param,
- returnOrigin: *mut u32,
- ) -> TEE_Result;
-
- // System API - Cancellations
-
- pub fn TEE_GetCancellationFlag() -> bool;
- pub fn TEE_UnmaskCancellation() -> bool;
- pub fn TEE_MaskCancellation() -> bool;
-
- // System API - Memory Management
-
- pub fn TEE_CheckMemoryAccessRights(
- accessFlags: u32,
- buffer: *mut c_void,
- size: usize,
- ) -> TEE_Result;
- pub fn TEE_SetInstanceData(instanceData: *const c_void);
- pub fn TEE_GetInstanceData() -> *const c_void;
- pub fn TEE_Malloc(size: usize, hint: u32) -> *mut c_void;
- pub fn TEE_Realloc(buffer: *mut c_void, newSize: usize) -> *mut c_void;
- pub fn TEE_Free(buffer: *mut c_void);
- pub fn TEE_MemMove(dest: *mut c_void, src: *const c_void, size: usize);
- pub fn TEE_MemCompare(buffer1: *const c_void, buffer2: *const c_void, size: usize) -> i32;
- pub fn TEE_MemFill(buff: *mut c_void, x: u32, size: usize);
-
- // Data and Key Storage API - Generic Object Functions
-
- pub fn TEE_GetObjectInfo(object: TEE_ObjectHandle, objectInfo: *mut TEE_ObjectInfo);
- pub fn TEE_GetObjectInfo1(
- object: TEE_ObjectHandle,
- objectInfo: *mut TEE_ObjectInfo,
- ) -> TEE_Result;
- pub fn TEE_RestrictObjectUsage(object: TEE_ObjectHandle, objectUsage: u32);
- pub fn TEE_RestrictObjectUsage1(object: TEE_ObjectHandle, objectUsage: u32) -> TEE_Result;
- pub fn TEE_GetObjectBufferAttribute(
- object: TEE_ObjectHandle,
- attributeID: u32,
- buffer: *mut c_void,
- size: *mut usize,
- ) -> TEE_Result;
- pub fn TEE_GetObjectValueAttribute(
- object: TEE_ObjectHandle,
- attributeID: u32,
- a: *mut u32,
- b: *mut u32,
- ) -> TEE_Result;
- pub fn TEE_CloseObject(object: TEE_ObjectHandle);
-
- /* Data and Key Storage API - Transient Object Functions */
-
- pub fn TEE_AllocateTransientObject(
- objectType: TEE_ObjectType,
- maxObjectSize: u32,
- object: *mut TEE_ObjectHandle,
- ) -> TEE_Result;
- pub fn TEE_FreeTransientObject(object: TEE_ObjectHandle) -> c_void;
- pub fn TEE_ResetTransientObject(object: TEE_ObjectHandle) -> c_void;
- pub fn TEE_PopulateTransientObject(
- object: TEE_ObjectHandle,
- attrs: *const TEE_Attribute,
- attrCount: u32,
- ) -> TEE_Result;
- pub fn TEE_InitRefAttribute(
- attr: *mut TEE_Attribute,
- attributeID: u32,
- buffer: *const c_void,
- length: usize,
- ) -> c_void;
- pub fn TEE_InitValueAttribute(
- attr: *mut TEE_Attribute,
- attributeID: u32,
- a: u32,
- b: u32,
- ) -> c_void;
- pub fn TEE_CopyObjectAttributes(
- destObject: TEE_ObjectHandle,
- srcObject: TEE_ObjectHandle,
- ) -> c_void;
- pub fn TEE_CopyObjectAttributes1(
- destObject: TEE_ObjectHandle,
- srcObject: TEE_ObjectHandle,
- ) -> TEE_Result;
- pub fn TEE_GenerateKey(
- object: TEE_ObjectHandle,
- keySize: u32,
- params: *const TEE_Attribute,
- paramCount: u32,
- ) -> TEE_Result;
-
- // Data and Key Storage API - Persistent Object Functions
-
- pub fn TEE_OpenPersistentObject(
- storageID: u32,
- objectID: *const c_void,
- objectIDLen: usize,
- flags: u32,
- object: *mut TEE_ObjectHandle,
- ) -> TEE_Result;
- pub fn TEE_CreatePersistentObject(
- storageID: u32,
- objectID: *const c_void,
- objectIDLen: usize,
- flags: u32,
- attributes: TEE_ObjectHandle,
- initialData: *const c_void,
- initialDataLen: usize,
- object: *mut TEE_ObjectHandle,
- ) -> TEE_Result;
- pub fn TEE_CloseAndDeletePersistentObject(object: TEE_ObjectHandle);
- pub fn TEE_CloseAndDeletePersistentObject1(object: TEE_ObjectHandle) -> TEE_Result;
- pub fn TEE_RenamePersistentObject(
- object: TEE_ObjectHandle,
- newObjectID: *const c_void,
- newObjectIDLen: usize,
- ) -> TEE_Result;
- pub fn TEE_AllocatePersistentObjectEnumerator(
- objectEnumerator: *mut TEE_ObjectEnumHandle,
- ) -> TEE_Result;
- pub fn TEE_FreePersistentObjectEnumerator(objectEnumerator: TEE_ObjectEnumHandle);
- pub fn TEE_ResetPersistentObjectEnumerator(objectEnumerator: TEE_ObjectEnumHandle);
- pub fn TEE_StartPersistentObjectEnumerator(
- objectEnumerator: TEE_ObjectEnumHandle,
- storageID: u32,
- ) -> TEE_Result;
- pub fn TEE_GetNextPersistentObject(
- objectEnumerator: TEE_ObjectEnumHandle,
- objectInfo: *mut TEE_ObjectInfo,
- objectID: *mut c_void,
- objectIDLen: *mut usize,
- ) -> TEE_Result;
-
- // Data and Key Storage API - Data Stream Access Functions
-
- pub fn TEE_ReadObjectData(
- object: TEE_ObjectHandle,
- buffer: *mut c_void,
- size: usize,
- count: *mut usize,
- ) -> TEE_Result;
- pub fn TEE_WriteObjectData(
- object: TEE_ObjectHandle,
- buffer: *const c_void,
- size: usize,
- ) -> TEE_Result;
- pub fn TEE_TruncateObjectData(object: TEE_ObjectHandle, size: usize) -> TEE_Result;
- pub fn TEE_SeekObjectData(
- object: TEE_ObjectHandle,
- offset: intmax_t,
- whence: TEE_Whence,
- ) -> TEE_Result;
-
- // Cryptographic Operations API - Generic Operation Functions
-
- pub fn TEE_AllocateOperation(
- operation: *mut TEE_OperationHandle,
- algorithm: u32,
- mode: u32,
- maxKeySize: u32,
- ) -> TEE_Result;
- pub fn TEE_FreeOperation(operation: TEE_OperationHandle) -> c_void;
- pub fn TEE_GetOperationInfo(
- operation: TEE_OperationHandle,
- operationInfo: *mut TEE_OperationInfo,
- ) -> c_void;
- pub fn TEE_GetOperationInfoMultiple(
- operation: TEE_OperationHandle,
- operationInfoMultiple: *mut TEE_OperationInfoMultiple,
- operationSize: *mut usize,
- ) -> TEE_Result;
- pub fn TEE_ResetOperation(operation: TEE_OperationHandle) -> c_void;
- pub fn TEE_SetOperationKey(operation: TEE_OperationHandle, key: TEE_ObjectHandle)
- -> TEE_Result;
- pub fn TEE_SetOperationKey2(
- operation: TEE_OperationHandle,
- key1: TEE_ObjectHandle,
- key2: TEE_ObjectHandle,
- ) -> TEE_Result;
- pub fn TEE_CopyOperation(
- dstOperation: TEE_OperationHandle,
- srcOperation: TEE_OperationHandle,
- ) -> c_void;
- pub fn TEE_IsAlgorithmSupported(algId: u32, element: u32) -> TEE_Result;
-
- // Cryptographic Operations API - Message Digest Functions
-
- pub fn TEE_DigestUpdate(
- operation: TEE_OperationHandle,
- chunk: *const c_void,
- chunkSize: usize,
- ) -> c_void;
- pub fn TEE_DigestDoFinal(
- operation: TEE_OperationHandle,
- chunk: *const c_void,
- chunkLen: usize,
- hash: *mut c_void,
- hashLen: *mut usize,
- ) -> TEE_Result;
-
- // Cryptographic Operations API - Symmetric Cipher Functions
-
- pub fn TEE_CipherInit(
- operation: TEE_OperationHandle,
- IV: *const c_void,
- IVLen: usize,
- ) -> c_void;
- pub fn TEE_CipherUpdate(
- operation: TEE_OperationHandle,
- srcData: *const c_void,
- srcLen: usize,
- destData: *mut c_void,
- destLen: *mut usize,
- ) -> TEE_Result;
- pub fn TEE_CipherDoFinal(
- operation: TEE_OperationHandle,
- srcData: *const c_void,
- srcLen: usize,
- destData: *mut c_void,
- destLen: *mut usize,
- ) -> TEE_Result;
-
- // Cryptographic Operations API - MAC Functions
-
- pub fn TEE_MACInit(operation: TEE_OperationHandle, IV: *const c_void, IVLen: usize) -> c_void;
- pub fn TEE_MACUpdate(
- operation: TEE_OperationHandle,
- chunk: *const c_void,
- chunkSize: usize,
- ) -> c_void;
- pub fn TEE_MACComputeFinal(
- operation: TEE_OperationHandle,
- message: *const c_void,
- messageLen: usize,
- mac: *mut c_void,
- macLen: *mut usize,
- ) -> TEE_Result;
- pub fn TEE_MACCompareFinal(
- operation: TEE_OperationHandle,
- message: *const c_void,
- messageLen: usize,
- mac: *const c_void,
- macLen: usize,
- ) -> TEE_Result;
-
- // Cryptographic Operations API - Authenticated Encryption Functions
-
- pub fn TEE_AEInit(
- operation: TEE_OperationHandle,
- nonce: *const c_void,
- nonceLen: usize,
- tagLen: u32,
- AADLen: usize,
- payloadLen: usize,
- ) -> TEE_Result;
- pub fn TEE_AEUpdateAAD(
- operation: TEE_OperationHandle,
- AADdata: *const c_void,
- AADdataLen: usize,
- ) -> c_void;
- pub fn TEE_AEUpdate(
- operation: TEE_OperationHandle,
- srcData: *const c_void,
- srcLen: usize,
- destData: *mut c_void,
- destLen: *mut usize,
- ) -> TEE_Result;
- pub fn TEE_AEEncryptFinal(
- operation: TEE_OperationHandle,
- srcData: *const c_void,
- srcLen: usize,
- destData: *mut c_void,
- destLen: *mut usize,
- tag: *mut c_void,
- tagLen: *mut usize,
- ) -> TEE_Result;
- pub fn TEE_AEDecryptFinal(
- operation: TEE_OperationHandle,
- srcData: *const c_void,
- srcLen: usize,
- destData: *mut c_void,
- destLen: *mut usize,
- tag: *mut c_void,
- tagLen: usize,
- ) -> TEE_Result;
-
- // Cryptographic Operations API - Asymmetric Functions
-
- pub fn TEE_AsymmetricEncrypt(
- operation: TEE_OperationHandle,
- params: *const TEE_Attribute,
- paramCount: u32,
- srcData: *const c_void,
- srcLen: usize,
- destData: *mut c_void,
- destLen: *mut usize,
- ) -> TEE_Result;
- pub fn TEE_AsymmetricDecrypt(
- operation: TEE_OperationHandle,
- params: *const TEE_Attribute,
- paramCount: u32,
- srcData: *const c_void,
- srcLen: usize,
- destData: *mut c_void,
- destLen: *mut usize,
- ) -> TEE_Result;
- pub fn TEE_AsymmetricSignDigest(
- operation: TEE_OperationHandle,
- params: *const TEE_Attribute,
- paramCount: u32,
- digest: *const c_void,
- digestLen: usize,
- signature: *mut c_void,
- signatureLen: *mut usize,
- ) -> TEE_Result;
- pub fn TEE_AsymmetricVerifyDigest(
- operation: TEE_OperationHandle,
- params: *const TEE_Attribute,
- paramCount: u32,
- digest: *const c_void,
- digestLen: usize,
- signature: *const c_void,
- signatureLen: usize,
- ) -> TEE_Result;
-
- // Cryptographic Operations API - Key Derivation Functions
-
- pub fn TEE_DeriveKey(
- operation: TEE_OperationHandle,
- params: *const TEE_Attribute,
- paramCount: u32,
- derivedKey: TEE_ObjectHandle,
- ) -> c_void;
-
- // Cryptographic Operations API - Random Number Generation Functions
-
- pub fn TEE_GenerateRandom(randomBuffer: *mut c_void, randomBufferLen: usize) -> c_void;
-
- // Date & Time API
-
- pub fn TEE_GetSystemTime(time: *mut TEE_Time) -> c_void;
- pub fn TEE_Wait(timeout: u32) -> TEE_Result;
- pub fn TEE_GetTAPersistentTime(time: *mut TEE_Time) -> TEE_Result;
- pub fn TEE_SetTAPersistentTime(time: *const TEE_Time) -> TEE_Result;
- pub fn TEE_GetREETime(time: *mut TEE_Time) -> c_void;
-
- // TEE Arithmetical API - Memory allocation and size of objects
-
- pub fn TEE_BigIntFMMSizeInU32(modulusSizeInBits: usize) -> usize;
- pub fn TEE_BigIntFMMContextSizeInU32(modulusSizeInBits: usize) -> usize;
-
- // TEE Arithmetical API - Initialization functions
-
- pub fn TEE_BigIntInit(bigInt: *mut TEE_BigInt, len: usize) -> c_void;
- pub fn TEE_BigIntInitFMMContext(
- context: *mut TEE_BigIntFMMContext,
- len: usize,
- modulus: *const TEE_BigInt,
- ) -> c_void;
- pub fn TEE_BigIntInitFMM(bigIntFMM: *mut TEE_BigIntFMM, len: usize) -> c_void;
-
- // TEE Arithmetical API - Converter functions
-
- pub fn TEE_BigIntConvertFromOctetString(
- dest: *mut TEE_BigInt,
- buffer: *const u8,
- bufferLen: usize,
- sign: i32,
- ) -> TEE_Result;
- pub fn TEE_BigIntConvertToOctetString(
- buffer: *mut u8,
- bufferLen: *mut usize,
- bigInt: *const TEE_BigInt,
- ) -> TEE_Result;
- pub fn TEE_BigIntConvertFromS32(dest: *mut TEE_BigInt, shortVal: i32) -> c_void;
- pub fn TEE_BigIntConvertToS32(dest: *mut i32, src: *const TEE_BigInt) -> TEE_Result;
-
- // TEE Arithmetical API - Logical operations
-
- pub fn TEE_BigIntCmp(op1: *const TEE_BigInt, op2: *const TEE_BigInt) -> i32;
- pub fn TEE_BigIntCmpS32(op: *const TEE_BigInt, shortVal: i32) -> i32;
- pub fn TEE_BigIntShiftRight(
- dest: *mut TEE_BigInt,
- op: *const TEE_BigInt,
- bits: size_t,
- ) -> c_void;
- pub fn TEE_BigIntGetBit(src: *const TEE_BigInt, bitIndex: u32) -> bool;
- pub fn TEE_BigIntGetBitCount(src: *const TEE_BigInt) -> u32;
- pub fn TEE_BigIntSetBit(src: *mut TEE_BigInt, bitIndex: u32, value: bool) -> TEE_Result;
- pub fn TEE_BigIntAssign(dest: *mut TEE_BigInt, src: *const TEE_BigInt) -> TEE_Result;
- pub fn TEE_BigIntAbs(dest: *mut TEE_BigInt, src: *const TEE_BigInt) -> TEE_Result;
- pub fn TEE_BigIntAdd(
- dest: *mut TEE_BigInt,
- op1: *const TEE_BigInt,
- op2: *const TEE_BigInt,
- ) -> c_void;
- pub fn TEE_BigIntSub(
- dest: *mut TEE_BigInt,
- op1: *const TEE_BigInt,
- op2: *const TEE_BigInt,
- ) -> c_void;
- pub fn TEE_BigIntNeg(dest: *mut TEE_BigInt, op: *const TEE_BigInt) -> c_void;
- pub fn TEE_BigIntMul(
- dest: *mut TEE_BigInt,
- op1: *const TEE_BigInt,
- op2: *const TEE_BigInt,
- ) -> c_void;
- pub fn TEE_BigIntSquare(dest: *mut TEE_BigInt, op: *const TEE_BigInt) -> c_void;
- pub fn TEE_BigIntDiv(
- dest_q: *mut TEE_BigInt,
- dest_r: *mut TEE_BigInt,
- op1: *const TEE_BigInt,
- op2: *const TEE_BigInt,
- ) -> c_void;
-
- // TEE Arithmetical API - Modular arithmetic operations
-
- pub fn TEE_BigIntMod(
- dest: *mut TEE_BigInt,
- op: *const TEE_BigInt,
- n: *const TEE_BigInt,
- ) -> c_void;
- pub fn TEE_BigIntAddMod(
- dest: *mut TEE_BigInt,
- op1: *const TEE_BigInt,
- op2: *const TEE_BigInt,
- n: *const TEE_BigInt,
- ) -> c_void;
- pub fn TEE_BigIntSubMod(
- dest: *mut TEE_BigInt,
- op1: *const TEE_BigInt,
- op2: *const TEE_BigInt,
- n: *const TEE_BigInt,
- ) -> c_void;
- pub fn TEE_BigIntMulMod(
- dest: *mut TEE_BigInt,
- op1: *const TEE_BigInt,
- op2: *const TEE_BigInt,
- n: *const TEE_BigInt,
- ) -> c_void;
- pub fn TEE_BigIntSquareMod(
- dest: *mut TEE_BigInt,
- op: *const TEE_BigInt,
- n: *const TEE_BigInt,
- ) -> c_void;
- pub fn TEE_BigIntInvMod(
- dest: *mut TEE_BigInt,
- op: *const TEE_BigInt,
- n: *const TEE_BigInt,
- ) -> c_void;
- pub fn TEE_BigIntExpMod(
- dest: *mut TEE_BigInt,
- op1: *const TEE_BigInt,
- op2: *const TEE_BigInt,
- n: *const TEE_BigInt,
- context: *const TEE_BigIntFMMContext,
- ) -> TEE_Result;
-
- // TEE Arithmetical API - Other arithmetic operations
-
- pub fn TEE_BigIntRelativePrime(op1: *const TEE_BigInt, op2: *const TEE_BigInt) -> bool;
- pub fn TEE_BigIntComputeExtendedGcd(
- gcd: *mut TEE_BigInt,
- u: *mut TEE_BigInt,
- v: *mut TEE_BigInt,
- op1: *const TEE_BigInt,
- op2: *const TEE_BigInt,
- ) -> c_void;
- pub fn TEE_BigIntIsProbablePrime(op: *const TEE_BigInt, confidenceLevel: u32) -> i32;
-
- // TEE Arithmetical API - Fast modular multiplication operations
-
- pub fn TEE_BigIntConvertToFMM(
- dest: *mut TEE_BigIntFMM,
- src: *const TEE_BigInt,
- n: *const TEE_BigInt,
- context: *const TEE_BigIntFMMContext,
- ) -> c_void;
- pub fn TEE_BigIntConvertFromFMM(
- dest: *mut TEE_BigInt,
- src: *const TEE_BigIntFMM,
- n: *const TEE_BigInt,
- context: *const TEE_BigIntFMMContext,
- ) -> c_void;
- pub fn TEE_BigIntFMMConvertToBigInt(
- dest: *mut TEE_BigInt,
- src: *const TEE_BigIntFMM,
- n: *const TEE_BigInt,
- context: *const TEE_BigIntFMMContext,
- ) -> c_void;
- pub fn TEE_BigIntComputeFMM(
- dest: *mut TEE_BigIntFMM,
- op1: *const TEE_BigIntFMM,
- op2: *const TEE_BigIntFMM,
- n: *const TEE_BigInt,
- context: *const TEE_BigIntFMMContext,
- ) -> c_void;
+#[cfg_attr(feature = "mock", mockall::automock)]
+pub mod api {
+ use crate::libc_compat::{intmax_t, size_t};
+ use crate::*;
+ use core::ffi::*;
+
+ extern "C" {
+ // Property access functions
+
+ pub fn TEE_GetPropertyAsString(
+ propsetOrEnumerator: TEE_PropSetHandle,
+ name: *const c_char,
+ valueBuffer: *mut c_char,
+ valueBufferLen: *mut usize,
+ ) -> TEE_Result;
+ pub fn TEE_GetPropertyAsBool(
+ propsetOrEnumerator: TEE_PropSetHandle,
+ name: *const c_char,
+ value: *mut bool,
+ ) -> TEE_Result;
+ pub fn TEE_GetPropertyAsU32(
+ propsetOrEnumerator: TEE_PropSetHandle,
+ name: *const c_char,
+ value: *mut u32,
+ ) -> TEE_Result;
+ pub fn TEE_GetPropertyAsU64(
+ propsetOrEnumerator: TEE_PropSetHandle,
+ name: *const c_char,
+ value: *mut u64,
+ ) -> TEE_Result;
+ pub fn TEE_GetPropertyAsBinaryBlock(
+ propsetOrEnumerator: TEE_PropSetHandle,
+ name: *const c_char,
+ valueBuffer: *mut c_void,
+ valueBufferLen: *mut usize,
+ ) -> TEE_Result;
+ pub fn TEE_GetPropertyAsUUID(
+ propsetOrEnumerator: TEE_PropSetHandle,
+ name: *const c_char,
+ value: *mut TEE_UUID,
+ ) -> TEE_Result;
+ pub fn TEE_GetPropertyAsIdentity(
+ propsetOrEnumerator: TEE_PropSetHandle,
+ name: *const c_char,
+ value: *mut TEE_Identity,
+ ) -> TEE_Result;
+ pub fn TEE_AllocatePropertyEnumerator(enumerator: *mut TEE_PropSetHandle) -> TEE_Result;
+ pub fn TEE_FreePropertyEnumerator(enumerator: TEE_PropSetHandle);
+ pub fn TEE_StartPropertyEnumerator(
+ enumerator: TEE_PropSetHandle,
+ propSet: TEE_PropSetHandle,
+ );
+ pub fn TEE_ResetPropertyEnumerator(enumerator: TEE_PropSetHandle);
+ pub fn TEE_GetPropertyName(
+ enumerator: TEE_PropSetHandle,
+ nameBuffer: *mut c_void,
+ nameBufferLen: *mut usize,
+ ) -> TEE_Result;
+ pub fn TEE_GetNextProperty(enumerator: TEE_PropSetHandle) -> TEE_Result;
+
+ // System API - Misc
+
+ pub fn TEE_Panic(panicCode: TEE_Result);
+
+ // System API - Internal Client API
+
+ pub fn TEE_OpenTASession(
+ destination: *const TEE_UUID,
+ cancellationRequestTimeout: u32,
+ paramTypes: u32,
+ params: *mut TEE_Param,
+ session: *mut TEE_TASessionHandle,
+ returnOrigin: *mut u32,
+ ) -> TEE_Result;
+ pub fn TEE_CloseTASession(session: TEE_TASessionHandle);
+ pub fn TEE_InvokeTACommand(
+ session: TEE_TASessionHandle,
+ cancellationRequestTimeout: u32,
+ commandID: u32,
+ paramTypes: u32,
+ params: *mut TEE_Param,
+ returnOrigin: *mut u32,
+ ) -> TEE_Result;
+
+ // System API - Cancellations
+
+ pub fn TEE_GetCancellationFlag() -> bool;
+ pub fn TEE_UnmaskCancellation() -> bool;
+ pub fn TEE_MaskCancellation() -> bool;
+
+ // System API - Memory Management
+
+ pub fn TEE_CheckMemoryAccessRights(
+ accessFlags: u32,
+ buffer: *mut c_void,
+ size: usize,
+ ) -> TEE_Result;
+ pub fn TEE_SetInstanceData(instanceData: *const c_void);
+ pub fn TEE_GetInstanceData() -> *const c_void;
+ pub fn TEE_Malloc(size: usize, hint: u32) -> *mut c_void;
+ pub fn TEE_Realloc(buffer: *mut c_void, newSize: usize) -> *mut c_void;
+ pub fn TEE_Free(buffer: *mut c_void);
+ pub fn TEE_MemMove(dest: *mut c_void, src: *const c_void, size: usize);
+ pub fn TEE_MemCompare(buffer1: *const c_void, buffer2: *const c_void, size: usize) -> i32;
+ pub fn TEE_MemFill(buff: *mut c_void, x: u32, size: usize);
+
+ // Data and Key Storage API - Generic Object Functions
+
+ pub fn TEE_GetObjectInfo(object: TEE_ObjectHandle, objectInfo: *mut TEE_ObjectInfo);
+ pub fn TEE_GetObjectInfo1(
+ object: TEE_ObjectHandle,
+ objectInfo: *mut TEE_ObjectInfo,
+ ) -> TEE_Result;
+ pub fn TEE_RestrictObjectUsage(object: TEE_ObjectHandle, objectUsage: u32);
+ pub fn TEE_RestrictObjectUsage1(object: TEE_ObjectHandle, objectUsage: u32) -> TEE_Result;
+ pub fn TEE_GetObjectBufferAttribute(
+ object: TEE_ObjectHandle,
+ attributeID: u32,
+ buffer: *mut c_void,
+ size: *mut usize,
+ ) -> TEE_Result;
+ pub fn TEE_GetObjectValueAttribute(
+ object: TEE_ObjectHandle,
+ attributeID: u32,
+ a: *mut u32,
+ b: *mut u32,
+ ) -> TEE_Result;
+ pub fn TEE_CloseObject(object: TEE_ObjectHandle);
+
+ /* Data and Key Storage API - Transient Object Functions */
+
+ pub fn TEE_AllocateTransientObject(
+ objectType: TEE_ObjectType,
+ maxObjectSize: u32,
+ object: *mut TEE_ObjectHandle,
+ ) -> TEE_Result;
+ pub fn TEE_FreeTransientObject(object: TEE_ObjectHandle) -> c_void;
+ pub fn TEE_ResetTransientObject(object: TEE_ObjectHandle) -> c_void;
+ pub fn TEE_PopulateTransientObject(
+ object: TEE_ObjectHandle,
+ attrs: *const TEE_Attribute,
+ attrCount: u32,
+ ) -> TEE_Result;
+ pub fn TEE_InitRefAttribute(
+ attr: *mut TEE_Attribute,
+ attributeID: u32,
+ buffer: *const c_void,
+ length: usize,
+ ) -> c_void;
+ pub fn TEE_InitValueAttribute(
+ attr: *mut TEE_Attribute,
+ attributeID: u32,
+ a: u32,
+ b: u32,
+ ) -> c_void;
+ pub fn TEE_CopyObjectAttributes(
+ destObject: TEE_ObjectHandle,
+ srcObject: TEE_ObjectHandle,
+ ) -> c_void;
+ pub fn TEE_CopyObjectAttributes1(
+ destObject: TEE_ObjectHandle,
+ srcObject: TEE_ObjectHandle,
+ ) -> TEE_Result;
+ pub fn TEE_GenerateKey(
+ object: TEE_ObjectHandle,
+ keySize: u32,
+ params: *const TEE_Attribute,
+ paramCount: u32,
+ ) -> TEE_Result;
+
+ // Data and Key Storage API - Persistent Object Functions
+
+ pub fn TEE_OpenPersistentObject(
+ storageID: u32,
+ objectID: *const c_void,
+ objectIDLen: usize,
+ flags: u32,
+ object: *mut TEE_ObjectHandle,
+ ) -> TEE_Result;
+ pub fn TEE_CreatePersistentObject(
+ storageID: u32,
+ objectID: *const c_void,
+ objectIDLen: usize,
+ flags: u32,
+ attributes: TEE_ObjectHandle,
+ initialData: *const c_void,
+ initialDataLen: usize,
+ object: *mut TEE_ObjectHandle,
+ ) -> TEE_Result;
+ pub fn TEE_CloseAndDeletePersistentObject(object: TEE_ObjectHandle);
+ pub fn TEE_CloseAndDeletePersistentObject1(object: TEE_ObjectHandle) -> TEE_Result;
+ pub fn TEE_RenamePersistentObject(
+ object: TEE_ObjectHandle,
+ newObjectID: *const c_void,
+ newObjectIDLen: usize,
+ ) -> TEE_Result;
+ pub fn TEE_AllocatePersistentObjectEnumerator(
+ objectEnumerator: *mut TEE_ObjectEnumHandle,
+ ) -> TEE_Result;
+ pub fn TEE_FreePersistentObjectEnumerator(objectEnumerator: TEE_ObjectEnumHandle);
+ pub fn TEE_ResetPersistentObjectEnumerator(objectEnumerator: TEE_ObjectEnumHandle);
+ pub fn TEE_StartPersistentObjectEnumerator(
+ objectEnumerator: TEE_ObjectEnumHandle,
+ storageID: u32,
+ ) -> TEE_Result;
+ pub fn TEE_GetNextPersistentObject(
+ objectEnumerator: TEE_ObjectEnumHandle,
+ objectInfo: *mut TEE_ObjectInfo,
+ objectID: *mut c_void,
+ objectIDLen: *mut usize,
+ ) -> TEE_Result;
+
+ // Data and Key Storage API - Data Stream Access Functions
+
+ pub fn TEE_ReadObjectData(
+ object: TEE_ObjectHandle,
+ buffer: *mut c_void,
+ size: usize,
+ count: *mut usize,
+ ) -> TEE_Result;
+ pub fn TEE_WriteObjectData(
+ object: TEE_ObjectHandle,
+ buffer: *const c_void,
+ size: usize,
+ ) -> TEE_Result;
+ pub fn TEE_TruncateObjectData(object: TEE_ObjectHandle, size: usize) -> TEE_Result;
+ pub fn TEE_SeekObjectData(
+ object: TEE_ObjectHandle,
+ offset: intmax_t,
+ whence: TEE_Whence,
+ ) -> TEE_Result;
+
+ // Cryptographic Operations API - Generic Operation Functions
+
+ pub fn TEE_AllocateOperation(
+ operation: *mut TEE_OperationHandle,
+ algorithm: u32,
+ mode: u32,
+ maxKeySize: u32,
+ ) -> TEE_Result;
+ pub fn TEE_FreeOperation(operation: TEE_OperationHandle) -> c_void;
+ pub fn TEE_GetOperationInfo(
+ operation: TEE_OperationHandle,
+ operationInfo: *mut TEE_OperationInfo,
+ ) -> c_void;
+ pub fn TEE_GetOperationInfoMultiple(
+ operation: TEE_OperationHandle,
+ operationInfoMultiple: *mut TEE_OperationInfoMultiple,
+ operationSize: *mut usize,
+ ) -> TEE_Result;
+ pub fn TEE_ResetOperation(operation: TEE_OperationHandle) -> c_void;
+ pub fn TEE_SetOperationKey(
+ operation: TEE_OperationHandle,
+ key: TEE_ObjectHandle,
+ ) -> TEE_Result;
+ pub fn TEE_SetOperationKey2(
+ operation: TEE_OperationHandle,
+ key1: TEE_ObjectHandle,
+ key2: TEE_ObjectHandle,
+ ) -> TEE_Result;
+ pub fn TEE_CopyOperation(
+ dstOperation: TEE_OperationHandle,
+ srcOperation: TEE_OperationHandle,
+ ) -> c_void;
+ pub fn TEE_IsAlgorithmSupported(algId: u32, element: u32) -> TEE_Result;
+
+ // Cryptographic Operations API - Message Digest Functions
+
+ pub fn TEE_DigestUpdate(
+ operation: TEE_OperationHandle,
+ chunk: *const c_void,
+ chunkSize: usize,
+ ) -> c_void;
+ pub fn TEE_DigestDoFinal(
+ operation: TEE_OperationHandle,
+ chunk: *const c_void,
+ chunkLen: usize,
+ hash: *mut c_void,
+ hashLen: *mut usize,
+ ) -> TEE_Result;
+
+ // Cryptographic Operations API - Symmetric Cipher Functions
+
+ pub fn TEE_CipherInit(
+ operation: TEE_OperationHandle,
+ IV: *const c_void,
+ IVLen: usize,
+ ) -> c_void;
+ pub fn TEE_CipherUpdate(
+ operation: TEE_OperationHandle,
+ srcData: *const c_void,
+ srcLen: usize,
+ destData: *mut c_void,
+ destLen: *mut usize,
+ ) -> TEE_Result;
+ pub fn TEE_CipherDoFinal(
+ operation: TEE_OperationHandle,
+ srcData: *const c_void,
+ srcLen: usize,
+ destData: *mut c_void,
+ destLen: *mut usize,
+ ) -> TEE_Result;
+
+ // Cryptographic Operations API - MAC Functions
+
+ pub fn TEE_MACInit(
+ operation: TEE_OperationHandle,
+ IV: *const c_void,
+ IVLen: usize,
+ ) -> c_void;
+ pub fn TEE_MACUpdate(
+ operation: TEE_OperationHandle,
+ chunk: *const c_void,
+ chunkSize: usize,
+ ) -> c_void;
+ pub fn TEE_MACComputeFinal(
+ operation: TEE_OperationHandle,
+ message: *const c_void,
+ messageLen: usize,
+ mac: *mut c_void,
+ macLen: *mut usize,
+ ) -> TEE_Result;
+ pub fn TEE_MACCompareFinal(
+ operation: TEE_OperationHandle,
+ message: *const c_void,
+ messageLen: usize,
+ mac: *const c_void,
+ macLen: usize,
+ ) -> TEE_Result;
+
+ // Cryptographic Operations API - Authenticated Encryption Functions
+
+ pub fn TEE_AEInit(
+ operation: TEE_OperationHandle,
+ nonce: *const c_void,
+ nonceLen: usize,
+ tagLen: u32,
+ AADLen: usize,
+ payloadLen: usize,
+ ) -> TEE_Result;
+ pub fn TEE_AEUpdateAAD(
+ operation: TEE_OperationHandle,
+ AADdata: *const c_void,
+ AADdataLen: usize,
+ ) -> c_void;
+ pub fn TEE_AEUpdate(
+ operation: TEE_OperationHandle,
+ srcData: *const c_void,
+ srcLen: usize,
+ destData: *mut c_void,
+ destLen: *mut usize,
+ ) -> TEE_Result;
+ pub fn TEE_AEEncryptFinal(
+ operation: TEE_OperationHandle,
+ srcData: *const c_void,
+ srcLen: usize,
+ destData: *mut c_void,
+ destLen: *mut usize,
+ tag: *mut c_void,
+ tagLen: *mut usize,
+ ) -> TEE_Result;
+ pub fn TEE_AEDecryptFinal(
+ operation: TEE_OperationHandle,
+ srcData: *const c_void,
+ srcLen: usize,
+ destData: *mut c_void,
+ destLen: *mut usize,
+ tag: *mut c_void,
+ tagLen: usize,
+ ) -> TEE_Result;
+
+ // Cryptographic Operations API - Asymmetric Functions
+
+ pub fn TEE_AsymmetricEncrypt(
+ operation: TEE_OperationHandle,
+ params: *const TEE_Attribute,
+ paramCount: u32,
+ srcData: *const c_void,
+ srcLen: usize,
+ destData: *mut c_void,
+ destLen: *mut usize,
+ ) -> TEE_Result;
+ pub fn TEE_AsymmetricDecrypt(
+ operation: TEE_OperationHandle,
+ params: *const TEE_Attribute,
+ paramCount: u32,
+ srcData: *const c_void,
+ srcLen: usize,
+ destData: *mut c_void,
+ destLen: *mut usize,
+ ) -> TEE_Result;
+ pub fn TEE_AsymmetricSignDigest(
+ operation: TEE_OperationHandle,
+ params: *const TEE_Attribute,
+ paramCount: u32,
+ digest: *const c_void,
+ digestLen: usize,
+ signature: *mut c_void,
+ signatureLen: *mut usize,
+ ) -> TEE_Result;
+ pub fn TEE_AsymmetricVerifyDigest(
+ operation: TEE_OperationHandle,
+ params: *const TEE_Attribute,
+ paramCount: u32,
+ digest: *const c_void,
+ digestLen: usize,
+ signature: *const c_void,
+ signatureLen: usize,
+ ) -> TEE_Result;
+
+ // Cryptographic Operations API - Key Derivation Functions
+
+ pub fn TEE_DeriveKey(
+ operation: TEE_OperationHandle,
+ params: *const TEE_Attribute,
+ paramCount: u32,
+ derivedKey: TEE_ObjectHandle,
+ ) -> c_void;
+
+ // Cryptographic Operations API - Random Number Generation Functions
+
+ pub fn TEE_GenerateRandom(randomBuffer: *mut c_void, randomBufferLen: usize) -> c_void;
+
+ // Date & Time API
+
+ pub fn TEE_GetSystemTime(time: *mut TEE_Time) -> c_void;
+ pub fn TEE_Wait(timeout: u32) -> TEE_Result;
+ pub fn TEE_GetTAPersistentTime(time: *mut TEE_Time) -> TEE_Result;
+ pub fn TEE_SetTAPersistentTime(time: *const TEE_Time) -> TEE_Result;
+ pub fn TEE_GetREETime(time: *mut TEE_Time) -> c_void;
+
+ // TEE Arithmetical API - Memory allocation and size of objects
+
+ pub fn TEE_BigIntFMMSizeInU32(modulusSizeInBits: usize) -> usize;
+ pub fn TEE_BigIntFMMContextSizeInU32(modulusSizeInBits: usize) -> usize;
+
+ // TEE Arithmetical API - Initialization functions
+
+ pub fn TEE_BigIntInit(bigInt: *mut TEE_BigInt, len: usize) -> c_void;
+ pub fn TEE_BigIntInitFMMContext(
+ context: *mut TEE_BigIntFMMContext,
+ len: usize,
+ modulus: *const TEE_BigInt,
+ ) -> c_void;
+ pub fn TEE_BigIntInitFMM(bigIntFMM: *mut TEE_BigIntFMM, len: usize) -> c_void;
+
+ // TEE Arithmetical API - Converter functions
+
+ pub fn TEE_BigIntConvertFromOctetString(
+ dest: *mut TEE_BigInt,
+ buffer: *const u8,
+ bufferLen: usize,
+ sign: i32,
+ ) -> TEE_Result;
+ pub fn TEE_BigIntConvertToOctetString(
+ buffer: *mut u8,
+ bufferLen: *mut usize,
+ bigInt: *const TEE_BigInt,
+ ) -> TEE_Result;
+ pub fn TEE_BigIntConvertFromS32(dest: *mut TEE_BigInt, shortVal: i32) -> c_void;
+ pub fn TEE_BigIntConvertToS32(dest: *mut i32, src: *const TEE_BigInt) -> TEE_Result;
+
+ // TEE Arithmetical API - Logical operations
+
+ pub fn TEE_BigIntCmp(op1: *const TEE_BigInt, op2: *const TEE_BigInt) -> i32;
+ pub fn TEE_BigIntCmpS32(op: *const TEE_BigInt, shortVal: i32) -> i32;
+ pub fn TEE_BigIntShiftRight(
+ dest: *mut TEE_BigInt,
+ op: *const TEE_BigInt,
+ bits: size_t,
+ ) -> c_void;
+ pub fn TEE_BigIntGetBit(src: *const TEE_BigInt, bitIndex: u32) -> bool;
+ pub fn TEE_BigIntGetBitCount(src: *const TEE_BigInt) -> u32;
+ pub fn TEE_BigIntSetBit(src: *mut TEE_BigInt, bitIndex: u32, value: bool) -> TEE_Result;
+ pub fn TEE_BigIntAssign(dest: *mut TEE_BigInt, src: *const TEE_BigInt) -> TEE_Result;
+ pub fn TEE_BigIntAbs(dest: *mut TEE_BigInt, src: *const TEE_BigInt) -> TEE_Result;
+ pub fn TEE_BigIntAdd(
+ dest: *mut TEE_BigInt,
+ op1: *const TEE_BigInt,
+ op2: *const TEE_BigInt,
+ ) -> c_void;
+ pub fn TEE_BigIntSub(
+ dest: *mut TEE_BigInt,
+ op1: *const TEE_BigInt,
+ op2: *const TEE_BigInt,
+ ) -> c_void;
+ pub fn TEE_BigIntNeg(dest: *mut TEE_BigInt, op: *const TEE_BigInt) -> c_void;
+ pub fn TEE_BigIntMul(
+ dest: *mut TEE_BigInt,
+ op1: *const TEE_BigInt,
+ op2: *const TEE_BigInt,
+ ) -> c_void;
+ pub fn TEE_BigIntSquare(dest: *mut TEE_BigInt, op: *const TEE_BigInt) -> c_void;
+ pub fn TEE_BigIntDiv(
+ dest_q: *mut TEE_BigInt,
+ dest_r: *mut TEE_BigInt,
+ op1: *const TEE_BigInt,
+ op2: *const TEE_BigInt,
+ ) -> c_void;
+
+ // TEE Arithmetical API - Modular arithmetic operations
+
+ pub fn TEE_BigIntMod(
+ dest: *mut TEE_BigInt,
+ op: *const TEE_BigInt,
+ n: *const TEE_BigInt,
+ ) -> c_void;
+ pub fn TEE_BigIntAddMod(
+ dest: *mut TEE_BigInt,
+ op1: *const TEE_BigInt,
+ op2: *const TEE_BigInt,
+ n: *const TEE_BigInt,
+ ) -> c_void;
+ pub fn TEE_BigIntSubMod(
+ dest: *mut TEE_BigInt,
+ op1: *const TEE_BigInt,
+ op2: *const TEE_BigInt,
+ n: *const TEE_BigInt,
+ ) -> c_void;
+ pub fn TEE_BigIntMulMod(
+ dest: *mut TEE_BigInt,
+ op1: *const TEE_BigInt,
+ op2: *const TEE_BigInt,
+ n: *const TEE_BigInt,
+ ) -> c_void;
+ pub fn TEE_BigIntSquareMod(
+ dest: *mut TEE_BigInt,
+ op: *const TEE_BigInt,
+ n: *const TEE_BigInt,
+ ) -> c_void;
+ pub fn TEE_BigIntInvMod(
+ dest: *mut TEE_BigInt,
+ op: *const TEE_BigInt,
+ n: *const TEE_BigInt,
+ ) -> c_void;
+ pub fn TEE_BigIntExpMod(
+ dest: *mut TEE_BigInt,
+ op1: *const TEE_BigInt,
+ op2: *const TEE_BigInt,
+ n: *const TEE_BigInt,
+ context: *const TEE_BigIntFMMContext,
+ ) -> TEE_Result;
+
+ // TEE Arithmetical API - Other arithmetic operations
+
+ pub fn TEE_BigIntRelativePrime(op1: *const TEE_BigInt, op2: *const TEE_BigInt) -> bool;
+ pub fn TEE_BigIntComputeExtendedGcd(
+ gcd: *mut TEE_BigInt,
+ u: *mut TEE_BigInt,
+ v: *mut TEE_BigInt,
+ op1: *const TEE_BigInt,
+ op2: *const TEE_BigInt,
+ ) -> c_void;
+ pub fn TEE_BigIntIsProbablePrime(op: *const TEE_BigInt, confidenceLevel: u32) -> i32;
+
+ // TEE Arithmetical API - Fast modular multiplication operations
+
+ pub fn TEE_BigIntConvertToFMM(
+ dest: *mut TEE_BigIntFMM,
+ src: *const TEE_BigInt,
+ n: *const TEE_BigInt,
+ context: *const TEE_BigIntFMMContext,
+ ) -> c_void;
+ pub fn TEE_BigIntConvertFromFMM(
+ dest: *mut TEE_BigInt,
+ src: *const TEE_BigIntFMM,
+ n: *const TEE_BigInt,
+ context: *const TEE_BigIntFMMContext,
+ ) -> c_void;
+ pub fn TEE_BigIntFMMConvertToBigInt(
+ dest: *mut TEE_BigInt,
+ src: *const TEE_BigIntFMM,
+ n: *const TEE_BigInt,
+ context: *const TEE_BigIntFMMContext,
+ ) -> c_void;
+ pub fn TEE_BigIntComputeFMM(
+ dest: *mut TEE_BigIntFMM,
+ op1: *const TEE_BigIntFMM,
+ op2: *const TEE_BigIntFMM,
+ n: *const TEE_BigInt,
+ context: *const TEE_BigIntFMMContext,
+ ) -> c_void;
+ }
}
diff --git a/optee-utee/optee-utee-sys/src/tee_internal_api_extensions.rs b/optee-utee/optee-utee-sys/src/tee_internal_api_extensions.rs
index 90846b1..c1397d9 100644
--- a/optee-utee/optee-utee-sys/src/tee_internal_api_extensions.rs
+++ b/optee-utee/optee-utee-sys/src/tee_internal_api_extensions.rs
@@ -15,25 +15,28 @@
// specific language governing permissions and limitations
// under the License.
-use super::*;
-use core::ffi::*;
+#[cfg_attr(feature = "mock", mockall::automock)]
+pub mod api {
+ use crate::*;
+ use core::ffi::*;
-extern "C" {
- /// tee_invoke_supp_plugin() - invoke a tee-supplicant's plugin
- /// @uuid: uuid of the plugin
- /// @cmd: command for the plugin
- /// @sub_cmd: subcommand for the plugin
- /// @buf: data [for/from] the plugin [in/out]
- /// @len: length of the input buf
- /// @outlen: pointer to length of the output data (if they will be used)
- /// Return TEE_SUCCESS on success or TEE_ERRROR_* on failure.
- pub fn tee_invoke_supp_plugin(
- uuid: *const TEE_UUID,
- cmd: u32,
- sub_cmd: u32,
- buf: *mut c_void,
- len: usize,
- outlen: *mut usize,
- ) -> TEE_Result;
+ extern "C" {
+ /// tee_invoke_supp_plugin() - invoke a tee-supplicant's plugin
+ /// @uuid: uuid of the plugin
+ /// @cmd: command for the plugin
+ /// @sub_cmd: subcommand for the plugin
+ /// @buf: data [for/from] the plugin [in/out]
+ /// @len: length of the input buf
+ /// @outlen: pointer to length of the output data (if they will be used)
+ /// Return TEE_SUCCESS on success or TEE_ERRROR_* on failure.
+ pub fn tee_invoke_supp_plugin(
+ uuid: *const TEE_UUID,
+ cmd: u32,
+ sub_cmd: u32,
+ buf: *mut c_void,
+ len: usize,
+ outlen: *mut usize,
+ ) -> TEE_Result;
+ }
}
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@teaclave.apache.org
For additional commands, e-mail: commits-help@teaclave.apache.org