/*---------------------------------------------------------------------------* Project: Horizon File: ssl_Const.h Copyright (C)2009 Nintendo Co., Ltd. All rights reserved. These coded instructions, statements, and computer programs contain proprietary information of Nintendo of America Inc. and/or Nintendo Company Ltd., and are protected by Federal copyright law. They may not be disclosed to third parties or copied or duplicated in any form, in whole or in part, without the prior written consent of Nintendo. $Rev: 30214 $ *---------------------------------------------------------------------------*/ #ifndef NN_SSL_SSL_CONST_H_ #define NN_SSL_SSL_CONST_H_ #include #include #include /*! @addtogroup nn_ssl ssl @{ */ /*! * @brief 検証オプション */ enum NnSslVerifyOption { NNSSL_VERIFY_NONE = NSSL_VERIFY_NONE, //!< 指定なし NNSSL_VERIFY_COMMON_NAME = NSSL_VERIFY_COMMON_NAME, //!< サーバ証明書のCommonName検証 NNSSL_VERIFY_ROOT_CA = NSSL_VERIFY_ROOT_CA, //!< サーバ証明書のRootCA検証 NNSSL_VERIFY_DATE = NSSL_VERIFY_DATE, //!< サーバ証明書のサーバ証明書の有効期限検証 NNSSL_VERIFY_SUBJECT_ALT_NAME = NSSL_VERIFY_SUBJECT_ALT_NAME, //!< サーバ証明書のSubjectAlternativeName検証 NNSSL_VERIFY_EV = NSSL_VERIFY_EV, //!< サーバ証明書のEV証明書検証(サーバ証明書がEV証明書に紐づいたもので無い限り検証失敗。) NNSSL_USE_SESSION_CACHE = NSSL_OPTION_SESSION_CACHE, //!< セッションの再利用(Session resumption。つまり同じホストに連続で接続する際、セッションの再利用を試行。) //NNSSL_VERIFY_CHAIN = NSSL_VERIFY_CHAIN /* 現状はchain検証"のみ"をOFFにできないので、定義を廃止 */ NNSSL_VERIFY_IGNORE = NSSL_VERIFY_IGNORE, //!< 証明書検証を行うが、検証結果は無視して接続する NNSSL_GET_ALL_SERVER_CERT_CHAIN = NSSL_GET_ALL_SERVER_CERT_CHAIN //!< 証明書チェーン内の全証明書データを保存する }; /*! * @brief 機器内蔵CA証明書の定義 */ enum NnSslInternalCaCert { NNSSL_CACERT_NINTENDO_CA = 0x01, //!< 機器内蔵の任天堂CA証明書 NNSSL_CACERT_NINTENDO_CA_G2 = 0x02, //!< 機器内蔵の任天堂CA証明書(G2) NNSSL_CACERT_NINTENDO_CA_G3 = 0x03, //!< 機器内蔵の任天堂CA証明書(G3) NNSSL_CACERT_NINTENDO_CLASS2_CA = 0x04, //!< 機器内蔵の任天堂Class2 CA証明書 NNSSL_CACERT_NINTENDO_CLASS2_CA_G2 = 0x05, //!< 機器内蔵の任天堂Class2 CA証明書(G2) NNSSL_CACERT_NINTENDO_CLASS2_CA_G3 = 0x06, //!< 機器内蔵の任天堂Class2 CA証明書(G3) NNSSL_CACERT_PUBLIC_CA_1 = 0x07, //!< 機器内蔵の一般証明書1 NNSSL_CACERT_PUBLIC_CA_2 = 0x08, //!< 機器内蔵の一般証明書2 NNSSL_CACERT_PUBLIC_CA_3 = 0x09, //!< 機器内蔵の一般証明書3 NNSSL_CACERT_PUBLIC_CA_4 = 0x0a, //!< 機器内蔵の一般証明書4 /* if internal CA certs are added or removed, this number needs to be updated to reflect how many there are */ NNSSL_CACERT_NUM_INTERNAL = 0x0a //!< 機器内蔵のCA証明書の個数 }; /*! * @brief 機器内蔵CRLの定義 */ enum NnSslInternalCrl { NNSSL_CRL_DEFAULT = 0x20 //!< 機器内蔵のCTRデフォルトCRL証明書([注意]現状では内蔵CRLは存在しません。) }; /*! * @brief 機器内蔵クライアント証明書の定義 */ enum NnSslInternalClientCert { NNSSL_CLIENTCERT_DEFAULT = 0x40, //!< 機器内蔵のCTRデフォルトクライアント証明書 /* if internal client certs are added or removed, this number needs to be updated to reflect how many there are */ NNSSL_CLIENTCERT_NUM_INTERNAL = 0x01 //!< 機器内蔵クライアント証明書の個数 }; /*! * @brief 証明書検証結果 * (各定義はビット定義となっており、複数定義の論理和を用いて、複数エラーをまとめた定義とすることも可能。 * GetCertVerifyErrors()で得られる証明書検証結果は、そのような値である。) */ enum NnSslCertVerifyError { NNSSL_CERT_VERIFYERROR_COMMON_NAME = NSSL_VERIFYERRORS_COMMON_NAME, //!< サーバー名がCommon NameとSubjectAltName拡張領域のいずれとも不整合 NNSSL_CERT_VERIFYERROR_ROOT_CA = NSSL_VERIFYERRORS_ROOT_CA, //!< RootCAの不整合 NNSSL_CERT_VERIFYERROR_DATE = NSSL_VERIFYERRORS_DATE, //!< 証明書の有効期限切れ NNSSL_CERT_VERIFYERROR_CHAIN = NSSL_VERIFYERRORS_CHAIN, //!< 証明書チェーンの検証NG NNSSL_CERT_VERIFYERROR_REVOKED = NSSL_VERIFYERRORS_REVOKED_CERT, //!< 証明書は無効化されている NNSSL_CERT_VERIFYERROR_EV = NSSL_VERIFYERRORS_EV //!< EV証明書検証NG }; /*! @} */ #ifdef __cplusplus namespace nn { namespace ssl { /*! * @brief 検証オプション */ enum VerifyOption { VERIFY_NONE = NNSSL_VERIFY_NONE, //!< 指定なし VERIFY_COMMON_NAME = NNSSL_VERIFY_COMMON_NAME, //!< サーバ証明書のCommonName検証 VERIFY_ROOT_CA = NNSSL_VERIFY_ROOT_CA, //!< サーバ証明書のRootCA検証 VERIFY_DATE = NNSSL_VERIFY_DATE, //!< サーバ証明書のサーバ証明書の有効期限検証 VERIFY_SUBJECT_ALT_NAME = NNSSL_VERIFY_SUBJECT_ALT_NAME, //!< サーバ証明書のSubjectAlternativeName検証 VERIFY_EV = NNSSL_VERIFY_EV, //!< サーバ証明書のEV証明書検証(サーバ証明書がEV証明書に紐づいたもので無い限り検証失敗。) USE_SESSION_CACHE = NNSSL_USE_SESSION_CACHE, //!< セッションの再利用(Session resumption。つまり同じホストに連続で接続する際、セッションの再利用を試行。) //VERIFY_CHAIN = NSSL_VERIFY_CHAIN /* 現状はchain検証"のみ"をOFFにできないので、定義を廃止 */] VERIFY_IGNORE = NNSSL_VERIFY_IGNORE, //!< 証明書検証を行うが、検証結果は無視して接続する GET_ALL_SERVER_CERT_CHAIN = NNSSL_GET_ALL_SERVER_CERT_CHAIN //!< 証明書チェーン内の全証明書データを保存する }; /*! * @brief 機器内蔵CA証明書の定義 */ enum InternalCaCert { CACERT_NINTENDO_CA = NNSSL_CACERT_NINTENDO_CA, //!< 機器内蔵の任天堂CA証明書 CACERT_NINTENDO_CA_G2 = NNSSL_CACERT_NINTENDO_CA_G2, //!< 機器内蔵の任天堂CA証明書(G2) CACERT_NINTENDO_CA_G3 = NNSSL_CACERT_NINTENDO_CA_G3, //!< 機器内蔵の任天堂CA証明書(G3) CACERT_NINTENDO_CLASS2_CA = NNSSL_CACERT_NINTENDO_CLASS2_CA, //!< 機器内蔵の任天堂Class2 CA証明書 CACERT_NINTENDO_CLASS2_CA_G2 = NNSSL_CACERT_NINTENDO_CLASS2_CA_G2, //!< 機器内蔵の任天堂Class2 CA証明書(G2) CACERT_NINTENDO_CLASS2_CA_G3 = NNSSL_CACERT_NINTENDO_CLASS2_CA_G3, //!< 機器内蔵の任天堂Class2 CA証明書(G3) CACERT_PUBLIC_CA_1 = NNSSL_CACERT_PUBLIC_CA_1, //!< 機器内蔵の一般証明書1 CACERT_PUBLIC_CA_2 = NNSSL_CACERT_PUBLIC_CA_2, //!< 機器内蔵の一般証明書2 CACERT_PUBLIC_CA_3 = NNSSL_CACERT_PUBLIC_CA_3, //!< 機器内蔵の一般証明書3 CACERT_PUBLIC_CA_4 = NNSSL_CACERT_PUBLIC_CA_4, //!< 機器内蔵の一般証明書4 CACERT_NUM_INTERNAL = NNSSL_CACERT_NUM_INTERNAL //!< 機器内蔵のCA証明書の個数 }; /*! * @brief 機器内蔵CRLの定義 */ enum InternalCrl { CRL_DEFAULT = NNSSL_CRL_DEFAULT //!< 機器内蔵のCTRデフォルトCRL証明書([注意]現状では内蔵CRLは存在しません。) }; /*! * @brief 機器内蔵クライアント証明書の定義 */ enum InternalClientCert { CLIENTCERT_DEFAULT = NNSSL_CLIENTCERT_DEFAULT, //!< 機器内蔵のCTRデフォルトクライアント証明書 CLIENTCERT_NUM_INTERNAL = NNSSL_CLIENTCERT_NUM_INTERNAL //!< 機器内蔵クライアント証明書の個数 }; /*! * @brief 証明書検証結果 * (各定義はビット定義となっており、複数定義の論理和を用いて、複数エラーをまとめた定義とすることも可能。 * @ref GetCertVerifyErrors()で得られる証明書検証結果は、そのような値である。) */ enum CertVerifyError { CERT_VERIFYERROR_COMMON_NAME = NNSSL_CERT_VERIFYERROR_COMMON_NAME, //!< サーバー名がCommon NameとSubjectAltName拡張領域のいずれとも不整合 CERT_VERIFYERROR_ROOT_CA = NNSSL_CERT_VERIFYERROR_ROOT_CA, //!< RootCAの不整合 CERT_VERIFYERROR_DATE = NNSSL_CERT_VERIFYERROR_DATE, //!< 証明書の有効期限切れ CERT_VERIFYERROR_CHAIN = NNSSL_CERT_VERIFYERROR_CHAIN, //!< 証明書チェーンの検証NG CERT_VERIFYERROR_REVOKED = NNSSL_CERT_VERIFYERROR_REVOKED, //!< 証明書は無効化されている CERT_VERIFYERROR_EV = NNSSL_CERT_VERIFYERROR_EV //!< EV証明書検証NG }; } // end of namespace ssl } // end of namespace nn #endif /*__cplusplus*/ #define SSL_CERT_SIZE CERT_SIZE /** 証明書の最大サイズ 2K */ #define SSL_CERTS_MAX NSSL_CERTS_MAX /** 登録できる証明書の最大数。ビルトイン証明書の数も含めた数です。 */ #define SSL_CERTSTORE_MAX NSSL_CERTSTORE_MAX /** 作成できる証明書ストアの最大数 */ #define SSL_CERTS_PER_STORE NSSL_CERTS_PER_STORE /** 一つの証明書ストアにセットできる証明書の最大数 */ #define SSL_CRLS_MAX NSSL_CRLS_MAX /** 登録できるCRLの最大数 */ #define SSL_CRLSTORE_MAX NSSL_CRLSTORE_MAX /** 作成できるCRLストアの最大数 */ #define SSL_CRLS_PER_STORE NSSL_CRLS_PER_STORE /** 一つのCRLストアにセットできるCRLの最大数 */ #define SSL_EV_MAX NSSL_EV_MAX /** 登録できるEV証明書ポリシーIDの数 */ #endif /* NN_SSL_SSL_CONST_H_ */