我正在分析 KMIP 以在 scala 中实现原型。我尝试理解为不同编码配置文件(字节、JSON、XML)实现架构的所有概念。
在规范部分5.4.1.6 XML元素编码中,规定:
[...] 结构值被编码为嵌套 xml 元素,非结构值被编码为 值使用“value”属性进行编码
用这个例子:
<ActivationDate type="DateTime" value="2001-01-01T10:00:00+10:00"/>
我不明白这个语法,因为 Activation Date 是一个属性。在2.1.1属性节中,属性是用包含属性名称、属性索引、属性值的结构来描述的。
ActivationDate 或其他属性的 XML 表示形式应该是:
<Attribute>
<AttributeName type="TextString" value="Activation Date"/
<AttributeValue type="DateTime" value="2001-01-01T10:00:00+10:00"/>
</Attribute>
此外,
KMIP 测试用例 使用第二种表示形式。
如果第一个表示作为示例显示,则将使用它。那么什么情况下呢?
在实现 http/json/xml 编码时,我强烈推荐 KMIP 附加消息编码文档 -
https://docs.oasis-open.org/kmip/kmip-addtl-msg-enc/v1.0/os/kmip- addtl-msg-enc-v1.0-os.html
第 6.1.6 节描述了主要规范中未涵盖的另一种格式:<TTLV tag="0x420001" name="ActivationDate" type="DateTime" value="2001-01-01T10:00:00+10:00"/>
AttributeIndex
是一个可选字段,仅存在于 KMIP v1.x 中——即 KMIP v2.x 消除了该字段。在 KMIP v1.x 中,
AttributeIndex
字段用于区分一个多实例属性与另一个具有相同名称的属性。例如给定的
SymmetricKey
可能有多个
ObjectGroup
属性,通过它们的
AttributeIndex
来区分:
ObjectGroup[3] = "dog"
;
ObjectGroup[8] = "cat"
;
ObjectGroup[13] = "bird"
。在 KMIP v1.x 中,可以为任何属性指定
AttributeIndex
,但对于单实例属性,该字段必须为零 [0](即默认值)。有时必须明确该字段 - 例如仅修改给定多实例属性的多个实例之一时,或者多实例属性的实例零已被删除时。
AttributeIndex
对于单实例和多实例属性的示例用法可以在(例如)KMIP v1.2 测试用例中找到