Class DefaultKemAlgorithmIdentifierFinder

java.lang.Object
org.bouncycastle.operator.DefaultKemAlgorithmIdentifierFinder
All Implemented Interfaces:
AlgorithmIdentifierFinder, KemAlgorithmIdentifierFinder

public class DefaultKemAlgorithmIdentifierFinder extends Object implements KemAlgorithmIdentifierFinder
Default implementation of KemAlgorithmIdentifierFinder, returning the AlgorithmIdentifier used to name a key encapsulation mechanism.

None of the KEMs named here take algorithm parameters - each parameter set has its own OID - so every identifier this returns has an absent parameters field, matching what the provider emits in a SubjectPublicKeyInfo for these algorithms. On the receiving side compare with AlgorithmIdentifier.areEquivalent(AlgorithmIdentifier, AlgorithmIdentifier) rather than equals, so that a peer spelling the same algorithm with an explicit NULL still matches.

Names are matched without regard to case and are the canonical ones the matching lightweight parameter class uses - MLKEMParameters.getName(), FrodoKEMParameters.getName(), CMCEParameters.getName() - which are also the names the BouncyCastle provider registers the algorithms under. Coverage is restricted to the standardised assignments: BouncyCastle's own pre-standard arcs for FrodoKEM and Classic McEliece are deliberately absent, as those parameters are to be phased out.

  • Constructor Details

    • DefaultKemAlgorithmIdentifierFinder

      public DefaultKemAlgorithmIdentifierFinder()
  • Method Details

    • hasAlgorithm

      public boolean hasAlgorithm(String kemAlgName)
      Description copied from interface: KemAlgorithmIdentifierFinder
      Return true if a KEM algorithm of the passed in name is recognised, false otherwise. Where this returns true KemAlgorithmIdentifierFinder.find(String) returns an identifier; where it returns false find throws, so this is the way to test for support without catching.
      Specified by:
      hasAlgorithm in interface KemAlgorithmIdentifierFinder
      Parameters:
      kemAlgName - the name of the KEM algorithm of interest.
      Returns:
      true if the name is recognised, false otherwise.
    • find

      public org.bouncycastle.asn1.x509.AlgorithmIdentifier find(String kemAlgName)
      Description copied from interface: KemAlgorithmIdentifierFinder
      Find the KEM algorithm identifier that matches with the passed in KEM algorithm name.
      Specified by:
      find in interface AlgorithmIdentifierFinder
      Specified by:
      find in interface KemAlgorithmIdentifierFinder
      Parameters:
      kemAlgName - the name of the KEM algorithm of interest.
      Returns:
      an algorithm identifier for the corresponding KEM.