Class AgreementMethodKeyInfoProvider

    • Field Detail

      • log

        private final org.slf4j.Logger log
        Logger.
    • Constructor Detail

      • AgreementMethodKeyInfoProvider

        public AgreementMethodKeyInfoProvider()
    • Method Detail

      • handles

        public boolean handles​(@Nonnull
                               XMLObject keyInfoChild)
        Evaluate whether the given provider should attempt to handle resolving a credential from the specified KeyInfo child. An evaluation of true does not guarantee that a credential can or will be extracted form the particular KeyInfo child, only that processing should be attempted.
        Parameters:
        keyInfoChild - the KeyInfo child object to consider
        Returns:
        true if the provider should attempt to resolve credentials, false otherwise
      • process

        @Nullable
        public Collection<Credential> process​(@Nonnull
                                              KeyInfoCredentialResolver resolver,
                                              @Nonnull
                                              XMLObject keyInfoChild,
                                              @Nullable
                                              CriteriaSet criteriaSet,
                                              @Nonnull
                                              KeyInfoResolutionContext kiContext)
                                       throws SecurityException
        Process a specified KeyInfo child (XMLobject) and attempt to resolve a credential from it.
        Parameters:
        resolver - reference to a resolver which is calling the provider
        keyInfoChild - the KeyInfo child being processed
        criteriaSet - the credential criteria the credential must satisfy
        kiContext - the resolution context, used for sharing state amongst resolvers and providers
        Returns:
        a resolved Credential collection, or null
        Throws:
        SecurityException - if there is an error during credential resolution. Note: failure to resolve a credential is not an error.
      • resolveKeyAlgorithm

        @Nonnull
        private String resolveKeyAlgorithm​(@Nonnull
                                           AgreementMethod agreementMethod)
                                    throws SecurityException
        Resolve the encryption algorithm URI to be used with the derived key.

        This comes from the AgreementMethod's grandparent's EncryptionMethod child element.

        Parameters:
        agreementMethod - the AgreementMethod to process
        Returns:
        the encryption algorithm URI
        Throws:
        SecurityException - if the algorithm URI can not be resolved
      • resolveOriginatorCredential

        @Nonnull
        private Credential resolveOriginatorCredential​(@Nonnull
                                                       AgreementMethod agreementMethod,
                                                       @Nonnull
                                                       KeyInfoCredentialResolver resolver)
                                                throws SecurityException
        Resolve the originator Credential from the OriginatorKeyInfo element.

        This will be the public key credential from the encrypting party.

        Parameters:
        agreementMethod - the AgreementMethod to process
        resolver - the KeyInfoCredentialResolver to use
        Returns:
        the originator credential
        Throws:
        SecurityException - if the originator credential can not be resolved
      • resolveRecipientCredential

        @Nonnull
        private Credential resolveRecipientCredential​(@Nonnull
                                                      AgreementMethod agreementMethod,
                                                      @Nonnull
                                                      KeyInfoCredentialResolver resolver)
                                               throws SecurityException
        Resolve the recipient Credential from the RecipientKeyInfo element.

        This will be the private key credential from the decrypting party (this party).

        Parameters:
        agreementMethod - the AgreementMethod to process
        resolver - the KeyInfoCredentialResolver to use
        Returns:
        the recipient credential
        Throws:
        SecurityException - if the recipient credential can not be resolved or does not contain a private key