|  |  | 
|  |  | 
|  |  | 
|  |  */ | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  */ | 
|  | package com.sun.org.apache.xml.internal.security.keys.keyresolver.implementations; | 
|  |  | 
|  | import java.security.PrivateKey; | 
|  | import java.security.PublicKey; | 
|  | import java.security.cert.X509Certificate; | 
|  | import javax.crypto.SecretKey; | 
|  | import com.sun.org.apache.xml.internal.security.keys.keyresolver.KeyResolverException; | 
|  | import com.sun.org.apache.xml.internal.security.keys.keyresolver.KeyResolverSpi; | 
|  | import com.sun.org.apache.xml.internal.security.keys.storage.StorageResolver; | 
|  | import com.sun.org.apache.xml.internal.security.utils.Constants; | 
|  | import com.sun.org.apache.xml.internal.security.utils.XMLUtils; | 
|  | import org.w3c.dom.Element; | 
|  |  | 
|  |  | 
|  |  | 
|  |  */ | 
|  | public class SingleKeyResolver extends KeyResolverSpi { | 
|  |     private static final com.sun.org.slf4j.internal.Logger LOG = | 
|  |         com.sun.org.slf4j.internal.LoggerFactory.getLogger(SingleKeyResolver.class); | 
|  |  | 
|  |     private String keyName; | 
|  |     private PublicKey publicKey; | 
|  |     private PrivateKey privateKey; | 
|  |     private SecretKey secretKey; | 
|  |  | 
|  |      | 
|  |  | 
|  |  | 
|  |  | 
|  |      */ | 
|  |     public SingleKeyResolver(String keyName, PublicKey publicKey) { | 
|  |         this.keyName = keyName; | 
|  |         this.publicKey = publicKey; | 
|  |     } | 
|  |  | 
|  |      | 
|  |  | 
|  |  | 
|  |  | 
|  |      */ | 
|  |     public SingleKeyResolver(String keyName, PrivateKey privateKey) { | 
|  |         this.keyName = keyName; | 
|  |         this.privateKey = privateKey; | 
|  |     } | 
|  |  | 
|  |      | 
|  |  | 
|  |  | 
|  |  | 
|  |      */ | 
|  |     public SingleKeyResolver(String keyName, SecretKey secretKey) { | 
|  |         this.keyName = keyName; | 
|  |         this.secretKey = secretKey; | 
|  |     } | 
|  |  | 
|  |      | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |      */ | 
|  |     public boolean engineCanResolve(Element element, String baseURI, StorageResolver storage) { | 
|  |         return XMLUtils.elementIsInSignatureSpace(element, Constants._TAG_KEYNAME); | 
|  |     } | 
|  |  | 
|  |      | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |      */ | 
|  |     public PublicKey engineLookupAndResolvePublicKey( | 
|  |         Element element, String baseURI, StorageResolver storage | 
|  |     ) throws KeyResolverException { | 
|  |         LOG.debug("Can I resolve {}?", element.getTagName()); | 
|  |  | 
|  |         if (publicKey != null | 
|  |             && XMLUtils.elementIsInSignatureSpace(element, Constants._TAG_KEYNAME)) { | 
|  |             String name = element.getFirstChild().getNodeValue(); | 
|  |             if (keyName.equals(name)) { | 
|  |                 return publicKey; | 
|  |             } | 
|  |         } | 
|  |  | 
|  |         LOG.debug("I can't"); | 
|  |         return null; | 
|  |     } | 
|  |  | 
|  |      | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |      */ | 
|  |     public X509Certificate engineLookupResolveX509Certificate( | 
|  |         Element element, String baseURI, StorageResolver storage | 
|  |     ) throws KeyResolverException { | 
|  |         return null; | 
|  |     } | 
|  |  | 
|  |      | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |      */ | 
|  |     public SecretKey engineResolveSecretKey( | 
|  |         Element element, String baseURI, StorageResolver storage | 
|  |     ) throws KeyResolverException { | 
|  |         LOG.debug("Can I resolve {}?", element.getTagName()); | 
|  |  | 
|  |         if (secretKey != null | 
|  |             && XMLUtils.elementIsInSignatureSpace(element, Constants._TAG_KEYNAME)) { | 
|  |             String name = element.getFirstChild().getNodeValue(); | 
|  |             if (keyName.equals(name)) { | 
|  |                 return secretKey; | 
|  |             } | 
|  |         } | 
|  |  | 
|  |         LOG.debug("I can't"); | 
|  |         return null; | 
|  |     } | 
|  |  | 
|  |      | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |      */ | 
|  |     public PrivateKey engineLookupAndResolvePrivateKey( | 
|  |         Element element, String baseURI, StorageResolver storage | 
|  |     ) throws KeyResolverException { | 
|  |         LOG.debug("Can I resolve {}?", element.getTagName()); | 
|  |  | 
|  |         if (privateKey != null | 
|  |             && XMLUtils.elementIsInSignatureSpace(element, Constants._TAG_KEYNAME)) { | 
|  |             String name = element.getFirstChild().getNodeValue(); | 
|  |             if (keyName.equals(name)) { | 
|  |                 return privateKey; | 
|  |             } | 
|  |         } | 
|  |  | 
|  |         LOG.debug("I can't"); | 
|  |         return null; | 
|  |     } | 
|  | } |