Categorygithub.com/jetrmm/go-dpapi
modulepackage
0.1.0
Repository: https://github.com/jetrmm/go-dpapi.git
Documentation: pkg.go.dev

# README

GO Windows DPAPI Wrapper

The Windows DPAPI uses keys from the user and computer to encrypt data.

Encrypt and decrypt strings:

pwd := "password"
encrypted, _ := dpapi.Encrypt(pwd)
decrypted, _ := dpapi.Decrypt(encrypted)

Encrypt and decrypt byte arrays:

secret := []byte("isolateIndoors")
enc, _ := dpapi.EncryptBytes(secret)
dec, _ := dpapi.DecryptBytes(enc)

An encrypted string looks like this:

AQAAANCMnd8BFdERjHoAwE/Cl+sBAAAAAQ5GMbx570mklMuNAyFRhgAAAAACAAAAAAAQZgAAAAEAACAAAACe7tibTHuzIsKVO2adNjiXU9TM9F1eR95Yk0Wk8Kzj7gAAAAAOgAAAAAIAACAAAAA7quouOuNvn7eicqjE9aa75UZN+TAbokD35hTXbE7UOBAAAADEFNscRxOqxxheOIVdtbiQQAAAAC+UCYzQFtF7uRyhjXKnqCii8OHUtmB5LwIgJTx46uLukKGsOp60rGVPGn6ufiYYCRXiCQPAmQEKjsEE1jwqZto=

The package also supports machine specific encryption and encryption using entropy.

Developing

There is an application in /cmd/stable that creates a JSON file of encrypted values. The purpose is to create a stable encrypted value and then verify it can still be decrypted after any changes are made.

It creates a file named domain.computer.user.stable.json on the first run. On subsequent runs it tries to decrypt the values in the JSON file. It currently only tests per-user encryption. But this should allow testing of machine encryption and encryption with entropy.

References

# Packages

No description provided by the author

# Functions

Decrypt a string to a string.
EncryptBytes encrypts a byte array and returns a byte array.
No description provided by the author
No description provided by the author
Encrypt a string value to a base64 string.
EncryptBytes encrypts a byte array and returns a byte array.
No description provided by the author
EncryptBytesMachineLocal encrypts a byte array and returns a byte array and associates the data encrypted with the current computer instead of with an individual user.
No description provided by the author
No description provided by the author
EncryptMachineLocal a string value to a base64 string and associates the data encrypted with the current computer instead of with an individual user.
No description provided by the author