mirror of
https://github.com/storytold/irsa-manager.git
synced 2026-10-09 00:09:43 +00:00
JWK
This commit is contained in:
@@ -8,11 +8,11 @@ import (
|
||||
)
|
||||
|
||||
type KeyPair struct {
|
||||
PublicKey []byte
|
||||
PrivateKey []byte
|
||||
publicKey []byte
|
||||
privateKey []byte
|
||||
}
|
||||
|
||||
func createKeyPair() (*KeyPair, error) {
|
||||
func CreateKeyPair() (*KeyPair, error) {
|
||||
privateKey, err := rsa.GenerateKey(rand.Reader, 2048)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
@@ -38,3 +38,11 @@ func createKeyPair() (*KeyPair, error) {
|
||||
pubPemBytes := pem.EncodeToMemory(&pubPem)
|
||||
return &KeyPair{pubPemBytes, privPemBytes}, nil
|
||||
}
|
||||
|
||||
func (k *KeyPair) PublicKey() []byte {
|
||||
return k.publicKey
|
||||
}
|
||||
|
||||
func (k *KeyPair) PrivateKey() []byte {
|
||||
return k.privateKey
|
||||
}
|
||||
|
||||
@@ -14,13 +14,13 @@ import (
|
||||
|
||||
func TestReadKey(t *testing.T) {
|
||||
t.Run("key pair check", func(t *testing.T) {
|
||||
keyPair, err := createKeyPair()
|
||||
keyPair, err := CreateKeyPair()
|
||||
assert.NoError(t, err)
|
||||
|
||||
message := []byte("test message")
|
||||
hashed := sha256.Sum256(message)
|
||||
|
||||
block, _ := pem.Decode(keyPair.PrivateKey)
|
||||
block, _ := pem.Decode(keyPair.PrivateKey())
|
||||
assert.NotNil(t, block, "failed to decode private key to PEM")
|
||||
|
||||
privateKey, err := x509.ParsePKCS1PrivateKey(block.Bytes)
|
||||
@@ -29,7 +29,7 @@ func TestReadKey(t *testing.T) {
|
||||
signature, err := rsa.SignPKCS1v15(rand.Reader, privateKey, crypto.SHA256, hashed[:])
|
||||
|
||||
assert.NoError(t, err, "failed to create signature")
|
||||
block, _ = pem.Decode(keyPair.PublicKey)
|
||||
block, _ = pem.Decode(keyPair.PublicKey())
|
||||
assert.NotNil(t, block, "failed to decode public key to PEM")
|
||||
|
||||
pubKey, err := x509.ParsePKIXPublicKey(block.Bytes)
|
||||
|
||||
@@ -1,17 +1,33 @@
|
||||
package oidc
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
|
||||
"github.com/kkb0318/irsa-manager/internal/selfhosted"
|
||||
)
|
||||
|
||||
type MyIdProvider struct {
|
||||
keyPair *selfhosted.KeyPair
|
||||
jwk *selfhosted.JWK
|
||||
}
|
||||
|
||||
func (p *MyIdProvider) Discovery() []byte {
|
||||
return []byte{}
|
||||
|
||||
return []byte{}
|
||||
}
|
||||
func (p *MyIdProvider) JWK() []byte {
|
||||
return []byte{}
|
||||
|
||||
func (p *MyIdProvider) JWK() ([]byte, error) {
|
||||
jsonData, err := json.MarshalIndent(p.jwk.GetKeys(), "", " ")
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("error marshalling JSON: %s", err.Error())
|
||||
}
|
||||
return jsonData, nil
|
||||
}
|
||||
|
||||
func (p *MyIdProvider) Endpoint() []byte {
|
||||
return []byte{}
|
||||
|
||||
return []byte{}
|
||||
}
|
||||
|
||||
func NewMyIdProvider(keyPair *selfhosted.KeyPair, jwk *selfhosted.JWK) *MyIdProvider {
|
||||
return &MyIdProvider{keyPair, jwk}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user