Reviewed by Don.
[WebKit-https.git] / WebKit / WebCoreSupport.subproj / WebNewKeyGeneration.c
index f0059ba7382c977e850b799cf29cca50422fe14d..ed1da0a51e4de46f52dd45e9f17d00ee1a034f64 100644 (file)
 
 #ifdef USE_NEW_KEY_GENERATION
 
 
 #ifdef USE_NEW_KEY_GENERATION
 
+#import <Security/asn1Templates.h>
+#import <Security/SecAsn1Coder.h>
+#import <Security/secasn1t.h>
+#import <Security/Security.h>
+
+/*
+ * 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 <WebKit/WebAssertions.h>
 
 #import <Security/keyTemplates.h>
 #import <WebKit/WebAssertions.h>
 
 #import <Security/keyTemplates.h>