1 /* Copyright (c) 2012 The Chromium Authors. All rights reserved. 2 * Use of this source code is governed by a BSD-style license that can be 3 * found in the LICENSE file. 4 */ 5 6 /** 7 * This file defines the <code>PPB_X509Certificate_Private</code> interface for 8 * an X509 certificate. 9 */ 10 11 label Chrome { 12 M19 = 0.1 13 }; 14 15 /** 16 * This enumeration corresponds to fields of an X509 certificate. Refer to 17 * <a href="http://www.ietf.org/rfc/rfc5280.txt>RFC 5280</a> for further 18 * documentation about particular fields. 19 */ 20 [assert_size(4)] 21 enum PP_X509Certificate_Private_Field { 22 /** This corresponds to a string (<code>PP_VARTYPE_STRING</code>). */ 23 PP_X509CERTIFICATE_PRIVATE_ISSUER_COMMON_NAME = 0, 24 25 /** This corresponds to a string (<code>PP_VARTYPE_STRING</code>). */ 26 PP_X509CERTIFICATE_PRIVATE_ISSUER_LOCALITY_NAME = 1, 27 28 /** This corresponds to a string (<code>PP_VARTYPE_STRING</code>). */ 29 PP_X509CERTIFICATE_PRIVATE_ISSUER_STATE_OR_PROVINCE_NAME = 2, 30 31 /** This corresponds to a string (<code>PP_VARTYPE_STRING</code>). */ 32 PP_X509CERTIFICATE_PRIVATE_ISSUER_COUNTRY_NAME = 3, 33 34 /** This corresponds to a string (<code>PP_VARTYPE_STRING</code>). */ 35 PP_X509CERTIFICATE_PRIVATE_ISSUER_ORGANIZATION_NAME = 4, 36 37 /** This corresponds to a string (<code>PP_VARTYPE_STRING</code>). */ 38 PP_X509CERTIFICATE_PRIVATE_ISSUER_ORGANIZATION_UNIT_NAME = 5, 39 40 /** 41 * Note: This field is unimplemented and will return 42 * <code>PP_VARTYPE_NULL</code>. 43 */ 44 PP_X509CERTIFICATE_PRIVATE_ISSUER_UNIQUE_ID = 6, 45 46 /** This corresponds to a string (<code>PP_VARTYPE_STRING</code>). */ 47 PP_X509CERTIFICATE_PRIVATE_SUBJECT_COMMON_NAME = 7, 48 49 /** This corresponds to a string (<code>PP_VARTYPE_STRING</code>). */ 50 PP_X509CERTIFICATE_PRIVATE_SUBJECT_LOCALITY_NAME = 8, 51 52 /** This corresponds to a string (<code>PP_VARTYPE_STRING</code>). */ 53 PP_X509CERTIFICATE_PRIVATE_SUBJECT_STATE_OR_PROVINCE_NAME = 9, 54 55 /** This corresponds to a string (<code>PP_VARTYPE_STRING</code>). */ 56 PP_X509CERTIFICATE_PRIVATE_SUBJECT_COUNTRY_NAME = 10, 57 58 /** This corresponds to a string (<code>PP_VARTYPE_STRING</code>). */ 59 PP_X509CERTIFICATE_PRIVATE_SUBJECT_ORGANIZATION_NAME = 11, 60 61 /** This corresponds to a string (<code>PP_VARTYPE_STRING</code>). */ 62 PP_X509CERTIFICATE_PRIVATE_SUBJECT_ORGANIZATION_UNIT_NAME = 12, 63 64 /** 65 * Note: This field is unimplemented and will return 66 * <code>PP_VARTYPE_NULL</code>. 67 */ 68 PP_X509CERTIFICATE_PRIVATE_SUBJECT_UNIQUE_ID = 13, 69 70 /** 71 * Note: This field is unimplemented and will return 72 * <code>PP_VARTYPE_NULL</code>. 73 */ 74 PP_X509CERTIFICATE_PRIVATE_VERSION = 14, 75 76 /** 77 * This corresponds to a byte array (<code>PP_VARTYPE_ARRAY_BUFFER</code>). 78 * The serial number may include a leading 0. 79 */ 80 PP_X509CERTIFICATE_PRIVATE_SERIAL_NUMBER = 15, 81 82 /** 83 * Note: This field is unimplemented and will return 84 * <code>PP_VARTYPE_NULL</code>. 85 */ 86 PP_X509CERTIFICATE_PRIVATE_SIGNATURE_ALGORITHM_OID = 16, 87 88 /** 89 * Note: This field is unimplemented and will return 90 * <code>PP_VARTYPE_NULL</code>. 91 */ 92 PP_X509CERTIFICATE_PRIVATE_SIGNATURE_ALGORITHM_PARAMATERS_RAW = 17, 93 94 /** 95 * This corresponds to a double (<code>PP_VARTYPE_DOUBLE</code>) which 96 * can be cast to a <code>PP_TIME</code>. 97 */ 98 PP_X509CERTIFICATE_PRIVATE_VALIDITY_NOT_BEFORE = 18, 99 100 /** 101 * This corresponds to a double (<code>PP_VARTYPE_DOUBLE</code>) which 102 * can be cast to a <code>PP_TIME</code>. 103 */ 104 PP_X509CERTIFICATE_PRIVATE_VALIDITY_NOT_AFTER = 19, 105 106 /** This corresponds to a string (<code>PP_VARTYPE_STRING</code>). */ 107 PP_X509CERTIFICATE_PRIVATE_SUBJECT_PUBLIC_KEY_ALGORITHM_OID = 20, 108 109 /** 110 * Note: This field is unimplemented and will return 111 * <code>PP_VARTYPE_NULL</code>. 112 */ 113 PP_X509CERTIFICATE_PRIVATE_SUBJECT_PUBLIC_KEY = 21, 114 115 /** 116 * This corresponds to a byte array (<code>PP_VARTYPE_ARRAY_BUFFER</code>). 117 * This is the DER-encoded representation of the certificate. 118 */ 119 PP_X509CERTIFICATE_PRIVATE_RAW = 22, 120 121 /** This corresponds to a string (<code>PP_VARTYPE_STRING</code>). */ 122 PP_X509CERTIFICATE_PRIVATE_ISSUER_DISTINGUISHED_NAME = 23, 123 124 /** This corresponds to a string (<code>PP_VARTYPE_STRING</code>). */ 125 PP_X509CERTIFICATE_PRIVATE_SUBJECT_DISTINGUISHED_NAME = 24 126 }; 127 128 /** 129 * This enumeration defines the different possible values for X5O9 certificate 130 * versions as returned by: 131 * <code>GetField(resource, PP_X509CERTIFICATE_PRIVATE_VERSION)</code>. 132 */ 133 [assert_size(4)] 134 enum PPB_X509Certificate_Private_Version { 135 PP_X509CERTIFICATE_PRIVATE_V1 = 0, 136 PP_X509CERTIFICATE_PRIVATE_V2 = 1, 137 PP_X509CERTIFICATE_PRIVATE_V3 = 2 138 }; 139 140 /** 141 * The <code>PPB_X509Certificate_Private</code> interface provides access to 142 * the fields of an X509 certificate. 143 */ 144 interface PPB_X509Certificate_Private { 145 /** 146 * Allocates a <code>PPB_X509Certificate_Private</code> resource. 147 * <code>Initialize()</code> must be called before using the certificate. 148 */ 149 PP_Resource Create([in] PP_Instance instance); 150 151 /** 152 * Returns <code>PP_TRUE</code> if a given resource is a 153 * <code>PPB_X509Certificate_Private</code>. 154 */ 155 PP_Bool IsX509CertificatePrivate([in] PP_Resource resource); 156 157 /** 158 * Initializes a <code>PPB_X509Certificate_Private</code> from the DER-encoded 159 * representation. |bytes| should represent only a single certificate. 160 * <code>PP_FALSE</code> is returned if |bytes| is not a valid DER-encoding of 161 * a certificate. Note: Flash requires this to be synchronous. 162 */ 163 PP_Bool Initialize([in] PP_Resource resource, 164 [in] str_t bytes, 165 [in] uint32_t length); 166 167 /** 168 * Get a field of the X509Certificate as a <code>PP_Var</code>. A null 169 * <code>PP_Var</code> is returned if the field is unavailable. 170 */ 171 PP_Var GetField([in] PP_Resource resource, 172 [in] PP_X509Certificate_Private_Field field); 173 }; 174