Interface SM9EncMasterPublicKey

  • All Superinterfaces:
    java.security.Key, java.security.PublicKey, java.io.Serializable

    public interface SM9EncMasterPublicKey
    extends java.security.PublicKey
    Interface for an SM9 (GM/T 0044) encryption master public key, the published root of the identity-based scheme.
    • Field Summary

      Fields 
      Modifier and Type Field Description
      static byte HID
      The encryption private-key generation function identifier hid, 0x03 - the value the GM/T 0044.5-2016 Annex C/D worked examples publish for KEM and public-key encryption. hid is not fixed by the standard: GM/T 0044.3-2016 defines it as the "identifier of the encryption private key generating function, denoted by one byte", chosen and published by the KGC.
      static byte HID_EXCHANGE
      The key-exchange private-key generation function identifier hid, 0x02, as published by the Chinese edition of the GM/T 0044.5-2016 Annex B worked example (the official English edition of the same annex chose 0x03 - the KGC's published choice governs).
      • Fields inherited from interface java.security.PublicKey

        serialVersionUID
    • Method Summary

      All Methods Instance Methods Abstract Methods 
      Modifier and Type Method Description
      java.security.PublicKey getExchangeEphemeral​(byte[] encoded)
      Wrap a peer's key-exchange ephemeral value R, as received, for the final doPhase of KeyAgreement.SM9 - the encoding is the standard's 64-byte x || y form returned by the first doPhase on the peer's side.
      java.security.PublicKey getUserPublicKey​(byte[] identity)
      Return the public key of the user identified by identity: the key a sender encapsulates to.
      java.security.PublicKey getUserPublicKey​(byte[] identity, byte hid)
      Return the public key of the user identified by identity under an explicit hid - 0x03 for KEM / public-key encryption, 0x02 for key exchange; the KGC's published choice governs.
      • Methods inherited from interface java.security.Key

        getAlgorithm, getEncoded, getFormat
    • Field Detail

      • HID

        static final byte HID
        The encryption private-key generation function identifier hid, 0x03 - the value the GM/T 0044.5-2016 Annex C/D worked examples publish for KEM and public-key encryption. hid is not fixed by the standard: GM/T 0044.3-2016 defines it as the "identifier of the encryption private key generating function, denoted by one byte", chosen and published by the KGC. These are the two values the published GM/T 0044 examples use.
        See Also:
        Constant Field Values
      • HID_EXCHANGE

        static final byte HID_EXCHANGE
        The key-exchange private-key generation function identifier hid, 0x02, as published by the Chinese edition of the GM/T 0044.5-2016 Annex B worked example (the official English edition of the same annex chose 0x03 - the KGC's published choice governs).
        See Also:
        Constant Field Values
    • Method Detail

      • getUserPublicKey

        java.security.PublicKey getUserPublicKey​(byte[] identity)
        Return the public key of the user identified by identity: the key a sender encapsulates to. It is derived from the master public key and the identity alone, so any sender holding the published master public key can construct it - no certificate or KGC interaction is needed.
        Parameters:
        identity - the user's identity.
        Returns:
        the user's public key.
      • getUserPublicKey

        java.security.PublicKey getUserPublicKey​(byte[] identity,
                                                 byte hid)
        Return the public key of the user identified by identity under an explicit hid - 0x03 for KEM / public-key encryption, 0x02 for key exchange; the KGC's published choice governs.
        Parameters:
        identity - the user's identity.
        hid - the private-key generation function identifier the KGC chose.
        Returns:
        the user's public key.
      • getExchangeEphemeral

        java.security.PublicKey getExchangeEphemeral​(byte[] encoded)
        Wrap a peer's key-exchange ephemeral value R, as received, for the final doPhase of KeyAgreement.SM9 - the encoding is the standard's 64-byte x || y form returned by the first doPhase on the peer's side. A value that is not a point of G1, or is the point at infinity, is rejected here rather than reaching the pairing.
        Parameters:
        encoded - the peer's ephemeral value R, 64 bytes.
        Returns:
        the peer's ephemeral value, to pass to doPhase.