diff options
author | Jonas Franz <info@jonasfranz.software> | 2019-03-08 17:42:50 +0100 |
---|---|---|
committer | techknowlogick <matti@mdranta.net> | 2019-03-08 11:42:50 -0500 |
commit | e777c6bdc6f12f9152335f8bfd66b956aedc9957 (patch) | |
tree | b79c9bc2d4f9402dcd15d993b088840e2fad8a54 /modules/secret | |
parent | 9d3732dfd512273992855097bba1e909f098db23 (diff) | |
download | gitea-e777c6bdc6f12f9152335f8bfd66b956aedc9957.tar.gz gitea-e777c6bdc6f12f9152335f8bfd66b956aedc9957.zip |
Integrate OAuth2 Provider (#5378)
Diffstat (limited to 'modules/secret')
-rw-r--r-- | modules/secret/secret.go | 33 | ||||
-rw-r--r-- | modules/secret/secret_test.go | 22 |
2 files changed, 55 insertions, 0 deletions
diff --git a/modules/secret/secret.go b/modules/secret/secret.go new file mode 100644 index 0000000000..d0e4deacb9 --- /dev/null +++ b/modules/secret/secret.go @@ -0,0 +1,33 @@ +// Copyright 2019 The Gitea Authors. All rights reserved. +// Use of this source code is governed by a MIT-style +// license that can be found in the LICENSE file. + +package secret + +import ( + "crypto/rand" + "encoding/base64" +) + +// New creats a new secret +func New() (string, error) { + return NewWithLength(32) +} + +// NewWithLength creates a new secret for a given length +func NewWithLength(length int64) (string, error) { + return randomString(length) +} + +func randomBytes(len int64) ([]byte, error) { + b := make([]byte, len) + if _, err := rand.Read(b); err != nil { + return nil, err + } + return b, nil +} + +func randomString(len int64) (string, error) { + b, err := randomBytes(len) + return base64.URLEncoding.EncodeToString(b), err +} diff --git a/modules/secret/secret_test.go b/modules/secret/secret_test.go new file mode 100644 index 0000000000..c47201f2d7 --- /dev/null +++ b/modules/secret/secret_test.go @@ -0,0 +1,22 @@ +// Copyright 2019 The Gitea Authors. All rights reserved. +// Use of this source code is governed by a MIT-style +// license that can be found in the LICENSE file. + +package secret + +import ( + "testing" + + "github.com/stretchr/testify/assert" +) + +func TestNew(t *testing.T) { + result, err := New() + assert.NoError(t, err) + assert.True(t, len(result) > 32) + + result2, err := New() + assert.NoError(t, err) + // check if secrets + assert.NotEqual(t, result, result2) +} |