gost_asn1.c revision 272461
145501Sjdp/**********************************************************************
262801Sjdp *                          gost_keytrans.c                           *
345501Sjdp *             Copyright (c) 2005-2006 Cryptocom LTD                  *
445501Sjdp *         This file is distributed under the same license as OpenSSL *
545501Sjdp *                                                                    *
645501Sjdp *   ASN1 structure definition for GOST key transport                 *
745501Sjdp *          Requires OpenSSL 0.9.9 for compilation                    *
845501Sjdp **********************************************************************/
945501Sjdp#include <stdio.h>
1045501Sjdp#include <openssl/asn1t.h>
1145501Sjdp#include <openssl/x509.h>
1245501Sjdp#include "gost_lcl.h"
1345501Sjdp
1445501SjdpASN1_NDEF_SEQUENCE(GOST_KEY_TRANSPORT) = {
1545501Sjdp	ASN1_SIMPLE(GOST_KEY_TRANSPORT, key_info, GOST_KEY_INFO),
1645501Sjdp	ASN1_IMP(GOST_KEY_TRANSPORT, key_agreement_info, GOST_KEY_AGREEMENT_INFO, 0)
1745501Sjdp} ASN1_NDEF_SEQUENCE_END(GOST_KEY_TRANSPORT)
1845501Sjdp
1945501SjdpIMPLEMENT_ASN1_FUNCTIONS(GOST_KEY_TRANSPORT)
2045501Sjdp
2145501SjdpASN1_NDEF_SEQUENCE(GOST_KEY_INFO) = {
2245501Sjdp	ASN1_SIMPLE(GOST_KEY_INFO, encrypted_key, ASN1_OCTET_STRING),
2345501Sjdp	ASN1_SIMPLE(GOST_KEY_INFO, imit,          ASN1_OCTET_STRING)
2445501Sjdp} ASN1_NDEF_SEQUENCE_END(GOST_KEY_INFO)
2545501Sjdp
2650476SpeterIMPLEMENT_ASN1_FUNCTIONS(GOST_KEY_INFO)
2745501Sjdp
2845501SjdpASN1_NDEF_SEQUENCE(GOST_KEY_AGREEMENT_INFO) = {
2945501Sjdp	ASN1_SIMPLE(GOST_KEY_AGREEMENT_INFO, cipher, ASN1_OBJECT),
3045501Sjdp	ASN1_IMP_OPT(GOST_KEY_AGREEMENT_INFO, ephem_key, X509_PUBKEY, 0),
3145501Sjdp	ASN1_SIMPLE(GOST_KEY_AGREEMENT_INFO, eph_iv, ASN1_OCTET_STRING)
32115396Skan} ASN1_NDEF_SEQUENCE_END(GOST_KEY_AGREEMENT_INFO)
33115396Skan
34115396SkanIMPLEMENT_ASN1_FUNCTIONS(GOST_KEY_AGREEMENT_INFO)
3585004Sdfr
3685004SdfrASN1_NDEF_SEQUENCE(GOST_KEY_PARAMS) = {
3745501Sjdp	ASN1_SIMPLE(GOST_KEY_PARAMS, key_params, ASN1_OBJECT),
3845501Sjdp	ASN1_SIMPLE(GOST_KEY_PARAMS, hash_params, ASN1_OBJECT),
3945501Sjdp	ASN1_OPT(GOST_KEY_PARAMS, cipher_params, ASN1_OBJECT),
4045501Sjdp} ASN1_NDEF_SEQUENCE_END(GOST_KEY_PARAMS)
4148205Sjdp
4285004SdfrIMPLEMENT_ASN1_FUNCTIONS(GOST_KEY_PARAMS)
4385004Sdfr
44107071StmmASN1_NDEF_SEQUENCE(GOST_CIPHER_PARAMS) = {
45107071Stmm	ASN1_SIMPLE(GOST_CIPHER_PARAMS, iv, ASN1_OCTET_STRING),
4685004Sdfr	ASN1_SIMPLE(GOST_CIPHER_PARAMS, enc_param_set, ASN1_OBJECT),
47157220Sdes} ASN1_NDEF_SEQUENCE_END(GOST_CIPHER_PARAMS)
4885004Sdfr
4985004SdfrIMPLEMENT_ASN1_FUNCTIONS(GOST_CIPHER_PARAMS)
50157220Sdes
5185004SdfrASN1_NDEF_SEQUENCE(GOST_CLIENT_KEY_EXCHANGE_PARAMS) = { /*FIXME incomplete*/
5285004Sdfr	ASN1_SIMPLE(GOST_CLIENT_KEY_EXCHANGE_PARAMS, gkt, GOST_KEY_TRANSPORT)
5385004Sdfr} ASN1_NDEF_SEQUENCE_END(GOST_CLIENT_KEY_EXCHANGE_PARAMS)
5448205Sjdp
5585004SdfrIMPLEMENT_ASN1_FUNCTIONS(GOST_CLIENT_KEY_EXCHANGE_PARAMS)
5685004Sdfr