mirror of
				https://source.quilibrium.com/quilibrium/ceremonyclient.git
				synced 2025-11-04 10:37:27 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			39 lines
		
	
	
		
			935 B
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			39 lines
		
	
	
		
			935 B
		
	
	
	
		
			Go
		
	
	
	
	
	
//
 | 
						|
// Copyright Coinbase, Inc. All Rights Reserved.
 | 
						|
//
 | 
						|
// SPDX-License-Identifier: Apache-2.0
 | 
						|
//
 | 
						|
 | 
						|
package curves
 | 
						|
 | 
						|
import (
 | 
						|
	"crypto/ecdsa"
 | 
						|
	"math/big"
 | 
						|
)
 | 
						|
 | 
						|
// EcdsaVerify runs a curve- or algorithm-specific ECDSA verification function on input
 | 
						|
// an ECDSA public (verification) key, a message digest, and an ECDSA signature.
 | 
						|
// It must return true if all the parameters are sane and the ECDSA signature is valid,
 | 
						|
// and false otherwise
 | 
						|
type EcdsaVerify func(pubKey *EcPoint, hash []byte, signature *EcdsaSignature) bool
 | 
						|
 | 
						|
// EcdsaSignature represents a (composite) digital signature
 | 
						|
type EcdsaSignature struct {
 | 
						|
	V    int
 | 
						|
	R, S *big.Int
 | 
						|
}
 | 
						|
 | 
						|
// Static type assertion
 | 
						|
var _ EcdsaVerify = VerifyEcdsa
 | 
						|
 | 
						|
// Verifies ECDSA signature using core types.
 | 
						|
func VerifyEcdsa(pk *EcPoint, hash []byte, sig *EcdsaSignature) bool {
 | 
						|
	return ecdsa.Verify(
 | 
						|
		&ecdsa.PublicKey{
 | 
						|
			Curve: pk.Curve,
 | 
						|
			X:     pk.X,
 | 
						|
			Y:     pk.Y,
 | 
						|
		},
 | 
						|
		hash, sig.R, sig.S)
 | 
						|
}
 |