code: func (ks *KeyStore) SignHash(a accounts.Account, hash []byte) ([]byte, error) {
  	// Look up the key to sign with and abort if it cannot be found
  	ks.mu.RLock()
  	defer ks.mu.RUnlock()
  
  	unlockedKey, found := ks.unlocked[a.Address]
  	if !found {
  		return nil, ErrLocked
  	}
  	// Sign the hash using plain ECDSA operations
  	return crypto.Sign(hash, unlockedKey.PrivateKey)
  }
docs: // SignHash calculates a ECDSA signature for the given hash. The produced
  // signature is in the [R || S || V] format where V is 0 or 1.