Microsoft Updater Application Block 1.4.1 验证器设计 [翻译]

news/2024/7/5 5:36:49

Microsoft Updater Application Block 验证器设计

译者:Tony Qu

Updater Application Block提供了一个可扩展的验证器架构,这使通过签名或哈希号验证下载文件成为可能。验证器架构支持在服务器上生成签名和在客户端上确认这些签名。
图1 展示了服务器端的验证架构

通过图1我们可以了解到验证器架构的以下几个方面
1.  manifest工具会初始化一个用户指定类型的验证器。所有的验证器必须实现IValidator接口。用户还必须为验证器指定一个密钥,传递给验证器。
2. 验证器为位于服务器端的应用程序升级目录中的每一个文件生成一个签名,生成的值会被写入manifest文件中。
3. 最后,验证器会为每一个manifest文件计算出一个签名,该签名会被写入manifest文件中的根节点的signature属性中。

注意:更多有关manifest文件设计的信息,可以参考 服务器端manifest文件设计

当manifest文件和升级文件被下载到客户端之后,必须通过验证签名来确认下载的文件未损坏。
图2 展示了客户端的验证架构。

通过图2,我们可以了解验证架构的以下几个方面:
1. ApplicationUpdaterManager类使用UpdaterConfiguration类的Instance属性读取配置文件的 节。这个部分包含将要被使用的验证器的完整集合和类型名。更多有关应用程序配置文件设计的信息可以参考 应用程序升级器配置文件设计。
2. ValidatorFactory类用于初始化指定的验证器,该验证器实现了IValidator接口。ValidatorFactory类还会传递 节点的配置信息到验证器的Init方法中。这个配置节通常包含一个密钥,该密钥可用来验证签名。
3. 最后,ApplicationUpdaterManager类为每一个待升级的应用程序初始化一个DownloaderManager类,并把它传给验证器。Downloader会不时地检查下载任务的状态是否为JobStatus.Ready,并且使用验证器验证下载文件的签名。当文件通过验证后,DownloaderManager把文件从临时目录中拷贝到适当的应用程序目录,并且执行一个在manifest文件中指定的后处理器[post processor]。你可以通过修改 元素的useValidation属性为false禁止一个应用程序的验证工作,在这种情况下,DownloaderManager将只是把所有的下载文件拷贝到它们的应用程序目录中,并允许特定的后处理器。

注意:使用useValidation属性时要小心,如果把值设置为false将降低安全性,并有可能造成未验证的代码程序在客户端上安装。

Updater Application Block包含两个验证器。一个是KeyValidator,使用对称加密密钥生成和验证签名。一个是RSAValidator,使用公钥/私钥对实现验证。你可以使用其中的任何一个验证器,或者你可以通过实现IValidator接口开发你自己定制的验证器。





http://www.niftyadmin.cn/n/3656216.html

相关文章

Microsoft Updater Application Block 1.3.1 下载器设计 [翻译]

Microsoft Updater Application Block 下载器设计 译者:Tony Qu Updater Application Block使用一个可扩展的下载器架构从指定的服务器上拷贝manifest文件和应用程序升级文件到客户端。 图1 展示了下载器架构 图1 包括下列过程 1. ApplicationUpdateManager类使用U…

av_buffersrc_add_frame返回-22

合并音频流时调用av_buffersrc_add_frame()返回-22,切换为av_buffersrc_add_frame_flags(),并指定AV_BUFFERSRC_FLAG_NO_CHECK_FORMAT参数,正常通过。av_buffersrc_add_frame()根本问题参数问题,音频滤镜初始化参数配置错误&#…

Microsoft Updater Application Block 1.1 设计篇 [翻译]

Microsoft Updater Application Block 设计篇 译者:Tony Qu Updater Application Block为企业环境中解决桌面应用程序的更新问题提供了一个“无接触”解决方案。它包含一系列组件,每一个组件被设计用来实现更新过程中的一个特定的角色。 高级设计 图1展示…

ring buffer 环形队列 C++实现

RingBuff.h实现&#xff1a; #include <iostream>using namespace std;template <class T> class RingBuff { private:unsigned int m_size;int m_in;int m_out;T* m_data;public:RingBuff (unsigned int size): m_size(size), m_in(0), m_out(0){m_data new T[m…

Microsoft Updater Application Block 1.2.1 核心设计(core design) [翻译]

Microsoft Updater Application Block 核心设计(core design) 译者&#xff1a;Tony Qu Updater Application Block由一个核心应用程序升级器&#xff08;集合[assembly]名称为ApplicationUpdater&#xff09;和许多额外的assembly接口和工具组成。 Updater Application Bl…

pcm格式封装wav

PCM PCM编码是直接存储声波采样被量化后所产生的非压缩数据,故被视为单纯的无损耗编码格式,其优点是可获得高质量的音频信号。 PCM是模拟音频信号经模数转换&#xff08;A/D变换&#xff09;直接形成的二进制序列&#xff0c;该文件没有附加的文件头和文件结束标志。 要将这样…

Microsoft Updater Application Block 1.2.2 ApplicationUpdater assembly设计 [翻译]

Microsoft Updater Application Block ApplicationUpdater assembly设计 译者&#xff1a;Tony Qu ApplicationUpdater集合提供了Updater Application Block的核心功能。 ApplicationUpdater集合类 ApplicationUpdater集合包含许多类&#xff0c;可以分为以下几类&#xff1…

音视频 协议 RTP/RTCP、TCP、UDP、RTMP、RTSP

https://www.cnblogs.com/xiaohexiansheng/articles/8288924.html