1 /*---------------------------------------------------------------------------*
2   Project:  Horizon
3   File:     nssl_restricted.h
4   Copyright (C)2009 Nintendo Co., Ltd.  All rights reserved.
5   These coded instructions, statements, and computer programs contain
6   proprietary information of Nintendo of America Inc. and/or Nintendo
7   Company Ltd., and are protected by Federal copyright law. They may
8   not be disclosed to third parties or copied or duplicated in any form,
9   in whole or in part, without the prior written consent of Nintendo.
10   $Rev: 28581 $
11  *---------------------------------------------------------------------------
12 
13 
14 */
15 
16 #ifndef __NSSL_RESTRICTED_H__
17 #define __NSSL_RESTRICTED_H__
18 
19 #ifdef  __cplusplus
20 extern "C" {
21 #endif  // __cplusplus
22 
23 /*---------------------------------------------------------------------------*
24  * Includes
25  *---------------------------------------------------------------------------*/
26 
27 #include <nn/net/compatible/nos.h>
28 
29 /*---------------------------------------------------------------------------*
30  * Definitions
31  *---------------------------------------------------------------------------*/
32 #define NSSL_MAX_SSLCERT_NAME_BUF_LEN            256 /* Only used in NSSLCertInfo */
33 
34 /* errors that are set in verifyCB() */
35 #define NSSL_VERIFYERRORS_COMMON_NAME            0x01
36 #define NSSL_VERIFYERRORS_ROOT_CA                0x02
37 #define NSSL_VERIFYERRORS_DATE                   0x04
38 #define NSSL_VERIFYERRORS_CHAIN                  0x08
39 #define NSSL_VERIFYERRORS_REVOKED_CERT           0x20
40 #define NSSL_VERIFYERRORS_USER                   0x40
41 #define NSSL_VERIFYERRORS_EV                     0x80
42 
43 #define NSSL_CPS_URI_LENGTH                      256
44 
45 /*---------------------------------------------------------------------------*
46  * EV Policy ID
47  *---------------------------------------------------------------------------*/
48 #define NSSL_EVID_COMODO             "1.3.6.1.4.1.6449.1.2.1.5.1"
49 #define NSSL_EVID_CYBERTRUST         "1.3.6.1.4.1.6334.1.100.1"
50 #define NSSL_EVID_DIGICERT           "2.16.840.1.114412.2.1"
51 #define NSSL_EVID_DIGINOTAR          "2.16.528.1.1001.1.1.1"
52 #define NSSL_EVID_ENTRUST            "2.16.840.1.114028.10.1.2"
53 #define NSSL_EVID_GEOTRUST           "1.3.6.1.4.1.14370.1.6"
54 #define NSSL_EVID_GLOBALSIGN         "1.3.6.1.4.1.4146.1.1"
55 #define NSSL_EVID_GODADDY            "2.16.840.1.114413.1.7.23.3"
56 #define NSSL_EVID_NETWORKSOLUTIONS   "1.3.6.1.4.1.782.1.2.1.8.1"
57 #define NSSL_EVID_QUOVADIS           "1.3.6.1.4.1.8024.0.2.100.1.2"
58 #define NSSL_EVID_SECOM              "1.2.392.200091.100.731.1"
59 #define NSSL_EVID_STARFIELD          "2.16.840.1.114414.1.7.23.3"
60 #define NSSL_EVID_SWISSSIGN          "2.16.756.1.89.1.2.1.1"
61 #define NSSL_EVID_THAWTE             "2.16.840.1.113733.1.7.48.1"
62 #define NSSL_EVID_TRUSTWAVE          "2.16.840.1.114404.1.1.2.4.1"
63 #define NSSL_EVID_VERISIGN           "2.16.840.1.113733.1.7.23.6"
64 
65 /*---------------------------------------------------------------------------*
66  * Types/Declarations
67  *---------------------------------------------------------------------------*/
68 
69 typedef struct NSSLCertInfo {
70     char subjectName[NSSL_MAX_SSLCERT_NAME_BUF_LEN];
71     char issuerName[NSSL_MAX_SSLCERT_NAME_BUF_LEN];
72     u8* serialNumber; // big-endian byte stream
73     u32 serialNumberSize;
74     u32 notBefore; // seconds
75     u32 notAfter;  // seconds
76     u8 fingerPrint[20];
77 
78     BOOL isEV;
79     u8 cpsURI[NSSL_CPS_URI_LENGTH];
80 
81 } NSSLCertInfo;
82 
83 typedef BOOL (*NSSLVerifyCallback)( u32 errors,
84                                     const NSSLCertInfo* serverCertInfo,
85                                     const NSSLCertInfo* rootCACertInfo,
86                                     void* userArg );
87 
88 /*---------------------------------------------------------------------------*
89  * Function Prototypes
90  *---------------------------------------------------------------------------*/
91 s32     NSSL_SetVerifyCallback    ( NSSLId sslId, NSSLVerifyCallback verifyCallback, void* userArg );
92 s32     NSSL_AddEVPolicyId(NSSLId sslId, char *policyId);
93 
94 #ifdef  __cplusplus
95 }
96 #endif  // __cplusplus
97 #endif  // __NSSL_RESTRICTED_H__
98