在TLS 1.0规范中提供了在那里使用的类型的描述。这是描述的一个例子:
包含未解释数据的单字节实体属于不透明类型。
对我而言,尚不清楚应该将未解释的数据视为什么。例如,这用于以下结构:
struct {
ConnectionEnd entity;
BulkCipherAlgorithm bulk_cipher_algorithm;
CipherType cipher_type;
uint8 key_size;
uint8 key_material_length;
IsExportable is_exportable;
MACAlgorithm mac_algorithm;
uint8 hash_size;
CompressionMethod compression_algorithm;
opaque master_secret[48];
opaque client_random[32];
opaque server_random[32];
} SecurityParameters;
有人可以向我解释一下吗?
答案 0 :(得分:3)
他们仅仅为了文档目的而使用opaque
来强调TLS本身不解释数据(因为它的含义特定于例如所使用的密码和散列函数)。实际上,您可以将opaque
视为char
,保证为单个字节。
在包含struct
定义的实际实施中,您可能会找到
typedef char opaque;
或
#define opaque char
在它之前的某个地方。
(unsigned char
,uint8_t
(来自< stdint.h> ),以及他们自己的uint8
是其他一些可能性,但是'这只是一个小的实现细节。实际上,这些都归结为char
或unsigned char
。#define opaque char
变体出现在 /usr/include/rpc/key_prot.h中顺便说一下,在我的Linux系统上。)