5 #define BUFFER_LENGTH 4096
7 static A2C_ERROR
_A2C_DecodeBerFile(PVOID
* ppv
, PC_A2C_DESCRIPTOR pdesc
, int flags
, FILE* file
)
9 unsigned char buffer
[BUFFER_LENGTH
];
11 A2C_CONTEXT
* pcxt
= NULL
;
12 A2C_ERROR err
= A2C_ERROR_Success
;
16 return_code
= fread(buffer
, 1, sizeof(buffer
), file
);
20 err
= A2C_ERROR_malformedEncoding
;
37 if ((err
< A2C_ERROR_Success
) && (err
!= A2C_ERROR_needMoreData
))
42 flags
|= A2C_FLAGS_MORE_DATA
;
45 if ((err
< A2C_ERROR_Success
) && (pcxt
!= NULL
))
47 /* A2C_FreeContext(pcxt); */
53 Cert_Certificate
* read_certificate_from_file(const char* filename
)
55 A2C_ERROR err
= A2C_ERROR_Success
;
56 Cert_Certificate
* certificate
= NULL
;
59 file
= fopen(filename
, "rb");
66 err
= _A2C_DecodeBerFile(
67 (PVOID
*) &certificate
,
68 &Cert_Certificate_descriptor
,
75 if (err
< A2C_ERROR_Success
)