qTox  Version: nightly | Commit: bc751c8e1cac455f9690654fcfe0f560d2d7dfdd
toxpk.cpp
Go to the documentation of this file.
1 /*
2  Copyright © 2019 by The qTox Project Contributors
3 
4  This file is part of qTox, a Qt-based graphical interface for Tox.
5 
6  qTox is libre software: you can redistribute it and/or modify
7  it under the terms of the GNU General Public License as published by
8  the Free Software Foundation, either version 3 of the License, or
9  (at your option) any later version.
10 
11  qTox is distributed in the hope that it will be useful,
12  but WITHOUT ANY WARRANTY; without even the implied warranty of
13  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14  GNU General Public License for more details.
15 
16  You should have received a copy of the GNU General Public License
17  along with qTox. If not, see <http://www.gnu.org/licenses/>.
18 */
19 
20 #include "contactid.h"
21 #include "toxpk.h"
22 
23 #include <tox/tox.h>
24 
25 #include <QByteArray>
26 #include <QString>
27 
28 #include <cassert>
29 
30 #define PUBLIC_KEY_HEX_CHARS (2 * TOX_PUBLIC_KEY_SIZE)
31 
41  : ContactId()
42 {
43 }
44 
49 ToxPk::ToxPk(const ToxPk& other)
50  : ContactId(other.id)
51 {
52 }
53 
59 ToxPk::ToxPk(const QByteArray& rawId)
60  : ContactId([&rawId](){
61  assert(rawId.length() == TOX_PUBLIC_KEY_SIZE);
62  return rawId;}())
63 {
64 }
65 
71 ToxPk::ToxPk(const uint8_t* rawId)
72  : ContactId(QByteArray(reinterpret_cast<const char*>(rawId), TOX_PUBLIC_KEY_SIZE))
73 {
74 }
75 
83 ToxPk::ToxPk(const QString& pk)
84  : ContactId([&pk](){
85  if (pk.length() == PUBLIC_KEY_HEX_CHARS) {
86  return QByteArray::fromHex(pk.toLatin1());
87  } else {
88  assert(!"ToxPk constructed with invalid length string");
89  return QByteArray(); // invalid pk string
90  }
91  }())
92 {
93 }
94 
99 int ToxPk::getSize() const
100 {
101  return TOX_PUBLIC_KEY_SIZE;
102 }
ToxPk::ToxPk
ToxPk()
The default constructor. Creates an empty Tox key.
Definition: toxpk.cpp:40
ToxPk::getSize
int getSize() const override
Get size of public key in bytes.
Definition: toxpk.cpp:99
PUBLIC_KEY_HEX_CHARS
#define PUBLIC_KEY_HEX_CHARS
Definition: toxpk.cpp:30
toxpk.h
contactid.h
ToxPk
This class represents a Tox Public Key, which is a part of Tox ID.
Definition: toxpk.h:26
ContactId
Definition: contactid.h:28