initial implementation
This commit is contained in:
commit
8e18153364
16
README.md
Normal file
16
README.md
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
# ipfs-key
|
||||||
|
A tool for easily generating ipfs keypairs. When run, it will write the bytes of
|
||||||
|
the serialized private key to stdout. By default, a 2048 bit RSA key will be
|
||||||
|
generated. The keysize can be changed by specifying the `-size` option, and the
|
||||||
|
key type can be changed by specifying the `-type` option (currently only RSA is
|
||||||
|
implemented).
|
||||||
|
|
||||||
|
## Installation
|
||||||
|
```
|
||||||
|
$ go get github.com/whyrusleeping/ipfs-key
|
||||||
|
```
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
```
|
||||||
|
$ ipfs-key -size=4096 > my.key
|
||||||
|
```
|
48
main.go
Normal file
48
main.go
Normal file
|
@ -0,0 +1,48 @@
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"flag"
|
||||||
|
"fmt"
|
||||||
|
"os"
|
||||||
|
|
||||||
|
ci "github.com/ipfs/go-ipfs/p2p/crypto"
|
||||||
|
peer "github.com/ipfs/go-ipfs/p2p/peer"
|
||||||
|
)
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
size := flag.Int("bitsize", 2048, "select the bitsize of the key to generate")
|
||||||
|
typ := flag.String("type", "RSA", "select type of key to generate")
|
||||||
|
|
||||||
|
flag.Parse()
|
||||||
|
|
||||||
|
var atyp int
|
||||||
|
switch *typ {
|
||||||
|
case "RSA":
|
||||||
|
atyp = ci.RSA
|
||||||
|
default:
|
||||||
|
fmt.Fprintln(os.Stderr, "unrecognized key type: ", *typ)
|
||||||
|
os.Exit(1)
|
||||||
|
}
|
||||||
|
|
||||||
|
priv, pub, err := ci.GenerateKeyPair(atyp, *size)
|
||||||
|
if err != nil {
|
||||||
|
fmt.Fprintln(os.Stderr, err)
|
||||||
|
os.Exit(1)
|
||||||
|
}
|
||||||
|
|
||||||
|
pid, err := peer.IDFromPublicKey(pub)
|
||||||
|
if err != nil {
|
||||||
|
fmt.Fprintln(os.Stderr, err)
|
||||||
|
os.Exit(1)
|
||||||
|
}
|
||||||
|
|
||||||
|
fmt.Fprintf(os.Stderr, "ID for generated key: %s\n", pid.Pretty())
|
||||||
|
|
||||||
|
data, err := priv.Bytes()
|
||||||
|
if err != nil {
|
||||||
|
fmt.Fprintln(os.Stderr, err)
|
||||||
|
os.Exit(1)
|
||||||
|
}
|
||||||
|
|
||||||
|
os.Stdout.Write(data)
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user