static public Semaphore waitingForUser = new Semaphore();
public static synchronized void getPassword(final String realm, final String style,
- final String proxyIP, String oldAuth) {
+ final String proxyIP, String oldAuth) throws IOException {
// this handles cases where multiple threads hit the proxy auth at the same time -- all but one will block on the
// synchronized keyword. If 'authorization' changed while the thread was blocked, it means that the user entered
if (authorization != oldAuth) return;
if (Log.on) Log.info(Authorization.class, "displaying proxy authorization dialog");
Scheduler.add(new Scheduler.Task() {
- public void perform() throws Exception {
+ public void perform() throws IOException, JSExn {
Box b = new Box();
Template t = Template.buildTemplate(Stream.getInputStream((JS)Main.builtin.get("org/ibex/builtin/proxy_authorization.ibex")), new Ibex(null));
t.apply(b);
* @return The NTLM Response.
*/
public static byte[] getNTLMResponse(String password, byte[] challenge)
- throws Exception {
+ throws UnsupportedEncodingException {
byte[] ntlmHash = ntlmHash(password);
return lmResponse(ntlmHash, challenge);
}
* @return The LM Response.
*/
public static byte[] getLMResponse(String password, byte[] challenge)
- throws Exception {
+ {
byte[] lmHash = lmHash(password);
return lmResponse(lmHash, challenge);
}
*/
public static byte[] getNTLMv2Response(String target, String user,
String password, byte[] targetInformation, byte[] challenge,
- byte[] clientChallenge) throws Exception {
+ byte[] clientChallenge) throws UnsupportedEncodingException {
byte[] ntlmv2Hash = ntlmv2Hash(target, user, password);
byte[] blob = createBlob(targetInformation, clientChallenge);
return lmv2Response(ntlmv2Hash, blob, challenge);
*/
public static byte[] getLMv2Response(String target, String user,
String password, byte[] challenge, byte[] clientChallenge)
- throws Exception {
+ throws UnsupportedEncodingException {
byte[] ntlmv2Hash = ntlmv2Hash(target, user, password);
return lmv2Response(ntlmv2Hash, clientChallenge, challenge);
}
* the client challenge, null-padded to 24 bytes.
*/
public static byte[] getNTLM2SessionResponse(String password,
- byte[] challenge, byte[] clientChallenge) throws Exception {
+ byte[] challenge, byte[] clientChallenge) throws UnsupportedEncodingException {
byte[] ntlmHash = ntlmHash(password);
MD5Digest md5 = new MD5Digest();
md5.update(challenge, 0, challenge.length);
* @return The LM Hash of the given password, used in the calculation
* of the LM Response.
*/
- private static byte[] lmHash(String password) throws Exception {
+ private static byte[] lmHash(String password) {
/*
byte[] oemPassword = password.toUpperCase().getBytes("US-ASCII");
int length = java.lang.Math.min(oemPassword.length, 14);
* @return The NTLM Hash of the given password, used in the calculation
* of the NTLM Response and the NTLMv2 and LMv2 Hashes.
*/
- private static byte[] ntlmHash(String password) throws Exception {
+ private static byte[] ntlmHash(String password) throws UnsupportedEncodingException {
byte[] unicodePassword = password.getBytes("UnicodeLittleUnmarked");
MD4Digest md4 = new MD4Digest();
md4.update(unicodePassword, 0, unicodePassword.length);
* and LMv2 Responses.
*/
private static byte[] ntlmv2Hash(String target, String user,
- String password) throws Exception {
+ String password) throws UnsupportedEncodingException {
byte[] ntlmHash = ntlmHash(password);
String identity = user.toUpperCase() + target.toUpperCase();
return hmacMD5(identity.getBytes("UnicodeLittleUnmarked"), ntlmHash);
* hash).
*/
private static byte[] lmResponse(byte[] hash, byte[] challenge)
- throws Exception {
+ {
/*
byte[] keyBytes = new byte[21];
System.arraycopy(hash, 0, keyBytes, 0, 16);
* client data).
*/
private static byte[] lmv2Response(byte[] hash, byte[] clientData,
- byte[] challenge) throws Exception {
+ byte[] challenge) {
byte[] data = new byte[challenge.length + clientData.length];
System.arraycopy(challenge, 0, data, 0, challenge.length);
System.arraycopy(clientData, 0, data, challenge.length,
*
* @return The HMAC-MD5 hash of the given data.
*/
- private static byte[] hmacMD5(byte[] data, byte[] key) throws Exception {
+ private static byte[] hmacMD5(byte[] data, byte[] key) {
byte[] ipad = new byte[64];
byte[] opad = new byte[64];
for (int i = 0; i < 64; i++) {