| ne_ssl.h | | ne_ssl.h | |
| /* | | /* | |
| SSL/TLS abstraction layer for neon | | SSL/TLS abstraction layer for neon | |
|
| Copyright (C) 2003, Joe Orton <joe@manyfish.co.uk> | | Copyright (C) 2003-2004, Joe Orton <joe@manyfish.co.uk> | |
| | | | |
| This library is free software; you can redistribute it and/or | | This library is free software; you can redistribute it and/or | |
| modify it under the terms of the GNU Library General Public | | modify it under the terms of the GNU Library General Public | |
| License as published by the Free Software Foundation; either | | License as published by the Free Software Foundation; either | |
| version 2 of the License, or (at your option) any later version. | | version 2 of the License, or (at your option) any later version. | |
| | | | |
| This library is distributed in the hope that it will be useful, | | This library is distributed in the hope that it will be useful, | |
| but WITHOUT ANY WARRANTY; without even the implied warranty of | | but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
| Library General Public License for more details. | | Library General Public License for more details. | |
| | | | |
| skipping to change at line 37 | | skipping to change at line 37 | |
| | | | |
| #include "ne_defs.h" | | #include "ne_defs.h" | |
| | | | |
| BEGIN_NEON_DECLS | | BEGIN_NEON_DECLS | |
| | | | |
| /* A "distinguished name"; a unique name for some entity. */ | | /* A "distinguished name"; a unique name for some entity. */ | |
| typedef struct ne_ssl_dname_s ne_ssl_dname; | | typedef struct ne_ssl_dname_s ne_ssl_dname; | |
| | | | |
| /* Returns a single-line string representation of a distinguished | | /* Returns a single-line string representation of a distinguished | |
| * name, intended to be human-readable (e.g. "Acme Ltd., Norfolk, | | * name, intended to be human-readable (e.g. "Acme Ltd., Norfolk, | |
|
| * GB"). Return value is malloc-allocated and must be free'd by the | | * GB"). Return value is a UTF-8-encoded malloc-allocated string and | |
| * caller. */ | | * must be free'd by the caller. */ | |
| char *ne_ssl_readable_dname(const ne_ssl_dname *dn); | | char *ne_ssl_readable_dname(const ne_ssl_dname *dn); | |
| | | | |
| /* Returns zero if 'dn1' and 'dn2' refer to same name, or non-zero if | | /* Returns zero if 'dn1' and 'dn2' refer to same name, or non-zero if | |
| * they are different. */ | | * they are different. */ | |
| int ne_ssl_dname_cmp(const ne_ssl_dname *dn1, const ne_ssl_dname *dn2); | | int ne_ssl_dname_cmp(const ne_ssl_dname *dn1, const ne_ssl_dname *dn2); | |
| | | | |
| /* An SSL certificate. */ | | /* An SSL certificate. */ | |
| typedef struct ne_ssl_certificate_s ne_ssl_certificate; | | typedef struct ne_ssl_certificate_s ne_ssl_certificate; | |
| | | | |
| /* Read a certificate from a file in PEM format; returns NULL if the | | /* Read a certificate from a file in PEM format; returns NULL if the | |
| | | | |
| skipping to change at line 84 | | skipping to change at line 84 | |
| const ne_ssl_certificate *ne_ssl_cert_signedby(const ne_ssl_certificate *ce
rt); | | const ne_ssl_certificate *ne_ssl_cert_signedby(const ne_ssl_certificate *ce
rt); | |
| | | | |
| /* Returns the distinguished name of the certificate issuer. */ | | /* Returns the distinguished name of the certificate issuer. */ | |
| const ne_ssl_dname *ne_ssl_cert_issuer(const ne_ssl_certificate *cert); | | const ne_ssl_dname *ne_ssl_cert_issuer(const ne_ssl_certificate *cert); | |
| | | | |
| /* Returns the distinguished name of the certificate subject. */ | | /* Returns the distinguished name of the certificate subject. */ | |
| const ne_ssl_dname *ne_ssl_cert_subject(const ne_ssl_certificate *cert); | | const ne_ssl_dname *ne_ssl_cert_subject(const ne_ssl_certificate *cert); | |
| | | | |
| #define NE_SSL_DIGESTLEN (60) | | #define NE_SSL_DIGESTLEN (60) | |
| | | | |
|
| /* Calculate the digest ("fingerprint") and format it as a | | /* Calculate the certificate digest ("fingerprint") and format it as a | |
| * NUL-terminated hex string in 'digest', of the form "aa:bb:...:ff". | | * NUL-terminated hex string in 'digest', of the form "aa:bb:...:ff". | |
| * Returns zero on success or non-zero if there was an internal error | | * Returns zero on success or non-zero if there was an internal error | |
| * whilst calculating the digest. 'digest' must be at least | | * whilst calculating the digest. 'digest' must be at least | |
| * NE_SSL_DIGESTLEN bytes in length. */ | | * NE_SSL_DIGESTLEN bytes in length. */ | |
| int ne_ssl_cert_digest(const ne_ssl_certificate *cert, char *digest); | | int ne_ssl_cert_digest(const ne_ssl_certificate *cert, char *digest); | |
| | | | |
| #define NE_SSL_VDATELEN (30) | | #define NE_SSL_VDATELEN (30) | |
| | | | |
| /* Copy the validity dates into buffers 'from' and 'until' as | | /* Copy the validity dates into buffers 'from' and 'until' as | |
| * NUL-terminated human-readable strings. The buffers must be at | | * NUL-terminated human-readable strings. The buffers must be at | |
| | | | |
| skipping to change at line 116 | | skipping to change at line 116 | |
| | | | |
| /* A client certificate (and private key). */ | | /* A client certificate (and private key). */ | |
| typedef struct ne_ssl_client_cert_s ne_ssl_client_cert; | | typedef struct ne_ssl_client_cert_s ne_ssl_client_cert; | |
| | | | |
| /* Read a client certificate and private key from a PKCS12 file; | | /* Read a client certificate and private key from a PKCS12 file; | |
| * returns NULL if the file could not be parsed. If the client cert | | * returns NULL if the file could not be parsed. If the client cert | |
| * is encrypted, it must be decrypted before use. */ | | * is encrypted, it must be decrypted before use. */ | |
| ne_ssl_client_cert *ne_ssl_clicert_read(const char *filename); | | ne_ssl_client_cert *ne_ssl_clicert_read(const char *filename); | |
| | | | |
| /* Returns the "friendly name" given for the client cert, or NULL if | | /* Returns the "friendly name" given for the client cert, or NULL if | |
|
| * none given. (this can be called before the client cert has been | | * none given. This can be called before or after the client cert has | |
| * decrypted). */ | | * been decrypted. Returns a NUL-terminated string. */ | |
| const char *ne_ssl_clicert_name(ne_ssl_client_cert *ccert); | | const char *ne_ssl_clicert_name(ne_ssl_client_cert *ccert); | |
| | | | |
| /* Returns non-zero if client cert is encrypted. */ | | /* Returns non-zero if client cert is encrypted. */ | |
| int ne_ssl_clicert_encrypted(const ne_ssl_client_cert *ccert); | | int ne_ssl_clicert_encrypted(const ne_ssl_client_cert *ccert); | |
| | | | |
| /* Decrypt the encrypted client cert using given password. Returns | | /* Decrypt the encrypted client cert using given password. Returns | |
| * non-zero on failure, in which case, the function can be called | | * non-zero on failure, in which case, the function can be called | |
| * again with a different password. For a ccert on which _encrypted() | | * again with a different password. For a ccert on which _encrypted() | |
| * returns 0, calling _decrypt results in undefined behaviour. */ | | * returns 0, calling _decrypt results in undefined behaviour. */ | |
| int ne_ssl_clicert_decrypt(ne_ssl_client_cert *ccert, const char *password)
; | | int ne_ssl_clicert_decrypt(ne_ssl_client_cert *ccert, const char *password)
; | |
| | | | |
End of changes. 4 change blocks. |
| 6 lines changed or deleted | | 6 lines changed or added | |
|