了解不透明数据类型

时间:2015-03-29 05:44:08

标签: c ssl types

在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;

有人可以向我解释一下吗?

1 个答案:

答案 0 :(得分:3)

他们仅仅为了文档目的而使用opaque来强调TLS本身不解释数据(因为它的含义特定于例如所使用的密码和散列函数)。实际上,您可以将opaque视为char,保证为单个字节。

在包含struct定义的实际实施中,您可能会找到

typedef char opaque;

#define opaque char
在它之前的某个地方。

unsigned charuint8_t(来自< stdint.h> ),以及他们自己的uint8是其他一些可能性,但是'这只是一个小的实现细节。实际上,这些都归结为charunsigned char#define opaque char变体出现在 /usr/include/rpc/key_prot.h中顺便说一下,在我的Linux系统上。)