Class DefaultKemAlgorithmIdentifierFinder

  • All Implemented Interfaces:
    AlgorithmIdentifierFinder, KemAlgorithmIdentifierFinder

    public class DefaultKemAlgorithmIdentifierFinder
    extends java.lang.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.

    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      org.bouncycastle.asn1.x509.AlgorithmIdentifier find​(java.lang.String kemAlgName)
      Find the KEM algorithm identifier that matches with the passed in KEM algorithm name.
      boolean hasAlgorithm​(java.lang.String kemAlgName)
      Return true if a KEM algorithm of the passed in name is recognised, false otherwise.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • DefaultKemAlgorithmIdentifierFinder

        public DefaultKemAlgorithmIdentifierFinder()
    • Method Detail

      • hasAlgorithm

        public boolean hasAlgorithm​(java.lang.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​(java.lang.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.