]> cvs.zerfleddert.de Git - proxmark3-svn/blame - client/crypto/asn1utils.c
move from polarssl to mbedtls (#708)
[proxmark3-svn] / client / crypto / asn1utils.c
CommitLineData
700d8687
OM
1//-----------------------------------------------------------------------------
2// Copyright (C) 2018 Merlok
3//
4// This code is licensed to you under the terms of the GNU GPL, version 2 or,
5// at your option, any later version. See the LICENSE.txt file for the text of
6// the license.
7//-----------------------------------------------------------------------------
8// asn.1 utils
9//-----------------------------------------------------------------------------
10
11#include "asn1utils.h"
12#include <mbedtls/asn1.h>
13
14int ecdsa_asn1_get_signature(uint8_t *signature, size_t signaturelen, uint8_t *rval, uint8_t *sval) {
15 if (!signature || !signaturelen || !rval || !sval)
16 return 1;
17
18 int res = 0;
19 unsigned char *p = signature;
20 const unsigned char *end = p + signaturelen;
21 size_t len;
22 mbedtls_mpi xmpi;
23
24 if ((res = mbedtls_asn1_get_tag(&p, end, &len, MBEDTLS_ASN1_CONSTRUCTED | MBEDTLS_ASN1_SEQUENCE)) == 0) {
25 mbedtls_mpi_init(&xmpi);
26 res = mbedtls_asn1_get_mpi(&p, end, &xmpi);
27 if (res) {
28 mbedtls_mpi_free(&xmpi);
29 goto exit;
30 }
31
32 res = mbedtls_mpi_write_binary(&xmpi, rval, 32);
33 mbedtls_mpi_free(&xmpi);
34 if (res)
35 goto exit;
36
37 mbedtls_mpi_init(&xmpi);
38 res = mbedtls_asn1_get_mpi(&p, end, &xmpi);
39 if (res) {
40 mbedtls_mpi_free(&xmpi);
41 goto exit;
42 }
43
44 res = mbedtls_mpi_write_binary(&xmpi, sval, 32);
45 mbedtls_mpi_free(&xmpi);
46 if (res)
47 goto exit;
48
49 // check size
50 if (end != p)
51 return 2;
52 }
53
54exit:
55 return res;
56}
57
58int asn1_print(uint8_t *asn1buf, int level) {
59
60 return 0;
61}
62
63
Impressum, Datenschutz