Skip to content

Commit da30732

Browse files
committed
Merge pull request #6 from meh/master
Fix linking when using PEM functions.
2 parents 93c4448 + d0e14f9 commit da30732

File tree

3 files changed

+72
-71
lines changed

3 files changed

+72
-71
lines changed

deimos/openssl/cms.d

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,7 @@ int CMS_set_detached(CMS_ContentInfo* cms, int detached);
132132

133133
// #ifdef HEADER_PEM_H
134134
import deimos.openssl.pem;
135-
mixin DECLARE_PEM_rw_const!("CMS", CMS_ContentInfo);
135+
mixin(DECLARE_PEM_rw_const!("CMS", "CMS_ContentInfo"));
136136
// #endif
137137

138138
int CMS_stream(ubyte*** boundary, CMS_ContentInfo* cms);

deimos/openssl/pem.d

Lines changed: 70 additions & 69 deletions
Original file line numberDiff line numberDiff line change
@@ -328,87 +328,88 @@ int PEM_write_bio_##name(BIO* bp, type* x, const(EVP_CIPHER)* enc, \
328328
/* These are the same except they are for the declarations */
329329

330330
version (OPENSSL_NO_FP_API) {
331-
mixin template DECLARE_PEM_read_fp(string name, type) {}
332-
mixin template DECLARE_PEM_write_fp(string name, type) {}
333-
mixin template DECLARE_PEM_write_fp_const(string name, type) {}
334-
mixin template DECLARE_PEM_write_cb_fp(string name, type) {}
331+
string DECLARE_PEM_read_fp(string name, string type)() { return ""; }
332+
string DECLARE_PEM_read_fp(string name, string type)() { return ""; }
333+
string DECLARE_PEM_write_fp(string name, string type)() { return ""; }
334+
string DECLARE_PEM_write_fp_const(string name, string type)() { return ""; }
335+
string DECLARE_PEM_write_cb_fp(string name, string type)() { return ""; }
335336
} else {
336-
mixin template DECLARE_PEM_read_fp(string name, type) {
337-
mixin("type* PEM_read_" ~ name ~ "(FILE* fp, type** x, pem_password_cb* cb, void* u);");
337+
string DECLARE_PEM_read_fp(string name, string type)() {
338+
return type ~ "* PEM_read_" ~ name ~ "(FILE* fp, " ~ type ~ "** x, pem_password_cb* cb, void* u);";
338339
}
339340

340-
mixin template DECLARE_PEM_write_fp(string name, type) {
341-
mixin("int PEM_write_" ~ name ~ "(FILE* fp, type* x);");
341+
string DECLARE_PEM_write_fp(string name, string type)() {
342+
return "int PEM_write_" ~ name ~ "(FILE* fp, " ~ type ~ "* x);";
342343
}
343344

344-
mixin template DECLARE_PEM_write_fp_const(string name, type) {
345-
mixin("int PEM_write_" ~ name ~ "(FILE* fp, const(type)* x);");
345+
string DECLARE_PEM_write_fp_const(string name, string type)() {
346+
return "int PEM_write_" ~ name ~ "(FILE* fp, const(" ~ type ~ ")* x);";
346347
}
347348

348-
mixin template DECLARE_PEM_write_cb_fp(string name, type) {
349-
mixin("int PEM_write_" ~ name ~ "(FILE* fp, type* x, const(EVP_CIPHER)* enc,
350-
ubyte* kstr, int klen, pem_password_cb* cb, void* u);");
349+
string DECLARE_PEM_write_cb_fp(string name, string type)() {
350+
return "int PEM_write_" ~ name ~ "(FILE* fp, " ~ type ~ "* x, const(EVP_CIPHER)* enc,
351+
ubyte* kstr, int klen, pem_password_cb* cb, void* u);";
351352
}
352353

353354
}
354355

355356
version (OPENSSL_NO_BIO) {
356-
mixin template DECLARE_PEM_read_bio(string name, type) {}
357-
mixin template DECLARE_PEM_write_bio(string name, type) {}
358-
mixin template DECLARE_PEM_write_bio_const(string name, type) {}
359-
mixin template DECLARE_PEM_write_cb_bio(string name, type) {}
357+
string DECLARE_PEM_read_bio(string name, string type)() { return ""; }
358+
string DECLARE_PEM_write_bio(string name, string type)() { return ""; }
359+
string DECLARE_PEM_write_bio_const(string name, string type)() { return ""; }
360+
string DECLARE_PEM_write_cb_bio(string name, string type)() { return ""; }
360361
} else {
361-
mixin template DECLARE_PEM_read_bio(string name, type) {
362-
mixin("type* PEM_read_bio_" ~ name ~ "(BIO* bp, type** x, pem_password_cb* cb, void* u);");
362+
string DECLARE_PEM_read_bio(string name, string type)() {
363+
return type ~ "* PEM_read_bio_" ~ name ~ "(BIO* bp, " ~ type ~ "** x, pem_password_cb* cb, void* u);";
363364
}
364365

365-
mixin template DECLARE_PEM_write_bio(string name, type) {
366-
mixin("int PEM_write_bio_" ~ name ~ "(BIO* bp, type* x);");
366+
string DECLARE_PEM_write_bio(string name, string type)() {
367+
return "int PEM_write_bio_" ~ name ~ "(BIO* bp, " ~ type ~ "* x);";
367368
}
368369

369-
mixin template DECLARE_PEM_write_bio_const(string name, type) {
370-
mixin("int PEM_write_bio_" ~ name ~ "(BIO* bp, const(type)* x);");
370+
string DECLARE_PEM_write_bio_const(string name, string type)() {
371+
return "int PEM_write_bio_" ~ name ~ "(BIO* bp, const(" ~ type ~ ")* x);";
371372
}
372373

373-
mixin template DECLARE_PEM_write_cb_bio(string name, type) {
374-
mixin("int PEM_write_bio_" ~ name ~ "(BIO* bp, type* x, const(EVP_CIPHER)* enc,
375-
ubyte* kstr, int klen, pem_password_cb* cb, void* u);");
374+
string DECLARE_PEM_write_cb_bio(string name, string type)() {
375+
return "int PEM_write_bio_" ~ name ~ "(BIO* bp, " ~ type ~ "* x, const(EVP_CIPHER)* enc,
376+
ubyte* kstr, int klen, pem_password_cb* cb, void* u);";
376377
}
377378
}
378379

379-
mixin template DECLARE_PEM_write(string name, type) {
380-
mixin DECLARE_PEM_write_bio!(name, type);
381-
mixin DECLARE_PEM_write_fp!(name, type);
380+
string DECLARE_PEM_write(string name, string type)() {
381+
return DECLARE_PEM_write_bio!(name, type) ~ "\n" ~
382+
DECLARE_PEM_write_fp!(name, type);
382383
}
383384

384-
mixin template DECLARE_PEM_write_const(string name, type) {
385-
mixin DECLARE_PEM_write_bio_const!(name, type);
386-
mixin DECLARE_PEM_write_fp_const!(name, type);
385+
string DECLARE_PEM_write_const(string name, string type)() {
386+
return DECLARE_PEM_write_bio_const!(name, type) ~ "\n" ~
387+
DECLARE_PEM_write_fp_const!(name, type);
387388
}
388389

389-
mixin template DECLARE_PEM_write_cb(string name, type) {
390-
mixin DECLARE_PEM_write_cb_bio!(name, type);
391-
mixin DECLARE_PEM_write_cb_fp!(name, type);
390+
string DECLARE_PEM_write_cb(string name, string type)() {
391+
return DECLARE_PEM_write_cb_bio!(name, type) ~ "\n" ~
392+
DECLARE_PEM_write_cb_fp!(name, type);
392393
}
393394

394-
mixin template DECLARE_PEM_read(string name, type) {
395-
mixin DECLARE_PEM_read_bio!(name, type);
396-
mixin DECLARE_PEM_read_fp!(name, type);
395+
string DECLARE_PEM_read(string name, string type)() {
396+
return DECLARE_PEM_read_bio!(name, type) ~ "\n" ~
397+
DECLARE_PEM_read_fp!(name, type);
397398
}
398399

399-
mixin template DECLARE_PEM_rw(string name, type) {
400-
mixin DECLARE_PEM_read!(name, type);
401-
mixin DECLARE_PEM_write!(name, type);
400+
string DECLARE_PEM_rw(string name, string type)() {
401+
return DECLARE_PEM_read!(name, type) ~ "\n" ~
402+
DECLARE_PEM_write!(name, type);
402403
}
403404

404-
mixin template DECLARE_PEM_rw_const(string name, type) {
405-
mixin DECLARE_PEM_read!(name, type);
406-
mixin DECLARE_PEM_write_const!(name, type);
405+
string DECLARE_PEM_rw_const(string name, string type)() {
406+
return DECLARE_PEM_read!(name, type) ~ "\n" ~
407+
DECLARE_PEM_write_const!(name, type);
407408
}
408409

409-
mixin template DECLARE_PEM_rw_cb(string name, type) {
410-
mixin DECLARE_PEM_read!(name, type);
411-
mixin DECLARE_PEM_write_cb!(name, type);
410+
string DECLARE_PEM_rw_cb(string name, string type)() {
411+
return DECLARE_PEM_read!(name, type) ~ "\n" ~
412+
DECLARE_PEM_write_cb!(name, type);
412413
}
413414

414415
version (all) {
@@ -472,56 +473,56 @@ void PEM_dek_info(char* buf, const(char)* type, int len, char* str);
472473

473474
public import deimos.openssl.symhacks;
474475

475-
mixin DECLARE_PEM_rw!("X509", X509);
476+
mixin(DECLARE_PEM_rw!("X509", "X509"));
476477

477-
mixin DECLARE_PEM_rw!("X509_AUX", X509);
478+
mixin(DECLARE_PEM_rw!("X509_AUX", "X509"));
478479

479-
mixin DECLARE_PEM_rw!("X509_CERT_PAIR", X509_CERT_PAIR);
480+
mixin(DECLARE_PEM_rw!("X509_CERT_PAIR", "X509_CERT_PAIR"));
480481

481-
mixin DECLARE_PEM_rw!("X509_REQ", X509_REQ);
482-
mixin DECLARE_PEM_write!("X509_REQ_NEW", X509_REQ);
482+
mixin(DECLARE_PEM_rw!("X509_REQ", "X509_REQ"));
483+
mixin(DECLARE_PEM_write!("X509_REQ_NEW", "X509_REQ"));
483484

484-
mixin DECLARE_PEM_rw!("X509_CRL", X509_CRL);
485+
mixin(DECLARE_PEM_rw!("X509_CRL", "X509_CRL"));
485486

486-
mixin DECLARE_PEM_rw!("PKCS7", PKCS7);
487+
mixin(DECLARE_PEM_rw!("PKCS7", "PKCS7"));
487488

488-
mixin DECLARE_PEM_rw!("NETSCAPE_CERT_SEQUENCE", NETSCAPE_CERT_SEQUENCE);
489+
mixin(DECLARE_PEM_rw!("NETSCAPE_CERT_SEQUENCE", "NETSCAPE_CERT_SEQUENCE"));
489490

490-
mixin DECLARE_PEM_rw!("PKCS8", X509_SIG);
491+
mixin(DECLARE_PEM_rw!("PKCS8", "X509_SIG"));
491492

492-
mixin DECLARE_PEM_rw!("PKCS8_PRIV_KEY_INFO", PKCS8_PRIV_KEY_INFO);
493+
mixin(DECLARE_PEM_rw!("PKCS8_PRIV_KEY_INFO", "PKCS8_PRIV_KEY_INFO"));
493494

494495
version(OPENSSL_NO_RSA) {} else {
495-
mixin DECLARE_PEM_rw_cb!("RSAPrivateKey", RSA);
496+
mixin(DECLARE_PEM_rw_cb!("RSAPrivateKey", "RSA"));
496497

497-
mixin DECLARE_PEM_rw_const!("RSAPublicKey", RSA);
498-
mixin DECLARE_PEM_rw!("RSA_PUBKEY", RSA);
498+
mixin(DECLARE_PEM_rw_const!("RSAPublicKey", "RSA"));
499+
mixin(DECLARE_PEM_rw!("RSA_PUBKEY", "RSA"));
499500

500501
}
501502

502503
version(OPENSSL_NO_DSA) {} else {
503-
mixin DECLARE_PEM_rw_cb!("DSAPrivateKey", DSA);
504+
mixin(DECLARE_PEM_rw_cb!("DSAPrivateKey", "DSA"));
504505

505-
mixin DECLARE_PEM_rw!("DSA_PUBKEY", DSA);
506+
mixin(DECLARE_PEM_rw!("DSA_PUBKEY", "DSA"));
506507

507-
mixin DECLARE_PEM_rw_const!("DSAparams", DSA);
508+
mixin(DECLARE_PEM_rw_const!("DSAparams", "DSA"));
508509

509510
}
510511

511512
version(OPENSSL_NO_EC) {} else {
512-
mixin DECLARE_PEM_rw_const!("ECPKParameters", EC_GROUP);
513-
mixin DECLARE_PEM_rw_cb!("ECPrivateKey", EC_KEY);
514-
mixin DECLARE_PEM_rw!("EC_PUBKEY", EC_KEY);
513+
mixin(DECLARE_PEM_rw_const!("ECPKParameters", "EC_GROUP"));
514+
mixin(DECLARE_PEM_rw_cb!("ECPrivateKey", "EC_KEY"));
515+
mixin(DECLARE_PEM_rw!("EC_PUBKEY", "EC_KEY"));
515516
}
516517

517518
version(OPENSSL_NO_DH) {} else {
518-
mixin DECLARE_PEM_rw_const!("DHparams", DH);
519+
mixin(DECLARE_PEM_rw_const!("DHparams", "DH"));
519520

520521
}
521522

522-
mixin DECLARE_PEM_rw_cb!("PrivateKey", EVP_PKEY);
523+
mixin(DECLARE_PEM_rw_cb!("PrivateKey", "EVP_PKEY"));
523524

524-
mixin DECLARE_PEM_rw!("PUBKEY", EVP_PKEY);
525+
mixin(DECLARE_PEM_rw!("PUBKEY", "EVP_PKEY"));
525526

526527
int PEM_write_bio_PKCS8PrivateKey_nid(BIO* bp, EVP_PKEY* x, int nid,
527528
char* kstr, int klen,

deimos/openssl/ssl.d

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1334,7 +1334,7 @@ auto i2d_SSL_SESSION_bio()(BIO* bp,SSL_SESSION** s_id) {
13341334
return ASN1_i2d_bio_of!SSL_SESSION(&i2d_SSL_SESSION,bp,s_id);
13351335
}
13361336

1337-
mixin DECLARE_PEM_rw!("SSL_SESSION", SSL_SESSION);
1337+
mixin(DECLARE_PEM_rw!("SSL_SESSION", "SSL_SESSION"));
13381338

13391339
enum SSL_AD_REASON_OFFSET = 1000; /* offset to get SSL_R_... value from SSL_AD_... */
13401340

0 commit comments

Comments
 (0)