@public interested in your opinion on whether this is safe or not. I **think** it is but a double check would be good

It grabs the RSA struct from the `EVP_PKEY *`, which up-refs it, then registers it for gc. Since we call `assign` the refcount should be 1, but get1 will increment it to 2. Therefore if `RSA_free` is called first it will downref and return (leaving refcount at 1), while if EVP_PKEY is called first it will call `RSA_free` do the same and then the later gc call should free it.