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: 26779 $ 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 * 検証オプション 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 * 機器内蔵CA証明書の定義 49 */ 50 enum NnSslInternalCaCert 51 { 52 NNSSL_CACERT_NINTENDO_CA = 0x01, 53 NNSSL_CACERT_NINTENDO_CA_G2 = 0x02, 54 NNSSL_CACERT_NINTENDO_CA_G3 = 0x03, 55 NNSSL_CACERT_NINTENDO_CLASS2_CA = 0x04, 56 NNSSL_CACERT_NINTENDO_CLASS2_CA_G2 = 0x05, 57 NNSSL_CACERT_NINTENDO_CLASS2_CA_G3 = 0x06, 58 NNSSL_CACERT_PUBLIC_CA_1 = 0x07, 59 NNSSL_CACERT_PUBLIC_CA_2 = 0x08, 60 NNSSL_CACERT_PUBLIC_CA_3 = 0x09, 61 NNSSL_CACERT_PUBLIC_CA_4 = 0x0a, 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 65 }; 66 67 68 /** 69 * 機器内蔵CRLの定義 70 */ 71 enum NnSslInternalCrl 72 { 73 NNSSL_CRL_DEFAULT = 0x20 74 }; 75 76 /** 77 * 機器内蔵クライアント証明書の定義 78 */ 79 enum NnSslInternalClientCert 80 { 81 NNSSL_CLIENTCERT_DEFAULT = 0x40, 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 * 証明書検証結果 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 }; 101 102 103 /*! 104 @} 105 */ 106 107 108 109 #ifdef __cplusplus 110 111 namespace nn { 112 namespace ssl { 113 114 /*! 115 * @brief 検証オプション 116 */ 117 enum VerifyOption 118 { 119 VERIFY_NONE = NNSSL_VERIFY_NONE, //!< 指定なし 120 VERIFY_COMMON_NAME = NNSSL_VERIFY_COMMON_NAME, //!< サーバ証明書のCommonName検証 121 VERIFY_ROOT_CA = NNSSL_VERIFY_ROOT_CA, //!< サーバ証明書のRootCA検証 122 VERIFY_DATE = NNSSL_VERIFY_DATE, //!< サーバ証明書のサーバ証明書の有効期限検証 123 VERIFY_SUBJECT_ALT_NAME = NNSSL_VERIFY_SUBJECT_ALT_NAME, //!< サーバ証明書のSubjectAlternativeName検証 124 VERIFY_EV = NNSSL_VERIFY_EV, //!< サーバ証明書のEV証明書検証(サーバ証明書がEV証明書に紐づいたもので無い限り検証失敗。) 125 USE_SESSION_CACHE = NNSSL_USE_SESSION_CACHE, //!< セッションの再利用(Session resumption。つまり同じホストに連続で接続する際、セッションの再利用を試行。) 126 //VERIFY_CHAIN = NSSL_VERIFY_CHAIN /* 現状はchain検証"のみ"をOFFにできないので、定義を廃止 */] 127 VERIFY_IGNORE = NNSSL_VERIFY_IGNORE, //!< 証明書検証を行うが、検証結果は無視して接続する 128 GET_ALL_SERVER_CERT_CHAIN = NNSSL_GET_ALL_SERVER_CERT_CHAIN //!< 証明書チェーン内の全証明書データを保存する 129 }; 130 131 132 /*! 133 * @brief 機器内蔵CA証明書の定義 134 */ 135 enum InternalCaCert 136 { 137 CACERT_NINTENDO_CA = NNSSL_CACERT_NINTENDO_CA, 138 CACERT_NINTENDO_CA_G2 = NNSSL_CACERT_NINTENDO_CA_G2, 139 CACERT_NINTENDO_CA_G3 = NNSSL_CACERT_NINTENDO_CA_G3, 140 CACERT_NINTENDO_CLASS2_CA = NNSSL_CACERT_NINTENDO_CLASS2_CA, 141 CACERT_NINTENDO_CLASS2_CA_G2 = NNSSL_CACERT_NINTENDO_CLASS2_CA_G2, 142 CACERT_NINTENDO_CLASS2_CA_G3 = NNSSL_CACERT_NINTENDO_CLASS2_CA_G3, 143 CACERT_PUBLIC_CA_1 = NNSSL_CACERT_PUBLIC_CA_1, 144 CACERT_PUBLIC_CA_2 = NNSSL_CACERT_PUBLIC_CA_2, 145 CACERT_PUBLIC_CA_3 = NNSSL_CACERT_PUBLIC_CA_3, 146 CACERT_PUBLIC_CA_4 = NNSSL_CACERT_PUBLIC_CA_4, 147 148 CACERT_NUM_INTERNAL = NNSSL_CACERT_NUM_INTERNAL 149 }; 150 151 152 /*! 153 * @brief 機器内蔵CRLの定義 154 */ 155 enum InternalCrl 156 { 157 CRL_DEFAULT = NNSSL_CRL_DEFAULT 158 }; 159 160 161 /*! 162 * @brief 機器内蔵クライアント証明書の定義 163 */ 164 enum InternalClientCert 165 { 166 CLIENTCERT_DEFAULT = NNSSL_CLIENTCERT_DEFAULT, 167 168 CLIENTCERT_NUM_INTERNAL = NNSSL_CLIENTCERT_NUM_INTERNAL 169 }; 170 171 172 /*! 173 * @brief 証明書検証結果 174 * (各定義はビット定義となっており、複数定義の論理和を用いて、複数エラーをまとめた定義とすることも可能。 175 * @ref GetCertVerifyErrors()で得られる証明書検証結果は、そのような値である。) 176 */ 177 enum CertVerifyError 178 { 179 CERT_VERIFYERROR_COMMON_NAME = NNSSL_CERT_VERIFYERROR_COMMON_NAME, //!< サーバー名がCommon NameとSubjectAltName拡張領域のいずれとも不整合 180 CERT_VERIFYERROR_ROOT_CA = NNSSL_CERT_VERIFYERROR_ROOT_CA, //!< RootCAの不整合 181 CERT_VERIFYERROR_DATE = NNSSL_CERT_VERIFYERROR_DATE, //!< 証明書の有効期限切れ 182 CERT_VERIFYERROR_CHAIN = NNSSL_CERT_VERIFYERROR_CHAIN, //!< 証明書チェーンの検証NG 183 CERT_VERIFYERROR_REVOKED = NNSSL_CERT_VERIFYERROR_REVOKED //!< 証明書は無効化されている 184 }; 185 186 187 188 } // end of namespace ssl 189 } // end of namespace nn 190 191 192 #endif /*__cplusplus*/ 193 194 #define SSL_CERT_SIZE CERT_SIZE /** 証明書の最大サイズ 2K */ 195 #define SSL_CERTS_MAX NSSL_CERTS_MAX /** 登録できる証明書の最大数。ビルトイン証明書の数も含めた数です。 */ 196 #define SSL_CERTSTORE_MAX NSSL_CERTSTORE_MAX /** 作成できる証明書ストアの最大数 */ 197 #define SSL_CERTS_PER_STORE NSSL_CERTS_PER_STORE /** 一つの証明書ストアにセットできる証明書の最大数 */ 198 #define SSL_CRLS_MAX NSSL_CRLS_MAX /** 登録できるCRLの最大数 */ 199 #define SSL_CRLSTORE_MAX NSSL_CRLSTORE_MAX /** 作成できるCRLストアの最大数 */ 200 #define SSL_CRLS_PER_STORE NSSL_CRLS_PER_STORE /** 一つのCRLストアにセットできるCRLの最大数 */ 201 #define SSL_EV_MAX NSSL_EV_MAX /** 登録できるEV証明書ポリシーIDの数 */ 202 203 #endif /* NN_SSL_SSL_CONST_H_ */ 204