Fixes #35 Updates https://github.com/tendermint/coding/issues/27 Started a doc.go file to provide an overview/high level dive into the functionality of this repo. Also added an example_test.go file in which we can put end-to-end code examples/actual usage patterns that can be copied and pasted and will always have to compile when tests are run to ensure that we don't regress.pull/1782/head
@ -0,0 +1,48 @@ | |||||
/* | |||||
go-crypto is a customized/convenience cryptography package | |||||
for supporting Tendermint. | |||||
It wraps select functionality of equivalent functions in the | |||||
Go standard library, for easy usage with our libraries. | |||||
Keys: | |||||
All key generation functions return an instance of the PrivKey interface | |||||
which implements methods | |||||
AssertIsPrivKeyInner() | |||||
Bytes() []byte | |||||
Sign(msg []byte) Signature | |||||
PubKey() PubKey | |||||
Equals(PrivKey) bool | |||||
Wrap() PrivKey | |||||
From the above method we can: | |||||
a) Retrieve the public key if needed | |||||
pubKey := key.PubKey() | |||||
For example: | |||||
privKey, err := crypto.GenPrivKeyEd25519() | |||||
if err != nil { | |||||
... | |||||
} | |||||
pubKey := privKey.PubKey() | |||||
... | |||||
// And then you can use the private and public key | |||||
doSomething(privKey, pubKey) | |||||
We also provide hashing wrappers around algorithms: | |||||
Sha256 | |||||
sum := crypto.Sha256([]byte("This is Tendermint")) | |||||
fmt.Printf("%x\n", sum) | |||||
Ripemd160 | |||||
sum := crypto.Ripemd160([]byte("This is consensus")) | |||||
fmt.Printf("%x\n", sum) | |||||
*/ | |||||
package crypto | |||||
// TODO: Add more docs in here |
@ -0,0 +1,35 @@ | |||||
// Copyright 2017 Tendermint. All Rights Reserved. | |||||
// | |||||
// 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_test | |||||
import ( | |||||
"fmt" | |||||
"github.com/tendermint/go-crypto" | |||||
) | |||||
func Example_Sha256() { | |||||
sum := crypto.Sha256([]byte("This is Tendermint")) | |||||
fmt.Printf("%x\n", sum) | |||||
// Output: | |||||
// f91afb642f3d1c87c17eb01aae5cb65c242dfdbe7cf1066cc260f4ce5d33b94e | |||||
} | |||||
func Example_Ripemd160() { | |||||
sum := crypto.Ripemd160([]byte("This is Tendermint")) | |||||
fmt.Printf("%x\n", sum) | |||||
// Output: | |||||
// 051e22663e8f0fd2f2302f1210f954adff009005 | |||||
} |