src/x509.c

changeset 23
20528cb40c4a
parent 22
c4452dfd6ade
child 24
bbf12f9be71c
equal deleted inserted replaced
22:c4452dfd6ade 23:20528cb40c4a
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 };

mercurial