Skip to content

Commit c0b179e

Browse files
committed
Update changelog and signing support with swig C# wrapper
IB-3896
1 parent 15c032c commit c0b179e

File tree

6 files changed

+61
-50
lines changed

6 files changed

+61
-50
lines changed

RELEASE-NOTES.txt

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,15 @@
1-
Libdigidocpp library 3.10 release notes
1+
Libdigidocpp library 3.10.3 release notes
2+
--------------------------------------
3+
Changes compared to ver 3.10.0
4+
- Updated experimental .NET C# wrapper swig configuration file to recent API
5+
- Included C# wrapper files in Windows installer package
6+
- Filter out CA certificates in PKCS11Signer implementation to support Finland id-card signing in digidoc-tool
7+
- On signature validation at least one DataFile should be signed
8+
- Disable OCSP time slot check – local computer time against OCSP server time
9+
10+
11+
12+
Libdigidocpp library 3.10.0 release notes
213
--------------------------------------
314
Changes compared to ver 3.9
415

cmake

examples/DigiDocCSharp/DigiDocCSharp.csproj

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -35,12 +35,6 @@
3535
</PropertyGroup>
3636
<ItemGroup>
3737
<Reference Include="System" />
38-
<Reference Include="System.Core" />
39-
<Reference Include="System.Xml.Linq" />
40-
<Reference Include="System.Data.DataSetExtensions" />
41-
<Reference Include="Microsoft.CSharp" />
42-
<Reference Include="System.Data" />
43-
<Reference Include="System.Xml" />
4438
</ItemGroup>
4539
<ItemGroup>
4640
<Compile Include="Program.cs" />

examples/DigiDocCSharp/Program.cs

Lines changed: 45 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,8 @@
22
// This software is released under the BSD License (see LICENSE.BSD)
33

44
using System;
5-
using System.Collections.Generic;
65
using System.IO;
7-
using System.Linq;
8-
using System.Text;
6+
using System.Security.Cryptography.X509Certificates;
97
using digidoc;
108

119
namespace DigiDocCSharp
@@ -21,21 +19,13 @@ static void Main(string[] args)
2119
return;
2220
}
2321

24-
int pos = args[0].IndexOf("=");
25-
switch (pos == -1 ? args[0] : args[0].Substring(0, pos))
22+
switch (args[0])
2623
{
27-
case "-extract":
28-
if (pos < 0)
29-
{
30-
Console.WriteLine("Index must be 0 or greater");
31-
help();
32-
}
33-
else
34-
extract(Convert.ToInt32(args[0].Substring(pos + 1)), args[1]);
35-
return;
36-
case "-verify": verify(args[1]); return;
37-
case "-version": version(); return;
38-
case "-help":
24+
case "extract": extract(Convert.ToInt32(args[1]), args[2]); return;
25+
case "sign": sign(args); return;
26+
case "verify": verify(args[1]); return;
27+
case "version": version(); return;
28+
case "help":
3929
default: help(); return;
4030
}
4131
}
@@ -69,15 +59,38 @@ static void extract(int index, string file)
6959

7060
static void help()
7161
{
72-
Console.WriteLine("DigiDocCSharpt [[command] file]");
62+
Console.WriteLine("DigiDocCSharpt command");
7363
Console.WriteLine("Command:");
74-
Console.WriteLine(" -extract=[num]\tExtracts files from document");
75-
Console.WriteLine(" -help\t\tPrints utility commands");
76-
Console.WriteLine(" -verify\tVerifies document signature and shows info");
77-
Console.WriteLine(" -version\tPrints utility version");
64+
Console.WriteLine(" extract\tExtracts files from document");
65+
Console.WriteLine(" num");
66+
Console.WriteLine(" file");
67+
Console.WriteLine(" help\t\tPrints utility commands");
68+
Console.WriteLine(" sign\t\tSigns file");
69+
Console.WriteLine(" verify\t\tVerifies document signature and shows info");
70+
Console.WriteLine(" file");
71+
Console.WriteLine(" version\tPrints utility version");
7872
version();
7973
}
8074

