| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
1 parent 457e31e commit b8d0906
301 files changed
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -28,12 +28,68 @@ breaking changes, and mappings for the large list of deprecated functions. | |||
| 28 | 28 | ||
| 29 | 29 | [Migration guide]: https://github.com/openssl/openssl/tree/master/doc/man7/migration_guide.pod | |
| 30 | 30 | ||
| 31 | - ### Changes between 3.0.0 and 3.0.0+quic [7 Sun 2021] | ||
| 31 | + ### Changes between 3.0.2 and 3.0.2+quic [15 Mar 2022] | ||
| 32 | 32 | ||
| 33 | 33 | * Add QUIC API support from BoringSSL. | |
| 34 | 34 | ||
| 35 | 35 | *Todd Short* | |
| 36 | 36 | ||
| 37 | + ### Changes between 3.0.1 and 3.0.2 [15 Mar 2022] | ||
| 38 | + | ||
| 39 | + * Fixed a bug in the BN_mod_sqrt() function that can cause it to loop forever | ||
| 40 | + for non-prime moduli. | ||
| 41 | + | ||
| 42 | + Internally this function is used when parsing certificates that contain | ||
| 43 | + elliptic curve public keys in compressed form or explicit elliptic curve | ||
| 44 | + parameters with a base point encoded in compressed form. | ||
| 45 | + | ||
| 46 | + It is possible to trigger the infinite loop by crafting a certificate that | ||
| 47 | + has invalid explicit curve parameters. | ||
| 48 | + | ||
| 49 | + Since certificate parsing happens prior to verification of the certificate | ||
| 50 | + signature, any process that parses an externally supplied certificate may thus | ||
| 51 | + be subject to a denial of service attack. The infinite loop can also be | ||
| 52 | + reached when parsing crafted private keys as they can contain explicit | ||
| 53 | + elliptic curve parameters. | ||
| 54 | + | ||
| 55 | + Thus vulnerable situations include: | ||
| 56 | + | ||
| 57 | + - TLS clients consuming server certificates | ||
| 58 | + - TLS servers consuming client certificates | ||
| 59 | + - Hosting providers taking certificates or private keys from customers | ||
| 60 | + - Certificate authorities parsing certification requests from subscribers | ||
| 61 | + - Anything else which parses ASN.1 elliptic curve parameters | ||
| 62 | + | ||
| 63 | + Also any other applications that use the BN_mod_sqrt() where the attacker | ||
| 64 | + can control the parameter values are vulnerable to this DoS issue. | ||
| 65 | + ([CVE-2022-0778]) | ||
| 66 | + | ||
| 67 | + *Tomáš Mráz* | ||
| 68 | + | ||
| 69 | + * Add ciphersuites based on DHE_PSK (RFC 4279) and ECDHE_PSK (RFC 5489) | ||
| 70 | + to the list of ciphersuites providing Perfect Forward Secrecy as | ||
| 71 | + required by SECLEVEL >= 3. | ||
| 72 | + | ||
| 73 | + *Dmitry Belyavskiy, Nicola Tuveri* | ||
| 74 | + | ||
| 75 | + * Made the AES constant time code for no-asm configurations | ||
| 76 | + optional due to the resulting 95% performance degradation. | ||
| 77 | + The AES constant time code can be enabled, for no assembly | ||
| 78 | + builds, with: ./config no-asm -DOPENSSL_AES_CONST_TIME | ||
| 79 | + | ||
| 80 | + *Paul Dale* | ||
| 81 | + | ||
| 82 | + * Fixed PEM_write_bio_PKCS8PrivateKey() to make it possible to use empty | ||
| 83 | + passphrase strings. | ||
| 84 | + | ||
| 85 | + *Darshan Sen* | ||
| 86 | + | ||
| 87 | + * The negative return value handling of the certificate verification callback | ||
| 88 | + was reverted. The replacement is to set the verification retry state with | ||
| 89 | + the SSL_set_retry_verify() function. | ||
| 90 | + | ||
| 91 | + *Tomáš Mráz* | ||
| 92 | + | ||
| 37 | 93 | ### Changes between 3.0.0 and 3.0.1 [14 Dec 2021] | |
| 38 | 94 | ||
| 39 | 95 | * Fixed invalid handling of X509_verify_cert() internal errors in libssl | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -1062,6 +1062,13 @@ my %targets = ( | |||
| 1062 | 1062 | perlasm_scheme => "elf", | |
| 1063 | 1063 | }, | |
| 1064 | 1064 | ||
| 1065 | + # riscv64 below refers to contemporary RISCV Architecture | ||
| 1066 | + # specifications, | ||
| 1067 | + "BSD-riscv64" => { | ||
| 1068 | + inherit_from => [ "BSD-generic64"], | ||
| 1069 | + perlasm_scheme => "linux64", | ||
| 1070 | + }, | ||
| 1071 | + | ||
| 1065 | 1072 | "bsdi-elf-gcc" => { | |
| 1066 | 1073 | inherit_from => [ "BASE_unix" ], | |
| 1067 | 1074 | CC => "gcc", | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -261,6 +261,7 @@ my %targets = ( | |||
| 261 | 261 | bn_ops => add("RC4_INT"), | |
| 262 | 262 | asm_arch => 'x86', | |
| 263 | 263 | perlasm_scheme => "android", | |
| 264 | + ex_libs => add(threads("-latomic")), | ||
| 264 | 265 | }, | |
| 265 | 266 | "android-x86_64" => { | |
| 266 | 267 | inherit_from => [ "android" ], | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -553,7 +553,6 @@ distclean : clean | |||
| 553 | 553 | - DELETE descrip.mms;* | |
| 554 | 554 | ||
| 555 | 555 | depend : descrip.mms | |
| 556 | - descrip.mms : FORCE | ||
| 557 | 556 | @ ! {- output_off() if $disabled{makedepend}; "" -} | |
| 558 | 557 | @ $(PERL) {- sourcefile("util", "add-depends.pl") -} "{- $config{makedep_scheme} -}" | |
| 559 | 558 | @ ! {- output_on() if $disabled{makedepend}; "" -} | |
@@ -755,7 +754,16 @@ debug_logicals : | |||
| 755 | 754 | ||
| 756 | 755 | # Building targets ################################################### | |
| 757 | 756 | ||
| 758 | - configdata.pm : $(SRCDIR)Configure $(SRCDIR)config.com {- join(" ", @{$config{build_file_templates}}, @{$config{build_infos}}, @{$config{conf_files}}) -} | ||
| 757 | + descrip.mms : configdata.pm {- join(" ", @{$config{build_file_templates}}) -} | ||
| 758 | + perl configdata.pm | ||
| 759 | + @ WRITE SYS$OUTPUT "*************************************************" | ||
| 760 | + @ WRITE SYS$OUTPUT "*** ***" | ||
| 761 | + @ WRITE SYS$OUTPUT "*** Please run the same mms command again ***" | ||
| 762 | + @ WRITE SYS$OUTPUT "*** ***" | ||
| 763 | + @ WRITE SYS$OUTPUT "*************************************************" | ||
| 764 | + @ PIPE ( EXIT %X10000000 ) | ||
| 765 | + | ||
| 766 | + configdata.pm : $(SRCDIR)Configure $(SRCDIR)config.com {- join(" ", @{$config{build_infos}}, @{$config{conf_files}}) -} | ||
| 759 | 767 | perl configdata.pm -r | |
| 760 | 768 | @ WRITE SYS$OUTPUT "*************************************************" | |
| 761 | 769 | @ WRITE SYS$OUTPUT "*** ***" | |
@@ -871,6 +879,59 @@ EOF | |||
| 871 | 879 | return ($filename, $scripture); | |
| 872 | 880 | } | |
| 873 | 881 | ||
| 882 | + # On VMS, (some) header file directories include the files | ||
| 883 | + # __DECC_INCLUDE_EPILOGUE.H and __DECC_INCLUDE_PROLOGUE.H. | ||
| 884 | + # When header files are generated, and the build directory | ||
| 885 | + # isn't the same as the source directory, these files must | ||
| 886 | + # be copied alongside the generated header file, or their | ||
| 887 | + # effect will be lost. | ||
| 888 | + # We use the same include file cache as make_includefile | ||
| 889 | + # to check if the scripture to copy these files has already | ||
| 890 | + # been generated. | ||
| 891 | + sub make_decc_include_files { | ||
| 892 | + my $outd = shift; | ||
| 893 | + my $ind = shift; | ||
| 894 | + | ||
| 895 | + # If the build directory and the source directory are the | ||
| 896 | + # same, there's no need to copy the prologue and epilogue | ||
| 897 | + # files. | ||
| 898 | + return ('') if $outd eq $ind; | ||
| 899 | + | ||
| 900 | + my $outprologue = catfile($outd, '__DECC_INCLUDE_PROLOGUE.H'); | ||
| 901 | + my $outepilogue = catfile($outd, '__DECC_INCLUDE_EPILOGUE.H'); | ||
| 902 | + my $inprologue = catfile($ind, '__DECC_INCLUDE_PROLOGUE.H'); | ||
| 903 | + my $inepilogue = catfile($ind, '__DECC_INCLUDE_EPILOGUE.H'); | ||
| 904 | + my @filenames = (); | ||
| 905 | + my $scripture = ''; | ||
| 906 | + | ||
| 907 | + if ($includefile_cache{$outprologue}) { | ||
| 908 | + push @filenames, $outprologue; | ||
| 909 | + } elsif (-f $inprologue) { | ||
| 910 | + my $local_scripture .= <<"EOF"; | ||
| 911 | + $outprologue : $inprologue | ||
| 912 | + COPY $inprologue $outprologue | ||
| 913 | + EOF | ||
| 914 | + $includefile_cache{$outprologue} = $local_scripture; | ||
| 915 | + | ||
| 916 | + push @filenames, $outprologue; | ||
| 917 | + $scripture .= $local_scripture; | ||
| 918 | + } | ||
| 919 | + if ($includefile_cache{$outepilogue}) { | ||
| 920 | + push @filenames, $outepilogue; | ||
| 921 | + } elsif (-f $inepilogue) { | ||
| 922 | + my $local_scripture .= <<"EOF"; | ||
| 923 | + $outepilogue : $inepilogue | ||
| 924 | + COPY $inepilogue $outepilogue | ||
| 925 | + EOF | ||
| 926 | + $includefile_cache{$outepilogue} = $local_scripture; | ||
| 927 | + | ||
| 928 | + push @filenames, $outepilogue; | ||
| 929 | + $scripture .= $local_scripture; | ||
| 930 | + } | ||
| 931 | + | ||
| 932 | + return (@filenames, $scripture); | ||
| 933 | + } | ||
| 934 | + | ||
| 874 | 935 | sub generatetarget { | |
| 875 | 936 | my %args = @_; | |
| 876 | 937 | my $deps = join(" ", compute_platform_depends(@{$args{deps}})); | |
@@ -984,12 +1045,18 @@ EOF | |||
| 984 | 1045 | my @perlmodules = ( 'configdata.pm', | |
| 985 | 1046 | grep { $_ =~ m|\.pm$| } @{$args{deps}} ); | |
| 986 | 1047 | my %perlmoduleincs = map { '"-I'.dirname($_).'"' => 1 } @perlmodules; | |
| 987 | - $deps = join(' ', $deps, compute_platform_depends(@perlmodules)); | ||
| 1048 | + my @decc_include_data | ||
| 1049 | + = make_decc_include_files(dirname($args{src}), dirname($gen0)); | ||
| 1050 | + my $decc_include_scripture = pop @decc_include_data; | ||
| 1051 | + $deps = join(' ', $deps, @decc_include_data, | ||
| 1052 | + compute_platform_depends(@perlmodules)); | ||
| 988 | 1053 | @perlmodules = map { '"-M'.basename($_, '.pm').'"' } @perlmodules; | |
| 989 | 1054 | my $perlmodules = join(' ', '', sort keys %perlmoduleincs, @perlmodules); | |
| 1055 | + | ||
| 990 | 1056 | return <<"EOF"; | |
| 991 | 1057 | $args{src} : $gen0 $deps | |
| 992 | 1058 | \$(PERL)$perlmodules $dofile "-o$target{build_file}" $gen0$gen_args > \$\@ | |
| 1059 | + $decc_include_scripture | ||
| 993 | 1060 | EOF | |
| 994 | 1061 | } elsif (grep { $_ eq $gen0 } @{$unified_info{programs}}) { | |
| 995 | 1062 | # | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -582,7 +582,7 @@ clean: libclean | |||
| 582 | 582 | $(RM) $(MANDOCS3) | |
| 583 | 583 | $(RM) $(MANDOCS5) | |
| 584 | 584 | $(RM) $(MANDOCS7) | |
| 585 | - $(RM) $(PROGRAMS) $(TESTPROGS) $(MODULES) $(SCRIPTS) | ||
| 585 | + $(RM) $(PROGRAMS) $(TESTPROGS) $(MODULES) $(FIPSMODULE) $(SCRIPTS) | ||
| 586 | 586 | $(RM) $(GENERATED_MANDATORY) $(GENERATED) | |
| 587 | 587 | -find . -name '*{- platform->depext() -}' \! -name '.*' \! -type d -exec $(RM) {} \; | |
| 588 | 588 | -find . -name '*{- platform->objext() -}' \! -name '.*' \! -type d -exec $(RM) {} \; | |
@@ -599,7 +599,7 @@ distclean: clean | |||
| 599 | 599 | ||
| 600 | 600 | # We check if any depfile is newer than Makefile and decide to | |
| 601 | 601 | # concatenate only if that is true. | |
| 602 | - depend: | ||
| 602 | + depend: Makefile | ||
| 603 | 603 | @: {- output_off() if $disabled{makedepend}; "" -} | |
| 604 | 604 | @$(PERL) $(SRCDIR)/util/add-depends.pl "{- $makedep_scheme -}" | |
| 605 | 605 | @: {- output_on() if $disabled{makedepend}; "" -} | |
@@ -1153,7 +1153,7 @@ generate_crypto_objects: | |||
| 1153 | 1153 | crypto/objects/obj_mac.num \ | |
| 1154 | 1154 | crypto/objects/obj_xref.txt \ | |
| 1155 | 1155 | > crypto/objects/obj_xref.h ) | |
| 1156 | - ( cd $(SRCDIR); cat crypto/objects/obj_compat.h >> include/openssl/obj_mac.h ) | ||
| 1156 | + ( cd $(SRCDIR); sed -e '1,8d' crypto/objects/obj_compat.h >> include/openssl/obj_mac.h ) | ||
| 1157 | 1157 | ||
| 1158 | 1158 | generate_crypto_conf: | |
| 1159 | 1159 | ( cd $(SRCDIR); $(PERL) crypto/conf/keysets.pl \ | |
@@ -1371,13 +1371,13 @@ tar: | |||
| 1371 | 1371 | ||
| 1372 | 1372 | link-utils: $(BLDDIR)/util/opensslwrap.sh $(BLDDIR)/apps/openssl.cnf | |
| 1373 | 1373 | ||
| 1374 | - $(BLDDIR)/util/opensslwrap.sh: configdata.pm | ||
| 1374 | + $(BLDDIR)/util/opensslwrap.sh: Makefile | ||
| 1375 | 1375 | @if [ "$(SRCDIR)" != "$(BLDDIR)" ]; then \ | |
| 1376 | 1376 | mkdir -p "$(BLDDIR)/util"; \ | |
| 1377 | 1377 | ln -sf "../$(SRCDIR)/util/`basename "$@"`" "$(BLDDIR)/util"; \ | |
| 1378 | 1378 | fi | |
| 1379 | 1379 | ||
| 1380 | - $(BLDDIR)/apps/openssl.cnf: configdata.pm | ||
| 1380 | + $(BLDDIR)/apps/openssl.cnf: Makefile | ||
| 1381 | 1381 | @if [ "$(SRCDIR)" != "$(BLDDIR)" ]; then \ | |
| 1382 | 1382 | mkdir -p "$(BLDDIR)/apps"; \ | |
| 1383 | 1383 | ln -sf "../$(SRCDIR)/apps/`basename "$@"`" "$(BLDDIR)/apps"; \ | |
@@ -1387,7 +1387,8 @@ FORCE: | |||
| 1387 | 1387 | ||
| 1388 | 1388 | # Building targets ################################################### | |
| 1389 | 1389 | ||
| 1390 | - libcrypto.pc libssl.pc openssl.pc: configdata.pm $(LIBS) {- join(" ",map { platform->sharedlib_simple($_) // platform->sharedlib_import($_) // platform->sharedlib($_) // () } @{$unified_info{libraries}}) -} | ||
| 1390 | + libcrypto.pc libssl.pc openssl.pc: Makefile $(LIBS) {- join(" ",map { platform->sharedlib_simple($_) // platform->sharedlib_import($_) // platform->sharedlib($_) // () } @{$unified_info{libraries}}) -} | ||
| 1391 | + | ||
| 1391 | 1392 | libcrypto.pc: | |
| 1392 | 1393 | @ ( echo 'prefix=$(INSTALLTOP)'; \ | |
| 1393 | 1394 | echo 'exec_prefix=$${prefix}'; \ | |
@@ -1438,10 +1439,22 @@ openssl.pc: | |||
| 1438 | 1439 | echo 'Version: '$(VERSION); \ | |
| 1439 | 1440 | echo 'Requires: libssl libcrypto' ) > openssl.pc | |
| 1440 | 1441 | ||
| 1442 | + Makefile: configdata.pm \ | ||
| 1443 | + {- join(" \\\n" . ' ' x 10, | ||
| 1444 | + fill_lines(" ", $COLUMNS - 10, | ||
| 1445 | + @{$config{build_file_templates}})) -} | ||
| 1446 | + @echo "Detected changed: $?" | ||
| 1447 | + $(PERL) configdata.pm | ||
| 1448 | + @echo "**************************************************" | ||
| 1449 | + @echo "*** ***" | ||
| 1450 | + @echo "*** Please run the same make command again ***" | ||
| 1451 | + @echo "*** ***" | ||
| 1452 | + @echo "**************************************************" | ||
| 1453 | + @false | ||
| 1454 | + | ||
| 1441 | 1455 | configdata.pm: $(SRCDIR)/Configure $(SRCDIR)/config \ | |
| 1442 | 1456 | {- join(" \\\n" . ' ' x 15, | |
| 1443 | 1457 | fill_lines(" ", $COLUMNS - 15, | |
| 1444 | - @{$config{build_file_templates}}, | ||
| 1445 | 1458 | @{$config{build_infos}}, | |
| 1446 | 1459 | @{$config{conf_files}})) -} | |
| 1447 | 1460 | @echo "Detected changed: $?" | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -481,7 +481,7 @@ distclean: clean | |||
| 481 | 481 | -del /Q /F configdata.pm | |
| 482 | 482 | -del /Q /F makefile | |
| 483 | 483 | ||
| 484 | - depend: | ||
| 484 | + depend: makefile | ||
| 485 | 485 | @ {- output_off() if $disabled{makedepend}; "\@rem" -} | |
| 486 | 486 | @ "$(PERL)" "$(SRCDIR)\util\add-depends.pl" "{- $target{makedep_scheme} -}" | |
| 487 | 487 | @ {- output_on() if $disabled{makedepend}; "\@rem" -} | |
@@ -643,13 +643,23 @@ uninstall_image_docs: | |||
| 643 | 643 | ||
| 644 | 644 | copy-utils: $(BLDDIR)\apps\openssl.cnf | |
| 645 | 645 | ||
| 646 | - $(BLDDIR)\apps\openssl.cnf: configdata.pm | ||
| 646 | + $(BLDDIR)\apps\openssl.cnf: makefile | ||
| 647 | 647 | @if NOT EXIST "$(BLDDIR)\apps" mkdir "$(BLDDIR)\apps" | |
| 648 | 648 | @if NOT "$(SRCDIR)"=="$(BLDDIR)" copy "$(SRCDIR)\apps\$(@F)" "$(BLDDIR)\apps" | |
| 649 | 649 | ||
| 650 | 650 | # Building targets ################################################### | |
| 651 | 651 | ||
| 652 | - configdata.pm: "$(SRCDIR)\Configure" {- join(" ", map { '"'.$_.'"' } @{$config{build_file_templates}}, @{$config{build_infos}}, @{$config{conf_files}}) -} | ||
| 652 | + makefile: configdata.pm {- join(" ", map { '"'.$_.'"' } @{$config{build_file_templates}}) -} | ||
| 653 | + @$(ECHO) "Detected changed: $?" | ||
| 654 | + "$(PERL)" configdata.pm | ||
| 655 | + @$(ECHO) "**************************************************" | ||
| 656 | + @$(ECHO) "*** ***" | ||
| 657 | + @$(ECHO) "*** Please run the same make command again ***" | ||
| 658 | + @$(ECHO) "*** ***" | ||
| 659 | + @$(ECHO) "**************************************************" | ||
| 660 | + @exit 1 | ||
| 661 | + | ||
| 662 | + configdata.pm: "$(SRCDIR)\Configure" {- join(" ", map { '"'.$_.'"' } @{$config{build_infos}}, @{$config{conf_files}}) -} | ||
| 653 | 663 | @$(ECHO) "Detected changed: $?" | |
| 654 | 664 | "$(PERL)" configdata.pm -r | |
| 655 | 665 | @$(ECHO) "**************************************************" | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -3172,25 +3172,25 @@ sub resolve_config { | |||
| 3172 | 3172 | } | |
| 3173 | 3173 | } | |
| 3174 | 3174 | ||
| 3175 | - foreach (sort keys %all_keys) { | ||
| 3176 | - my $previous = $combined_inheritance{$_}; | ||
| 3175 | + foreach my $key (sort keys %all_keys) { | ||
| 3176 | + my $previous = $combined_inheritance{$key}; | ||
| 3177 | 3177 | ||
| 3178 | 3178 | # Current target doesn't have a value for the current key? | |
| 3179 | 3179 | # Assign it the default combiner, the rest of this loop body | |
| 3180 | 3180 | # will handle it just like any other coderef. | |
| 3181 | - if (!exists $table{$target}->{$_}) { | ||
| 3182 | - $table{$target}->{$_} = $default_combiner; | ||
| 3181 | + if (!exists $table{$target}->{$key}) { | ||
| 3182 | + $table{$target}->{$key} = $default_combiner; | ||
| 3183 | 3183 | } | |
| 3184 | 3184 | ||
| 3185 | - $table{$target}->{$_} = process_values($table{$target}->{$_}, | ||
| 3186 | - $combined_inheritance{$_}, | ||
| 3187 | - $target, $_); | ||
| 3188 | - unless(defined($table{$target}->{$_})) { | ||
| 3189 | - delete $table{$target}->{$_}; | ||
| 3185 | + $table{$target}->{$key} = process_values($table{$target}->{$key}, | ||
| 3186 | + $combined_inheritance{$key}, | ||
| 3187 | + $target, $key); | ||
| 3188 | + unless(defined($table{$target}->{$key})) { | ||
| 3189 | + delete $table{$target}->{$key}; | ||
| 3190 | 3190 | } | |
| 3191 | 3191 | # if ($extra_checks && | |
| 3192 | - # $previous && !($add_called || $previous ~~ $table{$target}->{$_})) { | ||
| 3193 | - # warn "$_ got replaced in $target\n"; | ||
| 3192 | + # $previous && !($add_called || $previous ~~ $table{$target}->{$key})) { | ||
| 3193 | + # warn "$key got replaced in $target\n"; | ||
| 3194 | 3194 | # } | |
| 3195 | 3195 | } | |
| 3196 | 3196 | ||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -18,6 +18,11 @@ OpenSSL Releases | |||
| 18 | 18 | OpenSSL 3.0 | |
| 19 | 19 | ----------- | |
| 20 | 20 | ||
| 21 | + ### Major changes between OpenSSL 3.0.1 and OpenSSL 3.0.2 [15 Mar 2022] | ||
| 22 | + | ||
| 23 | + * Fixed a bug in the BN_mod_sqrt() function that can cause it to loop forever | ||
| 24 | + for non-prime moduli ([CVE-2022-0778]) | ||
| 25 | + | ||
| 21 | 26 | ### Major changes between OpenSSL 3.0.0 and OpenSSL 3.0.1 [14 Dec 2021] | |
| 22 | 27 | ||
| 23 | 28 | * Fixed invalid handling of X509_verify_cert() internal errors in libssl | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -64,4 +64,4 @@ Using the FIPS Module in applications | |||
| 64 | 64 | Documentation about using the FIPS module is available on the [fips_module(7)] | |
| 65 | 65 | manual page. | |
| 66 | 66 | ||
| 67 | - [fips_module(7)]: https://www.openssl.org/docs/manmaster/man7/fips_module.html | ||
| 67 | + [fips_module(7)]: https://www.openssl.org/docs/man3.0/man7/fips_module.html | ||
| Back | FazBrowse Home | New Git URL |
0 commit comments