# HG changeset patch # User Matthew Wild # Date 1289003957 0 # Node ID 20528cb40c4a1fba3a27283713712aa90b1676d8 # Parent c4452dfd6ade2a3c29b4556969451479734f4712 x509: Add :issuer() method, change returned format for both :subject() and :issuer() to preserve order diff -r c4452dfd6ade -r 20528cb40c4a src/x509.c --- a/src/x509.c Fri Nov 05 23:59:34 2010 +0000 +++ b/src/x509.c Sat Nov 06 00:39:17 2010 +0000 @@ -71,25 +71,18 @@ return 0; } -int meth_subject(lua_State* L) +void luasec_push_x509_name(lua_State* L, X509_NAME *name) { - X509 *peer; - X509_NAME *subject; int i, n_entries; - - peer = luasec_to_x509(L, 1); - - lua_newtable(L); /* ret */ - - subject = X509_get_subject_name(peer); - n_entries = X509_NAME_entry_count(subject); + lua_newtable(L); + n_entries = X509_NAME_entry_count(name); for(i = 0; i <= n_entries; i++) { X509_NAME_ENTRY *entry; ASN1_OBJECT *object; - entry = X509_NAME_get_entry(subject, i); + entry = X509_NAME_get_entry(name, i); object = X509_NAME_ENTRY_get_object(entry); lua_newtable(L); @@ -106,6 +99,18 @@ lua_rawseti(L, -2, lua_objlen(L, -2)+1); } +} + + +int meth_subject(lua_State* L) +{ + luasec_push_x509_name(L, X509_get_subject_name(luasec_to_x509(L, 1))); + return 1; +} + +int meth_issuer(lua_State* L) +{ + luasec_push_x509_name(L, X509_get_issuer_name(luasec_to_x509(L, 1))); return 1; } @@ -249,6 +254,7 @@ */ static luaL_Reg meta[] = { {"subject", meth_subject}, + {"issuer", meth_issuer}, {"extensions", meth_extensions}, {"pem", meth_pem}, {"digest", meth_digest},