%module M2Crypto_ext %include "constraints.i" %{ #include #include typedef STACK_OF(X509_EXTENSION) X509_EXTENSION_STACK; %} %apply Pointer NONNULL { X509_REQ * }; %inline %{ X509_EXTENSION_STACK *x509_req_get_extensions(X509_REQ *req) { return X509_REQ_get_extensions(req); } ASN1_OCTET_STRING *x509_extension_get_data(X509_EXTENSION *ext) { return X509_EXTENSION_get_data(ext); } bool x509_extension_cmp(X509_EXTENSION *ext1, X509_EXTENSION *ext2) { ASN1_OCTET_STRING *data1 = X509_EXTENSION_get_data(ext1); ASN1_OCTET_STRING *data2 = X509_EXTENSION_get_data(ext2); return ASN1_OCTET_STRING_cmp(data1, data2) == 0; } %}