1 /* vi: set sw=4 ts=4: 2 * 3 * Copyright (C) 2001 - 2012 Christian Hohnstaedt. 4 * 5 * All rights reserved. 6 */ 7 8 #include <openssl/objects.h> 9 #include "OidResolver.h" 10 #include "lib/oid.h" 11 #include "lib/base.h" 12 #include "lib/func.h" 13 #include "lib/exception.h" 14 OidResolver(QWidget * parent)15OidResolver::OidResolver(QWidget *parent) 16 :QWidget(parent) 17 { 18 setupUi(this); 19 setWindowTitle(XCA_TITLE); 20 } 21 searchOid(QString s)22void OidResolver::searchOid(QString s) 23 { 24 bool ok; 25 int n; 26 27 if (input->text() != s) // Avoid moving the cursor at end if unchanged. 28 input->setText(s); 29 s = s.trimmed(); 30 n = s.toUInt(&ok); 31 if (!ok) 32 n = OBJ_txt2nid(CCHAR(s)); 33 if (n == NID_undef) { 34 const char *clash = oid_name_clash[s]; 35 if (clash) 36 n = OBJ_txt2nid(clash); 37 } 38 QString lo = s.toLower(); 39 if (n == NID_undef && s != lo) 40 n = OBJ_txt2nid(CCHAR(lo)); 41 if (n == NID_undef && oid_lower_map.contains(lo)) 42 n = oid_lower_map[lo]; 43 ign_openssl_error(); 44 if (n == NID_undef) { 45 ln->clear(); 46 sn->clear(); 47 oid->clear(); 48 nid->clear(); 49 } else { 50 const ASN1_OBJECT *a = OBJ_nid2obj(n); 51 ln->setText(OBJ_nid2ln(n)); 52 sn->setText(OBJ_nid2sn(n)); 53 nid->setText(QString("%1").arg(n)); 54 if (a) { 55 try { 56 oid->setText(OBJ_obj2QString(a, 1)); 57 } catch (errorEx &e) { 58 oid->clear(); 59 } 60 } else { 61 oid->clear(); 62 } 63 } 64 ign_openssl_error(); 65 show(); 66 raise(); 67 } 68