8da6737d64
This commit switches the GUIDs for default profiles from being randomly generated to being version 5 UUIDs. More info in #870. ## PR Checklist * [x] Closes #870 * [x] CLA signed * [x] Tests added/passed * [x] Requires documentation to be updated (#883) * [x] I've discussed this with core contributors already. ## Detailed Description of the Pull Request / Additional comments This commit has a number of changes that seem ancillary, but they're general goodness. Let me explain: * I've added a whole new Types test library with only two tests in * Since UUIDv5 generation requires SHA1, we needed to take a dependency on bcrypt * I honestly don't think we should have to link bcrypt in conhost, but LTO should take care of that * I considered adding a new Terminal-specific Utils/Types library, but that seemed like a waste * The best way to link bcrypt turned out to be in line with a discussion @miniksa and I had, where we decided we both love APISets and think that the console should link against them exclusively... so I've added `onecore_apiset.lib` to the front of the link line, where it will deflect the linker away from most of the other libs automagically. ``` StartGroup: UuidTests::TestV5UuidU8String Verify: AreEqual(uuidExpected, uuidActual) EndGroup: UuidTests::TestV5UuidU8String [Passed] StartGroup: UuidTests::TestV5UuidU16String Verify: AreEqual(uuidExpected, uuidActual) EndGroup: UuidTests::TestV5UuidU16String [Passed] ```
58 lines
1.6 KiB
C++
58 lines
1.6 KiB
C++
/*++
|
|
Copyright (c) Microsoft Corporation
|
|
|
|
Module Name:
|
|
- utils.hpp
|
|
|
|
Abstract:
|
|
- Helpful cross-lib utilities
|
|
|
|
Author(s):
|
|
- Mike Griese (migrie) 12-Jun-2018
|
|
--*/
|
|
|
|
namespace Microsoft::Console::Utils
|
|
{
|
|
bool IsValidHandle(const HANDLE handle) noexcept;
|
|
|
|
std::wstring GuidToString(const GUID guid);
|
|
GUID GuidFromString(const std::wstring wstr);
|
|
GUID CreateGuid();
|
|
|
|
std::wstring ColorToHexString(const COLORREF color);
|
|
COLORREF ColorFromHexString(const std::wstring wstr);
|
|
|
|
void InitializeCampbellColorTable(gsl::span<COLORREF>& table);
|
|
void Initialize256ColorTable(gsl::span<COLORREF>& table);
|
|
void SetColorTableAlpha(gsl::span<COLORREF>& table, const BYTE newAlpha);
|
|
|
|
constexpr uint16_t EndianSwap(uint16_t value)
|
|
{
|
|
return (value & 0xFF00) >> 8 |
|
|
(value & 0x00FF) << 8;
|
|
}
|
|
|
|
constexpr uint32_t EndianSwap(uint32_t value)
|
|
{
|
|
return (value & 0xFF000000) >> 24 |
|
|
(value & 0x00FF0000) >> 8 |
|
|
(value & 0x0000FF00) << 8 |
|
|
(value & 0x000000FF) << 24;
|
|
}
|
|
|
|
constexpr unsigned long EndianSwap(unsigned long value)
|
|
{
|
|
return static_cast<unsigned long>(EndianSwap(static_cast<uint32_t>(value)));
|
|
}
|
|
|
|
constexpr GUID EndianSwap(GUID value)
|
|
{
|
|
value.Data1 = EndianSwap(value.Data1);
|
|
value.Data2 = EndianSwap(value.Data2);
|
|
value.Data3 = EndianSwap(value.Data3);
|
|
return value;
|
|
}
|
|
|
|
GUID CreateV5Uuid(const GUID& namespaceGuid, const gsl::span<const gsl::byte>& name);
|
|
}
|