#!/bin/sh ubootenv="" ubinize_param="" kernel="" rootfs="" outfile="" err="" get_magic_word() { dd if=$1 bs=2 count=1 2>/dev/null | hexdump -v -n 2 -e '1/1 "%02x"' } is_ubifs() { if [ "$( get_magic_word $1 )" = "3118" ]; then echo "1" fi } ubivol() { volid=$1 name=$2 image=$3 autoresize=$4 echo "[$name]" echo "mode=ubi" echo "vol_id=$volid" echo "vol_type=dynamic" echo "vol_name=$name" if [ "$image" ]; then echo "image=$image" else echo "vol_size=1MiB" fi if [ "$autoresize" ]; then echo "vol_flags=autoresize" fi } ubilayout() { local vol_id=0 local root_is_ubifs="$( is_ubifs "$2" )" if [ "$1" = "ubootenv" ]; then ubivol $vol_id ubootenv vol_id=$(( $vol_id + 1 )) ubivol $vol_id ubootenv2 vol_id=$(( $vol_id + 1 )) fi if [ "$3" ]; then ubivol $vol_id kernel "$3" vol_id=$(( $vol_id + 1 )) fi ubivol $vol_id rootfs "$2" $root_is_ubifs vol_id=$(( $vol_id + 1 )) [ "$root_is_ubifs" ] || ubivol $vol_id rootfs_data "" 1 } while [ "$1" ]; do case "$1" in "--uboot-env") ubootenv="ubootenv" shift continue ;; "--kernel") kernel="$2" shift shift continue ;; "-"*) ubinize_param="$@" break ;; *) if [ ! "$rootfs" ]; then rootfs=$1 shift continue fi if [ ! "$outfile" ]; then outfile=$1 shift continue fi ;; esac done if [ ! -r "$rootfs" -o ! -r "$kernel" -a ! "$outfile" ]; then echo "syntax: $0 [--uboot-env] [--kernel kernelimage] rootfs out [ubinize opts]" exit 1 fi ubinize="$( which ubinize )" if [ ! -x "$ubinize" ]; then echo "ubinize tool not found or not usable" exit 1 fi ubinizecfg="$( mktemp )" ubilayout "$ubootenv" "$rootfs" "$kernel" > "$ubinizecfg" cat "$ubinizecfg" ubinize -o "$outfile" $ubinize_param "$ubinizecfg" err="$?" [ ! -e "$outfile" ] && err=2 rm "$ubinizecfg" exit $err _src/openssl/dh.py?id=50bbc96a968faa5163194af9e890defd59ef763c'>commitdiffstats
path: root/src/_cffi_src/openssl/dh.py
blob: 488b05b785e3b90f64d8ef5e5c46be75e5da296b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
# This file is dual licensed under the terms of the Apache License, Version
# 2.0, and the BSD License. See the LICENSE file in the root of this repository
# for complete details.

from __future__ import absolute_import, division, print_function

INCLUDES = """
#include <openssl/dh.h>
"""

TYPES = """
typedef ... DH;
"""

FUNCTIONS = """
DH *DH_new(void);
void DH_free(DH *);
int DH_size(const DH *);
int DH_check(const DH *, int *);
int DH_check_pub_key(const DH *, const BIGNUM *, int *);
int DH_generate_key(DH *);
int DH_compute_key(unsigned char *, const BIGNUM *, DH *);
int DH_set_ex_data(DH *, int, void *);
void *DH_get_ex_data(DH *, int);
DH *d2i_DHparams(DH **, const unsigned char **, long);
int i2d_DHparams(const DH *, unsigned char **);
int DHparams_print_fp(FILE *, const DH *);
int DHparams_print(BIO *, const DH *);

/* added in 1.1.0 when the DH struct was opaqued */
void DH_get0_pqg(const DH *, const BIGNUM **, const BIGNUM **,
                 const BIGNUM **);
int DH_set0_pqg(DH *, BIGNUM *, BIGNUM *, BIGNUM *);
void DH_get0_key(const DH *, const BIGNUM **, const BIGNUM **);
int DH_set0_key(DH *, BIGNUM *, BIGNUM *);
"""

MACROS = """
int DH_generate_parameters_ex(DH *, int, int, BN_GENCB *);
"""

CUSTOMIZATIONS = """
/* These functions were added in OpenSSL 1.1.0-pre5 (beta2) */
#if CRYPTOGRAPHY_OPENSSL_LESS_THAN_110PRE5 || defined(LIBRESSL_VERSION_NUMBER)
void DH_get0_pqg(const DH *dh,
                 const BIGNUM **p, const BIGNUM **q, const BIGNUM **g)
{
    if (p != NULL)
        *p = dh->p;
    if (q != NULL)
        *q = dh->q;
    if (g != NULL)
        *g = dh->g;
}

int DH_set0_pqg(DH *dh, BIGNUM *p, BIGNUM *q, BIGNUM *g)
{
    /* If the fields p and g in d are NULL, the corresponding input
     * parameters MUST be non-NULL.  q may remain NULL.
     */
    if ((dh->p == NULL && p == NULL)
        || (dh->g == NULL && g == NULL))
        return 0;

    if (p != NULL) {
        BN_free(dh->p);
        dh->p = p;
    }
    if (q != NULL) {
        BN_free(dh->q);
        dh->q = q;
    }
    if (g != NULL) {
        BN_free(dh->g);
        dh->g = g;
    }

    if (q != NULL) {
        dh->length = BN_num_bits(q);
    }

    return 1;
}

void DH_get0_key(const DH *dh, const BIGNUM **pub_key, const BIGNUM **priv_key)
{
    if (pub_key != NULL)
        *pub_key = dh->pub_key;
    if (priv_key != NULL)
        *priv_key = dh->priv_key;
}

int DH_set0_key(DH *dh, BIGNUM *pub_key, BIGNUM *priv_key)
{
    /* If the field pub_key in dh is NULL, the corresponding input
     * parameters MUST be non-NULL.  The priv_key field may
     * be left NULL.
     */
    if (dh->pub_key == NULL && pub_key == NULL)
        return 0;

    if (pub_key != NULL) {
        BN_free(dh->pub_key);
        dh->pub_key = pub_key;
    }
    if (priv_key != NULL) {
        BN_free(dh->priv_key);
        dh->priv_key = priv_key;
    }

    return 1;
}
#endif
"""