summaryrefslogtreecommitdiff
path: root/matlab/src
diff options
context:
space:
mode:
Diffstat (limited to 'matlab/src')
-rw-r--r--matlab/src/Connection.cpp17
-rw-r--r--matlab/src/Util.cpp12
-rw-r--r--matlab/src/Util.h2
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&);