<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="fr">
		<id>http://atelier.adullact.org/plugins/mediawiki/wiki/milimail/index.php?action=history&amp;amp;feed=atom&amp;amp;title=Signed_Receipts_Technical_Documentation</id>
		<title>Signed Receipts Technical Documentation - Historique des versions</title>
		<link rel="self" type="application/atom+xml" href="http://atelier.adullact.org/plugins/mediawiki/wiki/milimail/index.php?action=history&amp;amp;feed=atom&amp;amp;title=Signed_Receipts_Technical_Documentation"/>
		<link rel="alternate" type="text/html" href="http://atelier.adullact.org/plugins/mediawiki/wiki/milimail/index.php?title=Signed_Receipts_Technical_Documentation&amp;action=history"/>
		<updated>2026-05-02T15:20:01Z</updated>
		<subtitle>Historique pour cette page sur le wiki</subtitle>
		<generator>MediaWiki 1.27.4</generator>

	<entry>
		<id>http://atelier.adullact.org/plugins/mediawiki/wiki/milimail/index.php?title=Signed_Receipts_Technical_Documentation&amp;diff=161&amp;oldid=prev</id>
		<title>Rfairise le 2 septembre 2010 à 15:55</title>
		<link rel="alternate" type="text/html" href="http://atelier.adullact.org/plugins/mediawiki/wiki/milimail/index.php?title=Signed_Receipts_Technical_Documentation&amp;diff=161&amp;oldid=prev"/>
				<updated>2010-09-02T15:55:45Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;tr style='vertical-align: top;' lang='fr'&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Version précédente&lt;/td&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Version du 2 septembre 2010 à 15:55&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Ligne 1 :&lt;/td&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Ligne 1 :&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-empty&quot;&gt;&amp;#160;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;+&lt;/td&gt;
  &lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{lang|Signed Receipts Technical Documentation|Signed Receipts Technical Documentation/fr}}&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&amp;#160;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;gt; [[Documentation]] &amp;gt; [[Trustedbird]] &amp;gt; [[Signed Receipts|Signed Receipt]] &amp;gt; [[Signed Receipts Technical Documentation|Technical Documentation]]&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&amp;#160;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;gt; [[Documentation]] &amp;gt; [[Trustedbird]] &amp;gt; [[Signed Receipts|Signed Receipt]] &amp;gt; [[Signed Receipts Technical Documentation|Technical Documentation]]&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&amp;#160;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&amp;#160;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Rfairise</name></author>	</entry>

	<entry>
		<id>http://atelier.adullact.org/plugins/mediawiki/wiki/milimail/index.php?title=Signed_Receipts_Technical_Documentation&amp;diff=52&amp;oldid=prev</id>
		<title>Rfairise : Page créée avec « &gt; Documentation &gt; Trustedbird &gt; Signed Receipt &gt; Technical Documentation   == Specifications ==  The r… »</title>
		<link rel="alternate" type="text/html" href="http://atelier.adullact.org/plugins/mediawiki/wiki/milimail/index.php?title=Signed_Receipts_Technical_Documentation&amp;diff=52&amp;oldid=prev"/>
				<updated>2010-09-02T13:21:42Z</updated>
		
		<summary type="html">&lt;p&gt;Page créée avec « &amp;gt; &lt;a href=&quot;/plugins/mediawiki/wiki/milimail/index.php/Documentation&quot; title=&quot;Documentation&quot;&gt;Documentation&lt;/a&gt; &amp;gt; &lt;a href=&quot;/plugins/mediawiki/wiki/milimail/index.php/Trustedbird&quot; title=&quot;Trustedbird&quot;&gt;Trustedbird&lt;/a&gt; &amp;gt; &lt;a href=&quot;/plugins/mediawiki/wiki/milimail/index.php/Signed_Receipts&quot; title=&quot;Signed Receipts&quot;&gt;Signed Receipt&lt;/a&gt; &amp;gt; &lt;a href=&quot;/plugins/mediawiki/wiki/milimail/index.php/Signed_Receipts_Technical_Documentation&quot; title=&quot;Signed Receipts Technical Documentation&quot;&gt;Technical Documentation&lt;/a&gt;   == Specifications ==  The r… »&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Nouvelle page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;gt; [[Documentation]] &amp;gt; [[Trustedbird]] &amp;gt; [[Signed Receipts|Signed Receipt]] &amp;gt; [[Signed Receipts Technical Documentation|Technical Documentation]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Specifications ==&lt;br /&gt;
&lt;br /&gt;
The reference for the implementation of this functionality is the [http://www.ietf.org/rfc/rfc2634.txt RFC&amp;amp;nbsp;2634]&lt;br /&gt;
&lt;br /&gt;
Additional resources:&lt;br /&gt;
* http://fr.wikipedia.org/wiki/Multipurpose_Internet_Mail_Extensions&lt;br /&gt;
* http://tools.ietf.org/html/rfc1847&lt;br /&gt;
&lt;br /&gt;
== Architecture ==&lt;br /&gt;
&lt;br /&gt;
=== Synthetic presentation of the architecture of the extension ===&lt;br /&gt;
&lt;br /&gt;
This functionality is in the list of features to be implemented by the Mozilla foundation: http://www.mozilla.org/projects/security/pki/nss/smime/. So, it is integrated to the source code of Thunderbird, without relaying on an extension. Furthermore, this make more simple the addition of this functionality, because we need to update the heart of the product.&lt;br /&gt;
&lt;br /&gt;
The heart of this implementation is to add attributes to the signature of a message. A message with a signed receipt request must be signed. When receiving such a message, theses attributes are decoded in order to send back a signed receipt.&lt;br /&gt;
&lt;br /&gt;
This functionality is going to be integrated with the official source code by Mozilla: https://bugzilla.mozilla.org/show_bug.cgi?id=386313&lt;br /&gt;
&lt;br /&gt;
=== GUI files ===&lt;br /&gt;
&lt;br /&gt;
To send a message with a signed receipt request, it is mandatory to sign the message. So, the signed receipt request is bound to the security layer.&lt;br /&gt;
&lt;br /&gt;
At the GUI level, signing is implemented by a flag ''signMessage'', encapsulated in a [http://www.xulplanet.com/references/xpcomref/ifaces/nsIMsgSMIMECompFields.html nsIMsgSMIMECompFields] object. The whole code handling this flag is contained in the JS built-in library ''msgCompSMIMEOverlay.js''.&lt;br /&gt;
&lt;br /&gt;
Then, the object [http://www.xulplanet.com/references/xpcomref/ifaces/nsIMsgSMIMECompFields.html nsIMsgSMIMECompFields] is forwarded to the XPCOM layer, that handles the signing. So, this class has been updated to add a flag for the signed receipt request. Furthermore, the GUI has been updated so that the user can choose this option.&lt;br /&gt;
&lt;br /&gt;
[[Image:SignedReceipt_Options1_fr.gif]]&lt;br /&gt;
&lt;br /&gt;
[[Image:SignedReceipt_Options2_fr.gif]]&lt;br /&gt;
&lt;br /&gt;
=== XPCOM files ===&lt;br /&gt;
&lt;br /&gt;
==== Message sending ====&lt;br /&gt;
&lt;br /&gt;
The implementation is mainly located in the file ''nsMsgComposeSecure.cpp'' in the [http://www.xulplanet.com/references/xpcomref/ifaces/nsIMsgComposeSecure.html nsMsgComposeSecure] class.&lt;br /&gt;
&lt;br /&gt;
This implementation mainly consists in adding attributes in the signature of a message.&lt;br /&gt;
When sending a message, the built-in Thunderbird API build the following data structure :&lt;br /&gt;
&lt;br /&gt;
[[Image:SignedReceipt_struct1_fr.gif]]&lt;br /&gt;
&lt;br /&gt;
The attributes to add are located in the structure ''NSSCMSSignerInfo'' and are of type ''NSSCMSAttribute''.&lt;br /&gt;
&lt;br /&gt;
A ''NSSCMSAttribute'' structure is defined as:&lt;br /&gt;
&lt;br /&gt;
[[Image:SignedReceipt_struct2_fr.gif]]&lt;br /&gt;
&lt;br /&gt;
The attribute to add is a ''receiptRequest'', which structure is defined by the [http://www.ietf.org/rfc/rfc2634.txt RFC&amp;amp;nbsp;2634].&lt;br /&gt;
&lt;br /&gt;
==== Message receiving ====&lt;br /&gt;
&lt;br /&gt;
When receiving a message with a signed receipt request, this structure is decoded and a signed receipt is generated.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Receipt Request ASN.1 Syntax ===&lt;br /&gt;
&lt;br /&gt;
 ReceiptRequest ::= SEQUENCE {&lt;br /&gt;
   signedContentIdentifier ContentIdentifier,&lt;br /&gt;
   receiptsFrom ReceiptsFrom,&lt;br /&gt;
   receiptsTo SEQUENCE SIZE (1..ub-receiptsTo)) OF GeneralNames }&lt;br /&gt;
 &lt;br /&gt;
 ub-receiptsTo INTEGER ::= 16&lt;br /&gt;
 &lt;br /&gt;
 id-aa-receiptRequest OBJECT IDENTIFIER ::= { iso(1) member-body(2)&lt;br /&gt;
     us(840) rsadsi(113549) pkcs(1) pkcs-9(9) smime(16) id-aa(2) 1}&lt;br /&gt;
 &lt;br /&gt;
 ContentIdentifier ::= OCTET STRING&lt;br /&gt;
 &lt;br /&gt;
 id-aa-contentIdentifier OBJECT IDENTIFIER ::= { iso(1) member-body(2)&lt;br /&gt;
     us(840) rsadsi(113549) pkcs(1) pkcs-9(9) smime(16) id-aa(2) 7}&lt;br /&gt;
 &lt;br /&gt;
 ReceiptsFrom ::= CHOICE {&lt;br /&gt;
   allOrFirstTier [0] AllOrFirstTier,&lt;br /&gt;
   -- formerly &amp;quot;allOrNone [0]AllOrNone&amp;quot;&lt;br /&gt;
   receiptList [1] SEQUENCE OF GeneralNames }&lt;br /&gt;
 &lt;br /&gt;
 AllOrFirstTier ::= INTEGER { -- Formerly AllOrNone&lt;br /&gt;
   allReceipts (0),&lt;br /&gt;
   firstTierRecipients (1) }&lt;br /&gt;
&lt;br /&gt;
=== Receipt ASN.1 Syntax ===&lt;br /&gt;
&lt;br /&gt;
 Receipt ::= SEQUENCE {&lt;br /&gt;
   version ESSVersion,&lt;br /&gt;
   contentType ContentType,&lt;br /&gt;
   signedContentIdentifier ContentIdentifier,&lt;br /&gt;
   originatorSignatureValue OCTET STRING }&lt;br /&gt;
 &lt;br /&gt;
 id-ct-receipt OBJECT IDENTIFIER ::= { iso(1) member-body(2) us(840)&lt;br /&gt;
     rsadsi(113549) pkcs(1) pkcs-9(9) smime(16) id-ct(1) 1}&lt;br /&gt;
 &lt;br /&gt;
 ESSVersion ::= INTEGER  { v1(1) }&lt;/div&gt;</summary>
		<author><name>Rfairise</name></author>	</entry>

	</feed>