// Copyright 2015 The Vanadium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
package main

import (
	"encoding/base64"
	"fmt"
	"math/big"

	"v.io/x/ref/services/identity/internal/server"
)

func main() {
	signer, err := server.NewRestSigner()
	if err != nil {
		fmt.Printf("NewRestSigner error: %v\n", err)
		return
	}
	der, err := signer.PublicKey().MarshalBinary()
	if err != nil {
		fmt.Printf("Failed to marshal public key: %v\n", err)
		return
	}
	sig, err := signer.Sign([]byte("purpose"), []byte("message"))
	if err != nil {
		fmt.Printf("Sign error: %v\n", err)
		return
	}
	ok := sig.Verify(signer.PublicKey(), []byte("message"))
	fmt.Printf("PublicKey: %v\n", base64.URLEncoding.EncodeToString(der))
	fmt.Printf("R: %v\n", big.NewInt(0).SetBytes(sig.R))
	fmt.Printf("S: %v\n", big.NewInt(0).SetBytes(sig.S))
	fmt.Printf("Verified: %v\n", ok)
}
