summaryrefslogtreecommitdiffstats
path: root/lib/sha1.go
diff options
context:
space:
mode:
authorsiddharth <s@ricketyspace.net>2021-10-12 18:26:01 -0400
committersiddharth <s@ricketyspace.net>2021-10-12 18:26:01 -0400
commitfb7bbef174eee2ad5b5fc5f1bcd13487ba0d0f2e (patch)
treea3a5c9d6843f9dd9989757798f76c6a9fb96b6ff /lib/sha1.go
parent51436b8ec20da0f3468db83359b7326747be7ccc (diff)
lib: move around MDPadding
Diffstat (limited to 'lib/sha1.go')
-rw-r--r--lib/sha1.go84
1 files changed, 42 insertions, 42 deletions
diff --git a/lib/sha1.go b/lib/sha1.go
index 989c59b..891ba83 100644
--- a/lib/sha1.go
+++ b/lib/sha1.go
@@ -94,6 +94,48 @@ func sha1MessageSchedule(mb []uint32) []uint32 {
return w
}
+// Returns Merkle–Damgård padding in bytes for length of mesage `l`
+// bytes.
+func MDPadding(l int) []byte {
+ l = l * 8 // msg size in bits
+
+ // Reckon value of `k`
+ k := 0
+ for ((l + 1 + k) % 512) != 448 {
+ k += 1
+ }
+
+ // Initialize padding bytes
+ pbs := make([]byte, 0)
+
+ // Add bit `1` as byte block.
+ pbs = append(pbs, 0x80)
+ f := 7 // unclaimed bits in last byte of `pbs`
+
+ // Add `k` bit `0`s
+ for i := 0; i < k; i++ {
+ if f == 0 {
+ pbs = append(pbs, 0x0)
+ f = 8
+ }
+ f = f - 1
+ }
+
+ // Add `l` in a 64 bit block in `pbs`
+ l64 := uint64(l)
+ b64 := make([]byte, 8) // last 64-bits
+ for i := 7; i >= 0; i-- {
+ // Get 8 last bits.
+ b64[i] = byte(l64 & 0xFF)
+
+ // Get rid of the last 8 bits.
+ l64 = l64 >> 8
+ }
+ pbs = append(pbs, b64...)
+
+ return pbs
+}
+
func (s *Sha1) Init(hvs []uint32) {
// Set Initial Hash Values.
h := make([]uint32, 5)
@@ -194,45 +236,3 @@ func (s *Sha1) MacVerify(secret, msg, mac []byte) bool {
}
return false
}
-
-// Returns Merkle–Damgård padding in bytes for length of mesage `l`
-// bytes.
-func MDPadding(l int) []byte {
- l = l * 8 // msg size in bits
-
- // Reckon value of `k`
- k := 0
- for ((l + 1 + k) % 512) != 448 {
- k += 1
- }
-
- // Initialize padding bytes
- pbs := make([]byte, 0)
-
- // Add bit `1` as byte block.
- pbs = append(pbs, 0x80)
- f := 7 // unclaimed bits in last byte of `pbs`
-
- // Add `k` bit `0`s
- for i := 0; i < k; i++ {
- if f == 0 {
- pbs = append(pbs, 0x0)
- f = 8
- }
- f = f - 1
- }
-
- // Add `l` in a 64 bit block in `pbs`
- l64 := uint64(l)
- b64 := make([]byte, 8) // last 64-bits
- for i := 7; i >= 0; i-- {
- // Get 8 last bits.
- b64[i] = byte(l64 & 0xFF)
-
- // Get rid of the last 8 bits.
- l64 = l64 >> 8
- }
- pbs = append(pbs, b64...)
-
- return pbs
-}