Peacemakr's E2E-Encryption-as-a-Service SDK simplifies your data security with E2E-Encryption service and automated key lifecycle management.
You can easily encrypt your data without worrying about backward compatibility, cross platform portability, or changing security requirements.
Our Zero-Trust capability allows you to customize your security strength to meet the highest standard without having to place your trust in Peacemakr as we don’t have the capacity to get your keys and decrypt your data.
We take security and trust very seriously. If you believe you have found a security issue, please responsibly disclose by contacting us.
The content of this SDK is open source under Apache License 2.0.
To install
$ go get github.com/peacemakr-io/peacemakr-go-sdk
Sample go.mod
module my-awesome-project
go 1.12
require (
github.com/peacemakr-io/peacemakr-go-sdk v0.0.10
)
We know what it's like to have your PM come to you late on a Friday and ask you for something complicated. That's why we want to make it simple - to let you go home on that Friday night. You can start encrypting messages in half an hour and get home in time for dinner.
This is all you need to get started, along with an API key. Visit admin.peacemakr.io to get one of those.
package my_sdk
import (
peacemakr_tools "github.com/peacemakr-io/peacemakr-go-sdk/pkg/tools"
)
type MyMessage struct {
Secret []byte `encrypt:"true"`
Public []byte
}
type MySDK struct {
Encryptor peacemakr_tools.Encryptor
}
func GetMySDK(cfg *peacemakr_tools.EncryptorConfig) (*MySDK, error) {
// This can also be nil. If it is, peacemakr will read the values from the environment
// that are prefixed with PEACEMAKR_ENCRYPTOR
encryptor, err := peacemakr_tools.NewEncryptor(cfg)
if err != nil {
return nil, err
}
return &MySDK{
Encryptor: encryptor,
}, nil
}
func (m *MySDK) EncryptMessage(message *MyMessage) error {
// Make sure you pass a pointer into this, it modifies the message in-place to encrypt the marked fields
return m.Encryptor.Encrypt(message)
}
func (m *MySDK) DecryptMessage(message *MyMessage) error {
// Make sure you pass a pointer into this, it modifies the message in-place to decrypt the marked fields
return m.Encryptor.Decrypt(message)
}
We appreciate all contributions. Some basic guidelines are here, for more informaton see CONTRIBUTING.md
Issues:
- Please include a minimal example that reproduces your issue
- Please use the tags to help us help you
- If you file an issue and you want to work on it, fantastic! Please assign it to yourself.
PRs:
- All PRs must be reviewed and pass CI
We use the usual fork and PR mechanisms, and in this section, here are some basic guidelines on how to set up a development environment. Without being a member of Peacemakr, you will not have full access to the testing infrastructure required for complete code coverage, but our CircleCI build and test pipeline can be used to provide this level of visibility and provide feedback.