Given a secret - how does one generate a reproducible private key from it? Let's say I have a secret "hitheremynameisbob"... I'd like to use this to encrypt/sign things. Is this possible or is it always expected to generate random secrets?
Yes, generating private keys from passphrases / passwords is possible.1

However, I strongly advise against basing your public key exclusively on your password and not proper (pseudo)randomness.

If you publish your public key, everybody will be able to brute-force your password which will allow for passive decryption (encryption keys), identity theft (signature keys) or impersonation (signature keys / password re-use).

So let's get into the technicalities.


What ever the methods say here. Always pre-process the password with the strongest password-based key deriviation function you can find (eg Argon2, you may have to turn the salt off for this).
If your preferred library has a plug-in architecture for the RNGs, you can just replace the RNG with a contruction which is deterministic in your password input. AES-CTR would be a good example here.
If not, your best bet is to restrict yourself to discrete-logarithm-based cryptography where the private key literally is just an integer, which you can get trivially from the transformed password. From there you use static group parameters and generate the public key on-the-fly as usual.


1: Bitmessage for example allows you to do that