/*
* Copyright (c) 2011 ICM Uniwersytet Warszawski All rights reserved.
* See LICENCE file for licensing information.
*/
package eu.emi.security.authn.x509.proxy;
import java.io.IOException;
import org.bouncycastle.asn1.ASN1Encoding;
import org.bouncycastle.asn1.DERIA5String;
import org.bouncycastle.asn1.ASN1Primitive;
import static org.junit.Assert.*;
import org.junit.Test;
import eu.emi.security.authn.x509.helpers.proxy.IPAddressHelper;
/**
* @author K. Benedyczak
*/
public class ExtensionsTest
{
@Test
public void certificateExtTest() throws IOException
{
DERIA5String string = new DERIA5String("ala");
CertificateExtension ce = new CertificateExtension("0.1.2.3.4.5", string, true);
ASN1Primitive der = ce.toASN1Primitive();
CertificateExtension parsed = new CertificateExtension(der.getEncoded(ASN1Encoding.DER));
assertTrue(parsed.isCritical());
assertEquals("0.1.2.3.4.5", parsed.getOid());
assertEquals(string, parsed.getValue());
}
@Test
public void ipMatcherTest()
{
byte[] space1 = {(byte)192,(byte)168,12,0, (byte)255,(byte)255,(byte)255,0};
byte[] space2 = {(byte)192,(byte)168,12,0, (byte)255,(byte)255,(byte)254,0};
byte[] space3 = {(byte)192,(byte)168,(byte)128,0, (byte)255,(byte)255,(byte)192,0};
byte[] addr1 = new byte[] {(byte)192,(byte)168,12,20};
byte[] addr2 = new byte[] {(byte)192,(byte)168,13,(byte)129};
byte[] addr3 = new byte[] {(byte)192,(byte)168,1,1};
byte[] addr4 = new byte[] {(byte)192,(byte)168,14,1};
byte[] addr5 = new byte[] {(byte)192,(byte)168,(byte)144,13};
assertTrue(IPAddressHelper.isWithinAddressSpace(addr1, space1));
assertTrue(IPAddressHelper.isWithinAddressSpace(addr1, space2));
assertFalse(IPAddressHelper.isWithinAddressSpace(addr2, space1));
assertTrue(IPAddressHelper.isWithinAddressSpace(addr2, space2));
assertFalse(IPAddressHelper.isWithinAddressSpace(addr3, space1));
assertFalse(IPAddressHelper.isWithinAddressSpace(addr3, space2));
assertFalse(IPAddressHelper.isWithinAddressSpace(addr4, space3));
assertTrue(IPAddressHelper.isWithinAddressSpace(addr5, space3));
}
@Test
public void ipMatcherTestIPv6()
{
byte[] space1 = {(byte)192,(byte)168,12,0,(byte)192,(byte)168,12,0,(byte)192,(byte)168,12,0,(byte)192,(byte)168,(byte)192,0,
(byte)255,(byte)255,(byte)255,(byte)255,(byte)255,(byte)255,(byte)255,(byte)255,(byte)255,(byte)255,(byte)255,(byte)255,(byte)255,(byte)255,(byte)192,0};
byte[] addr1 = new byte[] {(byte)192,(byte)168,12,0,(byte)192,(byte)168,12,0,(byte)192,(byte)168,12,0,(byte)192,(byte)168,(byte)252,122};
byte[] addr2 = new byte[] {(byte)192,(byte)168,12,0,(byte)192,(byte)168,12,0,(byte)192,(byte)168,12,0,(byte)192,(byte)168,(byte)191,122};
assertTrue(IPAddressHelper.isWithinAddressSpace(addr1, space1));
assertFalse(IPAddressHelper.isWithinAddressSpace(addr2, space1));
}
}