25 enum class SystemType :
int {
42 OpenSSLInterface& operator=(OpenSSLInterface
const&);
43 OpenSSLInterface(OpenSSLInterface
const&);
49 virtual ~OpenSSLInterface() =
default;
51 virtual bool generateKeyPair(::std::string& privateKey, ::std::string& publicKey) ;
53 virtual ::Bedrock::Result<::std::string>
54 parsePrivateKey(::std::string
const& privateKey, ::Crypto::Asymmetric::PrivateKeySigningFormat format) ;
56 virtual ::Bedrock::Result<::std::string> derivePublicKey(::std::string
const& privateKey) ;
58 virtual ::Bedrock::Result<::std::string> constructPublicKey(
59 ::std::variant<::Crypto::Asymmetric::RsaPublicKeyComponents, ::Crypto::Asymmetric::EcPublicKeyComponents>
const&
63 virtual ::Bedrock::Result<
64 ::std::variant<::Crypto::Asymmetric::RsaPublicKeyComponents, ::Crypto::Asymmetric::EcPublicKeyComponents>>
65 deconstructPublicKey(::std::string
const& publicKey) ;
67 virtual ::std::string encryptData(
68 ::std::string
const& publicKey,
69 ::std::string
const& data,
70 ::Crypto::Asymmetric::Padding paddingType,
71 ::Crypto::Asymmetric::PubKeyFormat keyFormat,
75 virtual ::std::string decryptData(
76 ::std::string
const& privateKey,
77 ::std::string
const& data,
78 ::Crypto::Asymmetric::Padding paddingType
81 virtual ::std::string signData(
82 ::std::string
const& privateKey,
83 ::std::string
const& data,
84 ::Crypto::Hash::HashType hash,
85 ::Crypto::Asymmetric::PrivateKeySigningFormat format
88 virtual bool verifyData(
89 ::std::string
const& publicKey,
90 ::std::string
const& signature,
91 ::std::string
const& data,
92 ::Crypto::Hash::HashType hash
96 computeSharedSecret(::std::string
const& myPrivateKey, ::std::string
const& peerPublicKey) ;
102 MCNAPI static ::Bedrock::Result<::Crypto::Asymmetric::System>
111 MCNAPI ::Bedrock::Result<::std::string>
112 $parsePrivateKey(::std::string
const& privateKey, ::Crypto::Asymmetric::PrivateKeySigningFormat format);
117 ::std::variant<::Crypto::Asymmetric::RsaPublicKeyComponents, ::Crypto::Asymmetric::EcPublicKeyComponents>
const&
121 MCNAPI ::Bedrock::Result<
122 ::std::variant<::Crypto::Asymmetric::RsaPublicKeyComponents, ::Crypto::Asymmetric::EcPublicKeyComponents>>
126 ::std::string
const& publicKey,
127 ::std::string
const& data,
128 ::Crypto::Asymmetric::Padding paddingType,
129 ::Crypto::Asymmetric::PubKeyFormat keyFormat,
134 $decryptData(::std::string
const& privateKey, ::std::string
const& data, ::Crypto::Asymmetric::Padding paddingType);
137 ::std::string
const& privateKey,
138 ::std::string
const& data,
139 ::Crypto::Hash::HashType hash,
140 ::Crypto::Asymmetric::PrivateKeySigningFormat format
144 ::std::string
const& publicKey,
145 ::std::string
const& signature,
146 ::std::string
const& data,
147 ::Crypto::Hash::HashType hash
150 MCNAPI ::std::string
$computeSharedSecret(::std::string
const& myPrivateKey, ::std::string
const& peerPublicKey);