+++ /dev/null
-/*
- * Copyright (c) 2001,2011,2014 Apple Inc. All Rights Reserved.
- *
- * @APPLE_LICENSE_HEADER_START@
- *
- * This file contains Original Code and/or Modifications of Original Code
- * as defined in and that are subject to the Apple Public Source License
- * Version 2.0 (the 'License'). You may not use this file except in
- * compliance with the License. Please obtain a copy of the License at
- * http://www.opensource.apple.com/apsl/ and read it before using this
- * file.
- *
- * The Original Code and all software distributed under the License are
- * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
- * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
- * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
- * Please see the License for the specific language governing rights and
- * limitations under the License.
- *
- * @APPLE_LICENSE_HEADER_END@
- */
-
-
-#ifndef _CRYPTKIT_DER_H_
-#define _CRYPTKIT_DER_H_
-
-#include <security_cryptkit/ckconfig.h>
-
-#if CRYPTKIT_DER_ENABLE
-
-#include <security_cryptkit/feeTypes.h>
-#include <security_cryptkit/feePublicKey.h>
-#include <security_cryptkit/giantIntegers.h>
-#include <security_cryptkit/falloc.h>
-#include <security_cryptkit/curveParams.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/*
- * Encode/decode the two FEE signature types. We malloc returned data via
- * falloc(); caller must free via ffree().
- */
-feeReturn feeDEREncodeElGamalSignature(
- giant u,
- giant PmX,
- unsigned char **encodedSig, // fallocd and RETURNED
- unsigned *encodedSigLen); // RETURNED
-
-feeReturn feeDEREncodeECDSASignature(
- giant c,
- giant d,
- unsigned char **encodedSig, // fallocd and RETURNED
- unsigned *encodedSigLen); // RETURNED
-
-feeReturn feeDERDecodeElGamalSignature(
- const unsigned char *encodedSig,
- size_t encodedSigLen,
- giant *u, // newGiant'd and RETURNED
- giant *PmX); // newGiant'd and RETURNED
-
-feeReturn feeDERDecodeECDSASignature(
- const unsigned char *encodedSig,
- size_t encodedSigLen,
- giant *c, // newGiant'd and RETURNED
- giant *d); // newGiant'd and RETURNED
-
-/*
- * Encode/decode the FEE private and public keys. We malloc returned data via
- * falloc(); caller must free via ffree().
- * These use a DER format which is custom to this module.
- */
-feeReturn feeDEREncodePublicKey(
- int version,
- const curveParams *cp,
- giant plusX,
- giant minusX,
- giant plusY, // may be NULL
- unsigned char **keyBlob, // fmallocd and RETURNED
- unsigned *keyBlobLen); // RETURNED
-
-feeReturn feeDEREncodePrivateKey(
- int version,
- const curveParams *cp,
- const giant privData,
- unsigned char **keyBlob, // fmallocd and RETURNED
- unsigned *keyBlobLen); // RETURNED
-
-feeReturn feeDERDecodePublicKey(
- const unsigned char *keyBlob,
- unsigned keyBlobLen,
- int *version, // this and remainder RETURNED
- curveParams **cp,
- giant *plusX,
- giant *minusX,
- giant *plusY); // always valid, may be (giant)0
-
-feeReturn feeDERDecodePrivateKey(
- const unsigned char *keyBlob,
- unsigned keyBlobLen,
- int *version, // this and remainder RETURNED
- curveParams **cp,
- giant *privData); // RETURNED
-
-/* obtain the max size of a DER-encoded signature (either ElGamal or ECDSA) */
-unsigned feeSizeOfDERSig(
- giant g1,
- giant g2);
-
-/*
- * Encode/decode public key in X.509 format.
- */
-feeReturn feeDEREncodeX509PublicKey(
- const unsigned char *pubBlob, /* x and y octet string */
- unsigned pubBlobLen,
- curveParams *cp,
- unsigned char **x509Blob, /* fmallocd and RETURNED */
- unsigned *x509BlobLen); /* RETURNED */
-
-feeReturn feeDERDecodeX509PublicKey(
- const unsigned char *x509Blob,
- unsigned x509BlobLen,
- feeDepth *depth, /* RETURNED */
- unsigned char **pubBlob, /* x and y octet string RETURNED */
- unsigned *pubBlobLen); /* RETURNED */
-
-/*
- * Encode private, and decode private or public key, in unencrypted OpenSSL format.
- */
-feeReturn feeDEREncodeOpenSSLPrivateKey(
- const unsigned char *privBlob, /* private data octet string */
- unsigned privBlobLen,
- const unsigned char *pubBlob, /* public key, optional */
- unsigned pubBlobLen,
- curveParams *cp,
- unsigned char **openBlob, /* fmallocd and RETURNED */
- unsigned *openBlobLen); /* RETURNED */
-
-feeReturn feeDERDecodeOpenSSLKey(
- const unsigned char *osBlob,
- unsigned osBlobLen,
- feeDepth *depth, /* RETURNED */
- unsigned char **privBlob, /* private data octet string RETURNED */
- unsigned *privBlobLen, /* RETURNED */
- unsigned char **pubBlob, /* public data octet string optionally RETURNED */
- unsigned *pubBlobLen);
-
-/*
- * Encode/decode private key in unencrypted PKCS8 format.
- */
-feeReturn feeDEREncodePKCS8PrivateKey(
- const unsigned char *privBlob, /* private data octet string */
- unsigned privBlobLen,
- const unsigned char *pubBlob, /* public blob, optional */
- unsigned pubBlobLen,
- curveParams *cp,
- unsigned char **pkcs8Blob, /* fmallocd and RETURNED */
- unsigned *pkcs8BlobLen); /* RETURNED */
-
-feeReturn feeDERDecodePKCS8PrivateKey(
- const unsigned char *pkcs8Blob,
- unsigned pkcs8BlobLen,
- feeDepth *depth, /* RETURNED */
- unsigned char **privBlob, /* private data octet string RETURNED */
- unsigned *privBlobLen, /* RETURNED */
- unsigned char **pubBlob, /* optionally returned, if it's there */
- unsigned *pubBlobLen);
-
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* CRYPTKIT_DER_ENABLE */
-#endif /* _CRYPTKIT_DER_H_ */
-
-