SpecifiedResidenceCardAP
@available(iOS 13.0, *)
public class SpecifiedResidenceCardAP : NSObject
SpecifiedResidenceCardAPは特定在留カード等(特定在留カード・特定特別永住者証明書)APを
操作するクラスです。
特定在留カード等は個人番号カード上の在留APとして実装されるため、起動直後は
在留APがカレントではありません(JeidReader.selectRCS()が在留APを選択します)。
データ構造(EF構成・タグ体系・署名アルゴリズム)は第2世代在留カード等
(ResidenceCard2AP)と共通で、RC2Files系のデータクラスをそのまま使います。
異なるのはSM方式だけで、SET SESSION KEYによるRSA-OAEP鍵配送とcounterベースのIVを
用います(RCSSecureMessaging)。
(Android 版 SpecifiedResidenceCardAP と同じ実装)
-
コンストラクタ
Declaration
Swift
@objc public init(_ reader: JeidReader)Parameters
readerJeidReaderインスタンス
-
アクセスコントロール(AC)を開始します
以降の端末とカード間の通信はセキュアメッセージング(SM)により適宜暗号化されます。 在留カード等番号による認証も行われます。
カードがどの配送鍵で作られているかは事前に判別できないため、TrustAnchor.RCS_TRANSPORT_KEY_ENVSの順(main→test→dev)にSET SESSION KEYを試します。 配送鍵が違うとカード側のRSA-OAEP復号が失敗してエラーSWになるので、 SET SESSION KEYの成否だけで鍵の当たり外れを判別できます。
フォールバックの判定にVERIFYは使いません。SET SESSION KEYが通った後の VERIFY失敗は「鍵は合っているが在留カード等番号が違う」なので、 次の鍵は試さずにJeidError.invalidKeyをスローします。Throws
番号が正しくない場合はJeidError.invalidKey(message:)、 その他の失敗時はエラーがスローされますDeclaration
Swift
@objc public func startAC(_ rcKey: RCKey) throwsParameters
rcKey在留カード等番号から作成した
RCKeyオブジェクト -
共通データ要素を取得します
Throws
読み出しに失敗した場合、エラーがスローされますDeclaration
Swift
@objc public func readCommonData() throws -> RC2CommonDataReturn Value
共通データ要素
-
カード種別を取得します
Throws
読み出しに失敗した場合、エラーがスローされますDeclaration
Swift
@objc public func readCardType() throws -> RC2CardTypeReturn Value
カード種別
-
特定在留カード等AP内の全てのデータを読み出します
startAC(_:)で確立したセッションを維持するため、在留APがカレントであれば 選択し直しません(selectAPIfNeeded()参照)。Throws
読み出しに失敗した場合、エラーがスローされますDeclaration
Swift
@objc public func readFiles() throws -> RC2FilesReturn Value
特定在留カード等AP内の全てのデータ(第2世代と同形のため
RC2Files)