使用不同的密钥对同一文档中的 Xml 元素进行签名

2024-03-24

业务场景:

  • 更新可以包含包。
  • 包可以包含更改。
  • 每个包裹都必须经过某人的批准。
  • 批准后,不得更改套餐。

要执行更新,必须具有 100% 批准的软件包。

发展思路:

  • 所有数据均保存为 XML 文件。
  • Xml“包”元素将在批准后签署。

Problem:

无论我尝试什么并谷歌搜索,所有examples http://msdn.microsoft.com/en-us/library/ms229745.aspx总是关于签名整个文件或签署子元素整个文档使用相同的密钥。但我想用一个签名每个子元素(包)不同的key,批准包的人的密钥。所以我需要每个元素一个签名。虽然所有 .NET Framework 功能seem为了支持这一点,我得到了奇怪的行为。例如,在对元素进行签名时,您需要提供元素的 URI。如果我为所有包提供相同的 ID,它会验证,如果我为每个元素提供不同的 ID 并在各自的签名中引用此 ID,我只能验证第一个。 ID 的想法首先对我的场景没有意义,因为我的签名与我的元素处于 1:1 关系。

我可以发布代码,但在发布之前,我想知道这样的事情是否可能?我没有看到任何会阻止我想做的事情,但我也没有看到任何迹象表明它should工作也可以。有没有人这样做过,或者有人可以向我指出我尚未找到的资源吗?或者有人有更好的想法如何使用标准来实现要求?


当然可以使用不同的密钥对同一 XML 文档中的不同元素进行签名。这基本上添加了具有不同内部引用的多个签名(#<ID>) 到文档。
需要带有 ID 的内部参考,没有标准支持的解决办法。具有空或缺失 URI 的引用不会not指示要签署父元素,但要签署完整的文档。
如果您无法将 ID 添加到包中,您可以使用非标准方法来实现您的目标,即有效地将每个包视为独立的 XML 文档并将引用 URI 保留为空。但这意味着包含所有包的 XML 文档只能由您的程序进行验证,因为在验证之前它必须将 XML 文档拆分为多个文档。

在 .NET 实现中,如果签名放置在应签名的标签内,则该方法不起作用。这要么是因为我遗漏了某些东西,要么是由于错误。
将签名直接放在根元素内部的顶层是可行的。
可以在以下位置找到有效的实现:我对你另一个问题的回答 https://stackoverflow.com/a/16519603/572644.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用不同的密钥对同一文档中的 Xml 元素进行签名 的相关文章

随机推荐

  • 如何在JPA的BaseEntity中实现equals()和hashcode()方法?

    我有一个BaseEntity类是我的应用程序中所有 JPA 实体的超类 MappedSuperclass public abstract class BaseEntity implements Serializable private st
  • 如何隐藏使用 Electron 构建的 NodeJS 解决方案的源代码(asar 文件)? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我寻找隐藏使用 Electron 构建的解决方案代码的最佳方法 有任何想法吗 使用 Electron 构建解决方案asar 文件不够
  • 如何让BMP填充JPanel

    如何让BMP填满JPanel import java awt Dimension import java awt Graphics import java awt Graphics2D import java awt Image impor
  • 在 Angular 中使用 fxLayoutGap 时,每行最后一个元素的填充问题

    我目前面临一个大问题https www npmjs com package angular flex layout https www npmjs com package angular flex layout图书馆 问题是fxLayout
  • 生成随机日期

    如何生成特定日期范围内的一组 12 个随机日期 我认为以下方法会起作用 sample as Date 1999 01 01 as Date 2000 01 01 12 但结果看起来像是一组随机数字 谢谢 seq有一个类方法Date适用于此
  • LINQ to SQL:并发解析

    鉴于此 LINQ to SQL using var db Database Context var root from post in db Post where post Id rootPostId select post Single
  • Haskell 将 Hom Functor/Monad 称为什么?

    我想在我的代码中使用它 并且不想重复它 但由于它只涉及大量通用单词 如 函数 或 组合 我无法通过搜索找到它 完全具体地说 我正在寻找 instance Functor x gt where fmap f p f p 这是基本的读取器 或环
  • 在 Java Swing 中播放视频

    我正在做一个关于视频隐写术的项目 我想到在Java Swing中播放这2个视频文件 以便更容易地比较文件 所以我想知道我们是否可以在 Swing 中播放视频 请帮帮我 您可能想看看Java媒体框架 http www oracle com t
  • 在 django 中获取相关值而不出现DoesNotExist 错误的最佳实践

    如果我在 Django 中有两个模型 class Blog models Model author models CharField class Post models Model blog models ForeignKey Blog 我
  • AJAX 不处理 302 重定向

    我在外部服务器上有一个数据库 我正在尝试查询该数据库 为此 我将在本地服务器 Tomcat 上创建一个 AJAX 调用 只是 XMLHttpRequest 对象 我没有使用任何 JavaScript 库 到附加了查询的页面 将完全相同的 U
  • 如何将数据从 Windows 窗体保存到 XML 文件?

    我非常确定我必须首先创建 XML 文件的某种模型 对吧 任何帮助将不胜感激 一种简单的方法是创建 NET 类 将数据放入其中然后使用Xml序列化器 http msdn microsoft com en us library system x
  • 在 Google 地图 v3 中绘制两点之间的路线时行为不一致

    场景 我试图在两者之间画一条路线n使用 Google 地图 v3 的点 纬度 局域网 为此 我正在使用DirectionsService它为我提供了一条路线 然后我将该坐标推入MVCArray然后使用 a 绘制该路径Polyline The
  • 饮食例外

    我正在解析一个不时包含格式错误的数据的文件 它抛出一个异常 我想从异常中恢复并忽略格式错误的数据 最好的方法是什么 try parse file catch Exception eat it EDIT 我认为 我的问题没有被很好地理解 我想
  • 如何在Flutter中将CameraController的XFile转换为Image类型?

    扑动的CameraController has a takePicture 从相机拍照的方法 给出了类型Future
  • 有没有办法不用每次验证就使用Google Api?

    我尝试在 PC 上的自动运行中使用 python 上的 API 但我不能 因为每次程序启动时 它都会询问我授权码 这是我的代码 client secret file client secret json flow google auth o
  • postgresql 分区上的唯一索引

    我有一个名为 cdrs 的表 CREATE TABLE cdrs i cdr bigint NOT NULL i cdrs connection bigint NOT NULL i call bigint NOT NULL customer
  • 单线程异步处理

    即使读完之后http krondo com p 1209 http krondo com p 1209 or 异步调用是否总是创建 调用新线程 https stackoverflow com questions 598436 does an
  • 像alert()函数一样停止页面执行

    当我写作时alert Hello 页面执行停止并等待批准才能继续 我有一个div设置为使用 HTML 显示为虚假警报 thisdiv有一个 确定 按钮 我希望页面停止执行 就像警报一样 直到用户单击 确定 是否可以 你不能 只有特殊的内置程
  • 如何将消息从 Flutter 传递到 Native?

    如果需要与特定 API 硬件组件交互 您如何将信息从 Flutter 传递回 Android Native 代码 是否有任何事件通道可以以其他方式发送信息或类似于回调的方式 The 平台频道 https flutter io platfor
  • 使用不同的密钥对同一文档中的 Xml 元素进行签名

    业务场景 更新可以包含包 包可以包含更改 每个包裹都必须经过某人的批准 批准后 不得更改套餐 要执行更新 必须具有 100 批准的软件包 发展思路 所有数据均保存为 XML 文件 Xml 包 元素将在批准后签署 Problem 无论我尝试什