예제 #1
0
파일: aes.go 프로젝트: xyz12810/deblocus
func aes_cleanup(ctx evp_ctx_ptr, c *aesCipher) {
	if ctx != nil {
		C.EVP_CIPHER_CTX_cleanup(ctx)
	}
	if c != nil && c.key != nil {
		Memset(c.key, 0)
	}
}
예제 #2
0
파일: aes.go 프로젝트: nemesisqp/gotor
func New(key, iv []byte) Cipher {
	c := &cipher{}
	cgolock.Lock()
	defer cgolock.Unlock()

	C.EVP_CIPHER_CTX_init(&c.evp)
	runtime.SetFinalizer(c, func(c *cipher) {
		C.EVP_CIPHER_CTX_cleanup(&c.evp)
	})

	C.EVP_EncryptInit_ex(&c.evp, C.EVP_aes_128_ctr(), nil, (*C.uchar)(&key[0]), (*C.uchar)(&iv[0]))

	return c
}
예제 #3
0
func CleanUpCipherCtx(self *CipherCtx) {
	//ignore return value. Do we want to
	//panic in a finalizer?
	C.EVP_CIPHER_CTX_cleanup(self.evp_cipher_ctx)
}