From 77e70f82829aee382105f3d5520edd630933b765 Mon Sep 17 00:00:00 2001 From: Carl Hetherington Date: Thu, 8 Mar 2018 21:26:21 +0000 Subject: Add method to detect utf8 strings. --- src/certificate.cc | 16 ++++++++++++++++ src/certificate.h | 2 ++ 2 files changed, 18 insertions(+) (limited to 'src') diff --git a/src/certificate.cc b/src/certificate.cc index 64fb3626..8064e4ab 100644 --- a/src/certificate.cc +++ b/src/certificate.cc @@ -408,6 +408,22 @@ Certificate::public_key () const return _public_key; } +static bool string_is_utf8 (X509_NAME* n, int nid) +{ + int p = -1; + p = X509_NAME_get_index_by_NID (n, nid, p); + return p != -1 && X509_NAME_ENTRY_get_data(X509_NAME_get_entry(n, p))->type == V_ASN1_UTF8STRING; +} + +bool +Certificate::has_utf8_strings () const +{ + X509_NAME* n = X509_get_subject_name (_certificate); + return string_is_utf8(n, NID_commonName) || + string_is_utf8(n, NID_organizationName) || + string_is_utf8(n, NID_organizationalUnitName); +} + bool dcp::operator== (Certificate const & a, Certificate const & b) { diff --git a/src/certificate.h b/src/certificate.h index 326f277b..0d333f1e 100644 --- a/src/certificate.h +++ b/src/certificate.h @@ -90,6 +90,8 @@ public: std::string thumbprint () const; + bool has_utf8_strings () const; + private: static std::string name_for_xml (X509_NAME *); -- cgit v1.2.3