From cae3149b2afcfae2f160c0b54e9e78fe52546653 Mon Sep 17 00:00:00 2001 From: gVisor bot Date: Thu, 3 Dec 2020 14:43:40 -0800 Subject: [PATCH] Internal change. PiperOrigin-RevId: 345538979 --- pkg/crypto/BUILD | 12 ++++++++++++ pkg/crypto/crypto.go | 16 ++++++++++++++++ pkg/crypto/crypto_stdlib.go | 32 ++++++++++++++++++++++++++++++++ 3 files changed, 60 insertions(+) create mode 100644 pkg/crypto/BUILD create mode 100644 pkg/crypto/crypto.go create mode 100644 pkg/crypto/crypto_stdlib.go diff --git a/pkg/crypto/BUILD b/pkg/crypto/BUILD new file mode 100644 index 000000000..08fa772ca --- /dev/null +++ b/pkg/crypto/BUILD @@ -0,0 +1,12 @@ +load("//tools:defs.bzl", "go_library") + +package(licenses = ["notice"]) + +go_library( + name = "crypto", + srcs = [ + "crypto.go", + "crypto_stdlib.go", + ], + visibility = ["//:sandbox"], +) diff --git a/pkg/crypto/crypto.go b/pkg/crypto/crypto.go new file mode 100644 index 000000000..b26b55d37 --- /dev/null +++ b/pkg/crypto/crypto.go @@ -0,0 +1,16 @@ +// Copyright 2020 The gVisor Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Package crypto wraps crypto primitives. +package crypto diff --git a/pkg/crypto/crypto_stdlib.go b/pkg/crypto/crypto_stdlib.go new file mode 100644 index 000000000..74a55a123 --- /dev/null +++ b/pkg/crypto/crypto_stdlib.go @@ -0,0 +1,32 @@ +// Copyright 2020 The gVisor Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package crypto + +import ( + "crypto/ecdsa" + "crypto/sha512" + "math/big" +) + +// EcdsaVerify verifies the signature in r, s of hash using ECDSA and the +// public key, pub. Its return value records whether the signature is valid. +func EcdsaVerify(pub *ecdsa.PublicKey, hash []byte, r, s *big.Int) bool { + return ecdsa.Verify(pub, hash, r, s) +} + +// SumSha384 returns the SHA384 checksum of the data. +func SumSha384(data []byte) (sum384 [sha512.Size384]byte) { + return sha512.Sum384(data) +}