diff --git a/assets/signing/sign-message.bouncycastle.cs b/assets/signing/sign-message.bouncycastle.cs new file mode 100644 index 000000000..2efec4f19 --- /dev/null +++ b/assets/signing/sign-message.bouncycastle.cs @@ -0,0 +1,60 @@ +// ######################################################### +// # WARNING WARNING WARNING # +// ######################################################### +// # # +// # This file is intended for demonstration purposes # +// # only. # +// # # +// # It is the SOLE responsibility of YOU, the programmer # +// # to prevent against unauthorized access to any signing # +// # functions. # +// # # +// # Organizations that do not protect against un- # +// # authorized signing will be black-listed to prevent # +// # software piracy. # +// # # +// # -QZ Industries, LLC # +// # # +// ######################################################### + +using System; +using System.Text; +using Org.BouncyCastle.Crypto; +using Org.BouncyCastle.OpenSsl; +using Org.BouncyCastle.Security; + + +// Public method for signing the input string with the private key +// =============================================================== + +string privateKey = "private-key.pem"; // PKCS#8 PEM file + +string SignMessage(string msg) +{ + // Convert the input string to a byte array + byte[] input = Encoding.ASCII.GetBytes(msg); + + // Initialize the signer with the algorithm and the private key + ISigner sig = SignerUtilities.GetSigner("SHA512withRSA"); + sig.Init(true, getPrivateKey()); + + // Generate signature and return it as a base64 string + sig.BlockUpdate(input, 0, input.Length); + return Convert.ToBase64String(sig.GenerateSignature()); +} + +AsymmetricKeyParameter getPrivateKey() { + using (var reader = System.IO.File.OpenText(privateKey)) + return (new PemReader(reader, null).ReadObject() as AsymmetricCipherKeyPair).Private; +} + + +// Public method for returning the certificate +// =========================================== + +string certificate = "digital-certificate.txt"; + +string GetCertificate() { + using (var reader = System.IO.File.OpenText(certificate)) + return reader.ReadToEnd(); +}