XMLDSig. Укажите ссылку на элемент как выражение XPath - PullRequest
4 голосов
/ 10 января 2012

Кто-то, кто имеет опыт работы с цифровой подписью XML, пожалуйста, помогите.

С http://www.w3.org/TR/xmldsig-core/ Я понял, что в xmldsig я могу использовать такой код

<Signature ..>
  <SignedInfo>
  ...
    <Reference URI="#xpointer(anyXPathExpression)">
    ...

Если у меня есть такой документ

<Document xmlns="my-document">
  <DocumentData>
    <Name>Nobuo's document</Name>
  </DocumentData>
</Document>

И я хочу подписать элемент /Document/DocumentData, я могу использовать такую ​​подпись

<Document xmlns="swis-document">
  <DocumentData>
    <Name>Nobuo's document</Name>
  </DocumentData>
  <Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
    <SignedInfo>
      ...
      <Reference URI="#xpointer(/*[local-name()='Document'][1]/*[local-name()='DocumentData'][1])"> 
      ...

Прав ли я в своих соображениях?

Я пытался указать такой URI при использовании класса SignedXml в .Net Framework.И метод ComputeSignature не удался с CryptoGraphicsException:Malformed reference element.

SignedXml не поддерживает XPath, я полагаю?

...