code: func (m *SigningMethodECDSA) Verify(signingString, signature string, key interface{}) error {
  	var err error
  
  	// Decode the signature
  	var sig []byte
  	if sig, err = DecodeSegment(signature); err != nil {
  		return err
  	}
  
  	// Get the key
  	var ecdsaKey *ecdsa.PublicKey
  	switch k := key.(type) {
  	case *ecdsa.PublicKey:
  		ecdsaKey = k
  	default:
  		return ErrInvalidKeyType
  	}
  
  	if len(sig) != 2*m.KeySize {
  		return ErrECDSAVerification
  	}
  
  	r := big.NewInt(0).SetBytes(sig[:m.KeySize])
  	s := big.NewInt(0).SetBytes(sig[m.KeySize:])
  
  	// Create hasher
  	if !m.Hash.Available() {
  		return ErrHashUnavailable
  	}
  	hasher := m.Hash.New()
  	hasher.Write([]byte(signingString))
  
  	// Verify the signature
  	if verifystatus := ecdsa.Verify(ecdsaKey, hasher.Sum(nil), r, s); verifystatus == true {
  		return nil
  	} else {
  		return ErrECDSAVerification
  	}
  }
docs: // Implements the Verify method from SigningMethod
  // For this verify method, key must be an ecdsa.PublicKey struct