Ruby  3.1.0dev(2021-09-10revisionb76ad15ed0da636161de0243c547ee1e6fc95681)
Macros | Functions | Variables
ossl_pkey.h File Reference

(b76ad15ed0da636161de0243c547ee1e6fc95681)

This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Macros

#define OSSL_PKEY_SET_PRIVATE(obj)   rb_iv_set((obj), "private", Qtrue)
 
#define OSSL_PKEY_SET_PUBLIC(obj)   rb_iv_set((obj), "private", Qfalse)
 
#define OSSL_PKEY_IS_PRIVATE(obj)   (rb_iv_get((obj), "private") == Qtrue)
 
#define NewPKey(klass)   TypedData_Wrap_Struct((klass), &ossl_evp_pkey_type, 0)
 
#define SetPKey(obj, pkey)
 
#define GetPKey(obj, pkey)
 
#define OSSL_PKEY_BN_DEF_GETTER0(_keytype, _type, _name, _get)
 
#define OSSL_PKEY_BN_DEF_GETTER3(_keytype, _type, _group, a1, a2, a3)
 
#define OSSL_PKEY_BN_DEF_GETTER2(_keytype, _type, _group, a1, a2)
 
#define OSSL_PKEY_BN_DEF_SETTER3(_keytype, _type, _group, a1, a2, a3)
 
#define OSSL_PKEY_BN_DEF_SETTER2(_keytype, _type, _group, a1, a2)
 
#define OSSL_PKEY_BN_DEF3(_keytype, _type, _group, a1, a2, a3)
 
#define OSSL_PKEY_BN_DEF2(_keytype, _type, _group, a1, a2)
 
#define DEF_OSSL_PKEY_BN(class, keytype, name)   rb_define_method((class), #name, ossl_##keytype##_get_##name, 0)
 

Functions

VALUE ossl_pkey_new (EVP_PKEY *)
 
void ossl_pkey_check_public_key (const EVP_PKEY *)
 
EVP_PKEY * ossl_pkey_read_generic (BIO *, VALUE)
 
EVP_PKEY * GetPKeyPtr (VALUE)
 
EVP_PKEY * DupPKeyPtr (VALUE)
 
EVP_PKEY * GetPrivPKeyPtr (VALUE)
 
VALUE ossl_pkey_export_spki (VALUE self, int to_der)
 
VALUE ossl_pkey_export_traditional (int argc, VALUE *argv, VALUE self, int to_der)
 
void Init_ossl_pkey (void)
 
void Init_ossl_rsa (void)
 
void Init_ossl_dsa (void)
 
void Init_ossl_dh (void)
 
VALUE ossl_ec_new (EVP_PKEY *)
 
void Init_ossl_ec (void)
 

Variables

VALUE mPKey
 
VALUE cPKey
 
VALUE ePKeyError
 
const rb_data_type_t ossl_evp_pkey_type
 
VALUE cRSA
 
VALUE eRSAError
 
VALUE cDSA
 
VALUE eDSAError
 
VALUE cDH
 
VALUE eDHError
 
VALUE cEC
 
VALUE eECError
 
VALUE cEC_GROUP
 
VALUE eEC_GROUP
 
VALUE cEC_POINT
 
VALUE eEC_POINT
 

Macro Definition Documentation

◆ DEF_OSSL_PKEY_BN

#define DEF_OSSL_PKEY_BN (   class,
  keytype,
  name 
)    rb_define_method((class), #name, ossl_##keytype##_get_##name, 0)

Definition at line 184 of file ossl_pkey.h.

◆ GetPKey

#define GetPKey (   obj,
  pkey 
)
Value:
do {\
TypedData_Get_Struct((obj), EVP_PKEY, &ossl_evp_pkey_type, (pkey)); \
if (!(pkey)) { \
rb_raise(rb_eRuntimeError, "PKEY wasn't initialized!");\
} \
} while (0)

Definition at line 31 of file ossl_pkey.h.

◆ NewPKey

#define NewPKey (   klass)    TypedData_Wrap_Struct((klass), &ossl_evp_pkey_type, 0)

Definition at line 22 of file ossl_pkey.h.

◆ OSSL_PKEY_BN_DEF2

