QCA

qca_tools.h
Go to the documentation of this file.
1 /*
2  * qca_tools.h - Qt Cryptographic Architecture
3  * Copyright (C) 2003-2007 Justin Karneges <[email protected]>
4  * Copyright (C) 2004,2005 Brad Hards <[email protected]>
5  *
6  * This library is free software; you can redistribute it and/or
7  * modify it under the terms of the GNU Lesser General Public
8  * License as published by the Free Software Foundation; either
9  * version 2.1 of the License, or (at your option) any later version.
10  *
11  * This library 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 GNU
14  * Lesser General Public License for more details.
15  *
16  * You should have received a copy of the GNU Lesser General Public
17  * License along with this library; if not, write to the Free Software
18  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
19  * 02110-1301 USA
20  *
21  */
22 
36 #ifndef QCA_TOOLS_H
37 #define QCA_TOOLS_H
38 
39 #include "qca_export.h"
40 #include <QMetaType>
41 #include <QSharedData>
42 #include <QSharedDataPointer>
43 
44 class QString;
45 class QByteArray;
46 class QTextStream;
47 
55 QCA_EXPORT void *qca_secure_alloc(int bytes);
56 
65 QCA_EXPORT void qca_secure_free(void *p);
66 
74 QCA_EXPORT void *qca_secure_realloc(void *p, int bytes);
75 
76 namespace QCA {
77 
90 class QCA_EXPORT MemoryRegion
91 {
92 public:
93  MemoryRegion();
94 
101  MemoryRegion(const char *str);
102 
109  MemoryRegion(const QByteArray &from);
110 
116  MemoryRegion(const MemoryRegion &from);
117  ~MemoryRegion();
118 
124  MemoryRegion &operator=(const MemoryRegion &from);
125 
131  MemoryRegion &operator=(const QByteArray &from);
132 
141  bool isNull() const;
142 
151  bool isSecure() const;
152 
161  QByteArray toByteArray() const;
162 
166  bool isEmpty() const;
167 
171  int size() const;
172 
182  const char *data() const;
183 
192  const char *constData() const;
193 
204  const char &at(int index) const;
205 
206 protected:
218  MemoryRegion(bool secure);
219 
229  MemoryRegion(int size, bool secure);
230 
243  MemoryRegion(const QByteArray &from, bool secure);
244 
250  char *data();
251 
262  char &at(int index);
263 
269  bool resize(int size);
270 
280  void set(const QByteArray &from, bool secure);
281 
293  void setSecure(bool secure);
294 
295 private:
296  bool _secure;
297  class Private;
299 };
300 
316 class QCA_EXPORT SecureArray : public MemoryRegion
317 {
318 public:
322  SecureArray();
323 
330  explicit SecureArray(int size, char ch = 0);
331 
339  SecureArray(const char *str);
340 
350  SecureArray(const QByteArray &a);
351 
361  SecureArray(const MemoryRegion &a);
362 
368  SecureArray(const SecureArray &from);
369 
370  ~SecureArray();
371 
377  SecureArray &operator=(const SecureArray &from);
378 
384  SecureArray &operator=(const QByteArray &a);
385 
389  void clear();
390 
396  char &operator[](int index);
397 
403  const char &operator[](int index) const;
404 
412  char *data();
413 
421  const char *data() const;
422 
430  const char *constData() const;
431 
437  char &at(int index);
438 
444  const char &at(int index) const;
445 
449  int size() const;
450 
460  bool isEmpty() const;
461 
470  bool resize(int size);
471 
486  void fill(char fillChar, int fillToPosition = -1);
487 
493  QByteArray toByteArray() const;
494 
500  SecureArray &append(const SecureArray &a);
501 
508  bool operator==(const MemoryRegion &other) const;
509 
516  inline bool operator!=(const MemoryRegion &other) const
517  {
518  return !(*this == other);
519  }
520 
526  SecureArray &operator+=(const SecureArray &a);
527 
528 protected:
535  void set(const SecureArray &from);
536 
543  void set(const QByteArray &from);
544 };
545 
552 QCA_EXPORT const SecureArray operator+(const SecureArray &a, const SecureArray &b);
553 
570 class QCA_EXPORT BigInteger
571 {
572 public:
576  BigInteger();
577 
583  BigInteger(int n);
584 
594  BigInteger(const char *c);
595 
601  BigInteger(const QString &s);
602 
608  BigInteger(const QCA::SecureArray &a);
609 
615  BigInteger(const BigInteger &from);
616 
617  ~BigInteger();
618 
630  BigInteger &operator=(const BigInteger &from);
631 
643  BigInteger &operator=(const QString &s);
644 
657  BigInteger &operator+=(const BigInteger &b);
658 
671  BigInteger &operator-=(const BigInteger &b);
672 
678  BigInteger &operator*=(const BigInteger &b);
679 
685  BigInteger &operator/=(const BigInteger &b);
686 
692  BigInteger &operator%=(const BigInteger &b);
693 
701  QCA::SecureArray toArray() const;
702 
712  void fromArray(const QCA::SecureArray &a);
713 
723  QString toString() const;
724 
737  bool fromString(const QString &s);
738 
761  int compare(const BigInteger &n) const;
762 
769  inline bool operator==(const BigInteger &other) const
770  {
771  return (compare(other) == 0);
772  }
773 
780  inline bool operator!=(const BigInteger &other) const
781  {
782  return !(*this == other);
783  }
784 
792  inline bool operator<=(const BigInteger &other) const
793  {
794  return (compare(other) <= 0);
795  }
796 
804  inline bool operator>=(const BigInteger &other) const
805  {
806  return (compare(other) >= 0);
807  }
808 
816  inline bool operator<(const BigInteger &other) const
817  {
818  return (compare(other) < 0);
819  }
820 
828  inline bool operator>(const BigInteger &other) const
829  {
830  return (compare(other) > 0);
831  }
832 
833 private:
834  class Private;
836 };
837 
846 QCA_EXPORT QTextStream &operator<<(QTextStream &stream, const BigInteger &b);
847 
848 }
849 
850 #endif
bool operator==(const BigInteger &other) const
Equality operator.
Definition: qca_tools.h:769
bool operator<(const BigInteger &other) const
Less than operator.
Definition: qca_tools.h:816
bool operator>(const BigInteger &other) const
Greater than operator.
Definition: qca_tools.h:828
bool operator!=(const MemoryRegion &other) const
Inequality operator.
Definition: qca_tools.h:516
Preprocessor magic to allow export of library symbols.
QCA_EXPORT void * qca_secure_alloc(int bytes)
Allocate a block of memory from the secure memory pool.
QCA - the Qt Cryptographic Architecture.
Definition: qca_basic.h:41
bool operator>=(const BigInteger &other) const
Greater than or equal operator.
Definition: qca_tools.h:804
bool operator!=(const BigInteger &other) const
Inequality operator.
Definition: qca_tools.h:780
Secure array of bytes.
Definition: qca_tools.h:316
QDataStream & operator<<(QDataStream &out, const KDateTime::Spec &spec)
QCA_EXPORT void * qca_secure_realloc(void *p, int bytes)
Resize (re-allocate) a block of memory that has been previously allocated from the secure memory pool...
QCA_EXPORT const SecureArray operator+(const SecureArray &a, const SecureArray &b)
Returns an array that is the result of concatenating a and b.
bool operator<=(const BigInteger &other) const
Less than or equal operator.
Definition: qca_tools.h:792
Arbitrary precision integer.
Definition: qca_tools.h:570
QCA_EXPORT void qca_secure_free(void *p)
Free (de-allocate) a block of memory that has been previously allocated from the secure memory pool...
Array of bytes that may be optionally secured.
Definition: qca_tools.h:90
This file is part of the KDE documentation.
Documentation copyright © 1996-2020 The KDE developers.
Generated on Tue Sep 29 2020 23:11:23 by doxygen 1.8.11 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.