]> git.0d.be Git - empathy.git/blobdiff - extensions/Authentication_TLS_Certificate.xml
individual-menu: remove link-contacts-activated signal
[empathy.git] / extensions / Authentication_TLS_Certificate.xml
index 1063d085fc0b30142b7d94d250c901f58a3c523d..db1d76fd747ec3ad8cdb68132c59e051c9bd684b 100644 (file)
@@ -17,175 +17,289 @@ License along with this library; if not, write to the Free Software
 Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
   </tp:license>
 
-  <interface name="org.freedesktop.Telepathy.Authentication.TLSCertificate.DRAFT"
-            tp:causes-havoc="experimental">
+  <interface name="org.freedesktop.Telepathy.Authentication.TLSCertificate">
+    <tp:added version="0.19.13">(as stable API)</tp:added>
 
     <tp:docstring>
       This object represents a TLS certificate.
     </tp:docstring>
 
     <tp:simple-type name="Certificate_Data" array-name="Certificate_Data_List"
-                   type="ay">
-      <tp:docstring>
-       The raw data contained in a TLS certificate.
+                    type="ay">
+      <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
+        <p>The raw data contained in a TLS certificate.</p>
+
+        <p>For X.509 certificates (<tp:member-ref>CertificateType</tp:member-ref>
+        = "x509"), this MUST be in DER format, as defined by the
+        <a href="http://www.itu.int/ITU-T/studygroups/com17/languages/X.690-0207.pdf">X.690</a>
+        ITU standard.</p>
+
+        <p>For PGP certificates (<tp:member-ref>CertificateType</tp:member-ref>
+        = "pgp"), this MUST be a binary OpenPGP key as defined by section 11.1
+        of <a href="http://www.rfc-editor.org/rfc/4880.txt">RFC 4880</a>.</p>
       </tp:docstring>
     </tp:simple-type>
 
+    <tp:struct name="TLS_Certificate_Rejection" array-name="TLS_Certificate_Rejection_List">
+      <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
+        <p>Struct representing one reason why a TLS certificate was rejected.</p>
+        <p>Since there can be multiple things wrong with a TLS certificate,
+        arrays of this type are used to represent lists of reasons for
+        rejection. In that case, the most important reason SHOULD be placed
+        first in the list.</p>
+      </tp:docstring>
+
+      <tp:member name="Reason" type="u"
+                 tp:type="TLS_Certificate_Reject_Reason">
+        <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
+          <p>The value of the TLS_Certificate_Reject_Reason enumeration for
+          this certificate rejection.
+          <tp:rationale>
+            Clients that do not understand the <code>Error</code> member,
+            which may be implementation-specific, can use this property to
+            classify rejection reasons into common categories.
+          </tp:rationale>
+         </p>
+        </tp:docstring>
+      </tp:member>
+
+      <tp:member name="Error" type="s"
+                 tp:type="DBus_Error_Name">
+        <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
+          <p>The DBus error name for this certificate rejection.</p>
+          <p>This MAY correspond to the value of the <code>Reason</code> member,
+          or MAY be a more specific D-Bus error name, perhaps implementation-specific.</p>
+        </tp:docstring>
+      </tp:member>
+
+      <tp:member name="Details" type="a{sv}"
+                 tp:type="String_Variant_Map">
+        <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
+          <p>Additional information about why the certificate was rejected.
+          This MAY also include one or more of the following well-known keys:</p>
+          <p>
+          <dl>
+            <dt>user-requested (b)</dt>
+            <dd>True if the error was due to an user-requested rejection of
+            the certificate; False if there was an unrecoverable error in the
+            verification process.</dd>
+            <dt>expected-hostname (s)</dt>
+            <dd>If the rejection reason is Hostname_Mismatch, the hostname that
+            the server certificate was expected to have.</dd>
+            <dt>certificate-hostname (s)</dt>
+            <dd>If the rejection reason is Hostname_Mismatch, the hostname of
+            the certificate that was presented.
+            <tp:rationale>
+              <p>For instance, if you try to connect to gmail.com but are presented
+              with a TLS certificate issued to evil.example.org, the error details
+              for Hostname_Mismatch MAY include:</p>
+              <pre>
+                {
+                  'expected-hostname': 'gmail.com',
+                  'certificate-hostname': 'evil.example.org',
+                }
+              </pre>
+            </tp:rationale>
+            </dd>
+            <dt>debug-message (s)</dt>
+            <dd>Debugging information on the error, corresponding to the
+            message part of a D-Bus error message, which SHOULD NOT be
+            displayed to users under normal circumstances</dd>
+          </dl>
+          </p>
+        </tp:docstring>
+      </tp:member>
+    </tp:struct>
+
     <tp:enum type="u" name="TLS_Certificate_State">
       <tp:docstring>
-       The possible states for a <tp:dbus-ref
-       namespace="org.freedesktop.Telepathy.Authentication">TLSCertificate.DRAFT</tp:dbus-ref>
-       object.
+        The possible states for a <tp:dbus-ref
+        namespace="org.freedesktop.Telepathy.Authentication">TLSCertificate</tp:dbus-ref>
+        object.
       </tp:docstring>
 
