diff --git a/key.go b/key.go
index c40edeb..6ebeba2 100644
--- a/key.go
+++ b/key.go
@@ -429,7 +429,9 @@ func GenerateRSAKey(bits int) (PrivateKey, error) {
 func GenerateRSAKeyWithExponent(bits int, exponent int) (PrivateKey, error) {
 	rsa := C.RSA_generate_key(C.int(bits), C.ulong(exponent), nil, nil)
 	if rsa == nil {
-		return nil, fmt.Errorf("failed to generate RSA key: %+v (%s)", C.ERR_get_error(), string(C.ERR_error_string()))
+		errorCode := C.ERR_get_error()
+		errorMsg := C.GoString(C.ERR_lib_error_string(errorCode))
+		return nil, fmt.Errorf("failed to generate RSA key: %+v (%s)", errorCode, errorMsg)
 	}
 	key := C.X_EVP_PKEY_new()
 	if key == nil {