/* ==================================================================== | |
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.poi.hssf.record.crypto; | |
import javax.crypto.spec.SecretKeySpec; | |
import org.apache.poi.poifs.crypt.CryptoFunctions; | |
public class Biff8XORKey extends Biff8EncryptionKey { | |
final int _xorKey; | |
public Biff8XORKey(String password, int xorKey) { | |
_xorKey = xorKey; | |
byte xorArray[] = CryptoFunctions.createXorArray1(password); | |
_secretKey = new SecretKeySpec(xorArray, "XOR"); | |
} | |
public static Biff8XORKey create(String password, int xorKey) { | |
return new Biff8XORKey(password, xorKey); | |
} | |
public boolean validate(String password, int verifier) { | |
int keyComp = CryptoFunctions.createXorKey1(password); | |
int verifierComp = CryptoFunctions.createXorVerifier1(password); | |
return (_xorKey == keyComp && verifierComp == verifier); | |
} | |
} |