Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(82)

Side by Side Diff: runtime/bin/secure_socket.cc

Issue 12316036: Merge IO v2 branch to bleeding edge (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Rebased to r18818 Created 7 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « runtime/bin/process_patch.dart ('k') | runtime/bin/secure_socket_patch.dart » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 #include "bin/secure_socket.h" 5 #include "bin/secure_socket.h"
6 6
7 #include <errno.h> 7 #include <errno.h>
8 #include <fcntl.h> 8 #include <fcntl.h>
9 #include <sys/stat.h> 9 #include <sys/stat.h>
10 #include <stdio.h> 10 #include <stdio.h>
(...skipping 428 matching lines...) Expand 10 before | Expand all | Expand 10 after
439 } 439 }
440 440
441 filter_ = SSL_ImportFD(NULL, filter_); 441 filter_ = SSL_ImportFD(NULL, filter_);
442 if (filter_ == NULL) { 442 if (filter_ == NULL) {
443 ThrowPRException("Failed SSL_ImportFD call"); 443 ThrowPRException("Failed SSL_ImportFD call");
444 } 444 }
445 445
446 SECStatus status; 446 SECStatus status;
447 if (is_server) { 447 if (is_server) {
448 PK11_SetPasswordFunc(PasswordCallback); 448 PK11_SetPasswordFunc(PasswordCallback);
449 CERTCertDBHandle* certificate_database = CERT_GetDefaultCertDB(); 449
450 if (certificate_database == NULL) { 450 CERTCertificate* certificate = NULL;
451 ThrowPRException("Certificate database cannot be loaded"); 451 if (strstr(certificate_name, "CN=") != NULL) {
452 } 452 // Look up certificate using the distinguished name (DN) certificate_name.
453 // TODO(whesse): Switch to a function that looks up certs by nickname, 453 CERTCertDBHandle* certificate_database = CERT_GetDefaultCertDB();
454 // so that server and client uses of certificateName agree. 454 if (certificate_database == NULL) {
455 CERTCertificate* certificate = CERT_FindCertByNameString( 455 ThrowPRException("Certificate database cannot be loaded");
456 certificate_database, 456 }
457 const_cast<char*>(certificate_name)); 457 certificate = CERT_FindCertByNameString(certificate_database,
458 if (certificate == NULL) { 458 const_cast<char*>(certificate_name));
459 ThrowPRException("Cannot find server certificate by name"); 459 if (certificate == NULL) {
460 ThrowPRException(
461 "Cannot find server certificate by distinguished name");
462 }
463 } else {
464 // Look up certificate using the nickname certificate_name.
465 certificate = PK11_FindCertFromNickname(
466 const_cast<char*>(certificate_name),
467 static_cast<void*>(const_cast<char*>(password_)));
468 if (certificate == NULL) {
469 ThrowPRException("Cannot find server certificate by nickname");
470 }
460 } 471 }
461 SECKEYPrivateKey* key = PK11_FindKeyByAnyCert( 472 SECKEYPrivateKey* key = PK11_FindKeyByAnyCert(
462 certificate, 473 certificate,
463 static_cast<void*>(const_cast<char*>(password_))); 474 static_cast<void*>(const_cast<char*>(password_)));
464 if (key == NULL) { 475 if (key == NULL) {
465 CERT_DestroyCertificate(certificate); 476 CERT_DestroyCertificate(certificate);
466 if (PR_GetError() == -8177) { 477 if (PR_GetError() == -8177) {
467 ThrowPRException("Certificate database password incorrect"); 478 ThrowPRException("Certificate database password incorrect");
468 } else { 479 } else {
469 ThrowPRException("Failed PK11_FindKeyByAnyCert call." 480 ThrowPRException("Failed PK11_FindKeyByAnyCert call."
(...skipping 206 matching lines...) Expand 10 before | Expand all | Expand 10 after
676 if (PR_WOULD_BLOCK_ERROR != pr_error) { 687 if (PR_WOULD_BLOCK_ERROR != pr_error) {
677 ThrowPRException("Error reading plaintext from SSLFilter"); 688 ThrowPRException("Error reading plaintext from SSLFilter");
678 } 689 }
679 bytes_processed = 0; 690 bytes_processed = 0;
680 } 691 }
681 break; 692 break;
682 } 693 }
683 } 694 }
684 return bytes_processed; 695 return bytes_processed;
685 } 696 }
OLDNEW
« no previous file with comments | « runtime/bin/process_patch.dart ('k') | runtime/bin/secure_socket_patch.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698