All Projects → pavel-v-chernykh → keystore-go

pavel-v-chernykh / keystore-go

Licence: MIT license
A Go (golang) implementation of Java KeyStore encoder/decoder

Programming Languages

go
31211 projects - #10 most used programming language
Makefile
30231 projects

Projects that are alternatives of or similar to keystore-go

Ks265codec
ks cloud hevc(h265) encoder decoder test and description
Stars: ✭ 192 (+61.34%)
Mutual labels:  encoder, decoder
Enmime
MIME mail encoding and decoding package for Go
Stars: ✭ 246 (+106.72%)
Mutual labels:  encoder, decoder
Xmlschema
XML Schema validator and data conversion library for Python
Stars: ✭ 201 (+68.91%)
Mutual labels:  encoder, decoder
Ffmediatoolkit
FFMediaToolkit is a cross-platform video decoder/encoder library for .NET that uses FFmpeg native libraries. It supports video frames extraction, reading stream metadata and creating videos from bitmaps in any format supported by FFmpeg.
Stars: ✭ 156 (+31.09%)
Mutual labels:  encoder, decoder
urlpack
Pure JavaScript toolkit for data URLs (MessagePack, Base58 and Base62)
Stars: ✭ 51 (-57.14%)
Mutual labels:  encoder, decoder
Gojay
fastest JSON encoder/decoder with powerful stream API for Golang
Stars: ✭ 2,009 (+1588.24%)
Mutual labels:  encoder, decoder
Codablecsv
Read and write CSV files row-by-row or through Swift's Codable interface.
Stars: ✭ 214 (+79.83%)
Mutual labels:  encoder, decoder
Wav
Battle tested Wav decoder/encoder
Stars: ✭ 139 (+16.81%)
Mutual labels:  encoder, decoder
sms
A Go library for encoding and decoding SMSs
Stars: ✭ 37 (-68.91%)
Mutual labels:  encoder, decoder
rmarsh
Ruby Marshal 4.8 encoder/decoder in Golang. Why? Who knows.
Stars: ✭ 15 (-87.39%)
Mutual labels:  encoder, decoder
Salsanext
Uncertainty-aware Semantic Segmentation of LiDAR Point Clouds for Autonomous Driving
Stars: ✭ 153 (+28.57%)
Mutual labels:  encoder, decoder
bytecodec
A tiny Rust framework for implementing encoders/decoders of byte-oriented protocols
Stars: ✭ 21 (-82.35%)
Mutual labels:  encoder, decoder
Base62
Base62 encoder and decoder for arbitrary data
Stars: ✭ 141 (+18.49%)
Mutual labels:  encoder, decoder
png pong
A pure Rust PNG image decoder and encoder based on lodepng.
Stars: ✭ 21 (-82.35%)
Mutual labels:  encoder, decoder
Cityengine Sdk
CityEngine is a 3D city modeling software for urban design, visual effects, and VR/AR production. With its C++ SDK you can create plugins and standalone apps capable to execute CityEngine CGA procedural modeling rules.
Stars: ✭ 137 (+15.13%)
Mutual labels:  encoder, decoder
Codable Diy Kit
A template for creating your own Swift Codable encoders and decoders
Stars: ✭ 207 (+73.95%)
Mutual labels:  encoder, decoder
Swift Html Entities
HTML5 spec-compliant character encoder/decoder for Swift
Stars: ✭ 130 (+9.24%)
Mutual labels:  encoder, decoder
Silk V3 Decoder
kn007's blog
Stars: ✭ 1,832 (+1439.5%)
Mutual labels:  encoder, decoder
BatchEncoder
BatchEncoder is an audio files conversion software.
Stars: ✭ 145 (+21.85%)
Mutual labels:  encoder, decoder
logfmt
Package logfmt marshals and unmarshals logfmt messages.
Stars: ✭ 156 (+31.09%)
Mutual labels:  encoder, decoder

Gitpod ready-to-code

Keystore

A go (golang) implementation of Java KeyStore encoder/decoder

Take into account that JKS assumes that private keys are PKCS8 encoded.

Example

package main

import (
	"log"
	"os"
	"reflect"

	"github.com/pavlo-v-chernykh/keystore-go/v4"
)

func readKeyStore(filename string, password []byte) keystore.KeyStore {
	f, err := os.Open(filename)
	if err != nil {
		log.Fatal(err)
	}

	defer func() {
		if err := f.Close(); err != nil {
			log.Fatal(err)
		}
	}()

	ks := keystore.New()
	if err := ks.Load(f, password); err != nil {
		log.Fatal(err) // nolint: gocritic
	}

	return ks
}

func writeKeyStore(ks keystore.KeyStore, filename string, password []byte) {
	f, err := os.Create(filename)
	if err != nil {
		log.Fatal(err)
	}

	defer func() {
		if err := f.Close(); err != nil {
			log.Fatal(err)
		}
	}()

	err = ks.Store(f, password)
	if err != nil {
		log.Fatal(err) // nolint: gocritic
	}
}

func zeroing(buf []byte) {
	for i := range buf {
		buf[i] = 0
	}
}

func main() {
	password := []byte{'p', 'a', 's', 's', 'w', 'o', 'r', 'd'}
	defer zeroing(password)
	
	ks1 := readKeyStore("keystore.jks", password)

	writeKeyStore(ks1, "keystore2.jks", password)

	ks2 := readKeyStore("keystore2.jks", password)

	log.Printf("is equal: %v\n", reflect.DeepEqual(ks1, ks2))
}

For more examples explore examples dir

Development

  1. Install go
  2. Install golangci-lint
  3. Clone the repo git clone [email protected]:pavlo-v-chernykh/keystore-go.git
  4. Go to the project dir cd keystore-go
  5. Run make to format, test and lint
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].