Skip to content

Commit

Permalink
Add ProtoXEP: GRE Encrypter: OpenPGP
Browse files Browse the repository at this point in the history
This GRE Encrypter uses OpenPGP to encrypt payload.
  • Loading branch information
goffi-contrib authored and iNPUTmice committed Jan 13, 2025
1 parent a7364df commit d5366b1
Showing 1 changed file with 106 additions and 0 deletions.
106 changes: 106 additions & 0 deletions inbox/gre-encrypter-openpgp.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,106 @@
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE xep SYSTEM 'xep.dtd' [
<!ENTITY % ents SYSTEM 'xep.ent'>
%ents;
]>
<?xml-stylesheet type='text/xsl' href='xep.xsl'?>
<xep>
<header>
<title>GRE Encrypter: OpenPGP</title>
<abstract>This GRE Encrypter uses OpenPGP to encrypt payload.</abstract>

&LEGALNOTICE;
<number>xxxx</number>
<status>ProtoXEP</status>
<type>Standards Track</type>
<sig>Standards</sig>
<approver>Council</approver>
<dependencies>
<spec>XMPP Core</spec>
<spec>XEP-0001</spec>
<spec>XEP-0373</spec>
</dependencies>
<supersedes/>
<supersededby/>
<shortname>gre-encrypter-openpgp</shortname>
<tags>
<tag>gre</tag>
<tag>encrypter</tag>
</tags>
<author>
<firstname>Jérôme</firstname>
<surname>Poisson</surname>
<email>[email protected]</email>
<jid>[email protected]</jid>
</author>
<revision>
<version>0.0.1</version>
<date>2025-01-12</date>
<initials>jp</initials>
<remark><p>First draft.</p></remark>
</revision>
</header>

<section1 topic='Introduction' anchor='intro'>
<p>This XEP defines a GRE Encrypter that uses OpenPGP. It is based on &xep0373; and uses the mechanisms defined there to handle keys.</p>
</section1>

<section1 topic="Requirements" anchor="reqs">
<p>The design goals of this GRE Encrypter are:</p>
<ul>
<li>Compliance with OpenPGP.</li>
<li>Re-use existing mechanisms of &xep0373;.</li>
</ul>
</section1>

<section1 topic="Encryption Process" anchor='encryption-process'>
<p>The encryption process using OpenPGP involves the following steps:</p>
<ol>
<li><strong>Data Preparation</strong>: The client prepares the data to be encrypted according to the specified formatter.</li>
<li><strong>Key Exchange</strong>: The client retrieves or generates the necessary public key(s) from the gateway as specified in &xep0373;.</li>
<li><strong>Encryption</strong>: The payload is encrypted using OpenPGP's public key(s) of recipient(s).</li>
<li><strong>Payload Construction</strong>: The encrypted data is encoded using base64 then wrapped in the &lt;encrypted/&gt; element as described in XEP-0XXX: Gateway Relayed Encryption, with appropriate attributes for formatter and encrypter namespaces.</li>
</ol>
</section1>

<section1 topic="Discovering Support" anchor="disco">
<p>If an entity supports the MIME GRE Formatter, it MUST advertise it by including the "urn:xmpp:gre:encrypter:openpgp:0" discovery feature in response to a &xep0030; information request.</p>
<example caption="Service Discovery Information Request"><![CDATA[
<iq type='get'
from='[email protected]/balcony'
to='some_gateway.example.org'
id='disco1'>
<query xmlns='http://jabber.org/protocol/disco#info'/>
</iq>]]></example>
<example caption="Service Discovery Information Response"><![CDATA[
<iq type='result'
from='some_gateway.example.org'
to='[email protected]/balcony'
id='disco1'>
<query xmlns='http://jabber.org/protocol/disco#info'>
...
<feature var='urn:xmpp:gre:0'/>
<feature var='urn:xmpp:gre:encrypter:openpgp:0'/>
...
</query>
</iq>]]></example>

</section1>

<section1 topic="Security Considerations" anchor="security">
<p>The security consideration of &xep0373; apply.</p>
</section1>

<section1 topic="IANA Considerations" anchor="iana">
<p>This document does not require interaction with &IANA;.</p>
</section1>

<section1 topic='XMPP Registrar Considerations' anchor='registrar'>
<p>TODO</p>
</section1>

<section1 topic="Acknowledgements" anchor="acks">
<p>Thanks to NLNet foundation/NGI Zero Core for funding the work on this specification.</p>
</section1>

</xep>

0 comments on commit d5366b1

Please sign in to comment.