code: func Verify(pubKeyPEM []byte, signature []byte, data io.Reader) error {
  	// Parse the public key
  	key, err := loadPublicKey(pubKeyPEM)
  	if err != nil {
  		return err
  	}
  
  	// Parse the signature
  	block, _ := pem.Decode(signature)
  	if block == nil || block.Bytes == nil {
  		return errors.New("unsupported signature format")
  	}
  
  	r, s, err := unmarshalSignature(block.Bytes)
  	if err != nil {
  		return err
  	}
  
  	// Compute the hash of the data
  	hash, err := hashReader(data)
  	if err != nil {
  		return err
  	}
  
  	// Verify the signature
  	if !ecdsa.Verify(key, hash, r, s) {
  		return errors.New("incorrect signature")
  	}
  
  	return nil
  }
docs: // Verify computes the hash of data and compares it to the signature using the
  // given public key. Returns nil if the signature is correct.