diff options
| author | Alexey Melnikov <alexey.melnikov@isode.com> | 2012-03-07 19:16:54 (GMT) | 
|---|---|---|
| committer | Kevin Smith <git@kismith.co.uk> | 2012-03-08 15:18:38 (GMT) | 
| commit | 0833f7da453db9cd0fc3a78c793e7532663ab86b (patch) | |
| tree | 0f0dab24760aa0ad5a77a3f5a4b3a25af3420a2a /Swift/QtUI/CAPICertificateSelector.cpp | |
| parent | 2ba2c34e59c4ec5da9254b6c6f4669e0ee3c3225 (diff) | |
| download | swift-contrib-0833f7da453db9cd0fc3a78c793e7532663ab86b.zip swift-contrib-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/QtUI/CAPICertificateSelector.cpp')
| -rw-r--r-- | Swift/QtUI/CAPICertificateSelector.cpp | 7 | 
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;  | 
 Swift