|
@@ -72,6 +72,17 @@ ALL_CROSS_LINUX_ARM = linux-arm-5 linux-arm-6 linux-arm-7 linux-arm64
|
|
|
ALL_CROSS_LINUX_MIPS = linux-mips linux-mipsle linux-mips64 linux-mips64le linux-mips-softfloat
|
|
ALL_CROSS_LINUX_MIPS = linux-mips linux-mipsle linux-mips64 linux-mips64le linux-mips-softfloat
|
|
|
ALL_CROSS_LINUX_OTHER = linux-386 linux-ppc64le linux-riscv64 linux-loong64
|
|
ALL_CROSS_LINUX_OTHER = linux-386 linux-ppc64le linux-riscv64 linux-loong64
|
|
|
|
|
|
|
|
|
|
+# Based on section 2.2 of the Go Cryptographic Module CVMP Security Policy #5247
|
|
|
|
|
+ALL_FIPS140 = linux-amd64-fips140 \
|
|
|
|
|
+ linux-arm64-fips140 \
|
|
|
|
|
+ windows-amd64-fips140 \
|
|
|
|
|
+ windows-arm64-fips140 \
|
|
|
|
|
+ darwin-arm64-fips140 \
|
|
|
|
|
+ freebsd-amd64-fips140 \
|
|
|
|
|
+ linux-arm-7-fips140 \
|
|
|
|
|
+ linux-mips64-fips140 \
|
|
|
|
|
+ linux-ppc64le-fips140
|
|
|
|
|
+
|
|
|
e2e:
|
|
e2e:
|
|
|
$(TEST_ENV) go test -tags=e2e_testing -count=1 $(TEST_FLAGS) ./e2e
|
|
$(TEST_ENV) go test -tags=e2e_testing -count=1 $(TEST_FLAGS) ./e2e
|
|
|
|
|
|
|
@@ -137,6 +148,8 @@ release-netbsd: $(ALL_NETBSD:%=build/nebula-%.tar.gz)
|
|
|
|
|
|
|
|
release-boringcrypto: build/nebula-linux-$(shell go env GOARCH)-boringcrypto.tar.gz
|
|
release-boringcrypto: build/nebula-linux-$(shell go env GOARCH)-boringcrypto.tar.gz
|
|
|
|
|
|
|
|
|
|
+release-fips140: $(ALL_FIPS140:%=build/nebula-%.tar.gz)
|
|
|
|
|
+
|
|
|
BUILD_ARGS += -trimpath
|
|
BUILD_ARGS += -trimpath
|
|
|
|
|
|
|
|
bin-windows: build/windows-amd64/nebula.exe build/windows-amd64/nebula-cert.exe
|
|
bin-windows: build/windows-amd64/nebula.exe build/windows-amd64/nebula-cert.exe
|
|
@@ -157,6 +170,9 @@ bin-freebsd-arm64: build/freebsd-arm64/nebula build/freebsd-arm64/nebula-cert
|
|
|
bin-boringcrypto: build/linux-$(shell go env GOARCH)-boringcrypto/nebula build/linux-$(shell go env GOARCH)-boringcrypto/nebula-cert
|
|
bin-boringcrypto: build/linux-$(shell go env GOARCH)-boringcrypto/nebula build/linux-$(shell go env GOARCH)-boringcrypto/nebula-cert
|
|
|
mv $? .
|
|
mv $? .
|
|
|
|
|
|
|
|
|
|
+bin-fips140: build/linux-$(shell go env GOARCH)-fips140/nebula build/linux-$(shell go env GOARCH)-fips140/nebula-cert
|
|
|
|
|
+ mv $? .
|
|
|
|
|
+
|
|
|
bin-pkcs11: BUILD_ARGS += -tags pkcs11
|
|
bin-pkcs11: BUILD_ARGS += -tags pkcs11
|
|
|
bin-pkcs11: CGO_ENABLED = 1
|
|
bin-pkcs11: CGO_ENABLED = 1
|
|
|
bin-pkcs11: bin
|
|
bin-pkcs11: bin
|
|
@@ -166,12 +182,12 @@ debug: BUILD_ARGS += -tags debug
|
|
|
debug: bin
|
|
debug: bin
|
|
|
|
|
|
|
|
bin:
|
|
bin:
|
|
|
- go build $(BUILD_ARGS) -ldflags "$(LDFLAGS)" -o ./nebula${NEBULA_CMD_SUFFIX} ${NEBULA_CMD_PATH}
|
|
|
|
|
- go build $(BUILD_ARGS) -ldflags "$(LDFLAGS)" -o ./nebula-cert${NEBULA_CMD_SUFFIX} ./cmd/nebula-cert
|
|
|
|
|
|
|
+ $(GOENV) go build $(BUILD_ARGS) -ldflags "$(LDFLAGS)" -o ./nebula${NEBULA_CMD_SUFFIX} ${NEBULA_CMD_PATH}
|
|
|
|
|
+ $(GOENV) go build $(BUILD_ARGS) -ldflags "$(LDFLAGS)" -o ./nebula-cert${NEBULA_CMD_SUFFIX} ./cmd/nebula-cert
|
|
|
|
|
|
|
|
install:
|
|
install:
|
|
|
- go install $(BUILD_ARGS) -ldflags "$(LDFLAGS)" ${NEBULA_CMD_PATH}
|
|
|
|
|
- go install $(BUILD_ARGS) -ldflags "$(LDFLAGS)" ./cmd/nebula-cert
|
|
|
|
|
|
|
+ $(GOENV) go install $(BUILD_ARGS) -ldflags "$(LDFLAGS)" ${NEBULA_CMD_PATH}
|
|
|
|
|
+ $(GOENV) go install $(BUILD_ARGS) -ldflags "$(LDFLAGS)" ./cmd/nebula-cert
|
|
|
|
|
|
|
|
build/linux-arm-%: GOENV += GOARM=$(word 3, $(subst -, ,$*))
|
|
build/linux-arm-%: GOENV += GOARM=$(word 3, $(subst -, ,$*))
|
|
|
build/linux-mips-%: GOENV += GOMIPS=$(word 3, $(subst -, ,$*))
|
|
build/linux-mips-%: GOENV += GOMIPS=$(word 3, $(subst -, ,$*))
|
|
@@ -182,8 +198,11 @@ build/linux-mips-softfloat/%: LDFLAGS += -s -w
|
|
|
# boringcrypto
|
|
# boringcrypto
|
|
|
build/linux-amd64-boringcrypto/%: GOENV += GOEXPERIMENT=boringcrypto CGO_ENABLED=1
|
|
build/linux-amd64-boringcrypto/%: GOENV += GOEXPERIMENT=boringcrypto CGO_ENABLED=1
|
|
|
build/linux-arm64-boringcrypto/%: GOENV += GOEXPERIMENT=boringcrypto CGO_ENABLED=1
|
|
build/linux-arm64-boringcrypto/%: GOENV += GOEXPERIMENT=boringcrypto CGO_ENABLED=1
|
|
|
-build/linux-amd64-boringcrypto/%: LDFLAGS += -checklinkname=0
|
|
|
|
|
-build/linux-arm64-boringcrypto/%: LDFLAGS += -checklinkname=0
|
|
|
|
|
|
|
+
|
|
|
|
|
+# fips140
|
|
|
|
|
+FIPSVERSION = v1.0.0
|
|
|
|
|
+$(foreach _rule, $(ALL_FIPS140), build/$(_rule)/%): GOENV += GOFIPS140=$(FIPSVERSION)
|
|
|
|
|
+$(foreach _rule, $(ALL_FIPS140), build/$(_rule)/%): BUILD_ARGS += -tags fips140enforce
|
|
|
|
|
|
|
|
build/%/nebula: .FORCE
|
|
build/%/nebula: .FORCE
|
|
|
GOOS=$(firstword $(subst -, , $*)) \
|
|
GOOS=$(firstword $(subst -, , $*)) \
|
|
@@ -214,10 +233,7 @@ vet:
|
|
|
go vet $(VET_FLAGS) -v ./...
|
|
go vet $(VET_FLAGS) -v ./...
|
|
|
|
|
|
|
|
test:
|
|
test:
|
|
|
- go test -v ./...
|
|
|
|
|
-
|
|
|
|
|
-test-boringcrypto:
|
|
|
|
|
- GOEXPERIMENT=boringcrypto CGO_ENABLED=1 go test -ldflags "-checklinkname=0" -v ./...
|
|
|
|
|
|
|
+ $(TEST_ENV) go test $(TEST_FLAGS) -v ./...
|
|
|
|
|
|
|
|
test-pkcs11:
|
|
test-pkcs11:
|
|
|
CGO_ENABLED=1 go test -v -tags pkcs11 ./...
|
|
CGO_ENABLED=1 go test -v -tags pkcs11 ./...
|
|
@@ -260,29 +276,72 @@ ifeq ($(words $(MAKECMDGOALS)),1)
|
|
|
@$(MAKE) service ${.DEFAULT_GOAL} --no-print-directory
|
|
@$(MAKE) service ${.DEFAULT_GOAL} --no-print-directory
|
|
|
endif
|
|
endif
|
|
|
|
|
|
|
|
|
|
+# Useful to chain together, like:
|
|
|
|
|
+# - make fips140 e2evv
|
|
|
|
|
+# - make fips140 smoke-docker
|
|
|
|
|
+# Use `release-fips140` to build release binaries
|
|
|
|
|
+fips140:
|
|
|
|
|
+ @echo > $(NULL_FILE)
|
|
|
|
|
+ifeq ($(strip $(GOFIPS140)),)
|
|
|
|
|
+ $(eval GOFIPS140 = $(FIPSVERSION))
|
|
|
|
|
+endif
|
|
|
|
|
+ $(eval GOENV += GOFIPS140=$(GOFIPS140))
|
|
|
|
|
+ $(eval BUILD_ARGS += -tags fips140enforce)
|
|
|
|
|
+ $(eval TEST_ENV += $(GOENV))
|
|
|
|
|
+ $(eval CURVE = P256)
|
|
|
|
|
+ifeq ($(words $(MAKECMDGOALS)),1)
|
|
|
|
|
+ @$(MAKE) fips140 GOFIPS140=$(GOFIPS140) ${.DEFAULT_GOAL} --no-print-directory
|
|
|
|
|
+endif
|
|
|
|
|
+
|
|
|
|
|
+# To test the future pending module, use like `make fips140-latest test`
|
|
|
|
|
+ALL_GOFIPS140 = v1.0.0 v1.26.0 latest
|
|
|
|
|
+define FIPS140_rule
|
|
|
|
|
+fips140-$(1): GOFIPS140 = $(1)
|
|
|
|
|
+fips140-$(1): fips140
|
|
|
|
|
+endef
|
|
|
|
|
+$(foreach _rule, $(ALL_GOFIPS140), $(eval $(call FIPS140_rule,$(_rule))))
|
|
|
|
|
+
|
|
|
|
|
+# Iterate and run the goals for all fips versions, like `make fips140-all GOALS=test`
|
|
|
|
|
+fips140-all:
|
|
|
|
|
+ @$(foreach _v,$(ALL_GOFIPS140),$(MAKE) fips140-$(_v) $(GOALS) &&) true
|
|
|
|
|
+
|
|
|
|
|
+# Useful to chain together, like:
|
|
|
|
|
+# - make boringcrypto e2evv
|
|
|
|
|
+# - make boringcrypto smoke-docker
|
|
|
|
|
+# Use `release-boringcrypto` or `bin-boringcrypto` to build release binaries
|
|
|
|
|
+boringcrypto:
|
|
|
|
|
+ @echo > $(NULL_FILE)
|
|
|
|
|
+ $(eval GOENV += GOEXPERIMENT=boringcrypto CGO_ENABLED=1)
|
|
|
|
|
+ $(eval TEST_ENV += $(GOENV))
|
|
|
|
|
+ $(eval CURVE = P256)
|
|
|
|
|
+ifeq ($(words $(MAKECMDGOALS)),1)
|
|
|
|
|
+ @$(MAKE) boringcrypto ${.DEFAULT_GOAL} --no-print-directory
|
|
|
|
|
+endif
|
|
|
|
|
+
|
|
|
bin-docker: bin build/linux-amd64/nebula build/linux-amd64/nebula-cert
|
|
bin-docker: bin build/linux-amd64/nebula build/linux-amd64/nebula-cert
|
|
|
|
|
|
|
|
|
|
+smoke-docker: BUILD_ARGS += -race
|
|
|
|
|
+smoke-docker: GOENV += CGO_ENABLED=1
|
|
|
smoke-docker: bin-docker
|
|
smoke-docker: bin-docker
|
|
|
- cd .github/workflows/smoke/ && ./build.sh
|
|
|
|
|
- cd .github/workflows/smoke/ && ./smoke.sh
|
|
|
|
|
- cd .github/workflows/smoke/ && NAME="smoke-p256" CURVE="P256" ./build.sh
|
|
|
|
|
- cd .github/workflows/smoke/ && NAME="smoke-p256" ./smoke.sh
|
|
|
|
|
-
|
|
|
|
|
|
|
+ # This is so we can limit `fips140` smoke test to just P256 curve.
|
|
|
|
|
+ if [ "$(CURVE)" != "P256" ]; then cd .github/workflows/smoke/ && $(GOENV) ./build.sh; fi
|
|
|
|
|
+ if [ "$(CURVE)" != "P256" ]; then cd .github/workflows/smoke/ && $(GOENV) ./smoke.sh; fi
|
|
|
|
|
+ cd .github/workflows/smoke/ && $(GOENV) NAME="smoke-p256" CURVE="P256" ./build.sh
|
|
|
|
|
+ cd .github/workflows/smoke/ && $(GOENV) NAME="smoke-p256" ./smoke.sh
|
|
|
|
|
+
|
|
|
|
|
+smoke-relay-docker: BUILD_ARGS += -race
|
|
|
|
|
+smoke-relay-docker: GOENV += CGO_ENABLED=1
|
|
|
smoke-relay-docker: bin-docker
|
|
smoke-relay-docker: bin-docker
|
|
|
- cd .github/workflows/smoke/ && ./build-relay.sh
|
|
|
|
|
- cd .github/workflows/smoke/ && ./smoke-relay.sh
|
|
|
|
|
|
|
+ cd .github/workflows/smoke/ && $(GOENV) ./build-relay.sh
|
|
|
|
|
+ cd .github/workflows/smoke/ && $(GOENV) ./smoke-relay.sh
|
|
|
|
|
|
|
|
smoke-docker-ipv6: export SMOKE_OVERLAY_IPV6 = 1
|
|
smoke-docker-ipv6: export SMOKE_OVERLAY_IPV6 = 1
|
|
|
smoke-docker-ipv6: smoke-docker
|
|
smoke-docker-ipv6: smoke-docker
|
|
|
|
|
|
|
|
-smoke-docker-race: BUILD_ARGS = -race
|
|
|
|
|
-smoke-docker-race: CGO_ENABLED = 1
|
|
|
|
|
-smoke-docker-race: smoke-docker
|
|
|
|
|
-
|
|
|
|
|
smoke-vagrant/%: bin-docker build/%/nebula
|
|
smoke-vagrant/%: bin-docker build/%/nebula
|
|
|
cd .github/workflows/smoke/ && ./build.sh $*
|
|
cd .github/workflows/smoke/ && ./build.sh $*
|
|
|
cd .github/workflows/smoke/ && ./smoke-vagrant.sh $*
|
|
cd .github/workflows/smoke/ && ./smoke-vagrant.sh $*
|
|
|
|
|
|
|
|
.FORCE:
|
|
.FORCE:
|
|
|
-.PHONY: all all-linux all-freebsd all-openbsd all-netbsd all-darwin all-windows all-cross-linux all-cross-linux-arm all-cross-linux-mips all-cross-linux-other all-cross-darwin all-cross-windows bench bench-cpu bench-cpu-long bin debug build-test-mobile e2e e2ev e2evv e2evvv e2evvvv proto release service smoke-docker smoke-docker-race test test-cov-html smoke-vagrant/%
|
|
|
|
|
|
|
+.PHONY: all all-linux all-freebsd all-openbsd all-netbsd all-darwin all-windows all-cross-linux all-cross-linux-arm all-cross-linux-mips all-cross-linux-other all-cross-darwin all-cross-windows bench bench-cpu bench-cpu-long bin bin-windows bin-windows-arm64 bin-darwin bin-freebsd bin-freebsd-arm64 bin-boringcrypto bin-fips140 bin-pkcs11 bin-docker boringcrypto build-test-mobile debug docker e2e e2ev e2evv e2evvv e2evvvv e2e-bench fips140 fips140-all $(ALL_GOFIPS140:%=fips140-%) install proto release release-linux release-freebsd release-openbsd release-netbsd release-boringcrypto release-fips140 service smoke-docker smoke-relay-docker smoke-docker-ipv6 test test-pkcs11 test-cov-html vet smoke-vagrant/%
|
|
|
.DEFAULT_GOAL := bin
|
|
.DEFAULT_GOAL := bin
|