keygen

package module
v0.0.0-...-d868659 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 3, 2017 License: MIT Imports: 5 Imported by: 0

README

keygen

Build Status Go Report Card GoDoc

keygen is a Golang package which provides helper functions to generate symmetric key(Ex: HMAC).

Create Symmetric Algorithm Key for HMAC SHA-256
var err error
size := 256  // Key size = 256 bits.
key := make([]byte, size)

if key, err = keygen.GenSymmetricKey(size); err != nil {
    fmt.Printf("GenSymmetricKey(%v) error: %v\n", size, err)
}

// Compare a zero-value byte array to see if key is generated.
fmt.Printf("%v", !bytes.Equal(key, make([]byte, size)))
CLI to generate symmetric key
  • gensymmetrickey

    • Generate symmetric key(Ex: HMAC).

    • Usage:
      gensymmetrickey -b=<key size in bits> -o=<output file>

        Ex:
        gensymmetrickey -b=512 -o="mykey.dat"
      
    • Binary Release

Documentation
License

Documentation

Overview

Package keygen is a helper to generate symmetric key(Ex: HMAC).

Index

Examples

Constants

This section is empty.

Variables

This section is empty.

Functions

func GenSymmetricKey

func GenSymmetricKey(bits int) (k []byte, err error)

GenSymmetricKey generates key byte array for symmetric key alogorithm like HMAC.

Params:
    size: Key size in bits. Ex: 256 bits for HMAC SHA-256 and 512 bits for HMAC SHA-512.
Return:
    k: Key stored in byte array.
    err: error.
Example
package main

import (
	"bytes"
	"fmt"

	"github.com/northbright/keygen"
)

func main() {
	var err error
	size := 256 // Key size = 256 bits.
	key := make([]byte, size)

	if key, err = keygen.GenSymmetricKey(size); err != nil {
		fmt.Printf("GenSymmetricKey(%v) error: %v\n", size, err)
	}

	// Compare a zero-value byte array to see if key is generated.
	fmt.Printf("%v", !bytes.Equal(key, make([]byte, size)))
}
Output:

true

func GenSymmetricKeyFile

func GenSymmetricKeyFile(bits int, outputFile string, perm os.FileMode) (err error)

GenSymmetricKeyFile generates key file for symmetric key alogrithm like HMAC.

Params:
    size: Key size in bits. Ex: 256 bits for HMAC SHA-256 and 512 bits for HMAC SHA-512.
    outputFile: Output key file.
    perm: Permission of key file. The final permission of file will be perm - umask. Ex: 0666 - 002(centos) = 0664.
Return:
    err: error.
Example
package main

import (
	"fmt"
	"os"
	"os/user"

	"github.com/northbright/keygen"
	"github.com/northbright/pathhelper"
)

func main() {
	var err error
	size := 512 // Key size = 256 bits.

	u, _ := user.Current()
	username := u.Username
	keyFile := fmt.Sprintf("/home/%v/my.key", username) // make absolute key path for current user.

	p, err := pathhelper.GetAbsPath(keyFile)
	if err != nil {
		fmt.Printf("GetAbsPath(%v) error: %v\n", keyFile, err)
	}

	fmt.Fprintf(os.Stderr, "Key file: %v\n", p)

	if err = keygen.GenSymmetricKeyFile(size, p, 0660); err != nil {
		fmt.Printf("GenSymmetricKeyFile(%v) error: %v\n", size, err)
	}

}
Output:

Types

This section is empty.

Directories

Path Synopsis
cli

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL