MCPcopy Create free account
hub / github.com/convox/rack / Encrypt

Method Encrypt

pkg/crypt/crypt.go:49–83  ·  view source on GitHub ↗
(keyArn string, dec []byte)

Source from the content-addressed store, hash-verified

47}
48
49func (c *Crypt) Encrypt(keyArn string, dec []byte) ([]byte, error) {
50 req := &kms.GenerateDataKeyInput{
51 KeyId: aws.String(keyArn),
52 NumberOfBytes: aws.Int64(KeyLength),
53 }
54
55 res, err := KMS(c).GenerateDataKey(req)
56
57 if err != nil {
58 return nil, err
59 }
60
61 var key [KeyLength]byte
62 copy(key[:], res.Plaintext[0:KeyLength])
63
64 rand, err := c.generateNonce()
65
66 if err != nil {
67 return nil, err
68 }
69
70 var nonce [NonceLength]byte
71 copy(nonce[:], rand[0:NonceLength])
72
73 var enc []byte
74 enc = secretbox.Seal(enc, dec, &nonce, &key)
75
76 e := &Envelope{
77 Ciphertext: enc,
78 EncryptedKey: res.CiphertextBlob,
79 Nonce: nonce[:],
80 }
81
82 return json.Marshal(e)
83}
84
85func (c *Crypt) Decrypt(keyArn string, data []byte) ([]byte, error) {
86 var e *Envelope

Callers 1

releaseSaveMethod · 0.80

Calls 3

generateNonceMethod · 0.95
KMSFunction · 0.70
StringMethod · 0.45

Tested by

no test coverage detected