-      <tp:enumvalue suffix="None" value="0">
-       <tp:docstring>
-         The certificate has no state associated with it.
-       </tp:docstring>
+      <tp:enumvalue suffix="Pending" value="0">
+        <tp:docstring>
+          The certificate is currently waiting to be accepted or rejected.
+        </tp:docstring>
       </tp:enumvalue>
 
-      <tp:enumvalue suffix="Verified" value="1">
-       <tp:docstring>
-         The certificate has been verified.
-       </tp:docstring>
+      <tp:enumvalue suffix="Accepted" value="1">
+        <tp:docstring>
+          The certificate has been verified.
+        </tp:docstring>
       </tp:enumvalue>
 
       <tp:enumvalue suffix="Rejected" value="2">
-       <tp:docstring>
-         The certificate has been rejected.
-       </tp:docstring>
+        <tp:docstring>
+          The certificate has been rejected.
+        </tp:docstring>
       </tp:enumvalue>
     </tp:enum>
 
     <tp:enum type="u" name="TLS_Certificate_Reject_Reason">
       <tp:docstring>
-       Possible reasons to reject a TLS certificate.
+        Possible reasons to reject a TLS certificate.
       </tp:docstring>
 
-      <tp:enumvalue suffix="None" value="0">
-       <tp:docstring>
-         No reason specified.
-       </tp:docstring>
+      <tp:enumvalue suffix="Unknown" value="0">
+        <tp:docstring>
+          The certificate has been rejected for another reason
+          not listed in this enumeration.
+        </tp:docstring>
       </tp:enumvalue>
 
-      <tp:enumvalue suffix="Other" value="1">
-       <tp:docstring>
-         The certificate has been rejected for another reason
-         not listed in this enumeration.
-       </tp:docstring>
+      <tp:enumvalue suffix="Untrusted" value="1">
+        <tp:docstring>
+          The certificate is not trusted.
+        </tp:docstring>
       </tp:enumvalue>
 
-      <tp:enumvalue suffix="Untrusted" value="2">
-       <tp:docstring>
-         The certificate is not trusted.
-       </tp:docstring>
+      <tp:enumvalue suffix="Expired" value="2">
+        <tp:docstring>
+          The certificate is expired.
+        </tp:docstring>
       </tp:enumvalue>
 
-      <tp:enumvalue suffix="Expired" value="3">
-       <tp:docstring>
-         The certificate is expired.
-       </tp:docstring>
+      <tp:enumvalue suffix="Not_Activated" value="3">
+        <tp:docstring>
+          The certificate is not active yet.
+        </tp:docstring>
       </tp:enumvalue>
 
-      <tp:enumvalue suffix="Not_Activated" value="4">
-       <tp:docstring>
-         The certificate is not active yet.
-       </tp:docstring>
+      <tp:enumvalue suffix="Fingerprint_Mismatch" value="4">
+        <tp:docstring>
+          The certificate provided does not have the expected
+          fingerprint.
+        </tp:docstring>
       </tp:enumvalue>
 
       <tp:enumvalue suffix="Hostname_Mismatch" value="5">
-       <tp:docstring>
-         The hostname certified does not match the provided one.
-       </tp:docstring>
+        <tp:docstring>
+          The hostname certified does not match the provided one.
+        </tp:docstring>
       </tp:enumvalue>
 
       <tp:enumvalue suffix="Self_Signed" value="6">
-       <tp:docstring>
-         The certificate is self-signed.
-       </tp:docstring>
+        <tp:docstring>
+          The certificate is self-signed.
+        </tp:docstring>
       </tp:enumvalue>
 
       <tp:enumvalue suffix="Revoked" value="7">
-       <tp:docstring>
-         The certificate has been revoked.
-       </tp:docstring>
+        <tp:docstring>
+          The certificate has been revoked.
+        </tp:docstring>
       </tp:enumvalue>
 
-      <tp:enumvalue suffix="Insecure_Algorithm" value="8">
-       <tp:docstring>
-         The certificate uses an insecure cipher algorithm.
-       </tp:docstring>
+      <tp:enumvalue suffix="Insecure" value="8">
+        <tp:docstring>
+          The certificate uses an insecure cipher algorithm, or is
+          cryptographically weak.
+        </tp:docstring>
+      </tp:enumvalue>
+
+      <tp:enumvalue suffix="Limit_Exceeded" value="9">
+        <tp:docstring>
+          The length in bytes of the certificate, or the depth of the
+          certificate chain exceed the limits imposed by the crypto
+          library.
+        </tp:docstring>
       </tp:enumvalue>
     </tp:enum>
 
     <property name="State" type="u" access="read"
-             tp:type="TLS_Certificate_State"
-             tp:name-for-bindings="State">
+              tp:type="TLS_Certificate_State"
+              tp:name-for-bindings="State">
       <tp:docstring>
-       The current state of this certificate.
-       State change notifications happen by means of the
-       <tp:member-ref>StateChanged</tp:member-ref> signal.
+        The current state of this certificate.
+        State change notifications happen by means of the
+        <tp:member-ref>Accepted</tp:member-ref> and
+        <tp:member-ref>Rejected</tp:member-ref> signals.
       </tp:docstring>
     </property>
 
