AUI Framework  master
Cross-platform module-based framework for developing C++20 desktop applications
ARsa.h
1/*
2 * AUI Framework - Declarative UI toolkit for modern C++20
3 * Copyright (C) 2020-2024 Alex2772 and Contributors
4 *
5 * SPDX-License-Identifier: MPL-2.0
6 *
7 * This Source Code Form is subject to the terms of the Mozilla Public
8 * License, v. 2.0. If a copy of the MPL was not distributed with this
9 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
10 */
11
12#pragma once
13#include "AUI/Rsa.h"
14#include "AUI/Common/SharedPtrTypes.h"
15#include "AUI/Common/AByteBuffer.h"
16
21class API_AUI_CRYPT ARsa: public aui::noncopyable
22{
23private:
24 void* mRsa = nullptr;
25
26
27 explicit ARsa(void* rsa);
28
29public:
30 ~ARsa();
31
32 AByteBuffer encrypt(AByteBufferView in);
33 AByteBuffer decrypt(AByteBufferView in);
34
35 size_t getKeyLength() const;
36
37 AByteBuffer getPrivateKeyPEM() const;
38 AByteBuffer getPublicKeyPEM() const;
39
40 static _<ARsa> generate(int bits = 0x800);
41 static _<ARsa> fromPrivateKeyPEM(AByteBufferView buffer);
42 static _<ARsa> fromPublicKeyPEM(AByteBufferView buffer);
43};
Acts like std::string_view but for AByteBuffer.
Definition: AByteBufferView.h:24
std::vector-like growing array for byte storage.
Definition: AByteBuffer.h:31
Stores public and/or private RSA key.
Definition: ARsa.h:22
An std::weak_ptr with AUI extensions.
Definition: SharedPtrTypes.h:177
Forbids copy of your class.
Definition: values.h:40