#include "config.h"
#include <stdarg.h>
#include <stdlib.h>
#include <dirent.h>
#include <fcntl.h>
#include <unistd.h>
#include <dlfcn.h>
#include <sys/stat.h>
#include "ntstatus.h"
#include "windef.h"
#include "winbase.h"
#include "winternl.h"
#include "wincrypt.h"
#include "crypt32_private.h"
#include "wine/debug.h"
Go to the source code of this file.
◆ BASE64_DECODE_INVALID
| #define BASE64_DECODE_INVALID 0x300 |
◆ BASE64_DECODE_PADDING
| #define BASE64_DECODE_PADDING 0x100 |
◆ BASE64_DECODE_WHITESPACE
| #define BASE64_DECODE_WHITESPACE 0x200 |
◆ WIN32_NO_STATUS
◆ add_cert()
Definition at line 379 of file unixlib.c.
380{
382
387}
static void list_add_tail(struct list_entry *head, struct list_entry *entry)
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
#define offsetof(TYPE, MEMBER)
static struct list root_cert_list
Referenced by base64_to_cert(), and load_root_certs().
◆ add_line_to_buffer()
◆ base64_to_cert()
Definition at line 442 of file unixlib.c.
443{
446
448 {
452
453
455
456
458
461 {
462 hasPadding = 1;
463
464 if ((
valid & 3) == 0)
break;
465 continue;
466 }
467
468
470 }
471
472 if ((
valid & 3) != 0 && hasPadding)
return FALSE;
473
476 {
483 {
484 case 1:
486 break;
487 case 2:
489 break;
490 case 3:
492 break;
493 case 0:
495 break;
496 }
497 }
499}
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
static BYTE * add_cert(SIZE_T size)
#define BASE64_DECODE_PADDING
#define BASE64_DECODE_WHITESPACE
#define BASE64_DECODE_INVALID
static int decodeBase64Byte(char c)
wchar_t tm const _CrtWcstime_Writes_and_advances_ptr_ count wchar_t ** out
static unsigned int block
Referenced by import_certs_from_file().
◆ C_ASSERT()
◆ check_buffer_resize()
◆ close_cert_store()
◆ decodeBase64Byte()
| static int decodeBase64Byte |
( |
char |
c | ) |
|
|
inlinestatic |
Definition at line 421 of file unixlib.c.
422{
424
425 if (
c >=
'A' &&
c <=
'Z')
427 else if (
c >=
'a' &&
c <=
'z')
429 else if (
c >=
'0' &&
c <=
'9')
437 else if (
c ==
' ' ||
c ==
'\t' ||
c ==
'\r' ||
c ==
'\n')
440}
Referenced by base64_to_cert().
◆ enum_root_certs()
Definition at line 667 of file unixlib.c.
668{
673
676
681 {
685 }
687}
static void list_remove(struct list_entry *entry)
GLenum const GLfloat * params
#define memcpy(s1, s2, n)
#define STATUS_NO_MORE_ENTRIES
static void load_root_certs(void)
Referenced by read_trusted_roots_from_known_locations().
◆ import_certs_from_dir()
Definition at line 555 of file unixlib.c.
556{
558
561 {
564
567 {
569 {
571
575 }
576 }
579 }
580}
_ACRTIMP int __cdecl strcmp(const char *, const char *)
GLenum GLuint GLsizei bufsize
int __cdecl closedir(DIR *)
DIR *__cdecl opendir(const char *)
struct dirent *__cdecl readdir(DIR *)
static void import_certs_from_path(LPCSTR path, BOOL allow_dir)
static BOOL check_buffer_resize(char **ptr_buf, size_t *buf_size, size_t check_size)
Referenced by import_certs_from_path().
◆ import_certs_from_file()
| static void import_certs_from_file |
( |
int |
fd | ) |
|
|
static |
Definition at line 502 of file unixlib.c.
503{
508 int num_certs = 0;
509
510 if (!fp) return;
513 {
514 static const char header[] =
"-----BEGIN CERTIFICATE-----";
515 static const char trailer[] = "-----END CERTIFICATE-----";
516
518 {
519 TRACE(
"begin new certificate\n");
522 }
524 {
525 TRACE(
"end of certificate, adding cert\n");
528 }
530 }
532 TRACE(
"Read %d certs\n", num_certs);
534}
int CDECL fclose(FILE *file)
char *CDECL fgets(char *s, int size, FILE *file)
_ACRTIMP int __cdecl _ACRTIMP int __cdecl _ACRTIMP int __cdecl _ACRTIMP int __cdecl _ACRTIMP int __cdecl _ACRTIMP int __cdecl _ACRTIMP int __cdecl _ACRTIMP int __cdecl static FILE * fdopen(int fd, const char *mode)
_ACRTIMP int __cdecl strncmp(const char *, const char *, size_t)
static BOOL base64_to_cert(const char *str)
static void add_line_to_buffer(struct DynamicBuffer *buffer, LPCSTR line)
static void reset_buffer(struct DynamicBuffer *buffer)
Referenced by import_certs_from_path().
◆ import_certs_from_path()
Definition at line 586 of file unixlib.c.
587{
589
591
594 {
596
598 {
602 {
603 if (allow_dir)
605 else
606 WARN(
"%s is a directory and directories are disallowed\n",
608 }
609 else
610 ERR(
"%s: invalid file type\n",
path);
611 }
613 }
614}
static void import_certs_from_file(int fd)
static void import_certs_from_dir(LPCSTR path)
Referenced by import_certs_from_dir(), and load_root_certs().
◆ import_store_cert()
◆ import_store_key()
◆ load_root_certs()
Definition at line 626 of file unixlib.c.
627{
629
630#ifdef __APPLE__
631 const SecTrustSettingsDomain domains[] = {
632 kSecTrustSettingsDomainSystem,
633 kSecTrustSettingsDomainAdmin,
634 kSecTrustSettingsDomainUser
635 };
637 CFArrayRef certs;
639
641 {
642 status = SecTrustSettingsCopyCertificates(domains[
domain], &certs);
644 {
645 for (
i = 0;
i < CFArrayGetCount(certs);
i++)
646 {
647 SecCertificateRef
cert = (SecCertificateRef)CFArrayGetValueAtIndex(certs,
i);
648 CFDataRef certData;
649 if ((
status = SecItemExport(
cert, kSecFormatX509Cert, 0,
NULL, &certData)) == noErr)
650 {
652 if (
data)
memcpy(
data, CFDataGetBytePtr(certData), CFDataGetLength(certData) );
653 CFRelease(certData);
654 }
655 else
656 WARN(
"could not export certificate %u to X509 format: 0x%08x\n",
i, (
unsigned int)
status);
657 }
658 CFRelease(certs);
659 }
660 }
661#endif
662
665}
static int list_empty(struct list_entry *head)
static const char *const CRYPT_knownLocations[]
Referenced by enum_root_certs().
◆ open_cert_store()
◆ process_attach()
◆ process_detach()
◆ reset_buffer()
◆ WINE_DEFAULT_DEBUG_CHANNEL()
| WINE_DEFAULT_DEBUG_CHANNEL |
( |
crypt |
| ) |
|
◆ __wine_unix_call_funcs
| const unixlib_entry_t __wine_unix_call_funcs[] |
Initial value:=
{
}
static void process_detach(void)
static NTSTATUS import_store_key(void *args)
static NTSTATUS close_cert_store(void *args)
static NTSTATUS enum_root_certs(void *args)
static NTSTATUS import_store_cert(void *args)
static NTSTATUS process_attach(void *args)
static NTSTATUS open_cert_store(void *args)
Definition at line 689 of file unixlib.c.
◆ CRYPT_knownLocations
Initial value:= {
"/etc/ssl/certs/ca-certificates.crt",
"/etc/ssl/certs",
"/etc/pki/tls/certs/ca-bundle.crt",
"/usr/share/ca-certificates/ca-bundle.crt",
"/usr/local/share/certs/",
"/etc/sfw/openssl/certs",
"/etc/security/cacerts",
}
Definition at line 616 of file unixlib.c.
Referenced by load_root_certs().
◆ root_cert_list