__author__ = "rolandh"

EDUPERSON_OID = "urn:oid:1.3.6.1.4.1.5923.1.1.1."
X500ATTR_OID = "urn:oid:2.5.4."
NOREDUPERSON_OID = "urn:oid:1.3.6.1.4.1.2428.90.1."
NETSCAPE_LDAP = "urn:oid:2.16.840.1.113730.3.1."
UCL_DIR_PILOT = "urn:oid:0.9.2342.19200300.100.1."
PKCS_9 = "urn:oid:1.2.840.113549.1.9.1."
UMICH = "urn:oid:1.3.6.1.4.1.250.1.57."
SCHAC = "urn:oid:1.3.6.1.4.1.25178.1.2."

MAP = {
    "identifier": "urn:oasis:names:tc:SAML:2.0:attrname-format:uri",
    "fro": {
        EDUPERSON_OID + "2": "eduPersonNickname",
        EDUPERSON_OID + "9": "eduPersonScopedAffiliation",
        EDUPERSON_OID + "11": "eduPersonAssurance",
        EDUPERSON_OID + "10": "eduPersonTargetedID",
        EDUPERSON_OID + "4": "eduPersonOrgUnitDN",
        NOREDUPERSON_OID + "6": "norEduOrgAcronym",
        NOREDUPERSON_OID + "7": "norEduOrgUniqueIdentifier",
        NOREDUPERSON_OID + "4": "norEduPersonLIN",
        EDUPERSON_OID + "1": "eduPersonAffiliation",
        NOREDUPERSON_OID + "2": "norEduOrgUnitUniqueNumber",
        NETSCAPE_LDAP + "40": "userSMIMECertificate",
        NOREDUPERSON_OID + "1": "norEduOrgUniqueNumber",
        NETSCAPE_LDAP + "241": "displayName",
        UCL_DIR_PILOT + "37": "associatedDomain",
        EDUPERSON_OID + "6": "eduPersonPrincipalName",
        NOREDUPERSON_OID + "8": "norEduOrgUnitUniqueIdentifier",
        NOREDUPERSON_OID + "9": "federationFeideSchemaVersion",
        X500ATTR_OID + "53": "deltaRevocationList",
        X500ATTR_OID + "52": "supportedAlgorithms",
        X500ATTR_OID + "51": "houseIdentifier",
        X500ATTR_OID + "50": "uniqueMember",
        X500ATTR_OID + "19": "physicalDeliveryOfficeName",
        X500ATTR_OID + "18": "postOfficeBox",
        X500ATTR_OID + "17": "postalCode",
        X500ATTR_OID + "16": "postalAddress",
        X500ATTR_OID + "15": "businessCategory",
        X500ATTR_OID + "14": "searchGuide",
        EDUPERSON_OID + "5": "eduPersonPrimaryAffiliation",
        X500ATTR_OID + "12": "title",
        X500ATTR_OID + "11": "ou",
        X500ATTR_OID + "10": "o",
        X500ATTR_OID + "37": "cACertificate",
        X500ATTR_OID + "36": "userCertificate",
        X500ATTR_OID + "31": "member",
        X500ATTR_OID + "30": "supportedApplicationContext",
        X500ATTR_OID + "33": "roleOccupant",
        X500ATTR_OID + "32": "owner",
        NETSCAPE_LDAP + "1": "carLicense",
        PKCS_9 + "1": "email",
        NETSCAPE_LDAP + "3": "employeeNumber",
        NETSCAPE_LDAP + "2": "departmentNumber",
        X500ATTR_OID + "39": "certificateRevocationList",
        X500ATTR_OID + "38": "authorityRevocationList",
        NETSCAPE_LDAP + "216": "userPKCS12",
        EDUPERSON_OID + "8": "eduPersonPrimaryOrgUnitDN",
        X500ATTR_OID + "9": "street",
        X500ATTR_OID + "8": "st",
        NETSCAPE_LDAP + "39": "preferredLanguage",
        EDUPERSON_OID + "7": "eduPersonEntitlement",
        X500ATTR_OID + "2": "knowledgeInformation",
        X500ATTR_OID + "7": "l",
        X500ATTR_OID + "6": "c",
        X500ATTR_OID + "5": "serialNumber",
        X500ATTR_OID + "4": "sn",
        X500ATTR_OID + "3": "cn",
        UCL_DIR_PILOT + "60": "jpegPhoto",
        X500ATTR_OID + "65": "pseudonym",
        NOREDUPERSON_OID + "5": "norEduPersonNIN",
        UCL_DIR_PILOT + "3": "mail",
        UCL_DIR_PILOT + "25": "dc",
        X500ATTR_OID + "40": "crossCertificatePair",
        X500ATTR_OID + "42": "givenName",
        X500ATTR_OID + "43": "initials",
        X500ATTR_OID + "44": "generationQualifier",
        X500ATTR_OID + "45": "x500UniqueIdentifier",
        X500ATTR_OID + "46": "dnQualifier",
        X500ATTR_OID + "47": "enhancedSearchGuide",
        X500ATTR_OID + "48": "protocolInformation",
        X500ATTR_OID + "54": "dmdName",
        NETSCAPE_LDAP + "4": "employeeType",
        X500ATTR_OID + "22": "teletexTerminalIdentifier",
        X500ATTR_OID + "23": "facsimileTelephoneNumber",
        X500ATTR_OID + "20": "telephoneNumber",
        X500ATTR_OID + "21": "telexNumber",
        X500ATTR_OID + "26": "registeredAddress",
        X500ATTR_OID + "27": "destinationIndicator",
        X500ATTR_OID + "24": "x121Address",
        X500ATTR_OID + "25": "internationaliSDNNumber",
        X500ATTR_OID + "28": "preferredDeliveryMethod",
        X500ATTR_OID + "29": "presentationAddress",
        EDUPERSON_OID + "3": "eduPersonOrgDN",
        NOREDUPERSON_OID + "3": "norEduPersonBirthDate",
        UMICH + "57": "labeledURI",
        UCL_DIR_PILOT + "1": "uid",
        SCHAC + "1": "schacMotherTongue",
        SCHAC + "2": "schacGender",
        SCHAC + "3": "schacDateOfBirth",
        SCHAC + "4": "schacPlaceOfBirth",
        SCHAC + "5": "schacCountryOfCitizenship",
        SCHAC + "6": "schacSn1",
        SCHAC + "7": "schacSn2",
        SCHAC + "8": "schacPersonalTitle",
        SCHAC + "9": "schacHomeOrganization",
        SCHAC + "10": "schacHomeOrganizationType",
        SCHAC + "11": "schacCountryOfResidence",
        SCHAC + "12": "schacUserPresenceID",
        SCHAC + "13": "schacPersonalPosition",
        SCHAC + "14": "schacPersonalUniqueCode",
        SCHAC + "15": "schacPersonalUniqueID",
        SCHAC + "17": "schacExpiryDate",
        SCHAC + "18": "schacUserPrivateAttribute",
        SCHAC + "19": "schacUserStatus",
        SCHAC + "20": "schacProjectMembership",
        SCHAC + "21": "schacProjectSpecificRole",
    },
    "to": {
        "roleOccupant": X500ATTR_OID + "33",
        "gn": X500ATTR_OID + "42",
        "norEduPersonNIN": NOREDUPERSON_OID + "5",
        "title": X500ATTR_OID + "12",
        "facsimileTelephoneNumber": X500ATTR_OID + "23",
        "mail": UCL_DIR_PILOT + "3",
        "postOfficeBox": X500ATTR_OID + "18",
        "fax": X500ATTR_OID + "23",
        "telephoneNumber": X500ATTR_OID + "20",
        "norEduPersonBirthDate": NOREDUPERSON_OID + "3",
        "rfc822Mailbox": UCL_DIR_PILOT + "3",
        "dc": UCL_DIR_PILOT + "25",
        "countryName": X500ATTR_OID + "6",
        "emailAddress": PKCS_9 + "1",
        "employeeNumber": NETSCAPE_LDAP + "3",
        "organizationName": X500ATTR_OID + "10",
        "eduPersonAssurance": EDUPERSON_OID + "11",
        "norEduOrgAcronym": NOREDUPERSON_OID + "6",
        "registeredAddress": X500ATTR_OID + "26",
        "physicalDeliveryOfficeName": X500ATTR_OID + "19",
        "associatedDomain": UCL_DIR_PILOT + "37",
        "l": X500ATTR_OID + "7",
        "stateOrProvinceName": X500ATTR_OID + "8",
        "federationFeideSchemaVersion": NOREDUPERSON_OID + "9",
        "pkcs9email": PKCS_9 + "1",
        "givenName": X500ATTR_OID + "42",
        "givenname": X500ATTR_OID + "42",
        "x500UniqueIdentifier": X500ATTR_OID + "45",
        "eduPersonNickname": EDUPERSON_OID + "2",
        "houseIdentifier": X500ATTR_OID + "51",
        "street": X500ATTR_OID + "9",
        "supportedAlgorithms": X500ATTR_OID + "52",
        "preferredLanguage": NETSCAPE_LDAP + "39",
        "postalAddress": X500ATTR_OID + "16",
        "email": PKCS_9 + "1",
        "norEduOrgUnitUniqueIdentifier": NOREDUPERSON_OID + "8",
        "eduPersonPrimaryOrgUnitDN": EDUPERSON_OID + "8",
        "c": X500ATTR_OID + "6",
        "teletexTerminalIdentifier": X500ATTR_OID + "22",
        "o": X500ATTR_OID + "10",
        "cACertificate": X500ATTR_OID + "37",
        "telexNumber": X500ATTR_OID + "21",
        "ou": X500ATTR_OID + "11",
        "initials": X500ATTR_OID + "43",
        "eduPersonOrgUnitDN": EDUPERSON_OID + "4",
        "deltaRevocationList": X500ATTR_OID + "53",
        "norEduPersonLIN": NOREDUPERSON_OID + "4",
        "supportedApplicationContext": X500ATTR_OID + "30",
        "eduPersonEntitlement": EDUPERSON_OID + "7",
        "generationQualifier": X500ATTR_OID + "44",
        "eduPersonAffiliation": EDUPERSON_OID + "1",
        "edupersonaffiliation": EDUPERSON_OID + "1",
        "eduPersonPrincipalName": EDUPERSON_OID + "6",
        "edupersonprincipalname": EDUPERSON_OID + "6",
        "localityName": X500ATTR_OID + "7",
        "owner": X500ATTR_OID + "32",
        "norEduOrgUnitUniqueNumber": NOREDUPERSON_OID + "2",
        "searchGuide": X500ATTR_OID + "14",
        "certificateRevocationList": X500ATTR_OID + "39",
        "organizationalUnitName": X500ATTR_OID + "11",
        "userCertificate": X500ATTR_OID + "36",
        "preferredDeliveryMethod": X500ATTR_OID + "28",
        "internationaliSDNNumber": X500ATTR_OID + "25",
        "uniqueMember": X500ATTR_OID + "50",
        "departmentNumber": NETSCAPE_LDAP + "2",
        "enhancedSearchGuide": X500ATTR_OID + "47",
        "userPKCS12": NETSCAPE_LDAP + "216",
        "eduPersonTargetedID": EDUPERSON_OID + "10",
        "norEduOrgUniqueNumber": NOREDUPERSON_OID + "1",
        "x121Address": X500ATTR_OID + "24",
        "destinationIndicator": X500ATTR_OID + "27",
        "eduPersonPrimaryAffiliation": EDUPERSON_OID + "5",
        "surname": X500ATTR_OID + "4",
        "jpegPhoto": UCL_DIR_PILOT + "60",
        "eduPersonScopedAffiliation": EDUPERSON_OID + "9",
        "edupersonscopedaffiliation": EDUPERSON_OID + "9",
        "protocolInformation": X500ATTR_OID + "48",
        "knowledgeInformation": X500ATTR_OID + "2",
        "employeeType": NETSCAPE_LDAP + "4",
        "userSMIMECertificate": NETSCAPE_LDAP + "40",
        "member": X500ATTR_OID + "31",
        "streetAddress": X500ATTR_OID + "9",
        "dmdName": X500ATTR_OID + "54",
        "postalCode": X500ATTR_OID + "17",
        "pseudonym": X500ATTR_OID + "65",
        "dnQualifier": X500ATTR_OID + "46",
        "crossCertificatePair": X500ATTR_OID + "40",
        "eduPersonOrgDN": EDUPERSON_OID + "3",
        "authorityRevocationList": X500ATTR_OID + "38",
        "displayName": NETSCAPE_LDAP + "241",
        "businessCategory": X500ATTR_OID + "15",
        "serialNumber": X500ATTR_OID + "5",
        "norEduOrgUniqueIdentifier": NOREDUPERSON_OID + "7",
        "st": X500ATTR_OID + "8",
        "carLicense": NETSCAPE_LDAP + "1",
        "presentationAddress": X500ATTR_OID + "29",
        "sn": X500ATTR_OID + "4",
        "cn": X500ATTR_OID + "3",
        "domainComponent": UCL_DIR_PILOT + "25",
        "labeledURI": UMICH + "57",
        "uid": UCL_DIR_PILOT + "1",
        "schacMotherTongue": SCHAC + "1",
        "schacGender": SCHAC + "2",
        "schacDateOfBirth": SCHAC + "3",
        "schacPlaceOfBirth": SCHAC + "4",
        "schacCountryOfCitizenship": SCHAC + "5",
        "schacSn1": SCHAC + "6",
        "schacSn2": SCHAC + "7",
        "schacPersonalTitle": SCHAC + "8",
        "schacHomeOrganization": SCHAC + "9",
        "schacHomeOrganizationType": SCHAC + "10",
        "schacCountryOfResidence": SCHAC + "11",
        "schacUserPresenceID": SCHAC + "12",
        "schacPersonalPosition": SCHAC + "13",
        "schacPersonalUniqueCode": SCHAC + "14",
        "schacPersonalUniqueID": SCHAC + "15",
        "schacExpiryDate": SCHAC + "17",
        "schacUserPrivateAttribute": SCHAC + "18",
        "schacUserStatus": SCHAC + "19",
        "schacProjectMembership": SCHAC + "20",
        "schacProjectSpecificRole": SCHAC + "21",
    },
}
