1 /* Copyright (c) 1999-2002 Ng Pheng Siong. All rights reserved. 2 * Copyright (c) 2009-2010 Heikki Toivonen. All rights reserved. 3 */ 4 /* $Id$ */ 5 6 %{ 7 #include <openssl/x509v3.h> 8 %} 9 10 %warnfilter(454) _util_err; 11 %inline %{ 12 static PyObject *_util_err; 13 util_init(PyObject * util_err)14void util_init(PyObject *util_err) { 15 Py_INCREF(util_err); 16 _util_err = util_err; 17 } 18 util_hex_to_string(PyObject * blob)19PyObject *util_hex_to_string(PyObject *blob) { 20 PyObject *obj; 21 const void *buf; 22 char *ret; 23 Py_ssize_t len; 24 25 if (m2_PyObject_AsReadBuffer(blob, &buf, &len) == -1) 26 return NULL; 27 28 ret = hex_to_string((unsigned char *)buf, len); 29 if (!ret) { 30 m2_PyErr_Msg(_util_err); 31 return NULL; 32 } 33 34 obj = PyBytes_FromString(ret); 35 36 OPENSSL_free(ret); 37 return obj; 38 } 39 util_string_to_hex(PyObject * blob)40PyObject *util_string_to_hex(PyObject *blob) { 41 PyObject *obj; 42 const void *buf; 43 unsigned char *ret; 44 Py_ssize_t len0; 45 long len; 46 47 if (m2_PyObject_AsReadBuffer(blob, &buf, &len0) == -1) 48 return NULL; 49 50 len = len0; 51 ret = string_to_hex((char *)buf, &len); 52 if (ret == NULL) { 53 m2_PyErr_Msg(_util_err); 54 return NULL; 55 } 56 obj = PyBytes_FromStringAndSize((char*)ret, len); 57 OPENSSL_free(ret); 58 return obj; 59 } 60 %} 61