如何将特定 "key" 添加到 BouncyCastle 中的 ASN1EncodableVector?
How to add specific "key" to an ASN1EncodableVector in BouncyCastle?
所以,我问了一个类似的问题 ,但问题已经发生了变化。所以,我会给你一个完整的概述,然后我会问这个问题。
目前,我正在读取 .yml 文件并对其进行解析。然后我将数据存储在 HashMap 中,看起来像这样:
[{p_table=[p_event/Name, p_fault/Name]},
{s_table=[s_event/Name, s_fault/Name]},
{r_table=[r_event/Name, r_fault/Name]}]
现在,我明白如果我想用 bouncycastle 创建一个扩展,我首先必须将我的所有数据添加到 ASN1EncodableVector 中。我正在做的是使用证书来告诉我的 IoT 事物它们可以 subscribe/publish/receive 来自哪些主题。因此,我可以这样做:
while(iterator.hasNext()) {
Entry<String, ArrayList<String>> entry = iterator.next();
ASN1EncodableVector vector = new ASN1EncodableVector
for(String val : entry.getValue()) {
(vector).add(new DERUTF8String(val));
}
allowedTables.add(new DERSequence(vector));
}
这只会添加数组列表中的值,例如 p_event/Name 或 p_fault/Name,有没有办法让我指定这两个 DERUTF8String(s) 属于 p_table ?或者在使用 .add 方法时是否可以使用某种标识符?
那么代码是否可以像这样更改:
(vector).add(new DERUTF8String(val));
至:
(vector).add(new aConstructorToIdentifyWhatTheUTF8BelongsTo(entry.getKey()), new DERUTF8String(val));
您可以嵌套序列,即您可以为每个条目构建一个 DERSequence,然后将它们中的每一个添加到外部 ASN1EncodableVector 并从中生成最终序列。如果值的数量固定为 2,则内部序列可以包含 key/val/val,如您的示例所示。或者你可以有另一个序列来保存值,例如:
SEQUENCE {
SEQUENCE {
"p_table",
SEQUENCE {
"p_event/Name",
"p_fault/Name",
}
},
SEQUENCE {
"s_table",
SEQUENCE {
"s_event/Name",
"s_fault/Name",
"s_other/Name",
}
},
// and so on
}
所以,我问了一个类似的问题
目前,我正在读取 .yml 文件并对其进行解析。然后我将数据存储在 HashMap
[{p_table=[p_event/Name, p_fault/Name]},
{s_table=[s_event/Name, s_fault/Name]},
{r_table=[r_event/Name, r_fault/Name]}]
现在,我明白如果我想用 bouncycastle 创建一个扩展,我首先必须将我的所有数据添加到 ASN1EncodableVector 中。我正在做的是使用证书来告诉我的 IoT 事物它们可以 subscribe/publish/receive 来自哪些主题。因此,我可以这样做:
while(iterator.hasNext()) {
Entry<String, ArrayList<String>> entry = iterator.next();
ASN1EncodableVector vector = new ASN1EncodableVector
for(String val : entry.getValue()) {
(vector).add(new DERUTF8String(val));
}
allowedTables.add(new DERSequence(vector));
}
这只会添加数组列表中的值,例如 p_event/Name 或 p_fault/Name,有没有办法让我指定这两个 DERUTF8String(s) 属于 p_table ?或者在使用 .add 方法时是否可以使用某种标识符?
那么代码是否可以像这样更改:
(vector).add(new DERUTF8String(val));
至:
(vector).add(new aConstructorToIdentifyWhatTheUTF8BelongsTo(entry.getKey()), new DERUTF8String(val));
您可以嵌套序列,即您可以为每个条目构建一个 DERSequence,然后将它们中的每一个添加到外部 ASN1EncodableVector 并从中生成最终序列。如果值的数量固定为 2,则内部序列可以包含 key/val/val,如您的示例所示。或者你可以有另一个序列来保存值,例如:
SEQUENCE {
SEQUENCE {
"p_table",
SEQUENCE {
"p_event/Name",
"p_fault/Name",
}
},
SEQUENCE {
"s_table",
SEQUENCE {
"s_event/Name",
"s_fault/Name",
"s_other/Name",
}
},
// and so on
}