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