summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTobias Markmann <tm@ayena.de>2017-10-02 13:10:29 (GMT)
committerTobias Markmann <tm@ayena.de>2017-10-02 13:10:29 (GMT)
commit867ee9a1590f340ef57cebc15ab5ddb8a08f2a53 (patch)
treefcb41335452f3c4bd2ee0613b3f622911e040789 /Swiften/TLS/SecureTransport
parent38c132a6fe0ecaa3394550df15d36ae10dcce7d9 (diff)
downloadswift-867ee9a1590f340ef57cebc15ab5ddb8a08f2a53.zip
swift-867ee9a1590f340ef57cebc15ab5ddb8a08f2a53.tar.bz2
Fix Code According to New clang warning (-Wobjc-messaging-id)
Test-Information: Builds and test pass on macOS 10.13 with clang-trunk. Change-Id: I7a515a003602a983681f85374a8a77dc953f533d
Diffstat (limited to 'Swiften/TLS/SecureTransport')
-rw-r--r--Swiften/TLS/SecureTransport/SecureTransportCertificate.mm9
1 files changed, 5 insertions, 4 deletions
diff --git a/Swiften/TLS/SecureTransport/SecureTransportCertificate.mm b/Swiften/TLS/SecureTransport/SecureTransportCertificate.mm
index db0af89..fffb3ed 100644
--- a/Swiften/TLS/SecureTransport/SecureTransportCertificate.mm
+++ b/Swiften/TLS/SecureTransport/SecureTransportCertificate.mm
@@ -1,32 +1,32 @@
/*
- * Copyright (c) 2015-2016 Isode Limited.
+ * Copyright (c) 2015-2017 Isode Limited.
* All rights reserved.
* See the COPYING file for more information.
*/
#include <Swiften/TLS/SecureTransport/SecureTransportCertificate.h>
#include <boost/numeric/conversion/cast.hpp>
#include <Cocoa/Cocoa.h>
#include <Security/Security.h>
#include <Swiften/Base/Log.h>
namespace {
template <typename T, typename S>
T bridge_cast(S source) {
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wold-style-cast"
return (__bridge T)(source);
#pragma clang diagnostic pop
}
}
namespace {
inline std::string ns2StdString(NSString* _Nullable nsString);
inline std::string ns2StdString(NSString* _Nullable nsString) {
std::string stdString;
@@ -66,67 +66,68 @@ void SecureTransportCertificate::parse() {
assert(certificateHandle_);
CFErrorRef error = nullptr;
// The SecCertificateCopyValues function is not part of the iOS Secure Transport API.
CFDictionaryRef valueDict = SecCertificateCopyValues(certificateHandle_.get(), nullptr, &error);
if (valueDict) {
// Handle subject.
CFStringRef subject = SecCertificateCopySubjectSummary(certificateHandle_.get());
if (subject) {
NSString* subjectStr = bridge_cast<NSString*>(subject);
subjectName_ = ns2StdString(subjectStr);
CFRelease(subject);
}
// Handle a single Common Name.
CFStringRef commonName = nullptr;
OSStatus error = SecCertificateCopyCommonName(certificateHandle_.get(), &commonName);
if (!error && commonName) {
NSString* commonNameStr = bridge_cast<NSString*>(commonName);
commonNames_.push_back(ns2StdString(commonNameStr));
}
if (commonName) {
CFRelease(commonName);
}
// Handle Subject Alternative Names
NSDictionary* certDict = bridge_cast<NSDictionary*>(valueDict);
NSDictionary* subjectAltNamesDict = certDict[@"2.5.29.17"][@"value"];
for (NSDictionary* entry in subjectAltNamesDict) {
- if ([entry[@"label"] isEqualToString:static_cast<NSString * _Nonnull>([NSString stringWithUTF8String:ID_ON_XMPPADDR_OID])]) {
+ NSString* label = entry[@"label"];
+ if ([label isEqualToString:static_cast<NSString * _Nonnull>([NSString stringWithUTF8String:ID_ON_XMPPADDR_OID])]) {
xmppAddresses_.push_back(ns2StdString(entry[@"value"]));
}
- else if ([entry[@"label"] isEqualToString:static_cast<NSString * _Nonnull>([NSString stringWithUTF8String:ID_ON_DNSSRV_OID])]) {
+ else if ([label isEqualToString:static_cast<NSString * _Nonnull>([NSString stringWithUTF8String:ID_ON_DNSSRV_OID])]) {
srvNames_.push_back(ns2StdString(entry[@"value"]));
}
- else if ([entry[@"label"] isEqualToString:@"DNS Name"]) {
+ else if ([label isEqualToString:@"DNS Name"]) {
dnsNames_.push_back(ns2StdString(entry[@"value"]));
}
}
CFRelease(valueDict);
}
if (error) {
CFRelease(error);
}
}
std::string SecureTransportCertificate::getSubjectName() const {
return subjectName_;
}
std::vector<std::string> SecureTransportCertificate::getCommonNames() const {
return commonNames_;
}
std::vector<std::string> SecureTransportCertificate::getSRVNames() const {
return srvNames_;
}
std::vector<std::string> SecureTransportCertificate::getDNSNames() const {
return dnsNames_;
}
std::vector<std::string> SecureTransportCertificate::getXMPPAddresses() const {
return xmppAddresses_;
}