Index: nss/lib/dev/dev.h |
diff --git a/nss/lib/dev/dev.h b/nss/lib/dev/dev.h |
deleted file mode 100644 |
index 7e64e7612b5b880efbbcc9ce87e121b8bfaaa420..0000000000000000000000000000000000000000 |
--- a/nss/lib/dev/dev.h |
+++ /dev/null |
@@ -1,747 +0,0 @@ |
-/* This Source Code Form is subject to the terms of the Mozilla Public |
- * License, v. 2.0. If a copy of the MPL was not distributed with this |
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ |
- |
-#ifndef DEV_H |
-#define DEV_H |
- |
-/* |
- * dev.h |
- * |
- * Low-level methods for interaction with cryptoki devices |
- */ |
- |
-#ifndef NSSDEV_H |
-#include "nssdev.h" |
-#endif /* NSSDEV_H */ |
- |
-#ifndef DEVT_H |
-#include "devt.h" |
-#endif /* DEVT_H */ |
- |
-PR_BEGIN_EXTERN_C |
- |
-/* the global module list |
- * |
- * These functions are for managing the global set of modules. Trust Domains, |
- * etc., will draw from this set. These functions are completely internal |
- * and only invoked when there are changes to the global module state |
- * (load or unload). |
- * |
- * nss_InitializeGlobalModuleList |
- * nss_DestroyGlobalModuleList |
- * nss_GetLoadedModules |
- * |
- * nssGlobalModuleList_Add |
- * nssGlobalModuleList_Remove |
- * nssGlobalModuleList_FindModuleByName |
- * nssGlobalModuleList_FindSlotByName |
- * nssGlobalModuleList_FindTokenByName |
- */ |
- |
-NSS_EXTERN PRStatus |
-nss_InitializeGlobalModuleList( |
- void); |
- |
-NSS_EXTERN PRStatus |
-nss_DestroyGlobalModuleList( |
- void); |
- |
-NSS_EXTERN NSSModule ** |
-nss_GetLoadedModules( |
- void); |
- |
-NSS_EXTERN PRStatus |
-nssGlobalModuleList_Add( |
- NSSModule *module); |
- |
-NSS_EXTERN PRStatus |
-nssGlobalModuleList_Remove( |
- NSSModule *module); |
- |
-NSS_EXTERN NSSModule * |
-nssGlobalModuleList_FindModuleByName( |
- NSSUTF8 *moduleName); |
- |
-NSS_EXTERN NSSSlot * |
-nssGlobalModuleList_FindSlotByName( |
- NSSUTF8 *slotName); |
- |
-NSS_EXTERN NSSToken * |
-nssGlobalModuleList_FindTokenByName( |
- NSSUTF8 *tokenName); |
- |
-NSS_EXTERN NSSToken * |
-nss_GetDefaultCryptoToken( |
- void); |
- |
-NSS_EXTERN NSSToken * |
-nss_GetDefaultDatabaseToken( |
- void); |
- |
-/* |
- * |-----------|<---> NSSSlot <--> NSSToken |
- * | NSSModule |<---> NSSSlot <--> NSSToken |
- * |-----------|<---> NSSSlot <--> NSSToken |
- */ |
- |
-/* NSSModule |
- * |
- * nssModule_Create |
- * nssModule_CreateFromSpec |
- * nssModule_AddRef |
- * nssModule_GetName |
- * nssModule_GetSlots |
- * nssModule_FindSlotByName |
- * nssModule_FindTokenByName |
- * nssModule_GetCertOrder |
- */ |
- |
-NSS_EXTERN NSSModule * |
-nssModule_Create( |
- NSSUTF8 *moduleOpt, |
- NSSUTF8 *uriOpt, |
- NSSUTF8 *opaqueOpt, |
- void *reserved); |
- |
-/* This is to use the new loading mechanism. */ |
-NSS_EXTERN NSSModule * |
-nssModule_CreateFromSpec( |
- NSSUTF8 *moduleSpec, |
- NSSModule *parent, |
- PRBool loadSubModules); |
- |
-NSS_EXTERN PRStatus |
-nssModule_Destroy( |
- NSSModule *mod); |
- |
-NSS_EXTERN NSSModule * |
-nssModule_AddRef( |
- NSSModule *mod); |
- |
-NSS_EXTERN NSSUTF8 * |
-nssModule_GetName( |
- NSSModule *mod); |
- |
-NSS_EXTERN NSSSlot ** |
-nssModule_GetSlots( |
- NSSModule *mod); |
- |
-NSS_EXTERN NSSSlot * |
-nssModule_FindSlotByName( |
- NSSModule *mod, |
- NSSUTF8 *slotName); |
- |
-NSS_EXTERN NSSToken * |
-nssModule_FindTokenByName( |
- NSSModule *mod, |
- NSSUTF8 *tokenName); |
- |
-NSS_EXTERN PRInt32 |
-nssModule_GetCertOrder( |
- NSSModule *module); |
- |
-/* NSSSlot |
- * |
- * nssSlot_Destroy |
- * nssSlot_AddRef |
- * nssSlot_GetName |
- * nssSlot_GetTokenName |
- * nssSlot_IsTokenPresent |
- * nssSlot_IsPermanent |
- * nssSlot_IsFriendly |
- * nssSlot_IsHardware |
- * nssSlot_Refresh |
- * nssSlot_GetModule |
- * nssSlot_GetToken |
- * nssSlot_Login |
- * nssSlot_Logout |
- * nssSlot_SetPassword |
- * nssSlot_CreateSession |
- */ |
- |
-NSS_EXTERN PRStatus |
-nssSlot_Destroy( |
- NSSSlot *slot); |
- |
-NSS_EXTERN NSSSlot * |
-nssSlot_AddRef( |
- NSSSlot *slot); |
- |
-NSS_EXTERN void |
-nssSlot_ResetDelay( |
- NSSSlot *slot); |
- |
-NSS_EXTERN NSSUTF8 * |
-nssSlot_GetName( |
- NSSSlot *slot); |
- |
-NSS_EXTERN NSSUTF8 * |
-nssSlot_GetTokenName( |
- NSSSlot *slot); |
- |
-NSS_EXTERN NSSModule * |
-nssSlot_GetModule( |
- NSSSlot *slot); |
- |
-NSS_EXTERN NSSToken * |
-nssSlot_GetToken( |
- NSSSlot *slot); |
- |
-NSS_EXTERN PRBool |
-nssSlot_IsTokenPresent( |
- NSSSlot *slot); |
- |
-NSS_EXTERN PRBool |
-nssSlot_IsPermanent( |
- NSSSlot *slot); |
- |
-NSS_EXTERN PRBool |
-nssSlot_IsFriendly( |
- NSSSlot *slot); |
- |
-NSS_EXTERN PRBool |
-nssSlot_IsHardware( |
- NSSSlot *slot); |
- |
-NSS_EXTERN PRBool |
-nssSlot_IsLoggedIn( |
- NSSSlot *slot); |
- |
-NSS_EXTERN PRStatus |
-nssSlot_Refresh( |
- NSSSlot *slot); |
- |
-NSS_EXTERN PRStatus |
-nssSlot_Login( |
- NSSSlot *slot, |
- NSSCallback *pwcb); |
-extern const NSSError NSS_ERROR_INVALID_PASSWORD; |
-extern const NSSError NSS_ERROR_USER_CANCELED; |
- |
-NSS_EXTERN PRStatus |
-nssSlot_Logout( |
- NSSSlot *slot, |
- nssSession *sessionOpt); |
- |
-NSS_EXTERN void |
-nssSlot_EnterMonitor( |
- NSSSlot *slot); |
- |
-NSS_EXTERN void |
-nssSlot_ExitMonitor( |
- NSSSlot *slot); |
- |
-#define NSSSLOT_ASK_PASSWORD_FIRST_TIME -1 |
-#define NSSSLOT_ASK_PASSWORD_EVERY_TIME 0 |
-NSS_EXTERN void |
-nssSlot_SetPasswordDefaults( |
- NSSSlot *slot, |
- PRInt32 askPasswordTimeout); |
- |
-NSS_EXTERN PRStatus |
-nssSlot_SetPassword( |
- NSSSlot *slot, |
- NSSUTF8 *oldPasswordOpt, |
- NSSUTF8 *newPassword); |
-extern const NSSError NSS_ERROR_INVALID_PASSWORD; |
-extern const NSSError NSS_ERROR_USER_CANCELED; |
- |
-/* |
- * nssSlot_IsLoggedIn |
- */ |
- |
-NSS_EXTERN nssSession * |
-nssSlot_CreateSession( |
- NSSSlot *slot, |
- NSSArena *arenaOpt, |
- PRBool readWrite /* so far, this is the only flag used */ |
- ); |
- |
-/* NSSToken |
- * |
- * nssToken_Destroy |
- * nssToken_AddRef |
- * nssToken_GetName |
- * nssToken_GetModule |
- * nssToken_GetSlot |
- * nssToken_NeedsPINInitialization |
- * nssToken_ImportCertificate |
- * nssToken_ImportTrust |
- * nssToken_ImportCRL |
- * nssToken_GenerateKeyPair |
- * nssToken_GenerateSymmetricKey |
- * nssToken_DeleteStoredObject |
- * nssToken_FindObjects |
- * nssToken_FindCertificatesBySubject |
- * nssToken_FindCertificatesByNickname |
- * nssToken_FindCertificatesByEmail |
- * nssToken_FindCertificateByIssuerAndSerialNumber |
- * nssToken_FindCertificateByEncodedCertificate |
- * nssToken_FindTrustForCertificate |
- * nssToken_FindCRLsBySubject |
- * nssToken_FindPrivateKeys |
- * nssToken_FindPrivateKeyByID |
- * nssToken_Digest |
- * nssToken_BeginDigest |
- * nssToken_ContinueDigest |
- * nssToken_FinishDigest |
- */ |
- |
-NSS_EXTERN PRStatus |
-nssToken_Destroy( |
- NSSToken *tok); |
- |
-NSS_EXTERN NSSToken * |
-nssToken_AddRef( |
- NSSToken *tok); |
- |
-NSS_EXTERN NSSUTF8 * |
-nssToken_GetName( |
- NSSToken *tok); |
- |
-NSS_EXTERN NSSModule * |
-nssToken_GetModule( |
- NSSToken *token); |
- |
-NSS_EXTERN NSSSlot * |
-nssToken_GetSlot( |
- NSSToken *tok); |
- |
-NSS_EXTERN PRBool |
-nssToken_NeedsPINInitialization( |
- NSSToken *token); |
- |
-NSS_EXTERN nssCryptokiObject * |
-nssToken_ImportCertificate( |
- NSSToken *tok, |
- nssSession *sessionOpt, |
- NSSCertificateType certType, |
- NSSItem *id, |
- const NSSUTF8 *nickname, |
- NSSDER *encoding, |
- NSSDER *issuer, |
- NSSDER *subject, |
- NSSDER *serial, |
- NSSASCII7 *emailAddr, |
- PRBool asTokenObject); |
- |
-NSS_EXTERN nssCryptokiObject * |
-nssToken_ImportTrust( |
- NSSToken *tok, |
- nssSession *sessionOpt, |
- NSSDER *certEncoding, |
- NSSDER *certIssuer, |
- NSSDER *certSerial, |
- nssTrustLevel serverAuth, |
- nssTrustLevel clientAuth, |
- nssTrustLevel codeSigning, |
- nssTrustLevel emailProtection, |
- PRBool stepUpApproved, |
- PRBool asTokenObject); |
- |
-NSS_EXTERN nssCryptokiObject * |
-nssToken_ImportCRL( |
- NSSToken *token, |
- nssSession *sessionOpt, |
- NSSDER *subject, |
- NSSDER *encoding, |
- PRBool isKRL, |
- NSSUTF8 *url, |
- PRBool asTokenObject); |
- |
-/* Permanently remove an object from the token. */ |
-NSS_EXTERN PRStatus |
-nssToken_DeleteStoredObject( |
- nssCryptokiObject *instance); |
- |
-NSS_EXTERN nssCryptokiObject ** |
-nssToken_FindObjects( |
- NSSToken *token, |
- nssSession *sessionOpt, |
- CK_OBJECT_CLASS objclass, |
- nssTokenSearchType searchType, |
- PRUint32 maximumOpt, |
- PRStatus *statusOpt); |
- |
-NSS_EXTERN nssCryptokiObject ** |
-nssToken_FindCertificatesBySubject( |
- NSSToken *token, |
- nssSession *sessionOpt, |
- NSSDER *subject, |
- nssTokenSearchType searchType, |
- PRUint32 maximumOpt, |
- PRStatus *statusOpt); |
- |
-NSS_EXTERN nssCryptokiObject ** |
-nssToken_FindCertificatesByNickname( |
- NSSToken *token, |
- nssSession *sessionOpt, |
- const NSSUTF8 *name, |
- nssTokenSearchType searchType, |
- PRUint32 maximumOpt, |
- PRStatus *statusOpt); |
- |
-NSS_EXTERN nssCryptokiObject ** |
-nssToken_FindCertificatesByEmail( |
- NSSToken *token, |
- nssSession *sessionOpt, |
- NSSASCII7 *email, |
- nssTokenSearchType searchType, |
- PRUint32 maximumOpt, |
- PRStatus *statusOpt); |
- |
-NSS_EXTERN nssCryptokiObject ** |
-nssToken_FindCertificatesByID( |
- NSSToken *token, |
- nssSession *sessionOpt, |
- NSSItem *id, |
- nssTokenSearchType searchType, |
- PRUint32 maximumOpt, |
- PRStatus *statusOpt); |
- |
-NSS_EXTERN nssCryptokiObject * |
-nssToken_FindCertificateByIssuerAndSerialNumber( |
- NSSToken *token, |
- nssSession *sessionOpt, |
- NSSDER *issuer, |
- NSSDER *serial, |
- nssTokenSearchType searchType, |
- PRStatus *statusOpt); |
- |
-NSS_EXTERN nssCryptokiObject * |
-nssToken_FindCertificateByEncodedCertificate( |
- NSSToken *token, |
- nssSession *sessionOpt, |
- NSSBER *encodedCertificate, |
- nssTokenSearchType searchType, |
- PRStatus *statusOpt); |
- |
-NSS_EXTERN nssCryptokiObject * |
-nssToken_FindTrustForCertificate( |
- NSSToken *token, |
- nssSession *sessionOpt, |
- NSSDER *certEncoding, |
- NSSDER *certIssuer, |
- NSSDER *certSerial, |
- nssTokenSearchType searchType); |
- |
-NSS_EXTERN nssCryptokiObject ** |
-nssToken_FindCRLsBySubject( |
- NSSToken *token, |
- nssSession *sessionOpt, |
- NSSDER *subject, |
- nssTokenSearchType searchType, |
- PRUint32 maximumOpt, |
- PRStatus *statusOpt); |
- |
-NSS_EXTERN nssCryptokiObject ** |
-nssToken_FindPrivateKeys( |
- NSSToken *token, |
- nssSession *sessionOpt, |
- nssTokenSearchType searchType, |
- PRUint32 maximumOpt, |
- PRStatus *statusOpt); |
- |
-NSS_EXTERN nssCryptokiObject * |
-nssToken_FindPrivateKeyByID( |
- NSSToken *token, |
- nssSession *sessionOpt, |
- NSSItem *keyID); |
- |
-NSS_EXTERN nssCryptokiObject * |
-nssToken_FindPublicKeyByID( |
- NSSToken *token, |
- nssSession *sessionOpt, |
- NSSItem *keyID); |
- |
-NSS_EXTERN NSSItem * |
-nssToken_Digest( |
- NSSToken *tok, |
- nssSession *sessionOpt, |
- NSSAlgorithmAndParameters *ap, |
- NSSItem *data, |
- NSSItem *rvOpt, |
- NSSArena *arenaOpt); |
- |
-NSS_EXTERN PRStatus |
-nssToken_BeginDigest( |
- NSSToken *tok, |
- nssSession *sessionOpt, |
- NSSAlgorithmAndParameters *ap); |
- |
-NSS_EXTERN PRStatus |
-nssToken_ContinueDigest( |
- NSSToken *tok, |
- nssSession *sessionOpt, |
- NSSItem *item); |
- |
-NSS_EXTERN NSSItem * |
-nssToken_FinishDigest( |
- NSSToken *tok, |
- nssSession *sessionOpt, |
- NSSItem *rvOpt, |
- NSSArena *arenaOpt); |
- |
-/* nssSession |
- * |
- * nssSession_Destroy |
- * nssSession_EnterMonitor |
- * nssSession_ExitMonitor |
- * nssSession_IsReadWrite |
- */ |
- |
-NSS_EXTERN PRStatus |
-nssSession_Destroy( |
- nssSession *s); |
- |
-/* would like to inline */ |
-NSS_EXTERN PRStatus |
-nssSession_EnterMonitor( |
- nssSession *s); |
- |
-/* would like to inline */ |
-NSS_EXTERN PRStatus |
-nssSession_ExitMonitor( |
- nssSession *s); |
- |
-/* would like to inline */ |
-NSS_EXTERN PRBool |
-nssSession_IsReadWrite( |
- nssSession *s); |
- |
-/* nssCryptokiObject |
- * |
- * An object living on a cryptoki token. |
- * Not really proper to mix up the object types just because |
- * nssCryptokiObject itself is generic, but doing so anyway. |
- * |
- * nssCryptokiObject_Destroy |
- * nssCryptokiObject_Equal |
- * nssCryptokiObject_Clone |
- * nssCryptokiCertificate_GetAttributes |
- * nssCryptokiPrivateKey_GetAttributes |
- * nssCryptokiPublicKey_GetAttributes |
- * nssCryptokiTrust_GetAttributes |
- * nssCryptokiCRL_GetAttributes |
- */ |
- |
-NSS_EXTERN void |
-nssCryptokiObject_Destroy( |
- nssCryptokiObject *object); |
- |
-NSS_EXTERN PRBool |
-nssCryptokiObject_Equal( |
- nssCryptokiObject *object1, |
- nssCryptokiObject *object2); |
- |
-NSS_EXTERN nssCryptokiObject * |
-nssCryptokiObject_Clone( |
- nssCryptokiObject *object); |
- |
-NSS_EXTERN PRStatus |
-nssCryptokiCertificate_GetAttributes( |
- nssCryptokiObject *object, |
- nssSession *sessionOpt, |
- NSSArena *arenaOpt, |
- NSSCertificateType *certTypeOpt, |
- NSSItem *idOpt, |
- NSSDER *encodingOpt, |
- NSSDER *issuerOpt, |
- NSSDER *serialOpt, |
- NSSDER *subjectOpt); |
- |
-NSS_EXTERN PRStatus |
-nssCryptokiTrust_GetAttributes( |
- nssCryptokiObject *trustObject, |
- nssSession *sessionOpt, |
- NSSItem *sha1_hash, |
- nssTrustLevel *serverAuth, |
- nssTrustLevel *clientAuth, |
- nssTrustLevel *codeSigning, |
- nssTrustLevel *emailProtection, |
- PRBool *stepUpApproved); |
- |
-NSS_EXTERN PRStatus |
-nssCryptokiCRL_GetAttributes( |
- nssCryptokiObject *crlObject, |
- nssSession *sessionOpt, |
- NSSArena *arenaOpt, |
- NSSItem *encodingOpt, |
- NSSItem *subjectOpt, |
- CK_ULONG *crl_class, |
- NSSUTF8 **urlOpt, |
- PRBool *isKRLOpt); |
- |
-/* I'm including this to handle import of certificates in NSS 3.5. This |
- * function will set the cert-related attributes of a key, in order to |
- * associate it with a cert. Does it stay like this for 4.0? |
- */ |
-NSS_EXTERN PRStatus |
-nssCryptokiPrivateKey_SetCertificate( |
- nssCryptokiObject *keyObject, |
- nssSession *sessionOpt, |
- const NSSUTF8 *nickname, |
- NSSItem *id, |
- NSSDER *subject); |
- |
-NSS_EXTERN void |
-nssModuleArray_Destroy( |
- NSSModule **modules); |
- |
-/* nssSlotArray |
- * |
- * nssSlotArray_Destroy |
- */ |
- |
-NSS_EXTERN void |
-nssSlotArray_Destroy( |
- NSSSlot **slots); |
- |
-/* nssTokenArray |
- * |
- * nssTokenArray_Destroy |
- */ |
- |
-NSS_EXTERN void |
-nssTokenArray_Destroy( |
- NSSToken **tokens); |
- |
-/* nssCryptokiObjectArray |
- * |
- * nssCryptokiObjectArray_Destroy |
- */ |
-NSS_EXTERN void |
-nssCryptokiObjectArray_Destroy( |
- nssCryptokiObject **object); |
- |
-/* nssSlotList |
- * |
- * An ordered list of slots. The order can be anything, it is set in the |
- * Add methods. Perhaps it should be CreateInCertOrder, ...? |
- * |
- * nssSlotList_Create |
- * nssSlotList_Destroy |
- * nssSlotList_Add |
- * nssSlotList_AddModuleSlots |
- * nssSlotList_GetSlots |
- * nssSlotList_FindSlotByName |
- * nssSlotList_FindTokenByName |
- * nssSlotList_GetBestSlot |
- * nssSlotList_GetBestSlotForAlgorithmAndParameters |
- * nssSlotList_GetBestSlotForAlgorithmsAndParameters |
- */ |
- |
-/* nssSlotList_Create |
- */ |
-NSS_EXTERN nssSlotList * |
-nssSlotList_Create( |
- NSSArena *arenaOpt); |
- |
-/* nssSlotList_Destroy |
- */ |
-NSS_EXTERN void |
-nssSlotList_Destroy( |
- nssSlotList *slotList); |
- |
-/* nssSlotList_Add |
- * |
- * Add the given slot in the given order. |
- */ |
-NSS_EXTERN PRStatus |
-nssSlotList_Add( |
- nssSlotList *slotList, |
- NSSSlot *slot, |
- PRUint32 order); |
- |
-/* nssSlotList_AddModuleSlots |
- * |
- * Add all slots in the module, in the given order (the slots will have |
- * equal weight). |
- */ |
-NSS_EXTERN PRStatus |
-nssSlotList_AddModuleSlots( |
- nssSlotList *slotList, |
- NSSModule *module, |
- PRUint32 order); |
- |
-/* nssSlotList_GetSlots |
- */ |
-NSS_EXTERN NSSSlot ** |
-nssSlotList_GetSlots( |
- nssSlotList *slotList); |
- |
-/* nssSlotList_FindSlotByName |
- */ |
-NSS_EXTERN NSSSlot * |
-nssSlotList_FindSlotByName( |
- nssSlotList *slotList, |
- NSSUTF8 *slotName); |
- |
-/* nssSlotList_FindTokenByName |
- */ |
-NSS_EXTERN NSSToken * |
-nssSlotList_FindTokenByName( |
- nssSlotList *slotList, |
- NSSUTF8 *tokenName); |
- |
-/* nssSlotList_GetBestSlot |
- * |
- * The best slot is the highest ranking in order, i.e., the first in the |
- * list. |
- */ |
-NSS_EXTERN NSSSlot * |
-nssSlotList_GetBestSlot( |
- nssSlotList *slotList); |
- |
-/* nssSlotList_GetBestSlotForAlgorithmAndParameters |
- * |
- * Highest-ranking slot than can handle algorithm/parameters. |
- */ |
-NSS_EXTERN NSSSlot * |
-nssSlotList_GetBestSlotForAlgorithmAndParameters( |
- nssSlotList *slotList, |
- NSSAlgorithmAndParameters *ap); |
- |
-/* nssSlotList_GetBestSlotForAlgorithmsAndParameters |
- * |
- * Highest-ranking slot than can handle all algorithms/parameters. |
- */ |
-NSS_EXTERN NSSSlot * |
-nssSlotList_GetBestSlotForAlgorithmsAndParameters( |
- nssSlotList *slotList, |
- NSSAlgorithmAndParameters **ap); |
- |
-NSS_EXTERN PRBool |
-nssToken_IsPresent( |
- NSSToken *token); |
- |
-NSS_EXTERN nssSession * |
-nssToken_GetDefaultSession( |
- NSSToken *token); |
- |
-NSS_EXTERN PRStatus |
-nssToken_GetTrustOrder( |
- NSSToken *tok); |
- |
-NSS_EXTERN PRStatus |
-nssToken_NotifyCertsNotVisible( |
- NSSToken *tok); |
- |
-NSS_EXTERN PRStatus |
-nssToken_TraverseCertificates( |
- NSSToken *token, |
- nssSession *sessionOpt, |
- nssTokenSearchType searchType, |
- PRStatus (*callback)(nssCryptokiObject *instance, void *arg), |
- void *arg); |
- |
-NSS_EXTERN PRBool |
-nssToken_IsPrivateKeyAvailable( |
- NSSToken *token, |
- NSSCertificate *c, |
- nssCryptokiObject *instance); |
- |
-PR_END_EXTERN_C |
- |
-#endif /* DEV_H */ |