Unverified Commit 43cc7ad5 authored by Steven Allen's avatar Steven Allen Committed by GitHub

Merge pull request #12 from RTradeLtd/embed-example

Embed and Key Creation examples
parents 69ee5994 fa8d7f54
package examples
import (
"time"
pb "github.com/ipfs/go-ipns/pb"
ipns "github.com/ipfs/go-ipns"
crypto "github.com/libp2p/go-libp2p-crypto"
)
// CreateEntryWithEmbed shows how you can create an IPNS entry
// and embed it with a public key. For ed25519 keys this is not needed
// so attempting to embed with an ed25519 key, will not actually embed the key
func CreateEntryWithEmbed(ipfsPath string, publicKey crypto.PubKey, privateKey crypto.PrivKey) (*pb.IpnsEntry, error) {
ipfsPathByte := []byte(ipfsPath)
eol := time.Now().Add(time.Hour * 48)
entry, err := ipns.Create(privateKey, ipfsPathByte, 1, eol)
if err != nil {
return nil, err
}
err = ipns.EmbedPublicKey(publicKey, entry)
if err != nil {
return nil, err
}
return entry, nil
}
package examples_test
import (
"testing"
"github.com/ipfs/go-ipns/examples"
crypto "github.com/libp2p/go-libp2p-crypto"
)
var testPath = "/ipfs/Qme1knMqwt1hKZbc1BmQFmnm9f36nyQGwXxPGVpVJ9rMK5"
func TestKeyGeneration(t *testing.T) {
_, err := generateRSAKey()
if err != nil {
t.Error(err)
}
_, err = generateEDKey()
if err != nil {
t.Error(err)
}
}
func TestEmbeddedEntryCreation(t *testing.T) {
rk, err := generateRSAKey()
if err != nil {
t.Fatal(err)
}
ek, err := generateEDKey()
if err != nil {
t.Fatal(err)
}
_, err = examples.CreateEntryWithEmbed(testPath, rk.GetPublic(), rk)
if err != nil {
t.Error(err)
}
_, err = examples.CreateEntryWithEmbed(testPath, ek.GetPublic(), ek)
if err != nil {
t.Error(err)
}
}
func generateRSAKey() (crypto.PrivKey, error) {
// DO NOT USE 1024 BITS IN PRODUCTION
// THIS IS ONLY FOR TESTING PURPOSES
k, err := examples.GenerateRSAKeyPair(1024)
if err != nil {
return nil, err
}
return k, nil
}
func generateEDKey() (crypto.PrivKey, error) {
// ED25519 uses 256bit keys, and ignore the bit param
k, err := examples.GenerateEDKeyPair()
if err != nil {
return nil, err
}
return k, nil
}
package examples
import (
crypto "github.com/libp2p/go-libp2p-crypto"
)
// GenerateRSAKeyPair is used to generate an RSA key pair
func GenerateRSAKeyPair(bits int) (crypto.PrivKey, error) {
priv, _, err := crypto.GenerateKeyPair(crypto.RSA, bits)
if err != nil {
return nil, err
}
return priv, nil
}
// GenerateEDKeyPair is used to generate an ED25519 keypair
func GenerateEDKeyPair() (crypto.PrivKey, error) {
// ED25519 ignores the bit param and uses 256bit keys
priv, _, err := crypto.GenerateKeyPair(crypto.Ed25519, 256)
if err != nil {
return nil, err
}
return priv, nil
}
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment