/** * BlueCove - Java library for Bluetooth * Copyright (C) 2006-2009 Vlad Skarzhevskyy * * 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. * * @author vlads * @version $Id$ */ package com.intel.bluetooth.obex; import java.io.IOException; import junit.framework.Assert; import junit.framework.TestCase; /** * * */ public class OBEXAuthenticationTest extends TestCase { static public void assertEquals(String message, byte[] expected, byte[] actual) { if (expected == null) { Assert.assertNull(message, actual); return; } Assert.assertEquals(message + " byte[].length", expected.length, actual.length); for (int i = 0; i < expected.length; i++) { Assert.assertEquals(message + " byte[" + i + "]", expected[i], actual[i]); } } private byte[] md5digest(String md5text) { byte[] digest = new byte[0x10]; for (int i = 0; i < 0x10; i++) { digest[i] = (byte) Integer.parseInt(md5text.substring((i * 2), ((i + 1) * 2)), 0x10); } return digest; } public void testMD5DigestWrapper() { MD5DigestWrapper md5 = new MD5DigestWrapper(); byte[] data = new byte[] { 'a' }; byte[] digestExpected = md5digest("0cc175b9c0f1b6a831c399e269772661"); md5.update(data); byte[] digest = md5.digest(); assertEquals("md5 digest.length", 0x10, digest.length); assertEquals("md5 digest", digestExpected, digest); md5 = new MD5DigestWrapper(); md5.update(new byte[] { 'a' }); md5.update(new byte[] { 'b' }); md5.update(new byte[] { 'c' }); digestExpected = md5digest("900150983cd24fb0d6963f7d28e17f72"); digest = md5.digest(); assertEquals("md5 digest.length", 0x10, digest.length); assertEquals("md5 digest", digestExpected, digest); } static public void assertEquals(String message, OBEXAuthentication.Challenge expected, OBEXAuthentication.Challenge actual) { assertEquals(message + " realm", expected.getRealm(), actual.getRealm()); assertEquals(message + " userID", expected.isUserIdRequired(), actual.isUserIdRequired()); assertEquals(message + " access", expected.isFullAccess(), actual.isFullAccess()); assertEquals(message + " nonce", expected.nonce, actual.nonce); } public void testChallenge() throws IOException { byte[] digest = md5digest("0cc175b9c0f1b6a831c399e269772661"); OBEXAuthentication.Challenge c1 = new OBEXAuthentication.Challenge("realm", true, true, digest); OBEXAuthentication.Challenge c2 = new OBEXAuthentication.Challenge(c1.write()); assertEquals("Challenge write 1", c1, c2); c1 = new OBEXAuthentication.Challenge("realm2", false, true, digest); c2 = new OBEXAuthentication.Challenge(c1.write()); assertEquals("Challenge write 2", c1, c2); c1 = new OBEXAuthentication.Challenge(null, false, false, digest); c2 = new OBEXAuthentication.Challenge(c1.write()); assertEquals("Challenge write 3", c1, c2); } static public void assertEquals(String message, OBEXAuthentication.DigestResponse expected, OBEXAuthentication.DigestResponse actual) { assertEquals(message + " requestDigest", expected.requestDigest, actual.requestDigest); assertEquals(message + " userName", expected.userName, actual.userName); assertEquals(message + " nonce", expected.nonce, actual.nonce); } public void testDigestResponse() throws IOException { byte[] digest1 = md5digest("0cc175b9c0f1b6a831c399e269772661"); byte[] digest2 = md5digest("900150983cd24fb0d6963f7d28e17f72"); OBEXAuthentication.DigestResponse expected = new OBEXAuthentication.DigestResponse(); OBEXAuthentication.DigestResponse actual = new OBEXAuthentication.DigestResponse(); expected.nonce = digest1; expected.requestDigest = digest2; actual.read(expected.write()); assertEquals("DigestResponse 1", expected, actual); expected = new OBEXAuthentication.DigestResponse(); actual = new OBEXAuthentication.DigestResponse(); expected.nonce = digest2; expected.userName = new byte[] { 'b', 's' }; expected.requestDigest = digest1; actual.read(expected.write()); assertEquals("DigestResponse 2", expected, actual); } }