security/nss/lib/util/secoid.h

Wed, 31 Dec 2014 06:09:35 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Wed, 31 Dec 2014 06:09:35 +0100
changeset 0
6474c204b198
permissions
-rw-r--r--

Cloned upstream origin tor-browser at tor-browser-31.3.0esr-4.5-1-build1
revision ID fc1c9ff7c1b2defdbc039f12214767608f46423f for hacking purpose.

     1 /* This Source Code Form is subject to the terms of the Mozilla Public
     2  * License, v. 2.0. If a copy of the MPL was not distributed with this
     3  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
     5 #ifndef _SECOID_H_
     6 #define _SECOID_H_
     8 #include "utilrename.h"
    10 /*
    11  * secoid.h - public data structures and prototypes for ASN.1 OID functions
    12  */
    14 #include "plarena.h"
    16 #include "seccomon.h"
    17 #include "secoidt.h"
    18 #include "secasn1t.h"
    20 SEC_BEGIN_PROTOS
    22 extern const SEC_ASN1Template SECOID_AlgorithmIDTemplate[];
    24 /* This functions simply returns the address of the above-declared template. */
    25 SEC_ASN1_CHOOSER_DECLARE(SECOID_AlgorithmIDTemplate)
    27 /*
    28  * OID handling routines
    29  */
    30 extern SECOidData *SECOID_FindOID( const SECItem *oid);
    31 extern SECOidTag SECOID_FindOIDTag(const SECItem *oid);
    32 extern SECOidData *SECOID_FindOIDByTag(SECOidTag tagnum);
    33 extern SECOidData *SECOID_FindOIDByMechanism(unsigned long mechanism);
    35 /****************************************/
    36 /*
    37 ** Algorithm id handling operations
    38 */
    40 /*
    41 ** Fill in an algorithm-ID object given a tag and some parameters.
    42 ** 	"aid" where the DER encoded algorithm info is stored (memory
    43 **	   is allocated)
    44 **	"tag" the tag number defining the algorithm 
    45 **	"params" if not NULL, the parameters to go with the algorithm
    46 */
    47 extern SECStatus SECOID_SetAlgorithmID(PLArenaPool *arena, SECAlgorithmID *aid,
    48 				   SECOidTag tag, SECItem *params);
    50 /*
    51 ** Copy the "src" object to "dest". Memory is allocated in "dest" for
    52 ** each of the appropriate sub-objects. Memory in "dest" is not freed
    53 ** before memory is allocated (use SECOID_DestroyAlgorithmID(dest, PR_FALSE)
    54 ** to do that).
    55 */
    56 extern SECStatus SECOID_CopyAlgorithmID(PLArenaPool *arena, SECAlgorithmID *dest,
    57 				        const SECAlgorithmID *src);
    59 /*
    60 ** Get the tag number for the given algorithm-id object.
    61 */
    62 extern SECOidTag SECOID_GetAlgorithmTag(const SECAlgorithmID *aid);
    64 /*
    65 ** Destroy an algorithm-id object.
    66 **	"aid" the certificate-request to destroy
    67 **	"freeit" if PR_TRUE then free the object as well as its sub-objects
    68 */
    69 extern void SECOID_DestroyAlgorithmID(SECAlgorithmID *aid, PRBool freeit);
    71 /*
    72 ** Compare two algorithm-id objects, returning the difference between
    73 ** them.
    74 */
    75 extern SECComparison SECOID_CompareAlgorithmID(SECAlgorithmID *a,
    76 					   SECAlgorithmID *b);
    78 extern PRBool SECOID_KnownCertExtenOID (SECItem *extenOid);
    80 /* Given a tag number, return a string describing it.
    81  */
    82 extern const char *SECOID_FindOIDTagDescription(SECOidTag tagnum);
    84 /* Add a dynamic SECOidData to the dynamic OID table.
    85 ** Routine copies the src entry, and returns the new SECOidTag.
    86 ** Returns SEC_OID_INVALID if failed to add for some reason.
    87 */
    88 extern SECOidTag SECOID_AddEntry(const SECOidData * src);
    90 /*
    91  * initialize the oid data structures.
    92  */
    93 extern SECStatus SECOID_Init(void);
    95 /*
    96  * free up the oid data structures.
    97  */
    98 extern SECStatus SECOID_Shutdown(void);
   100 /* if to->data is not NULL, and to->len is large enough to hold the result,
   101  * then the resultant OID will be copyed into to->data, and to->len will be
   102  * changed to show the actual OID length.
   103  * Otherwise, memory for the OID will be allocated (from the caller's 
   104  * PLArenaPool, if pool is non-NULL) and to->data will receive the address
   105  * of the allocated data, and to->len will receive the OID length.
   106  * The original value of to->data is not freed when a new buffer is allocated.
   107  * 
   108  * The input string may begin with "OID." and this still be ignored.
   109  * The length of the input string is given in len.  If len == 0, then 
   110  * len will be computed as strlen(from), meaning it must be NUL terminated.
   111  * It is an error if from == NULL, or if *from == '\0'.
   112  */
   113 extern SECStatus SEC_StringToOID(PLArenaPool *pool, SECItem *to, 
   114                                  const char *from, PRUint32 len);
   116 extern void UTIL_SetForkState(PRBool forked);
   118 /*
   119  * Accessor functions for new opaque extended SECOID table.
   120  * Any of these functions may return SECSuccess or SECFailure with the error 
   121  * code set to SEC_ERROR_UNKNOWN_OBJECT_TYPE if the SECOidTag is out of range.
   122  */
   124 /* The Get function outputs the 32-bit value associated with the SECOidTag.
   125  * Flags bits are the NSS_USE_ALG_ #defines in "secoidt.h".
   126  * Default value for any algorithm is 0xffffffff (enabled for all purposes).
   127  * No value is output if function returns SECFailure.
   128  */
   129 extern SECStatus NSS_GetAlgorithmPolicy(SECOidTag tag, PRUint32 *pValue);
   131 /* The Set function modifies the stored value according to the following
   132  * algorithm:
   133  *   policy[tag] = (policy[tag] & ~clearBits) | setBits;
   134  */
   135 extern SECStatus
   136 NSS_SetAlgorithmPolicy(SECOidTag tag, PRUint32 setBits, PRUint32 clearBits);
   139 SEC_END_PROTOS
   141 #endif /* _SECOID_H_ */

mercurial