1/* 2 * Copyright (c) 2003-2006,2008,2010-2012 Apple Inc. All Rights Reserved. 3 * 4 * @APPLE_LICENSE_HEADER_START@ 5 * 6 * This file contains Original Code and/or Modifications of Original Code 7 * as defined in and that are subject to the Apple Public Source License 8 * Version 2.0 (the 'License'). You may not use this file except in 9 * compliance with the License. Please obtain a copy of the License at 10 * http://www.opensource.apple.com/apsl/ and read it before using this 11 * file. 12 * 13 * The Original Code and all software distributed under the License are 14 * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER 15 * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, 16 * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, 17 * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. 18 * Please see the License for the specific language governing rights and 19 * limitations under the License. 20 * 21 * @APPLE_LICENSE_HEADER_END@ 22 * 23 * csrTemplates.cpp - ASN1 templates Cert Signing Requests (per PKCS10). 24 */ 25 26#include "SecAsn1Templates.h" 27#include <stddef.h> 28#include "csrTemplates.h" 29#include "keyTemplates.h" 30 31const SecAsn1Template kSecAsn1CertRequestInfoTemplate[] = { 32 { SEC_ASN1_SEQUENCE, 0, NULL, sizeof(NSSCertRequestInfo) }, 33 { SEC_ASN1_INTEGER, offsetof(NSSCertRequestInfo,version) }, 34 { SEC_ASN1_INLINE, 35 offsetof(NSSCertRequestInfo,subject), 36 kSecAsn1NameTemplate }, 37 { SEC_ASN1_INLINE, 38 offsetof(NSSCertRequestInfo,subjectPublicKeyInfo), 39 kSecAsn1SubjectPublicKeyInfoTemplate }, 40 { SEC_ASN1_CONSTRUCTED | SEC_ASN1_CONTEXT_SPECIFIC | 0, 41 offsetof(NSSCertRequestInfo,attributes), 42 kSecAsn1SetOfAttributeTemplate }, 43 { 0 } 44}; 45 46const SecAsn1Template kSecAsn1CertRequestTemplate[] = { 47 { SEC_ASN1_SEQUENCE, 0, NULL, sizeof(NSSCertRequest) }, 48 { SEC_ASN1_INLINE, 49 offsetof(NSSCertRequest,reqInfo), 50 kSecAsn1CertRequestInfoTemplate }, 51 { SEC_ASN1_INLINE, 52 offsetof(NSSCertRequest,signatureAlgorithm), 53 kSecAsn1AlgorithmIDTemplate }, 54 { SEC_ASN1_BIT_STRING, offsetof(NSSCertRequest,signature) }, 55 { 0 } 56}; 57 58const SecAsn1Template kSecAsn1SignedCertRequestTemplate[] = { 59 { SEC_ASN1_SEQUENCE, 0, NULL, sizeof(NSS_SignedCertRequest) }, 60 { SEC_ASN1_ANY, 61 offsetof(NSS_SignedCertRequest,certRequestBlob), 62 kSecAsn1CertRequestInfoTemplate }, 63 { SEC_ASN1_INLINE, 64 offsetof(NSS_SignedCertRequest,signatureAlgorithm), 65 kSecAsn1AlgorithmIDTemplate }, 66 { SEC_ASN1_BIT_STRING, offsetof(NSS_SignedCertRequest,signature) }, 67 { 0 } 68}; 69 70