/** * Method that handles {@code DecryptionKeyCallback}s. Called from {@code handleInternal()}. Default * implementation delegates to specific handling methods. * * @see #handlePrivateKeyRequest(com.sun.xml.wss.impl.callback.DecryptionKeyCallback, * com.sun.xml.wss.impl.callback.DecryptionKeyCallback.PrivateKeyRequest) * @see #handleSymmetricKeyRequest(com.sun.xml.wss.impl.callback.DecryptionKeyCallback, * com.sun.xml.wss.impl.callback.DecryptionKeyCallback.SymmetricKeyRequest) */ protected final void handleDecryptionKeyCallback(DecryptionKeyCallback callback) throws IOException, UnsupportedCallbackException { if (callback.getRequest() instanceof DecryptionKeyCallback.PrivateKeyRequest) { handlePrivateKeyRequest(callback, (DecryptionKeyCallback.PrivateKeyRequest) callback.getRequest()); } else if (callback.getRequest() instanceof DecryptionKeyCallback.SymmetricKeyRequest) { handleSymmetricKeyRequest(callback, (DecryptionKeyCallback.SymmetricKeyRequest) callback.getRequest()); } else { throw new UnsupportedCallbackException(callback); } }
if (cb.getRequest() instanceof DecryptionKeyCallback.X509SubjectKeyIdentifierBasedRequest) { DecryptionKeyCallback.X509SubjectKeyIdentifierBasedRequest request = (DecryptionKeyCallback.X509SubjectKeyIdentifierBasedRequest) cb.getRequest(); byte[] ski = request.getSubjectKeyIdentifier(); PrivateKey privKey = getPrivateKey(ski, cb.getRuntimeProperties()); request.setPrivateKey(privKey); } else if (cb.getRequest() instanceof DecryptionKeyCallback.X509IssuerSerialBasedRequest) { DecryptionKeyCallback.X509IssuerSerialBasedRequest request = (DecryptionKeyCallback.X509IssuerSerialBasedRequest) cb.getRequest(); String issuerName = request.getIssuerName(); BigInteger serialNumber = request.getSerialNumber(); PrivateKey privKey = getPrivateKey(issuerName, serialNumber, cb.getRuntimeProperties()); request.setPrivateKey(privKey); } else if (cb.getRequest() instanceof DecryptionKeyCallback.X509CertificateBasedRequest) { DecryptionKeyCallback.X509CertificateBasedRequest request = (DecryptionKeyCallback.X509CertificateBasedRequest) cb.getRequest(); X509Certificate cert = request.getX509Certificate(); PrivateKey privKey = getPrivateKey(cert, cb.getRuntimeProperties()); request.setPrivateKey(privKey); } else if (cb.getRequest() instanceof DecryptionKeyCallback.ThumbprintBasedRequest) { DecryptionKeyCallback.ThumbprintBasedRequest request = (DecryptionKeyCallback.ThumbprintBasedRequest) cb.getRequest(); byte[] ski = request.getThumbprintIdentifier(); PrivateKey privKey = getPrivateKeyForThumbprint(ski, cb.getRuntimeProperties()); request.setPrivateKey(privKey); } else if (cb.getRequest() instanceof DecryptionKeyCallback.PublicKeyBasedPrivKeyRequest) {
public PrivateKey getPrivateKey(Map context, X509Certificate cert) throws XWSSecurityException { PrivateKey privateKey = null; DecryptionKeyCallback.PrivateKeyRequest privateKeyRequest = new DecryptionKeyCallback.X509CertificateBasedRequest(cert); DecryptionKeyCallback decryptKeyCallback = new DecryptionKeyCallback(privateKeyRequest); // if (!isDefaultHandler) { ProcessingContext.copy(decryptKeyCallback.getRuntimeProperties(), context); // } Callback[] callbacks = new Callback[]{decryptKeyCallback}; try { callbackHandler.handle(callbacks); } catch (Exception e) { log.log(Level.SEVERE, "WSS0216.callbackhandler.handle.exception", new Object[]{"DecryptionKeyCallback.X509CertificateBasedRequest"}); log.log(Level.SEVERE, "WSS0217.callbackhandler.handle.exception.log", e); throw new XWSSecurityException(e); } privateKey = privateKeyRequest.getPrivateKey(); if (privateKey == null) { log.log(Level.SEVERE, "WSS0222.cannot.locate.privkey", new Object[]{"given certificate"}); throw new XWSSecurityException( "Could not retrieve private Key matching the given certificate"); } return privateKey; }
DecryptionKeyCallback decryptKeyCallback = new DecryptionKeyCallback(privKeyRequest); ProcessingContext.copy(decryptKeyCallback.getRuntimeProperties(), context);
/** * Method that handles {@code DecryptionKeyCallback}s. Called from {@code handleInternal()}. Default * implementation delegates to specific handling methods. * * @see #handlePrivateKeyRequest(com.sun.xml.wss.impl.callback.DecryptionKeyCallback, * com.sun.xml.wss.impl.callback.DecryptionKeyCallback.PrivateKeyRequest) * @see #handleSymmetricKeyRequest(com.sun.xml.wss.impl.callback.DecryptionKeyCallback, * com.sun.xml.wss.impl.callback.DecryptionKeyCallback.SymmetricKeyRequest) */ protected final void handleDecryptionKeyCallback(DecryptionKeyCallback callback) throws IOException, UnsupportedCallbackException { if (callback.getRequest() instanceof DecryptionKeyCallback.PrivateKeyRequest) { handlePrivateKeyRequest(callback, (DecryptionKeyCallback.PrivateKeyRequest) callback.getRequest()); } else if (callback.getRequest() instanceof DecryptionKeyCallback.SymmetricKeyRequest) { handleSymmetricKeyRequest(callback, (DecryptionKeyCallback.SymmetricKeyRequest) callback.getRequest()); } else { throw new UnsupportedCallbackException(callback); } }
DecryptionKeyCallback decryptKeyCallback = new DecryptionKeyCallback(privKeyRequest); ProcessingContext.copy(decryptKeyCallback.getRuntimeProperties(), context);
/** * Method that handles {@code DecryptionKeyCallback}s. Called from {@code handleInternal()}. Default * implementation delegates to specific handling methods. * * @see #handlePrivateKeyRequest(com.sun.xml.wss.impl.callback.DecryptionKeyCallback, * com.sun.xml.wss.impl.callback.DecryptionKeyCallback.PrivateKeyRequest) * @see #handleSymmetricKeyRequest(com.sun.xml.wss.impl.callback.DecryptionKeyCallback, * com.sun.xml.wss.impl.callback.DecryptionKeyCallback.SymmetricKeyRequest) */ protected final void handleDecryptionKeyCallback(DecryptionKeyCallback callback) throws IOException, UnsupportedCallbackException { if (callback.getRequest() instanceof DecryptionKeyCallback.PrivateKeyRequest) { handlePrivateKeyRequest(callback, (DecryptionKeyCallback.PrivateKeyRequest) callback.getRequest()); } else if (callback.getRequest() instanceof DecryptionKeyCallback.SymmetricKeyRequest) { handleSymmetricKeyRequest(callback, (DecryptionKeyCallback.SymmetricKeyRequest) callback.getRequest()); } else { throw new UnsupportedCallbackException(callback); } }
DecryptionKeyCallback decryptKeyCallback = new DecryptionKeyCallback(privKeyRequest); ProcessingContext.copy(decryptKeyCallback.getRuntimeProperties(), context);
DecryptionKeyCallback.PublicKeyBasedPrivKeyRequest req = new DecryptionKeyCallback.PublicKeyBasedPrivKeyRequest(publicKey); DecryptionKeyCallback dkc = new DecryptionKeyCallback(req); ProcessingContext.copy(dkc.getRuntimeProperties(), context);
DecryptionKeyCallback.SymmetricKeyRequest symmKeyRequest = new DecryptionKeyCallback.AliasSymmetricKeyRequest(alias); DecryptionKeyCallback decryptKeyCallback = new DecryptionKeyCallback(symmKeyRequest); if (!isDefaultHandler) { ProcessingContext.copy(decryptKeyCallback.getRuntimeProperties(), context);