]>
Commit | Line | Data |
---|---|---|
0f113f3e | 1 | /* |
33388b44 | 2 | * Copyright 1999-2020 The OpenSSL Project Authors. All Rights Reserved. |
9d6b1ce6 | 3 | * |
3cdbea65 | 4 | * Licensed under the Apache License 2.0 (the "License"). You may not use |
d2e9e320 RS |
5 | * this file except in compliance with the License. You can obtain a copy |
6 | * in the file LICENSE in the source distribution or at | |
7 | * https://www.openssl.org/source/license.html | |
9d6b1ce6 | 8 | */ |
a8da8918 | 9 | |
f41ac0ee P |
10 | /* |
11 | * DSA low level APIs are deprecated for public use, but still ok for | |
12 | * internal use. | |
13 | */ | |
14 | #include "internal/deprecated.h" | |
15 | ||
a8da8918 | 16 | #include <stdio.h> |
b39fc560 | 17 | #include "internal/cryptlib.h" |
706457b7 | 18 | #include "dsa_local.h" |
ec577822 | 19 | #include <openssl/asn1.h> |
9d6b1ce6 | 20 | #include <openssl/asn1t.h> |
f7a2afa6 | 21 | #include <openssl/rand.h> |
25f2138b | 22 | #include "crypto/asn1_dsa.h" |
8cc44d97 | 23 | |
9d6b1ce6 | 24 | /* Override the default free and new methods */ |
24484759 | 25 | static int dsa_cb(int operation, ASN1_VALUE **pval, const ASN1_ITEM *it, |
0f113f3e | 26 | void *exarg) |
a8da8918 | 27 | { |
0f113f3e MC |
28 | if (operation == ASN1_OP_NEW_PRE) { |
29 | *pval = (ASN1_VALUE *)DSA_new(); | |
90945fa3 | 30 | if (*pval != NULL) |
0f113f3e MC |
31 | return 2; |
32 | return 0; | |
33 | } else if (operation == ASN1_OP_FREE_PRE) { | |
34 | DSA_free((DSA *)*pval); | |
35 | *pval = NULL; | |
36 | return 2; | |
37 | } | |
38 | return 1; | |
a8da8918 UM |
39 | } |
40 | ||
9d6b1ce6 | 41 | ASN1_SEQUENCE_cb(DSAPrivateKey, dsa_cb) = { |
9612e157 | 42 | ASN1_EMBED(DSA, version, INT32), |
dc8de3e6 SL |
43 | ASN1_SIMPLE(DSA, params.p, BIGNUM), |
44 | ASN1_SIMPLE(DSA, params.q, BIGNUM), | |
45 | ASN1_SIMPLE(DSA, params.g, BIGNUM), | |
0f113f3e | 46 | ASN1_SIMPLE(DSA, pub_key, BIGNUM), |
74924dcb | 47 | ASN1_SIMPLE(DSA, priv_key, CBIGNUM) |
df2ee0e2 | 48 | } static_ASN1_SEQUENCE_END_cb(DSA, DSAPrivateKey) |
a8da8918 | 49 | |
9fdcc21f | 50 | IMPLEMENT_ASN1_ENCODE_FUNCTIONS_fname(DSA, DSAPrivateKey, DSAPrivateKey) |
a8da8918 | 51 | |
9d6b1ce6 | 52 | ASN1_SEQUENCE_cb(DSAparams, dsa_cb) = { |
dc8de3e6 SL |
53 | ASN1_SIMPLE(DSA, params.p, BIGNUM), |
54 | ASN1_SIMPLE(DSA, params.q, BIGNUM), | |
55 | ASN1_SIMPLE(DSA, params.g, BIGNUM), | |
df2ee0e2 | 56 | } static_ASN1_SEQUENCE_END_cb(DSA, DSAparams) |
a8da8918 | 57 | |
9fdcc21f | 58 | IMPLEMENT_ASN1_ENCODE_FUNCTIONS_fname(DSA, DSAparams, DSAparams) |
a8da8918 | 59 | |
987157f6 | 60 | ASN1_SEQUENCE_cb(DSAPublicKey, dsa_cb) = { |
0f113f3e | 61 | ASN1_SIMPLE(DSA, pub_key, BIGNUM), |
dc8de3e6 SL |
62 | ASN1_SIMPLE(DSA, params.p, BIGNUM), |
63 | ASN1_SIMPLE(DSA, params.q, BIGNUM), | |
64 | ASN1_SIMPLE(DSA, params.g, BIGNUM) | |
987157f6 | 65 | } static_ASN1_SEQUENCE_END_cb(DSA, DSAPublicKey) |
9d6b1ce6 | 66 | |
9fdcc21f | 67 | IMPLEMENT_ASN1_ENCODE_FUNCTIONS_fname(DSA, DSAPublicKey, DSAPublicKey) |
f4274da1 | 68 | |
9fdcc21f | 69 | DSA *DSAparams_dup(const DSA *dsa) |
0f113f3e MC |
70 | { |
71 | return ASN1_item_dup(ASN1_ITEM_rptr(DSAparams), dsa); | |
72 | } |