[SCM] ktp-common-internals packaging branch, master, updated. debian/15.12.1-2-1839-gf0635e9
Maximiliano Curia
maxy at moszumanska.debian.org
Mon May 9 09:08:23 UTC 2016
Gitweb-URL: http://git.debian.org/?p=pkg-kde/applications/ktp-common-internals.git;a=commitdiff;h=fb1837f
The following commit has been merged in the master branch:
commit fb1837fbb803013b9a7b8ad2b81bbd3bcbbdc062
Author: Marcin Ziemiński <zieminn at gmail.com>
Date: Fri Aug 8 15:29:15 2014 +0200
Implemented SMP protocol handling.
Signed-off-by: Marcin Ziemiński <zieminn at gmail.com>
---
otr-proxy/KTpProxy/otr-manager.cpp | 39 +++-
otr-proxy/KTpProxy/otr-proxy-channel-adaptee.cpp | 35 +++
otr-proxy/KTpProxy/otr-proxy-channel-adaptee.h | 11 +
otr-proxy/KTpProxy/otr-session.cpp | 98 ++++++--
otr-proxy/KTpProxy/otr-session.h | 27 ++-
otr-proxy/KTpProxy/svc-channel-proxy.cpp | 46 ++++
otr-proxy/KTpProxy/svc-channel-proxy.h | 187 ++++++++++++++--
otr-proxy/spec/ChannelProxy_Interface_OTR.xml | 85 +++++++
otr-proxy/test/lib/test-session.cpp | 6 -
otr-proxy/test/lib/test-session.h | 1 -
otr-proxy/test/otr-test.cpp | 272 ++++++++++++++++++++++-
11 files changed, 744 insertions(+), 63 deletions(-)
diff --git a/otr-proxy/KTpProxy/otr-manager.cpp b/otr-proxy/KTpProxy/otr-manager.cpp
index 5bf6024..2aaa8ae 100644
--- a/otr-proxy/KTpProxy/otr-manager.cpp
+++ b/otr-proxy/KTpProxy/otr-manager.cpp
@@ -207,12 +207,41 @@ namespace {
ConnContext *context, unsigned short progress_percent,
char *question)
{
- Q_UNUSED(opdata);
- Q_UNUSED(smp_event);
- Q_UNUSED(context);
Q_UNUSED(progress_percent);
- Q_UNUSED(question);
- // TODO
+
+ Session *session = reinterpret_cast<Session*>(opdata);
+ kDebug() << session->context().accountName;
+
+ switch (smp_event) {
+ case OTRL_SMPEVENT_NONE:
+ break;
+ case OTRL_SMPEVENT_ASK_FOR_SECRET:
+ session->onSMPQuery(QLatin1String(""));
+ break;
+ case OTRL_SMPEVENT_ASK_FOR_ANSWER:
+ session->onSMPQuery(QLatin1String(question));
+ break;
+ case OTRL_SMPEVENT_IN_PROGRESS:
+ break;
+ case OTRL_SMPEVENT_SUCCESS:
+ session->onSMPFinished(true);
+ break;
+ case OTRL_SMPEVENT_FAILURE:
+ session->onSMPFinished(false);
+ break;
+ case OTRL_SMPEVENT_ABORT:
+ session->abortSMPAuthentiaction(context);
+ session->onSMPAborted();
+ break;
+ case OTRL_SMPEVENT_CHEATED:
+ session->abortSMPAuthentiaction(context);
+ session->onSMPCheated();
+ break;
+ case OTRL_SMPEVENT_ERROR:
+ session->abortSMPAuthentiaction(context);
+ session->onSMPError();
+ break;
+ }
}
void handle_msg_event(void *opdata, OtrlMessageEvent msg_event,
diff --git a/otr-proxy/KTpProxy/otr-proxy-channel-adaptee.cpp b/otr-proxy/KTpProxy/otr-proxy-channel-adaptee.cpp
index 2a2807e..604fbd3 100644
--- a/otr-proxy/KTpProxy/otr-proxy-channel-adaptee.cpp
+++ b/otr-proxy/KTpProxy/otr-proxy-channel-adaptee.cpp
@@ -110,6 +110,11 @@ OtrProxyChannel::Adaptee::Adaptee(OtrProxyChannel *pc,
connect(chan.data(), SIGNAL(invalidated(Tp::DBusProxy*,const QString&,const QString&)), SLOT(onChannelClosed()));
connect(&otrSes, SIGNAL(trustLevelChanged(TrustLevel)), SLOT(onTrustLevelChanged(TrustLevel)));
connect(&otrSes, SIGNAL(sessionRefreshed()), SIGNAL(sessionRefreshed()));
+ connect(&otrSes, SIGNAL(peerAuthenticationRequested(const QString&)), SIGNAL(peerAuthenticationRequested(const QString&)));
+ connect(&otrSes, SIGNAL(peerAuthenticationConcluded(bool)), SIGNAL(peerAuthenticationConcluded(bool)));
+ connect(&otrSes, SIGNAL(peerAuthenticationAborted()), SIGNAL(peerAuthenticationAborted()));
+ connect(&otrSes, SIGNAL(peerAuthenticationError()), SIGNAL(peerAuthenticationError()));
+ connect(&otrSes, SIGNAL(peerAuthenticationCheated()), SIGNAL(peerAuthenticationCheated()));
sender = channel->connection()->selfHandle();
}
@@ -190,6 +195,11 @@ void OtrProxyChannel::Adaptee::disconnectProxy(
disconnect(chan.data(), SIGNAL(pendingMessageRemoved(const Tp::ReceivedMessage&)),
this, SLOT(onPendingMessageRemoved(const Tp::ReceivedMessage&)));
+ disconnect(ps, SIGNAL(keyGenerationStarted(const QString&)),
+ this, SLOT(onKeyGenerationStarted(const QString&)));
+ disconnect(ps, SIGNAL(keyGenerationFinished(const QString&, bool)), this,
+ SLOT(onKeyGenerationFinished(const QString&, bool)));
+
isConnected = false;
messages.clear();
context->setFinished();
@@ -335,6 +345,31 @@ void OtrProxyChannel::Adaptee::trustFingerprint(const QString& fingerprint, bool
context->setFinished();
}
+void OtrProxyChannel::Adaptee::startPeerAuthentication(const QString &question, const QString &secret,
+ const Tp::Service::ChannelProxyInterfaceOTRAdaptor::StartPeerAuthenticationContextPtr &ctx)
+{
+ if(question.isEmpty()) {
+ otrSes.initSMPSecret(secret);
+ } else {
+ otrSes.initSMPQuery(question, secret);
+ }
+ ctx->setFinished();
+}
+
+void OtrProxyChannel::Adaptee::respondPeerAuthentication(const QString &secret,
+ const Tp::Service::ChannelProxyInterfaceOTRAdaptor::RespondPeerAuthenticationContextPtr &ctx)
+{
+ otrSes.respondSMPAuthentication(secret);
+ ctx->setFinished();
+}
+
+void OtrProxyChannel::Adaptee::abortPeerAuthentication(
+ const Tp::Service::ChannelProxyInterfaceOTRAdaptor::AbortPeerAuthenticationContextPtr &ctx)
+{
+ otrSes.abortSMPAuthentiaction();
+ ctx->setFinished();
+}
+
void OtrProxyChannel::Adaptee::onMessageReceived(const Tp::ReceivedMessage &receivedMessage)
{
const uint id = receivedMessage.header()[QLatin1String("pending-message-id")].variant().toUInt(nullptr);
diff --git a/otr-proxy/KTpProxy/otr-proxy-channel-adaptee.h b/otr-proxy/KTpProxy/otr-proxy-channel-adaptee.h
index a2949f3..9777eb1 100644
--- a/otr-proxy/KTpProxy/otr-proxy-channel-adaptee.h
+++ b/otr-proxy/KTpProxy/otr-proxy-channel-adaptee.h
@@ -78,6 +78,12 @@ class OtrProxyChannel::Adaptee : public QObject
void trustFingerprint(const QString& fingerprint, bool trust,
const Tp::Service::ChannelProxyInterfaceOTRAdaptor::TrustFingerprintContextPtr &context);
+ void startPeerAuthentication(const QString &question, const QString &secret,
+ const Tp::Service::ChannelProxyInterfaceOTRAdaptor::StartPeerAuthenticationContextPtr &ctx);
+ void respondPeerAuthentication(const QString &secret,
+ const Tp::Service::ChannelProxyInterfaceOTRAdaptor::RespondPeerAuthenticationContextPtr &ctx);
+ void abortPeerAuthentication(const Tp::Service::ChannelProxyInterfaceOTRAdaptor::AbortPeerAuthenticationContextPtr &ctx);
+
void onMessageReceived(const Tp::ReceivedMessage &receivedMessage);
void onPendingMessageRemoved(const Tp::ReceivedMessage &receivedMessage);
void onPendingSendFinished(Tp::PendingOperation *pendingSend);
@@ -95,6 +101,11 @@ class OtrProxyChannel::Adaptee : public QObject
void sessionRefreshed();
void closed();
void trustLevelChanged(uint trustLevel);
+ void peerAuthenticationRequested(const QString&);
+ void peerAuthenticationConcluded(bool);
+ void peerAuthenticationAborted();
+ void peerAuthenticationError();
+ void peerAuthenticationCheated();
private:
Tp::Service::ChannelProxyInterfaceOTRAdaptor *adaptor;
diff --git a/otr-proxy/KTpProxy/otr-session.cpp b/otr-proxy/KTpProxy/otr-session.cpp
index 25a2dad..8e3ac7d 100644
--- a/otr-proxy/KTpProxy/otr-session.cpp
+++ b/otr-proxy/KTpProxy/otr-session.cpp
@@ -98,11 +98,7 @@ namespace OTR
Fingerprint* Session::getFingerprint() const
{
- ConnContext *context = otrl_context_find(userstate->userState(),
- ctx.recipientName.toLocal8Bit(),
- ctx.accountName.toLocal8Bit(),
- ctx.protocol.toLocal8Bit(),
- instance, 0, NULL, NULL, NULL);
+ ConnContext *context = findContext();
if(context && context->active_fingerprint) {
return context->active_fingerprint;
@@ -111,6 +107,15 @@ namespace OTR
}
}
+ ConnContext* Session::findContext() const
+ {
+ return otrl_context_find(userstate->userState(),
+ ctx.recipientName.toLocal8Bit(),
+ ctx.accountName.toLocal8Bit(),
+ ctx.protocol.toLocal8Bit(),
+ instance, 0, NULL, NULL, NULL);
+ }
+
QString Session::remoteFingerprint() const
{
Fingerprint *fp = getFingerprint();
@@ -132,12 +137,7 @@ namespace OTR
return;
}
- ConnContext *context = otrl_context_find(userstate->userState(),
- ctx.recipientName.toLocal8Bit(),
- ctx.accountName.toLocal8Bit(),
- ctx.protocol.toLocal8Bit(),
- instance, 0, NULL, NULL, NULL);
-
+ ConnContext *context = findContext();
otrl_context_force_plaintext(context);
}
@@ -262,6 +262,45 @@ namespace OTR
return result;
}
+ void Session::initSMPQuery(const QString &question, const QString &secret)
+ {
+ otrl_message_initiate_smp_q(userstate->userState(),
+ &global::appOps,
+ this,
+ findContext(),
+ (const char*)question.toLocal8Bit().data(),
+ (unsigned char*)secret.toLocal8Bit().data(),
+ secret.length());
+ }
+
+ void Session::initSMPSecret(const QString &secret)
+ {
+ otrl_message_initiate_smp(userstate->userState(),
+ &global::appOps,
+ this,
+ findContext(),
+ (unsigned char*)secret.toLocal8Bit().data(),
+ secret.length());
+ }
+
+ void Session::abortSMPAuthentiaction(ConnContext *context)
+ {
+ if(context == NULL) {
+ context = findContext();
+ }
+ otrl_message_abort_smp(userstate->userState(), &global::appOps, this, context);
+ }
+
+ void Session::respondSMPAuthentication(const QString &answer)
+ {
+ otrl_message_respond_smp(userstate->userState(),
+ &global::appOps,
+ this,
+ findContext(),
+ (unsigned char*)answer.toLocal8Bit().data(),
+ answer.length());
+ }
+
TrustFpResult Session::trustFingerprint(bool trust)
{
Fingerprint* fp = getFingerprint();
@@ -287,17 +326,42 @@ namespace OTR
if(context != nullptr) {
instance = context->their_instance;
}
- emit trustLevelChanged(trustLevel);
+ Q_EMIT trustLevelChanged(trustLevel);
}
void Session::onSessionRefreshed()
{
- emit sessionRefreshed();
+ Q_EMIT sessionRefreshed();
}
void Session::onNewFingerprintReceived(const QString &fingerprint)
{
- emit newFingerprintReceived(fingerprint);
+ Q_EMIT newFingerprintReceived(fingerprint);
+ }
+
+ void Session::onSMPFinished(bool success)
+ {
+ Q_EMIT authenticationFinished(success);
+ }
+
+ void Session::onSMPError()
+ {
+ Q_EMIT authenticationError();
+ }
+
+ void Session::onSMPAborted()
+ {
+ Q_EMIT authenticationAborted();
+ }
+
+ void Session::onSMPCheated()
+ {
+ Q_EMIT authenticationCheated();
+ }
+
+ void Session::onSMPQuery(const QString &question)
+ {
+ Q_EMIT authenticationRequested(question);
}
// -------- ProxySession --------------------------------------------
@@ -312,12 +376,6 @@ namespace OTR
pca->processOTRmessage(message);
}
- void ProxySession::handleSmpEvent(OtrlSMPEvent smpEvent)
- {
- // TODO implement
- Q_UNUSED(smpEvent);
- }
-
int ProxySession::recipientStatus() const
{
if(pca->channel()->hasChatStateInterface()) {
diff --git a/otr-proxy/KTpProxy/otr-session.h b/otr-proxy/KTpProxy/otr-session.h
index 2d3c43a..eb1a5b7 100644
--- a/otr-proxy/KTpProxy/otr-session.h
+++ b/otr-proxy/KTpProxy/otr-session.h
@@ -79,27 +79,45 @@ namespace OTR
void stopSession();
CryptResult encrypt(Message &message);
CryptResult decrypt(Message &message);
- void initSMPQuery();
- void initSMPSecret();
+
+ void initSMPQuery(const QString &question, const QString &secret);
+ void initSMPSecret(const QString &secret);
+ void abortSMPAuthentiaction(ConnContext *context = NULL);
+ void respondSMPAuthentication(const QString &answer);
+
TrustFpResult trustFingerprint(bool trust);
- // functions called by libotr
+ // functions called by libotr ---------------------------------------
virtual void handleMessage(const Message &message) = 0;
- virtual void handleSmpEvent(OtrlSMPEvent smpEvent) = 0;
virtual int recipientStatus() const = 0;
virtual unsigned int maxMessageSize() const = 0;
+
void onTrustLevelChanged(TrustLevel trustLevel, const ConnContext *context);
void onSessionRefreshed();
void onNewFingerprintReceived(const QString &fingeprint);
+ void onSMPFinished(bool success);
+ void onSMPError();
+ void onSMPAborted();
+ void onSMPCheated();
+ void onSMPQuery(const QString &question);
+
private:
Fingerprint* getFingerprint() const;
+ ConnContext* findContext() const;
Q_SIGNALS:
void trustLevelChanged(TrustLevel trustLevel);
void sessionRefreshed();
void newFingerprintReceived(const QString &fingeprint);
+ void authenticationFinished(bool success);
+ void authenticationError();
+ void authenticationAborted();
+ void authenticationCheated();
+ /** empty string if secret */
+ void authenticationRequested(const QString &question);
+
private:
otrl_instag_t instance;
SessionContext ctx;
@@ -114,7 +132,6 @@ namespace OTR
ProxySession(OtrProxyChannel::Adaptee *pca, const SessionContext &ctx, Manager *parent);
virtual void handleMessage(const Message &message) override;
- virtual void handleSmpEvent(OtrlSMPEvent smpEvent) override;
virtual int recipientStatus() const override;
virtual unsigned int maxMessageSize() const override;
diff --git a/otr-proxy/KTpProxy/svc-channel-proxy.cpp b/otr-proxy/KTpProxy/svc-channel-proxy.cpp
index fa38008..a424648 100644
--- a/otr-proxy/KTpProxy/svc-channel-proxy.cpp
+++ b/otr-proxy/KTpProxy/svc-channel-proxy.cpp
@@ -14,6 +14,11 @@ ChannelProxyInterfaceOTRAdaptor::ChannelProxyInterfaceOTRAdaptor(const QDBusConn
connect(adaptee, SIGNAL(messageSent(const Tp::MessagePartList&, uint, const QString&)), SIGNAL(MessageSent(const Tp::MessagePartList&, uint, const QString&)));
connect(adaptee, SIGNAL(messageReceived(const Tp::MessagePartList&)), SIGNAL(MessageReceived(const Tp::MessagePartList&)));
connect(adaptee, SIGNAL(pendingMessagesRemoved(const Tp::UIntList&)), SIGNAL(PendingMessagesRemoved(const Tp::UIntList&)));
+ connect(adaptee, SIGNAL(peerAuthenticationRequested(const QString&)), SIGNAL(PeerAuthenticationRequested(const QString&)));
+ connect(adaptee, SIGNAL(peerAuthenticationConcluded(bool)), SIGNAL(PeerAuthenticationConcluded(bool)));
+ connect(adaptee, SIGNAL(peerAuthenticationAborted()), SIGNAL(PeerAuthenticationAborted()));
+ connect(adaptee, SIGNAL(peerAuthenticationError()), SIGNAL(PeerAuthenticationError()));
+ connect(adaptee, SIGNAL(peerAuthenticationCheated()), SIGNAL(PeerAuthenticationCheated()));
connect(adaptee, SIGNAL(sessionRefreshed()), SIGNAL(SessionRefreshed()));
connect(adaptee, SIGNAL(trustLevelChanged(uint)), SIGNAL(TrustLevelChanged(uint)));
}
@@ -147,5 +152,46 @@ void ChannelProxyInterfaceOTRAdaptor::TrustFingerprint(const QString& fingerprin
Q_ARG(Tp::Service::ChannelProxyInterfaceOTRAdaptor::TrustFingerprintContextPtr, ctx));
}
+void ChannelProxyInterfaceOTRAdaptor::StartPeerAuthentication(const QString& question, const QString& secret, const QDBusMessage& dbusMessage)
+{
+ if (!adaptee()->metaObject()->indexOfMethod("startPeerAuthentication(QString,QString,Tp::Service::ChannelProxyInterfaceOTRAdaptor::StartPeerAuthenticationContextPtr)") == -1) {
+ dbusConnection().send(dbusMessage.createErrorReply(TP_QT_ERROR_NOT_IMPLEMENTED, QLatin1String("Not implemented")));
+ return;
+ }
+
+ StartPeerAuthenticationContextPtr ctx = StartPeerAuthenticationContextPtr(
+ new Tp::MethodInvocationContext< >(dbusConnection(), dbusMessage));
+ QMetaObject::invokeMethod(adaptee(), "startPeerAuthentication",
+ Q_ARG(QString, question), Q_ARG(QString, secret),
+ Q_ARG(Tp::Service::ChannelProxyInterfaceOTRAdaptor::StartPeerAuthenticationContextPtr, ctx));
+}
+
+void ChannelProxyInterfaceOTRAdaptor::RespondPeerAuthentication(const QString& secret, const QDBusMessage& dbusMessage)
+{
+ if (!adaptee()->metaObject()->indexOfMethod("respondPeerAuthentication(QString,Tp::Service::ChannelProxyInterfaceOTRAdaptor::RespondPeerAuthenticationContextPtr)") == -1) {
+ dbusConnection().send(dbusMessage.createErrorReply(TP_QT_ERROR_NOT_IMPLEMENTED, QLatin1String("Not implemented")));
+ return;
+ }
+
+ RespondPeerAuthenticationContextPtr ctx = RespondPeerAuthenticationContextPtr(
+ new Tp::MethodInvocationContext< >(dbusConnection(), dbusMessage));
+ QMetaObject::invokeMethod(adaptee(), "respondPeerAuthentication",
+ Q_ARG(QString, secret),
+ Q_ARG(Tp::Service::ChannelProxyInterfaceOTRAdaptor::RespondPeerAuthenticationContextPtr, ctx));
+}
+
+void ChannelProxyInterfaceOTRAdaptor::AbortPeerAuthentication(const QDBusMessage& dbusMessage)
+{
+ if (!adaptee()->metaObject()->indexOfMethod("abortPeerAuthentication(Tp::Service::ChannelProxyInterfaceOTRAdaptor::AbortPeerAuthenticationContextPtr)") == -1) {
+ dbusConnection().send(dbusMessage.createErrorReply(TP_QT_ERROR_NOT_IMPLEMENTED, QLatin1String("Not implemented")));
+ return;
+ }
+
+ AbortPeerAuthenticationContextPtr ctx = AbortPeerAuthenticationContextPtr(
+ new Tp::MethodInvocationContext< >(dbusConnection(), dbusMessage));
+ QMetaObject::invokeMethod(adaptee(), "abortPeerAuthentication",
+ Q_ARG(Tp::Service::ChannelProxyInterfaceOTRAdaptor::AbortPeerAuthenticationContextPtr, ctx));
+}
+
}
}
diff --git a/otr-proxy/KTpProxy/svc-channel-proxy.h b/otr-proxy/KTpProxy/svc-channel-proxy.h
index d4a6d6f..31f8a21 100644
--- a/otr-proxy/KTpProxy/svc-channel-proxy.h
+++ b/otr-proxy/KTpProxy/svc-channel-proxy.h
@@ -59,6 +59,14 @@ class TP_QT_EXPORT ChannelProxyInterfaceOTRAdaptor : public Tp::AbstractAdaptor
" <arg direction=\"in\" type=\"s\" name=\"fingerprint\"/>
"
" <arg direction=\"in\" type=\"b\" name=\"trust\"/>
"
" </method>
"
+" <method name=\"StartPeerAuthentication\">
"
+" <arg direction=\"in\" type=\"s\" name=\"question\"/>
"
+" <arg direction=\"in\" type=\"s\" name=\"secret\"/>
"
+" </method>
"
+" <method name=\"RespondPeerAuthentication\">
"
+" <arg direction=\"in\" type=\"s\" name=\"secret\"/>
"
+" </method>
"
+" <method name=\"AbortPeerAuthentication\"/>
"
" <signal name=\"MessageSent\">
"
" <arg type=\"aa{sv}\" name=\"content\">
"
" <annotation value=\"Tp::MessagePartList\" name=\"com.trolltech.QtDBus.QtTypeName.In0\"/>
"
@@ -74,6 +82,15 @@ class TP_QT_EXPORT ChannelProxyInterfaceOTRAdaptor : public Tp::AbstractAdaptor
" <signal name=\"PendingMessagesRemoved\">
"
" <arg type=\"au\" name=\"messageIDs\"/>
"
" </signal>
"
+" <signal name=\"PeerAuthenticationRequested\">
"
+" <arg type=\"s\" name=\"question\"/>
"
+" </signal>
"
+" <signal name=\"PeerAuthenticationConcluded\">
"
+" <arg type=\"b\" name=\"authenticated\"/>
"
+" </signal>
"
+" <signal name=\"PeerAuthenticationAborted\"/>
"
+" <signal name=\"PeerAuthenticationError\"/>
"
+" <signal name=\"PeerAuthenticationCheated\"/>
"
" <signal name=\"SessionRefreshed\"/>
"
" <signal name=\"TrustLevelChanged\">
"
" <arg type=\"u\" name=\"trustLevel\"/>
"
@@ -98,6 +115,9 @@ public:
typedef Tp::MethodInvocationContextPtr< > InitializeContextPtr;
typedef Tp::MethodInvocationContextPtr< > StopContextPtr;
typedef Tp::MethodInvocationContextPtr< > TrustFingerprintContextPtr;
+ typedef Tp::MethodInvocationContextPtr< > StartPeerAuthenticationContextPtr;
+ typedef Tp::MethodInvocationContextPtr< > RespondPeerAuthenticationContextPtr;
+ typedef Tp::MethodInvocationContextPtr< > AbortPeerAuthenticationContextPtr;
public: // PROPERTIES
/**
@@ -106,7 +126,7 @@ public: // PROPERTIES
* Adaptees should export this property as a Qt property named
* 'wrappedChannel' with type QDBusObjectPath.
*
- *
+ *
* \htmlonly
* <p>Object path of the channel this proxy is created for.</p>
* \endhtmlonly
@@ -120,7 +140,7 @@ public: // PROPERTIES
* Adaptees should export this property as a Qt property named
* 'connected' with type bool.
*
- *
+ *
* \htmlonly
* <p>TRUE if the proxy is connected</p>
* \endhtmlonly
@@ -134,11 +154,11 @@ public: // PROPERTIES
* Adaptees should export this property as a Qt property named
* 'pendingMessages' with type Tp::MessagePartListList.
*
- *
+ *
* \htmlonly
* <p>
* The same as:
- * \endhtmlonly ChannelInterfaceMessagesInterface \htmlonly
+ * \endhtmlonly ChannelInterfaceMessagesInterface \htmlonly
* </p>
* \endhtmlonly
*
@@ -151,7 +171,7 @@ public: // PROPERTIES
* Adaptees should export this property as a Qt property named
* 'trustLevel' with type uint.
*
- *
+ *
* \htmlonly
* <p>The current trust level of this channel:
* 0=TRUST_NOT_PRIVATE, 1=TRUST_UNVERIFIED, 2=TRUST_PRIVATE,
@@ -169,7 +189,7 @@ public: // PROPERTIES
* Adaptees should export this property as a Qt property named
* 'localFingerprint' with type QString.
*
- *
+ *
* \htmlonly
* <p>User's current fingerprint. The first element is a human readable
* fingerprint that can be displayed to the user so he can communicate it
@@ -186,11 +206,11 @@ public: // PROPERTIES
* Adaptees should export this property as a Qt property named
* 'remoteFingerprint' with type QString.
*
- *
+ *
* \htmlonly
* <p>The current fingerprint of the remote contact. Should be displayed
* to the user to update its trust level. It is shown in human readable format i.e.
- * :e .</p>
+ * :e '12345678 12345678 12345678 12345678 12345678'.</p>
* \endhtmlonly
*
*
eturn The value of exported property
--
ktp-common-internals packaging
More information about the pkg-kde-commits
mailing list