Package org.bouncycastle.crypto.bls
package org.bouncycastle.crypto.bls
BLS signatures over the BLS12-381 curve, per draft-irtf-cfrg-bls-signature.
The three ciphersuite variants are provided as static-API classes —
BLS12_381BasicScheme,
BLS12_381MessageAugmentation and
BLS12_381ProofOfPossession — with a BC-conventional
signer / key-pair generator surface alongside in org.bouncycastle.crypto.signers
(BLSSigner) and org.bouncycastle.crypto.generators (BLSKeyPairGenerator).
Keys and signatures use the compressed Zcash point encoding (48-byte G1 public keys,
96-byte G2 signatures).
-
ClassesClassDescriptionHelper for aggregating BLS12-381 signatures and verifying aggregates.BLS signatures BasicScheme over BLS12-381, per draft-irtf-cfrg-bls-signature (variant: public keys in G1, signatures in G2; suite
BLS_SIG_BLS12381G2_XMD:SHA-256_SSWU_RO_NUL_).Curve parameters for BLS12-381 G1, the prime-order subgroup ofE(Fp)defined byy^2 = x^3 + 4overFp, as standardised in draft-irtf-cfrg-bls-signature and RFC 9380 sec.Curve parameters for BLS12-381 G2, the prime-order subgroup ofE(Fp^2)defined byy^2 = x^3 + 4 * (1 + I)over Fp^2.Implementation of the BLS12381G2_XMD:SHA-256_SSWU_RO_ hash-to-curve suite (RFC 9380 sec.Affine point on the BLS12-381 G2 curveE: y^2 = x^3 + 4*(1+I)over Fp^2.BLS signatures MessageAugmentation suite over BLS12-381, per draft-irtf-cfrg-bls-signature: signature suiteBLS_SIG_BLS12381G2_XMD:SHA-256_SSWU_RO_AUG_.Optimal ate pairing on BLS12-381: a bilinear, non-degenerate mape: G1 x G2 -> GTwhere GT is the order-r subgroup of Fp^12 ^*.BLS signatures ProofOfPossession suite over BLS12-381, per draft-irtf-cfrg-bls-signature: signature suiteBLS_SIG_BLS12381G2_XMD:SHA-256_SSWU_RO_POP_together with a separate proof-of-possession message that uses theBLS_POP_BLS12381G2_XMD:SHA-256_SSWU_RO_POP_DST.Zcash-format compressed point serialization for BLS12-381 G1 and G2, matching the encoding used by Zcash, Eth2, Filecoin, and the IETF pairing-friendly-curves draft.Fast subgroup-membership tests for BLS12-381 G1 and G2, replacing the naive[r] * P == 0scalar multiplication (255-bit).Immutable element ofFp^12 = Fp^6[w] / (w^2 - v), the outer level of the BLS12-381 pairing field tower.Immutable element ofFp^2 = Fp[I] / (I^2 + 1), used as the base field of BLS12-381 G2.Immutable element ofFp^6 = Fp^2[v] / (v^3 - (1 + I)), the cubic extension ofFp2Elementused as the inner level of the BLS12-381 pairing field tower.