30
30
#include < crypto/X509Crypto.h>
31
31
#include < util/DateTime.h>
32
32
33
- #include < openssl/opensslv.h>
34
-
35
33
namespace digidoc
36
34
{
37
35
@@ -41,7 +39,7 @@ class TestFixture: public DigiDocPPFixture
41
39
TestFixture ()
42
40
{
43
41
copyTSL (" EE_T-good.xml" );
44
- digidoc:: initialize (" untitestboost" );
42
+ initialize (" untitestboost" );
45
43
}
46
44
};
47
45
@@ -123,9 +121,9 @@ BOOST_AUTO_TEST_SUITE_END()
123
121
BOOST_AUTO_TEST_SUITE(X509CertSuite)
124
122
BOOST_AUTO_TEST_CASE(parameters)
125
123
{
126
- auto signer1 = make_unique<PKCS12Signer> (" signer1.p12" , " signer1" );
127
- X509Cert c = signer1-> cert ();
128
- BOOST_CHECK_EQUAL (c, signer1-> cert ());
124
+ PKCS12Signer signer1 (" signer1.p12" , " signer1" );
125
+ X509Cert c = signer1. cert ();
126
+ BOOST_CHECK_EQUAL (c, signer1. cert ());
129
127
BOOST_CHECK_EQUAL (!c, false );
130
128
BOOST_CHECK_EQUAL (c, true );
131
129
@@ -143,27 +141,30 @@ BOOST_AUTO_TEST_CASE(parameters)
143
141
}
144
142
BOOST_AUTO_TEST_SUITE_END ()
145
143
146
- BOOST_AUTO_TEST_SUITE(X509Crypto )
144
+ BOOST_AUTO_TEST_SUITE(X509CryptoSuite )
147
145
BOOST_AUTO_TEST_CASE(parameters)
148
146
{
149
147
X509Cert cert (" 47101010033.cer" , X509Cert::Pem);
150
- digidoc:: X509Crypto crypto (cert);
148
+ X509Crypto crypto (cert);
151
149
BOOST_CHECK_EQUAL (crypto.isRSAKey (), true );
152
150
BOOST_CHECK_EQUAL (crypto.compareIssuerToString (cert.issuerName ()), 0 );
153
151
BOOST_CHECK_EQUAL (crypto.
compareIssuerToString (
" [email protected] ,CN=TEST of ESTEID-SK 2015,O=AS Sertifitseerimiskeskus,C=EE" ), -
1 );
154
152
BOOST_CHECK_EQUAL (crypto.
compareIssuerToString (
" [email protected] ,CN=TEST of EST\\ 45ID-SK 2015,O=AS Sertifitseerimiskeskus,C=EE" ), -
1 );
155
153
BOOST_CHECK_EQUAL (crypto.compareIssuerToString (cert.issuerName ()+" EE" ), -1 );
156
154
157
- digidoc::X509Crypto test (X509Cert (" test.crt" , X509Cert::Pem));
155
+ X509Cert cert1 (" unicode.crt" , X509Cert::Pem);
156
+ BOOST_CHECK_EQUAL (X509Crypto (cert1).compareIssuerToString (cert1.issuerName ()), 0 );
157
+
158
+ X509Crypto test (X509Cert (" test.crt" , X509Cert::Pem));
158
159
BOOST_CHECK_EQUAL (test.compareIssuerToString (" CN=\\\" test\\\" " ), 0 );
159
160
160
- auto signer1 = make_unique<PKCS12Signer> (" signer1.p12" , " signer1" );
161
+ PKCS12Signer signer1 (" signer1.p12" , " signer1" );
161
162
const vector<unsigned char > data{' H' ,' e' ,' l' ,' l' ,' o' ,' ' ,' w' ,' o' ,' r' ,' l' ,' d' };
162
163
vector<unsigned char > digest = Digest (URI_SHA256).result (data);
163
- vector<unsigned char > signature = signer1-> sign (URI_SHA256, digest);
164
- BOOST_CHECK_EQUAL (digidoc:: X509Crypto (signer1-> cert ()).verify (URI_SHA256, digest, signature), true );
164
+ vector<unsigned char > signature = signer1. sign (URI_SHA256, digest);
165
+ BOOST_CHECK_EQUAL (X509Crypto (signer1. cert ()).verify (URI_SHA256, digest, signature), true );
165
166
digest[0 ] += 1 ;
166
- BOOST_CHECK_EQUAL (digidoc:: X509Crypto (signer1-> cert ()).verify (URI_SHA256, digest, signature), false );
167
+ BOOST_CHECK_EQUAL (X509Crypto (signer1. cert ()).verify (URI_SHA256, digest, signature), false );
167
168
}
168
169
BOOST_AUTO_TEST_SUITE_END ()
169
170
@@ -291,17 +292,17 @@ BOOST_AUTO_TEST_CASE_TEMPLATE(signature, Doc, DocTypes)
291
292
292
293
BOOST_CHECK_THROW (d->removeSignature (0U ), Exception);
293
294
294
- auto signer1 = make_unique<PKCS12Signer> (" signer1.p12" , " signer1" );
295
- signer1-> setProfile (" time-stamp" );
296
- BOOST_CHECK_THROW (d->sign (signer1. get () ), Exception);
295
+ PKCS12Signer signer1 (" signer1.p12" , " signer1" );
296
+ signer1. setProfile (" time-stamp" );
297
+ BOOST_CHECK_THROW (d->sign (& signer1), Exception);
297
298
298
299
// Add first Signature
299
300
BOOST_CHECK_NO_THROW (d->addDataFile (" test1.txt" , " text/plain" ));
300
- BOOST_CHECK_NO_THROW (d->sign (signer1. get () ));
301
+ BOOST_CHECK_NO_THROW (d->sign (& signer1));
301
302
BOOST_CHECK_EQUAL (d->signatures ().size (), 1U );
302
303
if (d->signatures ().size () == 1 )
303
304
{
304
- BOOST_CHECK_EQUAL (d->signatures ().at (0 )->signingCertificate (), signer1-> cert ());
305
+ BOOST_CHECK_EQUAL (d->signatures ().at (0 )->signingCertificate (), signer1. cert ());
305
306
BOOST_CHECK_NO_THROW (d->signatures ().at (0 )->validate ());
306
307
}
307
308
BOOST_CHECK_NO_THROW (d->save (Doc::EXT + " .tmp" ));
@@ -311,12 +312,12 @@ BOOST_AUTO_TEST_CASE_TEMPLATE(signature, Doc, DocTypes)
311
312
BOOST_CHECK_THROW (d->removeDataFile (0U ), Exception);
312
313
313
314
// Add second Signature
314
- auto signer2 = make_unique<PKCS12Signer> (" signer2.p12" , " signer2" );
315
- BOOST_CHECK_NO_THROW (d->sign (signer2. get () ));
315
+ PKCS12Signer signer2 (" signer2.p12" , " signer2" );
316
+ BOOST_CHECK_NO_THROW (d->sign (& signer2));
316
317
BOOST_CHECK_EQUAL (d->signatures ().size (), 2U );
317
318
if (d->signatures ().size () == 2 )
318
319
{
319
- BOOST_CHECK_EQUAL (d->signatures ().at (1 )->signingCertificate (), signer2-> cert ());
320
+ BOOST_CHECK_EQUAL (d->signatures ().at (1 )->signingCertificate (), signer2. cert ());
320
321
BOOST_CHECK_NO_THROW (d->signatures ().at (1 )->validate ());
321
322
}
322
323
BOOST_CHECK_NO_THROW (d->save ());
@@ -325,28 +326,28 @@ BOOST_AUTO_TEST_CASE_TEMPLATE(signature, Doc, DocTypes)
325
326
BOOST_CHECK_NO_THROW (d->removeSignature (0U ));
326
327
BOOST_CHECK_EQUAL (d->signatures ().size (), 1U );
327
328
if (d->signatures ().size () == 1 )
328
- BOOST_CHECK_EQUAL (d->signatures ().at (0 )->signingCertificate (), signer2-> cert ());
329
+ BOOST_CHECK_EQUAL (d->signatures ().at (0 )->signingCertificate (), signer2. cert ());
329
330
330
331
if (d->mediaType () == ASiCE::TYPE)
331
332
{
332
- auto signer3 = make_unique<PKCS12Signer> (" signerEC.p12" , " signerEC" );
333
+ PKCS12Signer signer3 (" signerEC.p12" , " signerEC" );
333
334
Signature *s3 = nullptr ;
334
- BOOST_CHECK_NO_THROW (s3 = d->sign (signer3. get () ));
335
+ BOOST_CHECK_NO_THROW (s3 = d->sign (& signer3));
335
336
BOOST_CHECK_EQUAL (d->signatures ().size (), 2U );
336
337
if (s3)
337
338
{
338
339
BOOST_CHECK_EQUAL (s3->signatureMethod (), URI_ECDSA_SHA256);
339
- BOOST_CHECK_EQUAL (s3->signingCertificate (), signer3-> cert ());
340
+ BOOST_CHECK_EQUAL (s3->signingCertificate (), signer3. cert ());
340
341
BOOST_CHECK_NO_THROW (s3->validate ());
341
342
}
342
343
BOOST_CHECK_NO_THROW (d->save ());
343
344
344
345
// Reload from file and validate
345
346
d = Container::openPtr (Doc::EXT + " .tmp" );
346
347
BOOST_CHECK_EQUAL (d->signatures ().size (), 2U );
347
- if (( s3 = d->signatures ().back ()) )
348
+ if (s3 = d->signatures ().back (); s3 )
348
349
{
349
- BOOST_CHECK_EQUAL (s3->signingCertificate (), signer3-> cert ());
350
+ BOOST_CHECK_EQUAL (s3->signingCertificate (), signer3. cert ());
350
351
BOOST_CHECK_NO_THROW (s3->validate ());
351
352
}
352
353
@@ -355,43 +356,43 @@ BOOST_AUTO_TEST_CASE_TEMPLATE(signature, Doc, DocTypes)
355
356
BOOST_CHECK_EQUAL (d->signatures ().size (), 1U );
356
357
357
358
// TSA signature
358
- signer2-> setProfile (" time-stamp-archive" );
359
- BOOST_CHECK_NO_THROW (s3 = d->sign (signer2. get () ));
360
- // BOOST_CHECK_EQUAL(s3->TSCertificate(), signer2-> cert());
359
+ signer2. setProfile (" time-stamp-archive" );
360
+ BOOST_CHECK_NO_THROW (s3 = d->sign (& signer2));
361
+ // BOOST_CHECK_EQUAL(s3->TSCertificate(), signer2. cert());
361
362
// BOOST_CHECK_NO_THROW(s3->validate());
362
363
BOOST_CHECK_NO_THROW (d->save (Doc::EXT + " -TSA.tmp" ));
363
364
BOOST_CHECK_NO_THROW (d->removeSignature (1U ));
364
365
BOOST_CHECK_EQUAL (d->signatures ().size (), 1U );
365
366
366
367
// Save with no SignatureValue and later add signautre value
367
- signer2-> setProfile (" time-stamp" );
368
+ signer2. setProfile (" time-stamp" );
368
369
d = Container::createPtr (Doc::EXT + " .tmp" );
369
370
BOOST_CHECK_NO_THROW (d->addDataFile (" test1.txt" , " text/plain" ));
370
371
Signature *s = nullptr ;
371
- BOOST_CHECK_NO_THROW (s = d->prepareSignature (signer2. get () ));
372
+ BOOST_CHECK_NO_THROW (s = d->prepareSignature (& signer2));
372
373
vector<unsigned char > signatureValue;
373
- BOOST_CHECK_NO_THROW (signatureValue = signer2-> sign (s->signatureMethod (), s->dataToSign ()));
374
+ BOOST_CHECK_NO_THROW (signatureValue = signer2. sign (s->signatureMethod (), s->dataToSign ()));
374
375
BOOST_CHECK_NO_THROW (d->save ());
375
376
d = Container::openPtr (Doc::EXT + " .tmp" );
376
377
s = d->signatures ().back ();
377
378
BOOST_CHECK_NO_THROW (s->setSignatureValue (signatureValue));
378
- BOOST_CHECK_NO_THROW (s->extendSignatureProfile (signer2-> profile ()));
379
+ BOOST_CHECK_NO_THROW (s->extendSignatureProfile (signer2. profile ()));
379
380
BOOST_CHECK_NO_THROW (d->save ());
380
381
BOOST_CHECK_NO_THROW (s->validate ());
381
382
382
383
// RSA PSS tests
383
384
d = Container::createPtr (Doc::EXT + " .tmp" );
384
385
BOOST_CHECK_NO_THROW (d->addDataFile (" test1.txt" , " text/plain" ));
385
- signer1-> setMethod (URI_RSA_PSS_SHA256);
386
- BOOST_CHECK_NO_THROW (s = d->sign (signer1. get () ));
386
+ signer1. setMethod (URI_RSA_PSS_SHA256);
387
+ BOOST_CHECK_NO_THROW (s = d->sign (& signer1));
387
388
BOOST_CHECK_NO_THROW (s->validate ());
388
- BOOST_CHECK_EQUAL (s->signatureMethod (), signer1-> method ());
389
- auto signer4 = make_unique<PKCS12Signer> (" signerEC384.p12" , " signerEC" );
390
- signer4-> setProfile (" BES" ); // Not signed with same Issuer
389
+ BOOST_CHECK_EQUAL (s->signatureMethod (), signer1. method ());
390
+ PKCS12Signer signer4 (" signerEC384.p12" , " signerEC" );
391
+ signer4. setProfile (" BES" ); // Not signed with same Issuer
391
392
d = Container::createPtr (Doc::EXT + " .tmp" );
392
393
BOOST_CHECK_NO_THROW (d->addDataFile (" test1.txt" , " text/plain" ));
393
394
Signature *s4 = nullptr ;
394
- BOOST_CHECK_NO_THROW (s4 = d->sign (signer4. get () ));
395
+ BOOST_CHECK_NO_THROW (s4 = d->sign (& signer4));
395
396
BOOST_CHECK_EQUAL (s4->signatureMethod (), URI_ECDSA_SHA384);
396
397
}
397
398
@@ -402,13 +403,13 @@ BOOST_AUTO_TEST_CASE_TEMPLATE(signature, Doc, DocTypes)
402
403
403
404
BOOST_AUTO_TEST_CASE_TEMPLATE (files, Doc, DocTypes)
404
405
{
405
- auto signer1 = make_unique<PKCS12Signer> (" signer1.p12" , " signer1" );
406
+ PKCS12Signer signer1 (" signer1.p12" , " signer1" );
406
407
for (const string &data : {" 0123456789~#%&()=`@{[]}'" , " öäüõ" })
407
408
{
408
409
auto d = Container::createPtr (" test." + Doc::EXT);
409
410
const Signature *s1 = nullptr ;
410
411
BOOST_CHECK_NO_THROW (d->addDataFile (data + " .txt" , " text/plain" ));
411
- BOOST_CHECK_NO_THROW (s1 = d->sign (signer1. get () ));
412
+ BOOST_CHECK_NO_THROW (s1 = d->sign (& signer1));
412
413
if (s1)
413
414
s1->validate ();
414
415
d->save (data + Doc::EXT + " .tmp" );
@@ -422,23 +423,23 @@ BOOST_AUTO_TEST_CASE_TEMPLATE(files, Doc, DocTypes)
422
423
BOOST_AUTO_TEST_CASE_TEMPLATE (signatureParameters, Doc, DocTypes)
423
424
{
424
425
auto d = Container::createPtr (" test." + Doc::EXT);
425
- auto signer1 = make_unique<PKCS12Signer> (" signer1.p12" , " signer1" );
426
+ PKCS12Signer signer1 (" signer1.p12" , " signer1" );
426
427
427
- signer1-> setSignatureProductionPlace (" Tartu" , " Tartumaa" , " 12345" , " Estonia" );
428
+ signer1. setSignatureProductionPlace (" Tartu" , " Tartumaa" , " 12345" , " Estonia" );
428
429
429
430
vector<string> roles{" Role1" };
430
- signer1-> setSignerRoles ( roles );
431
+ signer1. setSignerRoles ( roles );
431
432
432
433
const Signature *s1 = nullptr ;
433
434
BOOST_CHECK_NO_THROW (d->addDataFile (" test1.txt" , " text/plain" ));
434
435
BOOST_CHECK_NO_THROW (d->addDataFile (" test2.bin" , " text/plain" ));
435
- BOOST_CHECK_NO_THROW (s1 = d->sign (signer1. get () ));
436
+ BOOST_CHECK_NO_THROW (s1 = d->sign (& signer1));
436
437
BOOST_CHECK_EQUAL (d->signatures ().size (), 1U );
437
438
if (s1)
438
439
{
439
440
BOOST_CHECK_NO_THROW (s1->validate ());
440
441
BOOST_CHECK_EQUAL (s1->id (), " S0" );
441
- BOOST_CHECK_EQUAL (s1->signingCertificate (), signer1-> cert ());
442
+ BOOST_CHECK_EQUAL (s1->signingCertificate (), signer1. cert ());
442
443
BOOST_CHECK_EQUAL (s1->signerRoles (), roles);
443
444
BOOST_CHECK_EQUAL (s1->city (), " Tartu" );
444
445
BOOST_CHECK_EQUAL (s1->stateOrProvince (), " Tartumaa" );
@@ -455,8 +456,8 @@ BOOST_AUTO_TEST_CASE_TEMPLATE(signatureParameters, Doc, DocTypes)
455
456
if (d->signatures ().size () == 1U )
456
457
BOOST_CHECK_NO_THROW (d->signatures ().front ()->validate ());
457
458
458
- auto signer3 = make_unique<PKCS12Signer> (" signer3.p12" , " signer3" );
459
- BOOST_CHECK_THROW (d->sign (signer3. get () ), Exception); // OCSP UNKNOWN
459
+ PKCS12Signer signer3 (" signer3.p12" , " signer3" );
460
+ BOOST_CHECK_THROW (d->sign (& signer3), Exception); // OCSP UNKNOWN
460
461
}
461
462
BOOST_AUTO_TEST_SUITE_END ()
462
463
0 commit comments