XML 문서의 일부에 디지털 서명
-
06-07-2019 - |
문제
다음과 유사한 구조를 가진 XML 문서가 있습니다.
<envelop>
<header>blaa</header>
<message>blaa blaa</message>
<footer></footer>
</envelop>
머리글과 메시지 요소에 디지털 서명을 하고 바닥글 요소에 서명을 추가하고 싶습니다.
요소에 서명한 다음 나중에 서명을 확인하려면 어떻게 해야 합니까(.net C# 사용)?
해결책
서명에 XPath 변환을 추가할 수 있어야 합니다.다음과 같아야 합니다.
<Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
<XPath xmlns:dsig="&dsig;">
...
</XPath>
</Transform>
저는 XPath에 능숙하지 않지만 Footer 요소를 제외하는 XPath 표현식을 공식화하는 것은 쉬울 것입니다.(그러나 XPath는 XML-DSIG의 선택적 부분이므로 모든 구현이 이를 지원하는 것은 아닙니다.)
또는 문서를 다음과 같이 재구성할 수 있는 경우
<envelop>
<header>blaa</header>
<message>blaa blaa</message>
<Signature></Signature>
</envelop>
또는
<envelop>
<signedEnvelope>
<header>blaa</header>
<message>blaa blaa</message>
</signedEnvelope>
<Signature></Signature>
</envelop>
Enveloped Signature Transform(첫 번째 경우)을 사용하거나 signedEnvelope 요소(두 번째 경우)에 서명하여 이를 처리할 수 있습니다.
다른 팁
Microsoft 파트너가 있습니다. 그들은 당신이 추가 할 수 있습니다 디지털 서명 XML (다른 모든 플랫폼)의 경우. 제품을 확인하는 것이 좋습니다. COSIGN이라고합니다.
XML 서명에 대한 W3 추천을 따르십시오 http://www.w3.org/2000/09/xmldsig# 기본 구조가 있습니다.
<Signature>
<SignedInfo>
<SignatureMethod />
<CanonicalizationMethod />
<Reference>
<Transforms>
<DigestMethod>
<DigestValue>
</Reference>
<Reference /> etc.
</SignedInfo>
<SignatureValue />
<KeyInfo />
<Object />
</Signature>
더 고급 기능을 원한다면 Xades에 대해 읽으십시오. C#에서는 avalible이라고 생각합니다.
나는이 게시물이 오래된 것을 본다. 그러나 아마도 누군가가 지금 같은 필요를 가지고있을 것이다. 당신이 필요로하는 것은 어떻게 든 xmldsig의 봉투 서명과 같습니다. 차이점은 xmldsig에서 서명 데이터를 서명 마디.
이 작업을 수행하려면 직접 구현해야합니다.
.NET 프레임 워크에 대한 Xades 지원을 제공하기 위해 라이브러리를 개발하는 프로젝트에 참여했습니다.
방금 Xades-Bes에 대한 조기 지원을 제공하는 버전 1.0을 방금 출시했습니다.
당신은 그것을 찾을 수 있습니다 xades .net 프로젝트
소스 코드가 어떻게 든 도움이되기를 바랍니다.
문안 인사.