#define OSSL_PKEY_BN_DEF2 (   _keytype,
  _type,
  _group,
  a1,
  a2 
)
Value:
OSSL_PKEY_BN_DEF_GETTER2(_keytype, _type, _group, a1, a2) \
OSSL_PKEY_BN_DEF_SETTER2(_keytype, _type, _group, a1, a2)

Definition at line 180 of file ossl_pkey.h.

◆ OSSL_PKEY_BN_DEF3

#define OSSL_PKEY_BN_DEF3 (   _keytype,
  _type,
  _group,
  a1,
  a2,
  a3 
)
Value:
OSSL_PKEY_BN_DEF_GETTER3(_keytype, _type, _group, a1, a2, a3) \
OSSL_PKEY_BN_DEF_SETTER3(_keytype, _type, _group, a1, a2, a3)

Definition at line 176 of file ossl_pkey.h.

◆ OSSL_PKEY_BN_DEF_GETTER0

#define OSSL_PKEY_BN_DEF_GETTER0 (   _keytype,
  _type,
  _name,
  _get 
)
Value:
/* \
* call-seq: \
* _keytype##.##_name -> aBN \
*/ \
static VALUE ossl_##_keytype##_get_##_name(VALUE self) \
{ \
_type *obj; \
const BIGNUM *bn; \
\
Get##_type(self, obj); \
_get; \
if (bn == NULL) \
return Qnil; \
return ossl_bn_new(bn); \
}

Definition at line 96 of file ossl_pkey.h.

◆ OSSL_PKEY_BN_DEF_GETTER2