75+
static void sign(string[] args)
76+
{
77+
digidoc.digidoc.initialize();
78+
try
79+
{
80+
Console.WriteLine("Creating file: " + args[args.Length-1]);
81+
Container b = new Container(Container.DocumentType.BDocType);
82+
for (int i = 1; i < args.Length - 1; ++i)
83+
b.addDataFile(args[i], "");
84+
b.sign("", "", "", "", new StringVector { }, "");
85+
b.save(args[args.Length - 1]);
86+
}
87+
catch (Exception e)
88+
{
89+
Console.WriteLine(e.Message);
90+
}
91+
digidoc.digidoc.terminate();
92+
}
93+
8194
static void verify(string file)
8295
{
8396
digidoc.digidoc.initialize();
@@ -88,9 +101,7 @@ static void verify(string file)
88101

89102
Console.WriteLine("Files:");
90103
foreach (DataFile d in b.dataFiles())
91-
{
92104
Console.WriteLine(" {0} - {1}", d.fileName(), d.mediaType());
93-
}
94105
Console.WriteLine();
95106

96107
Console.WriteLine("Signatures:");
@@ -104,32 +115,28 @@ static void verify(string file)
104115
Console.WriteLine();
105116

106117
Console.WriteLine("Time: " + s.signingTime());
107-
108-
System.Security.Cryptography.X509Certificates.X509Certificate2 c =
109-
new System.Security.Cryptography.X509Certificates.X509Certificate2(s.signingCert());
118+
X509Certificate2 c = new X509Certificate2(s.signingCert());
110119
Console.WriteLine("Cert: " + c.Subject);
111-
try
112-
{
113-
s.validate();
114-
Console.WriteLine("Signature is valid");
115-
}
116-
catch (Exception e)
117-
{
118-
Console.WriteLine("Signature is invalid");
119-
Console.WriteLine(e.Message);
120-
}
120+
121+
Console.WriteLine("ProducedAt: " + s.producedAt());
122+
c = new X509Certificate2(s.OCSPCert());
123+
Console.WriteLine("OCSP Cert: " + c.Subject);
124+
125+
s.validate();
126+
Console.WriteLine("Signature is valid");
121127
}
122128
}
123129
catch (Exception e)
124130
{
131+
Console.WriteLine("Signature is invalid");
125132
Console.WriteLine(e.Message);
126133
}
127134
digidoc.digidoc.terminate();
128135
}
129136

130137
static void version()
131138
{
132-
Console.WriteLine("DigiDocCSharp 0.1");
139+
Console.WriteLine("DigiDocCSharp 0.1 libdigidocpp " + digidoc.digidoc.version());
133140
}
134141
}
135142
}

examples/DigiDocCSharp/Properties/AssemblyInfo.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
[assembly: AssemblyConfiguration("")]
1111
[assembly: AssemblyCompany("")]
1212
[assembly: AssemblyProduct("DigiDocCSharp")]
13-
[assembly: AssemblyCopyright("Copyright © 2012")]
13+
[assembly: AssemblyCopyright("Copyright © 2015")]
1414
[assembly: AssemblyTrademark("")]
1515
[assembly: AssemblyCulture("")]
1616

src/digidoc.i

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -115,15 +115,14 @@
115115
%feature("notabstract") digidoc::Signature; // Breaks PHP if abstract
116116
#endif
117117

118-
// TODO: useful, but broken
119-
%ignore *::sign;
120-
121118
// ignore X509Cert and implement later cert as ByteVector
122119
%ignore digidoc::Signature::signingCertificate;
123120
%ignore digidoc::Signature::OCSPCertificate;
124121
%ignore digidoc::Signature::TSCertificate;
125122
%ignore digidoc::Container::addRawSignature(std::istream &signature);
126123
%ignore digidoc::Container::addDataFile(std::istream *is, const std::string &fileName, const std::string &mediaType);
124+
%ignore digidoc::Container::sign(Signer* signer);
125+
%ignore digidoc::Container::sign(Signer* signer, const std::string &profile);
127126
%ignore digidoc::DataFile::saveAs(std::ostream &os) const;
128127

129128
// Handle standard C++ types

0 commit comments

Comments
 (0)