⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 slp_auth.c

📁 SLP协议在linux下的实现。此版本为1.2.1版。官方网站为www.openslp.org
💻 C
📖 第 1 页 / 共 3 页
字号:
                          const SLPSAAdvert* saadvert)/* Verify authenticity of  the specified SAAdvert                          *//*                                                                         *//* Parameters: hspi        (IN) open SPI handle                            *//*             emptyisfail (IN) if non-zero, messages without authblocks   *//*                              will fail                                  *//*             spistrlen   (IN) length of the spi string                   *//*             sprstr      (IN) the spi string                             *//*             saadvert    (IN) the SAADVERT to verify                     *//*                                                                         *//* Returns: 0 on success or SLP_ERROR_xxx code on failure                  *//*=========================================================================*/{    return 0;}/*=========================================================================*/int SLPAuthSignString(SLPSpiHandle hspi,                      int spistrlen,                      const char* spistr,                      unsigned short stringlen,                      const char* string,                      int* authblocklen,                      unsigned char** authblock)/* Generate an authblock signature for an attribute list                   *//*                                                                         *//* Parameters: hspi         (IN) open SPI handle                           *//*             spistrlen    (IN) length of the SPI string                  *//*             spistr       (IN) SPI to sign with                          *//*             attrlistlen  (IN) the length of the URL to sign             *//*             attrlist     (IN) the url to sign                           *//*             authblocklen (OUT) the length of the authblock signature    *//*             authblock    (OUT) buffer containing authblock signature    *//*                                must be freed by the caller              */ /*                                                                         *//* Returns: 0 on success or SLP_ERROR_xxx code on failure                  *//*=========================================================================*/{    int                 result;    SLPCryptoDSAKey*    key;    unsigned char       digest[20];    int                 defaultspistrlen    = 0;    char*               defaultspistr       = 0;        /* NULL out the authblock and spistr just to be safe */    key = 0;    *authblock = 0;    *authblocklen = 0;    spistr = 0;    spistrlen = 0;    /*--------------------------------*/    /* Get a private key for the SPI  */    /*--------------------------------*/    if(spistr)    {        key = SLPSpiGetDSAKey(hspi,                              SLPSPI_KEY_TYPE_PRIVATE,                              spistrlen,                               spistr,                               &key);    }    else    {        if(SLPSpiGetDefaultSPI(hspi,                               SLPSPI_KEY_TYPE_PRIVATE,                               &defaultspistrlen,                               &defaultspistr))        {            spistr = defaultspistr;            spistrlen = defaultspistrlen;            key = SLPSpiGetDSAKey(hspi,                                  SLPSPI_KEY_TYPE_PRIVATE,                                  spistrlen,                                  spistr,                                  &key);        }    }    if(key == 0)    {        result = SLP_ERROR_AUTHENTICATION_UNKNOWN;        goto ERROR;    }         /*--------------------------*/    /* Generate the SHA1 digest */    /*--------------------------*/    result = SLPAuthDigestString(spistrlen,                                 spistr,                                 stringlen,                                 string,                                 0xffffffff, /* very long expiration (for now) */                                 digest);        /*---------------------------------------------*/    /* Sign the digest and put it in the authblock */    /*---------------------------------------------*/    if(result == 0)    {        result = SLPAuthSignDigest(spistrlen,                                   spistr,                                   key,                                   digest,                                   authblocklen,                                   authblock);    }ERROR:    /*---------*/    /* Cleanup */    /*---------*/     if(defaultspistr) xfree(defaultspistr);    if(key) SLPCryptoDSAKeyDestroy(key);    return result;}/*=========================================================================*/int SLPAuthSignUrl(SLPSpiHandle hspi,                   int spistrlen,                   const char* spistr,                   unsigned short urllen,                   const char* url,                   int* authblocklen,                   unsigned char** authblock)/* Generate an authblock signature for a Url                               *//*                                                                         *//* Parameters: hspi         (IN) open SPI handle                           *//*             spistrlen    (IN) length of the SPI string                  *//*             spistr       (IN) SPI to sign with                          *//*             urllen       (IN) the length of the URL to sign             *//*             url          (IN) the url to sign                           *//*             authblocklen (OUT) the length of the authblock signature    *//*             authblock    (OUT) buffer containing authblock signature    *//*                                must be freed by the caller              *//*                                                                         *//* Returns: 0 on success or SLP_ERROR_xxx code on failure                  *//*=========================================================================*/{    return  SLPAuthSignString(hspi,                              spistrlen,                              spistr,                              urllen,                              url,                              authblocklen,                              authblock);}/*=========================================================================*/int SLPAuthSignDAAdvert(SLPSpiHandle hspi,                        unsigned short spistrlen,                        const char* spistr,                        unsigned long bootstamp,                        unsigned short urllen,                        const char* url,                        unsigned short attrlistlen,                        const char* attrlist,                        unsigned short scopelistlen,                        const char* scopelist,                        unsigned short daspistrlen,                        const char* daspistr,                        int* authblocklen,                        unsigned char** authblock)/* Generate an authblock signature for a DAADVERT                          *//*                                                                         *//* Parameters: hspi         (IN) open SPI handle                           *//*             spistrlen (IN) length of the spi string                     *//*             sprstr (IN) the spi string                                  *//*             bootstamp (IN) the statless DA boot timestamp               *//*             urllen (IN) the length of the URL to sign                   *//*             url (IN) the url to sign                                    *//*             attrlistlen (IN) the length of the URL to sign              *//*             attrlist (IN) the url to sign                               *//*             scopelistlen (IN) the length of the DA's scope list         *//*             scopelist (IN) the DA's scope list                          *//*             daspistrlen (IN) the length of the list of DA's SPIs        *//*             daspistr (IN) the list of the DA's SPI's                    *//*             authblocklen (OUT) the length of the authblock signature    *//*             authblock (OUT) buffer containing authblock signature must  *//*                             be freed by the caller                      *//*                                                                         *//* Returns: 0 on success or SLP_ERROR_xxx code on failure                  *//*=========================================================================*/{    int                 result;    SLPCryptoDSAKey*    key;    unsigned char       digest[20];    int                 defaultspistrlen    = 0;    char*               defaultspistr       = 0;        /* NULL out the authblock and spistr just to be safe */    key = 0;    *authblock = 0;    *authblocklen = 0;    spistr = 0;    spistrlen = 0;    /*--------------------------------*/    /* Get a private key for the SPI  */    /*--------------------------------*/    if(spistr)    {        key = SLPSpiGetDSAKey(hspi,                              SLPSPI_KEY_TYPE_PRIVATE,                              spistrlen,                               spistr,                               &key);    }    else    {        if(SLPSpiGetDefaultSPI(hspi,                               SLPSPI_KEY_TYPE_PRIVATE,                               &defaultspistrlen,                               &defaultspistr))        {            spistr = defaultspistr;            spistrlen = defaultspistrlen;            key = SLPSpiGetDSAKey(hspi,                                  SLPSPI_KEY_TYPE_PRIVATE,                                  spistrlen,                                  spistr,                                  &key);        }    }    if(key == 0)    {        result = SLP_ERROR_AUTHENTICATION_UNKNOWN;        goto ERROR;    }         /*--------------------------*/    /* Generate the SHA1 digest */    /*--------------------------*/    result = SLPAuthDigestDAAdvert(spistrlen,                                   spistr,                                   0xffffffff,                                   bootstamp,                                   urllen,                                   url,                                   attrlistlen,                                   attrlist,                                   scopelistlen,                                   scopelist,                                   daspistrlen,                                   daspistr,                                   digest);    /*---------------------------------------------*/    /* Sign the digest and put it in the authblock */    /*---------------------------------------------*/    if(result == 0)    {        result = SLPAuthSignDigest(spistrlen,                                   spistr,                                   key,                                   digest,                                   authblocklen,                                   authblock);    }ERROR:    /*---------*/    /* Cleanup */    /*---------*/     if(defaultspistr) xfree(defaultspistr);    if(key) SLPCryptoDSAKeyDestroy(key);    return result;}/*=========================================================================*/int SLPAuthSignSAAdvert(unsigned short spistrlen,                        const char* spistr,                        unsigned short urllen,                        const char* url,                        unsigned short attrlistlen,                        const char* attrlist,                        unsigned short scopelistlen,                        const char* scopelist,                        int* authblocklen,                        unsigned char** authblock)/* Generate an authblock signature for a SAADVERT                          *//*                                                                         *//* Parameters: spistrlen (IN) length of the spi string                     *//*             sprstr (IN) the spi string                                  *//*             urllen (IN) the length of the URL to sign                   *//*             url (IN) the url to sign                                    *//*             attrlistlen (IN) the length of the URL to sign              *//*             attrlist (IN) the url to sign                               *//*             scopelistlen (IN) the length of the DA's scope list         *//*             scopelist (IN) the DA's scope list                          *//*             authblocklen (OUT) the length of the authblock signature    *//*             authblock (OUT) buffer containing authblock signature       *//*                                                                         *//* Returns: 0 on success or SLP_ERROR_xxx code on failure                  *//*=========================================================================*/{    *authblocklen = 0;    *authblock = 0;    return 0;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -