You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@teaclave.apache.org by yu...@apache.org on 2023/03/09 13:57:39 UTC
[incubator-teaclave-trustzone-sdk] 01/02: Update interfaces for GP 1.3.1
This is an automated email from the ASF dual-hosted git repository.
yuanz pushed a commit to branch GP-1.3.1
in repository https://gitbox.apache.org/repos/asf/incubator-teaclave-trustzone-sdk.git
commit 43dd44d4dad3e8e2c868fcd533750b5b9c2e7277
Author: Yuan Zhuang <de...@foxmail.com>
AuthorDate: Thu Mar 9 13:53:13 2023 +0000
Update interfaces for GP 1.3.1
---
examples/serde-rs/ta/src/main.rs | 2 +-
optee-utee/optee-utee-sys/src/tee_api.rs | 145 +++++++++++++----------
optee-utee/optee-utee-sys/src/tee_api_defines.rs | 29 ++++-
optee-utee/optee-utee-sys/src/tee_api_types.rs | 9 +-
optee-utee/src/arithmetical.rs | 26 ++--
optee-utee/src/crypto_op.rs | 86 +++++++-------
optee-utee/src/object.rs | 30 ++---
optee-utee/src/parameter.rs | 2 +-
8 files changed, 185 insertions(+), 144 deletions(-)
diff --git a/examples/serde-rs/ta/src/main.rs b/examples/serde-rs/ta/src/main.rs
index dc9b8ac..e025e84 100644
--- a/examples/serde-rs/ta/src/main.rs
+++ b/examples/serde-rs/ta/src/main.rs
@@ -67,7 +67,7 @@ fn invoke_command(cmd_id: u32, params: &mut Parameters) -> Result<()> {
let len = buffer.write(serialized.as_bytes()).unwrap();
// update size of output buffer
- unsafe { (*p.raw()).size = len as u32 };
+ unsafe { (*p.raw()).size = len};
// Prints serialized = {"x":1,"y":2}
trace_println!("serialized = {}", serialized);
diff --git a/optee-utee/optee-utee-sys/src/tee_api.rs b/optee-utee/optee-utee-sys/src/tee_api.rs
index 4b08471..2ef3e34 100644
--- a/optee-utee/optee-utee-sys/src/tee_api.rs
+++ b/optee-utee/optee-utee-sys/src/tee_api.rs
@@ -25,7 +25,7 @@ extern "C" {
propsetOrEnumerator: TEE_PropSetHandle,
name: *const c_char,
valueBuffer: *mut c_char,
- valueBufferLen: *mut u32,
+ valueBufferLen: *mut usize,
) -> TEE_Result;
pub fn TEE_GetPropertyAsBool(
propsetOrEnumerator: TEE_PropSetHandle,
@@ -37,11 +37,16 @@ extern "C" {
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 u32,
+ valueBufferLen: *mut usize,
) -> TEE_Result;
pub fn TEE_GetPropertyAsUUID(
propsetOrEnumerator: TEE_PropSetHandle,
@@ -60,7 +65,7 @@ extern "C" {
pub fn TEE_GetPropertyName(
enumerator: TEE_PropSetHandle,
nameBuffer: *mut c_void,
- nameBufferLen: *mut u32,
+ nameBufferLen: *mut usize,
) -> TEE_Result;
pub fn TEE_GetNextProperty(enumerator: TEE_PropSetHandle) -> TEE_Result;
@@ -99,20 +104,20 @@ extern "C" {
pub fn TEE_CheckMemoryAccessRights(
accessFlags: u32,
buffer: *mut c_void,
- size: u32,
+ size: usize,
) -> TEE_Result;
pub fn TEE_SetInstanceData(instanceData: *const c_void);
pub fn TEE_GetInstanceData() -> *const c_void;
- pub fn TEE_Malloc(size: u32, hint: u32) -> *mut c_void;
- pub fn TEE_Realloc(buffer: *mut c_void, newSize: u32) -> *mut 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: u32) -> *mut c_void;
+ pub fn TEE_MemMove(dest: *mut c_void, src: *const c_void, size: usize) -> *mut c_void;
pub fn TEE_MemCompare(
buffer1: *const c_void,
buffer2: *const c_void,
- size: u32,
+ size: usize,
) -> i32;
- pub fn TEE_MemFill(buff: *mut c_void, x: u32, size: u32) -> *mut c_void;
+ pub fn TEE_MemFill(buff: *mut c_void, x: u32, size: usize) -> *mut c_void;
// Data and Key Storage API - Generic Object Functions
@@ -127,7 +132,7 @@ extern "C" {
object: TEE_ObjectHandle,
attributeID: u32,
buffer: *mut c_void,
- size: *mut u32,
+ size: *mut usize,
) -> TEE_Result;
pub fn TEE_GetObjectValueAttribute(
object: TEE_ObjectHandle,
@@ -141,7 +146,7 @@ extern "C" {
pub fn TEE_AllocateTransientObject(
objectType: TEE_ObjectType,
- maxKeySize: u32,
+ maxObjectSize: u32,
object: *mut TEE_ObjectHandle,
) -> TEE_Result;
pub fn TEE_FreeTransientObject(object: TEE_ObjectHandle) -> c_void;
@@ -155,7 +160,7 @@ extern "C" {
attr: *mut TEE_Attribute,
attributeID: u32,
buffer: *const c_void,
- length: u32,
+ length: usize,
) -> c_void;
pub fn TEE_InitValueAttribute(
attr: *mut TEE_Attribute,
@@ -183,18 +188,18 @@ extern "C" {
pub fn TEE_OpenPersistentObject(
storageID: u32,
objectID: *const c_void,
- objectIDLen: u32,
+ objectIDLen: usize,
flags: u32,
object: *mut TEE_ObjectHandle,
) -> TEE_Result;
pub fn TEE_CreatePersistentObject(
storageID: u32,
objectID: *const c_void,
- objectIDLen: u32,
+ objectIDLen: usize,
flags: u32,
attributes: TEE_ObjectHandle,
initialData: *const c_void,
- initialDataLen: u32,
+ initialDataLen: usize,
object: *mut TEE_ObjectHandle,
) -> TEE_Result;
pub fn TEE_CloseAndDeletePersistentObject(object: TEE_ObjectHandle);
@@ -202,7 +207,7 @@ extern "C" {
pub fn TEE_RenamePersistentObject(
object: TEE_ObjectHandle,
newObjectID: *const c_void,
- newObjectIDLen: u32,
+ newObjectIDLen: usize,
) -> TEE_Result;
pub fn TEE_AllocatePersistentObjectEnumerator(
objectEnumerator: *mut TEE_ObjectEnumHandle,
@@ -217,7 +222,7 @@ extern "C" {
objectEnumerator: TEE_ObjectEnumHandle,
objectInfo: *mut TEE_ObjectInfo,
objectID: *mut c_void,
- objectIDLen: *mut u32,
+ objectIDLen: *mut usize,
) -> TEE_Result;
// Data and Key Storage API - Data Stream Access Functions
@@ -225,18 +230,18 @@ extern "C" {
pub fn TEE_ReadObjectData(
object: TEE_ObjectHandle,
buffer: *mut c_void,
- fsize: u32,
- count: *mut u32,
+ size: usize,
+ count: *mut usize,
) -> TEE_Result;
pub fn TEE_WriteObjectData(
object: TEE_ObjectHandle,
buffer: *const c_void,
- fsize: u32,
+ size: usize,
) -> TEE_Result;
- pub fn TEE_TruncateObjectData(object: TEE_ObjectHandle, size: u32) -> TEE_Result;
+ pub fn TEE_TruncateObjectData(object: TEE_ObjectHandle, size: usize) -> TEE_Result;
pub fn TEE_SeekObjectData(
object: TEE_ObjectHandle,
- offset: i32,
+ offset: i32, //intmax_t
whence: TEE_Whence,
) -> TEE_Result;
@@ -256,7 +261,7 @@ extern "C" {
pub fn TEE_GetOperationInfoMultiple(
operation: TEE_OperationHandle,
operationInfoMultiple: *mut TEE_OperationInfoMultiple,
- operationSize: *mut u32,
+ operationSize: *mut usize,
) -> TEE_Result;
pub fn TEE_ResetOperation(operation: TEE_OperationHandle) -> c_void;
pub fn TEE_SetOperationKey(operation: TEE_OperationHandle, key: TEE_ObjectHandle)
@@ -280,14 +285,14 @@ extern "C" {
pub fn TEE_DigestUpdate(
operation: TEE_OperationHandle,
chunk: *const c_void,
- chunkSize: u32,
+ chunkSize: usize,
) -> c_void;
pub fn TEE_DigestDoFinal(
operation: TEE_OperationHandle,
chunk: *const c_void,
- chunkLen: u32,
+ chunkLen: usize,
hash: *mut c_void,
- hashLen: *mut u32,
+ hashLen: *mut usize,
) -> TEE_Result;
// Cryptographic Operations API - Symmetric Cipher Functions
@@ -295,21 +300,21 @@ extern "C" {
pub fn TEE_CipherInit(
operation: TEE_OperationHandle,
IV: *const c_void,
- IVLen: u32,
+ IVLen: usize,
) -> c_void;
pub fn TEE_CipherUpdate(
operation: TEE_OperationHandle,
srcData: *const c_void,
- srcLen: u32,
+ srcLen: usize,
destData: *mut c_void,
- destLen: *mut u32,
+ destLen: *mut usize,
) -> TEE_Result;
pub fn TEE_CipherDoFinal(
operation: TEE_OperationHandle,
srcData: *const c_void,
- srcLen: u32,
+ srcLen: usize,
destData: *mut c_void,
- destLen: *mut u32,
+ destLen: *mut usize,
) -> TEE_Result;
// Cryptographic Operations API - MAC Functions
@@ -317,26 +322,26 @@ extern "C" {
pub fn TEE_MACInit(
operation: TEE_OperationHandle,
IV: *const c_void,
- IVLen: u32,
+ IVLen: usize,
) -> c_void;
pub fn TEE_MACUpdate(
operation: TEE_OperationHandle,
chunk: *const c_void,
- chunkSize: u32,
+ chunkSize: usize,
) -> c_void;
pub fn TEE_MACComputeFinal(
operation: TEE_OperationHandle,
message: *const c_void,
- messageLen: u32,
+ messageLen: usize,
mac: *mut c_void,
- macLen: *mut u32,
+ macLen: *mut usize,
) -> TEE_Result;
pub fn TEE_MACCompareFinal(
operation: TEE_OperationHandle,
message: *const c_void,
- messageLen: u32,
+ messageLen: usize,
mac: *const c_void,
- macLen: u32,
+ macLen: usize,
) -> TEE_Result;
// Cryptographic Operations API - Authenticated Encryption Functions
@@ -344,40 +349,40 @@ extern "C" {
pub fn TEE_AEInit(
operation: TEE_OperationHandle,
nonce: *const c_void,
- nonceLen: u32,
+ nonceLen: usize,
tagLen: u32,
- AADLen: u32,
- payloadLen: u32,
+ AADLen: usize,
+ payloadLen: usize,
) -> TEE_Result;
pub fn TEE_AEUpdateAAD(
operation: TEE_OperationHandle,
AADdata: *const c_void,
- AADdataLen: u32,
+ AADdataLen: usize,
) -> c_void;
pub fn TEE_AEUpdate(
operation: TEE_OperationHandle,
srcData: *const c_void,
- srcLen: u32,
+ srcLen: usize,
destData: *mut c_void,
- destLen: *mut u32,
+ destLen: *mut usize,
) -> TEE_Result;
pub fn TEE_AEEncryptFinal(
operation: TEE_OperationHandle,
srcData: *const c_void,
- srcLen: u32,
+ srcLen: usize,
destData: *mut c_void,
- destLen: *mut u32,
+ destLen: *mut usize,
tag: *mut c_void,
- tagLen: *mut u32,
+ tagLen: *mut usize,
) -> TEE_Result;
pub fn TEE_AEDecryptFinal(
operation: TEE_OperationHandle,
srcData: *const c_void,
- srcLen: u32,
+ srcLen: usize,
destData: *mut c_void,
- destLen: *mut u32,
+ destLen: *mut usize,
tag: *mut c_void,
- tagLen: u32,
+ tagLen: usize,
) -> TEE_Result;
// Cryptographic Operations API - Asymmetric Functions
@@ -387,36 +392,36 @@ extern "C" {
params: *const TEE_Attribute,
paramCount: u32,
srcData: *const c_void,
- srcLen: u32,
+ srcLen: usize,
destData: *mut c_void,
- destLen: *mut u32,
+ destLen: *mut usize,
) -> TEE_Result;
pub fn TEE_AsymmetricDecrypt(
operation: TEE_OperationHandle,
params: *const TEE_Attribute,
paramCount: u32,
srcData: *const c_void,
- srcLen: u32,
+ srcLen: usize,
destData: *mut c_void,
- destLen: *mut u32,
+ destLen: *mut usize,
) -> TEE_Result;
pub fn TEE_AsymmetricSignDigest(
operation: TEE_OperationHandle,
params: *const TEE_Attribute,
paramCount: u32,
digest: *const c_void,
- digestLen: u32,
+ digestLen: usize,
signature: *mut c_void,
- signatureLen: *mut u32,
+ signatureLen: *mut usize,
) -> TEE_Result;
pub fn TEE_AsymmetricVerifyDigest(
operation: TEE_OperationHandle,
params: *const TEE_Attribute,
paramCount: u32,
digest: *const c_void,
- digestLen: u32,
+ digestLen: usize,
signature: *const c_void,
- signatureLen: u32,
+ signatureLen: usize,
) -> TEE_Result;
// Cryptographic Operations API - Key Derivation Functions
@@ -430,7 +435,7 @@ extern "C" {
// Cryptographic Operations API - Random Number Generation Functions
- pub fn TEE_GenerateRandom(randomBuffer: *mut c_void, randomBufferLen: u32) -> c_void;
+ pub fn TEE_GenerateRandom(randomBuffer: *mut c_void, randomBufferLen: usize) -> c_void;
// Date & Time API
@@ -442,30 +447,30 @@ extern "C" {
// TEE Arithmetical API - Memory allocation and size of objects
- pub fn TEE_BigIntFMMSizeInU32(modulusSizeInBits: u32) -> u32;
- pub fn TEE_BigIntFMMContextSizeInU32(modulusSizeInBits: u32) -> u32;
+ 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: u32) -> c_void;
+ pub fn TEE_BigIntInit(bigInt: *mut TEE_BigInt, len: usize) -> c_void;
pub fn TEE_BigIntInitFMMContext(
context: *mut TEE_BigIntFMMContext,
- len: u32,
+ len: usize,
modulus: *const TEE_BigInt,
) -> c_void;
- pub fn TEE_BigIntInitFMM(bigIntFMM: *mut TEE_BigIntFMM, len: u32) -> 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: u32,
+ bufferLen: usize,
sign: i32,
) -> TEE_Result;
pub fn TEE_BigIntConvertToOctetString(
buffer: *mut u8,
- bufferLen: *mut u32,
+ bufferLen: *mut usize,
bigInt: *const TEE_BigInt,
) -> TEE_Result;
pub fn TEE_BigIntConvertFromS32(dest: *mut TEE_BigInt, shortVal: i32) -> c_void;
@@ -482,6 +487,9 @@ extern "C" {
) -> 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: *const 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,
@@ -541,6 +549,13 @@ extern "C" {
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
diff --git a/optee-utee/optee-utee-sys/src/tee_api_defines.rs b/optee-utee/optee-utee-sys/src/tee_api_defines.rs
index 171f162..3de3e12 100644
--- a/optee-utee/optee-utee-sys/src/tee_api_defines.rs
+++ b/optee-utee/optee-utee-sys/src/tee_api_defines.rs
@@ -18,7 +18,9 @@
use super::tee_api_types::*;
use std::ptr::null;
-pub const TEE_INT_CORE_API_SPEC_VERSION: u32 = 0x0000000A;
+pub const TEE_CORE_API_MAJOR_VERSION: u32 = 0x00000001;
+pub const TEE_CORE_API_MINOR_VERSION: u32 = 0x00000003;
+pub const TEE_CORE_API_MAINTENANCE_VERSION: u32 = 0x00000001;
pub const TEE_HANDLE_NULL: *const u32 = null();
@@ -30,6 +32,7 @@ pub const TEE_ERROR_CORRUPT_OBJECT: u32 = 0xF0100001;
pub const TEE_ERROR_CORRUPT_OBJECT_2: u32 = 0xF0100002;
pub const TEE_ERROR_STORAGE_NOT_AVAILABLE: u32 = 0xF0100003;
pub const TEE_ERROR_STORAGE_NOT_AVAILABLE_2: u32 = 0xF0100004;
+pub const TEE_ERROR_UNSUPPORTED_VERSION: u32 = 0xF0100005;
pub const TEE_ERROR_CIPHERTEXT_INVALID: u32 = 0xF0100006;
pub const TEE_ERROR_GENERIC: u32 = 0xFFFF0000;
pub const TEE_ERROR_ACCESS_DENIED: u32 = 0xFFFF0001;
@@ -49,6 +52,7 @@ pub const TEE_ERROR_COMMUNICATION: u32 = 0xFFFF000E;
pub const TEE_ERROR_SECURITY: u32 = 0xFFFF000F;
pub const TEE_ERROR_SHORT_BUFFER: u32 = 0xFFFF0010;
pub const TEE_ERROR_EXTERNAL_CANCEL: u32 = 0xFFFF0011;
+pub const TEE_ERROR_TIMEOUT: u32 = 0xFFFF3001;
pub const TEE_ERROR_OVERFLOW: u32 = 0xFFFF300F;
pub const TEE_ERROR_TARGET_DEAD: u32 = 0xFFFF3024;
pub const TEE_ERROR_STORAGE_NO_SPACE: u32 = 0xFFFF3041;
@@ -91,8 +95,26 @@ pub const TEE_MEMORY_ACCESS_READ: u32 = 0x00000001;
pub const TEE_MEMORY_ACCESS_WRITE: u32 = 0x00000002;
pub const TEE_MEMORY_ACCESS_ANY_OWNER: u32 = 0x00000004;
-// Memory Management Constant
+// Memory Management Constants
pub const TEE_MALLOC_FILL_ZERO: u32 = 0x00000000;
+pub const TEE_MALLOC_NO_FILL: u32 = 0x00000001;
+pub const TEE_MALLOC_NO_SHARE: u32 = 0x00000002;
+
+// TEE_Whence Constants
+pub const TEE_DATA_SEEK_SET: u32 = 0x00000000;
+pub const TEE_DATA_SEEK_CUR: u32 = 0x00000001;
+pub const TEE_DATA_SEEK_END: u32 = 0x00000002;
+pub const TEE_WHENCE_ILLEGAL_VALUE: u32 = 0x7FFFFFFF;
+
+// TEE_OperationMode Values
+pub const TEE_MODE_ENCRYPT: u32 = 0x00000000;
+pub const TEE_MODE_DECRYPT: u32 = 0x00000001;
+pub const TEE_MODE_SIGN: u32 = 0x00000002;
+pub const TEE_MODE_VERIFY: u32 = 0x00000003;
+pub const TEE_MODE_MAC: u32 = 0x00000004;
+pub const TEE_MODE_DIGEST: u32 = 0x00000005;
+pub const TEE_MODE_DERIVE: u32 = 0x00000006;
+pub const TEE_MODE_ILLEGAL_VALUE: u32 = 0x7FFFFFFF;
// Other constants
pub const TEE_STORAGE_PRIVATE: u32 = 0x00000001;
@@ -116,6 +138,7 @@ pub const TEE_HANDLE_FLAG_PERSISTENT: u32 = 0x00010000;
pub const TEE_HANDLE_FLAG_INITIALIZED: u32 = 0x00020000;
pub const TEE_HANDLE_FLAG_KEY_SET: u32 = 0x00040000;
pub const TEE_HANDLE_FLAG_EXPECT_TWO_KEYS: u32 = 0x00080000;
+pub const TEE_HANDLE_FLAG_EXTRACTING: u32 = 0x00100000;
pub const TEE_OPERATION_CIPHER: u32 = 1;
pub const TEE_OPERATION_MAC: u32 = 3;
pub const TEE_OPERATION_AE: u32 = 4;
@@ -125,7 +148,9 @@ pub const TEE_OPERATION_ASYMMETRIC_SIGNATURE: u32 = 7;
pub const TEE_OPERATION_KEY_DERIVATION: u32 = 8;
pub const TEE_OPERATION_STATE_INITIAL: u32 = 0x00000000;
pub const TEE_OPERATION_STATE_ACTIVE: u32 = 0x00000001;
+pub const TEE_OPERATION_STATE_EXTRACTING: u32 = 0x00000002;
+// below constants are not updated to 1.3.1
// Algorithm Identifiers
pub const TEE_ALG_AES_ECB_NOPAD: u32 = 0x10000010;
pub const TEE_ALG_AES_CBC_NOPAD: u32 = 0x10000110;
diff --git a/optee-utee/optee-utee-sys/src/tee_api_types.rs b/optee-utee/optee-utee-sys/src/tee_api_types.rs
index f349dea..140cdbf 100644
--- a/optee-utee/optee-utee-sys/src/tee_api_types.rs
+++ b/optee-utee/optee-utee-sys/src/tee_api_types.rs
@@ -40,7 +40,7 @@ pub struct TEE_Identity {
#[repr(C)]
pub struct Memref {
pub buffer: *mut c_void,
- pub size: u32,
+ pub size: usize,
}
#[derive(Copy, Clone)]
@@ -94,15 +94,15 @@ pub type TEE_ObjectType = u32;
#[repr(C)]
pub struct TEE_ObjectInfo {
pub objectType: u32,
- // remove to 2 unions here, only keep 1.1.1 spec version
pub objectSize: u32,
pub maxObjectSize: u32,
pub objectUsage: u32,
- pub dataSize: u32,
- pub dataPosition: u32,
+ pub dataSize: usize,
+ pub dataPosition: usize,
pub handleFlags: u32,
}
+// Reserve the GP 1.1.1 type
#[repr(C)]
pub enum TEE_Whence {
TEE_DATA_SEEK_SET,
@@ -126,6 +126,7 @@ pub struct TEE_Attribute {
// Cryptographic Operations API
+// Reserve the GP 1.1.1 type
#[repr(C)]
pub enum TEE_OperationMode {
TEE_MODE_ENCRYPT,
diff --git a/optee-utee/src/arithmetical.rs b/optee-utee/src/arithmetical.rs
index 451f186..13bbf29 100644
--- a/optee-utee/src/arithmetical.rs
+++ b/optee-utee/src/arithmetical.rs
@@ -38,7 +38,7 @@ impl BigInt {
pub fn new(bits: u32) -> Self {
let size: usize = Self::size_in_u32(bits) as usize;
let mut tmp_vec: Vec<BigIntUnit> = vec![0; size];
- unsafe { raw::TEE_BigIntInit(tmp_vec.as_mut_ptr(), size as u32) };
+ unsafe { raw::TEE_BigIntInit(tmp_vec.as_mut_ptr(), size as usize) };
Self(tmp_vec)
}
@@ -47,7 +47,7 @@ impl BigInt {
raw::TEE_BigIntConvertFromOctetString(
self.0.as_mut_ptr(),
buffer.as_ptr(),
- buffer.len() as u32,
+ buffer.len() as usize,
sign,
)
} {
@@ -57,17 +57,17 @@ impl BigInt {
}
pub fn convert_to_octet_string(&self) -> Result<Vec<u8>> {
- let mut buffer_size: u32 = (self.0.len() as u32 - 2) * 4;
- let mut tmp_vec = vec![0u8; buffer_size as usize];
+ let mut buffer_size: usize = (self.0.len() - 2) * 4;
+ let mut tmp_vec = vec![0u8; buffer_size];
match unsafe {
raw::TEE_BigIntConvertToOctetString(
tmp_vec.as_mut_ptr(),
- &mut buffer_size as _,
+ &mut buffer_size,
self.data_ptr(),
)
} {
raw::TEE_SUCCESS => {
- tmp_vec.truncate(buffer_size as usize);
+ tmp_vec.truncate(buffer_size);
return Ok(tmp_vec);
}
code => Err(Error::from_raw_error(code)),
@@ -264,16 +264,16 @@ impl BigIntFMMContext {
self.0.as_ptr()
}
- fn size_in_u32(size: u32) -> u32 {
+ fn size_in_u32(size: usize) -> usize {
unsafe { raw::TEE_BigIntFMMContextSizeInU32(size) }
}
// Globalplatform define FMMContext1 here while OP-TEE does not update yet
pub fn new(bits: u32, modulus: BigInt) -> Result<Self> {
- let size: usize = Self::size_in_u32(bits) as usize;
+ let size: usize = Self::size_in_u32(bits as usize) as usize;
let mut tmp_vec: Vec<BigIntFMMContextUnit> = vec![0; size];
unsafe {
- raw::TEE_BigIntInitFMMContext(tmp_vec.as_mut_ptr(), size as u32, modulus.data_ptr())
+ raw::TEE_BigIntInitFMMContext(tmp_vec.as_mut_ptr(), size, modulus.data_ptr())
};
Ok(Self(tmp_vec))
}
@@ -286,14 +286,14 @@ impl BigIntFMM {
self.0.as_ptr()
}
- fn size_in_u32(size: u32) -> u32 {
+ fn size_in_u32(size: usize) -> usize {
unsafe { raw::TEE_BigIntFMMSizeInU32(size) }
}
pub fn new(bits: u32) -> Self {
- let size: usize = Self::size_in_u32(bits) as usize;
+ let size: usize = Self::size_in_u32(bits as usize) as usize;
let mut tmp_vec: Vec<BigIntFMMUnit> = vec![0; size];
- unsafe { raw::TEE_BigIntInitFMM(tmp_vec.as_mut_ptr(), size as u32) };
+ unsafe { raw::TEE_BigIntInitFMM(tmp_vec.as_mut_ptr(), size) };
Self(tmp_vec)
}
@@ -328,7 +328,7 @@ impl BigIntFMM {
};
}
}
-//OP-TEE does not implement function:
+//OP-TEE in version GP 1.1.1 does not implement function:
//TEE_BigIntSetBit
//TEE_BigIntAssign
//TEE_BigIntAbs
diff --git a/optee-utee/src/crypto_op.rs b/optee-utee/src/crypto_op.rs
index a53a49a..854b902 100644
--- a/optee-utee/src/crypto_op.rs
+++ b/optee-utee/src/crypto_op.rs
@@ -194,13 +194,13 @@ impl OperationHandle {
}
fn info_multiple(&self, info_buf: &mut [u8]) -> Result<OperationInfoMultiple> {
- let mut tmp_size: u32 = 0;
+ let mut tmp_size: usize = 0;
match unsafe {
raw::TEE_GetOperationInfoMultiple(self.handle(), info_buf.as_ptr() as _, &mut tmp_size)
} {
raw::TEE_SUCCESS => Ok(OperationInfoMultiple::from_raw(
info_buf.as_ptr() as _,
- tmp_size as usize,
+ tmp_size,
)),
code => Err(Error::from_raw_error(code)),
}
@@ -274,7 +274,7 @@ impl Digest {
/// 4) If the Implementation detects any other error.
pub fn update(&self, chunk: &[u8]) {
unsafe {
- raw::TEE_DigestUpdate(self.handle(), chunk.as_ptr() as _, chunk.len() as u32);
+ raw::TEE_DigestUpdate(self.handle(), chunk.as_ptr() as _, chunk.len());
}
}
@@ -320,17 +320,17 @@ impl Digest {
/// 4) If the Implementation detects any other error.
//hash size is dynamic changed so we returned it's updated size
pub fn do_final(&self, chunk: &[u8], hash: &mut [u8]) -> Result<usize> {
- let mut hash_size: u32 = hash.len() as u32;
+ let mut hash_size: usize = hash.len();
match unsafe {
raw::TEE_DigestDoFinal(
self.handle(),
chunk.as_ptr() as _,
- chunk.len() as u32,
+ chunk.len(),
hash.as_mut_ptr() as _,
&mut hash_size,
)
} {
- raw::TEE_SUCCESS => return Ok(hash_size as usize),
+ raw::TEE_SUCCESS => return Ok(hash_size),
code => Err(Error::from_raw_error(code)),
}
}
@@ -535,7 +535,7 @@ impl Cipher {
/// 4) Hardware or cryptographic algorithm failure.
/// 5) If the Implementation detects any other error.
pub fn init(&self, iv: &[u8]) {
- unsafe { raw::TEE_CipherInit(self.handle(), iv.as_ptr() as _, iv.len() as u32) };
+ unsafe { raw::TEE_CipherInit(self.handle(), iv.as_ptr() as _, iv.len()) };
}
/// Encrypt or decrypt the source data.
@@ -589,12 +589,12 @@ impl Cipher {
/// 3) Hardware or cryptographic algorithm failure.
/// 4) If the Implementation detects any other error.
pub fn update(&self, src: &[u8], dest: &mut [u8]) -> Result<usize> {
- let mut dest_size: u32 = dest.len() as u32;
+ let mut dest_size: usize = dest.len();
match unsafe {
raw::TEE_CipherUpdate(
self.handle(),
src.as_ptr() as _,
- src.len() as u32,
+ src.len(),
dest.as_mut_ptr() as _,
&mut dest_size,
)
@@ -625,12 +625,12 @@ impl Cipher {
/// 3) Hardware or cryptographic algorithm failure.
/// 4) If the Implementation detects any other error.
pub fn do_final(&self, src: &[u8], dest: &mut [u8]) -> Result<usize> {
- let mut dest_size: u32 = dest.len() as u32;
+ let mut dest_size: usize = dest.len();
match unsafe {
raw::TEE_CipherDoFinal(
self.handle(),
src.as_ptr() as _,
- src.len() as u32,
+ src.len(),
dest.as_mut_ptr() as _,
&mut dest_size,
)
@@ -762,7 +762,7 @@ impl Mac {
/// 4) Hardware or cryptographic algorithm failure.
/// 5) If the Implementation detects any other error.
pub fn init(&self, iv: &[u8]) {
- unsafe { raw::TEE_MACInit(self.handle(), iv.as_ptr() as _, iv.len() as u32) };
+ unsafe { raw::TEE_MACInit(self.handle(), iv.as_ptr() as _, iv.len()) };
}
/// Accumulate data for a MAC calculation.
@@ -784,7 +784,7 @@ impl Mac {
/// 4) Hardware or cryptographic algorithm failure.
/// 5) If the Implementation detects any other error.
pub fn update(&self, chunk: &[u8]) {
- unsafe { raw::TEE_MACUpdate(self.handle(), chunk.as_ptr() as _, chunk.len() as u32) };
+ unsafe { raw::TEE_MACUpdate(self.handle(), chunk.as_ptr() as _, chunk.len()) };
}
/// Finalize the MAC operation with a last chunk of message, and computes the MAC.
/// Afterwards the operation handle can be reused or re-initialized with a new key.
@@ -833,17 +833,17 @@ impl Mac {
/// 4) Hardware or cryptographic algorithm failure.
/// 5) If the Implementation detects any other error.
pub fn compute_final(&self, message: &[u8], mac: &mut [u8]) -> Result<usize> {
- let mut mac_size: u32 = mac.len() as u32;
+ let mut mac_size: usize = mac.len();
match unsafe {
raw::TEE_MACComputeFinal(
self.handle(),
message.as_ptr() as _,
- message.len() as u32,
+ message.len(),
mac.as_mut_ptr() as _,
&mut mac_size,
)
} {
- raw::TEE_SUCCESS => Ok(mac_size as usize),
+ raw::TEE_SUCCESS => Ok(mac_size),
code => Err(Error::from_raw_error(code)),
}
}
@@ -873,9 +873,9 @@ impl Mac {
raw::TEE_MACCompareFinal(
self.handle(),
message.as_ptr() as _,
- message.len() as u32,
+ message.len(),
mac.as_ptr() as _,
- mac.len() as u32,
+ mac.len(),
)
} {
raw::TEE_SUCCESS => Ok(()),
@@ -967,10 +967,10 @@ impl AE {
raw::TEE_AEInit(
self.handle(),
nonce.as_ptr() as _,
- nonce.len() as u32,
+ nonce.len(),
tag_len as u32,
- aad_len as u32,
- pay_load_len as u32,
+ aad_len,
+ pay_load_len,
)
} {
raw::TEE_SUCCESS => return Ok(()),
@@ -996,7 +996,7 @@ impl AE {
/// 6) If the Implementation detects any other error.
pub fn update_aad(&self, aad_data: &[u8]) {
unsafe {
- raw::TEE_AEUpdateAAD(self.handle(), aad_data.as_ptr() as _, aad_data.len() as u32)
+ raw::TEE_AEUpdateAAD(self.handle(), aad_data.as_ptr() as _, aad_data.len())
};
}
@@ -1024,18 +1024,18 @@ impl AE {
/// 5) Hardware or cryptographic algorithm failure.
/// 6) If the Implementation detects any other error.
pub fn update(&self, src: &[u8], dest: &mut [u8]) -> Result<usize> {
- let mut dest_size: u32 = dest.len() as u32;
+ let mut dest_size: usize = dest.len();
match unsafe {
raw::TEE_AEUpdate(
self.handle(),
src.as_ptr() as _,
- src.len() as u32,
+ src.len(),
dest.as_mut_ptr() as _,
&mut dest_size,
)
} {
raw::TEE_SUCCESS => {
- return Ok(dest_size as usize);
+ return Ok(dest_size);
}
code => Err(Error::from_raw_error(code)),
}
@@ -1103,13 +1103,13 @@ impl AE {
dest: &mut [u8],
tag: &mut [u8],
) -> Result<(usize, usize)> {
- let mut dest_size: u32 = dest.len() as u32;
- let mut tag_size: u32 = tag.len() as u32;
+ let mut dest_size: usize = dest.len();
+ let mut tag_size: usize = tag.len();
match unsafe {
raw::TEE_AEEncryptFinal(
self.handle(),
src.as_ptr() as _,
- src.len() as u32,
+ src.len(),
dest.as_mut_ptr() as _,
&mut dest_size,
tag.as_mut_ptr() as _,
@@ -1117,7 +1117,7 @@ impl AE {
)
} {
raw::TEE_SUCCESS => {
- return Ok((dest_size as usize, tag_size as usize));
+ return Ok((dest_size, tag_size));
}
code => Err(Error::from_raw_error(code)),
}
@@ -1147,20 +1147,20 @@ impl AE {
/// 4) Hardware or cryptographic algorithm failure.
/// 5) If the Implementation detects any other error.
pub fn decrypt_final(&self, src: &[u8], dest: &mut [u8], tag: &[u8]) -> Result<usize> {
- let mut dest_size: u32 = dest.len() as u32;
+ let mut dest_size: usize = dest.len();
match unsafe {
raw::TEE_AEDecryptFinal(
self.handle(),
src.as_ptr() as _,
- src.len() as u32,
+ src.len(),
dest.as_mut_ptr() as _,
&mut dest_size,
tag.as_ptr() as _,
- tag.len() as u32,
+ tag.len(),
)
} {
raw::TEE_SUCCESS => {
- return Ok(dest_size as usize);
+ return Ok(dest_size);
}
code => Err(Error::from_raw_error(code)),
}
@@ -1270,7 +1270,7 @@ impl Asymmetric {
// Define this function as unsafe because we need to return Ok for short buffer error.
pub fn encrypt(&self, params: &[Attribute], src: &[u8]) -> Result<Vec<u8>> {
let p: Vec<raw::TEE_Attribute> = params.iter().map(|p| p.raw()).collect();
- let mut res_size: u32 = self.info().key_size();
+ let mut res_size: usize = self.info().key_size() as usize;
let mut res_vec: Vec<u8> = vec![0u8; res_size as usize];
match unsafe {
raw::TEE_AsymmetricEncrypt(
@@ -1278,13 +1278,13 @@ impl Asymmetric {
p.as_ptr() as _,
params.len() as u32,
src.as_ptr() as _,
- src.len() as u32,
+ src.len(),
res_vec.as_mut_ptr() as _,
&mut res_size,
)
} {
raw::TEE_SUCCESS => {
- res_vec.truncate(res_size as usize);
+ res_vec.truncate(res_size);
return Ok(res_vec);
}
code => Err(Error::from_raw_error(code)),
@@ -1313,7 +1313,7 @@ impl Asymmetric {
/// 4) If the Implementation detects any other error.
pub fn decrypt(&self, params: &[Attribute], src: &[u8]) -> Result<Vec<u8>> {
let p: Vec<raw::TEE_Attribute> = params.iter().map(|p| p.raw()).collect();
- let mut res_size: u32 = self.info().key_size();
+ let mut res_size: usize = self.info().key_size() as usize;
let mut res_vec: Vec<u8> = vec![0u8; res_size as usize];
match unsafe {
raw::TEE_AsymmetricDecrypt(
@@ -1321,7 +1321,7 @@ impl Asymmetric {
p.as_ptr() as _,
params.len() as u32,
src.as_ptr() as _,
- src.len() as u32,
+ src.len(),
res_vec.as_mut_ptr() as _,
&mut res_size,
)
@@ -1362,20 +1362,20 @@ impl Asymmetric {
signature: &mut [u8],
) -> Result<usize> {
let p: Vec<raw::TEE_Attribute> = params.iter().map(|p| p.raw()).collect();
- let mut signature_size: u32 = signature.len() as u32;
+ let mut signature_size: usize = signature.len();
match unsafe {
raw::TEE_AsymmetricSignDigest(
self.handle(),
p.as_ptr() as _,
params.len() as u32,
digest.as_ptr() as _,
- digest.len() as u32,
+ digest.len(),
signature.as_mut_ptr() as _,
&mut signature_size,
)
} {
raw::TEE_SUCCESS => {
- return Ok(signature_size as usize);
+ return Ok(signature_size);
}
code => Err(Error::from_raw_error(code)),
}
@@ -1415,9 +1415,9 @@ impl Asymmetric {
p.as_ptr() as _,
params.len() as u32,
digest.as_ptr() as _,
- digest.len() as u32,
+ digest.len(),
signature.as_ptr() as _,
- signature.len() as u32,
+ signature.len(),
)
} {
raw::TEE_SUCCESS => Ok(()),
diff --git a/optee-utee/src/object.rs b/optee-utee/src/object.rs
index ac23b1c..031c9c1 100644
--- a/optee-utee/src/object.rs
+++ b/optee-utee/src/object.rs
@@ -95,7 +95,7 @@ impl<'attrref> AttributeMemref<'attrref> {
&mut res.raw,
id as u32,
buffer.as_ptr() as *mut _,
- buffer.len() as u32,
+ buffer.len(),
);
}
res
@@ -240,16 +240,16 @@ impl ObjectHandle {
}
fn ref_attribute(&self, id: AttributeId, buffer: &mut [u8]) -> Result<usize> {
- let mut size = buffer.len() as u32;
+ let mut size = buffer.len();
match unsafe {
raw::TEE_GetObjectBufferAttribute(
self.handle(),
id as u32,
buffer as *mut _ as _,
- &mut size as _,
+ &mut size,
)
} {
- raw::TEE_SUCCESS => Ok(size as usize),
+ raw::TEE_SUCCESS => Ok(size),
code => Err(Error::from_raw_error(code)),
}
}
@@ -908,7 +908,7 @@ impl PersistentObject {
raw::TEE_OpenPersistentObject(
storage_id as u32,
object_id.as_ptr() as _,
- object_id.len() as u32,
+ object_id.len(),
flags.bits(),
raw_handle as *mut _,
)
@@ -993,11 +993,11 @@ impl PersistentObject {
raw::TEE_CreatePersistentObject(
storage_id as u32,
object_id.as_ptr() as _,
- object_id.len() as u32,
+ object_id.len(),
flags.bits(),
attributes,
initial_data.as_ptr() as _,
- initial_data.len() as u32,
+ initial_data.len(),
raw_handle as *mut _,
)
} {
@@ -1099,7 +1099,7 @@ impl PersistentObject {
raw::TEE_RenamePersistentObject(
self.0.handle(),
new_object_id.as_ptr() as _,
- new_object_id.len() as u32,
+ new_object_id.len(),
)
} {
raw::TEE_SUCCESS => Ok(()),
@@ -1190,16 +1190,16 @@ impl PersistentObject {
/// 2) If the Implementation detects any other error associated with this function which is not
/// explicitly associated with a defined return code for this function.
pub fn read(&self, buf: &mut [u8]) -> Result<u32> {
- let mut count: u32 = 0;
+ let mut count: usize = 0;
match unsafe {
raw::TEE_ReadObjectData(
self.handle(),
buf.as_mut_ptr() as _,
- buf.len() as u32,
+ buf.len(),
&mut count,
)
} {
- raw::TEE_SUCCESS => Ok(count),
+ raw::TEE_SUCCESS => Ok(count as u32),
code => Err(Error::from_raw_error(code)),
}
}
@@ -1245,7 +1245,7 @@ impl PersistentObject {
/// explicitly associated with a defined return code for this function.
pub fn write(&mut self, buf: &[u8]) -> Result<()> {
match unsafe {
- raw::TEE_WriteObjectData(self.handle(), buf.as_ptr() as _, buf.len() as u32)
+ raw::TEE_WriteObjectData(self.handle(), buf.as_ptr() as _, buf.len())
} {
raw::TEE_SUCCESS => Ok(()),
code => Err(Error::from_raw_error(code)),
@@ -1286,7 +1286,7 @@ impl PersistentObject {
/// 2) If the Implementation detects any other error associated with this function which is not
/// explicitly associated with a defined return code for this function.
pub fn truncate(&self, size: u32) -> Result<()> {
- match unsafe { raw::TEE_TruncateObjectData(self.handle(), size) } {
+ match unsafe { raw::TEE_TruncateObjectData(self.handle(), size as usize) } {
raw::TEE_SUCCESS => Ok(()),
code => Err(Error::from_raw_error(code)),
}
@@ -1407,7 +1407,7 @@ impl ObjectEnumHandle {
object_info: &mut ObjectInfo,
object_id: &mut [u8],
) -> Result<u32> {
- let mut object_id_len: u32 = 0;
+ let mut object_id_len: usize = 0;
match unsafe {
raw::TEE_GetNextPersistentObject(
*self.raw,
@@ -1416,7 +1416,7 @@ impl ObjectEnumHandle {
&mut object_id_len,
)
} {
- raw::TEE_SUCCESS => Ok(object_id_len),
+ raw::TEE_SUCCESS => Ok(object_id_len as u32),
code => Err(Error::from_raw_error(code)),
}
}
diff --git a/optee-utee/src/parameter.rs b/optee-utee/src/parameter.rs
index f874309..5694c67 100644
--- a/optee-utee/src/parameter.rs
+++ b/optee-utee/src/parameter.rs
@@ -87,7 +87,7 @@ impl<'parameter> ParamMemref<'parameter> {
}
pub fn set_updated_size(&mut self, size: usize) {
- unsafe { (*self.raw).size = size as u32};
+ unsafe { (*self.raw).size = size};
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@teaclave.apache.org
For additional commands, e-mail: commits-help@teaclave.apache.org