summaryrefslogtreecommitdiffstats
path: root/Swift
diff options
context:
space:
mode:
authorAlexey Melnikov <alexey.melnikov@isode.com>2012-03-07 19:16:54 (GMT)
committerKevin Smith <git@kismith.co.uk>2012-03-08 15:18:38 (GMT)
commit0833f7da453db9cd0fc3a78c793e7532663ab86b (patch)
tree0f0dab24760aa0ad5a77a3f5a4b3a25af3420a2a /Swift
parent2ba2c34e59c4ec5da9254b6c6f4669e0ee3c3225 (diff)
downloadswift-0833f7da453db9cd0fc3a78c793e7532663ab86b.zip
swift-0833f7da453db9cd0fc3a78c793e7532663ab86b.tar.bz2
Fixed several bugs in CAPI/Schannel code on Windows
This patch includes the following fixes: 1) Correctly hex encode SHA1 hashes when generating certstore: URIs 2) Use the newly parsed certificate store reference, not the old value 3) Need to call findCertificateInStore() when finding the selected TLS certificate in Schannel code. Without that "sha1:XXXX" URIs don't work Also minor optimization of string operations. License: This patch is BSD-licensed, see Documentation/Licenses/BSD-simplified.txt for details.
Diffstat (limited to 'Swift')
-rw-r--r--Swift/QtUI/CAPICertificateSelector.cpp7
1 files changed, 5 insertions, 2 deletions
diff --git a/Swift/QtUI/CAPICertificateSelector.cpp b/Swift/QtUI/CAPICertificateSelector.cpp
index e7948ef..0d4768c 100644
--- a/Swift/QtUI/CAPICertificateSelector.cpp
+++ b/Swift/QtUI/CAPICertificateSelector.cpp
@@ -30,7 +30,10 @@ namespace Swift {
static std::string getCertUri(PCCERT_CONTEXT cert, const char * cert_store_name) {
DWORD cbHash = SHA1_HASH_LEN;
BYTE aHash[SHA1_HASH_LEN];
- std::string ret = std::string("certstore:") + cert_store_name + ":" + "sha1:";
+ std::string ret("certstore:");
+
+ ret += cert_store_name;
+ ret += ":sha1:";
if (CertGetCertificateContextProperty(cert,
CERT_HASH_PROP_ID,
@@ -39,7 +42,7 @@ static std::string getCertUri(PCCERT_CONTEXT cert, const char * cert_store_name)
return "";
}
- ByteArray byteArray = createByteArray((char *)(&aHash[0]));
+ ByteArray byteArray = createByteArray((char *)(&aHash[0]), cbHash);
ret += Hexify::hexify(byteArray);
return ret;