You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
41 lines
810 B
41 lines
810 B
// +build !without_openssl |
|
|
|
package stupidgcm |
|
|
|
// #include <openssl/evp.h> |
|
import "C" |
|
|
|
import ( |
|
"crypto/cipher" |
|
"log" |
|
) |
|
|
|
const ( |
|
// BuiltWithoutOpenssl indicates if openssl been disabled at compile-time |
|
BuiltWithoutOpenssl = false |
|
|
|
keyLen = 32 |
|
ivLen = 16 |
|
tagLen = 16 |
|
) |
|
|
|
type stupidGCM struct { |
|
stupidAEADCommon |
|
} |
|
|
|
// New returns a new AES-GCM-256 cipher that satisfies the cipher.AEAD interface. |
|
// |
|
// Only 32-bytes keys and 16-byte IVs are supported. |
|
func New(keyIn []byte, forceDecode bool) cipher.AEAD { |
|
if len(keyIn) != keyLen { |
|
log.Panicf("Only %d-byte keys are supported", keyLen) |
|
} |
|
return &stupidGCM{ |
|
stupidAEADCommon{ |
|
// Create a private copy of the key |
|
key: append([]byte{}, keyIn...), |
|
openSSLEVPCipher: C.EVP_aes_256_gcm(), |
|
nonceSize: ivLen, |
|
}, |
|
} |
|
}
|
|
|