Ruby
1.9.3p429(2013-05-15revision40747)
Main Page
Modules
Data Structures
Files
File List
Globals
ext
openssl
ossl_config.c
Go to the documentation of this file.
1
/*
2
* $Id: ossl_config.c 29359 2010-09-29 03:37:44Z nobu $
3
* 'OpenSSL for Ruby' project
4
* Copyright (C) 2001-2002 Michal Rokos <m.rokos@sh.cvut.cz>
5
* All rights reserved.
6
*/
7
/*
8
* This program is licenced under the same licence as Ruby.
9
* (See the file 'LICENCE'.)
10
*/
11
#include "
ossl.h
"
12
13
14
/*
15
* Classes
16
*/
17
VALUE
cConfig
;
18
VALUE
eConfigError
;
19
20
/*
21
* Public
22
*/
23
24
/*
25
* GetConfigPtr is a public C-level function for getting OpenSSL CONF struct
26
* from an OpenSSL::Config(eConfig) instance. We decided to implement
27
* OpenSSL::Config in Ruby level but we need to pass native CONF struct for
28
* some OpenSSL features such as X509V3_EXT_*.
29
*/
30
CONF *
31
GetConfigPtr
(
VALUE
obj)
32
{
33
CONF *conf;
34
VALUE
str;
35
BIO *bio;
36
long
eline = -1;
37
38
OSSL_Check_Kind
(obj,
cConfig
);
39
str =
rb_funcall
(obj,
rb_intern
(
"to_s"
), 0);
40
bio =
ossl_obj2bio
(str);
41
conf = NCONF_new(
NULL
);
42
if
(!conf){
43
BIO_free(bio);
44
ossl_raise
(
eConfigError
,
NULL
);
45
}
46
if
(!NCONF_load_bio(conf, bio, &eline)){
47
BIO_free(bio);
48
NCONF_free(conf);
49
if
(eline <= 0)
ossl_raise
(
eConfigError
,
"wrong config format"
);
50
else
ossl_raise
(
eConfigError
,
"error in line %d"
, eline);
51
ossl_raise
(
eConfigError
,
NULL
);
52
}
53
BIO_free(bio);
54
55
return
conf;
56
}
57
58
59
/*
60
* INIT
61
*/
62
void
63
Init_ossl_config
()
64
{
65
char
*default_config_file;
66
eConfigError
=
rb_define_class_under
(
mOSSL
,
"ConfigError"
,
eOSSLError
);
67
cConfig
=
rb_define_class_under
(
mOSSL
,
"Config"
,
rb_cObject
);
68
69
default_config_file =
CONF_get1_default_config_file
();
70
rb_define_const
(
cConfig
,
"DEFAULT_CONFIG_FILE"
,
71
rb_str_new2
(default_config_file));
72
OPENSSL_free(default_config_file);
73
/* methods are defined by openssl/config.rb */
74
}
75
Generated on Thu May 23 2013 20:33:03 for Ruby by
1.8.3