func fastAES_GCM(rwkey []byte) fastGCMState {
	key := hash_invar(rwkey)[:16]
	state := make([]byte, 65536*20)
	sched := (*_Ctype_gcm_state)(unsafe.Pointer(&state[0]))
	idx := C.find_cipher(C.CString("aes"))
	FASSERT(C.gcm_init(sched, idx, unsafe_bytes(key), C.int(len(key))) == C.CRYPT_OK)
	//LOG(LOG_DEBUG, "%X", state)
	return fastGCMState(state)
}
func fastTF_NewOFB(key []byte) fastTF_State {
	idx := C.find_cipher(C.CString("aes"))
	iv := make([]byte, 16)
	state := make([]byte, 65536)
	FASSERT(C.ofb_start(idx,
		unsafe_bytes(iv),
		unsafe_bytes(key),
		C.int(len(key)),
		C.int(0), (*_Ctype_symmetric_OFB)((unsafe.Pointer)(&state[0]))) == C.CRYPT_OK)
	return state
}