X-Git-Url: https://git.webkit.org/?p=WebKit-https.git;a=blobdiff_plain;f=WebKit%2FWebCoreSupport.subproj%2FWebNewKeyGeneration.c;h=ed1da0a51e4de46f52dd45e9f17d00ee1a034f64;hp=f0059ba7382c977e850b799cf29cca50422fe14d;hb=9a949af5039a56f4ce13747f10d06c4a5d61addd;hpb=f0c2837adc8b6b50c7d3e363c3db44d15d5405ce diff --git a/WebKit/WebCoreSupport.subproj/WebNewKeyGeneration.c b/WebKit/WebCoreSupport.subproj/WebNewKeyGeneration.c index f0059ba7382c..ed1da0a51e4d 100644 --- a/WebKit/WebCoreSupport.subproj/WebNewKeyGeneration.c +++ b/WebKit/WebCoreSupport.subproj/WebNewKeyGeneration.c @@ -11,6 +11,60 @@ #ifdef USE_NEW_KEY_GENERATION +#import +#import +#import +#import + +/* + * Netscape Certifiate Sequence is defined by Netscape as a PKCS7 + * ContentInfo with a contentType of netscape-cert-sequence and a content + * consisting of a sequence of certificates. + * + * For simplicity - i.e., to avoid the general purpose ContentInfo + * polymorphism - we'll just hard-code this particular type right here. + * + * Inside the ContentInfo is an array of standard X509 certificates. + * We don't need to parse the certs themselves so they remain as + * opaque data blobs. + */ +typedef struct { + CSSM_OID contentType; // netscape-cert-sequence + CSSM_DATA **certs; +} NetscapeCertSequence; + +extern const SecAsn1Template NetscapeCertSequenceTemplate[]; + +/* + * Public key/challenge, to send to CA. + * + * PublicKeyAndChallenge ::= SEQUENCE { + * + * ???\200? spki SubjectPublicKeyInfo, + * challenge IA5STRING + * } + * + * SignedPublicKeyAndChallenge ::= SEQUENCE { + * publicKeyAndChallenge PublicKeyAndChallenge, + * signatureAlgorithm AlgorithmIdentifier, + * signature BIT STRING + * } + */ +typedef struct { + CSSM_X509_SUBJECT_PUBLIC_KEY_INFO spki; + CSSM_DATA challenge; // ASCII +} PublicKeyAndChallenge; + +typedef struct { + PublicKeyAndChallenge pubKeyAndChallenge; + CSSM_X509_ALGORITHM_IDENTIFIER algId; + CSSM_DATA signature; // length in BITS +} SignedPublicKeyAndChallenge; + +extern const SecAsn1Template PublicKeyAndChallengeTemplate[]; +extern const SecAsn1Template SignedPublicKeyAndChallengeTemplate[]; + + #import #import