mirror of
https://github.com/go-gitea/gitea.git
synced 2024-12-04 14:46:57 -05:00
86e2789960
* update github.com/PuerkitoBio/goquery * update github.com/alecthomas/chroma * update github.com/blevesearch/bleve/v2 * update github.com/caddyserver/certmagic * update github.com/go-enry/go-enry/v2 * update github.com/go-git/go-billy/v5 * update github.com/go-git/go-git/v5 * update github.com/go-redis/redis/v8 * update github.com/go-testfixtures/testfixtures/v3 * update github.com/jaytaylor/html2text * update github.com/json-iterator/go * update github.com/klauspost/compress * update github.com/markbates/goth * update github.com/mattn/go-isatty * update github.com/mholt/archiver/v3 * update github.com/microcosm-cc/bluemonday * update github.com/minio/minio-go/v7 * update github.com/prometheus/client_golang * update github.com/unrolled/render * update github.com/xanzy/go-gitlab * update github.com/yuin/goldmark * update github.com/yuin/goldmark-highlighting Co-authored-by: techknowlogick <techknowlogick@gitea.io>
118 lines
2.6 KiB
Go
Vendored
118 lines
2.6 KiB
Go
Vendored
package ecc
|
|
|
|
import (
|
|
"github.com/ProtonMail/go-crypto/openpgp/internal/encoding"
|
|
"crypto/elliptic"
|
|
"bytes"
|
|
"github.com/ProtonMail/go-crypto/bitcurves"
|
|
"github.com/ProtonMail/go-crypto/brainpool"
|
|
)
|
|
|
|
type SignatureAlgorithm uint8
|
|
|
|
const (
|
|
ECDSA SignatureAlgorithm = 1
|
|
EdDSA SignatureAlgorithm = 2
|
|
)
|
|
|
|
type CurveInfo struct {
|
|
Name string
|
|
Oid *encoding.OID
|
|
Curve elliptic.Curve
|
|
SigAlgorithm SignatureAlgorithm
|
|
CurveType CurveType
|
|
}
|
|
|
|
var curves = []CurveInfo{
|
|
{
|
|
Name: "NIST curve P-256",
|
|
Oid: encoding.NewOID([]byte{0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x03, 0x01, 0x07}),
|
|
Curve: elliptic.P256(),
|
|
CurveType: NISTCurve,
|
|
SigAlgorithm: ECDSA,
|
|
},
|
|
{
|
|
Name: "NIST curve P-384",
|
|
Oid: encoding.NewOID([]byte{0x2B, 0x81, 0x04, 0x00, 0x22}),
|
|
Curve: elliptic.P384(),
|
|
CurveType: NISTCurve,
|
|
SigAlgorithm: ECDSA,
|
|
},
|
|
{
|
|
Name: "NIST curve P-521",
|
|
Oid: encoding.NewOID([]byte{0x2B, 0x81, 0x04, 0x00, 0x23}),
|
|
Curve: elliptic.P521(),
|
|
CurveType: NISTCurve,
|
|
SigAlgorithm: ECDSA,
|
|
},
|
|
{
|
|
Name: "SecP256k1",
|
|
Oid: encoding.NewOID([]byte{0x2B, 0x81, 0x04, 0x00, 0x0A}),
|
|
Curve: bitcurves.S256(),
|
|
CurveType: BitCurve,
|
|
SigAlgorithm: ECDSA,
|
|
},
|
|
{
|
|
Name: "Curve25519",
|
|
Oid: encoding.NewOID([]byte{0x2B, 0x06, 0x01, 0x04, 0x01, 0x97, 0x55, 0x01, 0x05, 0x01}),
|
|
Curve: elliptic.P256(),// filler
|
|
CurveType: Curve25519,
|
|
SigAlgorithm: ECDSA,
|
|
},
|
|
{
|
|
Name: "Ed25519",
|
|
Oid: encoding.NewOID([]byte{0x2B, 0x06, 0x01, 0x04, 0x01, 0xDA, 0x47, 0x0F, 0x01}),
|
|
Curve: elliptic.P256(), // filler
|
|
CurveType: NISTCurve,
|
|
SigAlgorithm: EdDSA,
|
|
},
|
|
{
|
|
Name: "Brainpool P256r1",
|
|
Oid: encoding.NewOID([]byte{0x2B, 0x24, 0x03, 0x03, 0x02, 0x08, 0x01, 0x01, 0x07}),
|
|
Curve: brainpool.P256r1(),
|
|
CurveType: BrainpoolCurve,
|
|
SigAlgorithm: ECDSA,
|
|
},
|
|
{
|
|
Name: "BrainpoolP384r1",
|
|
Oid: encoding.NewOID([]byte{0x2B, 0x24, 0x03, 0x03, 0x02, 0x08, 0x01, 0x01, 0x0B}),
|
|
Curve: brainpool.P384r1(),
|
|
CurveType: BrainpoolCurve,
|
|
SigAlgorithm: ECDSA,
|
|
},
|
|
{
|
|
Name: "BrainpoolP512r1",
|
|
Oid: encoding.NewOID([]byte{0x2B, 0x24, 0x03, 0x03, 0x02, 0x08, 0x01, 0x01, 0x0D}),
|
|
Curve: brainpool.P512r1(),
|
|
CurveType: BrainpoolCurve,
|
|
SigAlgorithm: ECDSA,
|
|
},
|
|
}
|
|
|
|
func FindByCurve(curve elliptic.Curve) *CurveInfo {
|
|
for _, curveInfo := range curves {
|
|
if curveInfo.Curve == curve {
|
|
return &curveInfo
|
|
}
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func FindByOid(oid encoding.Field) *CurveInfo {
|
|
var rawBytes = oid.Bytes()
|
|
for _, curveInfo := range curves {
|
|
if bytes.Equal(curveInfo.Oid.Bytes(), rawBytes) {
|
|
return &curveInfo
|
|
}
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func FindByName(name string) *CurveInfo {
|
|
for _, curveInfo := range curves {
|
|
if curveInfo.Name == name {
|
|
return &curveInfo
|
|
}
|
|
}
|
|
return nil
|
|
} |