Skip to content

Commit

Permalink
Add C# signing example using Bouncy Castle library (qzind#880)
Browse files Browse the repository at this point in the history
  • Loading branch information
psqli authored Nov 5, 2021
1 parent b5ed585 commit 2d53436
Showing 1 changed file with 60 additions and 0 deletions.
60 changes: 60 additions & 0 deletions assets/signing/sign-message.bouncycastle.cs
Original file line number Diff line number Diff line change
@@ -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();
}

0 comments on commit 2d53436

Please sign in to comment.