~exarkun/pyopenssl/mem-bio

« back to all changes in this revision

Viewing changes to src/crypto/crypto.c

  • Committer: Jean-Paul Calderone
  • Date: 2009-04-01 18:49:13 UTC
  • mfrom: (98.1.5 dump_text)
  • Revision ID: exarkun@magnon-20090401184913-s95sb944xxhq1q3d
Add FILETYPE_TEXT for dumping keys and certificates to a text format

Show diffs side-by-side

added added

removed removed

Lines of Context:
147
147
    pem_password_cb *cb = NULL;
148
148
    void *cb_arg = NULL;
149
149
    BIO *bio;
 
150
    RSA *rsa;
150
151
    crypto_PKeyObj *pkey;
151
152
 
152
153
    if (!PyArg_ParseTuple(args, "iO!|sO:dump_privatekey", &type,
199
200
            ret = i2d_PrivateKey_bio(bio, pkey->pkey);
200
201
            break;
201
202
 
 
203
        case X509_FILETYPE_TEXT:
 
204
            rsa = EVP_PKEY_get1_RSA(pkey->pkey);
 
205
            ret = RSA_print(bio, rsa, 0);
 
206
            RSA_free(rsa); 
 
207
            break;
 
208
 
202
209
        default:
203
 
            PyErr_SetString(PyExc_ValueError, "type argument must be FILETYPE_PEM or FILETYPE_ASN1");
 
210
            PyErr_SetString(PyExc_ValueError, "type argument must be FILETYPE_PEM, FILETYPE_ASN1, or FILETYPE_TEXT");
204
211
            BIO_free(bio);
205
212
            return NULL;
206
213
    }
302
309
            ret = i2d_X509_bio(bio, cert->x509);
303
310
            break;
304
311
 
 
312
        case X509_FILETYPE_TEXT:
 
313
            ret = X509_print_ex(bio, cert->x509, 0, 0);
 
314
            break;
 
315
 
305
316
        default:
306
 
            PyErr_SetString(PyExc_ValueError, "type argument must be FILETYPE_PEM or FILETYPE_ASN1");
 
317
            PyErr_SetString(PyExc_ValueError, "type argument must be FILETYPE_PEM, FILETYPE_ASN1, or FILETYPE_TEXT");
307
318
            BIO_free(bio);
308
319
            return NULL;
309
320
    }
405
416
            ret = i2d_X509_REQ_bio(bio, req->x509_req);
406
417
            break;
407
418
 
 
419
        case X509_FILETYPE_TEXT:
 
420
            ret = X509_REQ_print_ex(bio, req->x509_req, 0, 0);
 
421
            break;
 
422
 
408
423
        default:
409
 
            PyErr_SetString(PyExc_ValueError, "type argument must be FILETYPE_PEM or FILETYPE_ASN1");
 
424
            PyErr_SetString(PyExc_ValueError, "type argument must be FILETYPE_PEM, FILETYPE_ASN1, or FILETYPE_TEXT");
410
425
            BIO_free(bio);
411
426
            return NULL;
412
427
    }
801
816
 
802
817
    PyModule_AddIntConstant(module, "FILETYPE_PEM",  X509_FILETYPE_PEM);
803
818
    PyModule_AddIntConstant(module, "FILETYPE_ASN1", X509_FILETYPE_ASN1);
 
819
    PyModule_AddIntConstant(module, "FILETYPE_TEXT", X509_FILETYPE_TEXT);
804
820
 
805
821
    PyModule_AddIntConstant(module, "TYPE_RSA", crypto_TYPE_RSA);
806
822
    PyModule_AddIntConstant(module, "TYPE_DSA", crypto_TYPE_DSA);