use of org.apache.poi.hssf.record.PasswordRecord in project poi by apache.
the class WorksheetProtectionBlock method protectSheet.
/**
* protect a spreadsheet with a password (not encrypted, just sets protect
* flags and the password.
*
* @param password to set. Pass <code>null</code> to remove all protection
* @param shouldProtectObjects are protected
* @param shouldProtectScenarios are protected
*/
public void protectSheet(String password, boolean shouldProtectObjects, boolean shouldProtectScenarios) {
if (password == null) {
_passwordRecord = null;
_protectRecord = null;
_objectProtectRecord = null;
_scenarioProtectRecord = null;
return;
}
ProtectRecord prec = getProtect();
PasswordRecord pass = getPassword();
prec.setProtect(true);
pass.setPassword((short) CryptoFunctions.createXorVerifier1(password));
if (_objectProtectRecord == null && shouldProtectObjects) {
ObjectProtectRecord rec = createObjectProtect();
rec.setProtect(true);
_objectProtectRecord = rec;
}
if (_scenarioProtectRecord == null && shouldProtectScenarios) {
ScenarioProtectRecord srec = createScenarioProtect();
srec.setProtect(true);
_scenarioProtectRecord = srec;
}
}
use of org.apache.poi.hssf.record.PasswordRecord in project poi by apache.
the class TestHSSFSheet method protectSheetRecordOrder_bug47363a.
/**
* {@link PasswordRecord} belongs with the rest of the Worksheet Protection Block
* (which should be before {@link DimensionsRecord}).
*/
@Test
public void protectSheetRecordOrder_bug47363a() throws IOException {
HSSFWorkbook wb = new HSSFWorkbook();
HSSFSheet s = wb.createSheet();
s.protectSheet("secret");
RecordCollector rc = new RecordCollector();
s.getSheet().visitContainedRecords(rc, 0);
Record[] recs = rc.getRecords();
int nRecs = recs.length;
if (recs[nRecs - 2] instanceof PasswordRecord && recs[nRecs - 5] instanceof DimensionsRecord) {
fail("Identified bug 47363a - PASSWORD after DIMENSION");
}
// Check that protection block is together, and before DIMENSION
confirmRecordClass(recs, nRecs - 4, DimensionsRecord.class);
confirmRecordClass(recs, nRecs - 9, ProtectRecord.class);
confirmRecordClass(recs, nRecs - 8, ObjectProtectRecord.class);
confirmRecordClass(recs, nRecs - 7, ScenarioProtectRecord.class);
confirmRecordClass(recs, nRecs - 6, PasswordRecord.class);
wb.close();
}
Aggregations