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
|