func (h *sha512) Write(p []byte) (n int, err error) { l := len(p) if C.SHA512_Update(&h.ctx, unsafe.Pointer(&p[0]), C.size_t(l)) == 0 { panic("SHA512_Update failed") } return l, nil }
func (self *SHA512Hash) Write(msg []byte) (n int, err error) { size := C.size_t(len(msg)) if C.SHA512_Update(&self.sha, unsafe.Pointer(C.CString(string(msg))), size) != 1 { panic("problem updating hash") } return len(msg), nil }
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 } }