]> Cypherpunks repositories - gostls13.git/commitdiff
crypto/x509: ignore 5 phantom 1024-bit roots in TestSystemRoots
authorFilippo Valsorda <filippo@golang.org>
Sat, 5 Jan 2019 00:09:01 +0000 (19:09 -0500)
committerFilippo Valsorda <filippo@golang.org>
Sat, 5 Jan 2019 00:35:02 +0000 (00:35 +0000)
On macOS 10.11, but not 10.10 and 10.12, the C API returns 5 old root
CAs which are not in SystemRootCertificates.keychain (but seem to be in
X509Anchors and maybe SystemCACertificates.keychain, along with many
others that the C API does not return). They all are moribund 1024-bit
roots which are now gone from the Apple store.

Since we can't seem to find a way to make the no-cgo code see them,
ignore them rather than skipping the test.

Fixes #21416

Change-Id: I24ff0461f71cec953b888a60b05b99bc37dad2ed
Reviewed-on: https://go-review.googlesource.com/c/156329
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
src/crypto/x509/root_darwin_test.go

index 27806538121f6035b241f634d2864f8706a7e16c..5ad19d72cd12a876be00d0fc51fe6f842097624d 100644 (file)
@@ -5,6 +5,7 @@
 package x509
 
 import (
+       "crypto/rsa"
        "os"
        "os/exec"
        "path/filepath"
@@ -104,6 +105,14 @@ func TestSystemRoots(t *testing.T) {
                        continue
                }
 
+               // On 10.11 there are five unexplained roots that only show up from the
+               // C API. They have in common the fact that they are old, 1024-bit
+               // certificates. It's arguably better to ignore them anyway.
+               if key, ok := c.PublicKey.(*rsa.PublicKey); ok && key.N.BitLen() == 1024 {
+                       t.Logf("1024-bit certificate only present in cgo pool (acceptable): %v", c.Subject)
+                       continue
+               }
+
                t.Errorf("certificate only present in cgo pool: %v", c.Subject)
        }