diff options
Diffstat (limited to 'matlab/src')
-rw-r--r-- | matlab/src/Connection.cpp | 17 | ||||
-rw-r--r-- | matlab/src/Util.cpp | 12 | ||||
-rw-r--r-- | matlab/src/Util.h | 2 |
3 files changed, 27 insertions, 4 deletions
diff --git a/matlab/src/Connection.cpp b/matlab/src/Connection.cpp index 907bff89b4d..a97e1468d60 100644 --- a/matlab/src/Connection.cpp +++ b/matlab/src/Connection.cpp @@ -8,6 +8,7 @@ // ********************************************************************** #include <Ice/Ice.h> +#include <IceSSL/IceSSL.h> #include "ice.h" #include "Future.h" #include "Util.h" @@ -34,6 +35,9 @@ enum Field McastAddress, McastPort, Headers, + Cipher, + Certs, + Verified, NumFields // Number of fields in structure, must be last }; @@ -52,7 +56,10 @@ static const char* infoFields[] = "sndSize", "mcastAddress", "mcastPort", - "headers" + "headers", + "cipher", + "certs", + "verified" }; mxArray* @@ -112,12 +119,14 @@ createInfo(const shared_ptr<Ice::ConnectionInfo>& info) mxSetFieldByNumber(r, 0, Field::Headers, createStringMap(wsInfo->headers)); } - /* TODO: If we link with IceSSL - if(dynamic_pointer_cast<IceSSL::ConnectionInfo>(info)) + shared_ptr<IceSSL::ConnectionInfo> sslInfo = dynamic_pointer_cast<IceSSL::ConnectionInfo>(info); + if(sslInfo) { type = "ssl"; + mxSetFieldByNumber(r, 0, Field::Cipher, createStringFromUTF8(sslInfo->cipher)); + mxSetFieldByNumber(r, 0, Field::Certs, createCertificateList(sslInfo->certs)); + mxSetFieldByNumber(r, 0, Field::Verified, createBool(sslInfo->verified)); } - */ mxSetFieldByNumber(r, 0, Field::Type, createStringFromUTF8(type)); diff --git a/matlab/src/Util.cpp b/matlab/src/Util.cpp index 23a2c81ae78..30605a90eb1 100644 --- a/matlab/src/Util.cpp +++ b/matlab/src/Util.cpp @@ -598,6 +598,18 @@ IceMatlab::createByteArray(const Ice::Byte* begin, const Ice::Byte* end) return r; } +mxArray* +IceMatlab::createCertificateList(const vector<IceSSL::CertificatePtr>& v) +{ + auto r = mxCreateCellMatrix(1, static_cast<int>(v.size())); + mwIndex i = 0; + for(auto p = v.begin(); p != v.end(); ++p, ++i) + { + mxSetCell(r, i, createStringFromUTF8((*p)->encode())); + } + return r; +} + namespace { diff --git a/matlab/src/Util.h b/matlab/src/Util.h index 6c265c8ce44..0963d9c7a1e 100644 --- a/matlab/src/Util.h +++ b/matlab/src/Util.h @@ -9,6 +9,7 @@ #include <Ice/Identity.h> #include <Ice/Version.h> +#include <IceSSL/IceSSL.h> #include <mex.h> typedef struct mxArray_tag mxArray; // Forward declaration to avoid importing mex.h here @@ -43,6 +44,7 @@ mxArray* createOptionalValue(bool, mxArray*); mxArray* createStringList(const std::vector<std::string>&); void getStringList(mxArray*, std::vector<std::string>&); mxArray* createByteArray(const Ice::Byte*, const Ice::Byte*); +mxArray* createCertificateList(const std::vector<IceSSL::CertificatePtr>&); std::string idToClass(const std::string&); |