Class BLSPublicKeyParameters
- All Implemented Interfaces:
CipherParameters
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 Summary
Constructors -
Method Summary
Methods inherited from class BLSKeyParameters
getParametersMethods inherited from class AsymmetricKeyParameter
isPrivate
-
Constructor Details
-
BLSPublicKeyParameters
-
-
Method Details
-
getPublicPoint
- Returns:
- the G1 public-key point.
-
getEncoded
public byte[] getEncoded()- Returns:
- the Zcash-format compressed G1 encoding (48 bytes), matching
the
point_to_pubkeyencoding used by Eth2 and IETF draft-irtf-cfrg-bls-signature.
-