From 9c1ba94379bef29080477a1eec114cb93a2b372a Mon Sep 17 00:00:00 2001 From: JeremyRand Date: Sat, 29 Jun 2019 03:52:53 +0000 Subject: [PATCH 1/5] Rebase x509 onto Go 1.11 --- x509/x509_splice.go | 42 +++++++++++++++++++++++++++++++++++------- 1 file changed, 35 insertions(+), 7 deletions(-) diff --git a/x509/x509_splice.go b/x509/x509_splice.go index 6825f6b..7565382 100644 --- a/x509/x509_splice.go +++ b/x509/x509_splice.go @@ -1,12 +1,12 @@ // Copyright 2009 The Go Authors. All rights reserved. -// Modifications Copyright 2015-2018 Jeremy Rand. All rights reserved. +// Modifications Copyright 2015-2019 Jeremy Rand. All rights reserved. // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. // This code is modified from the stock CreateCertificate to use a // pre-existing signature. -// Last rebased on Go 1.10 +// Last rebased on Go 1.11 // Remove all content between "import" and "CreateCertificate" in original. // Remove all content after "CreateCertificate" in original. //go:generate bash install.sh @@ -47,11 +47,39 @@ import ( ) // CreateCertificate creates a new X.509v3 certificate based on a template. -// The following members of template are used: AuthorityKeyId, -// BasicConstraintsValid, DNSNames, ExcludedDNSDomains, ExtKeyUsage, -// IsCA, KeyUsage, MaxPathLen, MaxPathLenZero, NotAfter, NotBefore, -// PermittedDNSDomains, PermittedDNSDomainsCritical, SerialNumber, -// SignatureAlgorithm, Subject, SubjectKeyId, and UnknownExtKeyUsage. +// The following members of template are used: +// +// - AuthorityKeyId +// - BasicConstraintsValid +// - CRLDistributionPoints +// - DNSNames +// - EmailAddresses +// - ExcludedDNSDomains +// - ExcludedEmailAddresses +// - ExcludedIPRanges +// - ExcludedURIDomains +// - ExtKeyUsage +// - ExtraExtensions +// - IsCA +// - IssuingCertificateURL +// - KeyUsage +// - MaxPathLen +// - MaxPathLenZero +// - NotAfter +// - NotBefore +// - OCSPServer +// - PermittedDNSDomains +// - PermittedDNSDomainsCritical +// - PermittedEmailAddresses +// - PermittedIPRanges +// - PermittedURIDomains +// - PolicyIdentifiers +// - SerialNumber +// - SignatureAlgorithm +// - Subject +// - SubjectKeyId +// - URIs +// - UnknownExtKeyUsage // // The certificate is signed by parent. If parent is equal to template then the // certificate is self-signed. The parameter pub is the public key of the From 759c009e7444aaac1943dbfee59500c9fe948127 Mon Sep 17 00:00:00 2001 From: JeremyRand Date: Sat, 29 Jun 2019 07:02:48 +0000 Subject: [PATCH 2/5] Rebase x509 onto Go 1.12 --- x509/install.sh | 18 +++++++++--------- x509/x509_splice.go | 7 +++---- 2 files changed, 12 insertions(+), 13 deletions(-) diff --git a/x509/install.sh b/x509/install.sh index 5834df7..9c1d9ad 100755 --- a/x509/install.sh +++ b/x509/install.sh @@ -6,12 +6,12 @@ shopt -s failglob cp -a $(go env GOROOT)/src/crypto/x509/* ./ rm ./x509_test.go -# The following code is utterly horrifying. I can't find a better way to do it. :( -mkdir -p ${GOPATH}/src/vendor/golang.org/ -cp -R $(go env GOROOT)/src/vendor/golang_org/* ${GOPATH}/src/vendor/golang.org/ -# h/t to https://www.cyberciti.biz/faq/unix-linux-replace-string-words-in-many-files/ -OLD_PACKAGE='"golang_org/x/crypto/cryptobyte' -OLD_PACKAGE="${OLD_PACKAGE//\//\\/}" -NEW_PACKAGE='"golang.org/x/crypto/cryptobyte' -NEW_PACKAGE="${NEW_PACKAGE//\//\\/}" -sed -i "s/${OLD_PACKAGE}/${NEW_PACKAGE}/g" ./*.go ${GOPATH}/src/vendor/golang.org/x/crypto/cryptobyte/*.go +# Stdlib x509 relies on "internal" packages in Go, which aren't importable +# outside of stdlib. So we copy those packages and rename them. +OLD_INTERNAL_PATH=$(go env GOROOT)/src/internal/x/crypto/cryptobyte +NEW_INTERNAL_PATH=$(go env GOPATH)/src/github.com/namecoin/ncdns/x509/golang/x/crypto/cryptobyte +mkdir -p ${NEW_INTERNAL_PATH}/ +cp -R ${OLD_INTERNAL_PATH}/* ${NEW_INTERNAL_PATH}/ +OLD_PACKAGE='"internal/x/crypto/cryptobyte' +NEW_PACKAGE='"github.com/namecoin/ncdns/x509/golang/x/crypto/cryptobyte' +sed -i "s_${OLD_PACKAGE}_${NEW_PACKAGE}_g" ./*.go ${NEW_INTERNAL_PATH}/*.go diff --git a/x509/x509_splice.go b/x509/x509_splice.go index 7565382..a0ae298 100644 --- a/x509/x509_splice.go +++ b/x509/x509_splice.go @@ -6,7 +6,7 @@ // This code is modified from the stock CreateCertificate to use a // pre-existing signature. -// Last rebased on Go 1.11 +// Last rebased on Go 1.12 // Remove all content between "import" and "CreateCertificate" in original. // Remove all content after "CreateCertificate" in original. //go:generate bash install.sh @@ -33,6 +33,8 @@ import ( //"encoding/pem" "errors" //"fmt" + //"internal/x/crypto/cryptobyte" + //cryptobyte_asn1 "internal/x/crypto/cryptobyte/asn1" //"io" //"math/big" //"net" @@ -41,9 +43,6 @@ import ( //"strings" //"time" //"unicode/utf8" - // - //"golang_org/x/crypto/cryptobyte" - //cryptobyte_asn1 "golang_org/x/crypto/cryptobyte/asn1" ) // CreateCertificate creates a new X.509v3 certificate based on a template. From f687a9bbcfd8e727c182717ea1da2cfa65b2d315 Mon Sep 17 00:00:00 2001 From: JeremyRand Date: Sat, 29 Jun 2019 04:56:59 +0000 Subject: [PATCH 3/5] Add Go 1.11.x, 1.12.5, and 1.12.x to Travis 1.12.5 is currently used by Tor's rbm scripts. --- .travis.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.travis.yml b/.travis.yml index 3105afc..dce19a4 100644 --- a/.travis.yml +++ b/.travis.yml @@ -2,6 +2,9 @@ language: go go: - "1.10.3" - "1.10.x" + - "1.11.x" + - "1.12.5" + - "1.12.x" - "1.x" - "master" From bb16218f52e5fa9457608ba37b83fcc9fe4489f2 Mon Sep 17 00:00:00 2001 From: JeremyRand Date: Sat, 29 Jun 2019 05:00:20 +0000 Subject: [PATCH 4/5] Travis: Set Go 1.12.5 as release version This is the version Tor is currently using with rbm. --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index dce19a4..935171d 100644 --- a/.travis.yml +++ b/.travis.yml @@ -32,4 +32,4 @@ env: # GITHUB_TOKEN for automatic releases - secure: "at1oJs7ib7glx3W+zk+OkT041LdknVXirIhN403CIihVUrlOhODY7yCTgvF4Rk0jYBJiT35Q2qxpgfWF2qGnsNsQmjG3ydDWQDCepDc/CgXfLyoiSTJK5vTK72dYWTVsBTycXbj1CbSy2X2ah/KWjc4RcgZ67ER7mDpRU5nFeow=" # Set this to the Go version to use for releases (must appear in version list above). - - RELEASE_GO_VERSION="1.10.3" + - RELEASE_GO_VERSION="1.12.5" From e5918ac80f95cd00190d124edbc98be7060a8ed6 Mon Sep 17 00:00:00 2001 From: JeremyRand Date: Sat, 29 Jun 2019 05:01:45 +0000 Subject: [PATCH 5/5] Travis: Drop support for Go 1.11.x and lower Our x509 package is no longer compatible with them. --- .travis.yml | 3 --- 1 file changed, 3 deletions(-) diff --git a/.travis.yml b/.travis.yml index 935171d..49923bb 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,8 +1,5 @@ language: go go: - - "1.10.3" - - "1.10.x" - - "1.11.x" - "1.12.5" - "1.12.x" - "1.x"