001 package com.nimbusds.jose; 002 003 004 import net.jcip.annotations.Immutable; 005 006 import com.nimbusds.jose.util.Base64URL; 007 008 009 /** 010 * The cryptographic parts of a JSON Web Encryption (JWE) object. This class is 011 * an immutable simple wrapper for returning the cipher text, initialisation 012 * vector (IV), encrypted key and integrity value from {@link JWEEncrypter} 013 * implementations. 014 * 015 * @author Vladimir Dzhuvinov 016 * @version $version$ (2012-10-23) 017 */ 018 @Immutable 019 public final class JWECryptoParts { 020 021 022 /** 023 * The encrypted key (optional). 024 */ 025 private final Base64URL encryptedKey; 026 027 028 /** 029 * The initialisation vector (optional). 030 */ 031 private final Base64URL iv; 032 033 034 /** 035 * The cipher text. 036 */ 037 private final Base64URL cipherText; 038 039 040 /** 041 * The integrity value (optional). 042 */ 043 private final Base64URL integrityValue; 044 045 046 /** 047 * Creates a new cryptograhic JWE parts instance. 048 * 049 * @param encryptedKey The encrypted key, {@code null} if not 050 * required by the encryption algorithm. 051 * @param iv The initialisation vector (IV), {@code null} if 052 * not required by the encryption algorithm. 053 * @param cipherText The cipher text. Must not be {@code null}. 054 * @param integrityValue The integrity value, {@code null} if the JWE 055 * algorithm provides built-in integrity check. 056 */ 057 public JWECryptoParts(final Base64URL encryptedKey, 058 final Base64URL iv, 059 final Base64URL cipherText, 060 final Base64URL integrityValue) { 061 062 this.encryptedKey = encryptedKey; 063 064 this.iv = iv; 065 066 if (cipherText == null) { 067 throw new IllegalArgumentException("The cipher text must not be null"); 068 } 069 070 this.cipherText = cipherText; 071 072 this.integrityValue = integrityValue; 073 } 074 075 076 /** 077 * Gets the encrypted key. 078 * 079 * @return The encrypted key, {@code null} if not required by 080 * the JWE algorithm. 081 */ 082 public Base64URL getEncryptedKey() { 083 084 return encryptedKey; 085 } 086 087 088 /** 089 * Gets the initialisation vector (IV). 090 * 091 * @return The initialisation vector (IV), {@code null} if not required 092 * by the JWE algorithm. 093 */ 094 public Base64URL getInitializationVector() { 095 096 return iv; 097 } 098 099 100 /** 101 * Gets the cipher text. 102 * 103 * @return The cipher text. 104 */ 105 public Base64URL getCipherText() { 106 107 return cipherText; 108 } 109 110 111 /** 112 * Gets the integrity value. 113 * 114 * @return The integrity value, {@code null} if the encryption 115 * algorithm provides built-in integrity checking. 116 */ 117 public Base64URL getIntegrityValue() { 118 119 return integrityValue; 120 } 121 }