GitHub Access Token became invalid

It seems like the GitHub access token used for retrieving details about this repository from GitHub became invalid. This might prevent certain types of inspections from being run (in particular, everything related to pull requests).
Please ask an admin of your repository to re-new the access token on this website.

credentials/utils/utils.go   A
last analyzed

Size/Duplication

Total Lines 151
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
cc 19
eloc 96
dl 0
loc 151
rs 10
c 0
b 0
f 0
1
package utils
2
3
import (
4
	"crypto"
5
	"crypto/hmac"
6
	"crypto/md5"
7
	"crypto/rand"
8
	"crypto/rsa"
9
	"crypto/sha1"
10
	"crypto/x509"
11
	"encoding/base64"
12
	"encoding/hex"
13
	"hash"
14
	"io"
15
	rand2 "math/rand"
16
	"net/url"
17
	"time"
18
)
19
20
type uuid [16]byte
21
22
const letterBytes = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
23
24
var hookRead = func(fn func(p []byte) (n int, err error)) func(p []byte) (n int, err error) {
25
	return fn
26
}
27
28
var hookRSA = func(fn func(rand io.Reader, priv *rsa.PrivateKey, hash crypto.Hash, hashed []byte) ([]byte, error)) func(rand io.Reader, priv *rsa.PrivateKey, hash crypto.Hash, hashed []byte) ([]byte, error) {
29
	return fn
30
}
31
32
// GetUUID returns a uuid
33
// Deprecated: it was used for internal
34
func GetUUID() (uuidHex string) {
35
	uuid := newUUID()
36
	uuidHex = hex.EncodeToString(uuid[:])
37
	return
38
}
39
40
// RandStringBytes returns a rand string
41
func RandStringBytes(n int) string {
42
	b := make([]byte, n)
43
	for i := range b {
44
		b[i] = letterBytes[rand2.Intn(len(letterBytes))]
45
	}
46
	return string(b)
47
}
48
49
// ShaHmac1 return a string which has been hashed
50
// Deprecated: it was used for internal
51
func ShaHmac1(source, secret string) string {
52
	key := []byte(secret)
53
	hmac := hmac.New(sha1.New, key)
54
	hmac.Write([]byte(source))
55
	signedBytes := hmac.Sum(nil)
56
	signedString := base64.StdEncoding.EncodeToString(signedBytes)
57
	return signedString
58
}
59
60
// Sha256WithRsa return a string which has been hashed with Rsa
61
// Deprecated: it was used for internal
62
func Sha256WithRsa(source, secret string) string {
63
	decodeString, err := base64.StdEncoding.DecodeString(secret)
64
	if err != nil {
65
		panic(err)
66
	}
67
	private, err := x509.ParsePKCS8PrivateKey(decodeString)
68
	if err != nil {
69
		panic(err)
70
	}
71
72
	h := crypto.Hash.New(crypto.SHA256)
73
	h.Write([]byte(source))
74
	hashed := h.Sum(nil)
75
	signature, err := hookRSA(rsa.SignPKCS1v15)(rand.Reader, private.(*rsa.PrivateKey),
76
		crypto.SHA256, hashed)
77
	if err != nil {
78
		panic(err)
79
	}
80
81
	return base64.StdEncoding.EncodeToString(signature)
82
}
83
84
// GetMD5Base64 returns a string which has been base64
85
// Deprecated: it was used for internal
86
func GetMD5Base64(bytes []byte) (base64Value string) {
87
	md5Ctx := md5.New()
88
	md5Ctx.Write(bytes)
89
	md5Value := md5Ctx.Sum(nil)
90
	base64Value = base64.StdEncoding.EncodeToString(md5Value)
91
	return
92
}
93
94
// GetTimeInFormatISO8601 returns a time string
95
// Deprecated: it was used for internal
96
func GetTimeInFormatISO8601() (timeStr string) {
97
	gmt := time.FixedZone("GMT", 0)
98
99
	return time.Now().In(gmt).Format("2006-01-02T15:04:05Z")
100
}
101
102
// GetURLFormedMap returns a url encoded string
103
// Deprecated: it was used for internal
104
func GetURLFormedMap(source map[string]string) (urlEncoded string) {
105
	urlEncoder := url.Values{}
106
	for key, value := range source {
107
		urlEncoder.Add(key, value)
108
	}
109
	urlEncoded = urlEncoder.Encode()
110
	return
111
}
112
113
func newUUID() uuid {
114
	ns := uuid{}
115
	safeRandom(ns[:])
116
	u := newFromHash(md5.New(), ns, RandStringBytes(16))
117
	u[6] = (u[6] & 0x0f) | (byte(2) << 4)
118
	u[8] = (u[8]&(0xff>>2) | (0x02 << 6))
119
120
	return u
121
}
122
123
func newFromHash(h hash.Hash, ns uuid, name string) uuid {
124
	u := uuid{}
125
	h.Write(ns[:])
126
	h.Write([]byte(name))
127
	copy(u[:], h.Sum(nil))
128
129
	return u
130
}
131
132
func safeRandom(dest []byte) {
133
	if _, err := hookRead(rand.Read)(dest); err != nil {
134
		panic(err)
135
	}
136
}
137
138
func (u uuid) String() string {
139
	buf := make([]byte, 36)
140
141
	hex.Encode(buf[0:8], u[0:4])
142
	buf[8] = '-'
143
	hex.Encode(buf[9:13], u[4:6])
144
	buf[13] = '-'
145
	hex.Encode(buf[14:18], u[6:8])
146
	buf[18] = '-'
147
	hex.Encode(buf[19:23], u[8:10])
148
	buf[23] = '-'
149
	hex.Encode(buf[24:], u[10:])
150
151
	return string(buf)
152
}
153