You need to sign in or sign up before continuing.
Commit 7651b3ea authored by potsables's avatar potsables

added examples

parent 2509a17b
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, nil
}
return entry, nil
}
package examples_test
import (
"testing"
"github.com/ipfs/go-ipns/examples"
)
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.Public, rk.Private)
if err != nil {
t.Error(err)
}
_, err = examples.CreateEntryWithEmbed(testPath, ek.Public, ek.Private)
if err != nil {
t.Error(err)
}
}
func generateRSAKey() (*examples.KeyPair, error) {
// DO NOT USE 1024 BITS IN PRODUCTION
// THIS IS ONLY FOR TESTING PURPOSES
kp, err := examples.GenerateRSAKeyPair(1024)
if err != nil {
return nil, err
}
return kp, nil
}
func generateEDKey() (*examples.KeyPair, error) {
// DO NOT USE 1024 BITS IN PRODUCTION
// THIS IS ONLY FOR TESTING PURPOSES
kp, err := examples.GenerateEDKeyPair(1024)
if err != nil {
return nil, err
}
return kp, nil
}
package examples
import (
crypto "github.com/libp2p/go-libp2p-crypto"
)
// KeyPair is a helper struct used to contain the parts of a key
type KeyPair struct {
Private crypto.PrivKey
Public crypto.PubKey
}
// GenerateRSAKeyPair is used to generate an RSA key pair
func GenerateRSAKeyPair(bits int) (*KeyPair, error) {
var kp KeyPair
priv, pub, err := crypto.GenerateKeyPair(crypto.RSA, bits)
if err != nil {
return nil, err
}
kp.Private = priv
kp.Public = pub
return &kp, nil
}
// GenerateEDKeyPair is used to generate an ED25519 keypair
func GenerateEDKeyPair(bits int) (*KeyPair, error) {
var kp KeyPair
priv, pub, err := crypto.GenerateKeyPair(crypto.Ed25519, bits)
if err != nil {
return nil, err
}
kp.Private = priv
kp.Public = pub
return &kp, 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