/*
* The contents of this file are subject to the Mozilla Public
* License Version 1.1 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy of
* the License at http://www.mozilla.org/MPL/
*
* Software distributed under the License is distributed on an "AS
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
* implied. See the License for the specific language governing
* rights and limitations under the License.
*
* The Original Code is the Netscape security libraries.
*
* The Initial Developer of the Original Code is Netscape
* Communications Corporation. Portions created by Netscape are
* Copyright (C) 1994-2000 Netscape Communications Corporation. All
* Rights Reserved.
*
* Contributor(s):
*
* Alternatively, the contents of this file may be used under the
* terms of the GNU General Public License Version 2 or later (the
* "GPL"), in which case the provisions of the GPL are applicable
* instead of those above. If you wish to allow use of your
* version of this file only under the terms of the GPL and not to
* allow others to use your version of this file under the MPL,
* indicate your decision by deleting the provisions above and
* replace them with the notice and other provisions required by
* the GPL. If you do not delete the provisions above, a recipient
* may use your version of this file under either the MPL or the
* GPL.
*/
#ifndef_SECOID_H_
#define_SECOID_H_/*
* secoid.h - public data structures and prototypes for ASN.1 OID functions
*/
#include<security_asn1/seccomon.h>
#include<security_asn1/plarenas.h>
#include<Security/secasn1t.h>
#include<security_smime/secoidt.h>
SEC_BEGIN_PROTOS
externconst SecAsn1Template SECOID_AlgorithmIDTemplate[];
/* This functions simply returns the address of the above-declared template. */SEC_ASN1_CHOOSER_DECLARE(SECOID_AlgorithmIDTemplate)
/*
* OID handling routines
*/extern SECOidData *SECOID_FindOID(const SECItem *oid);
extern SECOidTag SECOID_FindOIDTag(const SECItem *oid);
extern SECOidData *SECOID_FindOIDByTag(SECOidTag tagnum);
extern SECOidData *SECOID_FindOIDByCssmAlgorithm(CSSM_ALGORITHMS cssmAlgorithm);
/****************************************//*
** Algorithm id handling operations
*//*
** Fill in an algorithm-ID object given a tag and some parameters.
** "aid" where the DER encoded algorithm info is stored (memory
** is allocated)
** "tag" the tag defining the algorithm (SEC_OID_*)
** "params" if not NULL, the parameters to go with the algorithm
*/extern SECStatus SECOID_SetAlgorithmID(PRArenaPool *arena, SECAlgorithmID *aid,
SECOidTag tag, SECItem *params);
/*
** Copy the "src" object to "dest". Memory is allocated in "dest" for
** each of the appropriate sub-objects. Memory in "dest" is not freed
** before memory is allocated (use SECOID_DestroyAlgorithmID(dest, PR_FALSE)
** to do that).
*/extern SECStatus SECOID_CopyAlgorithmID(PRArenaPool *arena, SECAlgorithmID *dest,
const SECAlgorithmID *src);
/*
** Get the SEC_OID_* tag for the given algorithm-id object.
*/extern SECOidTag SECOID_GetAlgorithmTag(const SECAlgorithmID *aid);
/*
** Destroy an algorithm-id object.
** "aid" the certificate-request to destroy
** "freeit" if PR_TRUE then free the object as well as its sub-objects
*/externvoidSECOID_DestroyAlgorithmID(SECAlgorithmID *aid, Boolean freeit);
/*
** Compare two algorithm-id objects, returning the difference between
** them.
*/extern SECComparison SECOID_CompareAlgorithmID(const SECAlgorithmID *a,
const SECAlgorithmID *b);
extern Boolean SECOID_KnownCertExtenOID (const SECItem *extenOid);
/* Given a SEC_OID_* tag, return a string describing it.
*/externconstchar *SECOID_FindOIDTagDescription(SECOidTag tagnum);
/*
* free up the oid data structures.
*/extern SECStatus SECOID_Shutdown(void);
SEC_END_PROTOS
#endif/* _SECOID_H_ */