1392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom/* crypto/ec/ec_lib.c */ 2392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom/* 3392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom * Originally written by Bodo Moeller for the OpenSSL project. 4392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom */ 5392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom/* ==================================================================== 6392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom * Copyright (c) 1998-2003 The OpenSSL Project. All rights reserved. 7392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom * 8392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom * Redistribution and use in source and binary forms, with or without 9392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom * modification, are permitted provided that the following conditions 10392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom * are met: 11392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom * 12392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom * 1. Redistributions of source code must retain the above copyright 13392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom * notice, this list of conditions and the following disclaimer. 14392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom * 15392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom * 2. Redistributions in binary form must reproduce the above copyright 16392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom * notice, this list of conditions and the following disclaimer in 17392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom * the documentation and/or other materials provided with the 18392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom * distribution. 19392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom * 20392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom * 3. All advertising materials mentioning features or use of this 21392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom * software must display the following acknowledgment: 22392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom * "This product includes software developed by the OpenSSL Project 23392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom * for use in the OpenSSL Toolkit. (http://www.openssl.org/)" 24392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom * 25392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to 26392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom * endorse or promote products derived from this software without 27392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom * prior written permission. For written permission, please contact 28392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom * openssl-core@openssl.org. 29392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom * 30392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom * 5. Products derived from this software may not be called "OpenSSL" 31392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom * nor may "OpenSSL" appear in their names without prior written 32392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom * permission of the OpenSSL Project. 33392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom * 34392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom * 6. Redistributions of any form whatsoever must retain the following 35392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom * acknowledgment: 36392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom * "This product includes software developed by the OpenSSL Project 37392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom * for use in the OpenSSL Toolkit (http://www.openssl.org/)" 38392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom * 39392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY 40392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 41392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 42392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR 43392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 44392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 45392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 46392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 47392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 48392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 49392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED 50392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom * OF THE POSSIBILITY OF SUCH DAMAGE. 51392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom * ==================================================================== 52392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom * 53392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom * This product includes cryptographic software written by Eric Young 54392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom * (eay@cryptsoft.com). This product includes software written by Tim 55392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom * Hudson (tjh@cryptsoft.com). 56392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom * 57392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom */ 58392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom/* ==================================================================== 59392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom * Copyright 2002 Sun Microsystems, Inc. ALL RIGHTS RESERVED. 60392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom * Binary polynomial ECC support in OpenSSL originally developed by 61392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom * SUN MICROSYSTEMS, INC., and contributed to the OpenSSL project. 62392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom */ 63392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom 64392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#include <string.h> 65392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom 66392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#include <openssl/err.h> 67392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#include <openssl/opensslv.h> 68392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom 69392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#include "ec_lcl.h" 70392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom 71392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstromint EC_POINT_set_compressed_coordinates_GFp(const EC_GROUP *group, EC_POINT *point, 72392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom const BIGNUM *x, int y_bit, BN_CTX *ctx) 73392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom { 74392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom if (group->meth->point_set_compressed_coordinates == 0 75392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom && !(group->meth->flags & EC_FLAGS_DEFAULT_OCT)) 76392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom { 77392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ECerr(EC_F_EC_POINT_SET_COMPRESSED_COORDINATES_GFP, ERR_R_SHOULD_NOT_HAVE_BEEN_CALLED); 78392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom return 0; 79392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom } 80392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom if (group->meth != point->meth) 81392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom { 82392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ECerr(EC_F_EC_POINT_SET_COMPRESSED_COORDINATES_GFP, EC_R_INCOMPATIBLE_OBJECTS); 83392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom return 0; 84392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom } 85392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom if(group->meth->flags & EC_FLAGS_DEFAULT_OCT) 86392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom { 87392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom if (group->meth->field_type == NID_X9_62_prime_field) 88392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom return ec_GFp_simple_set_compressed_coordinates( 89392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom group, point, x, y_bit, ctx); 90392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom else 91392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#ifdef OPENSSL_NO_EC2M 92392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom { 93392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ECerr(EC_F_EC_POINT_SET_COMPRESSED_COORDINATES_GFP, EC_R_GF2M_NOT_SUPPORTED); 94392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom return 0; 95392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom } 96392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#else 97392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom return ec_GF2m_simple_set_compressed_coordinates( 98392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom group, point, x, y_bit, ctx); 99392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif 100392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom } 101392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom return group->meth->point_set_compressed_coordinates(group, point, x, y_bit, ctx); 102392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom } 103392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom 104392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#ifndef OPENSSL_NO_EC2M 105392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstromint EC_POINT_set_compressed_coordinates_GF2m(const EC_GROUP *group, EC_POINT *point, 106392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom const BIGNUM *x, int y_bit, BN_CTX *ctx) 107392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom { 108392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom if (group->meth->point_set_compressed_coordinates == 0 109392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom && !(group->meth->flags & EC_FLAGS_DEFAULT_OCT)) 110392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom { 111392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ECerr(EC_F_EC_POINT_SET_COMPRESSED_COORDINATES_GF2M, ERR_R_SHOULD_NOT_HAVE_BEEN_CALLED); 112392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom return 0; 113392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom } 114392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom if (group->meth != point->meth) 115392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom { 116392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ECerr(EC_F_EC_POINT_SET_COMPRESSED_COORDINATES_GF2M, EC_R_INCOMPATIBLE_OBJECTS); 117392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom return 0; 118392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom } 119392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom if(group->meth->flags & EC_FLAGS_DEFAULT_OCT) 120392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom { 121392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom if (group->meth->field_type == NID_X9_62_prime_field) 122392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom return ec_GFp_simple_set_compressed_coordinates( 123392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom group, point, x, y_bit, ctx); 124392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom else 125392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom return ec_GF2m_simple_set_compressed_coordinates( 126392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom group, point, x, y_bit, ctx); 127392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom } 128392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom return group->meth->point_set_compressed_coordinates(group, point, x, y_bit, ctx); 129392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom } 130392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif 131392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom 132392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstromsize_t EC_POINT_point2oct(const EC_GROUP *group, const EC_POINT *point, point_conversion_form_t form, 133392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom unsigned char *buf, size_t len, BN_CTX *ctx) 134392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom { 135392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom if (group->meth->point2oct == 0 136392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom && !(group->meth->flags & EC_FLAGS_DEFAULT_OCT)) 137392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom { 138392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ECerr(EC_F_EC_POINT_POINT2OCT, ERR_R_SHOULD_NOT_HAVE_BEEN_CALLED); 139392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom return 0; 140392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom } 141392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom if (group->meth != point->meth) 142392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom { 143392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ECerr(EC_F_EC_POINT_POINT2OCT, EC_R_INCOMPATIBLE_OBJECTS); 144392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom return 0; 145392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom } 146392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom if(group->meth->flags & EC_FLAGS_DEFAULT_OCT) 147392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom { 148392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom if (group->meth->field_type == NID_X9_62_prime_field) 149392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom return ec_GFp_simple_point2oct(group, point, 150392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom form, buf, len, ctx); 151392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom else 152392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#ifdef OPENSSL_NO_EC2M 153392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom { 154392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ECerr(EC_F_EC_POINT_POINT2OCT, EC_R_GF2M_NOT_SUPPORTED); 155392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom return 0; 156392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom } 157392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#else 158392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom return ec_GF2m_simple_point2oct(group, point, 159392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom form, buf, len, ctx); 160392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif 161392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom } 162392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom 163392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom return group->meth->point2oct(group, point, form, buf, len, ctx); 164392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom } 165392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom 166392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom 167392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstromint EC_POINT_oct2point(const EC_GROUP *group, EC_POINT *point, 168392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom const unsigned char *buf, size_t len, BN_CTX *ctx) 169392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom { 170392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom if (group->meth->oct2point == 0 171392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom && !(group->meth->flags & EC_FLAGS_DEFAULT_OCT)) 172392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom { 173392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ECerr(EC_F_EC_POINT_OCT2POINT, ERR_R_SHOULD_NOT_HAVE_BEEN_CALLED); 174392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom return 0; 175392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom } 176392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom if (group->meth != point->meth) 177392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom { 178392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ECerr(EC_F_EC_POINT_OCT2POINT, EC_R_INCOMPATIBLE_OBJECTS); 179392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom return 0; 180392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom } 181392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom if(group->meth->flags & EC_FLAGS_DEFAULT_OCT) 182392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom { 183392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom if (group->meth->field_type == NID_X9_62_prime_field) 184392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom return ec_GFp_simple_oct2point(group, point, 185392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom buf, len, ctx); 186392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom else 187392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#ifdef OPENSSL_NO_EC2M 188392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom { 189392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ECerr(EC_F_EC_POINT_OCT2POINT, EC_R_GF2M_NOT_SUPPORTED); 190392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom return 0; 191392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom } 192392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#else 193392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom return ec_GF2m_simple_oct2point(group, point, 194392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom buf, len, ctx); 195392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif 196392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom } 197392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom return group->meth->oct2point(group, point, buf, len, ctx); 198392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom } 199392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom 200