summaryrefslogtreecommitdiffstats
path: root/M2Crypto_ext.i
blob: fb4565c003e718ed9f563d455af082a6adadf7ab (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
%module M2Crypto_ext

%include "constraints.i"

%{
#include <openssl/x509.h>
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);
}
%}

%inline %{
PyObject *x509_extension_get_data(X509_EXTENSION *ext) {
    ASN1_OCTET_STRING *octet_str = X509_EXTENSION_get_data(ext);
    const unsigned char* octet_str_data = octet_str->data;
    long xlen;
    int tag, xclass;
    ASN1_get_object(&octet_str_data, &xlen, &tag, &xclass, octet_str->length);

    PyObject * encodedString;
    encodedString = PyString_FromStringAndSize((const char*)octet_str_data, xlen);
    return encodedString;
}
%}