X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=src%2Fkey.cc;h=a5e92aac67d75474d454b8976db5085233281b02;hb=4bd57fbbac67ac04ec47a9765b9f278aa1691851;hp=58cc6d5443d4ec863a214b81f7345cc644914273;hpb=b785a1a76e0863fc98d0acc98a098d328929d493;p=libdcp.git diff --git a/src/key.cc b/src/key.cc index 58cc6d54..a5e92aac 100644 --- a/src/key.cc +++ b/src/key.cc @@ -1,5 +1,5 @@ /* - Copyright (C) 2013-2019 Carl Hetherington + Copyright (C) 2013-2021 Carl Hetherington This file is part of libdcp. @@ -31,10 +31,12 @@ files in the program, then also delete it here. */ + /** @file src/key.cc - * @brief Key class. + * @brief Key class */ + #include "key.h" #include "dcp_assert.h" #include @@ -43,11 +45,13 @@ #include #include + using std::string; using std::setw; using std::setfill; using namespace dcp; + Key::Key (int length) : _value (new uint8_t[length]) , _length (length) @@ -56,6 +60,7 @@ Key::Key (int length) rng.FillRandom (_value, _length); } + Key::Key (uint8_t const * value, int length) : _value (new uint8_t[length]) , _length (length) @@ -63,6 +68,7 @@ Key::Key (uint8_t const * value, int length) memcpy (_value, value, _length); } + Key::Key (string value) : _value (new uint8_t[value.length() / 2]) , _length (value.length() / 2) @@ -71,6 +77,7 @@ Key::Key (string value) Kumu::hex2bin (value.c_str(), _value, _length, &length_done); } + Key::Key (Key const & other) : _value (new uint8_t[other._length]) , _length (other._length) @@ -78,11 +85,13 @@ Key::Key (Key const & other) memcpy (_value, other._value, _length); } + Key::~Key () { delete[] _value; } + Key & Key::operator= (Key const & other) { @@ -90,10 +99,12 @@ Key::operator= (Key const & other) return *this; } + _length = other._length; memcpy (_value, other._value, _length); return *this; } + string Key::hex () const { @@ -102,9 +113,9 @@ Key::hex () const char* p = buffer; for (int i = 0; i < _length; ++i) { #ifdef LIBDCP_WINDOWS - __mingw_snprintf (p, 3, "%02hhx", buffer[i]); + __mingw_snprintf (p, 3, "%02hhx", _value[i]); #else - snprintf (p, 3, "%02hhx", buffer[i]); + snprintf (p, 3, "%02hhx", _value[i]); #endif p += 2; } @@ -112,12 +123,14 @@ Key::hex () const return buffer; } + bool dcp::operator== (Key const & a, Key const & b) { return a.length() == b.length() && memcmp(a.value(), b.value(), a.length()) == 0; } + bool dcp::operator!= (Key const & a, Key const & b) {