Class XMSS

java.lang.Object
org.bouncycastle.jcajce.provider.asymmetric.XMSS

public class XMSS extends Object
The XMSS and XMSS^MT (RFC 8391, SP 800-208) services of the BC provider. The BC provider has carried the key info converters for these algorithms for some time - so that a certificate or a PKCS#8 key naming one could be parsed - but the KeyFactory, KeyPairGenerator and Signature services were only in BCPQC. The service names and OID aliases registered here are the same as the BCPQC ones, and both providers drive the same SPI classes.

That makes this class a near copy of org.bouncycastle.pqc.jcajce.provider.XMSS, and the copy is deliberate: the two providers keep independent service tables, and the pair jcajce.provider.asymmetric.LMS / pqc.jcajce.provider.LMS - the sibling stateful scheme, promoted the same way - is the same file twice under two package names. A shared table between the two would be a shape this provider does not otherwise have.

The registerOid calls at the end also install the six key info converters that BouncyCastleProvider.loadPQCKeys() installs, which runs after this and so is the one whose entry survives - the same class either way. That overlap is not an XMSS accident either: jcajce.provider.asymmetric.NTRU registers the four NTRU OIDs that loadPQCKeys also registers. What registerOid adds over it is the Alg.Alias.KeyFactory and Alg.Alias.KeyPairGenerator entries for each OID, which loadPQCKeys does not write, so neither of the two is redundant in the other.

  • Constructor Details

    • XMSS

      public XMSS()