/* * Copyright (c) 2010-2016 Isode Limited. * All rights reserved. * See the COPYING file for more information. */ #pragma once #include #include #include #include namespace Swift { class OpenSSLCertificate : public Certificate { public: OpenSSLCertificate(std::shared_ptr); OpenSSLCertificate(const ByteArray& der); std::string getSubjectName() const { return subjectName; } std::vector getCommonNames() const { return commonNames; } std::vector getSRVNames() const { return srvNames; } std::vector getDNSNames() const { return dnsNames; } std::vector getXMPPAddresses() const { return xmppAddresses; } ByteArray toDER() const; std::shared_ptr getInternalX509() const { return cert; } private: void parse(); void addSRVName(const std::string& name) { srvNames.push_back(name); } void addDNSName(const std::string& name) { dnsNames.push_back(name); } void addXMPPAddress(const std::string& addr) { xmppAddresses.push_back(addr); } private: std::shared_ptr cert; std::string subjectName; std::vector commonNames; std::vector dnsNames; std::vector xmppAddresses; std::vector srvNames; }; }