예제 #1
0
파일: sha.go 프로젝트: eftychis/crypto-1
func (h *sha384) Write(p []byte) (n int, err error) {
	l := len(p)
	if C.SHA384_Update(&h.ctx, unsafe.Pointer(&p[0]), C.size_t(l)) == 0 {
		panic("SHA384_Update failed")
	}
	return l, nil
}
예제 #2
0
파일: sha384.go 프로젝트: postfix/go-ssl
func (self *SHA384Hash) Write(msg []byte) (n int, err error) {
	size := C.size_t(len(msg))
	if C.SHA384_Update(&self.sha, unsafe.Pointer(C.CString(string(msg))), size) != 1 {
		panic("problem updating hash")
	}
	return len(msg), nil
}
예제 #3
0
파일: sha512.go 프로젝트: runcom/gossl
func (d *digest) Write(msg []byte) (n int, err error) {
	mlen := len(msg)
	size := C.size_t(mlen)
	switch d.function {
	case crypto.SHA384:
		if C.SHA384_Update(&d.ctx, unsafe.Pointer(C.CString(string(msg))), size) != 1 {
			return 0, sslerr.Error()
		}
		return mlen, nil
	default:
		if C.SHA512_Update(&d.ctx, unsafe.Pointer(C.CString(string(msg))), size) != 1 {
			return 0, sslerr.Error()
		}
		return mlen, nil
	}
}