1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/security/nss/lib/ssl/preenc.h Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,113 @@ 1.4 +/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil -*- */ 1.5 + 1.6 +/* 1.7 + * Fortezza support is removed. 1.8 + * 1.9 + * This Source Code Form is subject to the terms of the Mozilla Public 1.10 + * License, v. 2.0. If a copy of the MPL was not distributed with this 1.11 + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ 1.12 + 1.13 +/* Fortezza support is removed. 1.14 + * This file remains so that old programs will continue to compile, 1.15 + * But this functionality is no longer supported or implemented. 1.16 + */ 1.17 + 1.18 +#include "seccomon.h" 1.19 +#include "prio.h" 1.20 + 1.21 +typedef struct PEHeaderStr PEHeader; 1.22 + 1.23 +#define PE_MIME_TYPE "application/pre-encrypted" 1.24 + 1.25 +typedef struct PEFortezzaHeaderStr PEFortezzaHeader; 1.26 +typedef struct PEFortezzaGeneratedHeaderStr PEFortezzaGeneratedHeader; 1.27 +typedef struct PEFixedKeyHeaderStr PEFixedKeyHeader; 1.28 +typedef struct PERSAKeyHeaderStr PERSAKeyHeader; 1.29 + 1.30 +struct PEFortezzaHeaderStr { 1.31 + unsigned char key[12]; 1.32 + unsigned char iv[24]; 1.33 + unsigned char hash[20]; 1.34 + unsigned char serial[8]; 1.35 +}; 1.36 + 1.37 +struct PEFortezzaGeneratedHeaderStr { 1.38 + unsigned char key[12]; 1.39 + unsigned char iv[24]; 1.40 + unsigned char hash[20]; 1.41 + unsigned char Ra[128]; 1.42 + unsigned char Y[128]; 1.43 +}; 1.44 + 1.45 +struct PEFixedKeyHeaderStr { 1.46 + unsigned char pkcs11Mech[4]; 1.47 + unsigned char labelLen[2]; 1.48 + unsigned char keyIDLen[2]; 1.49 + unsigned char ivLen[2]; 1.50 + unsigned char keyLen[2]; 1.51 + unsigned char data[1]; 1.52 +}; 1.53 + 1.54 +struct PERSAKeyHeaderStr { 1.55 + unsigned char pkcs11Mech[4]; 1.56 + unsigned char issuerLen[2]; 1.57 + unsigned char serialLen[2]; 1.58 + unsigned char ivLen[2]; 1.59 + unsigned char keyLen[2]; 1.60 + unsigned char data[1]; 1.61 +}; 1.62 + 1.63 +#define PEFIXED_Label(header) (header->data) 1.64 +#define PEFIXED_KeyID(header) (&header->data[GetInt2(header->labelLen)]) 1.65 +#define PEFIXED_IV(header) (&header->data[GetInt2(header->labelLen)\ 1.66 + +GetInt2(header->keyIDLen)]) 1.67 +#define PEFIXED_Key(header) (&header->data[GetInt2(header->labelLen)\ 1.68 + +GetInt2(header->keyIDLen)+GetInt2(header->keyLen)]) 1.69 +#define PERSA_Issuer(header) (header->data) 1.70 +#define PERSA_Serial(header) (&header->data[GetInt2(header->issuerLen)]) 1.71 +#define PERSA_IV(header) (&header->data[GetInt2(header->issuerLen)\ 1.72 + +GetInt2(header->serialLen)]) 1.73 +#define PERSA_Key(header) (&header->data[GetInt2(header->issuerLen)\ 1.74 + +GetInt2(header->serialLen)+GetInt2(header->keyLen)]) 1.75 +struct PEHeaderStr { 1.76 + unsigned char magic [2]; 1.77 + unsigned char len [2]; 1.78 + unsigned char type [2]; 1.79 + unsigned char version[2]; 1.80 + union { 1.81 + PEFortezzaHeader fortezza; 1.82 + PEFortezzaGeneratedHeader g_fortezza; 1.83 + PEFixedKeyHeader fixed; 1.84 + PERSAKeyHeader rsa; 1.85 + } u; 1.86 +}; 1.87 + 1.88 +#define PE_CRYPT_INTRO_LEN 8 1.89 +#define PE_INTRO_LEN 4 1.90 +#define PE_BASE_HEADER_LEN 8 1.91 + 1.92 +#define PRE_BLOCK_SIZE 8 1.93 + 1.94 + 1.95 +#define GetInt2(c) ((c[0] << 8) | c[1]) 1.96 +#define GetInt4(c) (((unsigned long)c[0] << 24)|((unsigned long)c[1] << 16)\ 1.97 + |((unsigned long)c[2] << 8)| ((unsigned long)c[3])) 1.98 +#define PutInt2(c,i) ((c[1] = (i) & 0xff), (c[0] = ((i) >> 8) & 0xff)) 1.99 +#define PutInt4(c,i) ((c[0]=((i) >> 24) & 0xff),(c[1]=((i) >> 16) & 0xff),\ 1.100 + (c[2] = ((i) >> 8) & 0xff), (c[3] = (i) & 0xff)) 1.101 + 1.102 +#define PRE_MAGIC 0xc0de 1.103 +#define PRE_VERSION 0x1010 1.104 +#define PRE_FORTEZZA_FILE 0x00ff 1.105 +#define PRE_FORTEZZA_STREAM 0x00f5 1.106 +#define PRE_FORTEZZA_GEN_STREAM 0x00f6 1.107 +#define PRE_FIXED_FILE 0x000f 1.108 +#define PRE_RSA_FILE 0x001f 1.109 +#define PRE_FIXED_STREAM 0x0005 1.110 + 1.111 +PEHeader *SSL_PreencryptedStreamToFile(PRFileDesc *fd, PEHeader *, 1.112 + int *headerSize); 1.113 + 1.114 +PEHeader *SSL_PreencryptedFileToStream(PRFileDesc *fd, PEHeader *, 1.115 + int *headerSize); 1.116 +