mirror of
https://github.com/vlang/v.git
synced 2023-08-10 21:13:21 +03:00
sha512: make it work with the new parser
This commit is contained in:
parent
bc184a9f02
commit
324a48bc64
@ -126,7 +126,7 @@ pub fn cmp(a Number, b Number) int {
|
|||||||
return C.bignum_cmp(&a,&b)
|
return C.bignum_cmp(&a,&b)
|
||||||
}
|
}
|
||||||
pub fn (a Number) is_zero() bool {
|
pub fn (a Number) is_zero() bool {
|
||||||
return int(C.bignum_is_zero(&a)) != 0
|
return C.bignum_is_zero(&a) != 0
|
||||||
}
|
}
|
||||||
pub fn (a mut Number) inc() {
|
pub fn (a mut Number) inc() {
|
||||||
C.bignum_inc(a)
|
C.bignum_inc(a)
|
||||||
|
@ -27,7 +27,7 @@ pub const (
|
|||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
Chunk = 128
|
chunk = 128
|
||||||
init0 = 0x6a09e667f3bcc908
|
init0 = 0x6a09e667f3bcc908
|
||||||
init1 = 0xbb67ae8584caa73b
|
init1 = 0xbb67ae8584caa73b
|
||||||
init2 = 0x3c6ef372fe94f82b
|
init2 = 0x3c6ef372fe94f82b
|
||||||
@ -73,7 +73,7 @@ mut:
|
|||||||
|
|
||||||
fn (d mut Digest) reset() {
|
fn (d mut Digest) reset() {
|
||||||
d.h = [u64(0)].repeat(8)
|
d.h = [u64(0)].repeat(8)
|
||||||
d.x = [byte(0)].repeat(Chunk)
|
d.x = [byte(0)].repeat(chunk)
|
||||||
match d.function {
|
match d.function {
|
||||||
.sha384 {
|
.sha384 {
|
||||||
d.h[0] = init0_384
|
d.h[0] = init0_384
|
||||||
@ -155,7 +155,7 @@ fn (d mut Digest) write(p_ []byte) int {
|
|||||||
if d.nx > 0 {
|
if d.nx > 0 {
|
||||||
n := copy(d.x[d.nx..], p)
|
n := copy(d.x[d.nx..], p)
|
||||||
d.nx += n
|
d.nx += n
|
||||||
if d.nx == Chunk {
|
if d.nx == chunk{
|
||||||
block(mut d, d.x)
|
block(mut d, d.x)
|
||||||
d.nx = 0
|
d.nx = 0
|
||||||
}
|
}
|
||||||
@ -166,8 +166,8 @@ fn (d mut Digest) write(p_ []byte) int {
|
|||||||
p = p[n..]
|
p = p[n..]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if p.len >= Chunk {
|
if p.len >= chunk{
|
||||||
n := p.len & ~(Chunk - 1)
|
n := p.len & ~(chunk- 1)
|
||||||
block(mut d, p[..n])
|
block(mut d, p[..n])
|
||||||
if n >= p.len {
|
if n >= p.len {
|
||||||
p = []
|
p = []
|
||||||
|
@ -104,7 +104,7 @@ fn block_generic(dig mut Digest, p_ []byte) {
|
|||||||
mut h5 := dig.h[5]
|
mut h5 := dig.h[5]
|
||||||
mut h6 := dig.h[6]
|
mut h6 := dig.h[6]
|
||||||
mut h7 := dig.h[7]
|
mut h7 := dig.h[7]
|
||||||
for p.len >= Chunk {
|
for p.len >= chunk {
|
||||||
for i in 0..16 {
|
for i in 0..16 {
|
||||||
j := i * 8
|
j := i * 8
|
||||||
w[i] = (u64(p[j])<<56) | (u64(p[j + 1])<<48) | (u64(p[j + 2])<<40) | (u64(p[j + 3])<<32) | (u64(p[j + 4])<<24) | (u64(p[j + 5])<<16) | (u64(p[j + 6])<<8) | u64(p[j + 7])
|
w[i] = (u64(p[j])<<56) | (u64(p[j + 1])<<48) | (u64(p[j + 2])<<40) | (u64(p[j + 3])<<32) | (u64(p[j + 4])<<24) | (u64(p[j + 5])<<16) | (u64(p[j + 6])<<8) | u64(p[j + 7])
|
||||||
@ -144,11 +144,11 @@ fn block_generic(dig mut Digest, p_ []byte) {
|
|||||||
h5 += f
|
h5 += f
|
||||||
h6 += g
|
h6 += g
|
||||||
h7 += h
|
h7 += h
|
||||||
if Chunk >= p.len {
|
if chunk >= p.len {
|
||||||
p = []
|
p = []
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
p = p[Chunk..]
|
p = p[chunk..]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
dig.h[0] = h0
|
dig.h[0] = h0
|
||||||
|
Loading…
Reference in New Issue
Block a user