aboutsummaryrefslogtreecommitdiff
path: root/src/common/Cryptography/RSA.cpp
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2017-12-29 12:50:12 +0100
committerShauren <shauren.trinity@gmail.com>2017-12-29 12:50:12 +0100
commitb49fa9658a436c31ffc40100d5a55bee5a3f861e (patch)
tree38e79bad5feff33da73f3901e957bcbf91bc8060 /src/common/Cryptography/RSA.cpp
parent02022d3cd65f072874e9f5de061e0b158b6eb634 (diff)
Tools/Patcher: Properly sign certificate bundle7.2.5/24742
Diffstat (limited to 'src/common/Cryptography/RSA.cpp')
-rw-r--r--src/common/Cryptography/RSA.cpp17
1 files changed, 17 insertions, 0 deletions
diff --git a/src/common/Cryptography/RSA.cpp b/src/common/Cryptography/RSA.cpp
index 11bbbe1dac5..96199d34bb0 100644
--- a/src/common/Cryptography/RSA.cpp
+++ b/src/common/Cryptography/RSA.cpp
@@ -16,6 +16,8 @@
*/
#include "RSA.h"
+#include "BigNumber.h"
+#include <openssl/bn.h>
#include <openssl/pem.h>
#include <algorithm>
#include <iterator>
@@ -88,6 +90,13 @@ bool Trinity::Crypto::RSA::LoadFromString(std::string const& keyPem, KeyTag)
return true;
}
+BigNumber Trinity::Crypto::RSA::GetModulus() const
+{
+ BigNumber bn;
+ BN_copy(bn.BN(), _rsa->n);
+ return bn;
+}
+
template <typename KeyTag>
bool Trinity::Crypto::RSA::Encrypt(uint8 const* data, std::size_t dataLength, uint8* output, int32 paddingType)
{
@@ -97,6 +106,14 @@ bool Trinity::Crypto::RSA::Encrypt(uint8 const* data, std::size_t dataLength, ui
return result != -1;
}
+bool Trinity::Crypto::RSA::Sign(int32 hashType, uint8 const* dataHash, std::size_t dataHashLength, uint8* output)
+{
+ uint32 signatureLength = 0;
+ int result = RSA_sign(hashType, dataHash, dataHashLength, output, &signatureLength, _rsa);
+ std::reverse(output, output + GetOutputSize());
+ return result != -1;
+}
+
namespace Trinity
{
namespace Crypto