diff options
Diffstat (limited to 'eidas_modules/authmodule-eIDAS-v2/src/test/java')
-rw-r--r-- | eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/test/eidas/specific/modules/authmodule_eIDASv2/SZRClientTest.java | 283 |
1 files changed, 80 insertions, 203 deletions
diff --git a/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/test/eidas/specific/modules/authmodule_eIDASv2/SZRClientTest.java b/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/test/eidas/specific/modules/authmodule_eIDASv2/SZRClientTest.java index e68dcb9b..7f9497fc 100644 --- a/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/test/eidas/specific/modules/authmodule_eIDASv2/SZRClientTest.java +++ b/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/test/eidas/specific/modules/authmodule_eIDASv2/SZRClientTest.java @@ -1,185 +1,9 @@ -<<<<<<< HEAD:eidas_modules/authmodule-eIDAS-v2/src/test/java/at/gv/egiz/test/eidas/specific/modules/authmodule_eIDASv2/SZRClientTest.java -//package at.gv.egiz.test.eidas.specific.modules.authmodule_eIDASv2; -// -//import java.io.IOException; -//import java.math.BigInteger; -//import java.security.InvalidKeyException; -//import java.security.NoSuchProviderException; -//import java.security.PublicKey; -//import java.security.interfaces.RSAPublicKey; -//import java.util.ArrayList; -//import java.util.List; -// -//import org.apache.commons.lang3.StringUtils; -//import org.junit.Test; -//import org.junit.runner.RunWith; -//import org.slf4j.Logger; -//import org.slf4j.LoggerFactory; -//import org.springframework.beans.factory.annotation.Autowired; -//import org.springframework.test.context.ContextConfiguration; -//import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; -//import org.springframework.util.Base64Utils; -//import org.w3._2000._09.xmldsig.KeyValueType; -//import org.w3._2000._09.xmldsig.RSAKeyValueType; -//import org.w3c.dom.Element; -// -//import at.gv.e_government.reference.namespace.persondata._20020228.PersonNameType; -//import at.gv.e_government.reference.namespace.persondata._20020228.PhysicalPersonType; -//import at.gv.egiz.eaaf.core.api.data.EAAFConstants; -//import at.gv.egiz.eaaf.core.api.idp.IConfiguration; -//import at.gv.egiz.eaaf.core.api.idp.auth.data.IIdentityLink; -//import at.gv.egiz.eaaf.core.exceptions.EAAFParserException; -//import at.gv.egiz.eaaf.core.impl.data.Trible; -//import at.gv.egiz.eaaf.core.impl.idp.auth.data.SimpleIdentityLinkAssertionParser; -//import at.gv.egiz.eidas.specific.modules.authmodule_eIDASv2.Constants; -//import at.gv.egiz.eidas.specific.modules.authmodule_eIDASv2.exception.SZRCommunicationException; -//import at.gv.egiz.eidas.specific.modules.authmodule_eIDASv2.szr.SZRClient; -//import at.gv.egiz.eidas.specific.modules.authmodule_eIDASv2.utils.eIDASResponseUtils; -//import szrservices.IdentityLinkType; -//import szrservices.PersonInfoType; -//import szrservices.SZRException_Exception; -//import szrservices.TravelDocumentType; -// -//@RunWith(SpringJUnit4ClassRunner.class) -//@ContextConfiguration("/SpringTest-context_basic_test.xml") -//public class SZRClientTest { -// private static final Logger log = LoggerFactory.getLogger(SZRClientTest.class); -// -// @Autowired SZRClient szrClient; -// @Autowired IConfiguration basicConfig; -// -// private static final String givenName = "Franz"; -// private static final String familyName = "Mustermann"; -// private static final String dateOfBirth = "1987-05-05"; -// private static final String eIDASeID = "IS/AT/123456789ABCDE"; -// -// private static final String DUMMY_TARGET = EAAFConstants.URN_PREFIX_CDID + "ZP"; -// -// @Test -// public void dummyTest() { -// -// } -// -// -// //@Test -// public void getIdentityLink() throws SZRException_Exception, EAAFParserException, NoSuchProviderException, IOException, InvalidKeyException, SZRCommunicationException { -// log.debug("Starting connecting SZR Gateway"); -// IdentityLinkType result = szrClient.getIdentityLink( -// getPersonInfo(), -// dummyCodeForKeys(), -// basicConfig.getBasicMOAIDConfigurationBoolean( -// Constants.CONIG_PROPS_EIDAS_SZRCLIENT_DEBUG_INSERTERNB, -// true) -// ); -// -// Element idlFromSZR = (Element)result.getAssertion(); -// IIdentityLink identityLink = new SimpleIdentityLinkAssertionParser(idlFromSZR).parseIdentityLink(); -// if (identityLink == null) -// throw new SZRCommunicationException("ernb.00", new Object[] {"bPK is null or empty"}); -// -// } -// -// //@Test -// public void getbPKTest() throws SZRException_Exception, SZRCommunicationException { -// String bPK = szrClient.getBPK(getPersonInfo(), DUMMY_TARGET, -// basicConfig.getBasicConfiguration( -// Constants.CONIG_PROPS_EIDAS_SZRCLIENT_PARAMS_VKZ, -// "no VKZ defined")); -// -// if (StringUtils.isEmpty(bPK)) -// throw new SZRCommunicationException("ernb.01", new Object[] {"bPK is null or empty"}); -// -// -// } -// -// private PersonInfoType getPersonInfo() { -// PersonInfoType personInfo = new PersonInfoType(); -// PersonNameType personName = new PersonNameType(); -// PhysicalPersonType naturalPerson = new PhysicalPersonType(); -// TravelDocumentType eDocument = new TravelDocumentType(); -// -// naturalPerson.setName(personName ); -// personInfo.setPerson(naturalPerson ); -// personInfo.setTravelDocument(eDocument ); -// -// //parse some eID attributes -// Trible<String, String, String> eIdentifier = -// eIDASResponseUtils.parseEidasPersonalIdentifier((String)eIDASeID); -// String uniqueId = (String)eIDASeID; -// String citizenCountry = eIdentifier.getFirst(); -// -// //person information -// personName.setFamilyName((String)familyName); -// personName.setGivenName((String)givenName); -// naturalPerson.setDateOfBirth(dateOfBirth); -// eDocument.setIssuingCountry(citizenCountry); -// eDocument.setDocumentNumber(uniqueId); -// -// //eID document information -// eDocument.setDocumentType(basicConfig.getBasicConfiguration( -// Constants.CONIG_PROPS_EIDAS_SZRCLIENT_PARAMS_EDOCUMENTTYPE, -// Constants.SZR_CONSTANTS_DEFAULT_DOCUMENT_TYPE)); -// -// //TODO: that should be removed -// eDocument.setIssueDate(basicConfig.getBasicConfiguration( -// Constants.CONIG_PROPS_EIDAS_SZRCLIENT_PARAMS_ISSUING_DATE, -// Constants.SZR_CONSTANTS_DEFAULT_ISSUING_DATE)); -// eDocument.setIssuingAuthority(basicConfig.getBasicConfiguration( -// Constants.CONIG_PROPS_EIDAS_SZRCLIENT_PARAMS_ISSUING_AUTHORITY, -// Constants.SZR_CONSTANTS_DEFAULT_ISSUING_AUTHORITY)); -// -// return personInfo; -// } -// -// -// private List<KeyValueType> dummyCodeForKeys() throws IOException, NoSuchProviderException, InvalidKeyException { -// if (basicConfig.getBasicMOAIDConfigurationBoolean( -// Constants.CONIG_PROPS_EIDAS_SZRCLIENT_PARAMS_KEYS_USEDUMMY, -// false)) { -// List<KeyValueType> keyvalueList = new ArrayList<KeyValueType>(); -// try { -// //Security.addProvider(new BouncyCastleProvider()); -// //PKCS8EncodedKeySpec spec = new PKCS8EncodedKeySpec(Constants.SZR_CONSTANTS_DEFAULT_PUBL_KEY); -// //KeyFactory kf = KeyFactory.getInstance("RSA", "BC"); -// -// //PublicKey pb = kf.generatePublic(spec); -// PublicKey pb = new iaik.security.rsa.RSAPublicKey(Constants.SZR_CONSTANTS_DEFAULT_PUBL_KEY); -// -// RSAPublicKey rsapb = (RSAPublicKey)pb; -// BigInteger modulus = rsapb.getModulus(); -// BigInteger exponent = rsapb.getPublicExponent(); -// -// // set key values -// RSAKeyValueType rsa = new RSAKeyValueType(); -// rsa.setExponent(new String(Base64Utils.encode(exponent.toByteArray()))); -// rsa.setModulus(new String(Base64Utils.encode(modulus.toByteArray()))); -// -// KeyValueType key = new KeyValueType(); -// key.setRSAKeyValue(rsa); -// -// keyvalueList.add(key); -// -// return keyvalueList; -// } catch (Exception e) { -// log.error("TestCode has an internal ERROR", e); -// throw e; -// } -// -// } -// -// return null; -// -// } -//} -======= package at.asitplus.test.eidas.specific.modules.authmodule_eIDASv2; import java.io.IOException; -import java.math.BigInteger; import java.security.InvalidKeyException; +import java.security.MessageDigest; import java.security.NoSuchProviderException; -import java.security.PublicKey; -import java.security.interfaces.RSAPublicKey; import java.util.ArrayList; import java.util.List; @@ -198,6 +22,7 @@ import org.w3c.dom.Element; import at.asitplus.eidas.specific.modules.authmodule_eIDASv2.Constants; import at.asitplus.eidas.specific.modules.authmodule_eIDASv2.exception.SZRCommunicationException; +import at.asitplus.eidas.specific.modules.authmodule_eIDASv2.exception.eIDASAuthenticationException; import at.asitplus.eidas.specific.modules.authmodule_eIDASv2.szr.SZRClient; import at.asitplus.eidas.specific.modules.authmodule_eIDASv2.utils.eIDASResponseUtils; import at.gv.e_government.reference.namespace.persondata._20020228.PersonNameType; @@ -223,8 +48,12 @@ public class SZRClientTest { private static final String givenName = "Franz"; private static final String familyName = "Mustermann"; - private static final String dateOfBirth = "1987-05-05"; - private static final String eIDASeID = "IS/AT/123456789ABCDE"; + private static final String dateOfBirth = "1988-05-05"; + private static final String eIDASeID = "IS/AT/123456789ABCDEF"; + + //Dummy public RSA Key + private static final String PUBKEY_EXPONENT = "AQAB"; + private static final String PUBKEY_MODULUS = "AJZyj/+sdCMDRq9RkvbFcgSTVn/OfS8EUE81ddwP8MNuJ1kd1SWBUJPaQX2JLJHrL54mkOhrkhH2M/zcuOTu8nW9TOEgXGjrRB/0HpiYKpV+VDJViyyc/GacNLxN4Anw4pima6gHYaJIw9hQkL/nuO2hyh8PGJd7rxeFXJmbLy+X"; private static final String DUMMY_TARGET = EAAFConstants.URN_PREFIX_CDID + "ZP"; @@ -234,10 +63,31 @@ public class SZRClientTest { } + /* + * getIdentityLink without RAW mode does not contain a valid signature + */ //@Test - public void getIdentityLink() throws SZRException_Exception, EAAFParserException, NoSuchProviderException, IOException, InvalidKeyException, SZRCommunicationException { +// public void getIdentityLink() throws SZRException_Exception, EAAFParserException, NoSuchProviderException, IOException, InvalidKeyException, eIDASAuthenticationException { +// log.debug("Starting connecting SZR Gateway"); +// IdentityLinkType result = szrClient.getIdentityLink( +// getPersonInfo(), +// dummyCodeForKeys(), +// basicConfig.getBasicMOAIDConfigurationBoolean( +// Constants.CONIG_PROPS_EIDAS_SZRCLIENT_DEBUG_INSERTERNB, +// true) +// ); +// +// Element idlFromSZR = (Element)result.getAssertion(); +// IIdentityLink identityLink = new SimpleIdentityLinkAssertionParser(idlFromSZR).parseIdentityLink(); +// if (identityLink == null) +// throw new SZRCommunicationException("ernb.00", new Object[] {"bPK is null or empty"}); +// +// } + +// @Test + public void getIdentityLinkRawMode() throws SZRException_Exception, EAAFParserException, NoSuchProviderException, IOException, InvalidKeyException, eIDASAuthenticationException { log.debug("Starting connecting SZR Gateway"); - IdentityLinkType result = szrClient.getIdentityLink( + IdentityLinkType result = szrClient.getIdentityLinkInRawMode( getPersonInfo(), dummyCodeForKeys(), basicConfig.getBasicMOAIDConfigurationBoolean( @@ -247,13 +97,39 @@ public class SZRClientTest { Element idlFromSZR = (Element)result.getAssertion(); IIdentityLink identityLink = new SimpleIdentityLinkAssertionParser(idlFromSZR).parseIdentityLink(); + if (identityLink == null) - throw new SZRCommunicationException("ernb.00", new Object[] {"bPK is null or empty"}); - + throw new SZRCommunicationException("ernb.00", new Object[] {"NO IDL object"}); + + System.out.println(identityLink.getSerializedSamlAssertion()); + + if (StringUtils.isEmpty(identityLink.getFamilyName())) + throw new SZRCommunicationException("ernb.00", new Object[] {"NO FamilyName from IDL"}); + + if (StringUtils.isEmpty(identityLink.getGivenName())) + throw new SZRCommunicationException("ernb.00", new Object[] {"NO GivenName from IDL"}); + + if (StringUtils.isEmpty(identityLink.getDateOfBirth())) + throw new SZRCommunicationException("ernb.00", new Object[] {"NO DateOfBirthName from IDL"}); + + if (StringUtils.isEmpty(identityLink.getIdentificationType())) + throw new SZRCommunicationException("ernb.00", new Object[] {"NO baseIdType from IDL"}); + + if (StringUtils.isEmpty(identityLink.getIdentificationValue())) + throw new SZRCommunicationException("ernb.00", new Object[] {"NO baseId from IDL"}); + + if (StringUtils.isEmpty(identityLink.getSerializedSamlAssertion())) + throw new SZRCommunicationException("ernb.00", new Object[] {"NO serialized IDL"}); + + if (identityLink.getSamlAssertion() == null ) + throw new SZRCommunicationException("ernb.00", new Object[] {"NO raw IDL"}); + + + } - //@Test - public void getbPKTest() throws SZRException_Exception, SZRCommunicationException { +// @Test + public void getbPKTest() throws SZRException_Exception, eIDASAuthenticationException { String bPK = szrClient.getBPK(getPersonInfo(), DUMMY_TARGET, basicConfig.getBasicConfiguration( Constants.CONIG_PROPS_EIDAS_SZRCLIENT_PARAMS_VKZ, @@ -265,7 +141,20 @@ public class SZRClientTest { } - private PersonInfoType getPersonInfo() { + private String createHashFromUniqueId(String uniqueId) throws eIDASAuthenticationException { + try { + MessageDigest md = MessageDigest.getInstance("SHA-256"); + byte[] hash = md.digest(uniqueId.getBytes("UTF-8")); + String hashBase64 = new String(Base64Utils.encode(hash), "UTF-8").replaceAll("\r\n", ""); + return hashBase64; + + } catch (Exception ex) { + throw new eIDASAuthenticationException("internal.03", new Object[]{}, ex); + + } + } + + private PersonInfoType getPersonInfo() throws eIDASAuthenticationException { PersonInfoType personInfo = new PersonInfoType(); PersonNameType personName = new PersonNameType(); PhysicalPersonType naturalPerson = new PhysicalPersonType(); @@ -278,7 +167,7 @@ public class SZRClientTest { //parse some eID attributes Trible<String, String, String> eIdentifier = eIDASResponseUtils.parseEidasPersonalIdentifier((String)eIDASeID); - String uniqueId = (String)eIDASeID; + String uniqueId = createHashFromUniqueId(eIdentifier.getThird()); String citizenCountry = eIdentifier.getFirst(); //person information @@ -311,31 +200,20 @@ public class SZRClientTest { false)) { List<KeyValueType> keyvalueList = new ArrayList<KeyValueType>(); try { - //Security.addProvider(new BouncyCastleProvider()); - //PKCS8EncodedKeySpec spec = new PKCS8EncodedKeySpec(Constants.SZR_CONSTANTS_DEFAULT_PUBL_KEY); - //KeyFactory kf = KeyFactory.getInstance("RSA", "BC"); - - //PublicKey pb = kf.generatePublic(spec); - PublicKey pb = new iaik.security.rsa.RSAPublicKey(Constants.SZR_CONSTANTS_DEFAULT_PUBL_KEY); - - RSAPublicKey rsapb = (RSAPublicKey)pb; - BigInteger modulus = rsapb.getModulus(); - BigInteger exponent = rsapb.getPublicExponent(); - // set key values RSAKeyValueType rsa = new RSAKeyValueType(); - rsa.setExponent(new String(Base64Utils.encode(exponent.toByteArray()))); - rsa.setModulus(new String(Base64Utils.encode(modulus.toByteArray()))); + rsa.setExponent(PUBKEY_EXPONENT); + rsa.setModulus(PUBKEY_MODULUS); KeyValueType key = new KeyValueType(); - key.setRSAKeyValue(rsa); - + key.setRSAKeyValue(rsa); keyvalueList.add(key); return keyvalueList; } catch (Exception e) { log.error("TestCode has an internal ERROR", e); throw e; + } } @@ -344,4 +222,3 @@ public class SZRClientTest { } } ->>>>>>> 6d09f43225ba2e0f6d7b0583f843c858a1015807:eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/test/eidas/specific/modules/authmodule_eIDASv2/SZRClientTest.java |