-    <property name="RejectReason" type="u" access="read"
-             tp:type="TLS_Certificate_Reject_Reason"
-             tp:name-for-bindings="Reject_Reason">
-      <tp:docstring>
-       The reason why this certificate has been rejected.
+    <property name="Rejections" type="a(usa{sv})" access="read"
+              tp:type="TLS_Certificate_Rejection[]" tp:name-for-bindings="Rejections">
+      <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
+        <p>If the <tp:member-ref>State</tp:member-ref> is Rejected,
+        an array of <tp:type>TLS_Certificate_Rejection</tp:type>
+        structures containing the reason why the certificate is rejected.</p>
+        <p>If the <tp:member-ref>State</tp:member-ref> is not Rejected,
+        this property is not meaningful, and SHOULD be set to an empty
+        array.</p>
+        <p>The first rejection in the list MAY be assumed to be
+        the most important; if the array contains more than one
+        element, the CM MAY either use the values after the first,
+        or ignore them.</p>
       </tp:docstring>
     </property>
 
     <property name="CertificateType" type="s" access="read"
-             tp:name-for-bindings="Certificate_Type">
+              tp:name-for-bindings="Certificate_Type">
       <tp:docstring>
-       The type of this TLS certificate (e.g. 'x509' or 'pgp').
+        The type of this TLS certificate (e.g. 'x509' or 'pgp').
+        <p>This property is immutable</p>
       </tp:docstring>
     </property>
 
     <property name="CertificateChainData" type="aay" access="read"
-             tp:type="Certificate_Data[]" tp:name-for-bindings="Certificate_Chain_Data">
-      <tp:docstring>
-       The RAW PEM-encoded trust chain of this TLS certificate.
+              tp:type="Certificate_Data[]" tp:name-for-bindings="Certificate_Chain_Data">
+      <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
+        <p>One or more TLS certificates forming a trust chain, each encoded as
+        specified by <tp:type>Certificate_Data</tp:type>.</p>
+        <p>The first certificate in the chain MUST be the server certificate,
+        followed by the issuer's certificate, followed by the issuer's issuer
+        and so on.</p>
       </tp:docstring>
     </property>
 
-    <signal name="StateChanged"
-           tp:name-for-bindings="State_Changed">
+    <signal name="Accepted"
+            tp:name-for-bindings="Accepted">
       <tp:docstring>
-       The state of this TLS certificate has changed.
+        The <tp:member-ref>State</tp:member-ref> of this certificate has changed to Accepted.
       </tp:docstring>
-      <arg name="State" type="u" tp:type="TLS_Certificate_State">
-       <tp:docstring>
-         The new state of the TLS certificate.
-       </tp:docstring>
-      </arg>
-      <arg name="Reason" type="u" tp:type="TLS_Certificate_Reject_Reason">
-       <tp:docstring>
-         The reason why the state of the TLS certificate changed.
-       </tp:docstring>
+    </signal>
+
+    <signal name="Rejected"
+            tp:name-for-bindings="Rejected">
+      <tp:docstring>
+        The <tp:member-ref>State</tp:member-ref> of this certificate has changed to Rejected.
+      </tp:docstring>
+      <arg name="Rejections" type="a(usa{sv})" tp:type="TLS_Certificate_Rejection[]">
+        <tp:docstring>
+          The new value of the <tp:member-ref>Rejections</tp:member-ref> property.
+        </tp:docstring>
       </arg>
     </signal>
 
     <method name="Accept" tp:name-for-bindings="Accept">
       <tp:docstring>
-       Accepts this certificate, i.e. marks it as verified.
-       This method doesn't do anything on local certificates.
+        Accepts this certificate, i.e. marks it as verified.
       </tp:docstring>
     </method>
 
     <method name="Reject" tp:name-for-bindings="Reject">
       <tp:docstring>
-       Rejects this certificate. This method doesn't do anything
-       on local certificates.
+        Rejects this certificate.
       </tp:docstring>
-      <arg direction="in" type="u" name="Reason"
-          tp:type="TLS_Certificate_Reject_Reason">
-       <tp:docstring>
-         The reason why this certificate is being rejected.
-       </tp:docstring>
+      <arg direction="in" type="a(usa{sv})" name="Rejections"
+           tp:type="TLS_Certificate_Rejection[]">
+        <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
+          <p>The new value of the <tp:member-ref>Rejections</tp:member-ref> property.</p>
+          <p>This MUST NOT be an empty array.</p>
+        </tp:docstring>
       </arg>
+      <tp:possible-errors>
+        <tp:error name="org.freedesktop.Telepathy.Error.InvalidArgument">
+          <tp:docstring>
+            Raised when the method is called on an object whose <tp:member-ref>State</tp:member-ref>
+            is not <code>Pending</code>, or when the provided rejection list is empty.
+          </tp:docstring>
+        </tp:error>
+      </tp:possible-errors>
     </method>
 
   </interface>
 </node>
+<!-- vim:set sw=2 sts=2 et ft=xml: -->