< prev index next >

src/java.base/share/classes/sun/security/ssl/SSLContextImpl.java

Print this page




 532         private static final List<ProtocolVersion> serverDefaultProtocols;
 533 
 534         private static final List<CipherSuite> supportedCipherSuites;
 535         private static final List<CipherSuite> serverDefaultCipherSuites;
 536 
 537         static {
 538             supportedProtocols = Arrays.asList(
 539                 ProtocolVersion.TLS13,
 540                 ProtocolVersion.TLS12,
 541                 ProtocolVersion.TLS11,
 542                 ProtocolVersion.TLS10,
 543                 ProtocolVersion.SSL30,
 544                 ProtocolVersion.SSL20Hello
 545             );
 546 
 547             serverDefaultProtocols = getAvailableProtocols(
 548                     new ProtocolVersion[] {
 549                 ProtocolVersion.TLS13,
 550                 ProtocolVersion.TLS12,
 551                 ProtocolVersion.TLS11,
 552                 ProtocolVersion.TLS10,
 553                 ProtocolVersion.SSL30,
 554                 ProtocolVersion.SSL20Hello
 555             });
 556 
 557             supportedCipherSuites = getApplicableSupportedCipherSuites(
 558                     supportedProtocols);
 559             serverDefaultCipherSuites = getApplicableEnabledCipherSuites(
 560                     serverDefaultProtocols, false);
 561         }
 562 
 563         @Override
 564         List<ProtocolVersion> getSupportedProtocolVersions() {
 565             return supportedProtocols;
 566         }
 567 
 568         @Override
 569         List<CipherSuite> getSupportedCipherSuites() {
 570             return supportedCipherSuites;
 571         }
 572 
 573         @Override
 574         List<ProtocolVersion> getServerDefaultProtocolVersions() {


 583         @Override
 584         SSLEngine createSSLEngineImpl() {
 585             return new SSLEngineImpl(this);
 586         }
 587 
 588         @Override
 589         SSLEngine createSSLEngineImpl(String host, int port) {
 590             return new SSLEngineImpl(this, host, port);
 591         }
 592 
 593         @Override
 594         boolean isDTLS() {
 595             return false;
 596         }
 597 
 598         static ProtocolVersion[] getSupportedProtocols() {
 599             return new ProtocolVersion[]{
 600                     ProtocolVersion.TLS13,
 601                     ProtocolVersion.TLS12,
 602                     ProtocolVersion.TLS11,
 603                     ProtocolVersion.TLS10,
 604                     ProtocolVersion.SSL30,
 605                     ProtocolVersion.SSL20Hello
 606             };
 607         }
 608     }
 609 
 610     /*
 611      * The SSLContext implementation for SSLv3 and TLS10 algorithm
 612      *
 613      * @see SSLContext
 614      */
 615     public static final class TLS10Context extends AbstractTLSContext {
 616         private static final List<ProtocolVersion> clientDefaultProtocols;
 617         private static final List<CipherSuite> clientDefaultCipherSuites;
 618 
 619         static {
 620             clientDefaultProtocols = getAvailableProtocols(
 621                     new ProtocolVersion[] {
 622                 ProtocolVersion.TLS10,
 623                 ProtocolVersion.SSL30
 624             });
 625 
 626             clientDefaultCipherSuites = getApplicableEnabledCipherSuites(
 627                     clientDefaultProtocols, true);
 628         }
 629 
 630         @Override
 631         List<ProtocolVersion> getClientDefaultProtocolVersions() {
 632             return clientDefaultProtocols;
 633         }
 634 
 635         @Override
 636         List<CipherSuite> getClientDefaultCipherSuites() {
 637             return clientDefaultCipherSuites;
 638         }
 639     }
 640 
 641     /*
 642      * The SSLContext implementation for TLS11 algorithm
 643      *
 644      * @see SSLContext
 645      */
 646     public static final class TLS11Context extends AbstractTLSContext {
 647         private static final List<ProtocolVersion> clientDefaultProtocols;
 648         private static final List<CipherSuite> clientDefaultCipherSuites;
 649 
 650         static {
 651             clientDefaultProtocols = getAvailableProtocols(
 652                     new ProtocolVersion[] {
 653                 ProtocolVersion.TLS11,
 654                 ProtocolVersion.TLS10,
 655                 ProtocolVersion.SSL30
 656             });
 657 
 658             clientDefaultCipherSuites = getApplicableEnabledCipherSuites(
 659                     clientDefaultProtocols, true);
 660 
 661         }
 662 
 663         @Override
 664         List<ProtocolVersion> getClientDefaultProtocolVersions() {
 665             return clientDefaultProtocols;
 666         }
 667 
 668         @Override
 669         List<CipherSuite> getClientDefaultCipherSuites() {
 670             return clientDefaultCipherSuites;
 671         }
 672     }
 673 
 674     /*
 675      * The SSLContext implementation for TLS12 algorithm
 676      *
 677      * @see SSLContext
 678      */
 679     public static final class TLS12Context extends AbstractTLSContext {
 680         private static final List<ProtocolVersion> clientDefaultProtocols;
 681         private static final List<CipherSuite> clientDefaultCipherSuites;
 682 
 683         static {
 684             clientDefaultProtocols = getAvailableProtocols(
 685                     new ProtocolVersion[] {
 686                 ProtocolVersion.TLS12,
 687                 ProtocolVersion.TLS11,
 688                 ProtocolVersion.TLS10,
 689                 ProtocolVersion.SSL30
 690             });
 691 
 692             clientDefaultCipherSuites = getApplicableEnabledCipherSuites(
 693                     clientDefaultProtocols, true);
 694         }
 695 
 696         @Override
 697         List<ProtocolVersion> getClientDefaultProtocolVersions() {
 698             return clientDefaultProtocols;
 699         }
 700 
 701         @Override
 702         List<CipherSuite> getClientDefaultCipherSuites() {
 703             return clientDefaultCipherSuites;
 704         }
 705     }
 706 
 707     /*
 708      * The SSLContext implementation for TLS1.3 algorithm
 709      *
 710      * @see SSLContext
 711      */
 712     public static final class TLS13Context extends AbstractTLSContext {
 713         private static final List<ProtocolVersion> clientDefaultProtocols;
 714         private static final List<CipherSuite> clientDefaultCipherSuites;
 715 
 716         static {
 717             clientDefaultProtocols = getAvailableProtocols(
 718                     new ProtocolVersion[] {
 719                 ProtocolVersion.TLS13,
 720                 ProtocolVersion.TLS12,
 721                 ProtocolVersion.TLS11,
 722                 ProtocolVersion.TLS10,
 723                 ProtocolVersion.SSL30
 724             });
 725 
 726             clientDefaultCipherSuites = getApplicableEnabledCipherSuites(
 727                     clientDefaultProtocols, true);
 728         }
 729 
 730         @Override
 731         List<ProtocolVersion> getClientDefaultProtocolVersions() {
 732             return clientDefaultProtocols;
 733         }
 734 
 735         @Override
 736         List<CipherSuite> getClientDefaultCipherSuites() {
 737             return clientDefaultCipherSuites;
 738         }
 739     }
 740 
 741     /*
 742      * The interface for the customized SSL/(D)TLS SSLContext.
 743      *


 859             if (refactored.isEmpty()) {
 860                 if (client) {
 861                     candidates = getProtocols();
 862                 } else {
 863                     candidates = getSupportedProtocols();
 864                 }
 865             } else {
 866                 // Use the customized TLS protocols.
 867                 candidates =
 868                     refactored.toArray(new ProtocolVersion[refactored.size()]);
 869             }
 870 
 871             return getAvailableProtocols(candidates);
 872         }
 873 
 874         static ProtocolVersion[] getProtocols() {
 875             return new ProtocolVersion[]{
 876                     ProtocolVersion.TLS13,
 877                     ProtocolVersion.TLS12,
 878                     ProtocolVersion.TLS11,
 879                     ProtocolVersion.TLS10,
 880                     ProtocolVersion.SSL30
 881             };
 882         }
 883 
 884         protected CustomizedTLSContext() {
 885             if (reservedException != null) {
 886                 throw reservedException;
 887             }
 888         }
 889 
 890         @Override
 891         List<ProtocolVersion> getClientDefaultProtocolVersions() {
 892             return clientDefaultProtocols;
 893         }
 894 
 895         @Override
 896         List<ProtocolVersion> getServerDefaultProtocolVersions() {
 897             return serverDefaultProtocols;
 898         }
 899 
 900         @Override




 532         private static final List<ProtocolVersion> serverDefaultProtocols;
 533 
 534         private static final List<CipherSuite> supportedCipherSuites;
 535         private static final List<CipherSuite> serverDefaultCipherSuites;
 536 
 537         static {
 538             supportedProtocols = Arrays.asList(
 539                 ProtocolVersion.TLS13,
 540                 ProtocolVersion.TLS12,
 541                 ProtocolVersion.TLS11,
 542                 ProtocolVersion.TLS10,
 543                 ProtocolVersion.SSL30,
 544                 ProtocolVersion.SSL20Hello
 545             );
 546 
 547             serverDefaultProtocols = getAvailableProtocols(
 548                     new ProtocolVersion[] {
 549                 ProtocolVersion.TLS13,
 550                 ProtocolVersion.TLS12,
 551                 ProtocolVersion.TLS11,
 552                 ProtocolVersion.TLS10


 553             });
 554 
 555             supportedCipherSuites = getApplicableSupportedCipherSuites(
 556                     supportedProtocols);
 557             serverDefaultCipherSuites = getApplicableEnabledCipherSuites(
 558                     serverDefaultProtocols, false);
 559         }
 560 
 561         @Override
 562         List<ProtocolVersion> getSupportedProtocolVersions() {
 563             return supportedProtocols;
 564         }
 565 
 566         @Override
 567         List<CipherSuite> getSupportedCipherSuites() {
 568             return supportedCipherSuites;
 569         }
 570 
 571         @Override
 572         List<ProtocolVersion> getServerDefaultProtocolVersions() {


 581         @Override
 582         SSLEngine createSSLEngineImpl() {
 583             return new SSLEngineImpl(this);
 584         }
 585 
 586         @Override
 587         SSLEngine createSSLEngineImpl(String host, int port) {
 588             return new SSLEngineImpl(this, host, port);
 589         }
 590 
 591         @Override
 592         boolean isDTLS() {
 593             return false;
 594         }
 595 
 596         static ProtocolVersion[] getSupportedProtocols() {
 597             return new ProtocolVersion[]{
 598                     ProtocolVersion.TLS13,
 599                     ProtocolVersion.TLS12,
 600                     ProtocolVersion.TLS11,
 601                     ProtocolVersion.TLS10


 602             };
 603         }
 604     }
 605 
 606     /*
 607      * The SSLContext implementation for SSLv3 and TLS10 algorithm
 608      *
 609      * @see SSLContext
 610      */
 611     public static final class TLS10Context extends AbstractTLSContext {
 612         private static final List<ProtocolVersion> clientDefaultProtocols;
 613         private static final List<CipherSuite> clientDefaultCipherSuites;
 614 
 615         static {
 616             clientDefaultProtocols = getAvailableProtocols(
 617                     new ProtocolVersion[] {
 618                 ProtocolVersion.TLS10

 619             });
 620 
 621             clientDefaultCipherSuites = getApplicableEnabledCipherSuites(
 622                     clientDefaultProtocols, true);
 623         }
 624 
 625         @Override
 626         List<ProtocolVersion> getClientDefaultProtocolVersions() {
 627             return clientDefaultProtocols;
 628         }
 629 
 630         @Override
 631         List<CipherSuite> getClientDefaultCipherSuites() {
 632             return clientDefaultCipherSuites;
 633         }
 634     }
 635 
 636     /*
 637      * The SSLContext implementation for TLS11 algorithm
 638      *
 639      * @see SSLContext
 640      */
 641     public static final class TLS11Context extends AbstractTLSContext {
 642         private static final List<ProtocolVersion> clientDefaultProtocols;
 643         private static final List<CipherSuite> clientDefaultCipherSuites;
 644 
 645         static {
 646             clientDefaultProtocols = getAvailableProtocols(
 647                     new ProtocolVersion[] {
 648                 ProtocolVersion.TLS11,
 649                 ProtocolVersion.TLS10

 650             });
 651 
 652             clientDefaultCipherSuites = getApplicableEnabledCipherSuites(
 653                     clientDefaultProtocols, true);
 654 
 655         }
 656 
 657         @Override
 658         List<ProtocolVersion> getClientDefaultProtocolVersions() {
 659             return clientDefaultProtocols;
 660         }
 661 
 662         @Override
 663         List<CipherSuite> getClientDefaultCipherSuites() {
 664             return clientDefaultCipherSuites;
 665         }
 666     }
 667 
 668     /*
 669      * The SSLContext implementation for TLS12 algorithm
 670      *
 671      * @see SSLContext
 672      */
 673     public static final class TLS12Context extends AbstractTLSContext {
 674         private static final List<ProtocolVersion> clientDefaultProtocols;
 675         private static final List<CipherSuite> clientDefaultCipherSuites;
 676 
 677         static {
 678             clientDefaultProtocols = getAvailableProtocols(
 679                     new ProtocolVersion[] {
 680                 ProtocolVersion.TLS12,
 681                 ProtocolVersion.TLS11,
 682                 ProtocolVersion.TLS10

 683             });
 684 
 685             clientDefaultCipherSuites = getApplicableEnabledCipherSuites(
 686                     clientDefaultProtocols, true);
 687         }
 688 
 689         @Override
 690         List<ProtocolVersion> getClientDefaultProtocolVersions() {
 691             return clientDefaultProtocols;
 692         }
 693 
 694         @Override
 695         List<CipherSuite> getClientDefaultCipherSuites() {
 696             return clientDefaultCipherSuites;
 697         }
 698     }
 699 
 700     /*
 701      * The SSLContext implementation for TLS1.3 algorithm
 702      *
 703      * @see SSLContext
 704      */
 705     public static final class TLS13Context extends AbstractTLSContext {
 706         private static final List<ProtocolVersion> clientDefaultProtocols;
 707         private static final List<CipherSuite> clientDefaultCipherSuites;
 708 
 709         static {
 710             clientDefaultProtocols = getAvailableProtocols(
 711                     new ProtocolVersion[] {
 712                 ProtocolVersion.TLS13,
 713                 ProtocolVersion.TLS12,
 714                 ProtocolVersion.TLS11,
 715                 ProtocolVersion.TLS10

 716             });
 717 
 718             clientDefaultCipherSuites = getApplicableEnabledCipherSuites(
 719                     clientDefaultProtocols, true);
 720         }
 721 
 722         @Override
 723         List<ProtocolVersion> getClientDefaultProtocolVersions() {
 724             return clientDefaultProtocols;
 725         }
 726 
 727         @Override
 728         List<CipherSuite> getClientDefaultCipherSuites() {
 729             return clientDefaultCipherSuites;
 730         }
 731     }
 732 
 733     /*
 734      * The interface for the customized SSL/(D)TLS SSLContext.
 735      *


 851             if (refactored.isEmpty()) {
 852                 if (client) {
 853                     candidates = getProtocols();
 854                 } else {
 855                     candidates = getSupportedProtocols();
 856                 }
 857             } else {
 858                 // Use the customized TLS protocols.
 859                 candidates =
 860                     refactored.toArray(new ProtocolVersion[refactored.size()]);
 861             }
 862 
 863             return getAvailableProtocols(candidates);
 864         }
 865 
 866         static ProtocolVersion[] getProtocols() {
 867             return new ProtocolVersion[]{
 868                     ProtocolVersion.TLS13,
 869                     ProtocolVersion.TLS12,
 870                     ProtocolVersion.TLS11,
 871                     ProtocolVersion.TLS10

 872             };
 873         }
 874 
 875         protected CustomizedTLSContext() {
 876             if (reservedException != null) {
 877                 throw reservedException;
 878             }
 879         }
 880 
 881         @Override
 882         List<ProtocolVersion> getClientDefaultProtocolVersions() {
 883             return clientDefaultProtocols;
 884         }
 885 
 886         @Override
 887         List<ProtocolVersion> getServerDefaultProtocolVersions() {
 888             return serverDefaultProtocols;
 889         }
 890 
 891         @Override


< prev index next >