int keyBits = (int)keyData.getKeyBits(); CipherAlgorithm ca = CipherAlgorithm.fromXmlId(keyData.getCipherAlgorithm().toString(), keyBits); setCipherAlgorithm(ca); setCipherProvider(ca.provider); setSizeExtra(0); setCspName(null); setBlockSize(keyData.getBlockSize()); switch (keyData.getCipherChaining().intValue()) { case STCipherChaining.INT_CHAINING_MODE_CBC: setChainingMode(ChainingMode.cbc); break; default: throw new EncryptedDocumentException("Unsupported chaining mode - "+ keyData.getCipherChaining()); int hashSize = keyData.getHashSize(); HashAlgorithm ha = HashAlgorithm.fromEcmaId(keyData.getHashAlgorithm().toString()); setHashAlgorithm(ha); keyData.getHashAlgorithm() + " @ " + hashSize + " bytes"); int saltLength = keyData.getSaltSize(); setKeySalt(keyData.getSaltValue()); if (getKeySalt().length != saltLength) { throw new EncryptedDocumentException("Invalid salt length");
keyData.setSaltSize(header.getBlockSize()); keyPass.setSaltSize(ver.getBlockSize()); keyData.setBlockSize(header.getBlockSize()); keyPass.setBlockSize(ver.getBlockSize()); keyData.setKeyBits(header.getKeySize()); keyPass.setKeyBits(ver.getKeySize()); keyData.setHashSize(header.getHashAlgorithm().hashSize); keyPass.setHashSize(ver.getHashAlgorithm().hashSize); keyData.setCipherAlgorithm(xmlCipherAlgo); keyPass.setCipherAlgorithm(xmlCipherAlgo); keyData.setCipherChaining(STCipherChaining.CHAINING_MODE_CBC); keyPass.setCipherChaining(STCipherChaining.CHAINING_MODE_CBC); break; case cfb: keyData.setCipherChaining(STCipherChaining.CHAINING_MODE_CFB); keyPass.setCipherChaining(STCipherChaining.CHAINING_MODE_CFB); break; keyData.setHashAlgorithm(mapHashAlgorithm(header.getHashAlgorithm())); keyPass.setHashAlgorithm(mapHashAlgorithm(ver.getHashAlgorithm())); keyData.setSaltValue(header.getKeySalt()); keyPass.setSaltValue(ver.getSalt()); keyPass.setEncryptedVerifierHashInput(ver.getEncryptedVerifier());
int keyBits = (int)keyData.getKeyBits(); CipherAlgorithm ca = CipherAlgorithm.fromXmlId(keyData.getCipherAlgorithm().toString(), keyBits); setCipherAlgorithm(ca); setCipherProvider(ca.provider); setSizeExtra(0); setCspName(null); setBlockSize(keyData.getBlockSize()); switch (keyData.getCipherChaining().intValue()) { case STCipherChaining.INT_CHAINING_MODE_CBC: setChainingMode(ChainingMode.cbc); break; default: throw new EncryptedDocumentException("Unsupported chaining mode - "+ keyData.getCipherChaining()); int hashSize = keyData.getHashSize(); HashAlgorithm ha = HashAlgorithm.fromEcmaId(keyData.getHashAlgorithm().toString()); setHashAlgorithm(ha); keyData.getHashAlgorithm() + " @ " + hashSize + " bytes"); int saltLength = keyData.getSaltSize(); setKeySalt(keyData.getSaltValue()); if (getKeySalt().length != saltLength) { throw new EncryptedDocumentException("Invalid salt length");
keyData.setSaltSize(header.getBlockSize()); keyPass.setSaltSize(ver.getBlockSize()); keyData.setBlockSize(header.getBlockSize()); keyPass.setBlockSize(ver.getBlockSize()); keyData.setKeyBits(header.getKeySize()); keyPass.setKeyBits(ver.getKeySize()); keyData.setHashSize(header.getHashAlgorithm().hashSize); keyPass.setHashSize(ver.getHashAlgorithm().hashSize); keyData.setCipherAlgorithm(xmlCipherAlgo); keyPass.setCipherAlgorithm(xmlCipherAlgo); keyData.setCipherChaining(STCipherChaining.CHAINING_MODE_CBC); keyPass.setCipherChaining(STCipherChaining.CHAINING_MODE_CBC); break; case cfb: keyData.setCipherChaining(STCipherChaining.CHAINING_MODE_CFB); keyPass.setCipherChaining(STCipherChaining.CHAINING_MODE_CFB); break; keyData.setHashAlgorithm(mapHashAlgorithm(header.getHashAlgorithm())); keyPass.setHashAlgorithm(mapHashAlgorithm(ver.getHashAlgorithm())); keyData.setSaltValue(header.getKeySalt()); keyPass.setSaltValue(ver.getSalt()); keyPass.setEncryptedVerifierHashInput(ver.getEncryptedVerifier());