Skip to content

Instantly share code, notes, and snippets.

@kstrauss
Created October 21, 2016 15:11
Show Gist options
  • Select an option

  • Save kstrauss/a565cd1661a712da544e74c071d56cca to your computer and use it in GitHub Desktop.

Select an option

Save kstrauss/a565cd1661a712da544e74c071d56cca to your computer and use it in GitHub Desktop.
nsoftware example trying to sign a document. It doesn't seem to work either using the builtin provider or using the GnuPG_Provider provider.
-----BEGIN PGP PRIVATE KEY BLOCK-----
Version: GnuPG v1.4.11 (MingW32)
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
MvOkoACjKyln
=h7ae
-----END PGP PRIVATE KEY BLOCK-----
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.4.11 (MingW32)
mQENBFgKLY0BCADo95cLyH71EwTKR0ExNHSldu9As0hqH0lTmURIghWbPhQ1fmdV
QiXb05FFz8uKCOkc5pLleESij8LkNzc+eEafc/yM+1nUF6COlRik/h2gajJciknG
fWtzWaRj2MX4X2UhfG9+VmUXk+eHInnW8N3qDXg6KZKJm1Gjtasko+v0x/MsHr5S
MCdRbFD8PKotT80QnDwN01cxmw7QULXTyKPa4KkDXmDebaJwEhUCxEzE+NhqWlxP
KUyjqOMdfHG8pN9hbHl5LtjHqukuZCN/zW7XlNxPIorDpeT68hI3PDILHfF3bTbs
rtjm2qa/rNXkfz/UmK7Z4CwuGLO2K7bIlQ1bABEBAAG0PVRlc3RHYXJiYWdlIChh
IHRlbXBvcmFyeSBnYXJiYWdlIHRlc3Qga2V5KSA8Z2FyYmFnZUB0ZXN0LmNvbT6J
AT4EEwECACgFAlgKLY0CGwMFCQA3XwAGCwkIBwMCBhUIAgkKCwQWAgMBAh4BAheA
AAoJEAmNwn9UUqNziQ0H/RjTbBfDlBvC2dIs/LH6IP1dWsbdE7BUyN3JhDHYKvJu
YKISBpPlljMtsfAws5uVx9JulexBlHoS17gKpbhxjAuvZ5S0en8gAkAmRhXFxqyx
r2VEpjrvPefw4eDz2oNdWCufXziieu9BJThntwi5eNDwEvUI/IMYS0qz5k8TPkeh
QBYH9B+OXh7bab7KBik4ldnZMlcV5HrV3nvC3fGxAPbYAwE/6yS8/hJljKcY4I4m
/BSGpoB4oLQnXiNCsbQcqc7oYrdMj/Nc9apSf0QMfjjNEDN23um6gbPkbpQcVVPW
QtBTd4lp83jNHA3iDrbYcE1rQ7EBsUDzRsE9s0H3M265AQ0EWAotjQEIALW4uqLN
dopTZludUq1o5+XKtDl5LssxLGlcuJRgvL5lSn4F30YTkbV1YXoUZYbteYDyRPFu
/up2a7ZUEkCBOqTQSG2I853INcBbIJ+oPsgMCVeoVdWqT041PeqDEA2azNfQuUbN
JvOcV/OOY4kHbci3hTKSI9r6OaBljfuGneBP1GheByFfvVDNxCj2deDYq39ayVs8
rX4Hb+eVQpA2PUJNqmDE2CYbGMOKOdvOJpGrMOythFdYkmzgSwr3uJcDKNkHiVV/
1CgesOpb7FF4lB9sU3m3F4Zg5FP6rbQxfRfL4sUSVAI3G8+TSb2gYXpUs74trOyE
JvPcC3WVhLnZTgMAEQEAAYkBJQQYAQIADwUCWAotjQIbDAUJADdfAAAKCRAJjcJ/
VFKjc90hB/9aN1MNjW0c06k2PH8IJSu4zPWNOQOWbZdk9sNgsiqxO2ZmM+EZuI+c
IqIbdpl7sDNs+CjZBixbHRpftpGiCxTM+Z0luFaRlSg62+KbG9ykdLVCTxZbNAtg
HXcxu1fH4Kr6Ope/pVzx7RH1KHJY6rAb1+zZI4rIcEt99KeUb07MWmMhctwJy3/W
KPlqevmNDq/nImVgTj2Z+dK5U/YAjDFC9LDUr5Z67WRLxDU8sGBFaNCsKqY4bAzb
cvU+e9hvrVlMj530U7aY4Te4XvG+6WK1GOP5XnnVmO0O1Qf6pkjjOoxOd7/cGsqr
BXCwa81VwZHgC52Nr6kiMvOkoACjKyln
=eXZT
-----END PGP PUBLIC KEY BLOCK-----
void Main()
{
var GpgHome = @"c:\temp\gpgHome\";
var PgpProvider = Path.Combine(GpgHome,"GnuPG_Provider.dll");
var GpgPath = @"C:\userPrograms\gnuPGP\gpg.exe";
var Receiver = GetProfile();
String destFileName = "EnrollmentTestResponseHU.txt";
destFileName = DataFile;
using (var inputStream = new MemoryStream(Encoding.UTF8.GetBytes( "SomeText that needs to be sent"))){
var gisbsender1 = new Gisbsender("someRTK")
{
LogDirectory = "/temp",
PGPProvider = PgpProvider,
DataFrom = "123",
DataTo = Receiver.GisbReceiverId,
URL = "http://requestb.in/utii4zut",
EncryptData = true,
SignData = true,
GISBVersion = Receiver.GisbVersion,
};
gisbsender1.Config("PGPProviderType=1");
gisbsender1.Config("PGPCombineSignAndEncrypt");
gisbsender1.ReceiptTo = gisbsender1.DataFrom; //A signed receipt was requested, but not provided.
gisbsender1.ReceiptSecurity = String.Empty;
gisbsender1.SetPGPParam("gpg-path", GpgPath);
gisbsender1.SetPGPParam("homedir", GpgHome); // where to find the keys
gisbsender1.SetPGPParam("userid","TestGarbage");
gisbsender1.SetPGPParam("passphrase","StupidIsAsStupidDoes");
gisbsender1.SetPGPParam("recipient-userid", Receiver.PgpFingerprint); //Receiver PUBLIC key
if (!String.IsNullOrEmpty(Receiver.HttpsLoginId))
{
gisbsender1.Config("AuthScheme=0"); //0 = Basic, for full list see help file
gisbsender1.Config("User=" + Receiver.HttpsLoginId);
gisbsender1.Config("Password=" + Receiver.HttpsLoginPassword);
gisbsender1.Config("ContentType=application/octet-stream");
gisbsender1.Config("KeepAlive=true");
if (Receiver.DontFoldHeaders)
{
gisbsender1.Config("DontFoldHeaders=true");
}
}
gisbsender1.GISBData = new GISBData()
{
Name = destFileName,
EDIType = "X12",
InputStream = inputStream //our input stream
};
//gisbsender1.OnSSLServerAuthentication += new Gisbsender.OnSSLServerAuthenticationHandler(gisbsender1_OnSSLServerAuthentication);
gisbsender1.Post();
gisbsender1.ResponseContent.Dump();
}
}
// Define other methods and classes here
public EdiProfile GetProfile()
{
return new EdiProfile()
{
SignPayload = true,
GisbVersion = "1.6",
PgpFingerprint = "D2D76FD7288450C329D988C5098DC27F5452A373",
GisbReceiverId = "123456"
};
}
public class EdiProfile
{
public EdiProfile()
{
// set default
QuoteBoundary = true;
SignPayload = false;
}
public string GisbReceiverId { get; set; }
public string Platform { get; set; }
public Guid EdiPartnerId { get; set; }
public string Name { get; set; }
public string IsaInterchangeIdQualifier { get; set; }
public string IsaInterchangeId { get; set; }
// ApplicationReceiverCodeId - for those that are the same regardless of functional group
public string FunctionalGroupId { get; set; }
public char ElementSeparator { get; set; }
public char SubElementSeparator { get; set; }
public char SegmentTerminator { get; set; }
public string Url { get; set; }
public short Port { get; set; }
public string PgpFingerprint { get; set; }
public string HttpsLoginId { get; set; }
public string HttpsLoginPassword { get; set; }
public string EmailNAESBFailure { get; set; }
public string EdiPartnerName { get; set; }
public string GisbVersion { get; set; }
public bool DontFoldHeaders { get; set; }
/// <summary>
/// In a multi-part form upload by the rfc of 822 you should have the boundary string quoted
/// if there is a character that is not on the allowed list. Nsoftware puts an "=" character
/// in the boundary string which is one of those not allowed. The default for this is true,
/// as this is the safe mechanism but some partners require this to be false (specifically at
/// the time of writing ameren, perhaps Comed & Mec but we are not sure with history)
/// </summary>
public bool QuoteBoundary { get; set; }
/// <summary>
/// Indicates whether the payload is required to be signed. The default is false.
/// </summary>
public bool SignPayload { get; set; }
public string N1Id { get; set; }
public static EdiProfile ReadEdiProfileJson(String Name, DirectoryInfo dirToSearch)
{
var allegedFile = Path.Combine(dirToSearch.FullName, String.Format("{0}_ediprofile.json", Name));
// not going to check to see if the path exists. It's dependent on the caller
return JsonConvert.DeserializeObject<EdiProfile>(File.ReadAllText(allegedFile));
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment