1 /*---------------------------------------------------------------------------* 2 Project: Horizon 3 File: ssl_Const.h 4 5 Copyright (C)2009 Nintendo Co., Ltd. All rights reserved. 6 7 These coded instructions, statements, and computer programs contain 8 proprietary information of Nintendo of America Inc. and/or Nintendo 9 Company Ltd., and are protected by Federal copyright law. They may 10 not be disclosed to third parties or copied or duplicated in any form, 11 in whole or in part, without the prior written consent of Nintendo. 12 13 $Rev: 30214 $ 14 *---------------------------------------------------------------------------*/ 15 16 #ifndef NN_SSL_SSL_CONST_H_ 17 #define NN_SSL_SSL_CONST_H_ 18 19 #include <nn/net/compatible/nssl.h> 20 #include <nn/net/compatible/nssl/nssl_restricted.h> 21 #include <nn/ssl/ssl_Types.h> 22 23 /*! 24 @addtogroup nn_ssl ssl 25 @{ 26 */ 27 28 /*! 29 * @brief 検証オプション 30 */ 31 enum NnSslVerifyOption 32 { 33 NNSSL_VERIFY_NONE = NSSL_VERIFY_NONE, //!< 指定なし 34 NNSSL_VERIFY_COMMON_NAME = NSSL_VERIFY_COMMON_NAME, //!< サーバ証明書のCommonName検証 35 NNSSL_VERIFY_ROOT_CA = NSSL_VERIFY_ROOT_CA, //!< サーバ証明書のRootCA検証 36 NNSSL_VERIFY_DATE = NSSL_VERIFY_DATE, //!< サーバ証明書のサーバ証明書の有効期限検証 37 NNSSL_VERIFY_SUBJECT_ALT_NAME = NSSL_VERIFY_SUBJECT_ALT_NAME, //!< サーバ証明書のSubjectAlternativeName検証 38 NNSSL_VERIFY_EV = NSSL_VERIFY_EV, //!< サーバ証明書のEV証明書検証(サーバ証明書がEV証明書に紐づいたもので無い限り検証失敗。) 39 NNSSL_USE_SESSION_CACHE = NSSL_OPTION_SESSION_CACHE, //!< セッションの再利用(Session resumption。つまり同じホストに連続で接続する際、セッションの再利用を試行。) 40 //NNSSL_VERIFY_CHAIN = NSSL_VERIFY_CHAIN /* 現状はchain検証"のみ"をOFFにできないので、定義を廃止 */ 41 NNSSL_VERIFY_IGNORE = NSSL_VERIFY_IGNORE, //!< 証明書検証を行うが、検証結果は無視して接続する 42 NNSSL_GET_ALL_SERVER_CERT_CHAIN = NSSL_GET_ALL_SERVER_CERT_CHAIN //!< 証明書チェーン内の全証明書データを保存する 43 }; 44 45 46 47 /*! 48 * @brief 機器内蔵CA証明書の定義 49 */ 50 enum NnSslInternalCaCert 51 { 52 NNSSL_CACERT_NINTENDO_CA = 0x01, //!< 機器内蔵の任天堂CA証明書 53 NNSSL_CACERT_NINTENDO_CA_G2 = 0x02, //!< 機器内蔵の任天堂CA証明書(G2) 54 NNSSL_CACERT_NINTENDO_CA_G3 = 0x03, //!< 機器内蔵の任天堂CA証明書(G3) 55 NNSSL_CACERT_NINTENDO_CLASS2_CA = 0x04, //!< 機器内蔵の任天堂Class2 CA証明書 56 NNSSL_CACERT_NINTENDO_CLASS2_CA_G2 = 0x05, //!< 機器内蔵の任天堂Class2 CA証明書(G2) 57 NNSSL_CACERT_NINTENDO_CLASS2_CA_G3 = 0x06, //!< 機器内蔵の任天堂Class2 CA証明書(G3) 58 NNSSL_CACERT_PUBLIC_CA_1 = 0x07, //!< 機器内蔵の一般証明書1 59 NNSSL_CACERT_PUBLIC_CA_2 = 0x08, //!< 機器内蔵の一般証明書2 60 NNSSL_CACERT_PUBLIC_CA_3 = 0x09, //!< 機器内蔵の一般証明書3 61 NNSSL_CACERT_PUBLIC_CA_4 = 0x0a, //!< 機器内蔵の一般証明書4 62 63 /* if internal CA certs are added or removed, this number needs to be updated to reflect how many there are */ 64 NNSSL_CACERT_NUM_INTERNAL = 0x0a //!< 機器内蔵のCA証明書の個数 65 }; 66 67 68 /*! 69 * @brief 機器内蔵CRLの定義 70 */ 71 enum NnSslInternalCrl 72 { 73 NNSSL_CRL_DEFAULT = 0x20 //!< 機器内蔵のCTRデフォルトCRL証明書([注意]現状では内蔵CRLは存在しません。) 74 }; 75 76 /*! 77 * @brief 機器内蔵クライアント証明書の定義 78 */ 79 enum NnSslInternalClientCert 80 { 81 NNSSL_CLIENTCERT_DEFAULT = 0x40, //!< 機器内蔵のCTRデフォルトクライアント証明書 82 83 /* if internal client certs are added or removed, this number needs to be updated to reflect how many there are */ 84 NNSSL_CLIENTCERT_NUM_INTERNAL = 0x01 //!< 機器内蔵クライアント証明書の個数 85 }; 86 87 88 /*! 89 * @brief 証明書検証結果 90 * (各定義はビット定義となっており、複数定義の論理和を用いて、複数エラーをまとめた定義とすることも可能。 91 * GetCertVerifyErrors()で得られる証明書検証結果は、そのような値である。) 92 */ 93 enum NnSslCertVerifyError 94 { 95 NNSSL_CERT_VERIFYERROR_COMMON_NAME = NSSL_VERIFYERRORS_COMMON_NAME, //!< サーバー名がCommon NameとSubjectAltName拡張領域のいずれとも不整合 96 NNSSL_CERT_VERIFYERROR_ROOT_CA = NSSL_VERIFYERRORS_ROOT_CA, //!< RootCAの不整合 97 NNSSL_CERT_VERIFYERROR_DATE = NSSL_VERIFYERRORS_DATE, //!< 証明書の有効期限切れ 98 NNSSL_CERT_VERIFYERROR_CHAIN = NSSL_VERIFYERRORS_CHAIN, //!< 証明書チェーンの検証NG 99 NNSSL_CERT_VERIFYERROR_REVOKED = NSSL_VERIFYERRORS_REVOKED_CERT, //!< 証明書は無効化されている 100 NNSSL_CERT_VERIFYERROR_EV = NSSL_VERIFYERRORS_EV //!< EV証明書検証NG 101 }; 102 103 104 /*! 105 @} 106 */ 107 108 109 110 #ifdef __cplusplus 111 112 namespace nn { 113 namespace ssl { 114 115 /*! 116 * @brief 検証オプション 117 */ 118 enum VerifyOption 119 { 120 VERIFY_NONE = NNSSL_VERIFY_NONE, //!< 指定なし 121 VERIFY_COMMON_NAME = NNSSL_VERIFY_COMMON_NAME, //!< サーバ証明書のCommonName検証 122 VERIFY_ROOT_CA = NNSSL_VERIFY_ROOT_CA, //!< サーバ証明書のRootCA検証 123 VERIFY_DATE = NNSSL_VERIFY_DATE, //!< サーバ証明書のサーバ証明書の有効期限検証 124 VERIFY_SUBJECT_ALT_NAME = NNSSL_VERIFY_SUBJECT_ALT_NAME, //!< サーバ証明書のSubjectAlternativeName検証 125 VERIFY_EV = NNSSL_VERIFY_EV, //!< サーバ証明書のEV証明書検証(サーバ証明書がEV証明書に紐づいたもので無い限り検証失敗。) 126 USE_SESSION_CACHE = NNSSL_USE_SESSION_CACHE, //!< セッションの再利用(Session resumption。つまり同じホストに連続で接続する際、セッションの再利用を試行。) 127 //VERIFY_CHAIN = NSSL_VERIFY_CHAIN /* 現状はchain検証"のみ"をOFFにできないので、定義を廃止 */] 128 VERIFY_IGNORE = NNSSL_VERIFY_IGNORE, //!< 証明書検証を行うが、検証結果は無視して接続する 129 GET_ALL_SERVER_CERT_CHAIN = NNSSL_GET_ALL_SERVER_CERT_CHAIN //!< 証明書チェーン内の全証明書データを保存する 130 }; 131 132 133 /*! 134 * @brief 機器内蔵CA証明書の定義 135 */ 136 enum InternalCaCert 137 { 138 CACERT_NINTENDO_CA = NNSSL_CACERT_NINTENDO_CA, //!< 機器内蔵の任天堂CA証明書 139 CACERT_NINTENDO_CA_G2 = NNSSL_CACERT_NINTENDO_CA_G2, //!< 機器内蔵の任天堂CA証明書(G2) 140 CACERT_NINTENDO_CA_G3 = NNSSL_CACERT_NINTENDO_CA_G3, //!< 機器内蔵の任天堂CA証明書(G3) 141 CACERT_NINTENDO_CLASS2_CA = NNSSL_CACERT_NINTENDO_CLASS2_CA, //!< 機器内蔵の任天堂Class2 CA証明書 142 CACERT_NINTENDO_CLASS2_CA_G2 = NNSSL_CACERT_NINTENDO_CLASS2_CA_G2, //!< 機器内蔵の任天堂Class2 CA証明書(G2) 143 CACERT_NINTENDO_CLASS2_CA_G3 = NNSSL_CACERT_NINTENDO_CLASS2_CA_G3, //!< 機器内蔵の任天堂Class2 CA証明書(G3) 144 CACERT_PUBLIC_CA_1 = NNSSL_CACERT_PUBLIC_CA_1, //!< 機器内蔵の一般証明書1 145 CACERT_PUBLIC_CA_2 = NNSSL_CACERT_PUBLIC_CA_2, //!< 機器内蔵の一般証明書2 146 CACERT_PUBLIC_CA_3 = NNSSL_CACERT_PUBLIC_CA_3, //!< 機器内蔵の一般証明書3 147 CACERT_PUBLIC_CA_4 = NNSSL_CACERT_PUBLIC_CA_4, //!< 機器内蔵の一般証明書4 148 149 CACERT_NUM_INTERNAL = NNSSL_CACERT_NUM_INTERNAL //!< 機器内蔵のCA証明書の個数 150 }; 151 152 153 /*! 154 * @brief 機器内蔵CRLの定義 155 */ 156 enum InternalCrl 157 { 158 CRL_DEFAULT = NNSSL_CRL_DEFAULT //!< 機器内蔵のCTRデフォルトCRL証明書([注意]現状では内蔵CRLは存在しません。) 159 }; 160 161 162 /*! 163 * @brief 機器内蔵クライアント証明書の定義 164 */ 165 enum InternalClientCert 166 { 167 CLIENTCERT_DEFAULT = NNSSL_CLIENTCERT_DEFAULT, //!< 機器内蔵のCTRデフォルトクライアント証明書 168 169 CLIENTCERT_NUM_INTERNAL = NNSSL_CLIENTCERT_NUM_INTERNAL //!< 機器内蔵クライアント証明書の個数 170 }; 171 172 173 /*! 174 * @brief 証明書検証結果 175 * (各定義はビット定義となっており、複数定義の論理和を用いて、複数エラーをまとめた定義とすることも可能。 176 * @ref GetCertVerifyErrors()で得られる証明書検証結果は、そのような値である。) 177 */ 178 enum CertVerifyError 179 { 180 CERT_VERIFYERROR_COMMON_NAME = NNSSL_CERT_VERIFYERROR_COMMON_NAME, //!< サーバー名がCommon NameとSubjectAltName拡張領域のいずれとも不整合 181 CERT_VERIFYERROR_ROOT_CA = NNSSL_CERT_VERIFYERROR_ROOT_CA, //!< RootCAの不整合 182 CERT_VERIFYERROR_DATE = NNSSL_CERT_VERIFYERROR_DATE, //!< 証明書の有効期限切れ 183 CERT_VERIFYERROR_CHAIN = NNSSL_CERT_VERIFYERROR_CHAIN, //!< 証明書チェーンの検証NG 184 CERT_VERIFYERROR_REVOKED = NNSSL_CERT_VERIFYERROR_REVOKED, //!< 証明書は無効化されている 185 CERT_VERIFYERROR_EV = NNSSL_CERT_VERIFYERROR_EV //!< EV証明書検証NG 186 }; 187 188 189 190 } // end of namespace ssl 191 } // end of namespace nn 192 193 194 #endif /*__cplusplus*/ 195 196 #define SSL_CERT_SIZE CERT_SIZE /** 証明書の最大サイズ 2K */ 197 #define SSL_CERTS_MAX NSSL_CERTS_MAX /** 登録できる証明書の最大数。ビルトイン証明書の数も含めた数です。 */ 198 #define SSL_CERTSTORE_MAX NSSL_CERTSTORE_MAX /** 作成できる証明書ストアの最大数 */ 199 #define SSL_CERTS_PER_STORE NSSL_CERTS_PER_STORE /** 一つの証明書ストアにセットできる証明書の最大数 */ 200 #define SSL_CRLS_MAX NSSL_CRLS_MAX /** 登録できるCRLの最大数 */ 201 #define SSL_CRLSTORE_MAX NSSL_CRLSTORE_MAX /** 作成できるCRLストアの最大数 */ 202 #define SSL_CRLS_PER_STORE NSSL_CRLS_PER_STORE /** 一つのCRLストアにセットできるCRLの最大数 */ 203 #define SSL_EV_MAX NSSL_EV_MAX /** 登録できるEV証明書ポリシーIDの数 */ 204 205 #endif /* NN_SSL_SSL_CONST_H_ */ 206