57 lines · 1.3 KB · Go
RawDownload
// Copyright 2021 The Gitea Authors. All rights reserved.// SPDX-License-Identifier: MIT package util import (	"crypto"	"crypto/rand"	"crypto/rsa"	"crypto/sha256"	"crypto/x509"	"encoding/pem") // GenerateKeyPair generates a public and private keypairfunc GenerateKeyPair(bits int) (string, string, error) {	priv, _ := rsa.GenerateKey(rand.Reader, bits)	privPem := pemBlockForPriv(priv)	pubPem, err := pemBlockForPub(&priv.PublicKey)	if err != nil {		return "", "", err	}	return privPem, pubPem, nil} func pemBlockForPriv(priv *rsa.PrivateKey) string {	privBytes := pem.EncodeToMemory(&pem.Block{		Type:  "RSA PRIVATE KEY",		Bytes: x509.MarshalPKCS1PrivateKey(priv),	})	return string(privBytes)} func pemBlockForPub(pub *rsa.PublicKey) (string, error) {	pubASN1, err := x509.MarshalPKIXPublicKey(pub)	if err != nil {		return "", err	}	pubBytes := pem.EncodeToMemory(&pem.Block{		Type:  "PUBLIC KEY",		Bytes: pubASN1,	})	return string(pubBytes), nil} // CreatePublicKeyFingerprint creates a fingerprint of the given key.// The fingerprint is the sha256 sum of the PKIX structure of the key.func CreatePublicKeyFingerprint(key crypto.PublicKey) ([]byte, error) {	bytes, err := x509.MarshalPKIXPublicKey(key)	if err != nil {		return nil, err	} 	checksum := sha256.Sum256(bytes) 	return checksum[:], nil}

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t