/*---------------------------------------------------------------------------* 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: 26779 $ *---------------------------------------------------------------------------*/ #ifndef NN_SSL_SSL_CONST_H_ #define NN_SSL_SSL_CONST_H_ #include #include #include /*! @addtogroup nn_ssl ssl @{ */ /** * 検証オプション */ 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 //!< 証明書チェーン内の全証明書データを保存する }; /** * 機器内蔵CA証明書の定義 */ enum NnSslInternalCaCert { NNSSL_CACERT_NINTENDO_CA = 0x01, NNSSL_CACERT_NINTENDO_CA_G2 = 0x02, NNSSL_CACERT_NINTENDO_CA_G3 = 0x03, NNSSL_CACERT_NINTENDO_CLASS2_CA = 0x04, NNSSL_CACERT_NINTENDO_CLASS2_CA_G2 = 0x05, NNSSL_CACERT_NINTENDO_CLASS2_CA_G3 = 0x06, NNSSL_CACERT_PUBLIC_CA_1 = 0x07, NNSSL_CACERT_PUBLIC_CA_2 = 0x08, NNSSL_CACERT_PUBLIC_CA_3 = 0x09, NNSSL_CACERT_PUBLIC_CA_4 = 0x0a, /* 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 }; /** * 機器内蔵CRLの定義 */ enum NnSslInternalCrl { NNSSL_CRL_DEFAULT = 0x20 }; /** * 機器内蔵クライアント証明書の定義 */ enum NnSslInternalClientCert { NNSSL_CLIENTCERT_DEFAULT = 0x40, /* 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 }; /** * 証明書検証結果 * (各定義はビット定義となっており、複数定義の論理和を用いて、複数エラーをまとめた定義とすることも可能。 * 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 //!< 証明書は無効化されている }; /*! @} */ #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, CACERT_NINTENDO_CA_G2 = NNSSL_CACERT_NINTENDO_CA_G2, CACERT_NINTENDO_CA_G3 = NNSSL_CACERT_NINTENDO_CA_G3, CACERT_NINTENDO_CLASS2_CA = NNSSL_CACERT_NINTENDO_CLASS2_CA, CACERT_NINTENDO_CLASS2_CA_G2 = NNSSL_CACERT_NINTENDO_CLASS2_CA_G2, CACERT_NINTENDO_CLASS2_CA_G3 = NNSSL_CACERT_NINTENDO_CLASS2_CA_G3, CACERT_PUBLIC_CA_1 = NNSSL_CACERT_PUBLIC_CA_1, CACERT_PUBLIC_CA_2 = NNSSL_CACERT_PUBLIC_CA_2, CACERT_PUBLIC_CA_3 = NNSSL_CACERT_PUBLIC_CA_3, CACERT_PUBLIC_CA_4 = NNSSL_CACERT_PUBLIC_CA_4, CACERT_NUM_INTERNAL = NNSSL_CACERT_NUM_INTERNAL }; /*! * @brief 機器内蔵CRLの定義 */ enum InternalCrl { CRL_DEFAULT = NNSSL_CRL_DEFAULT }; /*! * @brief 機器内蔵クライアント証明書の定義 */ enum InternalClientCert { CLIENTCERT_DEFAULT = NNSSL_CLIENTCERT_DEFAULT, 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 //!< 証明書は無効化されている }; } // 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_ */