用于将RSA公钥从JWK转换为PEM的高级算法

时间:2017-01-28 00:11:12

标签: algorithm nginx encryption lua rsa

我正在LUA中编写一个nginx模块,我发现了一个关于特定主题的非常稀疏的文档。我需要将以JWK格式存储的RSA公钥转换为PEM。我需要在LUA代码中几乎完全手动执行此操作(出于多种原因)。这意味着没有ASN.1库。

我甚至无法找到算法的高级/伪代码示例来转换它们。我理解基础知识(JWK是base64url编码模数和指数,PEM是相同的值DER编码并放入ASN.1序列然后base64编码w / ----- BEGIN PUBLIC KEY ----前缀/等等)。但是,我实际上无法实现它,因为ASN.1文档是......密集的。

有人可以向我提供实际位串打包的高级概述,以便生成公钥的正确PEM表示...假设我可以解压缩/ base64url解码数字并将它们存储在已经是二进制字符串。

我正在附加JWK格式的示例密钥以供参考:

    {
          "alg": "RS256",
          "e": "AQAB",
          "n": "iKqiD4cr7FZKm6f05K4r-GQOvjRqjOeFmOho9V7SAXYwCyJluaGBLVvDWO1XlduPLOrsG_Wgs67SOG5qeLPR8T1zDK4bfJAo1Tvbw
        YeTwVSfd_0mzRq8WaVc_2JtEK7J-4Z0MdVm_dJmcMHVfDziCRohSZthN__WM2NwGnbewWnla0wpEsU3QMZ05_OxvbBdQZaDUsNSx4
        6is29eCdYwhkAfFd_cFRq3DixLEYUsRwmOqwABwwDjBTNvgZOomrtD8BRFWSTlwsbrNZtJMYU33wuLO9ynFkZnY6qRKVHr3YToIrq
        NBXw0RWCheTouQ-snfAB6wcE2WDN3N5z760ejqQ",
      "kid": "U5R8cHbGw445Qbq8zVO1PcCpXL8yG6IcovVa3laCoxM",
      "kty": "RSA",
      "use": "sig"
    }

0 个答案:

没有答案