验证iOS MDM消息的分离签名(Mdm-Signature)

时间:2015-03-12 04:41:26

标签: java ios mdm

我已阅读verifying detached signature with BC,但我仍然不知道如何从iOS设备验证MDM消息的Mdm-Signature。

Apple的移动设备管理协议参考文档如下:

  

如果MDM有效内容中的SignMessage字段的值设置为   是的,来自设备的每条消息都会附加一条消息   名为Mdm-Signature的HTTP标头。此标头包含BASE64编码   CMS已分离邮件的签名。

所以我将SignMessage字段的值设置为true。然后设备携带一个名为Mdm-Signature的标题。我使用上面链接文章提供的方法,verifySign(byte [] signedData,byte [] bPlainText)如下所示(我修改了返回类型为boolean。如果验证成功则返回true):

boolean verified = verifySign(Base64.decode(request.getHeader("Mdm-Signature")),
                   IOUtils.toString(request.getInputStream(), "utf-8").getBytes());

(上面的变量“request”是传递给HttpServlet类的doPut方法的HttpServletRequest类的实例。)

但“已验证”的值为 false

所以我想知道的是究竟我必须传递给方法verifySign()

另见:

  
      
  • 客户端在其发送给服务器的HTTP PUT消息中包含“Mdm-Signature:”标头
  •   
  • 此签名是base-64编码,.DER格式,SMIME签名
  •   
  • 签名的内容不包含在签名中,而是PUT本身的内容 - 正在发送的消息
      到MDM服务器
  •   
  • 最后,使用在MDM注册时发送到设备的私有身份密钥进行签名
  •   

这些来自this page。 我还想知道这些是服务器是否需要客户端公钥来验证分离签名。不需要吗?

0 个答案:

没有答案