crypto: make digest implement io.Writer (#8975)
parent
d81b6e7805
commit
bc0507590e
|
@ -52,7 +52,7 @@ pub fn new() &Digest {
|
|||
}
|
||||
|
||||
// write writes the contents of `p_` to the internal hash representation.
|
||||
pub fn (mut d Digest) write(p_ []byte) int {
|
||||
pub fn (mut d Digest) write(p_ []byte) ?int {
|
||||
unsafe {
|
||||
mut p := p_
|
||||
nn := p.len
|
||||
|
@ -110,7 +110,7 @@ pub fn (mut d Digest) checksum() []byte {
|
|||
tmp[0] = 0x80
|
||||
pad := ((55 - d.len) % 64) // calculate number of padding bytes
|
||||
binary.little_endian_put_u64(mut tmp[1 + pad..], d.len << 3) // append length in bits
|
||||
d.write(tmp[..1 + pad + 8])
|
||||
d.write(tmp[..1 + pad + 8]) or { panic(err) }
|
||||
// The previous write ensures that a whole number of
|
||||
// blocks (i.e. a multiple of 64 bytes) have been hashed.
|
||||
if d.nx != 0 {
|
||||
|
@ -127,7 +127,7 @@ pub fn (mut d Digest) checksum() []byte {
|
|||
// sum returns the MD5 checksum of the data.
|
||||
pub fn sum(data []byte) []byte {
|
||||
mut d := new()
|
||||
d.write(data)
|
||||
d.write(data) or { panic(err) }
|
||||
return d.checksum()
|
||||
}
|
||||
|
||||
|
|
|
@ -56,7 +56,7 @@ pub fn new() &Digest {
|
|||
|
||||
// write writes the contents of `p_` to the internal hash representation.
|
||||
[manualfree]
|
||||
pub fn (mut d Digest) write(p_ []byte) int {
|
||||
pub fn (mut d Digest) write(p_ []byte) ?int {
|
||||
nn := p_.len
|
||||
unsafe {
|
||||
mut p := p_
|
||||
|
@ -109,14 +109,14 @@ fn (mut d Digest) checksum() []byte {
|
|||
mut tmp := []byte{len: (64)}
|
||||
tmp[0] = 0x80
|
||||
if int(len) % 64 < 56 {
|
||||
d.write(tmp[..56 - int(len) % 64])
|
||||
d.write(tmp[..56 - int(len) % 64]) or { panic(err) }
|
||||
} else {
|
||||
d.write(tmp[..64 + 56 - int(len) % 64])
|
||||
d.write(tmp[..64 + 56 - int(len) % 64]) or { panic(err) }
|
||||
}
|
||||
// Length in bits.
|
||||
len <<= 3
|
||||
binary.big_endian_put_u64(mut tmp, len)
|
||||
d.write(tmp[..8])
|
||||
d.write(tmp[..8]) or { panic(err) }
|
||||
mut digest := []byte{len: (size)}
|
||||
binary.big_endian_put_u32(mut digest, d.h[0])
|
||||
binary.big_endian_put_u32(mut digest[4..], d.h[1])
|
||||
|
@ -129,7 +129,7 @@ fn (mut d Digest) checksum() []byte {
|
|||
// sum returns the SHA-1 checksum of the bytes passed in `data`.
|
||||
pub fn sum(data []byte) []byte {
|
||||
mut d := new()
|
||||
d.write(data)
|
||||
d.write(data) or { panic(err) }
|
||||
return d.checksum()
|
||||
}
|
||||
|
||||
|
|
|
@ -90,7 +90,7 @@ pub fn new224() &Digest {
|
|||
}
|
||||
|
||||
// write writes the contents of `p_` to the internal hash representation.
|
||||
fn (mut d Digest) write(p_ []byte) int {
|
||||
fn (mut d Digest) write(p_ []byte) ?int {
|
||||
unsafe {
|
||||
mut p := p_
|
||||
nn := p.len
|
||||
|
@ -147,14 +147,14 @@ fn (mut d Digest) checksum() []byte {
|
|||
mut tmp := []byte{len: (64)}
|
||||
tmp[0] = 0x80
|
||||
if int(len) % 64 < 56 {
|
||||
d.write(tmp[..56 - int(len) % 64])
|
||||
d.write(tmp[..56 - int(len) % 64]) or { panic(err) }
|
||||
} else {
|
||||
d.write(tmp[..64 + 56 - int(len) % 64])
|
||||
d.write(tmp[..64 + 56 - int(len) % 64]) or { panic(err) }
|
||||
}
|
||||
// Length in bits.
|
||||
len <<= u64(3)
|
||||
binary.big_endian_put_u64(mut tmp, len)
|
||||
d.write(tmp[..8])
|
||||
d.write(tmp[..8]) or { panic(err) }
|
||||
if d.nx != 0 {
|
||||
panic('d.nx != 0')
|
||||
}
|
||||
|
@ -181,14 +181,14 @@ pub fn sum(data []byte) []byte {
|
|||
// sum256 returns the SHA256 checksum of the data.
|
||||
pub fn sum256(data []byte) []byte {
|
||||
mut d := new()
|
||||
d.write(data)
|
||||
d.write(data) or { panic(err) }
|
||||
return d.checksum()
|
||||
}
|
||||
|
||||
// sum224 returns the SHA224 checksum of the data.
|
||||
pub fn sum224(data []byte) []byte {
|
||||
mut d := new224()
|
||||
d.write(data)
|
||||
d.write(data) or { panic(err) }
|
||||
sum := d.checksum()
|
||||
sum224 := []byte{len: (size224)}
|
||||
copy(sum224, sum[..size224])
|
||||
|
|
|
@ -149,7 +149,7 @@ fn new384() &Digest {
|
|||
}
|
||||
|
||||
// write writes the contents of `p_` to the internal hash representation.
|
||||
fn (mut d Digest) write(p_ []byte) int {
|
||||
fn (mut d Digest) write(p_ []byte) ?int {
|
||||
unsafe {
|
||||
mut p := p_
|
||||
nn := p.len
|
||||
|
@ -219,15 +219,15 @@ fn (mut d Digest) checksum() []byte {
|
|||
mut tmp := []byte{len: (128)}
|
||||
tmp[0] = 0x80
|
||||
if int(len) % 128 < 112 {
|
||||
d.write(tmp[..112 - int(len) % 128])
|
||||
d.write(tmp[..112 - int(len) % 128]) or { panic(err) }
|
||||
} else {
|
||||
d.write(tmp[..128 + 112 - int(len) % 128])
|
||||
d.write(tmp[..128 + 112 - int(len) % 128]) or { panic(err) }
|
||||
}
|
||||
// Length in bits.
|
||||
len <<= u64(3)
|
||||
binary.big_endian_put_u64(mut tmp, u64(0)) // upper 64 bits are always zero, because len variable has type u64
|
||||
binary.big_endian_put_u64(mut tmp[8..], len)
|
||||
d.write(tmp[..16])
|
||||
d.write(tmp[..16]) or { panic(err) }
|
||||
if d.nx != 0 {
|
||||
panic('d.nx != 0')
|
||||
}
|
||||
|
@ -248,14 +248,14 @@ fn (mut d Digest) checksum() []byte {
|
|||
// sum512 returns the SHA512 checksum of the data.
|
||||
pub fn sum512(data []byte) []byte {
|
||||
mut d := new_digest(.sha512)
|
||||
d.write(data)
|
||||
d.write(data) or { panic(err) }
|
||||
return d.checksum()
|
||||
}
|
||||
|
||||
// sum384 returns the SHA384 checksum of the data.
|
||||
pub fn sum384(data []byte) []byte {
|
||||
mut d := new_digest(.sha384)
|
||||
d.write(data)
|
||||
d.write(data) or { panic(err) }
|
||||
sum := d.checksum()
|
||||
sum384 := []byte{len: (size384)}
|
||||
copy(sum384, sum[..size384])
|
||||
|
@ -265,7 +265,7 @@ pub fn sum384(data []byte) []byte {
|
|||
// sum512_224 returns the Sum512/224 checksum of the data.
|
||||
pub fn sum512_224(data []byte) []byte {
|
||||
mut d := new_digest(.sha512_224)
|
||||
d.write(data)
|
||||
d.write(data) or { panic(err) }
|
||||
sum := d.checksum()
|
||||
sum224 := []byte{len: (size224)}
|
||||
copy(sum224, sum[..size224])
|
||||
|
@ -275,7 +275,7 @@ pub fn sum512_224(data []byte) []byte {
|
|||
// sum512_256 returns the Sum512/256 checksum of the data.
|
||||
pub fn sum512_256(data []byte) []byte {
|
||||
mut d := new_digest(.sha512_256)
|
||||
d.write(data)
|
||||
d.write(data) or { panic(err) }
|
||||
sum := d.checksum()
|
||||
sum256 := []byte{len: (size256)}
|
||||
copy(sum256, sum[..size256])
|
||||
|
|
Loading…
Reference in New Issue