mirror of
https://github.com/XTLS/Xray-core.git
synced 2025-07-23 18:34:14 +00:00
42 lines
1,017 B
Go
42 lines
1,017 B
Go
package all
|
|
|
|
import (
|
|
"crypto/rand"
|
|
"encoding/base64"
|
|
"fmt"
|
|
|
|
"github.com/cloudflare/circl/sign/mldsa/mldsa65"
|
|
"github.com/xtls/xray-core/main/commands/base"
|
|
)
|
|
|
|
var cmdMLDSA65 = &base.Command{
|
|
UsageLine: `{{.Exec}} mldsa65 [-i "seed (base64.RawURLEncoding)"]`,
|
|
Short: `Generate key pair for ML-DSA-65 post-quantum signature`,
|
|
Long: `
|
|
Generate key pair for ML-DSA-65 post-quantum signature.
|
|
|
|
Random: {{.Exec}} mldsa65
|
|
|
|
From seed: {{.Exec}} mldsa65 -i "seed (base64.RawURLEncoding)"
|
|
`,
|
|
}
|
|
|
|
func init() {
|
|
cmdMLDSA65.Run = executeMLDSA65 // break init loop
|
|
}
|
|
|
|
var input_seed = cmdMLDSA65.Flag.String("i", "", "")
|
|
|
|
func executeMLDSA65(cmd *base.Command, args []string) {
|
|
var seed [32]byte
|
|
if len(*input_seed) > 0 {
|
|
s, _ := base64.RawURLEncoding.DecodeString(*input_seed)
|
|
seed = [32]byte(s)
|
|
} else {
|
|
rand.Read(seed[:])
|
|
}
|
|
pub, _ := mldsa65.NewKeyFromSeed(&seed)
|
|
fmt.Printf("Seed: %v\nVerify: %v",
|
|
base64.RawURLEncoding.EncodeToString(seed[:]),
|
|
base64.RawURLEncoding.EncodeToString(pub.Bytes()))
|
|
}
|