summaryrefslogtreecommitdiffstats
path: root/src/kdc/pkinit_apple_server.c
diff options
context:
space:
mode:
authorGreg Hudson <ghudson@mit.edu>2012-04-26 21:46:57 +0000
committerGreg Hudson <ghudson@mit.edu>2012-04-26 21:46:57 +0000
commit7150b8eab9fb4bf643dd1a7ac4f5be3ca455dfcb (patch)
tree4134a3be28c14b2357f3b8811abd61cb8329a809 /src/kdc/pkinit_apple_server.c
parent7385d4bc68f58a766e5a7dcc17ce4aba2acaf2af (diff)
downloadkrb5-7150b8eab9fb4bf643dd1a7ac4f5be3ca455dfcb.tar.gz
krb5-7150b8eab9fb4bf643dd1a7ac4f5be3ca455dfcb.tar.xz
krb5-7150b8eab9fb4bf643dd1a7ac4f5be3ca455dfcb.zip
Remove orphaned Apple PKINIT support
git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@25830 dc483132-0cff-0310-8789-dd5450dbe970
Diffstat (limited to 'src/kdc/pkinit_apple_server.c')
-rw-r--r--src/kdc/pkinit_apple_server.c241
1 files changed, 0 insertions, 241 deletions
diff --git a/src/kdc/pkinit_apple_server.c b/src/kdc/pkinit_apple_server.c
deleted file mode 100644
index 4252edabd6..0000000000
--- a/src/kdc/pkinit_apple_server.c
+++ /dev/null
@@ -1,241 +0,0 @@
-/* -*- mode: c; c-basic-offset: 4; indent-tabs-mode: nil -*- */
-/*
- * Copyright (c) 2004-2008 Apple Inc. All Rights Reserved.
- *
- * Export of this software from the United States of America may require
- * a specific license from the United States Government. It is the
- * responsibility of any person or organization contemplating export to
- * obtain such a license before exporting.
- *
- * WITHIN THAT CONSTRAINT, permission to use, copy, modify, and
- * distribute this software and its documentation for any purpose and
- * without fee is hereby granted, provided that the above copyright
- * notice appear in all copies and that both that copyright notice and
- * this permission notice appear in supporting documentation, and that
- * the name of Apple Inc. not be used in advertising or publicity pertaining
- * to distribution of the software without specific, written prior
- * permission. Apple Inc. makes no representations about the suitability of
- * this software for any purpose. It is provided "as is" without express
- * or implied warranty.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
- * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- */
-
-/*
- * pkinit_apple_server.c - Server side routines for PKINIT, Mac OS X version
- *
- * Created 21 May 2004 by Doug Mitchell at Apple.
- */
-
-#if APPLE_PKINIT
-
-#include "pkinit_server.h"
-#include "pkinit_asn1.h"
-#include "pkinit_cms.h"
-#include <assert.h>
-
-#define PKINIT_DEBUG 0
-#if PKINIT_DEBUG
-#define pkiDebug(args...) printf(args)
-#else
-#define pkiDebug(args...)
-#endif
-
-/*
- * Parse PA-PK-AS-REQ message. Optionally evaluates the message's certificate chain.
- * Optionally returns various components.
- */
-krb5_error_code krb5int_pkinit_as_req_parse(
- krb5_context context,
- const krb5_data *as_req,
- krb5_timestamp *kctime, /* optionally RETURNED */
- krb5_ui_4 *cusec, /* microseconds, optionally RETURNED */
- krb5_ui_4 *nonce, /* optionally RETURNED */
- krb5_checksum *pa_cksum, /* optional, contents mallocd and RETURNED */
- krb5int_cert_sig_status *cert_status,/* optionally RETURNED */
- krb5_ui_4 *num_cms_types, /* optionally RETURNED */
- krb5int_algorithm_id **cms_types, /* optionally mallocd and RETURNED */
-
- /*
- * Cert fields, all optionally RETURNED.
- *
- * signer_cert is the full X.509 leaf cert from the incoming SignedData.
- * all_certs is an array of all of the certs in the incoming SignedData,
- * in full X.509 form.
- */
- krb5_data *signer_cert, /* content mallocd */
- krb5_ui_4 *num_all_certs, /* sizeof *all_certs */
- krb5_data **all_certs, /* krb5_data's and their content mallocd */
-
- /*
- * Array of trustedCertifiers, optionally RETURNED. These are DER-encoded
- * issuer/serial numbers.
- */
- krb5_ui_4 *num_trusted_CAs, /* sizeof *trusted_CAs */
- krb5_data **trusted_CAs, /* krb5_data's and their content mallocd */
-
- /* KDC cert specified by client as kdcPkId. DER-encoded issuer/serial number. */
- krb5_data *kdc_cert)
-{
- krb5_error_code krtn;
- krb5_data signed_auth_pack = {0, 0, NULL};
- krb5_data raw_auth_pack = {0, 0, NULL};
- krb5_data *raw_auth_pack_p = NULL;
- krb5_boolean proceed = FALSE;
- krb5_boolean need_auth_pack = FALSE;
- krb5int_cms_content_type content_type;
- krb5_pkinit_cert_db_t cert_db = NULL;
- krb5_boolean is_signed;
- krb5_boolean is_encrypted;
-
- assert(as_req != NULL);
-
- /*
- * We always have to decode the top-level AS-REQ...
- */
- krtn = krb5int_pkinit_pa_pk_as_req_decode(as_req, &signed_auth_pack,
- num_trusted_CAs, trusted_CAs, /* optional */
- kdc_cert); /* optional */
- if (krtn) {
- pkiDebug("krb5int_pkinit_pa_pk_as_req_decode returned %d\n", (int)krtn);
- return krtn;
- }
-
- /* Do we need info about or from the ContentInto or AuthPack? */
- if ((kctime != NULL) || (cusec != NULL) || (nonce != NULL) ||
- (pa_cksum != NULL) || (cms_types != NULL)) {
- need_auth_pack = TRUE;
- raw_auth_pack_p = &raw_auth_pack;
- }
- if (need_auth_pack || (cert_status != NULL) ||
- (signer_cert != NULL) || (all_certs != NULL)) {
- proceed = TRUE;
- }
- if (!proceed) {
- krtn = 0;
- goto err_out;
- }
-
- /* Parse and possibly verify the ContentInfo */
- krtn = krb5_pkinit_get_kdc_cert_db(&cert_db);
- if (krtn) {
- pkiDebug("pa_pk_as_req_parse: error in krb5_pkinit_get_kdc_cert_db\n");
- goto err_out;
- }
- krtn = krb5int_pkinit_parse_cms_msg(&signed_auth_pack, cert_db, TRUE,
- &is_signed, &is_encrypted,
- raw_auth_pack_p, &content_type, signer_cert, cert_status,
- num_all_certs, all_certs);
- if (krtn) {
- pkiDebug("krb5int_pkinit_parse_content_info returned %d\n", (int)krtn);
- goto err_out;
- }
-
- if (is_encrypted || !is_signed) {
- pkiDebug("pkinit_parse_content_info: is_encrypted %s is_signed %s!\n",
- is_encrypted ? "true" :"false",
- is_signed ? "true" : "false");
- krtn = KRB5KDC_ERR_PREAUTH_FAILED;
- goto err_out;
- }
- if (content_type != ECT_PkAuthData) {
- pkiDebug("authPack eContentType %d!\n", (int)content_type);
- krtn = KRB5KDC_ERR_PREAUTH_FAILED;
- goto err_out;
- }
-
- /* optionally parse contents of authPack */
- if (need_auth_pack) {
- krtn = krb5int_pkinit_auth_pack_decode(&raw_auth_pack, kctime,
- cusec, nonce, pa_cksum,
- cms_types, num_cms_types);
- if(krtn) {
- pkiDebug("krb5int_pkinit_auth_pack_decode returned %d\n", (int)krtn);
- goto err_out;
- }
- }
-
-err_out:
- /* free temp mallocd data that we didn't pass back to caller */
- if(signed_auth_pack.data) {
- free(signed_auth_pack.data);
- }
- if(raw_auth_pack.data) {
- free(raw_auth_pack.data);
- }
- if(cert_db) {
- krb5_pkinit_release_cert_db(cert_db);
- }
- return krtn;
-}
-
-/*
- * Create a PA-PK-AS-REP message, public key (no Diffie Hellman) version.
- *
- * PA-PK-AS-REP is based on ReplyKeyPack like so:
- *
- * PA-PK-AS-REP ::= EnvelopedData(SignedData(ReplyKeyPack))
- */
-krb5_error_code krb5int_pkinit_as_rep_create(
- krb5_context context,
- const krb5_keyblock *key_block,
- const krb5_checksum *checksum, /* checksum of corresponding AS-REQ */
- krb5_pkinit_signing_cert_t signer_cert, /* server's cert */
- krb5_boolean include_server_cert,/* include signer_cert in SignerInfo */
- const krb5_data *recipient_cert, /* client's cert */
-
- /*
- * These correspond to the same out-parameters from
- * krb5int_pkinit_as_req_parse(). All are optional.
- */
- krb5_ui_4 num_cms_types,
- const krb5int_algorithm_id *cms_types,
- krb5_ui_4 num_trusted_CAs,
- krb5_data *trusted_CAs,
- krb5_data *kdc_cert,
-
- krb5_data *as_rep) /* mallocd and RETURNED */
-{
- krb5_data reply_key_pack = {0, 0, NULL};
- krb5_error_code krtn;
- krb5_data enc_key_pack = {0, 0, NULL};
-
- /* innermost content = ReplyKeyPack */
- krtn = krb5int_pkinit_reply_key_pack_encode(key_block, checksum,
- &reply_key_pack);
- if (krtn) {
- return krtn;
- }
-
- /*
- * Put that in an EnvelopedData(SignedData)
- * -- SignedData.EncapsulatedData.ContentType = id-pkinit-rkeyData
- */
- krtn = krb5int_pkinit_create_cms_msg(&reply_key_pack,
- signer_cert,
- recipient_cert,
- ECT_PkReplyKeyKata,
- num_cms_types, cms_types,
- &enc_key_pack);
- if (krtn) {
- goto err_out;
- }
-
- /*
- * Finally, wrap that inside of PA-PK-AS-REP
- */
- krtn = krb5int_pkinit_pa_pk_as_rep_encode(NULL, &enc_key_pack, as_rep);
-
-err_out:
- if (reply_key_pack.data) {
- free(reply_key_pack.data);
- }
- if (enc_key_pack.data) {
- free(enc_key_pack.data);
- }
- return krtn;
-}
-
-#endif /* APPLE_PKINIT */