1 /* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil -*- */
4 * Fortezza support is removed.
6 * This Source Code Form is subject to the terms of the Mozilla Public
7 * License, v. 2.0. If a copy of the MPL was not distributed with this
8 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
10 /* Fortezza support is removed.
11 * This file remains so that old programs will continue to compile,
12 * But this functionality is no longer supported or implemented.
18 typedef struct PEHeaderStr PEHeader
;
20 #define PE_MIME_TYPE "application/pre-encrypted"
22 typedef struct PEFortezzaHeaderStr PEFortezzaHeader
;
23 typedef struct PEFortezzaGeneratedHeaderStr PEFortezzaGeneratedHeader
;
24 typedef struct PEFixedKeyHeaderStr PEFixedKeyHeader
;
25 typedef struct PERSAKeyHeaderStr PERSAKeyHeader
;
27 struct PEFortezzaHeaderStr
{
28 unsigned char key
[12];
30 unsigned char hash
[20];
31 unsigned char serial
[8];
34 struct PEFortezzaGeneratedHeaderStr
{
35 unsigned char key
[12];
37 unsigned char hash
[20];
38 unsigned char Ra
[128];
42 struct PEFixedKeyHeaderStr
{
43 unsigned char pkcs11Mech
[4];
44 unsigned char labelLen
[2];
45 unsigned char keyIDLen
[2];
46 unsigned char ivLen
[2];
47 unsigned char keyLen
[2];
48 unsigned char data
[1];
51 struct PERSAKeyHeaderStr
{
52 unsigned char pkcs11Mech
[4];
53 unsigned char issuerLen
[2];
54 unsigned char serialLen
[2];
55 unsigned char ivLen
[2];
56 unsigned char keyLen
[2];
57 unsigned char data
[1];
60 #define PEFIXED_Label(header) (header->data)
61 #define PEFIXED_KeyID(header) (&header->data[GetInt2(header->labelLen)])
62 #define PEFIXED_IV(header) (&header->data[GetInt2(header->labelLen)\
63 +GetInt2(header->keyIDLen)])
64 #define PEFIXED_Key(header) (&header->data[GetInt2(header->labelLen)\
65 +GetInt2(header->keyIDLen)+GetInt2(header->keyLen)])
66 #define PERSA_Issuer(header) (header->data)
67 #define PERSA_Serial(header) (&header->data[GetInt2(header->issuerLen)])
68 #define PERSA_IV(header) (&header->data[GetInt2(header->issuerLen)\
69 +GetInt2(header->serialLen)])
70 #define PERSA_Key(header) (&header->data[GetInt2(header->issuerLen)\
71 +GetInt2(header->serialLen)+GetInt2(header->keyLen)])
73 unsigned char magic
[2];
74 unsigned char len
[2];
75 unsigned char type
[2];
76 unsigned char version
[2];
78 PEFortezzaHeader fortezza
;
79 PEFortezzaGeneratedHeader g_fortezza
;
80 PEFixedKeyHeader fixed
;
85 #define PE_CRYPT_INTRO_LEN 8
86 #define PE_INTRO_LEN 4
87 #define PE_BASE_HEADER_LEN 8
89 #define PRE_BLOCK_SIZE 8
92 #define GetInt2(c) ((c[0] << 8) | c[1])
93 #define GetInt4(c) (((unsigned long)c[0] << 24)|((unsigned long)c[1] << 16)\
94 |((unsigned long)c[2] << 8)| ((unsigned long)c[3]))
95 #define PutInt2(c,i) ((c[1] = (i) & 0xff), (c[0] = ((i) >> 8) & 0xff))
96 #define PutInt4(c,i) ((c[0]=((i) >> 24) & 0xff),(c[1]=((i) >> 16) & 0xff),\
97 (c[2] = ((i) >> 8) & 0xff), (c[3] = (i) & 0xff))
99 #define PRE_MAGIC 0xc0de
100 #define PRE_VERSION 0x1010
101 #define PRE_FORTEZZA_FILE 0x00ff
102 #define PRE_FORTEZZA_STREAM 0x00f5
103 #define PRE_FORTEZZA_GEN_STREAM 0x00f6
104 #define PRE_FIXED_FILE 0x000f
105 #define PRE_RSA_FILE 0x001f
106 #define PRE_FIXED_STREAM 0x0005
108 PEHeader
*SSL_PreencryptedStreamToFile(PRFileDesc
*fd
, PEHeader
*,
111 PEHeader
*SSL_PreencryptedFileToStream(PRFileDesc
*fd
, PEHeader
*,