/**
 * Copyright (c) 2020, 2021 Oracle and/or its affiliates.  All rights reserved.
 * This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license.
 */ import { readFileSync } from "fs" ; import { parsePrivateKey } from "sshpk" ; param privateKeyPath param passphrasePath return interface RSAKeyPair { publicKey : string ; privateKey : string ; } export function loadPrivateKeyFromFile ( privateKeyPath , passphrasePath ? ) { try { let options = { } ; let passphraseFileContent ; const privateKeyFileContent = readFileSync ( privateKeyPath , "utf8" ) ; if ( passphrasePath ) { passphraseFileContent = readFileSync ( passphrasePath , "utf8" ) ; Object . assign ( options , { passphrase : passphraseFileContent } ) ; } const privateKey = parsePrivateKey ( privateKeyFileContent , "auto" , options ) ; const publicKey = privateKey . toPublic ( ) ; return { publicKey : publicKey . toString ( "pem" ) , privateKey : privateKey . toBuffer ( "pem" , { } ) . toString ( ) } ; } catch ( e ) { throw Error ( `Failed to read file contents, error: ${ e }` ) ; } }