SSHSecure/dh/func_utils.go

55 lines
901 B
Go

package dh
func bitShiftWord(a []uint32, n uint32) (i uint32) {
i = a[n>>ShiftWord]
return
}
// Bit* functions operate on 32-bit words
func BitClear(a []uint32, n uint32) (i uint32) {
/*
#define BIT_CLEAR(a,n) ((a)[(n)>>SHIFT_WORD] &= ~(1L << ((n) & 31)))
*/
var x uint32 = bitShiftWord(a, n)
var y uint32 = uint32(1) << (n & 31)
var z uint32 = ^y
i = x & z
return
}
func BitSet(a []uint32, n uint32) (i uint32) {
/*
#define BIT_SET(a,n) ((a)[(n)>>SHIFT_WORD] |= (1L << ((n) & 31)))
*/
var x uint32 = bitShiftWord(a, n)
var y uint32 = uint32(1) << (n & 31)
i = x | y
return
}
func BitTest(a []uint32, n uint32) (i uint32) {
/*
#define BIT_TEST(a,n) ((a)[(n)>>SHIFT_WORD] & (1L << ((n) & 31)))
*/
var x uint32 = bitShiftWord(a, n)
var y uint32 = uint32(1) << (n & 31)
i = x & y
return
}
// The qfileout function is replaced by a moduli.Entry method Write.