#define OSSL_PKEY_BN_DEF_GETTER2 (   _keytype,
  _type,
  _group,
  a1,
  a2 
)
Value:
OSSL_PKEY_BN_DEF_GETTER0(_keytype, _type, a1, \
_type##_get0_##_group(obj, &bn, NULL)) \
OSSL_PKEY_BN_DEF_GETTER0(_keytype, _type, a2, \
_type##_get0_##_group(obj, NULL, &bn))

Definition at line 118 of file ossl_pkey.h.

◆ OSSL_PKEY_BN_DEF_GETTER3

#define OSSL_PKEY_BN_DEF_GETTER3 (   _keytype,
  _type,
  _group,
  a1,
  a2,
  a3 
)
Value:
OSSL_PKEY_BN_DEF_GETTER0(_keytype, _type, a1, \
_type##_get0_##_group(obj, &bn, NULL, NULL)) \
OSSL_PKEY_BN_DEF_GETTER0(_keytype, _type, a2, \
_type##_get0_##_group(obj, NULL, &bn, NULL)) \
OSSL_PKEY_BN_DEF_GETTER0(_keytype, _type, a3, \
_type##_get0_##_group(obj, NULL, NULL, &bn))

Definition at line 110 of file ossl_pkey.h.

◆ OSSL_PKEY_BN_DEF_SETTER2

#define OSSL_PKEY_BN_DEF_SETTER2 (   _keytype,
  _type,
  _group,
  a1,
  a2 
)
Value:
/* \
* call-seq: \
* _keytype##.set_##_group(a1, a2) -> self \
*/ \
static VALUE ossl_##_keytype##_set_##_group(VALUE self, VALUE v1, VALUE v2) \
{ \
_type *obj; \
BIGNUM *bn1 = NULL, *orig_bn1 = NIL_P(v1) ? NULL : GetBNPtr(v1);\
BIGNUM *bn2 = NULL, *orig_bn2 = NIL_P(v2) ? NULL : GetBNPtr(v2);\
\
Get##_type(self, obj); \
if ((orig_bn1 && !(bn1 = BN_dup(orig_bn1))) || \
(orig_bn2 && !(bn2 = BN_dup(orig_bn2)))) { \
BN_clear_free(bn1); \
BN_clear_free(bn2); \
ossl_raise(eBNError, NULL); \
} \
if (!_type##_set0_##_group(obj, bn1, bn2)) { \
BN_clear_free(bn1); \
BN_clear_free(bn2); \
ossl_raise(ePKeyError, #_type"_set0_"#_group); \
} \
return self; \
}

Definition at line 152 of file ossl_pkey.h.

◆ OSSL_PKEY_BN_DEF_SETTER3

#define OSSL_PKEY_BN_DEF_SETTER3 (   _keytype,
  _type,
  _group,
  a1,
  a2,
  a3 
)
Value:
/* \
* call-seq: \
* _keytype##.set_##_group(a1, a2, a3) -> self \
*/ \
static VALUE ossl_##_keytype##_set_##_group(VALUE self, VALUE v1, VALUE v2, VALUE v3) \
{ \
_type *obj; \
BIGNUM *bn1 = NULL, *orig_bn1 = NIL_P(v1) ? NULL : GetBNPtr(v1);\
BIGNUM *bn2 = NULL, *orig_bn2 = NIL_P(v2) ? NULL : GetBNPtr(v2);\
BIGNUM *bn3 = NULL, *orig_bn3 = NIL_P(v3) ? NULL : GetBNPtr(v3);\
\
Get##_type(self, obj); \
if ((orig_bn1 && !(bn1 = BN_dup(orig_bn1))) || \
(orig_bn2 && !(bn2 = BN_dup(orig_bn2))) || \
(orig_bn3 && !(bn3 = BN_dup(orig_bn3)))) { \
BN_clear_free(bn1); \
BN_clear_free(bn2); \
BN_clear_free(bn3); \
ossl_raise(eBNError, NULL); \
} \
if (!_type##_set0_##_group(obj, bn1, bn2, bn3)) { \
BN_clear_free(bn1); \
BN_clear_free(bn2); \
BN_clear_free(bn3); \
ossl_raise(ePKeyError, #_type"_set0_"#_group); \
} \
return self; \
}

Definition at line 124 of file ossl_pkey.h.

◆ OSSL_PKEY_IS_PRIVATE

#define OSSL_PKEY_IS_PRIVATE (   obj)    (rb_iv_get((obj), "private") == Qtrue)

Definition at line 20 of file ossl_pkey.h.

◆ OSSL_PKEY_SET_PRIVATE

#define OSSL_PKEY_SET_PRIVATE (   obj)    rb_iv_set((obj), "private", Qtrue)

Definition at line 18 of file ossl_pkey.h.

◆ OSSL_PKEY_SET_PUBLIC

#define OSSL_PKEY_SET_PUBLIC (   obj)    rb_iv_set((obj), "private", Qfalse)

Definition at line 19 of file ossl_pkey.h.

◆ SetPKey

#define SetPKey (   obj,
  pkey 
)
Value:
do { \
if (!(pkey)) { \
rb_raise(rb_eRuntimeError, "PKEY wasn't initialized!"); \
} \
RTYPEDDATA_DATA(obj) = (pkey); \
OSSL_PKEY_SET_PUBLIC(obj); \
} while (0)

Definition at line 24 of file ossl_pkey.h.

Function Documentation

◆ DupPKeyPtr()

EVP_PKEY* DupPKeyPtr ( VALUE  )

Definition at line 462 of file ossl_pkey.c.

References EVP_PKEY_up_ref, GetPKey, and pkey_blocking_generate_arg::pkey.

◆ GetPKeyPtr()

EVP_PKEY* GetPKeyPtr ( VALUE  )

Definition at line 432 of file ossl_pkey.c.

References GetPKey, and pkey_blocking_generate_arg::pkey.

◆ GetPrivPKeyPtr()

EVP_PKEY* GetPrivPKeyPtr ( VALUE  )

◆ Init_ossl_dh()

void Init_ossl_dh ( void  )

◆ Init_ossl_dsa()

void Init_ossl_dsa ( void  )

◆ Init_ossl_ec()

void Init_ossl_ec ( void  )

◆ Init_ossl_pkey()

void Init_ossl_pkey ( void  )

◆ Init_ossl_rsa()

void Init_ossl_rsa ( void  )

◆ ossl_ec_new()

VALUE ossl_ec_new ( EVP_PKEY *  )

◆ ossl_pkey_check_public_key()

void ossl_pkey_check_public_key ( const EVP_PKEY *  )

Definition at line 392 of file ossl_pkey.c.

References ePKeyError, NULL, ossl_raise(), pkey_blocking_generate_arg::pkey, and ptr.

◆ ossl_pkey_export_spki()

VALUE ossl_pkey_export_spki ( VALUE  self,
int  to_der 
)

◆ ossl_pkey_export_traditional()

VALUE ossl_pkey_export_traditional ( int  argc,
VALUE argv,
VALUE  self,
int  to_der 
)

◆ ossl_pkey_new()

VALUE ossl_pkey_new ( EVP_PKEY *  )

Definition at line 67 of file ossl_pkey.c.

References rb_protect().

◆ ossl_pkey_read_generic()

EVP_PKEY* ossl_pkey_read_generic ( BIO *  ,
VALUE   
)

Definition at line 82 of file ossl_pkey.c.

References NULL, OSSL_BIO_reset, and ossl_pem_passwd_cb().

Variable Documentation

◆ cDH

VALUE cDH

Definition at line 29 of file ossl_pkey_dh.c.

Referenced by Init_ossl_dh().

◆ cDSA

VALUE cDSA

Definition at line 43 of file ossl_pkey_dsa.c.

Referenced by Init_ossl_dsa().

◆ cEC

VALUE cEC

Definition at line 43 of file ossl_pkey_ec.c.

Referenced by Init_ossl_ec().

◆ cEC_GROUP

VALUE cEC_GROUP

Definition at line 45 of file ossl_pkey_ec.c.

Referenced by Init_ossl_ec().

◆ cEC_POINT

VALUE cEC_POINT

Definition at line 47 of file ossl_pkey_ec.c.

Referenced by Init_ossl_ec().

◆ cPKey

VALUE cPKey

Definition at line 16 of file ossl_pkey.c.

Referenced by Init_ossl_dh(), Init_ossl_dsa(), Init_ossl_ec(), Init_ossl_pkey(), and Init_ossl_rsa().

◆ cRSA

VALUE cRSA

Definition at line 44 of file ossl_pkey_rsa.c.

Referenced by Init_ossl_rsa().

◆ eDHError

VALUE eDHError

Definition at line 30 of file ossl_pkey_dh.c.

Referenced by Init_ossl_dh().

◆ eDSAError

VALUE eDSAError

Definition at line 44 of file ossl_pkey_dsa.c.

Referenced by Init_ossl_dsa().

◆ eEC_GROUP

VALUE eEC_GROUP

Definition at line 46 of file ossl_pkey_ec.c.

Referenced by Init_ossl_ec().

◆ eEC_POINT

VALUE eEC_POINT

Definition at line 48 of file ossl_pkey_ec.c.

Referenced by Init_ossl_ec().

◆ eECError

VALUE eECError

Definition at line 44 of file ossl_pkey_ec.c.

Referenced by Init_ossl_ec().

◆ ePKeyError

VALUE ePKeyError

◆ eRSAError

VALUE eRSAError

Definition at line 45 of file ossl_pkey_rsa.c.

Referenced by Init_ossl_rsa().

◆ mPKey

VALUE mPKey

Definition at line 15 of file ossl_pkey.c.

Referenced by Init_ossl_dh(), Init_ossl_dsa(), Init_ossl_ec(), Init_ossl_pkey(), and Init_ossl_rsa().

◆ ossl_evp_pkey_type

const rb_data_type_t ossl_evp_pkey_type

Definition at line 29 of file ossl_pkey.c.

ePKeyError
VALUE ePKeyError
Definition: ossl_pkey.c:17
NIL_P
#define NIL_P
Definition: special_consts.h:46
if
if((ID)(DISPID) nameid !=nameid)
Definition: win32ole.c:357
OSSL_PKEY_BN_DEF_GETTER3
#define OSSL_PKEY_BN_DEF_GETTER3(_keytype, _type, _group, a1, a2, a3)
Definition: ossl_pkey.h:110
ossl_bn_new
VALUE ossl_bn_new(const BIGNUM *bn)
Definition: ossl_bn.c:62
Qnil
#define Qnil
Definition: special_consts.h:51
ossl_evp_pkey_type
const rb_data_type_t ossl_evp_pkey_type
Definition: ossl_pkey.c:29
eBNError
VALUE eBNError
Definition: ossl_bn.c:56
rb_eRuntimeError
VALUE rb_eRuntimeError
Definition: error.c:1091
NULL
#define NULL
Definition: regenc.h:69
OSSL_PKEY_BN_DEF_GETTER0
#define OSSL_PKEY_BN_DEF_GETTER0(_keytype, _type, _name, _get)
Definition: ossl_pkey.h:96
VALUE
unsigned long VALUE
Definition: value.h:38
OSSL_PKEY_BN_DEF_GETTER2
#define OSSL_PKEY_BN_DEF_GETTER2(_keytype, _type, _group, a1, a2)
Definition: ossl_pkey.h:118
GetBNPtr
#define GetBNPtr(obj)
Definition: ossl_bn.h:19