security/nss/lib/ssl/preenc.h

Thu, 22 Jan 2015 13:21:57 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Thu, 22 Jan 2015 13:21:57 +0100
branch
TOR_BUG_9701
changeset 15
b8a032363ba2
permissions
-rw-r--r--

Incorporate requested changes from Mozilla in review:
https://bugzilla.mozilla.org/show_bug.cgi?id=1123480#c6

     1 /* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil -*- */
     3 /*
     4  * Fortezza support is removed.
     5  *
     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.
    13  */
    15 #include "seccomon.h"
    16 #include "prio.h"
    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];      
    29     unsigned char iv[24];       
    30     unsigned char hash[20];     
    31     unsigned char serial[8];    
    32 };
    34 struct PEFortezzaGeneratedHeaderStr {
    35     unsigned char key[12];      
    36     unsigned char iv[24];       
    37     unsigned char hash[20];     
    38     unsigned char Ra[128];      
    39     unsigned char Y[128];       
    40 };
    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];	  
    49 };
    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];	  
    58 };
    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)])
    72 struct PEHeaderStr {
    73     unsigned char magic  [2];		
    74     unsigned char len    [2];		
    75     unsigned char type   [2];		
    76     unsigned char version[2];		
    77     union {
    78         PEFortezzaHeader          fortezza;
    79         PEFortezzaGeneratedHeader g_fortezza;
    80 	PEFixedKeyHeader          fixed;
    81 	PERSAKeyHeader            rsa;
    82     } u;
    83 };
    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 *,
   109 				       int *headerSize);
   111 PEHeader *SSL_PreencryptedFileToStream(PRFileDesc *fd, PEHeader *,
   112 				       int *headerSize);

mercurial