سؤال

ولدي وثيقة XML وجود بنية مشابهة لما يلي

<envelop>
    <header>blaa</header>
    <message>blaa blaa</message>
    <footer></footer>
</envelop>

وأريد أن رقميا عناصر رأس والرسالة وإضافة التوقيع إلى العنصر تذييل الصفحة.

وكيف يمكنني تسجيل العناصر ومن ثم في وقت لاحق التحقق من صحة التوقيع (باستخدام C # .NET)؟

هل كانت مفيدة؟

المحلول

ويجب أن تكون قادرا على إضافة عنصر XPath-تحويل إلى التوقيع. ينبغي أن ننظر بشيء من هذا القبيل:

       <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
         <XPath xmlns:dsig="&dsig;">
         ...
         </XPath>
       </Transform>

وأنا لا يجيد كسباث، ولكن يجب أن يكون من السهل صياغة التعبير عن كسباث يستبعد تذييل عنصر. (لكن لاحظ أن كسباث هو جزء اختياري من 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>

هل يمكن التعامل معها باستخدام التوقيع يلفها تحويل (الحالة الأولى) أو من خلال التوقيع على عنصر signedEnvelope (الحالة الثانية).

نصائح أخرى

وهناك شريك مايكروسوفت التي يمكن أن تكون جيدة جدا لهذا. انها تسمح لك لإضافة التوقيعات الرقمية لXML (وكذلك جميع منصات أخرى). أوصي فحص المنتج، ويطلق عليه cosign.

لماذا لا تتبع ريكومينديشن W3 للتوقيع XML http://www.w3.org/ 2000/09 / xmldsig # لديها بنية أساسية:

<Signature>
   <SignedInfo>
      <SignatureMethod />
      <CanonicalizationMethod />
      <Reference>
         <Transforms>
         <DigestMethod>
         <DigestValue>
      </Reference>
      <Reference /> etc.
   </SignedInfo>
   <SignatureValue />
   <KeyInfo />
   <Object />
</Signature>

إذا كنت تريد المزيد من المزايا المتقدمة، قرأت عن XAdES - اعتقد انها avalible في ج #

.

وأرى هذا المنصب قديمة، ولكن ربما شخص لديه نفس الحاجة الآن. ما تحتاجه هو بطريقة أو بأخرى مثل توقيع يلفها في XMLDSIG. والفرق هو أن في XMLDSIG لديك لتشمل بيانات التوقيع في التوقيع العقدة.

إذا كنت تريد أن تفعل هذا، لديك لتنفيذ ذلك بنفسك.

وأنا أشارك في مشروع لتطوير مكتبة لتوفير الدعم XAdES ل .NET Framework.

لقد الإصدار 1.0، التي توفر الدعم المبكر لXAdES-BES.

صدر للتو

ويمكنك العثور عليها في XAdES. NET مشروع

وآمل شفرة المصدر قد تساعدك على نحو ما.

والتحيات.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top