Moving core classes to "common" module to cleanly separate core + jax-rs modules
Project: http://git-wip-us.apache.org/repos/asf/cxf/repo Commit: http://git-wip-us.apache.org/repos/asf/cxf/commit/f5bca059 Tree: http://git-wip-us.apache.org/repos/asf/cxf/tree/f5bca059 Diff: http://git-wip-us.apache.org/repos/asf/cxf/diff/f5bca059 Branch: refs/heads/master Commit: f5bca059c318d6943eb69a1b6c0600c11acef7ff Parents: 1e6c1d3 Author: Colm O hEigeartaigh <[email protected]> Authored: Tue Oct 13 11:32:00 2015 +0100 Committer: Colm O hEigeartaigh <[email protected]> Committed: Tue Oct 13 11:32:00 2015 +0100 ---------------------------------------------------------------------- .../rs/security/jose/AbstractJoseConsumer.java | 51 ----- .../rs/security/jose/AbstractJoseProducer.java | 51 ----- .../cxf/rs/security/jose/JoseConstants.java | 54 ----- .../cxf/rs/security/jose/JoseException.java | 33 --- .../cxf/rs/security/jose/JoseHeaders.java | 179 ----------------- .../apache/cxf/rs/security/jose/JoseType.java | 43 ---- .../apache/cxf/rs/security/jose/JoseUtils.java | 200 ------------------- .../jose/common/AbstractJoseConsumer.java | 51 +++++ .../jose/common/AbstractJoseProducer.java | 51 +++++ .../rs/security/jose/common/JoseConstants.java | 54 +++++ .../rs/security/jose/common/JoseException.java | 33 +++ .../rs/security/jose/common/JoseHeaders.java | 179 +++++++++++++++++ .../cxf/rs/security/jose/common/JoseType.java | 43 ++++ .../cxf/rs/security/jose/common/JoseUtils.java | 200 +++++++++++++++++++ .../jose/common/KeyManagementUtils.java | 2 - .../jose/jwe/AbstractJweDecryption.java | 2 +- .../jose/jwe/AbstractJweEncryption.java | 2 +- .../jwe/AesGcmWrapKeyDecryptionAlgorithm.java | 2 +- .../jose/jwe/EcdhDirectKeyJweDecryption.java | 2 +- .../security/jose/jwe/JweCompactConsumer.java | 4 +- .../security/jose/jwe/JweDecryptionOutput.java | 2 +- .../cxf/rs/security/jose/jwe/JweException.java | 2 +- .../cxf/rs/security/jose/jwe/JweHeaders.java | 6 +- .../rs/security/jose/jwe/JweJsonConsumer.java | 4 +- .../jose/jwe/JweJsonEncryptionEntry.java | 2 +- .../rs/security/jose/jwe/JweJsonProducer.java | 2 +- .../cxf/rs/security/jose/jwe/JweUtils.java | 6 +- .../PbesHmacAesWrapKeyDecryptionAlgorithm.java | 2 +- .../cxf/rs/security/jose/jwk/JsonWebKey.java | 2 +- .../cxf/rs/security/jose/jwk/JwkException.java | 2 +- .../cxf/rs/security/jose/jwk/JwkUtils.java | 6 +- .../jose/jws/HmacJwsSignatureVerifier.java | 2 +- .../security/jose/jws/JwsCompactConsumer.java | 2 +- .../cxf/rs/security/jose/jws/JwsException.java | 2 +- .../cxf/rs/security/jose/jws/JwsHeaders.java | 6 +- .../rs/security/jose/jws/JwsJsonConsumer.java | 2 +- .../rs/security/jose/jws/JwsJsonProducer.java | 4 +- .../jose/jws/JwsJsonSignatureEntry.java | 4 +- .../jose/jws/JwsJwtCompactProducer.java | 2 +- .../cxf/rs/security/jose/jws/JwsUtils.java | 6 +- .../jose/jwt/AbstractJoseJwtConsumer.java | 2 +- .../jose/jwt/AbstractJoseJwtProducer.java | 2 +- .../cxf/rs/security/jose/jwt/JwtException.java | 2 +- .../cxf/rs/security/jose/jwt/JwtToken.java | 2 +- .../jose/jws/JwsCompactReaderWriterTest.java | 6 +- .../jose/jaxrs/AbstractJwsWriterProvider.java | 4 +- .../jose/jaxrs/JweClientResponseFilter.java | 2 +- .../jose/jaxrs/JweContainerRequestFilter.java | 2 +- .../jose/jaxrs/JweWriterInterceptor.java | 2 +- .../jose/jaxrs/JwsClientResponseFilter.java | 2 +- .../jose/jaxrs/JwsContainerRequestFilter.java | 2 +- .../jose/jaxrs/JwsJsonClientResponseFilter.java | 2 +- .../jaxrs/JwsJsonContainerRequestFilter.java | 2 +- .../jose/jaxrs/JwsJsonWriterInterceptor.java | 4 +- .../jose/jaxrs/JwsWriterInterceptor.java | 4 +- .../jaxrs/JwtAuthenticationClientFilter.java | 4 +- .../jose/jaxrs/JwtAuthenticationFilter.java | 4 +- 57 files changed, 674 insertions(+), 676 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cxf/blob/f5bca059/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/AbstractJoseConsumer.java ---------------------------------------------------------------------- diff --git a/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/AbstractJoseConsumer.java b/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/AbstractJoseConsumer.java deleted file mode 100644 index 98886ce..0000000 --- a/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/AbstractJoseConsumer.java +++ /dev/null @@ -1,51 +0,0 @@ -/** - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package org.apache.cxf.rs.security.jose; - -import org.apache.cxf.rs.security.jose.jwe.JweDecryptionProvider; -import org.apache.cxf.rs.security.jose.jwe.JweUtils; -import org.apache.cxf.rs.security.jose.jws.JwsSignatureVerifier; -import org.apache.cxf.rs.security.jose.jws.JwsUtils; - -public abstract class AbstractJoseConsumer { - private JweDecryptionProvider jweDecryptor; - private JwsSignatureVerifier jwsVerifier; - - public void setJweDecryptor(JweDecryptionProvider jweDecryptor) { - this.jweDecryptor = jweDecryptor; - } - - public void setJwsVerifier(JwsSignatureVerifier theJwsVerifier) { - this.jwsVerifier = theJwsVerifier; - } - - protected JweDecryptionProvider getInitializedDecryptionProvider() { - if (jweDecryptor != null) { - return jweDecryptor; - } - return JweUtils.loadDecryptionProvider(false); - } - protected JwsSignatureVerifier getInitializedSignatureVerifier() { - if (jwsVerifier != null) { - return jwsVerifier; - } - return JwsUtils.loadSignatureVerifier(false); - } - -} http://git-wip-us.apache.org/repos/asf/cxf/blob/f5bca059/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/AbstractJoseProducer.java ---------------------------------------------------------------------- diff --git a/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/AbstractJoseProducer.java b/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/AbstractJoseProducer.java deleted file mode 100644 index f506943..0000000 --- a/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/AbstractJoseProducer.java +++ /dev/null @@ -1,51 +0,0 @@ -/** - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package org.apache.cxf.rs.security.jose; - -import org.apache.cxf.rs.security.jose.jwe.JweEncryptionProvider; -import org.apache.cxf.rs.security.jose.jwe.JweUtils; -import org.apache.cxf.rs.security.jose.jws.JwsSignatureProvider; -import org.apache.cxf.rs.security.jose.jws.JwsUtils; - -public abstract class AbstractJoseProducer { - private JwsSignatureProvider sigProvider; - private JweEncryptionProvider encryptionProvider; - - protected JwsSignatureProvider getInitializedSignatureProvider() { - if (sigProvider != null) { - return sigProvider; - } - - return JwsUtils.loadSignatureProvider(false); - } - protected JweEncryptionProvider getInitializedEncryptionProvider() { - if (encryptionProvider != null) { - return encryptionProvider; - } - return JweUtils.loadEncryptionProvider(false); - } - - public void setEncryptionProvider(JweEncryptionProvider encryptionProvider) { - this.encryptionProvider = encryptionProvider; - } - - public void setSignatureProvider(JwsSignatureProvider signatureProvider) { - this.sigProvider = signatureProvider; - } -} http://git-wip-us.apache.org/repos/asf/cxf/blob/f5bca059/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/JoseConstants.java ---------------------------------------------------------------------- diff --git a/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/JoseConstants.java b/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/JoseConstants.java deleted file mode 100644 index 0c04791..0000000 --- a/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/JoseConstants.java +++ /dev/null @@ -1,54 +0,0 @@ -/** - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package org.apache.cxf.rs.security.jose; - -public final class JoseConstants { - public static final String HEADER_TYPE = "typ"; - public static final String HEADER_ALGORITHM = "alg"; - public static final String HEADER_CONTENT_TYPE = "cty"; - public static final String HEADER_CRITICAL = "crit"; - - public static final String HEADER_KEY_ID = "kid"; - public static final String HEADER_X509_URL = "x5u"; - public static final String HEADER_X509_CHAIN = "x5c"; - public static final String HEADER_X509_THUMBPRINT = "x5t"; - public static final String HEADER_X509_THUMBPRINT_SHA256 = "x5t#S256"; - public static final String HEADER_JSON_WEB_KEY = "jwk"; - public static final String HEADER_JSON_WEB_KEY_SET = "jku"; - - public static final String JWE_HEADER_KEY_ENC_ALGORITHM = HEADER_ALGORITHM; - public static final String JWE_HEADER_CONTENT_ENC_ALGORITHM = "enc"; - public static final String JWE_HEADER_ZIP_ALGORITHM = "zip"; - public static final String JWE_DEFLATE_ZIP_ALGORITHM = "DEF"; - - public static final String JWS_HEADER_B64_STATUS_HEADER = "b64"; - - public static final String TYPE_JWT = "JWT"; - public static final String TYPE_JOSE = "JOSE"; - public static final String TYPE_JOSE_JSON = "JOSE+JSON"; - public static final String MEDIA_TYPE_JOSE = "application/jose"; - public static final String MEDIA_TYPE_JOSE_JSON = "application/jose+json"; - - public static final String JOSE_CONTEXT_PROPERTY = "org.apache.cxf.jose.context"; - - private JoseConstants() { - - } -} http://git-wip-us.apache.org/repos/asf/cxf/blob/f5bca059/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/JoseException.java ---------------------------------------------------------------------- diff --git a/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/JoseException.java b/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/JoseException.java deleted file mode 100644 index a71a098..0000000 --- a/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/JoseException.java +++ /dev/null @@ -1,33 +0,0 @@ -/** - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package org.apache.cxf.rs.security.jose; - -public class JoseException extends RuntimeException { - - private static final long serialVersionUID = 4118589816228511524L; - public JoseException() { - - } - public JoseException(String error) { - super(error); - } - public JoseException(Throwable cause) { - super(cause); - } -} http://git-wip-us.apache.org/repos/asf/cxf/blob/f5bca059/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/JoseHeaders.java ---------------------------------------------------------------------- diff --git a/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/JoseHeaders.java b/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/JoseHeaders.java deleted file mode 100644 index add5408..0000000 --- a/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/JoseHeaders.java +++ /dev/null @@ -1,179 +0,0 @@ -/** - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package org.apache.cxf.rs.security.jose; - -import java.util.List; -import java.util.Map; - -import org.apache.cxf.helpers.CastUtils; -import org.apache.cxf.jaxrs.provider.json.JsonMapObject; -import org.apache.cxf.rs.security.jose.jwk.JsonWebKey; - -public abstract class JoseHeaders extends JsonMapObject { - public JoseHeaders() { - } - - public JoseHeaders(JoseType type) { - init(type); - } - - public JoseHeaders(JoseHeaders headers) { - this(headers.asMap()); - } - - public JoseHeaders(Map<String, Object> values) { - super(values); - } - private void init(JoseType type) { - setType(type); - } - public void setType(JoseType type) { - setHeader(JoseConstants.HEADER_TYPE, type.toString()); - } - - public JoseType getType() { - Object prop = getHeader(JoseConstants.HEADER_TYPE); - return prop == null ? null : JoseType.getType(prop.toString()); - } - - public void setContentType(String type) { - setHeader(JoseConstants.HEADER_CONTENT_TYPE, type); - } - - public String getContentType() { - return (String)getHeader(JoseConstants.HEADER_CONTENT_TYPE); - } - - public void setAlgorithm(String algo) { - setHeader(JoseConstants.HEADER_ALGORITHM, algo); - } - - public String getAlgorithm() { - Object prop = getHeader(JoseConstants.HEADER_ALGORITHM); - return prop == null ? null : prop.toString(); - } - - public void setKeyId(String kid) { - setHeader(JoseConstants.HEADER_KEY_ID, kid); - } - - public String getKeyId() { - return (String)getHeader(JoseConstants.HEADER_KEY_ID); - } - - public void setX509Url(String x509Url) { - setHeader(JoseConstants.HEADER_X509_URL, x509Url); - } - - public String getX509Url() { - return (String)getHeader(JoseConstants.HEADER_X509_URL); - } - - public void setX509Chain(List<String> x509Chain) { - setProperty(JoseConstants.HEADER_X509_CHAIN, x509Chain); - } - - public List<String> getX509Chain() { - return CastUtils.cast((List<?>)getProperty(JoseConstants.HEADER_X509_CHAIN)); - } - - public void setX509Thumbprint(String x509Thumbprint) { - setHeader(JoseConstants.HEADER_X509_THUMBPRINT, x509Thumbprint); - } - - public String getX509Thumbprint() { - return (String)getHeader(JoseConstants.HEADER_X509_THUMBPRINT); - } - - public void setX509ThumbprintSHA256(String x509Thumbprint) { - setHeader(JoseConstants.HEADER_X509_THUMBPRINT_SHA256, x509Thumbprint); - } - - public String getX509ThumbprintSHA256() { - return (String)getHeader(JoseConstants.HEADER_X509_THUMBPRINT_SHA256); - } - - public void setCritical(List<String> crit) { - setHeader(JoseConstants.HEADER_CRITICAL, crit); - } - - public List<String> getCritical() { - return CastUtils.cast((List<?>)getHeader(JoseConstants.HEADER_CRITICAL)); - } - - public void setJsonWebKey(JsonWebKey key) { - setJsonWebKey(JoseConstants.HEADER_JSON_WEB_KEY, key); - } - - public void setJsonWebKey(String headerName, JsonWebKey key) { - setHeader(headerName, key); - } - - public void setJsonWebKeysUrl(String url) { - setHeader(JoseConstants.HEADER_JSON_WEB_KEY_SET, url); - } - - public String getJsonWebKeysUrl() { - return (String)getHeader(JoseConstants.HEADER_JSON_WEB_KEY_SET); - } - - public JsonWebKey getJsonWebKey() { - return getJsonWebKey(JoseConstants.HEADER_JSON_WEB_KEY); - } - public JsonWebKey getJsonWebKey(String headerName) { - Object jsonWebKey = getHeader(headerName); - if (jsonWebKey == null || jsonWebKey instanceof JsonWebKey) { - return (JsonWebKey)jsonWebKey; - } - Map<String, Object> map = CastUtils.cast((Map<?, ?>)jsonWebKey); - return new JsonWebKey(map); - } - - public JoseHeaders setHeader(String name, Object value) { - setProperty(name, value); - return this; - } - - public Object getHeader(String name) { - return getProperty(name); - } - - public JoseHeaders setIntegerHeader(String name, Integer value) { - setHeader(name, value); - return this; - } - - public Integer getIntegerHeader(String name) { - return getIntegerProperty(name); - } - public JoseHeaders setLongHeader(String name, Long value) { - setHeader(name, value); - return this; - } - - public Long getLongHeader(String name) { - return getLongProperty(name); - } - - public boolean containsHeader(String name) { - return containsProperty(name); - } - -} http://git-wip-us.apache.org/repos/asf/cxf/blob/f5bca059/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/JoseType.java ---------------------------------------------------------------------- diff --git a/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/JoseType.java b/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/JoseType.java deleted file mode 100644 index 57a16c7..0000000 --- a/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/JoseType.java +++ /dev/null @@ -1,43 +0,0 @@ -/** - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package org.apache.cxf.rs.security.jose; - - -public enum JoseType { - JOSE(JoseConstants.TYPE_JOSE), - JOSE_JSON(JoseConstants.TYPE_JOSE_JSON), - JWT(JoseConstants.TYPE_JWT); - - private final String type; - JoseType(String type) { - this.type = type; - } - public static JoseType getType(String type) { - if (type == null) { - return null; - } else if (JoseConstants.TYPE_JOSE_JSON.equals(type)) { - return JOSE_JSON; - } else { - return valueOf(type); - } - } - public String toString() { - return type; - } -} http://git-wip-us.apache.org/repos/asf/cxf/blob/f5bca059/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/JoseUtils.java ---------------------------------------------------------------------- diff --git a/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/JoseUtils.java b/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/JoseUtils.java deleted file mode 100644 index 7efaab7..0000000 --- a/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/JoseUtils.java +++ /dev/null @@ -1,200 +0,0 @@ -/** - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package org.apache.cxf.rs.security.jose; - -import java.io.File; -import java.io.InputStream; -import java.io.UnsupportedEncodingException; -import java.net.URL; -import java.util.HashSet; -import java.util.List; -import java.util.Properties; -import java.util.Set; -import java.util.logging.Logger; - -import org.apache.cxf.Bus; -import org.apache.cxf.common.classloader.ClassLoaderUtils; -import org.apache.cxf.common.logging.LogUtils; -import org.apache.cxf.common.util.StringUtils; -import org.apache.cxf.message.Message; -import org.apache.cxf.phase.PhaseInterceptorChain; -import org.apache.cxf.resource.ResourceManager; -import org.apache.cxf.rt.security.crypto.CryptoUtils; - -public final class JoseUtils { - private static final Logger LOG = LogUtils.getL7dLogger(JoseUtils.class); - private static final String CLASSPATH_PREFIX = "classpath:"; - - private JoseUtils() { - - } - public static String[] getCompactParts(String compactContent) { - if (compactContent.startsWith("\"") && compactContent.endsWith("\"")) { - compactContent = compactContent.substring(1, compactContent.length() - 1); - } - return StringUtils.split(compactContent, "\\."); - } - public static void setJoseContextProperty(JoseHeaders headers) { - Message message = PhaseInterceptorChain.getCurrentMessage(); - String context = (String)message.get(JoseConstants.JOSE_CONTEXT_PROPERTY); - if (context != null) { - headers.setHeader(JoseConstants.JOSE_CONTEXT_PROPERTY, context); - } - } - public static void setJoseMessageContextProperty(JoseHeaders headers, String value) { - headers.setHeader(JoseConstants.JOSE_CONTEXT_PROPERTY, value); - Message message = PhaseInterceptorChain.getCurrentMessage(); - message.put(JoseConstants.JOSE_CONTEXT_PROPERTY, value); - } - public static void setMessageContextProperty(JoseHeaders headers) { - String context = (String)headers.getHeader(JoseConstants.JOSE_CONTEXT_PROPERTY); - if (context != null) { - Message message = PhaseInterceptorChain.getCurrentMessage(); - message.put(JoseConstants.JOSE_CONTEXT_PROPERTY, context); - } - } - public static void validateRequestContextProperty(JoseHeaders headers) { - Message message = PhaseInterceptorChain.getCurrentMessage(); - Object requestContext = message.get(JoseConstants.JOSE_CONTEXT_PROPERTY); - Object headerContext = headers.getHeader(JoseConstants.JOSE_CONTEXT_PROPERTY); - if (requestContext == null && headerContext == null) { - return; - } - if (requestContext == null && headerContext != null - || requestContext != null && headerContext == null - || !requestContext.equals(headerContext)) { - LOG.warning("Invalid JOSE context property"); - throw new JoseException(); - } - } - - public static String checkContentType(String contentType, String defaultType) { - if (contentType != null) { - int paramIndex = contentType.indexOf(';'); - String typeWithoutParams = paramIndex == -1 ? contentType : contentType.substring(0, paramIndex); - if (typeWithoutParams.indexOf('/') == -1) { - contentType = "application/" + contentType; - } - } else { - contentType = defaultType; - } - return contentType; - } - public static String expandContentType(String contentType) { - int paramIndex = contentType.indexOf(';'); - String typeWithoutParams = paramIndex == -1 ? contentType : contentType.substring(0, paramIndex); - if (typeWithoutParams.indexOf('/') == -1) { - contentType = "application/" + contentType; - } - return contentType; - } - - public static String decodeToString(String encoded) { - try { - return new String(decode(encoded), "UTF-8"); - } catch (UnsupportedEncodingException ex) { - throw new JoseException(ex); - } - - } - public static byte[] decode(String encoded) { - return CryptoUtils.decodeSequence(encoded); - } - - public static boolean validateCriticalHeaders(JoseHeaders headers) { - List<String> critical = headers.getCritical(); - if (critical == null) { - return true; - } - // The "crit" value MUST NOT be empty "[]" or contain either duplicate values or "crit" - if (critical.isEmpty() - || detectDoubleEntry(critical) - || critical.contains(JoseConstants.HEADER_CRITICAL)) { - return false; - } - - // Check that the headers contain these critical headers - return headers.asMap().keySet().containsAll(critical); - } - private static boolean detectDoubleEntry(List<?> list) { - Set<Object> inputSet = new HashSet<Object>(list); - return list.size() > inputSet.size(); - } - - // - // <Start> Copied from JAX-RS RT FRONTEND ResourceUtils - // - - public static InputStream getResourceStream(String loc, Bus bus) throws Exception { - URL url = getResourceURL(loc, bus); - return url == null ? null : url.openStream(); - } - - public static URL getResourceURL(String loc, Bus bus) throws Exception { - URL url = null; - if (loc.startsWith(CLASSPATH_PREFIX)) { - String path = loc.substring(CLASSPATH_PREFIX.length()); - url = JoseUtils.getClasspathResourceURL(path, JoseUtils.class, bus); - } else { - try { - url = new URL(loc); - } catch (Exception ex) { - // it can be either a classpath or file resource without a scheme - url = JoseUtils.getClasspathResourceURL(loc, JoseUtils.class, bus); - if (url == null) { - File file = new File(loc); - if (file.exists()) { - url = file.toURI().toURL(); - } - } - } - } - if (url == null) { - LOG.warning("No resource " + loc + " is available"); - } - return url; - } - - public static URL getClasspathResourceURL(String path, Class<?> callingClass, Bus bus) { - URL url = ClassLoaderUtils.getResource(path, callingClass); - return url == null ? getResource(path, URL.class, bus) : url; - } - - public static <T> T getResource(String path, Class<T> resourceClass, Bus bus) { - if (bus != null) { - ResourceManager rm = bus.getExtension(ResourceManager.class); - if (rm != null) { - return rm.resolveResource(path, resourceClass); - } - } - return null; - } - - public static Properties loadProperties(String propertiesLocation, Bus bus) throws Exception { - Properties props = new Properties(); - InputStream is = getResourceStream(propertiesLocation, bus); - props.load(is); - return props; - } - - // - // <End> Copied from JAX-RS RT FRONTEND ResourceUtils - // - -} http://git-wip-us.apache.org/repos/asf/cxf/blob/f5bca059/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/common/AbstractJoseConsumer.java ---------------------------------------------------------------------- diff --git a/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/common/AbstractJoseConsumer.java b/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/common/AbstractJoseConsumer.java new file mode 100644 index 0000000..b15abce --- /dev/null +++ b/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/common/AbstractJoseConsumer.java @@ -0,0 +1,51 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.cxf.rs.security.jose.common; + +import org.apache.cxf.rs.security.jose.jwe.JweDecryptionProvider; +import org.apache.cxf.rs.security.jose.jwe.JweUtils; +import org.apache.cxf.rs.security.jose.jws.JwsSignatureVerifier; +import org.apache.cxf.rs.security.jose.jws.JwsUtils; + +public abstract class AbstractJoseConsumer { + private JweDecryptionProvider jweDecryptor; + private JwsSignatureVerifier jwsVerifier; + + public void setJweDecryptor(JweDecryptionProvider jweDecryptor) { + this.jweDecryptor = jweDecryptor; + } + + public void setJwsVerifier(JwsSignatureVerifier theJwsVerifier) { + this.jwsVerifier = theJwsVerifier; + } + + protected JweDecryptionProvider getInitializedDecryptionProvider() { + if (jweDecryptor != null) { + return jweDecryptor; + } + return JweUtils.loadDecryptionProvider(false); + } + protected JwsSignatureVerifier getInitializedSignatureVerifier() { + if (jwsVerifier != null) { + return jwsVerifier; + } + return JwsUtils.loadSignatureVerifier(false); + } + +} http://git-wip-us.apache.org/repos/asf/cxf/blob/f5bca059/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/common/AbstractJoseProducer.java ---------------------------------------------------------------------- diff --git a/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/common/AbstractJoseProducer.java b/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/common/AbstractJoseProducer.java new file mode 100644 index 0000000..fe9832f --- /dev/null +++ b/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/common/AbstractJoseProducer.java @@ -0,0 +1,51 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.cxf.rs.security.jose.common; + +import org.apache.cxf.rs.security.jose.jwe.JweEncryptionProvider; +import org.apache.cxf.rs.security.jose.jwe.JweUtils; +import org.apache.cxf.rs.security.jose.jws.JwsSignatureProvider; +import org.apache.cxf.rs.security.jose.jws.JwsUtils; + +public abstract class AbstractJoseProducer { + private JwsSignatureProvider sigProvider; + private JweEncryptionProvider encryptionProvider; + + protected JwsSignatureProvider getInitializedSignatureProvider() { + if (sigProvider != null) { + return sigProvider; + } + + return JwsUtils.loadSignatureProvider(false); + } + protected JweEncryptionProvider getInitializedEncryptionProvider() { + if (encryptionProvider != null) { + return encryptionProvider; + } + return JweUtils.loadEncryptionProvider(false); + } + + public void setEncryptionProvider(JweEncryptionProvider encryptionProvider) { + this.encryptionProvider = encryptionProvider; + } + + public void setSignatureProvider(JwsSignatureProvider signatureProvider) { + this.sigProvider = signatureProvider; + } +} http://git-wip-us.apache.org/repos/asf/cxf/blob/f5bca059/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/common/JoseConstants.java ---------------------------------------------------------------------- diff --git a/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/common/JoseConstants.java b/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/common/JoseConstants.java new file mode 100644 index 0000000..d312300 --- /dev/null +++ b/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/common/JoseConstants.java @@ -0,0 +1,54 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.apache.cxf.rs.security.jose.common; + +public final class JoseConstants { + public static final String HEADER_TYPE = "typ"; + public static final String HEADER_ALGORITHM = "alg"; + public static final String HEADER_CONTENT_TYPE = "cty"; + public static final String HEADER_CRITICAL = "crit"; + + public static final String HEADER_KEY_ID = "kid"; + public static final String HEADER_X509_URL = "x5u"; + public static final String HEADER_X509_CHAIN = "x5c"; + public static final String HEADER_X509_THUMBPRINT = "x5t"; + public static final String HEADER_X509_THUMBPRINT_SHA256 = "x5t#S256"; + public static final String HEADER_JSON_WEB_KEY = "jwk"; + public static final String HEADER_JSON_WEB_KEY_SET = "jku"; + + public static final String JWE_HEADER_KEY_ENC_ALGORITHM = HEADER_ALGORITHM; + public static final String JWE_HEADER_CONTENT_ENC_ALGORITHM = "enc"; + public static final String JWE_HEADER_ZIP_ALGORITHM = "zip"; + public static final String JWE_DEFLATE_ZIP_ALGORITHM = "DEF"; + + public static final String JWS_HEADER_B64_STATUS_HEADER = "b64"; + + public static final String TYPE_JWT = "JWT"; + public static final String TYPE_JOSE = "JOSE"; + public static final String TYPE_JOSE_JSON = "JOSE+JSON"; + public static final String MEDIA_TYPE_JOSE = "application/jose"; + public static final String MEDIA_TYPE_JOSE_JSON = "application/jose+json"; + + public static final String JOSE_CONTEXT_PROPERTY = "org.apache.cxf.jose.context"; + + private JoseConstants() { + + } +} http://git-wip-us.apache.org/repos/asf/cxf/blob/f5bca059/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/common/JoseException.java ---------------------------------------------------------------------- diff --git a/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/common/JoseException.java b/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/common/JoseException.java new file mode 100644 index 0000000..ffaf2d1 --- /dev/null +++ b/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/common/JoseException.java @@ -0,0 +1,33 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.cxf.rs.security.jose.common; + +public class JoseException extends RuntimeException { + + private static final long serialVersionUID = 4118589816228511524L; + public JoseException() { + + } + public JoseException(String error) { + super(error); + } + public JoseException(Throwable cause) { + super(cause); + } +} http://git-wip-us.apache.org/repos/asf/cxf/blob/f5bca059/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/common/JoseHeaders.java ---------------------------------------------------------------------- diff --git a/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/common/JoseHeaders.java b/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/common/JoseHeaders.java new file mode 100644 index 0000000..308264e --- /dev/null +++ b/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/common/JoseHeaders.java @@ -0,0 +1,179 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.apache.cxf.rs.security.jose.common; + +import java.util.List; +import java.util.Map; + +import org.apache.cxf.helpers.CastUtils; +import org.apache.cxf.jaxrs.provider.json.JsonMapObject; +import org.apache.cxf.rs.security.jose.jwk.JsonWebKey; + +public abstract class JoseHeaders extends JsonMapObject { + public JoseHeaders() { + } + + public JoseHeaders(JoseType type) { + init(type); + } + + public JoseHeaders(JoseHeaders headers) { + this(headers.asMap()); + } + + public JoseHeaders(Map<String, Object> values) { + super(values); + } + private void init(JoseType type) { + setType(type); + } + public void setType(JoseType type) { + setHeader(JoseConstants.HEADER_TYPE, type.toString()); + } + + public JoseType getType() { + Object prop = getHeader(JoseConstants.HEADER_TYPE); + return prop == null ? null : JoseType.getType(prop.toString()); + } + + public void setContentType(String type) { + setHeader(JoseConstants.HEADER_CONTENT_TYPE, type); + } + + public String getContentType() { + return (String)getHeader(JoseConstants.HEADER_CONTENT_TYPE); + } + + public void setAlgorithm(String algo) { + setHeader(JoseConstants.HEADER_ALGORITHM, algo); + } + + public String getAlgorithm() { + Object prop = getHeader(JoseConstants.HEADER_ALGORITHM); + return prop == null ? null : prop.toString(); + } + + public void setKeyId(String kid) { + setHeader(JoseConstants.HEADER_KEY_ID, kid); + } + + public String getKeyId() { + return (String)getHeader(JoseConstants.HEADER_KEY_ID); + } + + public void setX509Url(String x509Url) { + setHeader(JoseConstants.HEADER_X509_URL, x509Url); + } + + public String getX509Url() { + return (String)getHeader(JoseConstants.HEADER_X509_URL); + } + + public void setX509Chain(List<String> x509Chain) { + setProperty(JoseConstants.HEADER_X509_CHAIN, x509Chain); + } + + public List<String> getX509Chain() { + return CastUtils.cast((List<?>)getProperty(JoseConstants.HEADER_X509_CHAIN)); + } + + public void setX509Thumbprint(String x509Thumbprint) { + setHeader(JoseConstants.HEADER_X509_THUMBPRINT, x509Thumbprint); + } + + public String getX509Thumbprint() { + return (String)getHeader(JoseConstants.HEADER_X509_THUMBPRINT); + } + + public void setX509ThumbprintSHA256(String x509Thumbprint) { + setHeader(JoseConstants.HEADER_X509_THUMBPRINT_SHA256, x509Thumbprint); + } + + public String getX509ThumbprintSHA256() { + return (String)getHeader(JoseConstants.HEADER_X509_THUMBPRINT_SHA256); + } + + public void setCritical(List<String> crit) { + setHeader(JoseConstants.HEADER_CRITICAL, crit); + } + + public List<String> getCritical() { + return CastUtils.cast((List<?>)getHeader(JoseConstants.HEADER_CRITICAL)); + } + + public void setJsonWebKey(JsonWebKey key) { + setJsonWebKey(JoseConstants.HEADER_JSON_WEB_KEY, key); + } + + public void setJsonWebKey(String headerName, JsonWebKey key) { + setHeader(headerName, key); + } + + public void setJsonWebKeysUrl(String url) { + setHeader(JoseConstants.HEADER_JSON_WEB_KEY_SET, url); + } + + public String getJsonWebKeysUrl() { + return (String)getHeader(JoseConstants.HEADER_JSON_WEB_KEY_SET); + } + + public JsonWebKey getJsonWebKey() { + return getJsonWebKey(JoseConstants.HEADER_JSON_WEB_KEY); + } + public JsonWebKey getJsonWebKey(String headerName) { + Object jsonWebKey = getHeader(headerName); + if (jsonWebKey == null || jsonWebKey instanceof JsonWebKey) { + return (JsonWebKey)jsonWebKey; + } + Map<String, Object> map = CastUtils.cast((Map<?, ?>)jsonWebKey); + return new JsonWebKey(map); + } + + public JoseHeaders setHeader(String name, Object value) { + setProperty(name, value); + return this; + } + + public Object getHeader(String name) { + return getProperty(name); + } + + public JoseHeaders setIntegerHeader(String name, Integer value) { + setHeader(name, value); + return this; + } + + public Integer getIntegerHeader(String name) { + return getIntegerProperty(name); + } + public JoseHeaders setLongHeader(String name, Long value) { + setHeader(name, value); + return this; + } + + public Long getLongHeader(String name) { + return getLongProperty(name); + } + + public boolean containsHeader(String name) { + return containsProperty(name); + } + +} http://git-wip-us.apache.org/repos/asf/cxf/blob/f5bca059/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/common/JoseType.java ---------------------------------------------------------------------- diff --git a/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/common/JoseType.java b/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/common/JoseType.java new file mode 100644 index 0000000..bde4fca --- /dev/null +++ b/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/common/JoseType.java @@ -0,0 +1,43 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.cxf.rs.security.jose.common; + + +public enum JoseType { + JOSE(JoseConstants.TYPE_JOSE), + JOSE_JSON(JoseConstants.TYPE_JOSE_JSON), + JWT(JoseConstants.TYPE_JWT); + + private final String type; + JoseType(String type) { + this.type = type; + } + public static JoseType getType(String type) { + if (type == null) { + return null; + } else if (JoseConstants.TYPE_JOSE_JSON.equals(type)) { + return JOSE_JSON; + } else { + return valueOf(type); + } + } + public String toString() { + return type; + } +} http://git-wip-us.apache.org/repos/asf/cxf/blob/f5bca059/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/common/JoseUtils.java ---------------------------------------------------------------------- diff --git a/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/common/JoseUtils.java b/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/common/JoseUtils.java new file mode 100644 index 0000000..7c2f4eb --- /dev/null +++ b/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/common/JoseUtils.java @@ -0,0 +1,200 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.cxf.rs.security.jose.common; + +import java.io.File; +import java.io.InputStream; +import java.io.UnsupportedEncodingException; +import java.net.URL; +import java.util.HashSet; +import java.util.List; +import java.util.Properties; +import java.util.Set; +import java.util.logging.Logger; + +import org.apache.cxf.Bus; +import org.apache.cxf.common.classloader.ClassLoaderUtils; +import org.apache.cxf.common.logging.LogUtils; +import org.apache.cxf.common.util.StringUtils; +import org.apache.cxf.message.Message; +import org.apache.cxf.phase.PhaseInterceptorChain; +import org.apache.cxf.resource.ResourceManager; +import org.apache.cxf.rt.security.crypto.CryptoUtils; + +public final class JoseUtils { + private static final Logger LOG = LogUtils.getL7dLogger(JoseUtils.class); + private static final String CLASSPATH_PREFIX = "classpath:"; + + private JoseUtils() { + + } + public static String[] getCompactParts(String compactContent) { + if (compactContent.startsWith("\"") && compactContent.endsWith("\"")) { + compactContent = compactContent.substring(1, compactContent.length() - 1); + } + return StringUtils.split(compactContent, "\\."); + } + public static void setJoseContextProperty(JoseHeaders headers) { + Message message = PhaseInterceptorChain.getCurrentMessage(); + String context = (String)message.get(JoseConstants.JOSE_CONTEXT_PROPERTY); + if (context != null) { + headers.setHeader(JoseConstants.JOSE_CONTEXT_PROPERTY, context); + } + } + public static void setJoseMessageContextProperty(JoseHeaders headers, String value) { + headers.setHeader(JoseConstants.JOSE_CONTEXT_PROPERTY, value); + Message message = PhaseInterceptorChain.getCurrentMessage(); + message.put(JoseConstants.JOSE_CONTEXT_PROPERTY, value); + } + public static void setMessageContextProperty(JoseHeaders headers) { + String context = (String)headers.getHeader(JoseConstants.JOSE_CONTEXT_PROPERTY); + if (context != null) { + Message message = PhaseInterceptorChain.getCurrentMessage(); + message.put(JoseConstants.JOSE_CONTEXT_PROPERTY, context); + } + } + public static void validateRequestContextProperty(JoseHeaders headers) { + Message message = PhaseInterceptorChain.getCurrentMessage(); + Object requestContext = message.get(JoseConstants.JOSE_CONTEXT_PROPERTY); + Object headerContext = headers.getHeader(JoseConstants.JOSE_CONTEXT_PROPERTY); + if (requestContext == null && headerContext == null) { + return; + } + if (requestContext == null && headerContext != null + || requestContext != null && headerContext == null + || !requestContext.equals(headerContext)) { + LOG.warning("Invalid JOSE context property"); + throw new JoseException(); + } + } + + public static String checkContentType(String contentType, String defaultType) { + if (contentType != null) { + int paramIndex = contentType.indexOf(';'); + String typeWithoutParams = paramIndex == -1 ? contentType : contentType.substring(0, paramIndex); + if (typeWithoutParams.indexOf('/') == -1) { + contentType = "application/" + contentType; + } + } else { + contentType = defaultType; + } + return contentType; + } + public static String expandContentType(String contentType) { + int paramIndex = contentType.indexOf(';'); + String typeWithoutParams = paramIndex == -1 ? contentType : contentType.substring(0, paramIndex); + if (typeWithoutParams.indexOf('/') == -1) { + contentType = "application/" + contentType; + } + return contentType; + } + + public static String decodeToString(String encoded) { + try { + return new String(decode(encoded), "UTF-8"); + } catch (UnsupportedEncodingException ex) { + throw new JoseException(ex); + } + + } + public static byte[] decode(String encoded) { + return CryptoUtils.decodeSequence(encoded); + } + + public static boolean validateCriticalHeaders(JoseHeaders headers) { + List<String> critical = headers.getCritical(); + if (critical == null) { + return true; + } + // The "crit" value MUST NOT be empty "[]" or contain either duplicate values or "crit" + if (critical.isEmpty() + || detectDoubleEntry(critical) + || critical.contains(JoseConstants.HEADER_CRITICAL)) { + return false; + } + + // Check that the headers contain these critical headers + return headers.asMap().keySet().containsAll(critical); + } + private static boolean detectDoubleEntry(List<?> list) { + Set<Object> inputSet = new HashSet<Object>(list); + return list.size() > inputSet.size(); + } + + // + // <Start> Copied from JAX-RS RT FRONTEND ResourceUtils + // + + public static InputStream getResourceStream(String loc, Bus bus) throws Exception { + URL url = getResourceURL(loc, bus); + return url == null ? null : url.openStream(); + } + + public static URL getResourceURL(String loc, Bus bus) throws Exception { + URL url = null; + if (loc.startsWith(CLASSPATH_PREFIX)) { + String path = loc.substring(CLASSPATH_PREFIX.length()); + url = JoseUtils.getClasspathResourceURL(path, JoseUtils.class, bus); + } else { + try { + url = new URL(loc); + } catch (Exception ex) { + // it can be either a classpath or file resource without a scheme + url = JoseUtils.getClasspathResourceURL(loc, JoseUtils.class, bus); + if (url == null) { + File file = new File(loc); + if (file.exists()) { + url = file.toURI().toURL(); + } + } + } + } + if (url == null) { + LOG.warning("No resource " + loc + " is available"); + } + return url; + } + + public static URL getClasspathResourceURL(String path, Class<?> callingClass, Bus bus) { + URL url = ClassLoaderUtils.getResource(path, callingClass); + return url == null ? getResource(path, URL.class, bus) : url; + } + + public static <T> T getResource(String path, Class<T> resourceClass, Bus bus) { + if (bus != null) { + ResourceManager rm = bus.getExtension(ResourceManager.class); + if (rm != null) { + return rm.resolveResource(path, resourceClass); + } + } + return null; + } + + public static Properties loadProperties(String propertiesLocation, Bus bus) throws Exception { + Properties props = new Properties(); + InputStream is = getResourceStream(propertiesLocation, bus); + props.load(is); + return props; + } + + // + // <End> Copied from JAX-RS RT FRONTEND ResourceUtils + // + +} http://git-wip-us.apache.org/repos/asf/cxf/blob/f5bca059/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/common/KeyManagementUtils.java ---------------------------------------------------------------------- diff --git a/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/common/KeyManagementUtils.java b/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/common/KeyManagementUtils.java index 8a63fa8..4fe3a7e 100644 --- a/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/common/KeyManagementUtils.java +++ b/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/common/KeyManagementUtils.java @@ -47,8 +47,6 @@ import org.apache.cxf.common.util.PropertyUtils; import org.apache.cxf.message.Message; import org.apache.cxf.message.MessageUtils; import org.apache.cxf.phase.PhaseInterceptorChain; -import org.apache.cxf.rs.security.jose.JoseException; -import org.apache.cxf.rs.security.jose.JoseUtils; import org.apache.cxf.rs.security.jose.jwk.KeyOperation; import org.apache.cxf.rt.security.crypto.CryptoUtils; import org.apache.cxf.security.SecurityContext; http://git-wip-us.apache.org/repos/asf/cxf/blob/f5bca059/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/jwe/AbstractJweDecryption.java ---------------------------------------------------------------------- diff --git a/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/jwe/AbstractJweDecryption.java b/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/jwe/AbstractJweDecryption.java index 1af9424..8e5d390 100644 --- a/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/jwe/AbstractJweDecryption.java +++ b/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/jwe/AbstractJweDecryption.java @@ -23,7 +23,7 @@ import java.security.spec.AlgorithmParameterSpec; import java.util.logging.Logger; import org.apache.cxf.common.logging.LogUtils; -import org.apache.cxf.rs.security.jose.JoseConstants; +import org.apache.cxf.rs.security.jose.common.JoseConstants; import org.apache.cxf.rs.security.jose.jwa.AlgorithmUtils; import org.apache.cxf.rs.security.jose.jwa.ContentAlgorithm; import org.apache.cxf.rs.security.jose.jwa.KeyAlgorithm; http://git-wip-us.apache.org/repos/asf/cxf/blob/f5bca059/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/jwe/AbstractJweEncryption.java ---------------------------------------------------------------------- diff --git a/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/jwe/AbstractJweEncryption.java b/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/jwe/AbstractJweEncryption.java index 07e60c4..561df8d 100644 --- a/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/jwe/AbstractJweEncryption.java +++ b/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/jwe/AbstractJweEncryption.java @@ -28,7 +28,7 @@ import javax.crypto.SecretKey; import org.apache.cxf.common.logging.LogUtils; import org.apache.cxf.jaxrs.provider.json.JsonMapObjectReaderWriter; -import org.apache.cxf.rs.security.jose.JoseConstants; +import org.apache.cxf.rs.security.jose.common.JoseConstants; import org.apache.cxf.rs.security.jose.jwa.AlgorithmUtils; import org.apache.cxf.rs.security.jose.jwa.ContentAlgorithm; import org.apache.cxf.rs.security.jose.jwa.KeyAlgorithm; http://git-wip-us.apache.org/repos/asf/cxf/blob/f5bca059/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/jwe/AesGcmWrapKeyDecryptionAlgorithm.java ---------------------------------------------------------------------- diff --git a/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/jwe/AesGcmWrapKeyDecryptionAlgorithm.java b/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/jwe/AesGcmWrapKeyDecryptionAlgorithm.java index dda527e..42472df 100644 --- a/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/jwe/AesGcmWrapKeyDecryptionAlgorithm.java +++ b/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/jwe/AesGcmWrapKeyDecryptionAlgorithm.java @@ -25,7 +25,7 @@ import javax.crypto.SecretKey; import org.apache.cxf.common.logging.LogUtils; import org.apache.cxf.common.util.Base64UrlUtility; -import org.apache.cxf.rs.security.jose.JoseException; +import org.apache.cxf.rs.security.jose.common.JoseException; import org.apache.cxf.rs.security.jose.jwa.AlgorithmUtils; import org.apache.cxf.rs.security.jose.jwa.KeyAlgorithm; import org.apache.cxf.rt.security.crypto.CryptoUtils; http://git-wip-us.apache.org/repos/asf/cxf/blob/f5bca059/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/jwe/EcdhDirectKeyJweDecryption.java ---------------------------------------------------------------------- diff --git a/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/jwe/EcdhDirectKeyJweDecryption.java b/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/jwe/EcdhDirectKeyJweDecryption.java index 64cb7e5..85485e0 100644 --- a/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/jwe/EcdhDirectKeyJweDecryption.java +++ b/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/jwe/EcdhDirectKeyJweDecryption.java @@ -20,7 +20,7 @@ package org.apache.cxf.rs.security.jose.jwe; import java.security.interfaces.ECPrivateKey; -import org.apache.cxf.rs.security.jose.JoseUtils; +import org.apache.cxf.rs.security.jose.common.JoseUtils; import org.apache.cxf.rs.security.jose.jwa.ContentAlgorithm; import org.apache.cxf.rs.security.jose.jwk.JsonWebKey; import org.apache.cxf.rs.security.jose.jwk.JwkUtils; http://git-wip-us.apache.org/repos/asf/cxf/blob/f5bca059/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/jwe/JweCompactConsumer.java ---------------------------------------------------------------------- diff --git a/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/jwe/JweCompactConsumer.java b/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/jwe/JweCompactConsumer.java index 9371726..73a4646 100644 --- a/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/jwe/JweCompactConsumer.java +++ b/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/jwe/JweCompactConsumer.java @@ -27,8 +27,8 @@ import org.apache.cxf.common.util.Base64Exception; import org.apache.cxf.common.util.Base64UrlUtility; import org.apache.cxf.jaxrs.provider.json.JsonMapObject; import org.apache.cxf.jaxrs.provider.json.JsonMapObjectReaderWriter; -import org.apache.cxf.rs.security.jose.JoseException; -import org.apache.cxf.rs.security.jose.JoseUtils; +import org.apache.cxf.rs.security.jose.common.JoseException; +import org.apache.cxf.rs.security.jose.common.JoseUtils; public class JweCompactConsumer { http://git-wip-us.apache.org/repos/asf/cxf/blob/f5bca059/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/jwe/JweDecryptionOutput.java ---------------------------------------------------------------------- diff --git a/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/jwe/JweDecryptionOutput.java b/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/jwe/JweDecryptionOutput.java index 7e2b290..3432236 100644 --- a/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/jwe/JweDecryptionOutput.java +++ b/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/jwe/JweDecryptionOutput.java @@ -20,7 +20,7 @@ package org.apache.cxf.rs.security.jose.jwe; import java.io.UnsupportedEncodingException; -import org.apache.cxf.rs.security.jose.JoseException; +import org.apache.cxf.rs.security.jose.common.JoseException; public class JweDecryptionOutput { private JweHeaders headers; http://git-wip-us.apache.org/repos/asf/cxf/blob/f5bca059/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/jwe/JweException.java ---------------------------------------------------------------------- diff --git a/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/jwe/JweException.java b/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/jwe/JweException.java index 6a6adc1..7896ee5 100644 --- a/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/jwe/JweException.java +++ b/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/jwe/JweException.java @@ -18,7 +18,7 @@ */ package org.apache.cxf.rs.security.jose.jwe; -import org.apache.cxf.rs.security.jose.JoseException; +import org.apache.cxf.rs.security.jose.common.JoseException; public class JweException extends JoseException { http://git-wip-us.apache.org/repos/asf/cxf/blob/f5bca059/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/jwe/JweHeaders.java ---------------------------------------------------------------------- diff --git a/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/jwe/JweHeaders.java b/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/jwe/JweHeaders.java index be28f1c..7345cf5 100644 --- a/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/jwe/JweHeaders.java +++ b/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/jwe/JweHeaders.java @@ -24,9 +24,9 @@ import java.util.Map; import org.apache.cxf.common.util.Base64UrlUtility; import org.apache.cxf.common.util.StringUtils; import org.apache.cxf.jaxrs.provider.json.JsonMapObjectReaderWriter; -import org.apache.cxf.rs.security.jose.JoseConstants; -import org.apache.cxf.rs.security.jose.JoseHeaders; -import org.apache.cxf.rs.security.jose.JoseType; +import org.apache.cxf.rs.security.jose.common.JoseConstants; +import org.apache.cxf.rs.security.jose.common.JoseHeaders; +import org.apache.cxf.rs.security.jose.common.JoseType; import org.apache.cxf.rs.security.jose.jwa.ContentAlgorithm; import org.apache.cxf.rs.security.jose.jwa.KeyAlgorithm; http://git-wip-us.apache.org/repos/asf/cxf/blob/f5bca059/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/jwe/JweJsonConsumer.java ---------------------------------------------------------------------- diff --git a/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/jwe/JweJsonConsumer.java b/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/jwe/JweJsonConsumer.java index 0a86a14..75fafbd 100644 --- a/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/jwe/JweJsonConsumer.java +++ b/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/jwe/JweJsonConsumer.java @@ -29,8 +29,8 @@ import java.util.logging.Logger; import org.apache.cxf.common.logging.LogUtils; import org.apache.cxf.helpers.CastUtils; import org.apache.cxf.jaxrs.provider.json.JsonMapObjectReaderWriter; -import org.apache.cxf.rs.security.jose.JoseException; -import org.apache.cxf.rs.security.jose.JoseUtils; +import org.apache.cxf.rs.security.jose.common.JoseException; +import org.apache.cxf.rs.security.jose.common.JoseUtils; import org.apache.cxf.rs.security.jose.jwa.KeyAlgorithm; public class JweJsonConsumer { http://git-wip-us.apache.org/repos/asf/cxf/blob/f5bca059/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/jwe/JweJsonEncryptionEntry.java ---------------------------------------------------------------------- diff --git a/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/jwe/JweJsonEncryptionEntry.java b/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/jwe/JweJsonEncryptionEntry.java index caa6d9f..3f45955 100644 --- a/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/jwe/JweJsonEncryptionEntry.java +++ b/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/jwe/JweJsonEncryptionEntry.java @@ -22,7 +22,7 @@ import java.util.LinkedHashMap; import java.util.Map; import org.apache.cxf.jaxrs.provider.json.JsonMapObjectReaderWriter; -import org.apache.cxf.rs.security.jose.JoseUtils; +import org.apache.cxf.rs.security.jose.common.JoseUtils; public class JweJsonEncryptionEntry { private JweHeaders unprotectedHeader; http://git-wip-us.apache.org/repos/asf/cxf/blob/f5bca059/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/jwe/JweJsonProducer.java ---------------------------------------------------------------------- diff --git a/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/jwe/JweJsonProducer.java b/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/jwe/JweJsonProducer.java index ba5365e..5278a3d 100644 --- a/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/jwe/JweJsonProducer.java +++ b/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/jwe/JweJsonProducer.java @@ -30,7 +30,7 @@ import java.util.logging.Logger; import org.apache.cxf.common.logging.LogUtils; import org.apache.cxf.common.util.Base64UrlUtility; import org.apache.cxf.jaxrs.provider.json.JsonMapObjectReaderWriter; -import org.apache.cxf.rs.security.jose.JoseConstants; +import org.apache.cxf.rs.security.jose.common.JoseConstants; public class JweJsonProducer { protected static final Logger LOG = LogUtils.getL7dLogger(JweJsonProducer.class); http://git-wip-us.apache.org/repos/asf/cxf/blob/f5bca059/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/jwe/JweUtils.java ---------------------------------------------------------------------- diff --git a/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/jwe/JweUtils.java b/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/jwe/JweUtils.java index 3f71aca..773bac5 100644 --- a/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/jwe/JweUtils.java +++ b/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/jwe/JweUtils.java @@ -40,9 +40,9 @@ import org.apache.cxf.common.util.StringUtils; import org.apache.cxf.message.Message; import org.apache.cxf.message.MessageUtils; import org.apache.cxf.phase.PhaseInterceptorChain; -import org.apache.cxf.rs.security.jose.JoseConstants; -import org.apache.cxf.rs.security.jose.JoseHeaders; -import org.apache.cxf.rs.security.jose.JoseUtils; +import org.apache.cxf.rs.security.jose.common.JoseConstants; +import org.apache.cxf.rs.security.jose.common.JoseHeaders; +import org.apache.cxf.rs.security.jose.common.JoseUtils; import org.apache.cxf.rs.security.jose.common.KeyManagementUtils; import org.apache.cxf.rs.security.jose.jwa.AlgorithmUtils; import org.apache.cxf.rs.security.jose.jwa.ContentAlgorithm; http://git-wip-us.apache.org/repos/asf/cxf/blob/f5bca059/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/jwe/PbesHmacAesWrapKeyDecryptionAlgorithm.java ---------------------------------------------------------------------- diff --git a/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/jwe/PbesHmacAesWrapKeyDecryptionAlgorithm.java b/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/jwe/PbesHmacAesWrapKeyDecryptionAlgorithm.java index 1ee6eea..6893ea7 100644 --- a/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/jwe/PbesHmacAesWrapKeyDecryptionAlgorithm.java +++ b/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/jwe/PbesHmacAesWrapKeyDecryptionAlgorithm.java @@ -19,7 +19,7 @@ package org.apache.cxf.rs.security.jose.jwe; import org.apache.cxf.common.util.Base64UrlUtility; -import org.apache.cxf.rs.security.jose.JoseException; +import org.apache.cxf.rs.security.jose.common.JoseException; import org.apache.cxf.rs.security.jose.jwa.AlgorithmUtils; import org.apache.cxf.rs.security.jose.jwa.KeyAlgorithm; http://git-wip-us.apache.org/repos/asf/cxf/blob/f5bca059/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/jwk/JsonWebKey.java ---------------------------------------------------------------------- diff --git a/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/jwk/JsonWebKey.java b/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/jwk/JsonWebKey.java index a5479d0..9f1795a 100644 --- a/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/jwk/JsonWebKey.java +++ b/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/jwk/JsonWebKey.java @@ -24,7 +24,7 @@ import java.util.Map; import org.apache.cxf.helpers.CastUtils; import org.apache.cxf.jaxrs.provider.json.JsonMapObject; -import org.apache.cxf.rs.security.jose.JoseConstants; +import org.apache.cxf.rs.security.jose.common.JoseConstants; public class JsonWebKey extends JsonMapObject { http://git-wip-us.apache.org/repos/asf/cxf/blob/f5bca059/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/jwk/JwkException.java ---------------------------------------------------------------------- diff --git a/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/jwk/JwkException.java b/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/jwk/JwkException.java index 44e9535..da54572 100644 --- a/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/jwk/JwkException.java +++ b/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/jwk/JwkException.java @@ -18,7 +18,7 @@ */ package org.apache.cxf.rs.security.jose.jwk; -import org.apache.cxf.rs.security.jose.JoseException; +import org.apache.cxf.rs.security.jose.common.JoseException; public class JwkException extends JoseException { http://git-wip-us.apache.org/repos/asf/cxf/blob/f5bca059/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/jwk/JwkUtils.java ---------------------------------------------------------------------- diff --git a/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/jwk/JwkUtils.java b/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/jwk/JwkUtils.java index 9405732..4c67d4c 100644 --- a/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/jwk/JwkUtils.java +++ b/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/jwk/JwkUtils.java @@ -46,9 +46,9 @@ import org.apache.cxf.helpers.IOUtils; import org.apache.cxf.jaxrs.provider.json.JsonMapObjectReaderWriter; import org.apache.cxf.message.Message; import org.apache.cxf.message.MessageUtils; -import org.apache.cxf.rs.security.jose.JoseConstants; -import org.apache.cxf.rs.security.jose.JoseHeaders; -import org.apache.cxf.rs.security.jose.JoseUtils; +import org.apache.cxf.rs.security.jose.common.JoseConstants; +import org.apache.cxf.rs.security.jose.common.JoseHeaders; +import org.apache.cxf.rs.security.jose.common.JoseUtils; import org.apache.cxf.rs.security.jose.common.KeyManagementUtils; import org.apache.cxf.rs.security.jose.common.PrivateKeyPasswordProvider; import org.apache.cxf.rs.security.jose.jwa.AlgorithmUtils; http://git-wip-us.apache.org/repos/asf/cxf/blob/f5bca059/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/jws/HmacJwsSignatureVerifier.java ---------------------------------------------------------------------- diff --git a/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/jws/HmacJwsSignatureVerifier.java b/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/jws/HmacJwsSignatureVerifier.java index 69643da..7910659 100644 --- a/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/jws/HmacJwsSignatureVerifier.java +++ b/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/jws/HmacJwsSignatureVerifier.java @@ -23,7 +23,7 @@ import java.util.Arrays; import java.util.logging.Logger; import org.apache.cxf.common.logging.LogUtils; -import org.apache.cxf.rs.security.jose.JoseUtils; +import org.apache.cxf.rs.security.jose.common.JoseUtils; import org.apache.cxf.rs.security.jose.jwa.AlgorithmUtils; import org.apache.cxf.rs.security.jose.jwa.SignatureAlgorithm; import org.apache.cxf.rt.security.crypto.HmacUtils; http://git-wip-us.apache.org/repos/asf/cxf/blob/f5bca059/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/jws/JwsCompactConsumer.java ---------------------------------------------------------------------- diff --git a/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/jws/JwsCompactConsumer.java b/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/jws/JwsCompactConsumer.java index 93f6d89..be48bcc 100644 --- a/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/jws/JwsCompactConsumer.java +++ b/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/jws/JwsCompactConsumer.java @@ -26,7 +26,7 @@ import org.apache.cxf.common.logging.LogUtils; import org.apache.cxf.common.util.StringUtils; import org.apache.cxf.jaxrs.provider.json.JsonMapObject; import org.apache.cxf.jaxrs.provider.json.JsonMapObjectReaderWriter; -import org.apache.cxf.rs.security.jose.JoseUtils; +import org.apache.cxf.rs.security.jose.common.JoseUtils; import org.apache.cxf.rs.security.jose.jwa.SignatureAlgorithm; import org.apache.cxf.rs.security.jose.jwk.JsonWebKey; http://git-wip-us.apache.org/repos/asf/cxf/blob/f5bca059/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/jws/JwsException.java ---------------------------------------------------------------------- diff --git a/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/jws/JwsException.java b/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/jws/JwsException.java index 2832452..29ef682 100644 --- a/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/jws/JwsException.java +++ b/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/jws/JwsException.java @@ -18,7 +18,7 @@ */ package org.apache.cxf.rs.security.jose.jws; -import org.apache.cxf.rs.security.jose.JoseException; +import org.apache.cxf.rs.security.jose.common.JoseException; public class JwsException extends JoseException { http://git-wip-us.apache.org/repos/asf/cxf/blob/f5bca059/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/jws/JwsHeaders.java ---------------------------------------------------------------------- diff --git a/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/jws/JwsHeaders.java b/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/jws/JwsHeaders.java index c883a9c..a2d0e88 100644 --- a/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/jws/JwsHeaders.java +++ b/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/jws/JwsHeaders.java @@ -20,9 +20,9 @@ package org.apache.cxf.rs.security.jose.jws; import java.util.Map; -import org.apache.cxf.rs.security.jose.JoseConstants; -import org.apache.cxf.rs.security.jose.JoseHeaders; -import org.apache.cxf.rs.security.jose.JoseType; +import org.apache.cxf.rs.security.jose.common.JoseConstants; +import org.apache.cxf.rs.security.jose.common.JoseHeaders; +import org.apache.cxf.rs.security.jose.common.JoseType; import org.apache.cxf.rs.security.jose.jwa.SignatureAlgorithm; public class JwsHeaders extends JoseHeaders { http://git-wip-us.apache.org/repos/asf/cxf/blob/f5bca059/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/jws/JwsJsonConsumer.java ---------------------------------------------------------------------- diff --git a/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/jws/JwsJsonConsumer.java b/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/jws/JwsJsonConsumer.java index cbbd07a..7374806 100644 --- a/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/jws/JwsJsonConsumer.java +++ b/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/jws/JwsJsonConsumer.java @@ -30,7 +30,7 @@ import org.apache.cxf.common.util.StringUtils; import org.apache.cxf.helpers.CastUtils; import org.apache.cxf.jaxrs.provider.json.JsonMapObject; import org.apache.cxf.jaxrs.provider.json.JsonMapObjectReaderWriter; -import org.apache.cxf.rs.security.jose.JoseUtils; +import org.apache.cxf.rs.security.jose.common.JoseUtils; import org.apache.cxf.rs.security.jose.jwa.SignatureAlgorithm; import org.apache.cxf.rs.security.jose.jwk.JsonWebKey; http://git-wip-us.apache.org/repos/asf/cxf/blob/f5bca059/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/jws/JwsJsonProducer.java ---------------------------------------------------------------------- diff --git a/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/jws/JwsJsonProducer.java b/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/jws/JwsJsonProducer.java index 712b2c0..eb5f789 100644 --- a/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/jws/JwsJsonProducer.java +++ b/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/jws/JwsJsonProducer.java @@ -30,8 +30,8 @@ import org.apache.cxf.common.logging.LogUtils; import org.apache.cxf.common.util.Base64UrlUtility; import org.apache.cxf.common.util.StringUtils; import org.apache.cxf.jaxrs.provider.json.JsonMapObjectReaderWriter; -import org.apache.cxf.rs.security.jose.JoseConstants; -import org.apache.cxf.rs.security.jose.JoseHeaders; +import org.apache.cxf.rs.security.jose.common.JoseConstants; +import org.apache.cxf.rs.security.jose.common.JoseHeaders; import org.apache.cxf.rs.security.jose.jwa.SignatureAlgorithm; import org.apache.cxf.rs.security.jose.jwk.JsonWebKey; http://git-wip-us.apache.org/repos/asf/cxf/blob/f5bca059/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/jws/JwsJsonSignatureEntry.java ---------------------------------------------------------------------- diff --git a/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/jws/JwsJsonSignatureEntry.java b/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/jws/JwsJsonSignatureEntry.java index dd2e590..8e858a1 100644 --- a/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/jws/JwsJsonSignatureEntry.java +++ b/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/jws/JwsJsonSignatureEntry.java @@ -25,8 +25,8 @@ import org.apache.cxf.common.logging.LogUtils; import org.apache.cxf.common.util.Base64UrlUtility; import org.apache.cxf.common.util.StringUtils; import org.apache.cxf.jaxrs.provider.json.JsonMapObjectReaderWriter; -import org.apache.cxf.rs.security.jose.JoseConstants; -import org.apache.cxf.rs.security.jose.JoseUtils; +import org.apache.cxf.rs.security.jose.common.JoseConstants; +import org.apache.cxf.rs.security.jose.common.JoseUtils; import org.apache.cxf.rs.security.jose.jwk.JsonWebKey; http://git-wip-us.apache.org/repos/asf/cxf/blob/f5bca059/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/jws/JwsJwtCompactProducer.java ---------------------------------------------------------------------- diff --git a/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/jws/JwsJwtCompactProducer.java b/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/jws/JwsJwtCompactProducer.java index aaaa004..beaa598 100644 --- a/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/jws/JwsJwtCompactProducer.java +++ b/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/jws/JwsJwtCompactProducer.java @@ -17,7 +17,7 @@ * under the License. */ package org.apache.cxf.rs.security.jose.jws; -import org.apache.cxf.rs.security.jose.JoseHeaders; +import org.apache.cxf.rs.security.jose.common.JoseHeaders; import org.apache.cxf.rs.security.jose.jwt.JwtClaims; import org.apache.cxf.rs.security.jose.jwt.JwtToken; import org.apache.cxf.rs.security.jose.jwt.JwtTokenReaderWriter; http://git-wip-us.apache.org/repos/asf/cxf/blob/f5bca059/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/jws/JwsUtils.java ---------------------------------------------------------------------- diff --git a/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/jws/JwsUtils.java b/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/jws/JwsUtils.java index 349a3b1..9b07fcf 100644 --- a/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/jws/JwsUtils.java +++ b/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/jws/JwsUtils.java @@ -37,9 +37,9 @@ import org.apache.cxf.common.logging.LogUtils; import org.apache.cxf.message.Message; import org.apache.cxf.message.MessageUtils; import org.apache.cxf.phase.PhaseInterceptorChain; -import org.apache.cxf.rs.security.jose.JoseConstants; -import org.apache.cxf.rs.security.jose.JoseHeaders; -import org.apache.cxf.rs.security.jose.JoseUtils; +import org.apache.cxf.rs.security.jose.common.JoseConstants; +import org.apache.cxf.rs.security.jose.common.JoseHeaders; +import org.apache.cxf.rs.security.jose.common.JoseUtils; import org.apache.cxf.rs.security.jose.common.KeyManagementUtils; import org.apache.cxf.rs.security.jose.jwa.AlgorithmUtils; import org.apache.cxf.rs.security.jose.jwa.SignatureAlgorithm; http://git-wip-us.apache.org/repos/asf/cxf/blob/f5bca059/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/jwt/AbstractJoseJwtConsumer.java ---------------------------------------------------------------------- diff --git a/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/jwt/AbstractJoseJwtConsumer.java b/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/jwt/AbstractJoseJwtConsumer.java index d4cdf48..f93cfb7 100644 --- a/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/jwt/AbstractJoseJwtConsumer.java +++ b/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/jwt/AbstractJoseJwtConsumer.java @@ -18,7 +18,7 @@ */ package org.apache.cxf.rs.security.jose.jwt; -import org.apache.cxf.rs.security.jose.AbstractJoseConsumer; +import org.apache.cxf.rs.security.jose.common.AbstractJoseConsumer; import org.apache.cxf.rs.security.jose.jwe.JweDecryptionProvider; import org.apache.cxf.rs.security.jose.jwe.JweJwtCompactConsumer; import org.apache.cxf.rs.security.jose.jws.JwsJwtCompactConsumer;
