@@ -1953,19 +1953,17 @@ private byte[] setToDER(final ThreadContext context) throws IOException {
1953
1953
private ASN1EncodableVector toASN1EncodableVector (final ThreadContext context ) {
1954
1954
final ASN1EncodableVector vec = new ASN1EncodableVector ();
1955
1955
final IRubyObject value = value (context );
1956
- if ( value instanceof RubyArray ) {
1957
- final RubyArray val = (RubyArray ) value ;
1958
- for ( int i = 0 ; i < val .size (); i ++ ) {
1959
- if ( addEntry (context , vec , val .entry (i )) ) break ;
1956
+ final RubyArray val ;
1957
+ if (value instanceof RubyArray ) {
1958
+ val = (RubyArray ) value ;
1959
+ } else {
1960
+ if (!value .respondsTo ("to_a" )) {
1961
+ throw context .runtime .newTypeError ("can't convert " + value .getMetaClass ().getName () + " into Array" );
1960
1962
}
1963
+ val = (RubyArray ) value .callMethod (context , "to_a" );
1961
1964
}
1962
- else {
1963
- final int size = RubyInteger .num2int (value .callMethod (context , "size" ));
1964
- for ( int i = 0 ; i < size ; i ++ ) {
1965
- final RubyInteger idx = context .runtime .newFixnum (i );
1966
- IRubyObject entry = value .callMethod (context , "[]" , idx );
1967
- if ( addEntry (context , vec , entry ) ) break ;
1968
- }
1965
+ for ( int i = 0 ; i < val .size (); i ++ ) {
1966
+ if ( addEntry (context , vec , val .entry (i )) ) break ;
1969
1967
}
1970
1968
return vec ;
1971
1969
}
0 commit comments