001/*
002 * oauth2-oidc-sdk
003 *
004 * Copyright 2012-2016, Connect2id Ltd and contributors.
005 *
006 * Licensed under the Apache License, Version 2.0 (the "License"); you may not use
007 * this file except in compliance with the License. You may obtain a copy of the
008 * License at
009 *
010 *    http://www.apache.org/licenses/LICENSE-2.0
011 *
012 * Unless required by applicable law or agreed to in writing, software distributed
013 * under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
014 * CONDITIONS OF ANY KIND, either express or implied. See the License for the
015 * specific language governing permissions and limitations under the License.
016 */
017
018package com.nimbusds.openid.connect.sdk.assurance.evidences;
019
020
021import net.jcip.annotations.Immutable;
022
023import com.nimbusds.oauth2.sdk.id.Identifier;
024
025
026/**
027 * Identity document type.
028 *
029 * <p>Related specifications:
030 *
031 * <ul>
032 *     <li>OpenID Connect for Identity Assurance 1.0, sections 4.1.1.1 and
033 *         11.2.
034 * </ul>
035 */
036@Immutable
037public final class IDDocumentType extends Identifier {
038        
039        
040        /**
041         * An identity document issued by a country's government for the
042         * purpose of identifying a citizen.
043         */
044        public static final IDDocumentType IDCARD = new IDDocumentType("idcard");
045        
046        
047        /**
048         * A passport is a travel document, usually issued by a country's
049         * government, that certifies the identity and nationality of its
050         * holder primarily for the purpose of international
051         * travel.
052         */
053        public static final IDDocumentType PASSPORT = new IDDocumentType("passport");
054        
055        
056        /**
057         * Official document permitting an individual to operate motorized
058         * vehicles. In the absence of a formal identity document, a driver's
059         * license may be accepted in many countries for identity verification.
060         */
061        public static final IDDocumentType DRIVING_PERMIT = new IDDocumentType("driving_permit");
062        
063        
064        /**
065         * ID Card issued by the German government to foreign nationals.
066         */
067        public static final IDDocumentType DE_IDCARD_FOREIGNERS = new IDDocumentType("de_idcard_foreigners");
068        
069        
070        /**
071         * ID Card issued by the German government to foreign nationals as
072         * passports replacement.
073         */
074        public static final IDDocumentType DE_EMERGENCY_IDCARD = new IDDocumentType("de_emergency_idcard");
075        
076        
077        /**
078         * Electronic Resident Permit issued by the German government to
079         * foreign nationals.
080         */
081        public static final IDDocumentType DE_ERP = new IDDocumentType("de_erp");
082        
083        
084        /**
085         * Electronic Resident Permit issued by the German government to
086         * foreign nationals as replacement for another identity document.
087         */
088        public static final IDDocumentType DE_ERP_REPLACEMENT_IDCARD = new IDDocumentType("de_erp_replacement_idcard");
089        
090        
091        /**
092         * ID Card issued by the German government to refugees as passports
093         * replacement.
094         */
095        public static final IDDocumentType DE_IDCARD_REFUGEES = new IDDocumentType("de_idcard_refugees");
096        
097        
098        /**
099         * ID Card issued by the German government to apatrids as passports
100         * replacement.
101         */
102        public static final IDDocumentType DE_IDCARD_APATRIDS = new IDDocumentType("de_idcard_apatrids");
103        
104        
105        /**
106         * Identity document issued to refugees in case of suspension of
107         * deportation that are marked as "id card replacement".
108         */
109        public static final IDDocumentType DE_CERTIFICATE_OF_SUSPENSION_OF_DEPORTATION = new IDDocumentType("de_certificate_of_suspension_of_deportation");
110        
111        
112        /**
113         * Permission to reside issued by the German government to foreign
114         * nationals applying for asylum.
115         */
116        public static final IDDocumentType DE_PERMISSION_TO_RESIDE = new IDDocumentType("de_permission_to_reside");
117        
118        
119        /**
120         * ID Card replacement document issued by the German government to
121         * foreign nationals (see Act on the Residence, Economic Activity and
122         * Integration of Foreigners in the Federal Territory, Residence Act,
123         * Appendix D1 ID Card replacement according to § 48 Abs. 2 i.V.m. §
124         * 78a Abs. 4).
125         */
126        public static final IDDocumentType DE_REPLACEMENT_IDCARD = new IDDocumentType("de_replacement_idcard");
127        
128        
129        /**
130         * Japanese drivers license.
131         */
132        public static final IDDocumentType JP_DRIVERS_LICENSE = new IDDocumentType("jp_drivers_license");
133        
134        
135        /**
136         * Japanese residence card for foreigners.
137         */
138        public static final IDDocumentType JP_RESIDENCY_CARD_FOR_FOREIGNER = new IDDocumentType("jp_residency_card_for_foreigner");
139        
140        
141        /**
142         * Japanese national ID card.
143         */
144        public static final IDDocumentType JP_INDIVIDUAL_NUMBER_CARD = new IDDocumentType("jp_individual_number_card");
145        
146        
147        /**
148         * Japanese special residency card for foreigners to permit permanent
149         * residence.
150         */
151        public static final IDDocumentType JP_PERMANENT_RESIDENCY_CARD_FOR_FOREIGNER = new IDDocumentType("jp_permanent_residency_card_for_foreigner");
152        
153        
154        /**
155         * Japanese health insurance card.
156         */
157        public static final IDDocumentType JP_HEALTH_INSURANCE_CARD = new IDDocumentType("jp_health_insurance_card");
158        
159        
160        /**
161         * Japanese residency card.
162         */
163        public static final IDDocumentType JP_RESIDENCY_CARD = new IDDocumentType("jp_residency_card");
164        
165        
166        /**
167         * Creates a new identity document type.
168         *
169         * @param value The identity document type value. Must not be
170         *              {@code null}.
171         */
172        public IDDocumentType(final String value) {
173                super(value);
174        }
175        
176        
177        @Override
178        public boolean equals(final Object object) {
179                
180                return object instanceof IDDocumentType &&
181                        this.toString().equals(object.toString());
182        }
183}