69 } |
69 } |
70 lua_replace(L, -2); /* Replace key with table */ |
70 lua_replace(L, -2); /* Replace key with table */ |
71 return 0; |
71 return 0; |
72 } |
72 } |
73 |
73 |
74 int meth_subject(lua_State* L) |
74 void luasec_push_x509_name(lua_State* L, X509_NAME *name) |
75 { |
75 { |
76 X509 *peer; |
|
77 X509_NAME *subject; |
|
78 int i, n_entries; |
76 int i, n_entries; |
79 |
77 lua_newtable(L); |
80 peer = luasec_to_x509(L, 1); |
78 n_entries = X509_NAME_entry_count(name); |
81 |
|
82 lua_newtable(L); /* ret */ |
|
83 |
|
84 subject = X509_get_subject_name(peer); |
|
85 n_entries = X509_NAME_entry_count(subject); |
|
86 |
79 |
87 for(i = 0; i <= n_entries; i++) |
80 for(i = 0; i <= n_entries; i++) |
88 { |
81 { |
89 X509_NAME_ENTRY *entry; |
82 X509_NAME_ENTRY *entry; |
90 ASN1_OBJECT *object; |
83 ASN1_OBJECT *object; |
91 |
84 |
92 entry = X509_NAME_get_entry(subject, i); |
85 entry = X509_NAME_get_entry(name, i); |
93 object = X509_NAME_ENTRY_get_object(entry); |
86 object = X509_NAME_ENTRY_get_object(entry); |
94 |
87 |
95 lua_newtable(L); |
88 lua_newtable(L); |
96 |
89 |
97 luasec_push_asn1_objname(L, object, 1); |
90 luasec_push_asn1_objname(L, object, 1); |
104 lua_setfield(L, -2, "value"); |
97 lua_setfield(L, -2, "value"); |
105 |
98 |
106 lua_rawseti(L, -2, lua_objlen(L, -2)+1); |
99 lua_rawseti(L, -2, lua_objlen(L, -2)+1); |
107 |
100 |
108 } |
101 } |
|
102 } |
|
103 |
|
104 |
|
105 int meth_subject(lua_State* L) |
|
106 { |
|
107 luasec_push_x509_name(L, X509_get_subject_name(luasec_to_x509(L, 1))); |
|
108 return 1; |
|
109 } |
|
110 |
|
111 int meth_issuer(lua_State* L) |
|
112 { |
|
113 luasec_push_x509_name(L, X509_get_issuer_name(luasec_to_x509(L, 1))); |
109 return 1; |
114 return 1; |
110 } |
115 } |
111 |
116 |
112 int meth_extensions(lua_State* L) |
117 int meth_extensions(lua_State* L) |
113 { |
118 { |
247 /** |
252 /** |
248 * Certificate metamethods |
253 * Certificate metamethods |
249 */ |
254 */ |
250 static luaL_Reg meta[] = { |
255 static luaL_Reg meta[] = { |
251 {"subject", meth_subject}, |
256 {"subject", meth_subject}, |
|
257 {"issuer", meth_issuer}, |
252 {"extensions", meth_extensions}, |
258 {"extensions", meth_extensions}, |
253 {"pem", meth_pem}, |
259 {"pem", meth_pem}, |
254 {"digest", meth_digest}, |
260 {"digest", meth_digest}, |
255 {NULL, NULL} |
261 {NULL, NULL} |
256 }; |
262 }; |