keyObject.export([options])


对于对称密钥,此函数分配一个包含密钥材料的 Buffer 并忽略任何选项。

对于非对称密钥,options 参数用于确定导出格式。

对于公钥,可以使用以下编码选项:

  • type: <string> 必须是 'pkcs1'(仅限 RSA)或 'spki' 之一。
  • format: <string> 必须是 'pem''der'

对于私钥,可以使用以下编码选项:

  • type: <string> 必须是 'pkcs1'(仅限 RSA)、'pkcs8''sec1'(仅限 EC)之一。
  • format: <string> 必须是 'pem''der'
  • cipher: <string> 如果指定,则私钥将使用给定的 cipherpassphrase 使用基于 PKCS#5 v2.0 密码的加密进行加密。
  • passphrase: <string> | <Buffer> 用于加密的密码,参见 cipher

选择 PEM 编码时,结果将是字符串,否则它将是包含编码为 DER 的数据的缓冲区。

PKCS#1、SEC1 和 PKCS#8 类型的密钥可以通过使用 cipherformat 选项的组合进行加密。 PKCS#8 type 可以与任何 format 一起使用,通过指定 cipher 来加密任何密钥算法(RSA、EC 或 DH)。 当使用 PEM format 时,PKCS#1 和 SEC1 只能通过指定 cipher 来加密。 为了获得最大的兼容性,对加密的私钥使用 PKCS#8。 由于 PKCS#8 定义了自己的加密机制,因此在加密 PKCS#8 密钥时不支持 PEM 级加密。 PKCS#8 加密参见 RFC 5208,PKCS#1 和 SEC1 加密参见 RFC 1421

For symmetric keys, this function allocates a Buffer containing the key material and ignores any options.

For asymmetric keys, the options parameter is used to determine the export format.

For public keys, the following encoding options can be used:

  • type: <string> Must be one of 'pkcs1' (RSA only) or 'spki'.
  • format: <string> Must be 'pem' or 'der'.

For private keys, the following encoding options can be used:

  • type: <string> Must be one of 'pkcs1' (RSA only), 'pkcs8' or 'sec1' (EC only).
  • format: <string> Must be 'pem' or 'der'.
  • cipher: <string> If specified, the private key will be encrypted with the given cipher and passphrase using PKCS#5 v2.0 password based encryption.
  • passphrase: <string> | <Buffer> The passphrase to use for encryption, see cipher.

When PEM encoding was selected, the result will be a string, otherwise it will be a buffer containing the data encoded as DER.

PKCS#1, SEC1, and PKCS#8 type keys can be encrypted by using a combination of the cipher and format options. The PKCS#8 type can be used with any format to encrypt any key algorithm (RSA, EC, or DH) by specifying a cipher. PKCS#1 and SEC1 can only be encrypted by specifying a cipher when the PEM format is used. For maximum compatibility, use PKCS#8 for encrypted private keys. Since PKCS#8 defines its own encryption mechanism, PEM-level encryption is not supported when encrypting a PKCS#8 key. See RFC 5208 for PKCS#8 encryption and RFC 1421 for PKCS#1 and SEC1 encryption.