@@ -4,7 +4,9 @@ use crate::{
44} ;
55use anyhow:: bail;
66use dcap_types:: cert:: {
7- SgxExtensions , SGX_PCK_CERT_CN , SGX_PCK_PLATFORM_CA_CN , SGX_PCK_PROCESSOR_CA_CN ,
7+ SgxExtensions , INTEL_SGX_COUNTRY_NAME , INTEL_SGX_LOCALITY_NAME , INTEL_SGX_ORGANIZATION_NAME ,
8+ INTEL_SGX_PCK_CERT_COMMON_NAME , INTEL_SGX_PCK_PLATFORM_CA_COMMON_NAME ,
9+ INTEL_SGX_PCK_PROCESSOR_CA_COMMON_NAME , INTEL_SGX_STATE_OR_PROVINCE_NAME ,
810} ;
911use openssl:: {
1012 asn1:: { Asn1Integer , Asn1Object , Asn1OctetString , Asn1Time } ,
@@ -202,20 +204,20 @@ pub enum PckCa {
202204impl PckCa {
203205 /// Create a PckCa from the CN of the certificate
204206 pub fn from_cn ( cn : & str ) -> Result < Self , anyhow:: Error > {
205- if cn == SGX_PCK_PROCESSOR_CA_CN {
207+ if cn == INTEL_SGX_PCK_PROCESSOR_CA_COMMON_NAME {
206208 Ok ( PckCa :: Processor )
207- } else if cn == SGX_PCK_PLATFORM_CA_CN {
209+ } else if cn == INTEL_SGX_PCK_PLATFORM_CA_COMMON_NAME {
208210 Ok ( PckCa :: Platform )
209211 } else {
210- bail ! ( "Invalid PCK CA CN: {}" , cn)
212+ bail ! ( "Invalid PCK CA CN: {}" , cn) ;
211213 }
212214 }
213215
214216 /// Get the CN of the PckCa
215217 pub fn cn ( & self ) -> & ' static str {
216218 match self {
217- PckCa :: Processor => SGX_PCK_PROCESSOR_CA_CN ,
218- PckCa :: Platform => SGX_PCK_PLATFORM_CA_CN ,
219+ PckCa :: Processor => INTEL_SGX_PCK_PROCESSOR_CA_COMMON_NAME ,
220+ PckCa :: Platform => INTEL_SGX_PCK_PLATFORM_CA_COMMON_NAME ,
219221 }
220222 }
221223
@@ -298,7 +300,7 @@ pub fn gen_pck_cert(
298300 Asn1Integer :: from_bn ( BigNum :: from_slice ( calc_skid ( pck_cert_pkey) . as_slice ( ) ) ?. as_ref ( ) ) ?
299301 . as_ref ( ) ,
300302 ) ?;
301- builder. set_subject_name ( build_x509_name ( SGX_PCK_CERT_CN ) ?. as_ref ( ) ) ?;
303+ builder. set_subject_name ( build_x509_name ( INTEL_SGX_PCK_CERT_COMMON_NAME ) ?. as_ref ( ) ) ?;
302304 builder. set_pubkey ( pck_cert_pkey) ?;
303305
304306 builder. set_not_before ( & validity. not_before ( ) ) ?;
@@ -463,10 +465,26 @@ impl Validity {
463465pub fn build_x509_name ( cn : & str ) -> Result < X509Name , ErrorStack > {
464466 let mut builder = X509Name :: builder ( ) ?;
465467 builder. append_entry_by_text ( "CN" , cn) ?;
466- builder. append_entry_by_text ( "O" , "Intel Corporation" ) ?;
467- builder. append_entry_by_text ( "L" , "Santa Clara" ) ?;
468- builder. append_entry_by_text ( "ST" , "CA" ) ?;
469- builder. append_entry_by_text ( "C" , "US" ) ?;
468+ builder. append_entry_by_text ( "O" , INTEL_SGX_ORGANIZATION_NAME ) ?;
469+ builder. append_entry_by_text ( "L" , INTEL_SGX_LOCALITY_NAME ) ?;
470+ builder. append_entry_by_text ( "ST" , INTEL_SGX_STATE_OR_PROVINCE_NAME ) ?;
471+ builder. append_entry_by_text ( "C" , INTEL_SGX_COUNTRY_NAME ) ?;
472+ Ok ( builder. build ( ) )
473+ }
474+
475+ pub fn build_x509_name_with_values (
476+ cn : & str ,
477+ o : & str ,
478+ l : & str ,
479+ st : & str ,
480+ c : & str ,
481+ ) -> Result < X509Name , ErrorStack > {
482+ let mut builder = X509Name :: builder ( ) ?;
483+ builder. append_entry_by_text ( "CN" , cn) ?;
484+ builder. append_entry_by_text ( "O" , o) ?;
485+ builder. append_entry_by_text ( "L" , l) ?;
486+ builder. append_entry_by_text ( "ST" , st) ?;
487+ builder. append_entry_by_text ( "C" , c) ?;
470488 Ok ( builder. build ( ) )
471489}
472490
0 commit comments