Package cn.gmkit.sm9

Class SM9SignMasterKey

java.lang.Object
cn.gmkit.sm9.SM9SignMasterKey
All Implemented Interfaces:
AutoCloseable

public final class SM9SignMasterKey extends Object implements AutoCloseable
SM9 签名主密钥(由 KGC 持有)。

通过 generate() 生成包含私有部分的完整主密钥,用于派生用户签名私钥; 通过 importPublicMasterKeyPem(String) 仅导入公开主密钥,用于验签。 使用完毕后应调用 close() 释放 native 资源(推荐使用 try-with-resources)。

  • Method Details

    • generate

      public static SM9SignMasterKey generate()
      生成新的 SM9 签名主密钥(含私有部分)。
      Returns:
      签名主密钥
      Throws:
      SM9Exception - native 不可用或生成操作失败时抛出
    • extractKey

      public SM9SignKey extractKey(String id)
      为指定用户标识派生签名私钥。
      Parameters:
      id - 用户标识(ID)
      Returns:
      用户签名私钥
      Throws:
      SM9Exception - ID 为空、当前对象已关闭或 native 派生失败时抛出
    • exportEncryptedMasterKeyInfoPem

      public void exportEncryptedMasterKeyInfoPem(String password, String file)
      将主密钥(含私有部分)以口令加密导出为 PEM 文件。
      Parameters:
      password - 加密口令
      file - 输出文件路径
      Throws:
      SM9Exception - 口令/路径为空、对象已关闭或 native 写入失败时抛出
    • importEncryptedMasterKeyInfoPem

      public static SM9SignMasterKey importEncryptedMasterKeyInfoPem(String password, String file)
      从加密 PEM 文件导入主密钥(含私有部分)。
      Parameters:
      password - 解密口令
      file - PEM 文件路径
      Returns:
      签名主密钥
      Throws:
      SM9Exception - native 不可用、参数无效、口令错误或 PEM 读取失败时抛出
    • exportPublicMasterKeyPem

      public void exportPublicMasterKeyPem(String file)
      将公开主密钥导出为 PEM 文件(用于分发给验签方)。
      Parameters:
      file - 输出文件路径
      Throws:
      SM9Exception - 路径为空、对象已关闭或 native 写入失败时抛出
    • importPublicMasterKeyPem

      public static SM9SignMasterKey importPublicMasterKeyPem(String file)
      从 PEM 文件导入公开主密钥(仅含公开部分,用于验签)。
      Parameters:
      file - PEM 文件路径
      Returns:
      仅含公开部分的签名主密钥
      Throws:
      SM9Exception - native 不可用、路径无效或 PEM 读取失败时抛出
    • close

      public void close()
      释放底层 native 资源。重复调用安全。
      Specified by:
      close in interface AutoCloseable