Class BLSPublicKeyParameters

All Implemented Interfaces:
CipherParameters

public class BLSPublicKeyParameters extends BLSKeyParameters
Public-key parameters for a BLS signature scheme. The underlying point lives on the suite-specific G1 curve (BLS12-381 G1 today; further BLS families add curves in the future).

Constructor invariant. Construction runs the full draft-irtf-cfrg-bls-signature sec. 2.5 KeyValidate (on-curve + prime-order subgroup + non-identity) on the supplied point and rejects anything that fails. Callers and downstream consumers can therefore rely on the type itself as the validation boundary — once an instance exists, the point is a valid BLS public key, and verify-time code (e.g. BLSSigner.verifySignature) does not need to redo the ~128-bit GLV-shortened subgroup-membership scalar multiplication on every call.

The validation cost is the same as a single verify call's previous pre-pairing keyValidate step, paid once at construction instead of N times for N verifies under the same key. Callers that deserialize public keys from untrusted bytes typically run decompressG1 immediately before constructing this object; that decompression does not subgroup check, so the constructor is the place where the prime-order check happens.

  • Constructor Details

    • BLSPublicKeyParameters

      public BLSPublicKeyParameters(BLSParameters params, ECPoint publicPoint)
  • Method Details

    • getPublicPoint

      public ECPoint getPublicPoint()
      Returns:
      the G1 public-key point.
    • getEncoded

      public byte[] getEncoded()
      Returns:
      the Zcash-format compressed G1 encoding (48 bytes), matching the point_to_pubkey encoding used by Eth2 and IETF draft-irtf-cfrg-bls-signature.