1#' Generate Key pair 2#' 3#' The \code{keygen} functions generate a random private key. Use \code{as.list(key)$pubkey} 4#' to derive the corresponding public key. Use \link{write_pem} to save a private key 5#' to a file, optionally with a password. 6#' 7#' @export 8#' @rdname keygen 9#' @name keygen 10#' @useDynLib openssl R_keygen_rsa 11#' @param bits bitsize of the generated RSA/DSA key 12#' @param curve which NIST curve to use 13#' @examples # Generate keypair 14#' key <- rsa_keygen() 15#' pubkey <- as.list(key)$pubkey 16#' 17#' # Write/read the key with a passphrase 18#' write_pem(key, "id_rsa", password = "supersecret") 19#' read_key("id_rsa", password = "supersecret") 20#' unlink("id_rsa") 21rsa_keygen <- function(bits = 2048){ 22 key <- .Call(R_keygen_rsa, as.integer(bits)) 23 structure(key, class = c("key", "rsa")) 24} 25 26#' @export 27#' @rdname keygen 28#' @useDynLib openssl R_keygen_dsa 29dsa_keygen <- function(bits = 1024){ 30 key <- .Call(R_keygen_dsa, as.integer(bits)) 31 structure(key, class = c("key", "dsa")) 32} 33 34#' @export 35#' @rdname keygen 36#' @useDynLib openssl R_keygen_ecdsa 37ec_keygen <- function(curve = c("P-256", "P-384", "P-521")){ 38 key <- .Call(R_keygen_ecdsa, match.arg(curve)) 39 structure(key, class = c("key", "ecdsa")) 40} 41 42#' @export 43#' @rdname keygen 44#' @useDynLib openssl R_keygen_x25519 45x25519_keygen <- function(){ 46 key <- .Call(R_keygen_x25519) 47 structure(key, class = c("key", "x25519")) 48} 49 50#' @export 51#' @rdname keygen 52#' @useDynLib openssl R_keygen_ed25519 53ed25519_keygen <- function(){ 54 key <- .Call(R_keygen_ed25519) 55 structure(key, class = c("key", "ed25519")) 56} 57