![]() |
Samsung Internal API reference
2.0
|
Data Structures | |
| struct | TEE_iSocket_s |
| iSocket instance Please refer to GPD_SPE_100 specification for detailed description. Basic rules are following: More... | |
| struct | TEE_tcpSocket_Setup_s |
| TCP Setup structure. More... | |
| struct | TEE_udpSocket_Setup_s |
| UDP Setup structure. More... | |
| struct | TEE_udpSocket_Change_s |
| UDP change addr and port IOCTL structure. TEE_UDP_CHANGE* functions are implementation as synonims. Both server_addr and server_port must be provided for either call. In case of error returned Client should try to open new socket as usual. More... | |
| struct | TEE_tlsSocket_PSK_Info_s |
| Pre-Shared Key (PSK). When PSK is used, the TA needs to provide the key and a key identity to the TLS implementation. This structure holds that information Not supported. More... | |
| struct | TEE_tlsSocket_SRP_Info_s |
| Secure Remote Password (SRP). When SRP is used, the TA needs to provide the password and the user identity to the TLS implementation. This structure holds that information. Not supported. More... | |
| struct | TEE_tlsSocket_ClientPDC_s |
| This structure holds the opaque client certificate for the TA as well as the corresponding private key. This is used to provide pre-installed certificates for the TA authentication on Server. More... | |
| struct | TEE_tlsSocket_ServerPDC_s |
| If the server Root public key has been pre-distributed to the TA, this structure holds the TEE_ObjectHandle to that key. If desirable, Server Root credentials could be provided as bulkCertChain - this is GP specs extension. publicKey is used by default. More... | |
| struct | TEE_tlsSocket_CertStorageCred_s |
| Void type for future usage. Applications SHALL pass a NULL pointer. The intention is to have this structure hold handles or references to either trusted root certificates or a proper client certificate inside a future certificate storage of the TEE. More... | |
| struct | TEE_tlsSocket_Credentials_s |
| Structure holding server and client credentials. More... | |
| union | TEE_tlsSocket_Credentials_s.__unnamed__ |
| struct | TEE_tlsSocket_CallbackInfo_s |
| Callback description structure. More... | |
| struct | TEE_tlsSocket_Setup_s |
| TLS Setup structure. More... | |
| union | TEE_tlsSocket_Setup_s.__unnamed__ |
| struct | TEE_tlsSocket_CB_Data_s |
| IOCTL definitions. More... | |
Typedefs | |
| typedef struct __TEE_iSocketHandle * | TEE_iSocketHandle |
| iSocket context handle | |
| typedef const struct TEE_iSocket_s | TEE_iSocket |
| iSocket instance Please refer to GPD_SPE_100 specification for detailed description. Basic rules are following: More... | |
| typedef enum TEE_ipSocket_ipVersion_e | TEE_ipSocket_ipVersion |
| IP version. | |
| typedef struct TEE_tcpSocket_Setup_s | TEE_tcpSocket_Setup |
| TCP Setup structure. | |
| typedef struct TEE_udpSocket_Setup_s | TEE_udpSocket_Setup |
| UDP Setup structure. | |
| typedef struct TEE_udpSocket_Change_s | TEE_udpSocket_Change |
| UDP change addr and port IOCTL structure. TEE_UDP_CHANGE* functions are implementation as synonims. Both server_addr and server_port must be provided for either call. In case of error returned Client should try to open new socket as usual. | |
| typedef struct __TEES_IwtHandle * | TEES_IwtHandle |
| Handle representing active IWT connection. Must be treated as opaque structure. | |
| typedef enum TEE_tlsSocket_tlsVersion_e | TEE_tlsSocket_tlsVersion |
| TLS protocol version to use. | |
| typedef enum TEE_tlsSocket_CipherSuites_e | TEE_tlsSocket_CipherSuites |
| Cryptosuite ID definitions. | |
| typedef struct TEE_tlsSocket_PSK_Info_s | TEE_tlsSocket_PSK_Info |
| Pre-Shared Key (PSK). When PSK is used, the TA needs to provide the key and a key identity to the TLS implementation. This structure holds that information Not supported. | |
| typedef struct TEE_tlsSocket_SRP_Info_s | TEE_tlsSocket_SRP_Info |
| Secure Remote Password (SRP). When SRP is used, the TA needs to provide the password and the user identity to the TLS implementation. This structure holds that information. Not supported. | |
| typedef struct TEE_tlsSocket_ClientPDC_s | TEE_tlsSocket_ClientPDC |
| This structure holds the opaque client certificate for the TA as well as the corresponding private key. This is used to provide pre-installed certificates for the TA authentication on Server. | |
| typedef struct TEE_tlsSocket_ServerPDC_s | TEE_tlsSocket_ServerPDC |
| If the server Root public key has been pre-distributed to the TA, this structure holds the TEE_ObjectHandle to that key. If desirable, Server Root credentials could be provided as bulkCertChain - this is GP specs extension. publicKey is used by default. | |
| typedef struct TEE_tlsSocket_CertStorageCred_s | TEE_tlsSocket_CertStorageCred |
| Void type for future usage. Applications SHALL pass a NULL pointer. The intention is to have this structure hold handles or references to either trusted root certificates or a proper client certificate inside a future certificate storage of the TEE. | |
| typedef enum TEE_tlsSocket_ClientCredentialType_e | TEE_tlsSocket_ClientCredentialType |
| This specifies what kind of client credentials the TA has. | |
| typedef enum TEE_tlsSocket_ServerCredentialType_e | TEE_tlsSocket_ServerCredentialType |
| This specifies what kind of server credentials a remote node has. | |
| typedef struct TEE_tlsSocket_Credentials_s | TEE_tlsSocket_Credentials |
| Structure holding server and client credentials. | |
| typedef enum TEE_tlsSocket_CallbackReasonType_e | TEE_tlsSocket_CallbackReasonType |
| Callback types. | |
| typedef struct TEE_tlsSocket_CallbackInfo_s | TEE_tlsSocket_CallbackInfo |
| Callback description structure. | |
| typedef TEE_Result(* | TEE_tlsCallback) (TEE_iSocketHandle ctx, TEE_tlsSocket_CallbackInfo *cbInfo, void *cbData, uint32_t *cbDataLength) |
| Callback function. This is specification extension. Used to allow client perform custom checks of certificate chain, OCSP response. etc. cbData buffer is valid only in the callback context. | |
| typedef enum TEE_tlsSocket_StatusRequestType_e | TEE_tlsSocket_StatusRequestType |
| OCSP stapling certificate status request type. | |
| typedef enum TEE_tlsSocket_ExtensionFlags_e | TEE_tlsSocket_ExtensionFlags |
| Certificate/OCSP validation mode and callback control flags. | |
| typedef struct TEE_tlsSocket_Setup_s | TEE_tlsSocket_Setup |
| TLS Setup structure. | |
| typedef struct TEE_tlsSocket_CB_Data_s | TEE_tlsSocket_CB_Data |
| IOCTL definitions. More... | |
Enumerations | |
| enum | { TEE_ISOCKET_ERROR_PROTOCOL = 0xF1007001, TEE_ISOCKET_ERROR_REMOTE_CLOSED = 0xF1007002, TEE_ISOCKET_ERROR_TIMEOUT = 0xF1007003, TEE_ISOCKET_ERROR_OUT_OF_RESOURCES = 0xF1007004, TEE_ISOCKET_ERROR_LARGE_BUFFER = 0xF1007005, TEE_ISOCKET_WARNING_PROTOCOL = 0xF1007006, TEE_ISOCKET_ERROR_HOSTNAME = 0xF1007007 } |
| iSocket common errors More... | |
| enum | { TEE_ISOCKET_SERVER_NAME_MAX_LENGTH = 255 } |
| Maximum server IPv4 address string lemgth. More... | |
| enum | TEE_ipSocket_ipVersion_e { TEE_IP_VERSION_DC = 0, TEE_IP_VERSION_4 = 1, TEE_IP_VERSION_6 = 2 } |
| IP version. More... | |
| enum | { TEE_ISOCKET_TCP_API_VERSION = 0x01010000 } |
| TCP iSocket API version. Used to enshure API structures matching. More... | |
| enum | { TEE_ISOCKET_PROTOCOLID_TCP = 0x65 } |
| TCP Protocol identifier. More... | |
| enum | { TEE_ISOCKET_TCP_WARNING_UNKNOWN_OUT_OF_BAND = 0xF1010002 } |
| TCP Instance specific errors. More... | |
| enum | { TEE_ISOCKET_UDP_API_VERSION = 0x01000000 } |
| UDP iSocket API version. Used to enshure API structures matching. More... | |
| enum | { TEE_ISOCKET_PROTOCOLID_UDP = 0x66 } |
| UDP Protocol identifier. More... | |
| enum | { TEE_ISOCKET_UDP_WARNING_UNKNOWN_OUT_OF_BAND = 0xF1020002 } |
| UDP Instance specific errors. More... | |
| enum | { TEE_UDP_CHANGEADDR = 0x66000001, TEE_UDP_CHANGEPORT = 0x66000002 } |
| UDP IOCTL codes. | |
| enum | { TEES_IWT_LISTENER_NAME_MAX_LENGTH = 91 } |
| TEES_IWT_LISTENER_NAME_MAX_LENGTH. More... | |
| enum | protocol_error_code { NO_ERROR = 0, TEE_ISOCKET_IWC_ERROR_CHANNEL = 0x81000000, TEE_ISOCKET_IWC_ERROR_TIMEOUT = 0x81000001, TEE_ISOCKET_IWC_ERROR_NOT_IMPLEMENTED = 0x81000002, TEE_ISOCKET_IWC_ERROR_INVALID_VERSION = 0x81000003, TEE_ISOCKET_IWC_ERROR_SWD_CLIENT_AUTH_FAILED = 0x81000004, TEE_ISOCKET_NET_ERROR_GENERIC = 0x81010000, TEE_ISOCKET_NET_ERROR_BAD_PARAMETERS = 0x81010001, TEE_ISOCKET_NET_ERROR_BUFFER_TOO_SMALL = 0x81010002, TEE_ISOCKET_NET_ERROR_LARGE_BUFFER = 0x81010003, TEE_ISOCKET_NET_ERROR_OUT_OF_RESOURCES = 0x81010004, TEE_ISOCKET_NET_ERROR_OUT_OF_MEMORY = 0x81010005, TEE_ISOCKET_NET_ERROR_HOSTNAME_UNKNOWN = 0x81010006, TEE_ISOCKET_NET_ERROR_HOSTNAME_NOTRESOLVED = 0x81010007, TEE_ISOCKET_NET_ERROR_HOSTNAME_TRYAGAIN = 0x81010008, TEE_ISOCKET_NET_ERROR_COMMUNICATION = 0x81010009, TEE_ISOCKET_NET_ERROR_CONNECTION_REFUSED = 0x8101000A, TEE_ISOCKET_NET_ERROR_NET_UNREACHABLE = 0x8101000B, TEE_ISOCKET_NET_ERROR_REMOTE_CLOSED = 0x8101000C, TEE_ISOCKET_NET_ERROR_TIMEOUT = 0x8101000D, TEE_ISOCKET_NET_ERROR_DATA_REMAIN = 0x8101000E, TEE_ISOCKET_TLS_ERROR_CERT_PARSING = 0x80000000, TEE_ISOCKET_TLS_ERROR_CRL_PARSING = 0x80000001, TEE_ISOCKET_TLS_ERROR_CERT_EXPIRED = 0x80000002, TEE_ISOCKET_TLS_ERROR_CERT_SIGN_VERIFICATION = 0x80000003, TEE_ISOCKET_TLS_ERROR_ECDHE_GEN_KEY = 0x81030010, TEE_ISOCKET_TLS_ERROR_ECDHE_SHARED_SECRET = 0x81030011, TEE_ISOCKET_TLS_ERROR_ECDHE_UNSUPPORTED_CURVE = 0x81030012, TEE_ISOCKET_TLS_ERROR_ECDHE_SERIALIZING = 0x81030013, TEE_ISOCKET_TLS_ERROR_CERT_COMMON_NAME_VERIFICATION = 0x81030014, TEE_ISOCKET_TLS_ERROR_UNEXPECTED_MESSAGE = 0x81030015, TEE_ISOCKET_TLS_ERROR_HANDSHAKE_UNEXPECTED_PARAMETER = 0x81030016, TEE_ISOCKET_TLS_ERROR_CERT_IS_TOO_LONG = 0x81030017, TEE_ISOCKET_TLS_ERROR_NO_ALERT_PRESENT = 0x81030018, TEE_ISOCKET_TLS_ERROR_ALERT_PENDING = 0x81030019, TEE_ISOCKET_TLS_ERROR_USER_CANCELED = 0x8103001A, TEE_ISOCKET_TLS_ERROR_CERT_UNKNOWN_CA = 0x8103001B, TEE_ISOCKET_TLS_ERROR_CERT_UNSUPPORTED = 0x8103001C, TEE_ISOCKET_TLS_ERROR_CERT_REVOKED = 0x8103001D, TEE_ISOCKET_TLS_ERROR_CERT_STATUS_UNKNOWN = 0x8103001E, TEE_ISOCKET_TLS_ALERT_CLOSE_NOTIFY = 0x81031000, TEE_ISOCKET_TLS_ALERT_UNEXPECTED_MSG = 0x81031010, TEE_ISOCKET_TLS_ALERT_BAD_RECORD_MAC = 0x81031020, TEE_ISOCKET_TLS_ALERT_DECRYPT_FAILED = 0x81031021, TEE_ISOCKET_TLS_ALERT_RECORD_OVERFLOW = 0x81031022, TEE_ISOCKET_TLS_ALERT_DECOMP_FAILED = 0x81031030, TEE_ISOCKET_TLS_ALERT_HANDSHAKE_FAILED = 0x81031040, TEE_ISOCKET_TLS_ALERT_NO_CERTIFICATE = 0x81031041, TEE_ISOCKET_TLS_ALERT_BAD_CERTIFICATE = 0x81031042, TEE_ISOCKET_TLS_ALERT_UNSUPPORTED_CERT = 0x81031043, TEE_ISOCKET_TLS_ALERT_CERT_REVOKED = 0x81031044, TEE_ISOCKET_TLS_ALERT_CERT_EXPIRED = 0x81031045, TEE_ISOCKET_TLS_ALERT_CERT_UNKNOWN = 0x81031046, TEE_ISOCKET_TLS_ALERT_ILLEGAL_PARAMETER = 0x81031047, TEE_ISOCKET_TLS_ALERT_UNKNOWN_CA = 0x81031048, TEE_ISOCKET_TLS_ALERT_ACCESS_DENIED = 0x81031049, TEE_ISOCKET_TLS_ALERT_DECODE_ERROR = 0x81031050, TEE_ISOCKET_TLS_ALERT_DECRYPT_ERROR = 0x81031051, TEE_ISOCKET_TLS_ALERT_EXPORT_RESTRICTED = 0x81031060, TEE_ISOCKET_TLS_ALERT_PROTOCOL_VERSION = 0x81031070, TEE_ISOCKET_TLS_ALERT_INSUFFICIENT_SECURITY = 0x81031071, TEE_ISOCKET_TLS_ALERT_INTERNAL_ERROR = 0x81031080, TEE_ISOCKET_TLS_ALERT_INAPPROPRIATE_FALLBACK = 0x81031086, TEE_ISOCKET_TLS_ALERT_USER_CANCELED = 0x81031090, TEE_ISOCKET_TLS_ALERT_NO_RENEGOTIATION = 0x81031100, TEE_ISOCKET_TLS_ALERT_MISSING_EXTENSION = 0x81031109, TEE_ISOCKET_TLS_ALERT_UNSUPPORTED_EXTENSION = 0x81031110, TEE_ISOCKET_TLS_ALERT_CERT_UNOBTAINABLE = 0x81031111, TEE_ISOCKET_TLS_ALERT_UNRECOGNIZED_NAME = 0x81031112, TEE_ISOCKET_TLS_ALERT_BAD_CERT_STATUS_RESPONSE = 0x81031113, TEE_ISOCKET_TLS_ALERT_BAD_CERT_HASH_VALUE = 0x81031114, TEE_ISOCKET_TLS_ALERT_UNKNOWN_PSK_IDENTITY = 0x81031115, TEE_ISOCKET_TLS_ALERT_CERT_REQUIRED = 0x81031116 } |
| Propriate protocol specific error codes. According to GPD_SPE_010 specification, TEE error code range 0x80000000..0x8FFFFFFF is reserved for implementation specific error. In addition, TEE Socket Subsystem considers protocol errors as specification extension and includes specification ID into code: 0x8 | 3 digit BCD spec ID | error code. More... | |
| enum | { TEE_ISOCKET_TLS_API_VERSION = 0x01030000 } |
| TLS iSocket API version. Used to enshure API structures matching. More... | |
| enum | { TEE_ISOCKET_PROTOCOLID_TLS = 0x67 } |
| TLS Protocol identifier. More... | |
| enum | { TEE_ISOCKET_TLS_ERROR_REJECTED_SUITE = 0xF1030001, TEE_ISOCKET_TLS_ERROR_VERSION = 0xF1030002, TEE_ISOCKET_TLS_ERROR_UNSUPPORTED_SUITE = 0xF1030003, TEE_ISOCKET_TLS_ERROR_HANDSHAKE = 0xF1030004, TEE_ISOCKET_TLS_ERROR_AUTHENTICATION = 0xF1030005, TEE_ISOCKET_TLS_ERROR_DATA = 0xF1030006 } |
| TLS Instance specific errors. More... | |
| enum | TEE_tlsSocket_tlsVersion_e { TEE_TLS_VERSION_ALL = 0, TEE_TLS_VERSION_1v2 = 1 } |
| TLS protocol version to use. More... | |
| enum | TEE_tlsSocket_CipherSuites_e { TLS_NULL_WITH_NULL_NULL = 0x0000, TLS_RSA_WITH_3DES_EDE_CBC_SHA = 0x000A, TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA = 0x0013, TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA = 0x0016, TLS_RSA_WITH_AES_128_CBC_SHA = 0x002F, TLS_DHE_DSS_WITH_AES_128_CBC_SHA = 0x0032, TLS_DHE_RSA_WITH_AES_128_CBC_SHA = 0x0033, TLS_RSA_WITH_AES_256_CBC_SHA = 0x0035, TLS_DHE_DSS_WITH_AES_256_CBC_SHA = 0x0038, TLS_DHE_RSA_WITH_AES_256_CBC_SHA = 0x0039, TLS_RSA_WITH_AES_128_CBC_SHA256 = 0x003C, TLS_RSA_WITH_AES_256_CBC_SHA256 = 0x003D, TLS_DHE_DSS_WITH_AES_128_CBC_SHA256 = 0x0040, TLS_DHE_RSA_WITH_AES_128_CBC_SHA256 = 0x0067, TLS_DHE_DSS_WITH_AES_256_CBC_SHA256 = 0x006A, TLS_DHE_RSA_WITH_AES_256_CBC_SHA256 = 0x006B, TLS_PSK_WITH_3DES_EDE_CBC_SHA = 0x008B, TLS_PSK_WITH_AES_128_CBC_SHA = 0x008C, TLS_PSK_WITH_AES_256_CBC_SHA = 0x008D, TLS_DHE_PSK_WITH_3DES_EDE_CBC_SHA = 0x008F, TLS_DHE_PSK_WITH_AES_128_CBC_SHA = 0x0090, TLS_DHE_PSK_WITH_AES_256_CBC_SHA = 0x0091, TLS_RSA_PSK_WITH_3DES_EDE_CBC_SHA = 0x0093, TLS_RSA_PSK_WITH_AES_128_CBC_SHA = 0x0094, TLS_RSA_PSK_WITH_AES_256_CBC_SHA = 0x0095, TLS_RSA_WITH_AES_128_GCM_SHA256 = 0x009C, TLS_RSA_WITH_AES_256_GCM_SHA384 = 0x009D, TLS_DHE_RSA_WITH_AES_128_GCM_SHA256 = 0x009E, TLS_DHE_RSA_WITH_AES_256_GCM_SHA384 = 0x009F, TLS_DHE_DSS_WITH_AES_128_GCM_SHA256 = 0x00A2, TLS_DHE_DSS_WITH_AES_256_GCM_SHA384 = 0x00A3, TLS_PSK_WITH_AES_128_GCM_SHA256 = 0x00A8, TLS_PSK_WITH_AES_256_GCM_SHA384 = 0x00A9, TLS_DHE_PSK_WITH_AES_128_GCM_SHA256 = 0x00AA, TLS_DHE_PSK_WITH_AES_256_GCM_SHA384 = 0x00AB, TLS_RSA_PSK_WITH_AES_128_GCM_SHA256 = 0x00AC, TLS_RSA_PSK_WITH_AES_256_GCM_SHA384 = 0x00AD, TLS_PSK_WITH_AES_128_CBC_SHA256 = 0x00AE, TLS_PSK_WITH_AES_256_CBC_SHA384 = 0x00AF, TLS_DHE_PSK_WITH_AES_128_CBC_SHA256 = 0x00B2, TLS_DHE_PSK_WITH_AES_256_CBC_SHA384 = 0x00B3, TLS_RSA_PSK_WITH_AES_128_CBC_SHA256 = 0x00B6, TLS_RSA_PSK_WITH_AES_256_CBC_SHA384 = 0x00B7, TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA = 0xC008, TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA = 0xC009, TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA = 0xC00A, TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA = 0xC012, TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA = 0xC013, TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA = 0xC014, TLS_SRP_SHA_WITH_3DES_EDE_CBC_SHA = 0xC01A, TLS_SRP_SHA_RSA_WITH_3DES_EDE_CBC_SHA = 0xC01B, TLS_SRP_SHA_DSS_WITH_3DES_EDE_CBC_SHA = 0xC01C, TLS_SRP_SHA_WITH_AES_128_CBC_SHA = 0xC01D, TLS_SRP_SHA_RSA_WITH_AES_128_CBC_SHA = 0xC01E, TLS_SRP_SHA_DSS_WITH_AES_128_CBC_SHA = 0xC01F, TLS_SRP_SHA_WITH_AES_256_CBC_SHA = 0xC020, TLS_SRP_SHA_RSA_WITH_AES_256_CBC_SHA = 0xC021, TLS_SRP_SHA_DSS_WITH_AES_256_CBC_SHA = 0xC022, TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256 = 0xC023, TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384 = 0xC024, TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 = 0xC027, TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384 = 0xC028, TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 = 0xC02B, TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 = 0xC02C, TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 = 0xC02F, TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 = 0xC030, TLS_ECDHE_PSK_WITH_3DES_EDE_CBC_SHA = 0xC034, TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA = 0xC035, TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA = 0xC036, TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA256 = 0xC037, TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA384 = 0xC038, TLS_RSA_WITH_AES_128_CCM = 0xC09C, TLS_RSA_WITH_AES_256_CCM = 0xC09D, TLS_DHE_RSA_WITH_AES_128_CCM = 0xC09E, TLS_DHE_RSA_WITH_AES_256_CCM = 0xC09F, TLS_PSK_WITH_AES_128_CCM = 0xC0A4, TLS_PSK_WITH_AES_256_CCM = 0xC0A5, TLS_DHE_PSK_WITH_AES_128_CCM = 0xC0A6, TLS_DHE_PSK_WITH_AES_256_CCM = 0xC0A7 } |
| Cryptosuite ID definitions. | |
| enum | TEE_tlsSocket_ClientCredentialType_e { TEE_TLS_CLIENT_CRED_NONE = 0, TEE_TLS_CLIENT_CRED_PDC = 1, TEE_TLS_CLIENT_CRED_CSC = 2 } |
| This specifies what kind of client credentials the TA has. More... | |
| enum | TEE_tlsSocket_ServerCredentialType_e { TEE_TLS_SERVER_CRED_PDC = 0, TEE_TLS_SERVER_CRED_CSC = 1 } |
| This specifies what kind of server credentials a remote node has. More... | |
| enum | TEE_tlsSocket_CallbackReasonType_e { TEE_ISOCKET_TLS_CB_CHECK_CERT_CHAIN = 1, TEE_ISOCKET_TLS_CB_BAD_CERT_CHAIN = 2, TEE_ISOCKET_TLS_CB_CHECK_OCSP_STATUS = 11, TEE_ISOCKET_TLS_CB_UNKNOWN_OCSP_STATUS = 12, TEE_ISOCKET_TLS_CB_REVOKED_OCSP_STATUS = 13 } |
| Callback types. More... | |
| enum | TEE_tlsSocket_StatusRequestType_e { TEE_ISOCKET_TLS_OCSP_STATUS_REQUEST_NO = 0, TEE_ISOCKET_TLS_OCSP_STATUS_REQUEST = 1 } |
| OCSP stapling certificate status request type. More... | |
| enum | TEE_tlsSocket_ExtensionFlags_e { TEE_ISOCKET_TLS_CERT_NAME_CHECK_CLIENT = 0x00000001, TEE_ISOCKET_TLS_CERT_KEYUSAGE_CHECK_CLIENT = 0x00000002, TEE_ISOCKET_TLS_CERT_NOTIFY_CLIENT = 0x00000004, TEE_ISOCKET_TLS_OCSP_CHECK_CLIENT = 0x00010000, TEE_ISOCKET_TLS_OCSP_CHECK_ADVISORY = 0x00020000, TEE_ISOCKET_TLS_OCSP_CHECK_MANDATORY = 0x00040000 } |
| Certificate/OCSP validation mode and callback control flags. More... | |
| enum | { TEE_ISOCKET_TLS_MAX_ALPN_LIST_LENGTH = 16 } |
| enum | { TEE_TLS_BINDING_INFO = 0x67000001 } |
| IOCTL codes. | |
Functions | |
| TEE_Result | TEES_IwtOpenChannel (const char *listenerName, TEES_IwtHandle *iwtCtx) |
| Open interworld transport (IWT) connection (channel) to the NWd Listener "listenerName". More... | |
| TEE_Result | TEES_IwtWrite (TEES_IwtHandle iwtCtx, const void *buf, uint32_t *length) |
Write length bytes from buf to the active IWT connection iwtCtx. More... | |
| TEE_Result | TEES_IwtRead (TEES_IwtHandle iwtCtx, void *buf, uint32_t *length) |
Read length bytes to buf from the active IWT connection iwtCtx. More... | |
| TEE_Result | TEES_IwtCloseChannel (TEES_IwtHandle iwtCtx) |
Close active IWT connection iwtCtx. More... | |
Variables | |
| const TEE_iSocket *const | TEE_tcpSocket |
| Public TCP instance pointer. | |
| const TEE_iSocket *const | TEE_udpSocket |
| Public UDP instance pointer. | |
| const TEE_iSocket *const | TEE_tlsSocket |
| Public TLS instance pointer. | |
| struct TEE_iSocket_s |
iSocket instance Please refer to GPD_SPE_100 specification for detailed description. Basic rules are following:
Data Fields | |
| uint32_t | TEE_iSocketVersion |
| uint8_t | protocolID |
| TEE_Result(* | open )(TEE_iSocketHandle *ctx, void *setup, uint32_t *protocolError) |
| TEE_Result(* | close )(TEE_iSocketHandle ctx) |
| TEE_Result(* | send )(TEE_iSocketHandle ctx, const void *buf, uint32_t *length, uint32_t timeout) |
| TEE_Result(* | recv )(TEE_iSocketHandle ctx, void *buf, uint32_t *length, uint32_t timeout) |
| uint32_t(* | error )(TEE_iSocketHandle ctx) |
| TEE_Result(* | ioctl )(TEE_iSocketHandle ctx, uint32_t commandCode, void *buf, uint32_t *length) |
| TEE_Result(* TEE_iSocket_s::close) (TEE_iSocketHandle ctx) |
used to close connection
| uint32_t(* TEE_iSocket_s::error) (TEE_iSocketHandle ctx) |
used to get specific protocol error in case of TEE_ISOCKET_ERROR_PROTOCOL
| TEE_Result(* TEE_iSocket_s::ioctl) (TEE_iSocketHandle ctx, uint32_t commandCode, void *buf, uint32_t *length) |
used to send ioctl to opened connection
| TEE_Result(* TEE_iSocket_s::open) (TEE_iSocketHandle *ctx, void *setup, uint32_t *protocolError) |
used to open connection
| uint8_t TEE_iSocket_s::protocolID |
Protocol identifier
| TEE_Result(* TEE_iSocket_s::recv) (TEE_iSocketHandle ctx, void *buf, uint32_t *length, uint32_t timeout) |
used to recvest data over opened connection
| TEE_Result(* TEE_iSocket_s::send) (TEE_iSocketHandle ctx, const void *buf, uint32_t *length, uint32_t timeout) |
used to send data over opened connection
| uint32_t TEE_iSocket_s::TEE_iSocketVersion |
The specification version number
| struct TEE_tcpSocket_Setup_s |
TCP Setup structure.
| Data Fields | ||
|---|---|---|
| uint32_t | apiVersion |
Must be TEE_ISOCKET_TCP_API_VERSION |
| TEE_ipSocket_ipVersion | ipVersion |
Must be TEE_IP_VERSION_4 |
| uint32_t | openTimeout |
Connection open timeout |
| char * | server_addr |
Pointer to IPv4 address or DNS name string e.g., "10.0.0.5", "www.samsung.com" |
| int | server_port |
Server port |
| struct TEE_udpSocket_Setup_s |
UDP Setup structure.
| Data Fields | ||
|---|---|---|
| uint32_t | apiVersion |
Must be TEE_ISOCKET_UDP_API_VERSION |
| TEE_ipSocket_ipVersion | ipVersion |
Must be TEE_IP_VERSION_4 |
| uint32_t | openTimeout |
Connection open timeout |
| char * | server_addr |
Pointer to IPv4 address or DNS name string e.g., "10.0.0.5", "www.samsung.com" |
| int | server_port |
Server port |
| struct TEE_udpSocket_Change_s |
UDP change addr and port IOCTL structure. TEE_UDP_CHANGE* functions are implementation as synonims. Both server_addr and server_port must be provided for either call. In case of error returned Client should try to open new socket as usual.
| Data Fields | ||
|---|---|---|
| char | server_addr[TEE_ISOCKET_SERVER_NAME_MAX_LENGTH] |
IPv4 address or DNS name string |
| int | server_port |
Server port |
| struct TEE_tlsSocket_PSK_Info_s |
| struct TEE_tlsSocket_SRP_Info_s |
| struct TEE_tlsSocket_ClientPDC_s |
| struct TEE_tlsSocket_ServerPDC_s |
If the server Root public key has been pre-distributed to the TA, this structure holds the TEE_ObjectHandle to that key. If desirable, Server Root credentials could be provided as bulkCertChain - this is GP specs extension. publicKey is used by default.
| Data Fields | ||
|---|---|---|
| char * | bulkCertChain | |
| uint32_t | bulkSize | |
| TEE_ObjectHandle | publicKey | |
| struct TEE_tlsSocket_CertStorageCred_s |
Void type for future usage. Applications SHALL pass a NULL pointer. The intention is to have this structure hold handles or references to either trusted root certificates or a proper client certificate inside a future certificate storage of the TEE.
| struct TEE_tlsSocket_Credentials_s |
Structure holding server and client credentials.
| Data Fields | ||
|---|---|---|
| union TEE_tlsSocket_Credentials_s | __unnamed__ | |
| union TEE_tlsSocket_Credentials_s | __unnamed__ | |
| TEE_tlsSocket_ClientCredentialType | clientCredType |
Client credentials provisioning type |
| TEE_tlsSocket_ServerCredentialType | serverCredType |
Server credentials provisioning type |
| union TEE_tlsSocket_Credentials_s.__unnamed__ |
| Data Fields | ||
|---|---|---|
| TEE_tlsSocket_CertStorageCred * | rootCertStore |
Certificate storage - for future extention |
| TEE_tlsSocket_ServerPDC * | serverCred |
Predistributed (explicitly provided) |
| struct TEE_tlsSocket_CallbackInfo_s |
Callback description structure.
| Data Fields | ||
|---|---|---|
| uint32_t | protocolError | |
| TEE_tlsSocket_CallbackReasonType | reason | |
| TEE_Result | result | |
| struct TEE_tlsSocket_Setup_s |
TLS Setup structure.
| Data Fields | ||
|---|---|---|
| union TEE_tlsSocket_Setup_s | __unnamed__ |
PSK or SRP - not supported |
| TEE_tlsSocket_tlsVersion | acceptServerVersion |
TLS version, MUST be TEE_TLS_VERSION_1v2 |
| TEE_tlsSocket_CipherSuites * | allowedCipherSuites |
Pointer to an array of allowed cipher suites terminated by the constant 0 (TLS_NULL_WITH_NULL_NULL). If suite is not supported it will be ignored. If noone suite in the list is supported the error will be returned. |
| char ** | alpnList |
ALPN TLS extension (RFC 7301). OPTIONAL. List of maximum TEE_ISOCKET_TLS_MAX_ALPN_LIST_LENGTH null terminated strings terminated with extra NULL pointer |
| uint32_t | apiVersion |
Must be set to TEE_ISOCKET_TLS_API_VERSION |
| TEE_iSocketHandle * | baseContext |
Lower level connection handle. Should be pointer according to GP Spec |
| TEE_iSocket * | baseSocket |
Pointer to the lower level protocol (TCP) instance |
| TEE_tlsSocket_Credentials * | credentials |
Server certificate and Client certificate |
| TEE_tlsSocket_ExtensionFlags | extFlags |
TEE TLS extension options control flags. Callback must be set as well |
| TEE_tlsSocket_StatusRequestType | ocspStatusType |
OCSP stapling certificate status request type. The only supported type is TEE_ISOCKET_TLS_OCSP_STATUS_REQUEST (RFC 6066). The Server must support this extension else handshake will fail. To be correcly verified OCSP response should be signed with Responder certificate provided with response. Responder certificate must be marked as id-pkix-ocsp-nocheck or must be signed with the second CA from Server certificate chain or with Root certificate. Response valid age is one week. Client is responsible to verify all other response types/cases itself. |
| char * | serverName |
Pointer to Server fully qualified DNS hostname string. OPTIONAL. Is used: 1) in Server Name Indication TLS Extension (RFC 6066); 2) to check matching with Subject IDs in Server certificate if TEE_ISOCKET_TLS_CERT_NAME_CHECK flag is set in extFlags:
|
| TEE_tlsCallback | tlsCallback |
Callback function address (optional).
|
| union TEE_tlsSocket_Setup_s.__unnamed__ |
| Data Fields | ||
|---|---|---|
| TEE_tlsSocket_PSK_Info * | PSKInfo |
Pre-Shared secret key - not supported |
| TEE_tlsSocket_SRP_Info * | SRPInfo |
Secure Remote Password - not supported |
| struct TEE_tlsSocket_CB_Data_s |
| typedef const struct TEE_iSocket_s TEE_iSocket |
#include <tee_isocket.h>
iSocket instance Please refer to GPD_SPE_100 specification for detailed description. Basic rules are following:
| typedef struct TEE_tlsSocket_CB_Data_s TEE_tlsSocket_CB_Data |
#include <tee_tlssocket.h>
IOCTL definitions.
This structure is returned in the output buffer by the ioctl function TEE_TLS_BINDING_INFO. It provides “TLS-Unique” channel binding information according to [RFC 5929].
| anonymous enum |
#include <tee_isocket.h>
iSocket common errors
| anonymous enum |
#include <tee_isocket.h>
Maximum server IPv4 address string lemgth.
| Enumerator | |
|---|---|
| TEE_ISOCKET_SERVER_NAME_MAX_LENGTH |
Maximum server IPv4 address string lemgth |
| anonymous enum |
#include <tee_tcpsocket.h>
TCP iSocket API version. Used to enshure API structures matching.
| Enumerator | |
|---|---|
| TEE_ISOCKET_TCP_API_VERSION |
Currently supported version |
| anonymous enum |
#include <tee_tcpsocket.h>
TCP Protocol identifier.
| Enumerator | |
|---|---|
| TEE_ISOCKET_PROTOCOLID_TCP |
GP TCP protocol ID |
| anonymous enum |
#include <tee_tcpsocket.h>
TCP Instance specific errors.
| Enumerator | |
|---|---|
| TEE_ISOCKET_TCP_WARNING_UNKNOWN_OUT_OF_BAND |
A protocol message was received that is not supported |
| anonymous enum |
#include <tee_udpsocket.h>
UDP iSocket API version. Used to enshure API structures matching.
| Enumerator | |
|---|---|
| TEE_ISOCKET_UDP_API_VERSION |
Currently supported version |
| anonymous enum |
#include <tee_udpsocket.h>
UDP Protocol identifier.
| Enumerator | |
|---|---|
| TEE_ISOCKET_PROTOCOLID_UDP |
GP UDP protocol ID |
| anonymous enum |
#include <tee_udpsocket.h>
UDP Instance specific errors.
| Enumerator | |
|---|---|
| TEE_ISOCKET_UDP_WARNING_UNKNOWN_OUT_OF_BAND |
A protocol message was received that is not supported |
| anonymous enum |
#include <tees_iwt.h>
TEES_IWT_LISTENER_NAME_MAX_LENGTH.
| Enumerator | |
|---|---|
| TEES_IWT_LISTENER_NAME_MAX_LENGTH |
The maximum allowed listener name length |
| anonymous enum |
#include <tee_tlssocket.h>
TLS iSocket API version. Used to enshure API structures matching.
| Enumerator | |
|---|---|
| TEE_ISOCKET_TLS_API_VERSION |
Currently supported version |
| anonymous enum |
#include <tee_tlssocket.h>
TLS Protocol identifier.
| Enumerator | |
|---|---|
| TEE_ISOCKET_PROTOCOLID_TLS |
GP TLS protocol ID |
| anonymous enum |
#include <tee_tlssocket.h>
TLS Instance specific errors.
| enum protocol_error_code |
#include <protocol_errors.h>
Propriate protocol specific error codes. According to GPD_SPE_010 specification, TEE error code range 0x80000000..0x8FFFFFFF is reserved for implementation specific error. In addition, TEE Socket Subsystem considers protocol errors as specification extension and includes specification ID into code: 0x8 | 3 digit BCD spec ID | error code.
#include <tee_isocket.h>
IP version.
| Enumerator | |
|---|---|
| TEE_IP_VERSION_DC |
Either IP version - not supported |
| TEE_IP_VERSION_4 |
IPv4 - the only supported IP protocol version |
| TEE_IP_VERSION_6 |
IPv6 - not supported |
#include <tee_tlssocket.h>
Callback types.
#include <tee_tlssocket.h>
This specifies what kind of client credentials the TA has.
| Enumerator | |
|---|---|
| TEE_TLS_CLIENT_CRED_NONE |
No client credentials |
| TEE_TLS_CLIENT_CRED_PDC |
Predistributed (explicitly provided) |
| TEE_TLS_CLIENT_CRED_CSC |
Certificate storage - for future extention |
#include <tee_tlssocket.h>
Certificate/OCSP validation mode and callback control flags.
#include <tee_tlssocket.h>
This specifies what kind of server credentials a remote node has.
| Enumerator | |
|---|---|
| TEE_TLS_SERVER_CRED_PDC |
Predistributed (explicitly provided) |
| TEE_TLS_SERVER_CRED_CSC |
Certificate storage - for future extention |
#include <tee_tlssocket.h>
OCSP stapling certificate status request type.
| Enumerator | |
|---|---|
| TEE_ISOCKET_TLS_OCSP_STATUS_REQUEST_NO |
No certificate status request |
| TEE_ISOCKET_TLS_OCSP_STATUS_REQUEST |
OCSP stapling certificate status request - RFC 6066 |
#include <tee_tlssocket.h>
TLS protocol version to use.
| Enumerator | |
|---|---|
| TEE_TLS_VERSION_ALL |
Any supported TLS protocol version. Only TLS 1.2 is supported |
| TEE_TLS_VERSION_1v2 |
TLS 1.2 protocol version - the only supported version |
| TEE_Result TEES_IwtCloseChannel | ( | TEES_IwtHandle | iwtCtx | ) |
#include <tees_iwt.h>
Close active IWT connection iwtCtx.
| [in] | iwtCtx | Handle representing active IWT connection |
| TEE_SUCCESS | no error |
| TEE_ERROR_* | on failure |
| TEE_Result TEES_IwtOpenChannel | ( | const char * | listenerName, |
| TEES_IwtHandle * | iwtCtx | ||
| ) |
#include <tees_iwt.h>
Open interworld transport (IWT) connection (channel) to the NWd Listener "listenerName".
| [in] | listenerName | Pointer to an array storing Listener name. Listener name must correspond to Listener's UNIX domain socket, which must have following name: /dev/socket/iwt/"listenerName". Listener name length must not exceed TEES_IWT_LISTENER_NAME_MAX_LENGTH |
| [out] | iwtCtx | Pointer to the handle representing active IWT connection |
| TEE_SUCCESS | no error |
| TEE_ERROR_* | on failure |
| TEE_Result TEES_IwtRead | ( | TEES_IwtHandle | iwtCtx, |
| void * | buf, | ||
| uint32_t * | length | ||
| ) |
#include <tees_iwt.h>
Read length bytes to buf from the active IWT connection iwtCtx.
| [in] | iwtCtx | Handle representing active IWT connection |
| [in] | buf | Pointer to buffer containing data to be read |
| [in,out] | length | pointer to data length to be read on input and actually read on output |
| TEE_SUCCESS | no error |
| TEE_ERROR_* | on failure |
| TEE_Result TEES_IwtWrite | ( | TEES_IwtHandle | iwtCtx, |
| const void * | buf, | ||
| uint32_t * | length | ||
| ) |
#include <tees_iwt.h>
Write length bytes from buf to the active IWT connection iwtCtx.
| [in] | iwtCtx | Handle representing active IWT connection |
| [in] | buf | Pointer to buffer containing data to be written |
| [in,out] | length | pointer to data length to be written on input and actually written on output |
| TEE_SUCCESS | no error |
| TEE_ERROR_* | on failure |